brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.3 KiB · 37cbd2d Raw
281 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 --mattr=+enable-flat-scratch < %s | FileCheck -check-prefixes=GCN,FLAT_SCR_OPT %s3; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1010 --mattr=+architected-flat-scratch < %s | FileCheck -check-prefixes=GCN,FLAT_SCR_ARCH %s4 5declare void @extern_func() #06 7define amdgpu_kernel void @stack_object_addrspacecast_in_kernel_no_calls() {8; FLAT_SCR_OPT-LABEL: stack_object_addrspacecast_in_kernel_no_calls:9; FLAT_SCR_OPT:       ; %bb.0:10; FLAT_SCR_OPT-NEXT:    s_add_u32 s8, s8, s1311; FLAT_SCR_OPT-NEXT:    s_addc_u32 s9, s9, 012; FLAT_SCR_OPT-NEXT:    s_setreg_b32 hwreg(HW_REG_FLAT_SCR_LO), s813; FLAT_SCR_OPT-NEXT:    s_setreg_b32 hwreg(HW_REG_FLAT_SCR_HI), s914; FLAT_SCR_OPT-NEXT:    s_mov_b64 s[0:1], src_private_base15; FLAT_SCR_OPT-NEXT:    v_mov_b32_e32 v0, 016; FLAT_SCR_OPT-NEXT:    v_mov_b32_e32 v1, s117; FLAT_SCR_OPT-NEXT:    v_mov_b32_e32 v2, 018; FLAT_SCR_OPT-NEXT:    flat_store_dword v[0:1], v219; FLAT_SCR_OPT-NEXT:    s_waitcnt_vscnt null, 0x020; FLAT_SCR_OPT-NEXT:    s_endpgm21;22; FLAT_SCR_ARCH-LABEL: stack_object_addrspacecast_in_kernel_no_calls:23; FLAT_SCR_ARCH:       ; %bb.0:24; FLAT_SCR_ARCH-NEXT:    s_mov_b64 s[0:1], src_private_base25; FLAT_SCR_ARCH-NEXT:    v_mov_b32_e32 v0, 026; FLAT_SCR_ARCH-NEXT:    v_mov_b32_e32 v1, s127; FLAT_SCR_ARCH-NEXT:    v_mov_b32_e32 v2, 028; FLAT_SCR_ARCH-NEXT:    flat_store_dword v[0:1], v229; FLAT_SCR_ARCH-NEXT:    s_waitcnt_vscnt null, 0x030; FLAT_SCR_ARCH-NEXT:    s_endpgm31  %alloca = alloca i32, addrspace(5)32  %cast = addrspacecast ptr addrspace(5) %alloca to ptr33  store volatile i32 0, ptr %cast34  ret void35}36 37define amdgpu_kernel void @stack_object_in_kernel_no_calls() {38; FLAT_SCR_OPT-LABEL: stack_object_in_kernel_no_calls:39; FLAT_SCR_OPT:       ; %bb.0:40; FLAT_SCR_OPT-NEXT:    s_add_u32 s8, s8, s1341; FLAT_SCR_OPT-NEXT:    s_addc_u32 s9, s9, 042; FLAT_SCR_OPT-NEXT:    s_setreg_b32 hwreg(HW_REG_FLAT_SCR_LO), s843; FLAT_SCR_OPT-NEXT:    s_setreg_b32 hwreg(HW_REG_FLAT_SCR_HI), s944; FLAT_SCR_OPT-NEXT:    v_mov_b32_e32 v0, 045; FLAT_SCR_OPT-NEXT:    s_mov_b32 s0, 046; FLAT_SCR_OPT-NEXT:    scratch_store_dword off, v0, s047; FLAT_SCR_OPT-NEXT:    s_waitcnt_vscnt null, 0x048; FLAT_SCR_OPT-NEXT:    s_endpgm49;50; FLAT_SCR_ARCH-LABEL: stack_object_in_kernel_no_calls:51; FLAT_SCR_ARCH:       ; %bb.0:52; FLAT_SCR_ARCH-NEXT:    v_mov_b32_e32 v0, 053; FLAT_SCR_ARCH-NEXT:    s_mov_b32 s0, 054; FLAT_SCR_ARCH-NEXT:    scratch_store_dword off, v0, s055; FLAT_SCR_ARCH-NEXT:    s_waitcnt_vscnt null, 0x056; FLAT_SCR_ARCH-NEXT:    s_endpgm57  %alloca = alloca i32, addrspace(5)58  store volatile i32 0, ptr addrspace(5) %alloca59  ret void60}61 62define amdgpu_kernel void @kernel_calls_no_stack() {63; FLAT_SCR_OPT-LABEL: kernel_calls_no_stack:64; FLAT_SCR_OPT:       ; %bb.0:65; FLAT_SCR_OPT-NEXT:    s_add_u32 s8, s8, s1366; FLAT_SCR_OPT-NEXT:    s_mov_b32 s32, 067; FLAT_SCR_OPT-NEXT:    s_addc_u32 s9, s9, 068; FLAT_SCR_OPT-NEXT:    s_setreg_b32 hwreg(HW_REG_FLAT_SCR_LO), s869; FLAT_SCR_OPT-NEXT:    s_setreg_b32 hwreg(HW_REG_FLAT_SCR_HI), s970; FLAT_SCR_OPT-NEXT:    s_mov_b64 s[8:9], s[4:5]71; FLAT_SCR_OPT-NEXT:    s_getpc_b64 s[4:5]72; FLAT_SCR_OPT-NEXT:    s_add_u32 s4, s4, extern_func@gotpcrel32@lo+473; FLAT_SCR_OPT-NEXT:    s_addc_u32 s5, s5, extern_func@gotpcrel32@hi+1274; FLAT_SCR_OPT-NEXT:    v_lshlrev_b32_e32 v2, 20, v275; FLAT_SCR_OPT-NEXT:    s_load_dwordx2 s[16:17], s[4:5], 0x076; FLAT_SCR_OPT-NEXT:    v_lshlrev_b32_e32 v1, 10, v177; FLAT_SCR_OPT-NEXT:    s_mov_b32 s14, s1278; FLAT_SCR_OPT-NEXT:    s_mov_b32 s13, s1179; FLAT_SCR_OPT-NEXT:    s_mov_b32 s12, s1080; FLAT_SCR_OPT-NEXT:    s_mov_b64 s[10:11], s[6:7]81; FLAT_SCR_OPT-NEXT:    v_or3_b32 v31, v0, v1, v282; FLAT_SCR_OPT-NEXT:    s_mov_b64 s[4:5], s[0:1]83; FLAT_SCR_OPT-NEXT:    s_mov_b64 s[6:7], s[2:3]84; FLAT_SCR_OPT-NEXT:    s_waitcnt lgkmcnt(0)85; FLAT_SCR_OPT-NEXT:    s_swappc_b64 s[30:31], s[16:17]86; FLAT_SCR_OPT-NEXT:    s_endpgm87;88; FLAT_SCR_ARCH-LABEL: kernel_calls_no_stack:89; FLAT_SCR_ARCH:       ; %bb.0:90; FLAT_SCR_ARCH-NEXT:    s_mov_b32 s13, s991; FLAT_SCR_ARCH-NEXT:    s_mov_b32 s12, s892; FLAT_SCR_ARCH-NEXT:    s_mov_b64 s[8:9], s[4:5]93; FLAT_SCR_ARCH-NEXT:    s_getpc_b64 s[4:5]94; FLAT_SCR_ARCH-NEXT:    s_add_u32 s4, s4, extern_func@gotpcrel32@lo+495; FLAT_SCR_ARCH-NEXT:    s_addc_u32 s5, s5, extern_func@gotpcrel32@hi+1296; FLAT_SCR_ARCH-NEXT:    v_lshlrev_b32_e32 v2, 20, v297; FLAT_SCR_ARCH-NEXT:    s_load_dwordx2 s[16:17], s[4:5], 0x098; FLAT_SCR_ARCH-NEXT:    v_lshlrev_b32_e32 v1, 10, v199; FLAT_SCR_ARCH-NEXT:    s_mov_b32 s14, s10100; FLAT_SCR_ARCH-NEXT:    s_mov_b64 s[10:11], s[6:7]101; FLAT_SCR_ARCH-NEXT:    s_mov_b64 s[4:5], s[0:1]102; FLAT_SCR_ARCH-NEXT:    s_mov_b64 s[6:7], s[2:3]103; FLAT_SCR_ARCH-NEXT:    v_or3_b32 v31, v0, v1, v2104; FLAT_SCR_ARCH-NEXT:    s_mov_b32 s32, 0105; FLAT_SCR_ARCH-NEXT:    s_waitcnt lgkmcnt(0)106; FLAT_SCR_ARCH-NEXT:    s_swappc_b64 s[30:31], s[16:17]107; FLAT_SCR_ARCH-NEXT:    s_endpgm108  call void @extern_func()109  ret void110}111 112define amdgpu_kernel void @test(ptr addrspace(1) %out, i32 %in) {113; GCN-LABEL: test:114; GCN:       ; %bb.0:115; GCN-NEXT:    s_clause 0x1116; GCN-NEXT:    s_load_dwordx2 s[0:1], s[4:5], 0x0117; GCN-NEXT:    s_load_dword vcc_lo, s[4:5], 0x8118; GCN-NEXT:    ; implicit-def: $vgpr0 : SGPR spill to VGPR lane119; GCN-NEXT:    ; kill: killed $sgpr4_sgpr5120; GCN-NEXT:    s_waitcnt lgkmcnt(0)121; GCN-NEXT:    v_writelane_b32 v0, s0, 0122; GCN-NEXT:    v_writelane_b32 v0, s1, 1123; GCN-NEXT:    ;;#ASMSTART124; GCN-NEXT:    ;;#ASMEND125; GCN-NEXT:    ;;#ASMSTART126; GCN-NEXT:    ;;#ASMEND127; GCN-NEXT:    ;;#ASMSTART128; GCN-NEXT:    ;;#ASMEND129; GCN-NEXT:    ;;#ASMSTART130; GCN-NEXT:    ;;#ASMEND131; GCN-NEXT:    ;;#ASMSTART132; GCN-NEXT:    ;;#ASMEND133; GCN-NEXT:    ;;#ASMSTART134; GCN-NEXT:    ;;#ASMEND135; GCN-NEXT:    ;;#ASMSTART136; GCN-NEXT:    ;;#ASMEND137; GCN-NEXT:    ;;#ASMSTART138; GCN-NEXT:    ;;#ASMEND139; GCN-NEXT:    ;;#ASMSTART140; GCN-NEXT:    ;;#ASMEND141; GCN-NEXT:    ;;#ASMSTART142; GCN-NEXT:    ;;#ASMEND143; GCN-NEXT:    ;;#ASMSTART144; GCN-NEXT:    ;;#ASMEND145; GCN-NEXT:    ;;#ASMSTART146; GCN-NEXT:    ;;#ASMEND147; GCN-NEXT:    ;;#ASMSTART148; GCN-NEXT:    ;;#ASMEND149; GCN-NEXT:    ;;#ASMSTART150; GCN-NEXT:    ;;#ASMEND151; GCN-NEXT:    ;;#ASMSTART152; GCN-NEXT:    ;;#ASMEND153; GCN-NEXT:    v_readlane_b32 s0, v0, 0154; GCN-NEXT:    v_mov_b32_e32 v1, vcc_lo155; GCN-NEXT:    v_readlane_b32 s1, v0, 1156; GCN-NEXT:    v_mov_b32_e32 v2, 0157; GCN-NEXT:    ;;#ASMSTART158; GCN-NEXT:    ;;#ASMEND159; GCN-NEXT:    ;;#ASMSTART160; GCN-NEXT:    ;;#ASMEND161; GCN-NEXT:    ;;#ASMSTART162; GCN-NEXT:    ;;#ASMEND163; GCN-NEXT:    ;;#ASMSTART164; GCN-NEXT:    ;;#ASMEND165; GCN-NEXT:    ;;#ASMSTART166; GCN-NEXT:    ;;#ASMEND167; GCN-NEXT:    ;;#ASMSTART168; GCN-NEXT:    ;;#ASMEND169; GCN-NEXT:    ;;#ASMSTART170; GCN-NEXT:    ;;#ASMEND171; GCN-NEXT:    ;;#ASMSTART172; GCN-NEXT:    ;;#ASMEND173; GCN-NEXT:    ;;#ASMSTART174; GCN-NEXT:    ;;#ASMEND175; GCN-NEXT:    ;;#ASMSTART176; GCN-NEXT:    ;;#ASMEND177; GCN-NEXT:    ;;#ASMSTART178; GCN-NEXT:    ;;#ASMEND179; GCN-NEXT:    ;;#ASMSTART180; GCN-NEXT:    ;;#ASMEND181; GCN-NEXT:    ;;#ASMSTART182; GCN-NEXT:    ;;#ASMEND183; GCN-NEXT:    ;;#ASMSTART184; GCN-NEXT:    ;;#ASMEND185; GCN-NEXT:    ;;#ASMSTART186; GCN-NEXT:    ;;#ASMEND187; GCN-NEXT:    ;;#ASMSTART188; GCN-NEXT:    ;;#ASMEND189; GCN-NEXT:    ;;#ASMSTART190; GCN-NEXT:    ;;#ASMEND191; GCN-NEXT:    ;;#ASMSTART192; GCN-NEXT:    ;;#ASMEND193; GCN-NEXT:    ;;#ASMSTART194; GCN-NEXT:    ;;#ASMEND195; GCN-NEXT:    ;;#ASMSTART196; GCN-NEXT:    ;;#ASMEND197; GCN-NEXT:    ;;#ASMSTART198; GCN-NEXT:    ;;#ASMEND199; GCN-NEXT:    ;;#ASMSTART200; GCN-NEXT:    ;;#ASMEND201; GCN-NEXT:    ;;#ASMSTART202; GCN-NEXT:    ;;#ASMEND203; GCN-NEXT:    ;;#ASMSTART204; GCN-NEXT:    ;;#ASMEND205; GCN-NEXT:    ;;#ASMSTART206; GCN-NEXT:    ;;#ASMEND207; GCN-NEXT:    ;;#ASMSTART208; GCN-NEXT:    ;;#ASMEND209; GCN-NEXT:    ;;#ASMSTART210; GCN-NEXT:    ;;#ASMEND211; GCN-NEXT:    ;;#ASMSTART212; GCN-NEXT:    ;;#ASMEND213; GCN-NEXT:    ;;#ASMSTART214; GCN-NEXT:    ;;#ASMEND215; GCN-NEXT:    ;;#ASMSTART216; GCN-NEXT:    ;;#ASMEND217; GCN-NEXT:    ;;#ASMSTART218; GCN-NEXT:    ;;#ASMEND219; GCN-NEXT:    global_store_dword v2, v1, s[0:1]220; GCN-NEXT:    s_endpgm221  call void asm sideeffect "", "~{s[0:7]}" ()222  call void asm sideeffect "", "~{s[8:15]}" ()223  call void asm sideeffect "", "~{s[16:23]}" ()224  call void asm sideeffect "", "~{s[24:31]}" ()225  call void asm sideeffect "", "~{s[32:39]}" ()226  call void asm sideeffect "", "~{s[40:47]}" ()227  call void asm sideeffect "", "~{s[48:55]}" ()228  call void asm sideeffect "", "~{s[56:63]}" ()229  call void asm sideeffect "", "~{s[64:71]}" ()230  call void asm sideeffect "", "~{s[72:79]}" ()231  call void asm sideeffect "", "~{s[80:87]}" ()232  call void asm sideeffect "", "~{s[88:95]}" ()233  call void asm sideeffect "", "~{s[96:103]}" ()234  call void asm sideeffect "", "~{s[104:105]}" ()235  call void asm sideeffect "", "~{v[1:7]}" ()236  call void asm sideeffect "", "~{v[8:15]}" ()237  call void asm sideeffect "", "~{v[16:23]}" ()238  call void asm sideeffect "", "~{v[24:31]}" ()239  call void asm sideeffect "", "~{v[32:39]}" ()240  call void asm sideeffect "", "~{v[40:47]}" ()241  call void asm sideeffect "", "~{v[48:55]}" ()242  call void asm sideeffect "", "~{v[56:63]}" ()243  call void asm sideeffect "", "~{v[64:71]}" ()244  call void asm sideeffect "", "~{v[72:79]}" ()245  call void asm sideeffect "", "~{v[80:87]}" ()246  call void asm sideeffect "", "~{v[88:95]}" ()247  call void asm sideeffect "", "~{v[96:103]}" ()248  call void asm sideeffect "", "~{v[104:111]}" ()249  call void asm sideeffect "", "~{v[112:119]}" ()250  call void asm sideeffect "", "~{v[120:127]}" ()251  call void asm sideeffect "", "~{v[128:135]}" ()252  call void asm sideeffect "", "~{v[136:143]}" ()253  call void asm sideeffect "", "~{v[144:151]}" ()254  call void asm sideeffect "", "~{v[152:159]}" ()255  call void asm sideeffect "", "~{v[160:167]}" ()256  call void asm sideeffect "", "~{v[168:175]}" ()257  call void asm sideeffect "", "~{v[176:183]}" ()258  call void asm sideeffect "", "~{v[184:191]}" ()259  call void asm sideeffect "", "~{v[192:199]}" ()260  call void asm sideeffect "", "~{v[200:207]}" ()261  call void asm sideeffect "", "~{v[208:215]}" ()262  call void asm sideeffect "", "~{v[216:223]}" ()263  call void asm sideeffect "", "~{v[224:231]}" ()264  call void asm sideeffect "", "~{v[232:239]}" ()265  call void asm sideeffect "", "~{v[240:247]}" ()266  call void asm sideeffect "", "~{v[248:255]}" ()267 268  store i32 %in, ptr addrspace(1) %out269  ret void270}271 272define amdgpu_kernel void @kernel_no_calls_no_stack() {273; GCN-LABEL: kernel_no_calls_no_stack:274; GCN:       ; %bb.0:275; GCN-NEXT:    s_endpgm276  ret void277}278 279attributes #0 = { nounwind }280 281