brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.6 KiB · 9f26745 Raw
110 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=amdgcn -mcpu=fiji -mattr=-flat-for-global < %s | FileCheck -check-prefix=GCN -check-prefix=VI %s3; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr=-flat-for-global,+real-true16 < %s | FileCheck -check-prefix=GFX11-TRUE16 %s4; RUN: llc -mtriple=amdgcn -mcpu=gfx1100 -mattr=-flat-for-global,-real-true16 < %s | FileCheck -check-prefix=GFX11-FAKE16 %s5; RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -mattr=-flat-for-global,+real-true16 < %s | FileCheck -check-prefix=GFX12-TRUE16 %s6; RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -mattr=-flat-for-global,-real-true16 < %s | FileCheck -check-prefix=GFX12-FAKE16 %s7 8declare half @llvm.amdgcn.rsq.f16(half %a)9 10define amdgpu_kernel void @rsq_f16(11; GCN-LABEL: rsq_f16:12; GCN:       ; %bb.0: ; %entry13; GCN-NEXT:    s_load_dwordx4 s[0:3], s[4:5], 0x2414; GCN-NEXT:    s_mov_b32 s7, 0xf00015; GCN-NEXT:    s_mov_b32 s6, -116; GCN-NEXT:    s_mov_b32 s10, s617; GCN-NEXT:    s_mov_b32 s11, s718; GCN-NEXT:    s_waitcnt lgkmcnt(0)19; GCN-NEXT:    s_mov_b32 s8, s220; GCN-NEXT:    s_mov_b32 s9, s321; GCN-NEXT:    buffer_load_ushort v0, off, s[8:11], 022; GCN-NEXT:    s_mov_b32 s4, s023; GCN-NEXT:    s_mov_b32 s5, s124; GCN-NEXT:    s_waitcnt vmcnt(0)25; GCN-NEXT:    v_rsq_f16_e32 v0, v026; GCN-NEXT:    buffer_store_short v0, off, s[4:7], 027; GCN-NEXT:    s_endpgm28;29; GFX11-TRUE16-LABEL: rsq_f16:30; GFX11-TRUE16:       ; %bb.0: ; %entry31; GFX11-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2432; GFX11-TRUE16-NEXT:    s_mov_b32 s6, -133; GFX11-TRUE16-NEXT:    s_mov_b32 s7, 0x3101600034; GFX11-TRUE16-NEXT:    s_mov_b32 s10, s635; GFX11-TRUE16-NEXT:    s_mov_b32 s11, s736; GFX11-TRUE16-NEXT:    s_waitcnt lgkmcnt(0)37; GFX11-TRUE16-NEXT:    s_mov_b32 s8, s238; GFX11-TRUE16-NEXT:    s_mov_b32 s9, s339; GFX11-TRUE16-NEXT:    s_mov_b32 s4, s040; GFX11-TRUE16-NEXT:    buffer_load_u16 v0, off, s[8:11], 041; GFX11-TRUE16-NEXT:    s_mov_b32 s5, s142; GFX11-TRUE16-NEXT:    s_waitcnt vmcnt(0)43; GFX11-TRUE16-NEXT:    v_rsq_f16_e32 v0.l, v0.l44; GFX11-TRUE16-NEXT:    buffer_store_b16 v0, off, s[4:7], 045; GFX11-TRUE16-NEXT:    s_endpgm46;47; GFX11-FAKE16-LABEL: rsq_f16:48; GFX11-FAKE16:       ; %bb.0: ; %entry49; GFX11-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2450; GFX11-FAKE16-NEXT:    s_mov_b32 s6, -151; GFX11-FAKE16-NEXT:    s_mov_b32 s7, 0x3101600052; GFX11-FAKE16-NEXT:    s_mov_b32 s10, s653; GFX11-FAKE16-NEXT:    s_mov_b32 s11, s754; GFX11-FAKE16-NEXT:    s_waitcnt lgkmcnt(0)55; GFX11-FAKE16-NEXT:    s_mov_b32 s8, s256; GFX11-FAKE16-NEXT:    s_mov_b32 s9, s357; GFX11-FAKE16-NEXT:    s_mov_b32 s4, s058; GFX11-FAKE16-NEXT:    buffer_load_u16 v0, off, s[8:11], 059; GFX11-FAKE16-NEXT:    s_mov_b32 s5, s160; GFX11-FAKE16-NEXT:    s_waitcnt vmcnt(0)61; GFX11-FAKE16-NEXT:    v_rsq_f16_e32 v0, v062; GFX11-FAKE16-NEXT:    buffer_store_b16 v0, off, s[4:7], 063; GFX11-FAKE16-NEXT:    s_endpgm64;65; GFX12-TRUE16-LABEL: rsq_f16:66; GFX12-TRUE16:       ; %bb.0: ; %entry67; GFX12-TRUE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2468; GFX12-TRUE16-NEXT:    s_mov_b32 s6, -169; GFX12-TRUE16-NEXT:    s_mov_b32 s7, 0x3101600070; GFX12-TRUE16-NEXT:    s_mov_b32 s10, s671; GFX12-TRUE16-NEXT:    s_mov_b32 s11, s772; GFX12-TRUE16-NEXT:    s_wait_kmcnt 0x073; GFX12-TRUE16-NEXT:    s_mov_b32 s8, s274; GFX12-TRUE16-NEXT:    s_mov_b32 s9, s375; GFX12-TRUE16-NEXT:    s_mov_b32 s4, s076; GFX12-TRUE16-NEXT:    buffer_load_u16 v0, off, s[8:11], null77; GFX12-TRUE16-NEXT:    s_mov_b32 s5, s178; GFX12-TRUE16-NEXT:    s_wait_loadcnt 0x079; GFX12-TRUE16-NEXT:    v_rsq_f16_e32 v0.l, v0.l80; GFX12-TRUE16-NEXT:    buffer_store_b16 v0, off, s[4:7], null81; GFX12-TRUE16-NEXT:    s_endpgm82;83; GFX12-FAKE16-LABEL: rsq_f16:84; GFX12-FAKE16:       ; %bb.0: ; %entry85; GFX12-FAKE16-NEXT:    s_load_b128 s[0:3], s[4:5], 0x2486; GFX12-FAKE16-NEXT:    s_mov_b32 s6, -187; GFX12-FAKE16-NEXT:    s_mov_b32 s7, 0x3101600088; GFX12-FAKE16-NEXT:    s_mov_b32 s10, s689; GFX12-FAKE16-NEXT:    s_mov_b32 s11, s790; GFX12-FAKE16-NEXT:    s_wait_kmcnt 0x091; GFX12-FAKE16-NEXT:    s_mov_b32 s8, s292; GFX12-FAKE16-NEXT:    s_mov_b32 s9, s393; GFX12-FAKE16-NEXT:    s_mov_b32 s4, s094; GFX12-FAKE16-NEXT:    buffer_load_u16 v0, off, s[8:11], null95; GFX12-FAKE16-NEXT:    s_mov_b32 s5, s196; GFX12-FAKE16-NEXT:    s_wait_loadcnt 0x097; GFX12-FAKE16-NEXT:    v_rsq_f16_e32 v0, v098; GFX12-FAKE16-NEXT:    buffer_store_b16 v0, off, s[4:7], null99; GFX12-FAKE16-NEXT:    s_endpgm100    ptr addrspace(1) %r,101    ptr addrspace(1) %a) {102entry:103  %a.val = load half, ptr addrspace(1) %a104  %r.val = call half @llvm.amdgcn.rsq.f16(half %a.val)105  store half %r.val, ptr addrspace(1) %r106  ret void107}108;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:109; VI: {{.*}}110