11; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
22; RUN: llc -amdgpu-scalarize-global-loads=false -mtriple=amdgcn -mcpu=tahiti -verify-machineinstrs < %s | FileCheck -check-prefixes=SI %s
33; 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
68
79declare half @llvm.sqrt.f16 (half %a )
810declare <2 x half > @llvm.sqrt.v2f16 (<2 x half > %a )
@@ -81,6 +83,42 @@ define amdgpu_kernel void @sqrt_f16(
8183; GFX11-FAKE16-NEXT: v_sqrt_f16_e32 v0, v0
8284; GFX11-FAKE16-NEXT: buffer_store_b16 v0, off, s[4:7], 0
8385; 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
84122 ptr addrspace (1 ) %r ,
85123 ptr addrspace (1 ) %a ) {
86124entry:
@@ -189,6 +227,50 @@ define amdgpu_kernel void @sqrt_v2f16(
189227; GFX11-FAKE16-NEXT: v_pack_b32_f16 v0, v0, v1
190228; GFX11-FAKE16-NEXT: buffer_store_b32 v0, off, s[4:7], 0
191229; 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
192274 ptr addrspace (1 ) %r ,
193275 ptr addrspace (1 ) %a ) {
194276entry:
@@ -197,5 +279,3 @@ entry:
197279 store <2 x half > %r.val , ptr addrspace (1 ) %r
198280 ret void
199281}
200- ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:
201- ; GFX11: {{.*}}
0 commit comments