@@ -25,6 +25,8 @@ declare void @external_void_func_f16(half) #0
25
25
declare void @external_void_func_f32 (float ) #0
26
26
declare void @external_void_func_f64 (double ) #0
27
27
declare void @external_void_func_v2f32 (<2 x float >) #0
28
+ declare void @external_void_func_v2f64 (<2 x double >) #0
29
+ declare void @external_void_func_v3f64 (<3 x double >) #0
28
30
29
31
declare void @external_void_func_v2i16 (<2 x i16 >) #0
30
32
declare void @external_void_func_v2f16 (<2 x half >) #0
@@ -274,10 +276,21 @@ define amdgpu_kernel void @test_call_external_void_func_v2i64() #0 {
274
276
ret void
275
277
}
276
278
279
+ ; GCN-LABEL: {{^}}test_call_external_void_func_v2i64_imm:
280
+ ; GCN-DAG: v_mov_b32_e32 v0, 1
281
+ ; GCN-DAG: v_mov_b32_e32 v1, 2
282
+ ; GCN-DAG: v_mov_b32_e32 v2, 3
283
+ ; GCN-DAG: v_mov_b32_e32 v3, 4
284
+ ; GCN: s_swappc_b64
285
+ define amdgpu_kernel void @test_call_external_void_func_v2i64_imm () #0 {
286
+ call void @external_void_func_v2i64 (<2 x i64 > <i64 8589934593 , i64 17179869187 >)
287
+ ret void
288
+ }
289
+
277
290
; GCN-LABEL: {{^}}test_call_external_void_func_v3i64:
278
291
; GCN: buffer_load_dwordx4 v[0:3]
279
- ; GCN: v_mov_b32_e32 v4, s
280
- ; GCN: v_mov_b32_e32 v5, s
292
+ ; GCN: v_mov_b32_e32 v4, 1
293
+ ; GCN: v_mov_b32_e32 v5, 2
281
294
; GCN: s_waitcnt
282
295
; GCN-NEXT: s_swappc_b64
283
296
define amdgpu_kernel void @test_call_external_void_func_v3i64 () #0 {
@@ -288,13 +301,12 @@ define amdgpu_kernel void @test_call_external_void_func_v3i64() #0 {
288
301
ret void
289
302
}
290
303
291
- ; FIXME: Immedites should fold directly into v_mov_b32s
292
304
; GCN-LABEL: {{^}}test_call_external_void_func_v4i64:
293
305
; GCN: buffer_load_dwordx4 v[0:3]
294
- ; GCN-DAG: v_mov_b32_e32 v4, s
295
- ; GCN-DAG: v_mov_b32_e32 v5, s
296
- ; GCN-DAG: v_mov_b32_e32 v6, s
297
- ; GCN-DAG: v_mov_b32_e32 v7, s
306
+ ; GCN-DAG: v_mov_b32_e32 v4, 1
307
+ ; GCN-DAG: v_mov_b32_e32 v5, 2
308
+ ; GCN-DAG: v_mov_b32_e32 v6, 3
309
+ ; GCN-DAG: v_mov_b32_e32 v7, 4
298
310
299
311
; GCN: s_waitcnt
300
312
; GCN-NEXT: s_swappc_b64
@@ -342,6 +354,30 @@ define amdgpu_kernel void @test_call_external_void_func_f64_imm() #0 {
342
354
ret void
343
355
}
344
356
357
+ ; GCN-LABEL: {{^}}test_call_external_void_func_v2f64_imm:
358
+ ; GCN: v_mov_b32_e32 v0, 0{{$}}
359
+ ; GCN: v_mov_b32_e32 v1, 2.0
360
+ ; GCN: v_mov_b32_e32 v2, 0{{$}}
361
+ ; GCN: v_mov_b32_e32 v3, 0x40100000
362
+ ; GCN: s_swappc_b64
363
+ define amdgpu_kernel void @test_call_external_void_func_v2f64_imm () #0 {
364
+ call void @external_void_func_v2f64 (<2 x double > <double 2 .0 , double 4 .0 >)
365
+ ret void
366
+ }
367
+
368
+ ; GCN-LABEL: {{^}}test_call_external_void_func_v3f64_imm:
369
+ ; GCN-DAG: v_mov_b32_e32 v0, 0{{$}}
370
+ ; GCN-DAG: v_mov_b32_e32 v1, 2.0
371
+ ; GCN-DAG: v_mov_b32_e32 v2, 0{{$}}
372
+ ; GCN-DAG: v_mov_b32_e32 v3, 0x40100000
373
+ ; GCN-DAG: v_mov_b32_e32 v4, 0{{$}}
374
+ ; GCN-DAG: v_mov_b32_e32 v5, 0x40200000
375
+ ; GCN-DAG: s_swappc_b64
376
+ define amdgpu_kernel void @test_call_external_void_func_v3f64_imm () #0 {
377
+ call void @external_void_func_v3f64 (<3 x double > <double 2 .0 , double 4 .0 , double 8 .0 >)
378
+ ret void
379
+ }
380
+
345
381
; GCN-LABEL: {{^}}test_call_external_void_func_v2i16:
346
382
; GFX9: buffer_load_dword v0
347
383
; GFX9-NOT: v0
0 commit comments