1
1
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
2
2
; RUN: llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=tahiti -verify-machineinstrs < %s | FileCheck -check-prefixes=SI %s
3
3
; RUN: llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=fiji -mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck -check-prefixes=VI %s
4
- ; RUN: llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=gfx1100 -mattr=+real-true16 -mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck -check-prefixes=GFX11,GFX11-TRUE16 %s
5
- ; RUN: llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=gfx1100 -mattr=-real-true16 -mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck -check-prefixes=GFX11,GFX11-FAKE16 %s
4
+ ; RUN: llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=gfx1100 -mattr=+real-true16 -mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck -check-prefixes=GFX11-TRUE16 %s
5
+ ; RUN: llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=gfx1100 -mattr=-real-true16 -mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck -check-prefixes=GFX11-FAKE16 %s
6
+ ; RUN: llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=gfx1200 -mattr=+real-true16 -mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck -check-prefixes=GFX12-TRUE16 %s
7
+ ; RUN: llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=gfx1200 -mattr=-real-true16 -mattr=-flat-for-global -verify-machineinstrs < %s | FileCheck -check-prefixes=GFX12-FAKE16 %s
6
8
7
9
declare half @llvm.sqrt.f16 (half %a )
8
10
declare <2 x half > @llvm.sqrt.v2f16 (<2 x half > %a )
@@ -81,6 +83,42 @@ define amdgpu_kernel void @sqrt_f16(
81
83
; GFX11-FAKE16-NEXT: v_sqrt_f16_e32 v0, v0
82
84
; GFX11-FAKE16-NEXT: buffer_store_b16 v0, off, s[4:7], 0
83
85
; GFX11-FAKE16-NEXT: s_endpgm
86
+ ;
87
+ ; GFX12-TRUE16-LABEL: sqrt_f16:
88
+ ; GFX12-TRUE16: ; %bb.0: ; %entry
89
+ ; GFX12-TRUE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
90
+ ; GFX12-TRUE16-NEXT: s_mov_b32 s6, -1
91
+ ; GFX12-TRUE16-NEXT: s_mov_b32 s7, 0x31016000
92
+ ; GFX12-TRUE16-NEXT: s_mov_b32 s10, s6
93
+ ; GFX12-TRUE16-NEXT: s_mov_b32 s11, s7
94
+ ; GFX12-TRUE16-NEXT: s_wait_kmcnt 0x0
95
+ ; GFX12-TRUE16-NEXT: s_mov_b32 s8, s2
96
+ ; GFX12-TRUE16-NEXT: s_mov_b32 s9, s3
97
+ ; GFX12-TRUE16-NEXT: s_mov_b32 s4, s0
98
+ ; GFX12-TRUE16-NEXT: buffer_load_u16 v0, off, s[8:11], null
99
+ ; GFX12-TRUE16-NEXT: s_mov_b32 s5, s1
100
+ ; GFX12-TRUE16-NEXT: s_wait_loadcnt 0x0
101
+ ; GFX12-TRUE16-NEXT: v_sqrt_f16_e32 v0.l, v0.l
102
+ ; GFX12-TRUE16-NEXT: buffer_store_b16 v0, off, s[4:7], null
103
+ ; GFX12-TRUE16-NEXT: s_endpgm
104
+ ;
105
+ ; GFX12-FAKE16-LABEL: sqrt_f16:
106
+ ; GFX12-FAKE16: ; %bb.0: ; %entry
107
+ ; GFX12-FAKE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
108
+ ; GFX12-FAKE16-NEXT: s_mov_b32 s6, -1
109
+ ; GFX12-FAKE16-NEXT: s_mov_b32 s7, 0x31016000
110
+ ; GFX12-FAKE16-NEXT: s_mov_b32 s10, s6
111
+ ; GFX12-FAKE16-NEXT: s_mov_b32 s11, s7
112
+ ; GFX12-FAKE16-NEXT: s_wait_kmcnt 0x0
113
+ ; GFX12-FAKE16-NEXT: s_mov_b32 s8, s2
114
+ ; GFX12-FAKE16-NEXT: s_mov_b32 s9, s3
115
+ ; GFX12-FAKE16-NEXT: s_mov_b32 s4, s0
116
+ ; GFX12-FAKE16-NEXT: buffer_load_u16 v0, off, s[8:11], null
117
+ ; GFX12-FAKE16-NEXT: s_mov_b32 s5, s1
118
+ ; GFX12-FAKE16-NEXT: s_wait_loadcnt 0x0
119
+ ; GFX12-FAKE16-NEXT: v_sqrt_f16_e32 v0, v0
120
+ ; GFX12-FAKE16-NEXT: buffer_store_b16 v0, off, s[4:7], null
121
+ ; GFX12-FAKE16-NEXT: s_endpgm
84
122
ptr addrspace (1 ) %r ,
85
123
ptr addrspace (1 ) %a ) {
86
124
entry:
@@ -189,6 +227,50 @@ define amdgpu_kernel void @sqrt_v2f16(
189
227
; GFX11-FAKE16-NEXT: v_pack_b32_f16 v0, v0, v1
190
228
; GFX11-FAKE16-NEXT: buffer_store_b32 v0, off, s[4:7], 0
191
229
; GFX11-FAKE16-NEXT: s_endpgm
230
+ ;
231
+ ; GFX12-TRUE16-LABEL: sqrt_v2f16:
232
+ ; GFX12-TRUE16: ; %bb.0: ; %entry
233
+ ; GFX12-TRUE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
234
+ ; GFX12-TRUE16-NEXT: s_mov_b32 s6, -1
235
+ ; GFX12-TRUE16-NEXT: s_mov_b32 s7, 0x31016000
236
+ ; GFX12-TRUE16-NEXT: s_mov_b32 s10, s6
237
+ ; GFX12-TRUE16-NEXT: s_mov_b32 s11, s7
238
+ ; GFX12-TRUE16-NEXT: s_wait_kmcnt 0x0
239
+ ; GFX12-TRUE16-NEXT: s_mov_b32 s8, s2
240
+ ; GFX12-TRUE16-NEXT: s_mov_b32 s9, s3
241
+ ; GFX12-TRUE16-NEXT: s_mov_b32 s4, s0
242
+ ; GFX12-TRUE16-NEXT: buffer_load_b32 v0, off, s[8:11], null
243
+ ; GFX12-TRUE16-NEXT: s_mov_b32 s5, s1
244
+ ; GFX12-TRUE16-NEXT: s_wait_loadcnt 0x0
245
+ ; GFX12-TRUE16-NEXT: v_lshrrev_b32_e32 v1, 16, v0
246
+ ; GFX12-TRUE16-NEXT: v_sqrt_f16_e32 v0.l, v0.l
247
+ ; GFX12-TRUE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(TRANS32_DEP_1)
248
+ ; GFX12-TRUE16-NEXT: v_sqrt_f16_e32 v0.h, v1.l
249
+ ; GFX12-TRUE16-NEXT: v_pack_b32_f16 v0, v0.l, v0.h
250
+ ; GFX12-TRUE16-NEXT: buffer_store_b32 v0, off, s[4:7], null
251
+ ; GFX12-TRUE16-NEXT: s_endpgm
252
+ ;
253
+ ; GFX12-FAKE16-LABEL: sqrt_v2f16:
254
+ ; GFX12-FAKE16: ; %bb.0: ; %entry
255
+ ; GFX12-FAKE16-NEXT: s_load_b128 s[0:3], s[4:5], 0x24
256
+ ; GFX12-FAKE16-NEXT: s_mov_b32 s6, -1
257
+ ; GFX12-FAKE16-NEXT: s_mov_b32 s7, 0x31016000
258
+ ; GFX12-FAKE16-NEXT: s_mov_b32 s10, s6
259
+ ; GFX12-FAKE16-NEXT: s_mov_b32 s11, s7
260
+ ; GFX12-FAKE16-NEXT: s_wait_kmcnt 0x0
261
+ ; GFX12-FAKE16-NEXT: s_mov_b32 s8, s2
262
+ ; GFX12-FAKE16-NEXT: s_mov_b32 s9, s3
263
+ ; GFX12-FAKE16-NEXT: s_mov_b32 s4, s0
264
+ ; GFX12-FAKE16-NEXT: buffer_load_b32 v0, off, s[8:11], null
265
+ ; GFX12-FAKE16-NEXT: s_mov_b32 s5, s1
266
+ ; GFX12-FAKE16-NEXT: s_wait_loadcnt 0x0
267
+ ; GFX12-FAKE16-NEXT: v_lshrrev_b32_e32 v1, 16, v0
268
+ ; GFX12-FAKE16-NEXT: v_sqrt_f16_e32 v0, v0
269
+ ; GFX12-FAKE16-NEXT: s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(TRANS32_DEP_1)
270
+ ; GFX12-FAKE16-NEXT: v_sqrt_f16_e32 v1, v1
271
+ ; GFX12-FAKE16-NEXT: v_pack_b32_f16 v0, v0, v1
272
+ ; GFX12-FAKE16-NEXT: buffer_store_b32 v0, off, s[4:7], null
273
+ ; GFX12-FAKE16-NEXT: s_endpgm
192
274
ptr addrspace (1 ) %r ,
193
275
ptr addrspace (1 ) %a ) {
194
276
entry:
@@ -197,5 +279,3 @@ entry:
197
279
store <2 x half > %r.val , ptr addrspace (1 ) %r
198
280
ret void
199
281
}
200
- ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
201
- ; GFX11: {{.*}}
0 commit comments