501 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc %s -o - -mtriple=amdgcn -mcpu=gfx900 | FileCheck --check-prefix=NOHSA-TRAP-GFX900 %s3; RUN: llc %s -o - -mtriple=amdgcn-amd-amdhsa -mcpu=gfx803 | FileCheck --check-prefix=HSA-TRAP-GFX803 %s4; RUN: llc %s -o - -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 | FileCheck --check-prefix=HSA-TRAP-GFX900 %s5; RUN: llc %s -o - -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -mattr=-trap-handler | FileCheck --check-prefix=HSA-NOTRAP-GFX900 %s6; RUN: llc %s -o - -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 | FileCheck --check-prefix=HSA-TRAP-GFX1100 %s7; RUN: llc %s -o - -O0 -mtriple=amdgcn-amd-amdhsa -mcpu=gfx1100 | FileCheck --check-prefix=HSA-TRAP-GFX1100-O0 %s8 9declare void @llvm.trap() #010declare void @llvm.debugtrap() #111 12define amdgpu_kernel void @trap(ptr addrspace(1) nocapture readonly %arg0) {13; NOHSA-TRAP-GFX900-LABEL: trap:14; NOHSA-TRAP-GFX900: ; %bb.0:15; NOHSA-TRAP-GFX900-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x2416; NOHSA-TRAP-GFX900-NEXT: v_mov_b32_e32 v0, 017; NOHSA-TRAP-GFX900-NEXT: v_mov_b32_e32 v1, 118; NOHSA-TRAP-GFX900-NEXT: s_waitcnt lgkmcnt(0)19; NOHSA-TRAP-GFX900-NEXT: global_store_dword v0, v1, s[0:1]20; NOHSA-TRAP-GFX900-NEXT: s_waitcnt vmcnt(0)21; NOHSA-TRAP-GFX900-NEXT: s_endpgm22;23; HSA-TRAP-GFX803-LABEL: trap:24; HSA-TRAP-GFX803: ; %bb.0:25; HSA-TRAP-GFX803-NEXT: s_load_dwordx2 s[2:3], s[8:9], 0x026; HSA-TRAP-GFX803-NEXT: s_add_i32 s12, s12, s1727; HSA-TRAP-GFX803-NEXT: s_mov_b32 flat_scratch_lo, s1328; HSA-TRAP-GFX803-NEXT: s_lshr_b32 flat_scratch_hi, s12, 829; HSA-TRAP-GFX803-NEXT: v_mov_b32_e32 v2, 130; HSA-TRAP-GFX803-NEXT: s_waitcnt lgkmcnt(0)31; HSA-TRAP-GFX803-NEXT: v_mov_b32_e32 v0, s232; HSA-TRAP-GFX803-NEXT: v_mov_b32_e32 v1, s333; HSA-TRAP-GFX803-NEXT: s_mov_b64 s[0:1], s[6:7]34; HSA-TRAP-GFX803-NEXT: flat_store_dword v[0:1], v235; HSA-TRAP-GFX803-NEXT: s_waitcnt vmcnt(0)36; HSA-TRAP-GFX803-NEXT: s_trap 237;38; HSA-TRAP-GFX900-LABEL: trap:39; HSA-TRAP-GFX900: ; %bb.0:40; HSA-TRAP-GFX900-NEXT: s_load_dwordx2 s[0:1], s[8:9], 0x041; HSA-TRAP-GFX900-NEXT: v_mov_b32_e32 v0, 042; HSA-TRAP-GFX900-NEXT: v_mov_b32_e32 v1, 143; HSA-TRAP-GFX900-NEXT: s_waitcnt lgkmcnt(0)44; HSA-TRAP-GFX900-NEXT: global_store_dword v0, v1, s[0:1]45; HSA-TRAP-GFX900-NEXT: s_waitcnt vmcnt(0)46; HSA-TRAP-GFX900-NEXT: s_trap 247;48; HSA-NOTRAP-GFX900-LABEL: trap:49; HSA-NOTRAP-GFX900: ; %bb.0:50; HSA-NOTRAP-GFX900-NEXT: s_load_dwordx2 s[0:1], s[8:9], 0x051; HSA-NOTRAP-GFX900-NEXT: v_mov_b32_e32 v0, 052; HSA-NOTRAP-GFX900-NEXT: v_mov_b32_e32 v1, 153; HSA-NOTRAP-GFX900-NEXT: s_waitcnt lgkmcnt(0)54; HSA-NOTRAP-GFX900-NEXT: global_store_dword v0, v1, s[0:1]55; HSA-NOTRAP-GFX900-NEXT: s_waitcnt vmcnt(0)56; HSA-NOTRAP-GFX900-NEXT: s_endpgm57;58; HSA-TRAP-GFX1100-LABEL: trap:59; HSA-TRAP-GFX1100: ; %bb.0:60; HSA-TRAP-GFX1100-NEXT: s_load_b64 s[0:1], s[4:5], 0x061; HSA-TRAP-GFX1100-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, 162; HSA-TRAP-GFX1100-NEXT: s_mov_b32 ttmp2, m063; HSA-TRAP-GFX1100-NEXT: s_waitcnt lgkmcnt(0)64; HSA-TRAP-GFX1100-NEXT: global_store_b32 v0, v1, s[0:1] dlc65; HSA-TRAP-GFX1100-NEXT: s_waitcnt_vscnt null, 0x066; HSA-TRAP-GFX1100-NEXT: s_trap 267; HSA-TRAP-GFX1100-NEXT: s_sendmsg_rtn_b32 s0, sendmsg(MSG_RTN_GET_DOORBELL)68; HSA-TRAP-GFX1100-NEXT: s_waitcnt lgkmcnt(0)69; HSA-TRAP-GFX1100-NEXT: s_and_b32 s0, s0, 0x3ff70; HSA-TRAP-GFX1100-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)71; HSA-TRAP-GFX1100-NEXT: s_bitset1_b32 s0, 1072; HSA-TRAP-GFX1100-NEXT: s_mov_b32 m0, s073; HSA-TRAP-GFX1100-NEXT: s_sendmsg sendmsg(MSG_INTERRUPT)74; HSA-TRAP-GFX1100-NEXT: s_mov_b32 m0, ttmp275; HSA-TRAP-GFX1100-NEXT: .LBB0_1: ; =>This Inner Loop Header: Depth=176; HSA-TRAP-GFX1100-NEXT: s_sethalt 577; HSA-TRAP-GFX1100-NEXT: s_branch .LBB0_178;79; HSA-TRAP-GFX1100-O0-LABEL: trap:80; HSA-TRAP-GFX1100-O0: ; %bb.0:81; HSA-TRAP-GFX1100-O0-NEXT: s_load_b64 s[0:1], s[4:5], 0x082; HSA-TRAP-GFX1100-O0-NEXT: v_mov_b32_e32 v0, 083; HSA-TRAP-GFX1100-O0-NEXT: v_mov_b32_e32 v1, 184; HSA-TRAP-GFX1100-O0-NEXT: s_waitcnt lgkmcnt(0)85; HSA-TRAP-GFX1100-O0-NEXT: global_store_b32 v0, v1, s[0:1] dlc86; HSA-TRAP-GFX1100-O0-NEXT: s_waitcnt_vscnt null, 0x087; HSA-TRAP-GFX1100-O0-NEXT: s_trap 288; HSA-TRAP-GFX1100-O0-NEXT: s_sendmsg_rtn_b32 s0, sendmsg(MSG_RTN_GET_DOORBELL)89; HSA-TRAP-GFX1100-O0-NEXT: s_mov_b32 ttmp2, m090; HSA-TRAP-GFX1100-O0-NEXT: s_waitcnt lgkmcnt(0)91; HSA-TRAP-GFX1100-O0-NEXT: s_and_b32 s0, s0, 0x3ff92; HSA-TRAP-GFX1100-O0-NEXT: s_or_b32 s0, s0, 0x40093; HSA-TRAP-GFX1100-O0-NEXT: s_mov_b32 m0, s094; HSA-TRAP-GFX1100-O0-NEXT: s_sendmsg sendmsg(MSG_INTERRUPT)95; HSA-TRAP-GFX1100-O0-NEXT: s_mov_b32 m0, ttmp296; HSA-TRAP-GFX1100-O0-NEXT: .LBB0_1: ; =>This Inner Loop Header: Depth=197; HSA-TRAP-GFX1100-O0-NEXT: s_sethalt 598; HSA-TRAP-GFX1100-O0-NEXT: s_branch .LBB0_199 store volatile i32 1, ptr addrspace(1) %arg0100 call void @llvm.trap()101 unreachable102 store volatile i32 2, ptr addrspace(1) %arg0103 ret void104}105 106define amdgpu_kernel void @non_entry_trap(ptr addrspace(1) nocapture readonly %arg0) local_unnamed_addr {107; NOHSA-TRAP-GFX900-LABEL: non_entry_trap:108; NOHSA-TRAP-GFX900: ; %bb.0: ; %entry109; NOHSA-TRAP-GFX900-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24110; NOHSA-TRAP-GFX900-NEXT: v_mov_b32_e32 v0, 0111; NOHSA-TRAP-GFX900-NEXT: s_waitcnt lgkmcnt(0)112; NOHSA-TRAP-GFX900-NEXT: global_load_dword v1, v0, s[0:1] glc113; NOHSA-TRAP-GFX900-NEXT: s_waitcnt vmcnt(0)114; NOHSA-TRAP-GFX900-NEXT: v_cmp_eq_u32_e32 vcc, -1, v1115; NOHSA-TRAP-GFX900-NEXT: s_cbranch_vccz .LBB1_2116; NOHSA-TRAP-GFX900-NEXT: ; %bb.1: ; %ret117; NOHSA-TRAP-GFX900-NEXT: v_mov_b32_e32 v1, 3118; NOHSA-TRAP-GFX900-NEXT: global_store_dword v0, v1, s[0:1]119; NOHSA-TRAP-GFX900-NEXT: s_waitcnt vmcnt(0)120; NOHSA-TRAP-GFX900-NEXT: s_endpgm121; NOHSA-TRAP-GFX900-NEXT: .LBB1_2: ; %trap122; NOHSA-TRAP-GFX900-NEXT: s_endpgm123;124; HSA-TRAP-GFX803-LABEL: non_entry_trap:125; HSA-TRAP-GFX803: ; %bb.0: ; %entry126; HSA-TRAP-GFX803-NEXT: s_load_dwordx2 s[0:1], s[8:9], 0x0127; HSA-TRAP-GFX803-NEXT: s_add_i32 s12, s12, s17128; HSA-TRAP-GFX803-NEXT: s_mov_b32 flat_scratch_lo, s13129; HSA-TRAP-GFX803-NEXT: s_lshr_b32 flat_scratch_hi, s12, 8130; HSA-TRAP-GFX803-NEXT: s_waitcnt lgkmcnt(0)131; HSA-TRAP-GFX803-NEXT: v_mov_b32_e32 v0, s0132; HSA-TRAP-GFX803-NEXT: v_mov_b32_e32 v1, s1133; HSA-TRAP-GFX803-NEXT: flat_load_dword v0, v[0:1] glc134; HSA-TRAP-GFX803-NEXT: s_waitcnt vmcnt(0)135; HSA-TRAP-GFX803-NEXT: v_cmp_eq_u32_e32 vcc, -1, v0136; HSA-TRAP-GFX803-NEXT: s_cbranch_vccz .LBB1_2137; HSA-TRAP-GFX803-NEXT: ; %bb.1: ; %ret138; HSA-TRAP-GFX803-NEXT: v_mov_b32_e32 v0, s0139; HSA-TRAP-GFX803-NEXT: v_mov_b32_e32 v2, 3140; HSA-TRAP-GFX803-NEXT: v_mov_b32_e32 v1, s1141; HSA-TRAP-GFX803-NEXT: flat_store_dword v[0:1], v2142; HSA-TRAP-GFX803-NEXT: s_waitcnt vmcnt(0)143; HSA-TRAP-GFX803-NEXT: s_endpgm144; HSA-TRAP-GFX803-NEXT: .LBB1_2: ; %trap145; HSA-TRAP-GFX803-NEXT: s_mov_b64 s[0:1], s[6:7]146; HSA-TRAP-GFX803-NEXT: s_trap 2147;148; HSA-TRAP-GFX900-LABEL: non_entry_trap:149; HSA-TRAP-GFX900: ; %bb.0: ; %entry150; HSA-TRAP-GFX900-NEXT: s_load_dwordx2 s[0:1], s[8:9], 0x0151; HSA-TRAP-GFX900-NEXT: v_mov_b32_e32 v0, 0152; HSA-TRAP-GFX900-NEXT: s_waitcnt lgkmcnt(0)153; HSA-TRAP-GFX900-NEXT: global_load_dword v1, v0, s[0:1] glc154; HSA-TRAP-GFX900-NEXT: s_waitcnt vmcnt(0)155; HSA-TRAP-GFX900-NEXT: v_cmp_eq_u32_e32 vcc, -1, v1156; HSA-TRAP-GFX900-NEXT: s_cbranch_vccz .LBB1_2157; HSA-TRAP-GFX900-NEXT: ; %bb.1: ; %ret158; HSA-TRAP-GFX900-NEXT: v_mov_b32_e32 v1, 3159; HSA-TRAP-GFX900-NEXT: global_store_dword v0, v1, s[0:1]160; HSA-TRAP-GFX900-NEXT: s_waitcnt vmcnt(0)161; HSA-TRAP-GFX900-NEXT: s_endpgm162; HSA-TRAP-GFX900-NEXT: .LBB1_2: ; %trap163; HSA-TRAP-GFX900-NEXT: s_trap 2164;165; HSA-NOTRAP-GFX900-LABEL: non_entry_trap:166; HSA-NOTRAP-GFX900: ; %bb.0: ; %entry167; HSA-NOTRAP-GFX900-NEXT: s_load_dwordx2 s[0:1], s[8:9], 0x0168; HSA-NOTRAP-GFX900-NEXT: v_mov_b32_e32 v0, 0169; HSA-NOTRAP-GFX900-NEXT: s_waitcnt lgkmcnt(0)170; HSA-NOTRAP-GFX900-NEXT: global_load_dword v1, v0, s[0:1] glc171; HSA-NOTRAP-GFX900-NEXT: s_waitcnt vmcnt(0)172; HSA-NOTRAP-GFX900-NEXT: v_cmp_eq_u32_e32 vcc, -1, v1173; HSA-NOTRAP-GFX900-NEXT: s_cbranch_vccz .LBB1_2174; HSA-NOTRAP-GFX900-NEXT: ; %bb.1: ; %ret175; HSA-NOTRAP-GFX900-NEXT: v_mov_b32_e32 v1, 3176; HSA-NOTRAP-GFX900-NEXT: global_store_dword v0, v1, s[0:1]177; HSA-NOTRAP-GFX900-NEXT: s_waitcnt vmcnt(0)178; HSA-NOTRAP-GFX900-NEXT: s_endpgm179; HSA-NOTRAP-GFX900-NEXT: .LBB1_2: ; %trap180; HSA-NOTRAP-GFX900-NEXT: s_endpgm181;182; HSA-TRAP-GFX1100-LABEL: non_entry_trap:183; HSA-TRAP-GFX1100: ; %bb.0: ; %entry184; HSA-TRAP-GFX1100-NEXT: s_load_b64 s[0:1], s[4:5], 0x0185; HSA-TRAP-GFX1100-NEXT: v_mov_b32_e32 v0, 0186; HSA-TRAP-GFX1100-NEXT: s_waitcnt lgkmcnt(0)187; HSA-TRAP-GFX1100-NEXT: global_load_b32 v1, v0, s[0:1] glc dlc188; HSA-TRAP-GFX1100-NEXT: s_waitcnt vmcnt(0)189; HSA-TRAP-GFX1100-NEXT: v_cmp_eq_u32_e32 vcc_lo, -1, v1190; HSA-TRAP-GFX1100-NEXT: s_cbranch_vccz .LBB1_2191; HSA-TRAP-GFX1100-NEXT: ; %bb.1: ; %ret192; HSA-TRAP-GFX1100-NEXT: v_mov_b32_e32 v1, 3193; HSA-TRAP-GFX1100-NEXT: global_store_b32 v0, v1, s[0:1] dlc194; HSA-TRAP-GFX1100-NEXT: s_waitcnt_vscnt null, 0x0195; HSA-TRAP-GFX1100-NEXT: s_endpgm196; HSA-TRAP-GFX1100-NEXT: .LBB1_2: ; %trap197; HSA-TRAP-GFX1100-NEXT: s_trap 2198; HSA-TRAP-GFX1100-NEXT: s_sendmsg_rtn_b32 s0, sendmsg(MSG_RTN_GET_DOORBELL)199; HSA-TRAP-GFX1100-NEXT: s_mov_b32 ttmp2, m0200; HSA-TRAP-GFX1100-NEXT: s_waitcnt lgkmcnt(0)201; HSA-TRAP-GFX1100-NEXT: s_and_b32 s0, s0, 0x3ff202; HSA-TRAP-GFX1100-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)203; HSA-TRAP-GFX1100-NEXT: s_bitset1_b32 s0, 10204; HSA-TRAP-GFX1100-NEXT: s_mov_b32 m0, s0205; HSA-TRAP-GFX1100-NEXT: s_sendmsg sendmsg(MSG_INTERRUPT)206; HSA-TRAP-GFX1100-NEXT: s_mov_b32 m0, ttmp2207; HSA-TRAP-GFX1100-NEXT: .LBB1_3: ; =>This Inner Loop Header: Depth=1208; HSA-TRAP-GFX1100-NEXT: s_sethalt 5209; HSA-TRAP-GFX1100-NEXT: s_branch .LBB1_3210;211; HSA-TRAP-GFX1100-O0-LABEL: non_entry_trap:212; HSA-TRAP-GFX1100-O0: ; %bb.0: ; %entry213; HSA-TRAP-GFX1100-O0-NEXT: s_load_b64 s[0:1], s[4:5], 0x0214; HSA-TRAP-GFX1100-O0-NEXT: s_waitcnt lgkmcnt(0)215; HSA-TRAP-GFX1100-O0-NEXT: s_mov_b64 s[2:3], s[0:1]216; HSA-TRAP-GFX1100-O0-NEXT: ; implicit-def: $vgpr2 : SGPR spill to VGPR lane217; HSA-TRAP-GFX1100-O0-NEXT: v_writelane_b32 v2, s2, 0218; HSA-TRAP-GFX1100-O0-NEXT: v_writelane_b32 v2, s3, 1219; HSA-TRAP-GFX1100-O0-NEXT: s_or_saveexec_b32 s6, -1220; HSA-TRAP-GFX1100-O0-NEXT: scratch_store_b32 off, v2, off ; 4-byte Folded Spill221; HSA-TRAP-GFX1100-O0-NEXT: s_mov_b32 exec_lo, s6222; HSA-TRAP-GFX1100-O0-NEXT: v_mov_b32_e32 v0, 0223; HSA-TRAP-GFX1100-O0-NEXT: global_load_b32 v0, v0, s[0:1] glc dlc224; HSA-TRAP-GFX1100-O0-NEXT: s_waitcnt vmcnt(0)225; HSA-TRAP-GFX1100-O0-NEXT: s_mov_b32 s0, -1226; HSA-TRAP-GFX1100-O0-NEXT: v_cmp_eq_u32_e64 s0, v0, s0227; HSA-TRAP-GFX1100-O0-NEXT: s_and_b32 vcc_lo, exec_lo, s0228; HSA-TRAP-GFX1100-O0-NEXT: s_cbranch_vccnz .LBB1_2229; HSA-TRAP-GFX1100-O0-NEXT: ; %bb.1: ; %trap230; HSA-TRAP-GFX1100-O0-NEXT: s_trap 2231; HSA-TRAP-GFX1100-O0-NEXT: s_sendmsg_rtn_b32 s0, sendmsg(MSG_RTN_GET_DOORBELL)232; HSA-TRAP-GFX1100-O0-NEXT: s_mov_b32 ttmp2, m0233; HSA-TRAP-GFX1100-O0-NEXT: s_waitcnt lgkmcnt(0)234; HSA-TRAP-GFX1100-O0-NEXT: s_and_b32 s0, s0, 0x3ff235; HSA-TRAP-GFX1100-O0-NEXT: s_or_b32 s0, s0, 0x400236; HSA-TRAP-GFX1100-O0-NEXT: s_mov_b32 m0, s0237; HSA-TRAP-GFX1100-O0-NEXT: s_sendmsg sendmsg(MSG_INTERRUPT)238; HSA-TRAP-GFX1100-O0-NEXT: s_mov_b32 m0, ttmp2239; HSA-TRAP-GFX1100-O0-NEXT: s_branch .LBB1_3240; HSA-TRAP-GFX1100-O0-NEXT: .LBB1_2: ; %ret241; HSA-TRAP-GFX1100-O0-NEXT: s_or_saveexec_b32 s6, -1242; HSA-TRAP-GFX1100-O0-NEXT: scratch_load_b32 v2, off, off ; 4-byte Folded Reload243; HSA-TRAP-GFX1100-O0-NEXT: s_mov_b32 exec_lo, s6244; HSA-TRAP-GFX1100-O0-NEXT: s_waitcnt vmcnt(0)245; HSA-TRAP-GFX1100-O0-NEXT: v_readlane_b32 s0, v2, 0246; HSA-TRAP-GFX1100-O0-NEXT: v_readlane_b32 s1, v2, 1247; HSA-TRAP-GFX1100-O0-NEXT: v_mov_b32_e32 v0, 0248; HSA-TRAP-GFX1100-O0-NEXT: v_mov_b32_e32 v1, 3249; HSA-TRAP-GFX1100-O0-NEXT: global_store_b32 v0, v1, s[0:1] dlc250; HSA-TRAP-GFX1100-O0-NEXT: s_waitcnt_vscnt null, 0x0251; HSA-TRAP-GFX1100-O0-NEXT: s_endpgm252; HSA-TRAP-GFX1100-O0-NEXT: .LBB1_3: ; =>This Inner Loop Header: Depth=1253; HSA-TRAP-GFX1100-O0-NEXT: s_sethalt 5254; HSA-TRAP-GFX1100-O0-NEXT: s_branch .LBB1_3255entry:256 %tmp29 = load volatile i32, ptr addrspace(1) %arg0257 %cmp = icmp eq i32 %tmp29, -1258 br i1 %cmp, label %ret, label %trap259 260trap:261 call void @llvm.trap()262 unreachable263 264ret:265 store volatile i32 3, ptr addrspace(1) %arg0266 ret void267}268 269define amdgpu_kernel void @trap_with_use_after(ptr addrspace(1) %arg0, ptr addrspace(1) %arg1) {270; NOHSA-TRAP-GFX900-LABEL: trap_with_use_after:271; NOHSA-TRAP-GFX900: ; %bb.0:272; NOHSA-TRAP-GFX900-NEXT: s_load_dwordx4 s[0:3], s[4:5], 0x24273; NOHSA-TRAP-GFX900-NEXT: v_mov_b32_e32 v0, 0274; NOHSA-TRAP-GFX900-NEXT: s_waitcnt lgkmcnt(0)275; NOHSA-TRAP-GFX900-NEXT: global_load_dword v1, v0, s[0:1] glc276; NOHSA-TRAP-GFX900-NEXT: s_waitcnt vmcnt(0)277; NOHSA-TRAP-GFX900-NEXT: s_cbranch_execnz .LBB2_2278; NOHSA-TRAP-GFX900-NEXT: ; %bb.1:279; NOHSA-TRAP-GFX900-NEXT: global_store_dword v0, v1, s[2:3]280; NOHSA-TRAP-GFX900-NEXT: s_waitcnt vmcnt(0)281; NOHSA-TRAP-GFX900-NEXT: .LBB2_2:282; NOHSA-TRAP-GFX900-NEXT: s_endpgm283;284; HSA-TRAP-GFX803-LABEL: trap_with_use_after:285; HSA-TRAP-GFX803: ; %bb.0:286; HSA-TRAP-GFX803-NEXT: s_mov_b64 s[0:1], s[6:7]287; HSA-TRAP-GFX803-NEXT: s_load_dwordx4 s[4:7], s[8:9], 0x0288; HSA-TRAP-GFX803-NEXT: s_add_i32 s12, s12, s17289; HSA-TRAP-GFX803-NEXT: s_mov_b32 flat_scratch_lo, s13290; HSA-TRAP-GFX803-NEXT: s_lshr_b32 flat_scratch_hi, s12, 8291; HSA-TRAP-GFX803-NEXT: s_waitcnt lgkmcnt(0)292; HSA-TRAP-GFX803-NEXT: v_mov_b32_e32 v0, s4293; HSA-TRAP-GFX803-NEXT: v_mov_b32_e32 v1, s5294; HSA-TRAP-GFX803-NEXT: flat_load_dword v2, v[0:1] glc295; HSA-TRAP-GFX803-NEXT: s_waitcnt vmcnt(0)296; HSA-TRAP-GFX803-NEXT: v_mov_b32_e32 v0, s6297; HSA-TRAP-GFX803-NEXT: v_mov_b32_e32 v1, s7298; HSA-TRAP-GFX803-NEXT: s_trap 2299; HSA-TRAP-GFX803-NEXT: flat_store_dword v[0:1], v2300; HSA-TRAP-GFX803-NEXT: s_waitcnt vmcnt(0)301; HSA-TRAP-GFX803-NEXT: s_endpgm302;303; HSA-TRAP-GFX900-LABEL: trap_with_use_after:304; HSA-TRAP-GFX900: ; %bb.0:305; HSA-TRAP-GFX900-NEXT: s_load_dwordx4 s[0:3], s[8:9], 0x0306; HSA-TRAP-GFX900-NEXT: v_mov_b32_e32 v0, 0307; HSA-TRAP-GFX900-NEXT: s_waitcnt lgkmcnt(0)308; HSA-TRAP-GFX900-NEXT: global_load_dword v1, v0, s[0:1] glc309; HSA-TRAP-GFX900-NEXT: s_waitcnt vmcnt(0)310; HSA-TRAP-GFX900-NEXT: s_trap 2311; HSA-TRAP-GFX900-NEXT: global_store_dword v0, v1, s[2:3]312; HSA-TRAP-GFX900-NEXT: s_waitcnt vmcnt(0)313; HSA-TRAP-GFX900-NEXT: s_endpgm314;315; HSA-NOTRAP-GFX900-LABEL: trap_with_use_after:316; HSA-NOTRAP-GFX900: ; %bb.0:317; HSA-NOTRAP-GFX900-NEXT: s_load_dwordx4 s[0:3], s[8:9], 0x0318; HSA-NOTRAP-GFX900-NEXT: v_mov_b32_e32 v0, 0319; HSA-NOTRAP-GFX900-NEXT: s_waitcnt lgkmcnt(0)320; HSA-NOTRAP-GFX900-NEXT: global_load_dword v1, v0, s[0:1] glc321; HSA-NOTRAP-GFX900-NEXT: s_waitcnt vmcnt(0)322; HSA-NOTRAP-GFX900-NEXT: s_cbranch_execnz .LBB2_2323; HSA-NOTRAP-GFX900-NEXT: ; %bb.1:324; HSA-NOTRAP-GFX900-NEXT: global_store_dword v0, v1, s[2:3]325; HSA-NOTRAP-GFX900-NEXT: s_waitcnt vmcnt(0)326; HSA-NOTRAP-GFX900-NEXT: .LBB2_2:327; HSA-NOTRAP-GFX900-NEXT: s_endpgm328;329; HSA-TRAP-GFX1100-LABEL: trap_with_use_after:330; HSA-TRAP-GFX1100: ; %bb.0:331; HSA-TRAP-GFX1100-NEXT: s_load_b128 s[0:3], s[4:5], 0x0332; HSA-TRAP-GFX1100-NEXT: v_mov_b32_e32 v0, 0333; HSA-TRAP-GFX1100-NEXT: s_waitcnt lgkmcnt(0)334; HSA-TRAP-GFX1100-NEXT: global_load_b32 v1, v0, s[0:1] glc dlc335; HSA-TRAP-GFX1100-NEXT: s_waitcnt vmcnt(0)336; HSA-TRAP-GFX1100-NEXT: s_cbranch_execnz .LBB2_2337; HSA-TRAP-GFX1100-NEXT: ; %bb.1:338; HSA-TRAP-GFX1100-NEXT: global_store_b32 v0, v1, s[2:3] dlc339; HSA-TRAP-GFX1100-NEXT: s_waitcnt_vscnt null, 0x0340; HSA-TRAP-GFX1100-NEXT: s_endpgm341; HSA-TRAP-GFX1100-NEXT: .LBB2_2:342; HSA-TRAP-GFX1100-NEXT: s_trap 2343; HSA-TRAP-GFX1100-NEXT: s_sendmsg_rtn_b32 s0, sendmsg(MSG_RTN_GET_DOORBELL)344; HSA-TRAP-GFX1100-NEXT: s_mov_b32 ttmp2, m0345; HSA-TRAP-GFX1100-NEXT: s_waitcnt lgkmcnt(0)346; HSA-TRAP-GFX1100-NEXT: s_and_b32 s0, s0, 0x3ff347; HSA-TRAP-GFX1100-NEXT: s_delay_alu instid0(SALU_CYCLE_1) | instskip(NEXT) | instid1(SALU_CYCLE_1)348; HSA-TRAP-GFX1100-NEXT: s_bitset1_b32 s0, 10349; HSA-TRAP-GFX1100-NEXT: s_mov_b32 m0, s0350; HSA-TRAP-GFX1100-NEXT: s_sendmsg sendmsg(MSG_INTERRUPT)351; HSA-TRAP-GFX1100-NEXT: s_mov_b32 m0, ttmp2352; HSA-TRAP-GFX1100-NEXT: .LBB2_3: ; =>This Inner Loop Header: Depth=1353; HSA-TRAP-GFX1100-NEXT: s_sethalt 5354; HSA-TRAP-GFX1100-NEXT: s_branch .LBB2_3355;356; HSA-TRAP-GFX1100-O0-LABEL: trap_with_use_after:357; HSA-TRAP-GFX1100-O0: ; %bb.0:358; HSA-TRAP-GFX1100-O0-NEXT: v_mov_b32_e32 v0, 0359; HSA-TRAP-GFX1100-O0-NEXT: scratch_store_b32 off, v0, off offset:8 ; 4-byte Folded Spill360; HSA-TRAP-GFX1100-O0-NEXT: s_load_b64 s[0:1], s[4:5], 0x0361; HSA-TRAP-GFX1100-O0-NEXT: s_load_b64 s[2:3], s[4:5], 0x8362; HSA-TRAP-GFX1100-O0-NEXT: ; implicit-def: $vgpr2 : SGPR spill to VGPR lane363; HSA-TRAP-GFX1100-O0-NEXT: s_waitcnt lgkmcnt(0)364; HSA-TRAP-GFX1100-O0-NEXT: v_writelane_b32 v2, s2, 0365; HSA-TRAP-GFX1100-O0-NEXT: v_writelane_b32 v2, s3, 1366; HSA-TRAP-GFX1100-O0-NEXT: s_or_saveexec_b32 s6, -1367; HSA-TRAP-GFX1100-O0-NEXT: scratch_store_b32 off, v2, off ; 4-byte Folded Spill368; HSA-TRAP-GFX1100-O0-NEXT: s_mov_b32 exec_lo, s6369; HSA-TRAP-GFX1100-O0-NEXT: global_load_b32 v0, v0, s[0:1] glc dlc370; HSA-TRAP-GFX1100-O0-NEXT: s_waitcnt vmcnt(0)371; HSA-TRAP-GFX1100-O0-NEXT: scratch_store_b32 off, v0, off offset:4 ; 4-byte Folded Spill372; HSA-TRAP-GFX1100-O0-NEXT: s_cbranch_execnz .LBB2_2373; HSA-TRAP-GFX1100-O0-NEXT: ; %bb.1:374; HSA-TRAP-GFX1100-O0-NEXT: s_or_saveexec_b32 s6, -1375; HSA-TRAP-GFX1100-O0-NEXT: scratch_load_b32 v2, off, off ; 4-byte Folded Reload376; HSA-TRAP-GFX1100-O0-NEXT: s_mov_b32 exec_lo, s6377; HSA-TRAP-GFX1100-O0-NEXT: s_waitcnt vmcnt(0)378; HSA-TRAP-GFX1100-O0-NEXT: v_readlane_b32 s0, v2, 0379; HSA-TRAP-GFX1100-O0-NEXT: v_readlane_b32 s1, v2, 1380; HSA-TRAP-GFX1100-O0-NEXT: scratch_load_b32 v0, off, off offset:8 ; 4-byte Folded Reload381; HSA-TRAP-GFX1100-O0-NEXT: scratch_load_b32 v1, off, off offset:4 ; 4-byte Folded Reload382; HSA-TRAP-GFX1100-O0-NEXT: s_waitcnt vmcnt(0)383; HSA-TRAP-GFX1100-O0-NEXT: global_store_b32 v0, v1, s[0:1] dlc384; HSA-TRAP-GFX1100-O0-NEXT: s_waitcnt_vscnt null, 0x0385; HSA-TRAP-GFX1100-O0-NEXT: s_endpgm386; HSA-TRAP-GFX1100-O0-NEXT: .LBB2_2:387; HSA-TRAP-GFX1100-O0-NEXT: s_trap 2388; HSA-TRAP-GFX1100-O0-NEXT: s_sendmsg_rtn_b32 s0, sendmsg(MSG_RTN_GET_DOORBELL)389; HSA-TRAP-GFX1100-O0-NEXT: s_mov_b32 ttmp2, m0390; HSA-TRAP-GFX1100-O0-NEXT: s_waitcnt lgkmcnt(0)391; HSA-TRAP-GFX1100-O0-NEXT: s_and_b32 s0, s0, 0x3ff392; HSA-TRAP-GFX1100-O0-NEXT: s_or_b32 s0, s0, 0x400393; HSA-TRAP-GFX1100-O0-NEXT: s_mov_b32 m0, s0394; HSA-TRAP-GFX1100-O0-NEXT: s_sendmsg sendmsg(MSG_INTERRUPT)395; HSA-TRAP-GFX1100-O0-NEXT: s_mov_b32 m0, ttmp2396; HSA-TRAP-GFX1100-O0-NEXT: .LBB2_3: ; =>This Inner Loop Header: Depth=1397; HSA-TRAP-GFX1100-O0-NEXT: s_sethalt 5398; HSA-TRAP-GFX1100-O0-NEXT: s_branch .LBB2_3399 %tmp = load volatile i32, ptr addrspace(1) %arg0400 call void @llvm.trap()401 store volatile i32 %tmp, ptr addrspace(1) %arg1402 ret void403}404 405define amdgpu_kernel void @debugtrap(ptr addrspace(1) nocapture readonly %arg0) {406; NOHSA-TRAP-GFX900-LABEL: debugtrap:407; NOHSA-TRAP-GFX900: ; %bb.0:408; NOHSA-TRAP-GFX900-NEXT: s_load_dwordx2 s[0:1], s[4:5], 0x24409; NOHSA-TRAP-GFX900-NEXT: v_mov_b32_e32 v0, 0410; NOHSA-TRAP-GFX900-NEXT: v_mov_b32_e32 v1, 1411; NOHSA-TRAP-GFX900-NEXT: v_mov_b32_e32 v2, 2412; NOHSA-TRAP-GFX900-NEXT: s_waitcnt lgkmcnt(0)413; NOHSA-TRAP-GFX900-NEXT: global_store_dword v0, v1, s[0:1]414; NOHSA-TRAP-GFX900-NEXT: s_waitcnt vmcnt(0)415; NOHSA-TRAP-GFX900-NEXT: global_store_dword v0, v2, s[0:1]416; NOHSA-TRAP-GFX900-NEXT: s_waitcnt vmcnt(0)417; NOHSA-TRAP-GFX900-NEXT: s_endpgm418;419; HSA-TRAP-GFX803-LABEL: debugtrap:420; HSA-TRAP-GFX803: ; %bb.0:421; HSA-TRAP-GFX803-NEXT: s_load_dwordx2 s[0:1], s[8:9], 0x0422; HSA-TRAP-GFX803-NEXT: s_add_i32 s12, s12, s17423; HSA-TRAP-GFX803-NEXT: s_mov_b32 flat_scratch_lo, s13424; HSA-TRAP-GFX803-NEXT: s_lshr_b32 flat_scratch_hi, s12, 8425; HSA-TRAP-GFX803-NEXT: v_mov_b32_e32 v2, 1426; HSA-TRAP-GFX803-NEXT: s_waitcnt lgkmcnt(0)427; HSA-TRAP-GFX803-NEXT: v_mov_b32_e32 v0, s0428; HSA-TRAP-GFX803-NEXT: v_mov_b32_e32 v3, 2429; HSA-TRAP-GFX803-NEXT: v_mov_b32_e32 v1, s1430; HSA-TRAP-GFX803-NEXT: flat_store_dword v[0:1], v2431; HSA-TRAP-GFX803-NEXT: s_waitcnt vmcnt(0)432; HSA-TRAP-GFX803-NEXT: s_trap 3433; HSA-TRAP-GFX803-NEXT: flat_store_dword v[0:1], v3434; HSA-TRAP-GFX803-NEXT: s_waitcnt vmcnt(0)435; HSA-TRAP-GFX803-NEXT: s_endpgm436;437; HSA-TRAP-GFX900-LABEL: debugtrap:438; HSA-TRAP-GFX900: ; %bb.0:439; HSA-TRAP-GFX900-NEXT: s_load_dwordx2 s[0:1], s[8:9], 0x0440; HSA-TRAP-GFX900-NEXT: v_mov_b32_e32 v0, 0441; HSA-TRAP-GFX900-NEXT: v_mov_b32_e32 v1, 1442; HSA-TRAP-GFX900-NEXT: v_mov_b32_e32 v2, 2443; HSA-TRAP-GFX900-NEXT: s_waitcnt lgkmcnt(0)444; HSA-TRAP-GFX900-NEXT: global_store_dword v0, v1, s[0:1]445; HSA-TRAP-GFX900-NEXT: s_waitcnt vmcnt(0)446; HSA-TRAP-GFX900-NEXT: s_trap 3447; HSA-TRAP-GFX900-NEXT: global_store_dword v0, v2, s[0:1]448; HSA-TRAP-GFX900-NEXT: s_waitcnt vmcnt(0)449; HSA-TRAP-GFX900-NEXT: s_endpgm450;451; HSA-NOTRAP-GFX900-LABEL: debugtrap:452; HSA-NOTRAP-GFX900: ; %bb.0:453; HSA-NOTRAP-GFX900-NEXT: s_load_dwordx2 s[0:1], s[8:9], 0x0454; HSA-NOTRAP-GFX900-NEXT: v_mov_b32_e32 v0, 0455; HSA-NOTRAP-GFX900-NEXT: v_mov_b32_e32 v1, 1456; HSA-NOTRAP-GFX900-NEXT: v_mov_b32_e32 v2, 2457; HSA-NOTRAP-GFX900-NEXT: s_waitcnt lgkmcnt(0)458; HSA-NOTRAP-GFX900-NEXT: global_store_dword v0, v1, s[0:1]459; HSA-NOTRAP-GFX900-NEXT: s_waitcnt vmcnt(0)460; HSA-NOTRAP-GFX900-NEXT: global_store_dword v0, v2, s[0:1]461; HSA-NOTRAP-GFX900-NEXT: s_waitcnt vmcnt(0)462; HSA-NOTRAP-GFX900-NEXT: s_endpgm463;464; HSA-TRAP-GFX1100-LABEL: debugtrap:465; HSA-TRAP-GFX1100: ; %bb.0:466; HSA-TRAP-GFX1100-NEXT: s_load_b64 s[0:1], s[4:5], 0x0467; HSA-TRAP-GFX1100-NEXT: v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, 1468; HSA-TRAP-GFX1100-NEXT: v_mov_b32_e32 v2, 2469; HSA-TRAP-GFX1100-NEXT: s_waitcnt lgkmcnt(0)470; HSA-TRAP-GFX1100-NEXT: global_store_b32 v0, v1, s[0:1] dlc471; HSA-TRAP-GFX1100-NEXT: s_waitcnt_vscnt null, 0x0472; HSA-TRAP-GFX1100-NEXT: s_trap 3473; HSA-TRAP-GFX1100-NEXT: global_store_b32 v0, v2, s[0:1] dlc474; HSA-TRAP-GFX1100-NEXT: s_waitcnt_vscnt null, 0x0475; HSA-TRAP-GFX1100-NEXT: s_endpgm476;477; HSA-TRAP-GFX1100-O0-LABEL: debugtrap:478; HSA-TRAP-GFX1100-O0: ; %bb.0:479; HSA-TRAP-GFX1100-O0-NEXT: s_load_b64 s[0:1], s[4:5], 0x0480; HSA-TRAP-GFX1100-O0-NEXT: v_mov_b32_e32 v0, 0481; HSA-TRAP-GFX1100-O0-NEXT: v_mov_b32_e32 v1, 1482; HSA-TRAP-GFX1100-O0-NEXT: s_waitcnt lgkmcnt(0)483; HSA-TRAP-GFX1100-O0-NEXT: global_store_b32 v0, v1, s[0:1] dlc484; HSA-TRAP-GFX1100-O0-NEXT: s_waitcnt_vscnt null, 0x0485; HSA-TRAP-GFX1100-O0-NEXT: s_trap 3486; HSA-TRAP-GFX1100-O0-NEXT: v_mov_b32_e32 v1, 2487; HSA-TRAP-GFX1100-O0-NEXT: global_store_b32 v0, v1, s[0:1] dlc488; HSA-TRAP-GFX1100-O0-NEXT: s_waitcnt_vscnt null, 0x0489; HSA-TRAP-GFX1100-O0-NEXT: s_endpgm490 store volatile i32 1, ptr addrspace(1) %arg0491 call void @llvm.debugtrap()492 store volatile i32 2, ptr addrspace(1) %arg0493 ret void494}495 496attributes #0 = { nounwind noreturn }497attributes #1 = { nounwind }498 499!llvm.module.flags = !{!0}500!0 = !{i32 1, !"amdhsa_code_object_version", i32 400}501