brintos

brintos / llvm-project-archived public Read only

0
0
Text · 14.3 KiB · 3ba492b Raw
282 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 42; RUN: llc -mtriple=amdgcn -mcpu=gfx1200 -o - %s | FileCheck -check-prefix=CHECK %s3 4define amdgpu_cs void @max_6_vgprs(ptr addrspace(1) %p) "amdgpu-num-vgpr"="6" {5; CHECK-LABEL: max_6_vgprs:6; CHECK:       ; %bb.0:7; CHECK-NEXT:    global_load_b32 v2, v[0:1], off scope:SCOPE_SYS8; CHECK-NEXT:    s_wait_loadcnt 0x09; CHECK-NEXT:    v_ashrrev_i32_e32 v3, 31, v210; CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)11; CHECK-NEXT:    v_lshlrev_b64_e32 v[2:3], 2, v[2:3]12; CHECK-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v213; CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1)14; CHECK-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v3, vcc_lo15; CHECK-NEXT:    global_load_b32 v5, v[0:1], off scope:SCOPE_SYS16; CHECK-NEXT:    s_wait_loadcnt 0x017; CHECK-NEXT:    global_load_b32 v2, v[0:1], off offset:16 scope:SCOPE_SYS18; CHECK-NEXT:    s_wait_loadcnt 0x019; CHECK-NEXT:    scratch_store_b32 off, v2, off ; 4-byte Folded Spill20; CHECK-NEXT:    global_load_b32 v2, v[0:1], off offset:48 scope:SCOPE_SYS21; CHECK-NEXT:    s_wait_loadcnt 0x022; CHECK-NEXT:    scratch_store_b32 off, v2, off offset:4 ; 4-byte Folded Spill23; CHECK-NEXT:    global_load_b32 v2, v[0:1], off offset:96 scope:SCOPE_SYS24; CHECK-NEXT:    s_wait_loadcnt 0x025; CHECK-NEXT:    scratch_store_b32 off, v2, off offset:8 ; 4-byte Folded Spill26; CHECK-NEXT:    global_load_b32 v0, v[0:1], off offset:160 scope:SCOPE_SYS27; CHECK-NEXT:    s_wait_loadcnt 0x028; CHECK-NEXT:    scratch_store_b32 off, v0, off offset:12 ; 4-byte Folded Spill29; CHECK-NEXT:    ;;#ASMSTART30; CHECK-NEXT:    ;;#ASMEND31; CHECK-NEXT:    s_wait_storecnt 0x032; CHECK-NEXT:    global_store_b32 v[0:1], v5, off scope:SCOPE_SYS33; CHECK-NEXT:    s_wait_storecnt 0x034; CHECK-NEXT:    scratch_load_b32 v0, off, off th:TH_LOAD_LU ; 4-byte Folded Reload35; CHECK-NEXT:    s_wait_loadcnt 0x036; CHECK-NEXT:    global_store_b32 v[0:1], v0, off scope:SCOPE_SYS37; CHECK-NEXT:    s_wait_storecnt 0x038; CHECK-NEXT:    scratch_load_b32 v0, off, off offset:4 th:TH_LOAD_LU ; 4-byte Folded Reload39; CHECK-NEXT:    s_wait_loadcnt 0x040; CHECK-NEXT:    global_store_b32 v[0:1], v0, off scope:SCOPE_SYS41; CHECK-NEXT:    s_wait_storecnt 0x042; CHECK-NEXT:    scratch_load_b32 v0, off, off offset:8 th:TH_LOAD_LU ; 4-byte Folded Reload43; CHECK-NEXT:    s_wait_loadcnt 0x044; CHECK-NEXT:    global_store_b32 v[0:1], v0, off scope:SCOPE_SYS45; CHECK-NEXT:    s_wait_storecnt 0x046; CHECK-NEXT:    scratch_load_b32 v0, off, off offset:12 th:TH_LOAD_LU ; 4-byte Folded Reload47; CHECK-NEXT:    s_wait_loadcnt 0x048; CHECK-NEXT:    global_store_b32 v[0:1], v0, off scope:SCOPE_SYS49; CHECK-NEXT:    s_wait_storecnt 0x050; CHECK-NEXT:    s_endpgm51  %tid = load volatile i32, ptr addrspace(1) poison52  %p1 = getelementptr inbounds i32, ptr addrspace(1) %p, i32 %tid53  %p2 = getelementptr inbounds i32, ptr addrspace(1) %p1, i32 454  %p3 = getelementptr inbounds i32, ptr addrspace(1) %p2, i32 855  %p4 = getelementptr inbounds i32, ptr addrspace(1) %p3, i32 1256  %p5 = getelementptr inbounds i32, ptr addrspace(1) %p4, i32 1657  %v1 = load volatile i32, ptr addrspace(1) %p158  %v2 = load volatile i32, ptr addrspace(1) %p259  %v3 = load volatile i32, ptr addrspace(1) %p360  %v4 = load volatile i32, ptr addrspace(1) %p461  %v5 = load volatile i32, ptr addrspace(1) %p562  call void asm sideeffect "", "~{v[0:4]}" ()63  store volatile i32 %v1, ptr addrspace(1) poison64  store volatile i32 %v2, ptr addrspace(1) poison65  store volatile i32 %v3, ptr addrspace(1) poison66  store volatile i32 %v4, ptr addrspace(1) poison67  store volatile i32 %v5, ptr addrspace(1) poison68  ret void69}70 71define amdgpu_cs void @max_11_vgprs_branch(ptr addrspace(1) %p, i32 %tmp) "amdgpu-num-vgpr"="11" {72; CHECK-LABEL: max_11_vgprs_branch:73; CHECK:       ; %bb.0: ; %.entry74; CHECK-NEXT:    global_load_b32 v3, v[0:1], off scope:SCOPE_SYS75; CHECK-NEXT:    s_wait_loadcnt 0x076; CHECK-NEXT:    s_mov_b32 s0, exec_lo77; CHECK-NEXT:    v_ashrrev_i32_e32 v4, 31, v378; CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(NEXT) | instid1(VALU_DEP_1)79; CHECK-NEXT:    v_lshlrev_b64_e32 v[3:4], 2, v[3:4]80; CHECK-NEXT:    v_add_co_u32 v0, vcc_lo, v0, v381; CHECK-NEXT:    s_delay_alu instid0(VALU_DEP_1)82; CHECK-NEXT:    v_add_co_ci_u32_e64 v1, null, v1, v4, vcc_lo83; CHECK-NEXT:    global_load_b32 v3, v[0:1], off offset:336 scope:SCOPE_SYS84; CHECK-NEXT:    s_wait_loadcnt 0x085; CHECK-NEXT:    scratch_store_b32 off, v3, off offset:8 ; 4-byte Folded Spill86; CHECK-NEXT:    global_load_b32 v3, v[0:1], off offset:448 scope:SCOPE_SYS87; CHECK-NEXT:    s_wait_loadcnt 0x088; CHECK-NEXT:    scratch_store_b32 off, v3, off offset:12 ; 4-byte Folded Spill89; CHECK-NEXT:    global_load_b32 v3, v[0:1], off offset:576 scope:SCOPE_SYS90; CHECK-NEXT:    s_wait_loadcnt 0x091; CHECK-NEXT:    scratch_store_b32 off, v3, off ; 4-byte Folded Spill92; CHECK-NEXT:    global_load_b32 v3, v[0:1], off offset:720 scope:SCOPE_SYS93; CHECK-NEXT:    s_wait_loadcnt 0x094; CHECK-NEXT:    scratch_store_b32 off, v3, off offset:4 ; 4-byte Folded Spill95; CHECK-NEXT:    v_cmpx_eq_u32_e32 0, v296; CHECK-NEXT:    s_xor_b32 s0, exec_lo, s097; CHECK-NEXT:    s_cbranch_execz .LBB1_298; CHECK-NEXT:  ; %bb.1: ; %.false99; CHECK-NEXT:    global_load_b32 v10, v[0:1], off scope:SCOPE_SYS100; CHECK-NEXT:    s_wait_loadcnt 0x0101; CHECK-NEXT:    global_load_b32 v2, v[0:1], off offset:16 scope:SCOPE_SYS102; CHECK-NEXT:    s_wait_loadcnt 0x0103; CHECK-NEXT:    scratch_store_b32 off, v2, off offset:16 ; 4-byte Folded Spill104; CHECK-NEXT:    global_load_b32 v2, v[0:1], off offset:48 scope:SCOPE_SYS105; CHECK-NEXT:    s_wait_loadcnt 0x0106; CHECK-NEXT:    scratch_store_b32 off, v2, off offset:20 ; 4-byte Folded Spill107; CHECK-NEXT:    global_load_b32 v2, v[0:1], off offset:96 scope:SCOPE_SYS108; CHECK-NEXT:    s_wait_loadcnt 0x0109; CHECK-NEXT:    scratch_store_b32 off, v2, off offset:24 ; 4-byte Folded Spill110; CHECK-NEXT:    global_load_b32 v2, v[0:1], off offset:160 scope:SCOPE_SYS111; CHECK-NEXT:    s_wait_loadcnt 0x0112; CHECK-NEXT:    scratch_store_b32 off, v2, off offset:28 ; 4-byte Folded Spill113; CHECK-NEXT:    global_load_b32 v0, v[0:1], off offset:240 scope:SCOPE_SYS114; CHECK-NEXT:    s_wait_loadcnt 0x0115; CHECK-NEXT:    scratch_store_b32 off, v0, off offset:32 ; 4-byte Folded Spill116; CHECK-NEXT:    ;;#ASMSTART117; CHECK-NEXT:    ;;#ASMEND118; CHECK-NEXT:    s_wait_storecnt 0x0119; CHECK-NEXT:    global_store_b32 v[0:1], v10, off scope:SCOPE_SYS120; CHECK-NEXT:    s_wait_storecnt 0x0121; CHECK-NEXT:    scratch_load_b32 v0, off, off offset:16 th:TH_LOAD_LU ; 4-byte Folded Reload122; CHECK-NEXT:    s_wait_loadcnt 0x0123; CHECK-NEXT:    global_store_b32 v[0:1], v0, off scope:SCOPE_SYS124; CHECK-NEXT:    s_wait_storecnt 0x0125; CHECK-NEXT:    scratch_load_b32 v0, off, off offset:20 th:TH_LOAD_LU ; 4-byte Folded Reload126; CHECK-NEXT:    s_wait_loadcnt 0x0127; CHECK-NEXT:    global_store_b32 v[0:1], v0, off scope:SCOPE_SYS128; CHECK-NEXT:    s_wait_storecnt 0x0129; CHECK-NEXT:    scratch_load_b32 v0, off, off offset:24 th:TH_LOAD_LU ; 4-byte Folded Reload130; CHECK-NEXT:    s_wait_loadcnt 0x0131; CHECK-NEXT:    global_store_b32 v[0:1], v0, off scope:SCOPE_SYS132; CHECK-NEXT:    s_wait_storecnt 0x0133; CHECK-NEXT:    scratch_load_b32 v0, off, off offset:28 th:TH_LOAD_LU ; 4-byte Folded Reload134; CHECK-NEXT:    s_wait_loadcnt 0x0135; CHECK-NEXT:    global_store_b32 v[0:1], v0, off scope:SCOPE_SYS136; CHECK-NEXT:    s_wait_storecnt 0x0137; CHECK-NEXT:    scratch_load_b32 v0, off, off offset:32 th:TH_LOAD_LU ; 4-byte Folded Reload138; CHECK-NEXT:    s_wait_loadcnt 0x0139; CHECK-NEXT:    global_store_b32 v[0:1], v0, off scope:SCOPE_SYS140; CHECK-NEXT:    s_wait_storecnt 0x0141; CHECK-NEXT:    scratch_load_b32 v0, off, off offset:8 th:TH_LOAD_LU ; 4-byte Folded Reload142; CHECK-NEXT:    s_wait_loadcnt 0x0143; CHECK-NEXT:    global_store_b32 v[0:1], v0, off scope:SCOPE_SYS144; CHECK-NEXT:    s_wait_storecnt 0x0145; CHECK-NEXT:    scratch_load_b32 v0, off, off offset:12 th:TH_LOAD_LU ; 4-byte Folded Reload146; CHECK-NEXT:    s_wait_loadcnt 0x0147; CHECK-NEXT:    global_store_b32 v[0:1], v0, off scope:SCOPE_SYS148; CHECK-NEXT:    s_wait_storecnt 0x0149; CHECK-NEXT:    ; implicit-def: $vgpr0150; CHECK-NEXT:    ; kill: killed $vgpr0151; CHECK-NEXT:    ; implicit-def: $vgpr0152; CHECK-NEXT:    ; kill: killed $vgpr0153; CHECK-NEXT:    ; implicit-def: $vgpr0_vgpr1154; CHECK-NEXT:  .LBB1_2: ; %Flow155; CHECK-NEXT:    s_and_not1_saveexec_b32 s0, s0156; CHECK-NEXT:    s_cbranch_execz .LBB1_4157; CHECK-NEXT:  ; %bb.3: ; %.true158; CHECK-NEXT:    global_load_b32 v10, v[0:1], off scope:SCOPE_SYS159; CHECK-NEXT:    s_wait_loadcnt 0x0160; CHECK-NEXT:    global_load_b32 v2, v[0:1], off offset:16 scope:SCOPE_SYS161; CHECK-NEXT:    s_wait_loadcnt 0x0162; CHECK-NEXT:    scratch_store_b32 off, v2, off offset:16 ; 4-byte Folded Spill163; CHECK-NEXT:    global_load_b32 v2, v[0:1], off offset:48 scope:SCOPE_SYS164; CHECK-NEXT:    s_wait_loadcnt 0x0165; CHECK-NEXT:    scratch_store_b32 off, v2, off offset:20 ; 4-byte Folded Spill166; CHECK-NEXT:    global_load_b32 v2, v[0:1], off offset:96 scope:SCOPE_SYS167; CHECK-NEXT:    s_wait_loadcnt 0x0168; CHECK-NEXT:    scratch_store_b32 off, v2, off offset:24 ; 4-byte Folded Spill169; CHECK-NEXT:    global_load_b32 v2, v[0:1], off offset:160 scope:SCOPE_SYS170; CHECK-NEXT:    s_wait_loadcnt 0x0171; CHECK-NEXT:    scratch_store_b32 off, v2, off offset:28 ; 4-byte Folded Spill172; CHECK-NEXT:    global_load_b32 v0, v[0:1], off offset:240 scope:SCOPE_SYS173; CHECK-NEXT:    s_wait_loadcnt 0x0174; CHECK-NEXT:    scratch_store_b32 off, v0, off offset:32 ; 4-byte Folded Spill175; CHECK-NEXT:    ;;#ASMSTART176; CHECK-NEXT:    ;;#ASMEND177; CHECK-NEXT:    s_wait_storecnt 0x0178; CHECK-NEXT:    global_store_b32 v[0:1], v10, off scope:SCOPE_SYS179; CHECK-NEXT:    s_wait_storecnt 0x0180; CHECK-NEXT:    scratch_load_b32 v0, off, off offset:16 th:TH_LOAD_LU ; 4-byte Folded Reload181; CHECK-NEXT:    s_wait_loadcnt 0x0182; CHECK-NEXT:    global_store_b32 v[0:1], v0, off scope:SCOPE_SYS183; CHECK-NEXT:    s_wait_storecnt 0x0184; CHECK-NEXT:    scratch_load_b32 v0, off, off offset:20 th:TH_LOAD_LU ; 4-byte Folded Reload185; CHECK-NEXT:    s_wait_loadcnt 0x0186; CHECK-NEXT:    global_store_b32 v[0:1], v0, off scope:SCOPE_SYS187; CHECK-NEXT:    s_wait_storecnt 0x0188; CHECK-NEXT:    scratch_load_b32 v0, off, off offset:24 th:TH_LOAD_LU ; 4-byte Folded Reload189; CHECK-NEXT:    s_wait_loadcnt 0x0190; CHECK-NEXT:    global_store_b32 v[0:1], v0, off scope:SCOPE_SYS191; CHECK-NEXT:    s_wait_storecnt 0x0192; CHECK-NEXT:    scratch_load_b32 v0, off, off offset:28 th:TH_LOAD_LU ; 4-byte Folded Reload193; CHECK-NEXT:    s_wait_loadcnt 0x0194; CHECK-NEXT:    global_store_b32 v[0:1], v0, off scope:SCOPE_SYS195; CHECK-NEXT:    s_wait_storecnt 0x0196; CHECK-NEXT:    scratch_load_b32 v0, off, off offset:32 th:TH_LOAD_LU ; 4-byte Folded Reload197; CHECK-NEXT:    s_wait_loadcnt 0x0198; CHECK-NEXT:    global_store_b32 v[0:1], v0, off scope:SCOPE_SYS199; CHECK-NEXT:    s_wait_storecnt 0x0200; CHECK-NEXT:    scratch_load_b32 v0, off, off offset:8 th:TH_LOAD_LU ; 4-byte Folded Reload201; CHECK-NEXT:    s_wait_loadcnt 0x0202; CHECK-NEXT:    global_store_b32 v[0:1], v0, off scope:SCOPE_SYS203; CHECK-NEXT:    s_wait_storecnt 0x0204; CHECK-NEXT:    scratch_load_b32 v0, off, off offset:12 th:TH_LOAD_LU ; 4-byte Folded Reload205; CHECK-NEXT:    s_wait_loadcnt 0x0206; CHECK-NEXT:    global_store_b32 v[0:1], v0, off scope:SCOPE_SYS207; CHECK-NEXT:    s_wait_storecnt 0x0208; CHECK-NEXT:  .LBB1_4: ; %.exit209; CHECK-NEXT:    s_or_b32 exec_lo, exec_lo, s0210; CHECK-NEXT:    scratch_load_b32 v0, off, off th:TH_LOAD_LU ; 4-byte Folded Reload211; CHECK-NEXT:    s_wait_loadcnt 0x0212; CHECK-NEXT:    s_wait_storecnt 0x0213; CHECK-NEXT:    global_store_b32 v[0:1], v0, off scope:SCOPE_SYS214; CHECK-NEXT:    s_wait_storecnt 0x0215; CHECK-NEXT:    scratch_load_b32 v0, off, off offset:4 th:TH_LOAD_LU ; 4-byte Folded Reload216; CHECK-NEXT:    s_wait_loadcnt 0x0217; CHECK-NEXT:    global_store_b32 v[0:1], v0, off scope:SCOPE_SYS218; CHECK-NEXT:    s_wait_storecnt 0x0219; CHECK-NEXT:    s_endpgm220.entry:221  %tid = load volatile i32, ptr addrspace(1) poison222  %p1 = getelementptr inbounds i32, ptr addrspace(1) %p, i32 %tid223  %p2 = getelementptr inbounds i32, ptr addrspace(1) %p1, i32 4224  %p3 = getelementptr inbounds i32, ptr addrspace(1) %p2, i32 8225  %p4 = getelementptr inbounds i32, ptr addrspace(1) %p3, i32 12226  %p5 = getelementptr inbounds i32, ptr addrspace(1) %p4, i32 16227  %p6 = getelementptr inbounds i32, ptr addrspace(1) %p5, i32 20228  %p7 = getelementptr inbounds i32, ptr addrspace(1) %p6, i32 24229  %p8 = getelementptr inbounds i32, ptr addrspace(1) %p7, i32 28230  %p9 = getelementptr inbounds i32, ptr addrspace(1) %p8, i32 32231  %p10 = getelementptr inbounds i32, ptr addrspace(1) %p9, i32 36232  %v7 = load volatile i32, ptr addrspace(1) %p7233  %v8 = load volatile i32, ptr addrspace(1) %p8234  %v9 = load volatile i32, ptr addrspace(1) %p9235  %v10 = load volatile i32, ptr addrspace(1) %p10236  %cmp = icmp ne i32 %tmp, 0237  br i1 %cmp, label %.true, label %.false238 239.true:240  %v1_t = load volatile i32, ptr addrspace(1) %p1241  %v2_t = load volatile i32, ptr addrspace(1) %p2242  %v3_t = load volatile i32, ptr addrspace(1) %p3243  %v4_t = load volatile i32, ptr addrspace(1) %p4244  %v5_t = load volatile i32, ptr addrspace(1) %p5245  %v6_t = load volatile i32, ptr addrspace(1) %p6246  call void asm sideeffect "", "~{v[0:9]}" ()247  store volatile i32 %v1_t, ptr addrspace(1) poison248  store volatile i32 %v2_t, ptr addrspace(1) poison249  store volatile i32 %v3_t, ptr addrspace(1) poison250  store volatile i32 %v4_t, ptr addrspace(1) poison251  store volatile i32 %v5_t, ptr addrspace(1) poison252  store volatile i32 %v6_t, ptr addrspace(1) poison253  store volatile i32 %v7, ptr addrspace(1) poison254  store volatile i32 %v8, ptr addrspace(1) poison255 256  br label %.exit257 258.false:259  %v1_f = load volatile i32, ptr addrspace(1) %p1260  %v2_f = load volatile i32, ptr addrspace(1) %p2261  %v3_f = load volatile i32, ptr addrspace(1) %p3262  %v4_f = load volatile i32, ptr addrspace(1) %p4263  %v5_f = load volatile i32, ptr addrspace(1) %p5264  %v6_f = load volatile i32, ptr addrspace(1) %p6265  call void asm sideeffect "", "~{v[0:9]}" ()266  store volatile i32 %v1_f, ptr addrspace(1) poison267  store volatile i32 %v2_f, ptr addrspace(1) poison268  store volatile i32 %v3_f, ptr addrspace(1) poison269  store volatile i32 %v4_f, ptr addrspace(1) poison270  store volatile i32 %v5_f, ptr addrspace(1) poison271  store volatile i32 %v6_f, ptr addrspace(1) poison272  store volatile i32 %v7, ptr addrspace(1) poison273  store volatile i32 %v8, ptr addrspace(1) poison274 275  br label %.exit276 277.exit:278  store volatile i32 %v9, ptr addrspace(1) poison279  store volatile i32 %v10, ptr addrspace(1) poison280  ret void281}282