1
1
; RUN: llc -amdgpu-scalarize-global-loads=false -march=amdgcn -mcpu=verde -verify-machineinstrs < %s | FileCheck -allow-deprecated-dag-overlap -check-prefixes=GCN,SI,FUNC %s
2
2
; RUN: llc -amdgpu-scalarize-global-loads=false -march=amdgcn -mcpu=tonga -mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck -allow-deprecated-dag-overlap -check-prefixes=GCN,VI,FUNC %s
3
- ; RUN: llc -amdgpu-scalarize-global-loads=false -march=amdgcn -mcpu=gfx900 -mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck -allow-deprecated-dag-overlap -check-prefixes=FUNC,GFX9 %s
3
+ ; RUN: llc -amdgpu-scalarize-global-loads=false -march=amdgcn -mcpu=gfx900 -mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck -allow-deprecated-dag-overlap -check-prefixes=FUNC,GFX9_10 %s
4
+ ; RUN: llc -amdgpu-scalarize-global-loads=false -march=amdgcn -mcpu=gfx1010 -mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck -allow-deprecated-dag-overlap -check-prefixes=FUNC,GFX9_10 %s
4
5
; RUN: llc -amdgpu-scalarize-global-loads=false -march=r600 -mcpu=redwood < %s | FileCheck -allow-deprecated-dag-overlap -check-prefixes=EG,FUNC %s
5
6
6
7
; mul24 and mad24 are affected
9
10
; EG: MULLO_INT {{\*? *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
10
11
; EG: MULLO_INT {{\*? *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
11
12
12
- ; GCN: v_mul_lo_i32 v{{[0-9]+, v[0-9]+, v[0-9]+}}
13
- ; GCN: v_mul_lo_i32 v{{[0-9]+, v[0-9]+, v[0-9]+}}
13
+ ; GCN: v_mul_lo_u32 v{{[0-9]+, v[0-9]+, v[0-9]+}}
14
+ ; GCN: v_mul_lo_u32 v{{[0-9]+, v[0-9]+, v[0-9]+}}
14
15
15
16
define amdgpu_kernel void @test_mul_v2i32 (<2 x i32 > addrspace (1 )* %out , <2 x i32 > addrspace (1 )* %in ) {
16
17
%b_ptr = getelementptr <2 x i32 >, <2 x i32 > addrspace (1 )* %in , i32 1
@@ -27,10 +28,10 @@ define amdgpu_kernel void @test_mul_v2i32(<2 x i32> addrspace(1)* %out, <2 x i32
27
28
; EG: MULLO_INT {{\*? *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
28
29
; EG: MULLO_INT {{\*? *}}T{{[0-9]+\.[XYZW], T[0-9]+\.[XYZW], T[0-9]+\.[XYZW]}}
29
30
30
- ; GCN: v_mul_lo_i32 v{{[0-9]+, v[0-9]+, v[0-9]+}}
31
- ; GCN: v_mul_lo_i32 v{{[0-9]+, v[0-9]+, v[0-9]+}}
32
- ; GCN: v_mul_lo_i32 v{{[0-9]+, v[0-9]+, v[0-9]+}}
33
- ; GCN: v_mul_lo_i32 v{{[0-9]+, v[0-9]+, v[0-9]+}}
31
+ ; GCN: v_mul_lo_u32 v{{[0-9]+, v[0-9]+, v[0-9]+}}
32
+ ; GCN: v_mul_lo_u32 v{{[0-9]+, v[0-9]+, v[0-9]+}}
33
+ ; GCN: v_mul_lo_u32 v{{[0-9]+, v[0-9]+, v[0-9]+}}
34
+ ; GCN: v_mul_lo_u32 v{{[0-9]+, v[0-9]+, v[0-9]+}}
34
35
35
36
define amdgpu_kernel void @v_mul_v4i32 (<4 x i32 > addrspace (1 )* %out , <4 x i32 > addrspace (1 )* %in ) {
36
37
%b_ptr = getelementptr <4 x i32 >, <4 x i32 > addrspace (1 )* %in , i32 1
@@ -56,7 +57,7 @@ define amdgpu_kernel void @s_trunc_i64_mul_to_i32(i32 addrspace(1)* %out, i64 %a
56
57
; FUNC-LABEL: {{^}}v_trunc_i64_mul_to_i32:
57
58
; GCN: s_load_dword
58
59
; GCN: s_load_dword
59
- ; GCN: v_mul_lo_i32
60
+ ; GCN: v_mul_lo_u32
60
61
; GCN: buffer_store_dword
61
62
define amdgpu_kernel void @v_trunc_i64_mul_to_i32 (i32 addrspace (1 )* %out , i64 addrspace (1 )* %aptr , i64 addrspace (1 )* %bptr ) nounwind {
62
63
%a = load i64 , i64 addrspace (1 )* %aptr , align 8
85
86
; FUNC-LABEL: {{^}}v_mul64_sext_c:
86
87
; EG-DAG: MULLO_INT
87
88
; EG-DAG: MULHI_INT
88
- ; GCN-DAG: v_mul_lo_i32
89
+ ; GCN-DAG: v_mul_lo_u32
89
90
; GCN-DAG: v_mul_hi_i32
90
91
; GCN: s_endpgm
91
92
define amdgpu_kernel void @v_mul64_sext_c (i64 addrspace (1 )* %out , i32 addrspace (1 )* %in ) {
@@ -97,7 +98,7 @@ define amdgpu_kernel void @v_mul64_sext_c(i64 addrspace(1)* %out, i32 addrspace(
97
98
}
98
99
99
100
; FUNC-LABEL: {{^}}v_mul64_sext_inline_imm:
100
- ; GCN-DAG: v_mul_lo_i32 v{{[0-9]+}}, v{{[0-9]+}}, 9
101
+ ; GCN-DAG: v_mul_lo_u32 v{{[0-9]+}}, v{{[0-9]+}}, 9
101
102
; GCN-DAG: v_mul_hi_i32 v{{[0-9]+}}, v{{[0-9]+}}, 9
102
103
; GCN: s_endpgm
103
104
define amdgpu_kernel void @v_mul64_sext_inline_imm (i64 addrspace (1 )* %out , i32 addrspace (1 )* %in ) {
@@ -122,7 +123,7 @@ define amdgpu_kernel void @s_mul_i32(i32 addrspace(1)* %out, [8 x i32], i32 %a,
122
123
}
123
124
124
125
; FUNC-LABEL: {{^}}v_mul_i32:
125
- ; GCN: v_mul_lo_i32 v{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}}
126
+ ; GCN: v_mul_lo_u32 v{{[0-9]+}}, v{{[0-9]+}}, v{{[0-9]+}}
126
127
define amdgpu_kernel void @v_mul_i32 (i32 addrspace (1 )* %out , i32 addrspace (1 )* %in ) {
127
128
%b_ptr = getelementptr i32 , i32 addrspace (1 )* %in , i32 1
128
129
%a = load i32 , i32 addrspace (1 )* %in
@@ -140,19 +141,19 @@ define amdgpu_kernel void @v_mul_i32(i32 addrspace(1)* %out, i32 addrspace(1)* %
140
141
; crash with a 'failed to select' error.
141
142
142
143
; FUNC-LABEL: {{^}}s_mul_i64:
143
- ; GFX9 -DAG: s_mul_i32
144
- ; GFX9 -DAG: s_mul_hi_u32
145
- ; GFX9 -DAG: s_mul_i32
146
- ; GFX9 -DAG: s_mul_i32
147
- ; GFX9 : s_endpgm
144
+ ; GFX9_10 -DAG: s_mul_i32
145
+ ; GFX9_10 -DAG: s_mul_hi_u32
146
+ ; GFX9_10 -DAG: s_mul_i32
147
+ ; GFX9_10 -DAG: s_mul_i32
148
+ ; GFX9_10 : s_endpgm
148
149
define amdgpu_kernel void @s_mul_i64 (i64 addrspace (1 )* %out , i64 %a , i64 %b ) nounwind {
149
150
%mul = mul i64 %a , %b
150
151
store i64 %mul , i64 addrspace (1 )* %out , align 8
151
152
ret void
152
153
}
153
154
154
155
; FUNC-LABEL: {{^}}v_mul_i64:
155
- ; GCN: v_mul_lo_i32
156
+ ; GCN: v_mul_lo_u32
156
157
define amdgpu_kernel void @v_mul_i64 (i64 addrspace (1 )* %out , i64 addrspace (1 )* %aptr , i64 addrspace (1 )* %bptr ) {
157
158
%a = load i64 , i64 addrspace (1 )* %aptr , align 8
158
159
%b = load i64 , i64 addrspace (1 )* %bptr , align 8
@@ -250,26 +251,26 @@ define amdgpu_kernel void @s_mul_i128(i128 addrspace(1)* %out, [8 x i32], i128 %
250
251
; GCN: {{buffer|flat}}_load_dwordx4
251
252
; GCN: {{buffer|flat}}_load_dwordx4
252
253
253
- ; SI-DAG: v_mul_lo_i32
254
+ ; SI-DAG: v_mul_lo_u32
254
255
; SI-DAG: v_mul_hi_u32
255
256
; SI-DAG: v_mul_hi_u32
256
- ; SI-DAG: v_mul_lo_i32
257
+ ; SI-DAG: v_mul_lo_u32
257
258
; SI-DAG: v_mul_hi_u32
258
259
; SI-DAG: v_mul_hi_u32
259
- ; SI-DAG: v_mul_lo_i32
260
- ; SI-DAG: v_mul_lo_i32
260
+ ; SI-DAG: v_mul_lo_u32
261
+ ; SI-DAG: v_mul_lo_u32
261
262
; SI-DAG: v_add_i32_e32
262
263
263
264
; SI-DAG: v_mul_hi_u32
264
- ; SI-DAG: v_mul_lo_i32
265
+ ; SI-DAG: v_mul_lo_u32
265
266
; SI-DAG: v_mul_hi_u32
266
- ; SI-DAG: v_mul_lo_i32
267
- ; SI-DAG: v_mul_lo_i32
268
- ; SI-DAG: v_mul_lo_i32
269
- ; SI-DAG: v_mul_lo_i32
270
- ; SI-DAG: v_mul_lo_i32
267
+ ; SI-DAG: v_mul_lo_u32
268
+ ; SI-DAG: v_mul_lo_u32
269
+ ; SI-DAG: v_mul_lo_u32
270
+ ; SI-DAG: v_mul_lo_u32
271
+ ; SI-DAG: v_mul_lo_u32
271
272
272
- ; VI-DAG: v_mul_lo_i32
273
+ ; VI-DAG: v_mul_lo_u32
273
274
; VI-DAG: v_mul_hi_u32
274
275
; VI: v_mad_u64_u32
275
276
; VI: v_mad_u64_u32
0 commit comments