100 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -stress-regalloc=2 < %s | FileCheck %s -check-prefix=GFX93; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 -stress-regalloc=2 < %s | FileCheck %s -check-prefix=GFX114; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1200 -stress-regalloc=2 < %s | FileCheck %s -check-prefix=GFX125 6define void @test_remat_s_getpc_b64() {7; GFX9-LABEL: test_remat_s_getpc_b64:8; GFX9: ; %bb.0: ; %entry9; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10; GFX9-NEXT: s_xor_saveexec_b64 s[4:5], -111; GFX9-NEXT: buffer_store_dword v2, off, s[0:3], s32 ; 4-byte Folded Spill12; GFX9-NEXT: s_mov_b64 exec, s[4:5]13; GFX9-NEXT: v_writelane_b32 v2, s30, 014; GFX9-NEXT: s_getpc_b64 s[4:5]15; GFX9-NEXT: v_writelane_b32 v2, s31, 116; GFX9-NEXT: ;;#ASMSTART17; GFX9-NEXT: ;;#ASMEND18; GFX9-NEXT: ;;#ASMSTART19; GFX9-NEXT: ;;#ASMEND20; GFX9-NEXT: s_getpc_b64 s[4:5]21; GFX9-NEXT: v_mov_b32_e32 v0, s422; GFX9-NEXT: v_mov_b32_e32 v1, s523; GFX9-NEXT: global_store_dwordx2 v[0:1], v[0:1], off24; GFX9-NEXT: v_readlane_b32 s31, v2, 125; GFX9-NEXT: v_readlane_b32 s30, v2, 026; GFX9-NEXT: s_xor_saveexec_b64 s[4:5], -127; GFX9-NEXT: buffer_load_dword v2, off, s[0:3], s32 ; 4-byte Folded Reload28; GFX9-NEXT: s_mov_b64 exec, s[4:5]29; GFX9-NEXT: s_waitcnt vmcnt(0)30; GFX9-NEXT: s_setpc_b64 s[30:31]31;32; GFX11-LABEL: test_remat_s_getpc_b64:33; GFX11: ; %bb.0: ; %entry34; GFX11-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)35; GFX11-NEXT: s_xor_saveexec_b32 s0, -136; GFX11-NEXT: scratch_store_b32 off, v2, s32 ; 4-byte Folded Spill37; GFX11-NEXT: s_mov_b32 exec_lo, s038; GFX11-NEXT: v_writelane_b32 v2, s30, 039; GFX11-NEXT: s_getpc_b64 s[0:1]40; GFX11-NEXT: ;;#ASMSTART41; GFX11-NEXT: ;;#ASMEND42; GFX11-NEXT: v_writelane_b32 v2, s31, 143; GFX11-NEXT: ;;#ASMSTART44; GFX11-NEXT: ;;#ASMEND45; GFX11-NEXT: s_getpc_b64 s[0:1]46; GFX11-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(VALU_DEP_2)47; GFX11-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s148; GFX11-NEXT: v_readlane_b32 s31, v2, 149; GFX11-NEXT: v_readlane_b32 s30, v2, 050; GFX11-NEXT: global_store_b64 v[0:1], v[0:1], off51; GFX11-NEXT: s_xor_saveexec_b32 s0, -152; GFX11-NEXT: scratch_load_b32 v2, off, s32 ; 4-byte Folded Reload53; GFX11-NEXT: s_mov_b32 exec_lo, s054; GFX11-NEXT: s_waitcnt vmcnt(0)55; GFX11-NEXT: s_setpc_b64 s[30:31]56;57; GFX12-LABEL: test_remat_s_getpc_b64:58; GFX12: ; %bb.0: ; %entry59; GFX12-NEXT: s_wait_loadcnt_dscnt 0x060; GFX12-NEXT: s_wait_expcnt 0x061; GFX12-NEXT: s_wait_samplecnt 0x062; GFX12-NEXT: s_wait_bvhcnt 0x063; GFX12-NEXT: s_wait_kmcnt 0x064; GFX12-NEXT: s_xor_saveexec_b32 s0, -165; GFX12-NEXT: scratch_store_b32 off, v2, s32 ; 4-byte Folded Spill66; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)67; GFX12-NEXT: s_mov_b32 exec_lo, s068; GFX12-NEXT: v_writelane_b32 v2, s30, 069; GFX12-NEXT: s_getpc_b64 s[0:1]70; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)71; GFX12-NEXT: s_sext_i32_i16 s1, s172; GFX12-NEXT: ;;#ASMSTART73; GFX12-NEXT: ;;#ASMEND74; GFX12-NEXT: v_writelane_b32 v2, s31, 175; GFX12-NEXT: ;;#ASMSTART76; GFX12-NEXT: ;;#ASMEND77; GFX12-NEXT: s_getpc_b64 s[0:1]78; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)79; GFX12-NEXT: s_sext_i32_i16 s1, s180; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)81; GFX12-NEXT: v_dual_mov_b32 v0, s0 :: v_dual_mov_b32 v1, s182; GFX12-NEXT: v_readlane_b32 s31, v2, 183; GFX12-NEXT: v_readlane_b32 s30, v2, 084; GFX12-NEXT: global_store_b64 v[0:1], v[0:1], off85; GFX12-NEXT: s_xor_saveexec_b32 s0, -186; GFX12-NEXT: scratch_load_b32 v2, off, s32 ; 4-byte Folded Reload87; GFX12-NEXT: s_wait_alu depctr_sa_sdst(0)88; GFX12-NEXT: s_mov_b32 exec_lo, s089; GFX12-NEXT: s_wait_loadcnt 0x090; GFX12-NEXT: s_setpc_b64 s[30:31]91entry:92 %0 = tail call i64 @llvm.amdgcn.s.getpc()93 tail call void asm sideeffect "", "s"(i64 %0)94 tail call void asm sideeffect "", "~{s0},~{s1},~{s2},~{s3},~{s4},~{s5},~{s6},~{s7},~{s8},~{s9},~{s10},~{s11},~{s12},~{s13},~{s14},~{s15},~{s16},~{s17},~{s18},~{s19},~{s20},~{s21},~{s22},~{s23},~{s24},~{s25},~{s26},~{s27},~{s28},~{s29},~{s30},~{s31}"()95 store i64 %0, ptr addrspace(1) poison96 ret void97}98 99declare i64 @llvm.amdgcn.s.getpc()100