brintos

brintos / llvm-project-archived public Read only

0
0
Text · 75.3 KiB · 72672c8 Raw
1682 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 32; RUN: llc -O0 -mtriple=amdgcn- -mcpu=gfx900 -amdgpu-dpp-combine=false < %s | FileCheck -check-prefix=GFX9-O0 %s3; RUN: llc -mtriple=amdgcn- -mcpu=gfx900 -amdgpu-dpp-combine=false < %s | FileCheck -check-prefix=GFX9-O3 %s4 5; NOTE: llvm.amdgcn.wwm is deprecated, use llvm.amdgcn.strict.wwm instead.6 7define amdgpu_cs void @no_cfg(ptr addrspace(8) inreg %tmp14) {8; GFX9-O0-LABEL: no_cfg:9; GFX9-O0:       ; %bb.0:10; GFX9-O0-NEXT:    s_mov_b32 s6, s211; GFX9-O0-NEXT:    s_mov_b32 s4, s012; GFX9-O0-NEXT:    ; kill: def $sgpr6 killed $sgpr6 def $sgpr6_sgpr713; GFX9-O0-NEXT:    s_mov_b32 s7, s314; GFX9-O0-NEXT:    s_mov_b32 s8, s715; GFX9-O0-NEXT:    s_mov_b32 s9, s616; GFX9-O0-NEXT:    ; kill: def $sgpr4 killed $sgpr4 def $sgpr4_sgpr517; GFX9-O0-NEXT:    s_mov_b32 s5, s118; GFX9-O0-NEXT:    s_mov_b32 s10, s519; GFX9-O0-NEXT:    s_mov_b32 s0, s420; GFX9-O0-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr321; GFX9-O0-NEXT:    s_mov_b32 s1, s1022; GFX9-O0-NEXT:    s_mov_b32 s2, s923; GFX9-O0-NEXT:    s_mov_b32 s3, s824; GFX9-O0-NEXT:    s_mov_b32 s4, 025; GFX9-O0-NEXT:    buffer_load_dwordx2 v[5:6], off, s[0:3], s426; GFX9-O0-NEXT:    s_waitcnt vmcnt(0)27; GFX9-O0-NEXT:    v_mov_b32_e32 v4, v528; GFX9-O0-NEXT:    v_mov_b32_e32 v3, v629; GFX9-O0-NEXT:    ; implicit-def: $sgpr6_sgpr730; GFX9-O0-NEXT:    s_or_saveexec_b64 s[6:7], -131; GFX9-O0-NEXT:    v_mov_b32_e32 v0, s432; GFX9-O0-NEXT:    v_cndmask_b32_e64 v0, v0, v4, s[6:7]33; GFX9-O0-NEXT:    s_mov_b64 exec, s[6:7]34; GFX9-O0-NEXT:    ; implicit-def: $sgpr6_sgpr735; GFX9-O0-NEXT:    s_or_saveexec_b64 s[6:7], -136; GFX9-O0-NEXT:    v_mov_b32_e32 v1, s437; GFX9-O0-NEXT:    v_cndmask_b32_e64 v1, v1, v3, s[6:7]38; GFX9-O0-NEXT:    v_mov_b32_e32 v2, s439; GFX9-O0-NEXT:    s_nop 140; GFX9-O0-NEXT:    v_mov_b32_dpp v2, v0 row_bcast:31 row_mask:0xc bank_mask:0xf41; GFX9-O0-NEXT:    v_add_u32_e64 v0, v0, v242; GFX9-O0-NEXT:    s_mov_b64 exec, s[6:7]43; GFX9-O0-NEXT:    v_mov_b32_e32 v3, v044; GFX9-O0-NEXT:    s_or_saveexec_b64 s[6:7], -145; GFX9-O0-NEXT:    v_mov_b32_e32 v0, s446; GFX9-O0-NEXT:    s_nop 147; GFX9-O0-NEXT:    v_mov_b32_dpp v0, v1 row_bcast:31 row_mask:0xc bank_mask:0xf48; GFX9-O0-NEXT:    v_add_u32_e64 v0, v1, v049; GFX9-O0-NEXT:    s_mov_b64 exec, s[6:7]50; GFX9-O0-NEXT:    v_mov_b32_e32 v4, v051; GFX9-O0-NEXT:    v_cmp_eq_u32_e64 s[6:7], v3, v452; GFX9-O0-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s[6:7]53; GFX9-O0-NEXT:    s_mov_b32 s5, 154; GFX9-O0-NEXT:    v_lshlrev_b32_e64 v3, s5, v355; GFX9-O0-NEXT:    s_mov_b32 s5, 256; GFX9-O0-NEXT:    v_and_b32_e64 v3, v3, s557; GFX9-O0-NEXT:    buffer_store_dword v3, off, s[0:3], s4 offset:458; GFX9-O0-NEXT:    s_endpgm59;60; GFX9-O3-LABEL: no_cfg:61; GFX9-O3:       ; %bb.0:62; GFX9-O3-NEXT:    buffer_load_dwordx2 v[4:5], off, s[0:3], 063; GFX9-O3-NEXT:    s_or_saveexec_b64 s[4:5], -164; GFX9-O3-NEXT:    v_mov_b32_e32 v0, 065; GFX9-O3-NEXT:    v_mov_b32_e32 v1, 066; GFX9-O3-NEXT:    s_waitcnt vmcnt(0)67; GFX9-O3-NEXT:    v_cndmask_b32_e64 v2, 0, v4, s[4:5]68; GFX9-O3-NEXT:    v_cndmask_b32_e64 v3, 0, v5, s[4:5]69; GFX9-O3-NEXT:    s_nop 070; GFX9-O3-NEXT:    v_mov_b32_dpp v1, v2 row_bcast:31 row_mask:0xc bank_mask:0xf71; GFX9-O3-NEXT:    v_mov_b32_dpp v0, v3 row_bcast:31 row_mask:0xc bank_mask:0xf72; GFX9-O3-NEXT:    v_add_u32_e32 v1, v2, v173; GFX9-O3-NEXT:    v_add_u32_e32 v0, v3, v074; GFX9-O3-NEXT:    s_mov_b64 exec, s[4:5]75; GFX9-O3-NEXT:    v_mov_b32_e32 v4, v176; GFX9-O3-NEXT:    v_mov_b32_e32 v5, v077; GFX9-O3-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v578; GFX9-O3-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc79; GFX9-O3-NEXT:    v_lshlrev_b32_e32 v4, 1, v480; GFX9-O3-NEXT:    v_and_b32_e32 v4, 2, v481; GFX9-O3-NEXT:    buffer_store_dword v4, off, s[0:3], 0 offset:482; GFX9-O3-NEXT:    s_endpgm83  %tmp100 = call <2 x float> @llvm.amdgcn.raw.ptr.buffer.load.v2f32(ptr addrspace(8) %tmp14, i32 0, i32 0, i32 0)84  %tmp101 = bitcast <2 x float> %tmp100 to <2 x i32>85  %tmp102 = extractelement <2 x i32> %tmp101, i32 086  %tmp103 = extractelement <2 x i32> %tmp101, i32 187  %tmp105 = tail call i32 @llvm.amdgcn.set.inactive.i32(i32 %tmp102, i32 0)88  %tmp107 = tail call i32 @llvm.amdgcn.set.inactive.i32(i32 %tmp103, i32 0)89 90 91  %tmp120 = tail call i32 @llvm.amdgcn.update.dpp.i32(i32 0, i32 %tmp105, i32 323, i32 12, i32 15, i1 false)92  %tmp121 = add i32 %tmp105, %tmp12093  %tmp122 = tail call i32 @llvm.amdgcn.wwm.i32(i32 %tmp121)94 95  %tmp135 = tail call i32 @llvm.amdgcn.update.dpp.i32(i32 0, i32 %tmp107, i32 323, i32 12, i32 15, i1 false)96  %tmp136 = add i32 %tmp107, %tmp13597  %tmp137 = tail call i32 @llvm.amdgcn.wwm.i32(i32 %tmp136)98 99  %tmp138 = icmp eq i32 %tmp122, %tmp137100  %tmp139 = sext i1 %tmp138 to i32101  %tmp140 = shl nsw i32 %tmp139, 1102  %tmp141 = and i32 %tmp140, 2103  %tmp145 = bitcast i32 %tmp141 to float104  call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %tmp145, ptr addrspace(8) %tmp14, i32 4, i32 0, i32 0)105  ret void106}107 108define amdgpu_cs void @cfg(ptr addrspace(8) inreg %tmp14, i32 %arg) {109; GFX9-O0-LABEL: cfg:110; GFX9-O0:       ; %bb.0: ; %entry111; GFX9-O0-NEXT:    s_mov_b32 s16, SCRATCH_RSRC_DWORD0112; GFX9-O0-NEXT:    s_mov_b32 s17, SCRATCH_RSRC_DWORD1113; GFX9-O0-NEXT:    s_mov_b32 s18, -1114; GFX9-O0-NEXT:    s_mov_b32 s19, 0xe00000115; GFX9-O0-NEXT:    s_add_u32 s16, s16, s4116; GFX9-O0-NEXT:    s_addc_u32 s17, s17, 0117; GFX9-O0-NEXT:    ; implicit-def: $vgpr5 : SGPR spill to VGPR lane118; GFX9-O0-NEXT:    v_writelane_b32 v5, s3, 0119; GFX9-O0-NEXT:    s_mov_b32 s4, s1120; GFX9-O0-NEXT:    v_readlane_b32 s1, v5, 0121; GFX9-O0-NEXT:    ; kill: def $sgpr2 killed $sgpr2 def $sgpr2_sgpr3122; GFX9-O0-NEXT:    s_mov_b32 s3, s1123; GFX9-O0-NEXT:    s_mov_b32 s8, s3124; GFX9-O0-NEXT:    s_mov_b32 s9, s2125; GFX9-O0-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1126; GFX9-O0-NEXT:    s_mov_b32 s1, s4127; GFX9-O0-NEXT:    s_mov_b32 s10, s1128; GFX9-O0-NEXT:    s_mov_b32 s4, s0129; GFX9-O0-NEXT:    ; kill: def $sgpr4 killed $sgpr4 def $sgpr4_sgpr5_sgpr6_sgpr7130; GFX9-O0-NEXT:    s_mov_b32 s5, s10131; GFX9-O0-NEXT:    s_mov_b32 s6, s9132; GFX9-O0-NEXT:    s_mov_b32 s7, s8133; GFX9-O0-NEXT:    v_writelane_b32 v5, s2, 1134; GFX9-O0-NEXT:    v_writelane_b32 v5, s3, 2135; GFX9-O0-NEXT:    v_writelane_b32 v5, s0, 3136; GFX9-O0-NEXT:    v_writelane_b32 v5, s1, 4137; GFX9-O0-NEXT:    s_mov_b32 s0, 0138; GFX9-O0-NEXT:    s_nop 2139; GFX9-O0-NEXT:    buffer_load_dwordx2 v[3:4], off, s[4:7], s0140; GFX9-O0-NEXT:    s_waitcnt vmcnt(0)141; GFX9-O0-NEXT:    buffer_store_dword v3, off, s[16:19], 0 offset:12 ; 4-byte Folded Spill142; GFX9-O0-NEXT:    s_nop 0143; GFX9-O0-NEXT:    buffer_store_dword v4, off, s[16:19], 0 offset:16 ; 4-byte Folded Spill144; GFX9-O0-NEXT:    ; implicit-def: $sgpr2_sgpr3145; GFX9-O0-NEXT:    s_or_saveexec_b64 s[2:3], -1146; GFX9-O0-NEXT:    v_mov_b32_e32 v1, s0147; GFX9-O0-NEXT:    v_cndmask_b32_e64 v1, v1, v3, s[2:3]148; GFX9-O0-NEXT:    v_mov_b32_e32 v2, s0149; GFX9-O0-NEXT:    s_nop 1150; GFX9-O0-NEXT:    v_mov_b32_dpp v2, v1 row_bcast:31 row_mask:0xc bank_mask:0xf151; GFX9-O0-NEXT:    v_add_u32_e64 v1, v1, v2152; GFX9-O0-NEXT:    s_mov_b64 exec, s[2:3]153; GFX9-O0-NEXT:    v_mov_b32_e32 v3, v1154; GFX9-O0-NEXT:    buffer_store_dword v3, off, s[16:19], 0 offset:8 ; 4-byte Folded Spill155; GFX9-O0-NEXT:    v_cmp_eq_u32_e64 s[2:3], v0, s0156; GFX9-O0-NEXT:    v_mov_b32_e32 v0, s0157; GFX9-O0-NEXT:    buffer_store_dword v0, off, s[16:19], 0 offset:4 ; 4-byte Folded Spill158; GFX9-O0-NEXT:    s_mov_b64 s[0:1], exec159; GFX9-O0-NEXT:    v_writelane_b32 v5, s0, 5160; GFX9-O0-NEXT:    v_writelane_b32 v5, s1, 6161; GFX9-O0-NEXT:    s_or_saveexec_b64 s[12:13], -1162; GFX9-O0-NEXT:    buffer_store_dword v5, off, s[16:19], 0 ; 4-byte Folded Spill163; GFX9-O0-NEXT:    s_mov_b64 exec, s[12:13]164; GFX9-O0-NEXT:    s_and_b64 s[0:1], s[0:1], s[2:3]165; GFX9-O0-NEXT:    s_mov_b64 exec, s[0:1]166; GFX9-O0-NEXT:    s_cbranch_execz .LBB1_2167; GFX9-O0-NEXT:  ; %bb.1: ; %if168; GFX9-O0-NEXT:    buffer_load_dword v3, off, s[16:19], 0 offset:12 ; 4-byte Folded Reload169; GFX9-O0-NEXT:    buffer_load_dword v4, off, s[16:19], 0 offset:16 ; 4-byte Folded Reload170; GFX9-O0-NEXT:    s_waitcnt vmcnt(0)171; GFX9-O0-NEXT:    v_mov_b32_e32 v0, v4172; GFX9-O0-NEXT:    s_or_saveexec_b64 s[0:1], -1173; GFX9-O0-NEXT:    v_mov_b32_e32 v1, 0174; GFX9-O0-NEXT:    s_mov_b64 exec, s[0:1]175; GFX9-O0-NEXT:    ; implicit-def: $sgpr0_sgpr1176; GFX9-O0-NEXT:    s_or_saveexec_b64 s[0:1], -1177; GFX9-O0-NEXT:    v_cndmask_b32_e64 v2, v1, v0, s[0:1]178; GFX9-O0-NEXT:    s_nop 1179; GFX9-O0-NEXT:    v_mov_b32_dpp v1, v2 row_bcast:31 row_mask:0xc bank_mask:0xf180; GFX9-O0-NEXT:    v_add_u32_e64 v1, v2, v1181; GFX9-O0-NEXT:    s_mov_b64 exec, s[0:1]182; GFX9-O0-NEXT:    v_mov_b32_e32 v0, v1183; GFX9-O0-NEXT:    buffer_store_dword v0, off, s[16:19], 0 offset:4 ; 4-byte Folded Spill184; GFX9-O0-NEXT:  .LBB1_2: ; %merge185; GFX9-O0-NEXT:    s_or_saveexec_b64 s[12:13], -1186; GFX9-O0-NEXT:    buffer_load_dword v5, off, s[16:19], 0 ; 4-byte Folded Reload187; GFX9-O0-NEXT:    s_mov_b64 exec, s[12:13]188; GFX9-O0-NEXT:    s_waitcnt vmcnt(0)189; GFX9-O0-NEXT:    v_readlane_b32 s4, v5, 5190; GFX9-O0-NEXT:    v_readlane_b32 s5, v5, 6191; GFX9-O0-NEXT:    s_or_b64 exec, exec, s[4:5]192; GFX9-O0-NEXT:    v_readlane_b32 s2, v5, 1193; GFX9-O0-NEXT:    v_readlane_b32 s3, v5, 2194; GFX9-O0-NEXT:    v_readlane_b32 s0, v5, 3195; GFX9-O0-NEXT:    v_readlane_b32 s1, v5, 4196; GFX9-O0-NEXT:    buffer_load_dword v0, off, s[16:19], 0 offset:8 ; 4-byte Folded Reload197; GFX9-O0-NEXT:    buffer_load_dword v3, off, s[16:19], 0 offset:4 ; 4-byte Folded Reload198; GFX9-O0-NEXT:    s_waitcnt vmcnt(0)199; GFX9-O0-NEXT:    v_cmp_eq_u32_e64 s[4:5], v0, v3200; GFX9-O0-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]201; GFX9-O0-NEXT:    s_mov_b32 s4, 1202; GFX9-O0-NEXT:    v_lshlrev_b32_e64 v0, s4, v0203; GFX9-O0-NEXT:    s_mov_b32 s4, 2204; GFX9-O0-NEXT:    v_and_b32_e64 v0, v0, s4205; GFX9-O0-NEXT:    s_mov_b32 s6, s1206; GFX9-O0-NEXT:    ; kill: def $sgpr0 killed $sgpr0 killed $sgpr0_sgpr1207; GFX9-O0-NEXT:    s_mov_b32 s4, s3208; GFX9-O0-NEXT:    s_mov_b32 s5, s2209; GFX9-O0-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr3210; GFX9-O0-NEXT:    s_mov_b32 s1, s6211; GFX9-O0-NEXT:    s_mov_b32 s2, s5212; GFX9-O0-NEXT:    s_mov_b32 s3, s4213; GFX9-O0-NEXT:    s_mov_b32 s4, 0214; GFX9-O0-NEXT:    buffer_store_dword v0, off, s[0:3], s4 offset:4215; GFX9-O0-NEXT:    s_endpgm216;217; GFX9-O3-LABEL: cfg:218; GFX9-O3:       ; %bb.0: ; %entry219; GFX9-O3-NEXT:    buffer_load_dwordx2 v[3:4], off, s[0:3], 0220; GFX9-O3-NEXT:    v_mov_b32_e32 v5, 0221; GFX9-O3-NEXT:    s_or_saveexec_b64 s[4:5], -1222; GFX9-O3-NEXT:    v_mov_b32_e32 v1, 0223; GFX9-O3-NEXT:    s_waitcnt vmcnt(0)224; GFX9-O3-NEXT:    v_cndmask_b32_e64 v2, 0, v3, s[4:5]225; GFX9-O3-NEXT:    s_nop 1226; GFX9-O3-NEXT:    v_mov_b32_dpp v1, v2 row_bcast:31 row_mask:0xc bank_mask:0xf227; GFX9-O3-NEXT:    v_add_u32_e32 v1, v2, v1228; GFX9-O3-NEXT:    s_mov_b64 exec, s[4:5]229; GFX9-O3-NEXT:    v_mov_b32_e32 v3, v1230; GFX9-O3-NEXT:    v_cmp_eq_u32_e32 vcc, 0, v0231; GFX9-O3-NEXT:    s_and_saveexec_b64 s[4:5], vcc232; GFX9-O3-NEXT:  ; %bb.1: ; %if233; GFX9-O3-NEXT:    s_or_saveexec_b64 s[6:7], -1234; GFX9-O3-NEXT:    v_mov_b32_e32 v1, 0235; GFX9-O3-NEXT:    v_cndmask_b32_e64 v2, 0, v4, s[6:7]236; GFX9-O3-NEXT:    s_nop 1237; GFX9-O3-NEXT:    v_mov_b32_dpp v1, v2 row_bcast:31 row_mask:0xc bank_mask:0xf238; GFX9-O3-NEXT:    v_add_u32_e32 v1, v2, v1239; GFX9-O3-NEXT:    s_mov_b64 exec, s[6:7]240; GFX9-O3-NEXT:    v_mov_b32_e32 v5, v1241; GFX9-O3-NEXT:  ; %bb.2: ; %merge242; GFX9-O3-NEXT:    s_or_b64 exec, exec, s[4:5]243; GFX9-O3-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v5244; GFX9-O3-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc245; GFX9-O3-NEXT:    v_lshlrev_b32_e32 v0, 1, v0246; GFX9-O3-NEXT:    v_and_b32_e32 v0, 2, v0247; GFX9-O3-NEXT:    buffer_store_dword v0, off, s[0:3], 0 offset:4248; GFX9-O3-NEXT:    s_endpgm249entry:250  %tmp100 = call <2 x float> @llvm.amdgcn.raw.ptr.buffer.load.v2f32(ptr addrspace(8) %tmp14, i32 0, i32 0, i32 0)251  %tmp101 = bitcast <2 x float> %tmp100 to <2 x i32>252  %tmp102 = extractelement <2 x i32> %tmp101, i32 0253  %tmp105 = tail call i32 @llvm.amdgcn.set.inactive.i32(i32 %tmp102, i32 0)254 255  %tmp120 = tail call i32 @llvm.amdgcn.update.dpp.i32(i32 0, i32 %tmp105, i32 323, i32 12, i32 15, i1 false)256  %tmp121 = add i32 %tmp105, %tmp120257  %tmp122 = tail call i32 @llvm.amdgcn.wwm.i32(i32 %tmp121)258 259  %cond = icmp eq i32 %arg, 0260  br i1 %cond, label %if, label %merge261if:262  %tmp103 = extractelement <2 x i32> %tmp101, i32 1263  %tmp107 = tail call i32 @llvm.amdgcn.set.inactive.i32(i32 %tmp103, i32 0)264 265  %tmp135 = tail call i32 @llvm.amdgcn.update.dpp.i32(i32 0, i32 %tmp107, i32 323, i32 12, i32 15, i1 false)266  %tmp136 = add i32 %tmp107, %tmp135267  %tmp137 = tail call i32 @llvm.amdgcn.wwm.i32(i32 %tmp136)268  br label %merge269 270merge:271  %merge_value = phi i32 [ 0, %entry ], [%tmp137, %if ]272  %tmp138 = icmp eq i32 %tmp122, %merge_value273  %tmp139 = sext i1 %tmp138 to i32274  %tmp140 = shl nsw i32 %tmp139, 1275  %tmp141 = and i32 %tmp140, 2276  %tmp145 = bitcast i32 %tmp141 to float277  call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %tmp145, ptr addrspace(8) %tmp14, i32 4, i32 0, i32 0)278  ret void279}280 281define hidden i32 @called(i32 %a) noinline {282; GFX9-O0-LABEL: called:283; GFX9-O0:       ; %bb.0:284; GFX9-O0-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)285; GFX9-O0-NEXT:    v_add_u32_e64 v1, v0, v0286; GFX9-O0-NEXT:    v_mul_lo_u32 v0, v1, v0287; GFX9-O0-NEXT:    v_sub_u32_e64 v0, v0, v1288; GFX9-O0-NEXT:    s_setpc_b64 s[30:31]289;290; GFX9-O3-LABEL: called:291; GFX9-O3:       ; %bb.0:292; GFX9-O3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)293; GFX9-O3-NEXT:    v_add_u32_e32 v1, v0, v0294; GFX9-O3-NEXT:    v_mul_lo_u32 v0, v1, v0295; GFX9-O3-NEXT:    v_sub_u32_e32 v0, v0, v1296; GFX9-O3-NEXT:    s_setpc_b64 s[30:31]297  %add = add i32 %a, %a298  %mul = mul i32 %add, %a299  %sub = sub i32 %mul, %add300  ret i32 %sub301}302 303define amdgpu_kernel void @call(ptr addrspace(8) %tmp14, i32 %arg) {304; GFX9-O0-LABEL: call:305; GFX9-O0:       ; %bb.0:306; GFX9-O0-NEXT:    s_mov_b32 s32, 0307; GFX9-O0-NEXT:    s_mov_b32 s24, SCRATCH_RSRC_DWORD0308; GFX9-O0-NEXT:    s_mov_b32 s25, SCRATCH_RSRC_DWORD1309; GFX9-O0-NEXT:    s_mov_b32 s26, -1310; GFX9-O0-NEXT:    s_mov_b32 s27, 0xe00000311; GFX9-O0-NEXT:    s_add_u32 s24, s24, s11312; GFX9-O0-NEXT:    s_addc_u32 s25, s25, 0313; GFX9-O0-NEXT:    s_or_saveexec_b64 s[12:13], -1314; GFX9-O0-NEXT:    ; implicit-def: $vgpr3 : SGPR spill to VGPR lane315; GFX9-O0-NEXT:    v_writelane_b32 v3, s12, 0316; GFX9-O0-NEXT:    v_writelane_b32 v3, s13, 1317; GFX9-O0-NEXT:    s_mov_b32 s14, s10318; GFX9-O0-NEXT:    s_mov_b32 s13, s9319; GFX9-O0-NEXT:    s_mov_b32 s12, s8320; GFX9-O0-NEXT:    s_mov_b64 s[10:11], s[6:7]321; GFX9-O0-NEXT:    v_writelane_b32 v3, s4, 2322; GFX9-O0-NEXT:    v_writelane_b32 v3, s5, 3323; GFX9-O0-NEXT:    s_mov_b64 s[6:7], s[2:3]324; GFX9-O0-NEXT:    v_readlane_b32 s2, v3, 0325; GFX9-O0-NEXT:    v_readlane_b32 s3, v3, 1326; GFX9-O0-NEXT:    s_mov_b64 s[4:5], s[0:1]327; GFX9-O0-NEXT:    v_readlane_b32 s0, v3, 2328; GFX9-O0-NEXT:    v_readlane_b32 s1, v3, 3329; GFX9-O0-NEXT:    v_mov_b32_e32 v4, v2330; GFX9-O0-NEXT:    v_mov_b32_e32 v5, v1331; GFX9-O0-NEXT:    v_mov_b32_e32 v6, v0332; GFX9-O0-NEXT:    s_mov_b64 exec, s[2:3]333; GFX9-O0-NEXT:    s_load_dwordx2 s[16:17], s[0:1], 0x24334; GFX9-O0-NEXT:    s_load_dwordx2 s[8:9], s[0:1], 0x2c335; GFX9-O0-NEXT:    s_load_dword s2, s[0:1], 0x34336; GFX9-O0-NEXT:    s_waitcnt lgkmcnt(0)337; GFX9-O0-NEXT:    s_mov_b32 s3, s9338; GFX9-O0-NEXT:    ; kill: def $sgpr8 killed $sgpr8 killed $sgpr8_sgpr9339; GFX9-O0-NEXT:    s_mov_b32 s9, s17340; GFX9-O0-NEXT:    ; kill: def $sgpr16 killed $sgpr16 killed $sgpr16_sgpr17341; GFX9-O0-NEXT:    ; kill: def $sgpr16 killed $sgpr16 def $sgpr16_sgpr17_sgpr18_sgpr19342; GFX9-O0-NEXT:    s_mov_b32 s17, s9343; GFX9-O0-NEXT:    s_mov_b32 s18, s8344; GFX9-O0-NEXT:    s_mov_b32 s19, s3345; GFX9-O0-NEXT:    v_writelane_b32 v3, s16, 4346; GFX9-O0-NEXT:    v_writelane_b32 v3, s17, 5347; GFX9-O0-NEXT:    v_writelane_b32 v3, s18, 6348; GFX9-O0-NEXT:    v_writelane_b32 v3, s19, 7349; GFX9-O0-NEXT:    s_mov_b32 s8, 0350; GFX9-O0-NEXT:    v_writelane_b32 v3, s8, 8351; GFX9-O0-NEXT:    ; implicit-def: $sgpr16_sgpr17352; GFX9-O0-NEXT:    v_mov_b32_e32 v0, s2353; GFX9-O0-NEXT:    s_or_saveexec_b64 s[2:3], -1354; GFX9-O0-NEXT:    v_writelane_b32 v3, s2, 9355; GFX9-O0-NEXT:    v_writelane_b32 v3, s3, 10356; GFX9-O0-NEXT:    v_mov_b32_e32 v7, s8357; GFX9-O0-NEXT:    v_cndmask_b32_e64 v7, v7, v0, s[2:3]358; GFX9-O0-NEXT:    s_mov_b64 s[8:9], 56359; GFX9-O0-NEXT:    s_mov_b32 s2, s0360; GFX9-O0-NEXT:    s_mov_b32 s0, s1361; GFX9-O0-NEXT:    s_mov_b32 s3, s8362; GFX9-O0-NEXT:    s_mov_b32 s1, s9363; GFX9-O0-NEXT:    s_add_u32 s8, s2, s3364; GFX9-O0-NEXT:    s_addc_u32 s0, s0, s1365; GFX9-O0-NEXT:    ; kill: def $sgpr8 killed $sgpr8 def $sgpr8_sgpr9366; GFX9-O0-NEXT:    s_mov_b32 s9, s0367; GFX9-O0-NEXT:    s_getpc_b64 s[16:17]368; GFX9-O0-NEXT:    s_add_u32 s16, s16, called@rel32@lo+4369; GFX9-O0-NEXT:    s_addc_u32 s17, s17, called@rel32@hi+12370; GFX9-O0-NEXT:    s_mov_b64 s[0:1], s[24:25]371; GFX9-O0-NEXT:    s_mov_b64 s[2:3], s[26:27]372; GFX9-O0-NEXT:    s_mov_b32 s15, 20373; GFX9-O0-NEXT:    v_lshlrev_b32_e64 v4, s15, v4374; GFX9-O0-NEXT:    s_mov_b32 s15, 10375; GFX9-O0-NEXT:    v_lshlrev_b32_e64 v5, s15, v5376; GFX9-O0-NEXT:    v_or3_b32 v4, v6, v5, v4377; GFX9-O0-NEXT:    ; implicit-def: $sgpr15378; GFX9-O0-NEXT:    v_mov_b32_e32 v31, v4379; GFX9-O0-NEXT:    v_mov_b32_e32 v0, v7380; GFX9-O0-NEXT:    s_swappc_b64 s[30:31], s[16:17]381; GFX9-O0-NEXT:    v_readlane_b32 s0, v3, 4382; GFX9-O0-NEXT:    v_readlane_b32 s1, v3, 5383; GFX9-O0-NEXT:    v_readlane_b32 s2, v3, 6384; GFX9-O0-NEXT:    v_readlane_b32 s3, v3, 7385; GFX9-O0-NEXT:    v_readlane_b32 s6, v3, 9386; GFX9-O0-NEXT:    v_readlane_b32 s7, v3, 10387; GFX9-O0-NEXT:    v_readlane_b32 s4, v3, 8388; GFX9-O0-NEXT:    v_mov_b32_e32 v3, v0389; GFX9-O0-NEXT:    v_add_u32_e64 v3, v3, v7390; GFX9-O0-NEXT:    s_mov_b64 exec, s[6:7]391; GFX9-O0-NEXT:    v_mov_b32_e32 v0, v3392; GFX9-O0-NEXT:    s_nop 0393; GFX9-O0-NEXT:    buffer_store_dword v0, off, s[0:3], s4 offset:4394; GFX9-O0-NEXT:    s_endpgm395;396; GFX9-O3-LABEL: call:397; GFX9-O3:       ; %bb.0:398; GFX9-O3-NEXT:    s_mov_b32 s24, SCRATCH_RSRC_DWORD0399; GFX9-O3-NEXT:    s_mov_b32 s25, SCRATCH_RSRC_DWORD1400; GFX9-O3-NEXT:    s_mov_b32 s26, -1401; GFX9-O3-NEXT:    s_mov_b32 s27, 0xe00000402; GFX9-O3-NEXT:    s_add_u32 s24, s24, s11403; GFX9-O3-NEXT:    s_mov_b32 s32, 0404; GFX9-O3-NEXT:    s_addc_u32 s25, s25, 0405; GFX9-O3-NEXT:    s_or_saveexec_b64 s[16:17], -1406; GFX9-O3-NEXT:    s_mov_b32 s14, s10407; GFX9-O3-NEXT:    s_mov_b32 s13, s9408; GFX9-O3-NEXT:    s_mov_b32 s12, s8409; GFX9-O3-NEXT:    s_mov_b64 s[10:11], s[6:7]410; GFX9-O3-NEXT:    v_mov_b32_e32 v3, v2411; GFX9-O3-NEXT:    v_mov_b32_e32 v4, v1412; GFX9-O3-NEXT:    v_mov_b32_e32 v5, v0413; GFX9-O3-NEXT:    s_mov_b64 exec, s[16:17]414; GFX9-O3-NEXT:    s_load_dword s6, s[4:5], 0x34415; GFX9-O3-NEXT:    s_load_dwordx4 s[16:19], s[4:5], 0x24416; GFX9-O3-NEXT:    s_waitcnt lgkmcnt(0)417; GFX9-O3-NEXT:    v_mov_b32_e32 v0, s6418; GFX9-O3-NEXT:    s_or_saveexec_b64 s[20:21], -1419; GFX9-O3-NEXT:    s_add_u32 s8, s4, 56420; GFX9-O3-NEXT:    v_lshlrev_b32_e32 v3, 20, v3421; GFX9-O3-NEXT:    v_lshlrev_b32_e32 v4, 10, v4422; GFX9-O3-NEXT:    v_cndmask_b32_e64 v6, 0, v0, s[20:21]423; GFX9-O3-NEXT:    s_addc_u32 s9, s5, 0424; GFX9-O3-NEXT:    v_or3_b32 v3, v5, v4, v3425; GFX9-O3-NEXT:    s_mov_b64 s[4:5], s[0:1]426; GFX9-O3-NEXT:    s_mov_b64 s[6:7], s[2:3]427; GFX9-O3-NEXT:    s_mov_b64 s[0:1], s[24:25]428; GFX9-O3-NEXT:    s_getpc_b64 s[22:23]429; GFX9-O3-NEXT:    s_add_u32 s22, s22, called@rel32@lo+4430; GFX9-O3-NEXT:    s_addc_u32 s23, s23, called@rel32@hi+12431; GFX9-O3-NEXT:    v_mov_b32_e32 v31, v3432; GFX9-O3-NEXT:    s_mov_b64 s[2:3], s[26:27]433; GFX9-O3-NEXT:    v_mov_b32_e32 v0, v6434; GFX9-O3-NEXT:    s_swappc_b64 s[30:31], s[22:23]435; GFX9-O3-NEXT:    v_mov_b32_e32 v3, v0436; GFX9-O3-NEXT:    v_add_u32_e32 v3, v3, v6437; GFX9-O3-NEXT:    s_mov_b64 exec, s[20:21]438; GFX9-O3-NEXT:    v_mov_b32_e32 v0, v3439; GFX9-O3-NEXT:    buffer_store_dword v0, off, s[16:19], 0 offset:4440; GFX9-O3-NEXT:    s_endpgm441 442 443  %tmp107 = tail call i32 @llvm.amdgcn.set.inactive.i32(i32 %arg, i32 0)444  %tmp134 = call i32 @called(i32 %tmp107)445  %tmp136 = add i32 %tmp134, %tmp107446  %tmp137 = tail call i32 @llvm.amdgcn.wwm.i32(i32 %tmp136)447  call void @llvm.amdgcn.raw.ptr.buffer.store.i32(i32 %tmp137, ptr addrspace(8) %tmp14, i32 4, i32 0, i32 0)448  ret void449}450 451define i64 @called_i64(i64 %a) noinline {452; GFX9-O0-LABEL: called_i64:453; GFX9-O0:       ; %bb.0:454; GFX9-O0-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)455; GFX9-O0-NEXT:    v_mov_b32_e32 v2, v0456; GFX9-O0-NEXT:    ; kill: def $vgpr2 killed $vgpr2 def $vgpr2_vgpr3 killed $exec457; GFX9-O0-NEXT:    v_mov_b32_e32 v3, v1458; GFX9-O0-NEXT:    v_mov_b32_e32 v4, v2459; GFX9-O0-NEXT:    v_mov_b32_e32 v5, v2460; GFX9-O0-NEXT:    v_mov_b32_e32 v0, v3461; GFX9-O0-NEXT:    v_mov_b32_e32 v1, v3462; GFX9-O0-NEXT:    v_add_co_u32_e64 v4, s[4:5], v4, v5463; GFX9-O0-NEXT:    v_addc_co_u32_e64 v0, s[4:5], v0, v1, s[4:5]464; GFX9-O0-NEXT:    ; kill: def $vgpr4 killed $vgpr4 def $vgpr4_vgpr5 killed $exec465; GFX9-O0-NEXT:    v_mov_b32_e32 v5, v0466; GFX9-O0-NEXT:    s_mov_b32 s4, 32467; GFX9-O0-NEXT:    v_mov_b32_e32 v0, v2468; GFX9-O0-NEXT:    v_mov_b32_e32 v1, v3469; GFX9-O0-NEXT:    v_lshrrev_b64 v[0:1], s4, v[0:1]470; GFX9-O0-NEXT:    v_mov_b32_e32 v1, v0471; GFX9-O0-NEXT:    v_mov_b32_e32 v0, v4472; GFX9-O0-NEXT:    v_mul_lo_u32 v1, v0, v1473; GFX9-O0-NEXT:    v_mov_b32_e32 v3, v2474; GFX9-O0-NEXT:    v_lshrrev_b64 v[6:7], s4, v[4:5]475; GFX9-O0-NEXT:    v_mov_b32_e32 v2, v6476; GFX9-O0-NEXT:    v_mul_lo_u32 v2, v2, v3477; GFX9-O0-NEXT:    v_mad_u64_u32 v[6:7], s[6:7], v0, v3, 0478; GFX9-O0-NEXT:    v_mov_b32_e32 v0, v7479; GFX9-O0-NEXT:    v_add3_u32 v0, v0, v1, v2480; GFX9-O0-NEXT:    ; implicit-def: $sgpr5481; GFX9-O0-NEXT:    ; implicit-def: $sgpr6482; GFX9-O0-NEXT:    ; kill: def $vgpr0 killed $vgpr0 def $vgpr0_vgpr1 killed $exec483; GFX9-O0-NEXT:    v_mov_b32_e32 v1, s5484; GFX9-O0-NEXT:    v_lshlrev_b64 v[1:2], s4, v[0:1]485; GFX9-O0-NEXT:    v_mov_b32_e32 v3, v2486; GFX9-O0-NEXT:    ; kill: def $vgpr6 killed $vgpr6 killed $vgpr6_vgpr7 killed $exec487; GFX9-O0-NEXT:    v_mov_b32_e32 v0, 0488; GFX9-O0-NEXT:    ; kill: def $vgpr6 killed $vgpr6 def $vgpr6_vgpr7 killed $exec489; GFX9-O0-NEXT:    v_mov_b32_e32 v7, v0490; GFX9-O0-NEXT:    v_mov_b32_e32 v0, v7491; GFX9-O0-NEXT:    v_or_b32_e64 v0, v0, v3492; GFX9-O0-NEXT:    v_mov_b32_e32 v2, v1493; GFX9-O0-NEXT:    v_mov_b32_e32 v1, v6494; GFX9-O0-NEXT:    v_or_b32_e64 v6, v1, v2495; GFX9-O0-NEXT:    ; kill: def $vgpr6 killed $vgpr6 def $vgpr6_vgpr7 killed $exec496; GFX9-O0-NEXT:    v_mov_b32_e32 v7, v0497; GFX9-O0-NEXT:    v_mov_b32_e32 v1, v6498; GFX9-O0-NEXT:    v_mov_b32_e32 v3, v4499; GFX9-O0-NEXT:    v_mov_b32_e32 v0, v7500; GFX9-O0-NEXT:    v_mov_b32_e32 v2, v5501; GFX9-O0-NEXT:    v_sub_co_u32_e64 v1, s[6:7], v1, v3502; GFX9-O0-NEXT:    v_subb_co_u32_e64 v0, s[6:7], v0, v2, s[6:7]503; GFX9-O0-NEXT:    ; kill: def $vgpr1 killed $vgpr1 def $vgpr1_vgpr2 killed $exec504; GFX9-O0-NEXT:    v_mov_b32_e32 v2, v0505; GFX9-O0-NEXT:    v_mov_b32_e32 v0, v1506; GFX9-O0-NEXT:    v_lshrrev_b64 v[1:2], s4, v[1:2]507; GFX9-O0-NEXT:    ; kill: def $vgpr1 killed $vgpr1 killed $vgpr1_vgpr2 killed $exec508; GFX9-O0-NEXT:    s_setpc_b64 s[30:31]509;510; GFX9-O3-LABEL: called_i64:511; GFX9-O3:       ; %bb.0:512; GFX9-O3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)513; GFX9-O3-NEXT:    v_add_co_u32_e32 v2, vcc, v0, v0514; GFX9-O3-NEXT:    v_addc_co_u32_e32 v3, vcc, v1, v1, vcc515; GFX9-O3-NEXT:    v_mul_lo_u32 v4, v3, v0516; GFX9-O3-NEXT:    v_mul_lo_u32 v5, v2, v1517; GFX9-O3-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v2, v0, 0518; GFX9-O3-NEXT:    v_add3_u32 v1, v1, v5, v4519; GFX9-O3-NEXT:    v_sub_co_u32_e32 v0, vcc, v0, v2520; GFX9-O3-NEXT:    v_subb_co_u32_e32 v1, vcc, v1, v3, vcc521; GFX9-O3-NEXT:    s_setpc_b64 s[30:31]522  %add = add i64 %a, %a523  %mul = mul i64 %add, %a524  %sub = sub i64 %mul, %add525  ret i64 %sub526}527 528define amdgpu_kernel void @call_i64(ptr addrspace(8) %tmp14, i64 %arg) {529; GFX9-O0-LABEL: call_i64:530; GFX9-O0:       ; %bb.0:531; GFX9-O0-NEXT:    s_mov_b32 s32, 0532; GFX9-O0-NEXT:    s_mov_b32 s24, SCRATCH_RSRC_DWORD0533; GFX9-O0-NEXT:    s_mov_b32 s25, SCRATCH_RSRC_DWORD1534; GFX9-O0-NEXT:    s_mov_b32 s26, -1535; GFX9-O0-NEXT:    s_mov_b32 s27, 0xe00000536; GFX9-O0-NEXT:    s_add_u32 s24, s24, s11537; GFX9-O0-NEXT:    s_addc_u32 s25, s25, 0538; GFX9-O0-NEXT:    s_or_saveexec_b64 s[12:13], -1539; GFX9-O0-NEXT:    ; implicit-def: $vgpr8 : SGPR spill to VGPR lane540; GFX9-O0-NEXT:    v_writelane_b32 v8, s12, 0541; GFX9-O0-NEXT:    v_writelane_b32 v8, s13, 1542; GFX9-O0-NEXT:    s_mov_b32 s14, s10543; GFX9-O0-NEXT:    s_mov_b32 s13, s9544; GFX9-O0-NEXT:    s_mov_b32 s12, s8545; GFX9-O0-NEXT:    s_mov_b64 s[10:11], s[6:7]546; GFX9-O0-NEXT:    v_writelane_b32 v8, s4, 2547; GFX9-O0-NEXT:    v_writelane_b32 v8, s5, 3548; GFX9-O0-NEXT:    s_mov_b64 s[6:7], s[2:3]549; GFX9-O0-NEXT:    v_readlane_b32 s2, v8, 0550; GFX9-O0-NEXT:    v_readlane_b32 s3, v8, 1551; GFX9-O0-NEXT:    s_mov_b64 s[4:5], s[0:1]552; GFX9-O0-NEXT:    v_readlane_b32 s0, v8, 2553; GFX9-O0-NEXT:    v_readlane_b32 s1, v8, 3554; GFX9-O0-NEXT:    v_mov_b32_e32 v3, v2555; GFX9-O0-NEXT:    v_mov_b32_e32 v4, v1556; GFX9-O0-NEXT:    v_mov_b32_e32 v5, v0557; GFX9-O0-NEXT:    s_mov_b64 exec, s[2:3]558; GFX9-O0-NEXT:    s_load_dwordx2 s[16:17], s[0:1], 0x24559; GFX9-O0-NEXT:    s_load_dwordx2 s[18:19], s[0:1], 0x2c560; GFX9-O0-NEXT:    s_load_dwordx2 s[2:3], s[0:1], 0x34561; GFX9-O0-NEXT:    s_waitcnt lgkmcnt(0)562; GFX9-O0-NEXT:    s_mov_b32 s8, s19563; GFX9-O0-NEXT:    s_mov_b32 s9, s18564; GFX9-O0-NEXT:    s_mov_b32 s15, s17565; GFX9-O0-NEXT:    ; kill: def $sgpr16 killed $sgpr16 killed $sgpr16_sgpr17566; GFX9-O0-NEXT:    ; kill: def $sgpr16 killed $sgpr16 def $sgpr16_sgpr17_sgpr18_sgpr19567; GFX9-O0-NEXT:    s_mov_b32 s17, s15568; GFX9-O0-NEXT:    s_mov_b32 s18, s9569; GFX9-O0-NEXT:    s_mov_b32 s19, s8570; GFX9-O0-NEXT:    v_writelane_b32 v8, s16, 4571; GFX9-O0-NEXT:    v_writelane_b32 v8, s17, 5572; GFX9-O0-NEXT:    v_writelane_b32 v8, s18, 6573; GFX9-O0-NEXT:    v_writelane_b32 v8, s19, 7574; GFX9-O0-NEXT:    s_mov_b64 s[8:9], 0575; GFX9-O0-NEXT:    s_mov_b32 s15, s9576; GFX9-O0-NEXT:    s_mov_b32 s16, s3577; GFX9-O0-NEXT:    ; implicit-def: $sgpr18_sgpr19578; GFX9-O0-NEXT:    v_mov_b32_e32 v0, s16579; GFX9-O0-NEXT:    s_or_saveexec_b64 s[16:17], -1580; GFX9-O0-NEXT:    v_mov_b32_e32 v6, s15581; GFX9-O0-NEXT:    v_cndmask_b32_e64 v6, v6, v0, s[16:17]582; GFX9-O0-NEXT:    s_mov_b64 exec, s[16:17]583; GFX9-O0-NEXT:    ; kill: def $sgpr8 killed $sgpr8 killed $sgpr8_sgpr9584; GFX9-O0-NEXT:    ; kill: def $sgpr2 killed $sgpr2 killed $sgpr2_sgpr3585; GFX9-O0-NEXT:    ; implicit-def: $sgpr16_sgpr17586; GFX9-O0-NEXT:    v_mov_b32_e32 v0, s2587; GFX9-O0-NEXT:    s_or_saveexec_b64 s[2:3], -1588; GFX9-O0-NEXT:    v_writelane_b32 v8, s2, 8589; GFX9-O0-NEXT:    v_writelane_b32 v8, s3, 9590; GFX9-O0-NEXT:    v_mov_b32_e32 v7, s8591; GFX9-O0-NEXT:    v_cndmask_b32_e64 v7, v7, v0, s[2:3]592; GFX9-O0-NEXT:    v_mov_b32_e32 v9, v7593; GFX9-O0-NEXT:    v_mov_b32_e32 v10, v6594; GFX9-O0-NEXT:    s_mov_b32 s2, 32595; GFX9-O0-NEXT:    v_lshrrev_b64 v[11:12], s2, v[9:10]596; GFX9-O0-NEXT:    v_mov_b32_e32 v6, v11597; GFX9-O0-NEXT:    s_mov_b64 s[8:9], 60598; GFX9-O0-NEXT:    s_mov_b32 s2, s0599; GFX9-O0-NEXT:    s_mov_b32 s0, s1600; GFX9-O0-NEXT:    s_mov_b32 s3, s8601; GFX9-O0-NEXT:    s_mov_b32 s1, s9602; GFX9-O0-NEXT:    s_add_u32 s8, s2, s3603; GFX9-O0-NEXT:    s_addc_u32 s0, s0, s1604; GFX9-O0-NEXT:    ; kill: def $sgpr8 killed $sgpr8 def $sgpr8_sgpr9605; GFX9-O0-NEXT:    s_mov_b32 s9, s0606; GFX9-O0-NEXT:    s_getpc_b64 s[0:1]607; GFX9-O0-NEXT:    s_add_u32 s0, s0, called_i64@gotpcrel32@lo+4608; GFX9-O0-NEXT:    s_addc_u32 s1, s1, called_i64@gotpcrel32@hi+12609; GFX9-O0-NEXT:    s_load_dwordx2 s[16:17], s[0:1], 0x0610; GFX9-O0-NEXT:    s_mov_b64 s[0:1], s[24:25]611; GFX9-O0-NEXT:    s_mov_b64 s[2:3], s[26:27]612; GFX9-O0-NEXT:    s_mov_b32 s15, 20613; GFX9-O0-NEXT:    v_lshlrev_b32_e64 v3, s15, v3614; GFX9-O0-NEXT:    s_mov_b32 s15, 10615; GFX9-O0-NEXT:    v_lshlrev_b32_e64 v4, s15, v4616; GFX9-O0-NEXT:    v_or3_b32 v3, v5, v4, v3617; GFX9-O0-NEXT:    ; implicit-def: $sgpr15618; GFX9-O0-NEXT:    v_mov_b32_e32 v31, v3619; GFX9-O0-NEXT:    v_mov_b32_e32 v0, v7620; GFX9-O0-NEXT:    v_mov_b32_e32 v1, v6621; GFX9-O0-NEXT:    s_waitcnt lgkmcnt(0)622; GFX9-O0-NEXT:    s_swappc_b64 s[30:31], s[16:17]623; GFX9-O0-NEXT:    v_readlane_b32 s0, v8, 4624; GFX9-O0-NEXT:    v_readlane_b32 s1, v8, 5625; GFX9-O0-NEXT:    v_readlane_b32 s2, v8, 6626; GFX9-O0-NEXT:    v_readlane_b32 s3, v8, 7627; GFX9-O0-NEXT:    v_readlane_b32 s4, v8, 8628; GFX9-O0-NEXT:    v_readlane_b32 s5, v8, 9629; GFX9-O0-NEXT:    v_mov_b32_e32 v3, v0630; GFX9-O0-NEXT:    v_mov_b32_e32 v4, v1631; GFX9-O0-NEXT:    v_mov_b32_e32 v5, v9632; GFX9-O0-NEXT:    v_mov_b32_e32 v6, v10633; GFX9-O0-NEXT:    v_add_co_u32_e64 v3, s[6:7], v3, v5634; GFX9-O0-NEXT:    v_addc_co_u32_e64 v4, s[6:7], v4, v6, s[6:7]635; GFX9-O0-NEXT:    s_mov_b64 exec, s[4:5]636; GFX9-O0-NEXT:    v_mov_b32_e32 v0, v3637; GFX9-O0-NEXT:    v_mov_b32_e32 v1, v4638; GFX9-O0-NEXT:    s_mov_b32 s4, 0639; GFX9-O0-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], s4 offset:4640; GFX9-O0-NEXT:    s_endpgm641;642; GFX9-O3-LABEL: call_i64:643; GFX9-O3:       ; %bb.0:644; GFX9-O3-NEXT:    s_mov_b32 s24, SCRATCH_RSRC_DWORD0645; GFX9-O3-NEXT:    s_mov_b32 s25, SCRATCH_RSRC_DWORD1646; GFX9-O3-NEXT:    s_mov_b32 s26, -1647; GFX9-O3-NEXT:    s_mov_b32 s27, 0xe00000648; GFX9-O3-NEXT:    s_add_u32 s24, s24, s11649; GFX9-O3-NEXT:    s_mov_b32 s32, 0650; GFX9-O3-NEXT:    s_addc_u32 s25, s25, 0651; GFX9-O3-NEXT:    s_or_saveexec_b64 s[16:17], -1652; GFX9-O3-NEXT:    s_mov_b32 s14, s10653; GFX9-O3-NEXT:    s_mov_b32 s13, s9654; GFX9-O3-NEXT:    s_mov_b32 s12, s8655; GFX9-O3-NEXT:    s_mov_b64 s[10:11], s[6:7]656; GFX9-O3-NEXT:    v_mov_b32_e32 v3, v2657; GFX9-O3-NEXT:    v_mov_b32_e32 v4, v1658; GFX9-O3-NEXT:    v_mov_b32_e32 v5, v0659; GFX9-O3-NEXT:    s_mov_b64 exec, s[16:17]660; GFX9-O3-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x34661; GFX9-O3-NEXT:    s_load_dwordx4 s[16:19], s[4:5], 0x24662; GFX9-O3-NEXT:    s_waitcnt lgkmcnt(0)663; GFX9-O3-NEXT:    v_mov_b32_e32 v0, s7664; GFX9-O3-NEXT:    s_or_saveexec_b64 s[8:9], -1665; GFX9-O3-NEXT:    v_cndmask_b32_e64 v6, 0, v0, s[8:9]666; GFX9-O3-NEXT:    s_mov_b64 exec, s[8:9]667; GFX9-O3-NEXT:    v_mov_b32_e32 v0, s6668; GFX9-O3-NEXT:    s_or_saveexec_b64 s[20:21], -1669; GFX9-O3-NEXT:    s_add_u32 s8, s4, 60670; GFX9-O3-NEXT:    s_addc_u32 s9, s5, 0671; GFX9-O3-NEXT:    s_getpc_b64 s[4:5]672; GFX9-O3-NEXT:    s_add_u32 s4, s4, called_i64@gotpcrel32@lo+4673; GFX9-O3-NEXT:    s_addc_u32 s5, s5, called_i64@gotpcrel32@hi+12674; GFX9-O3-NEXT:    s_load_dwordx2 s[22:23], s[4:5], 0x0675; GFX9-O3-NEXT:    v_lshlrev_b32_e32 v3, 20, v3676; GFX9-O3-NEXT:    v_lshlrev_b32_e32 v4, 10, v4677; GFX9-O3-NEXT:    v_cndmask_b32_e64 v7, 0, v0, s[20:21]678; GFX9-O3-NEXT:    v_or3_b32 v3, v5, v4, v3679; GFX9-O3-NEXT:    s_mov_b64 s[4:5], s[0:1]680; GFX9-O3-NEXT:    s_mov_b64 s[6:7], s[2:3]681; GFX9-O3-NEXT:    s_mov_b64 s[0:1], s[24:25]682; GFX9-O3-NEXT:    v_mov_b32_e32 v31, v3683; GFX9-O3-NEXT:    s_mov_b64 s[2:3], s[26:27]684; GFX9-O3-NEXT:    v_mov_b32_e32 v0, v7685; GFX9-O3-NEXT:    v_mov_b32_e32 v1, v6686; GFX9-O3-NEXT:    s_waitcnt lgkmcnt(0)687; GFX9-O3-NEXT:    s_swappc_b64 s[30:31], s[22:23]688; GFX9-O3-NEXT:    v_mov_b32_e32 v3, v0689; GFX9-O3-NEXT:    v_mov_b32_e32 v4, v1690; GFX9-O3-NEXT:    v_add_co_u32_e32 v3, vcc, v3, v7691; GFX9-O3-NEXT:    v_addc_co_u32_e32 v4, vcc, v4, v6, vcc692; GFX9-O3-NEXT:    s_mov_b64 exec, s[20:21]693; GFX9-O3-NEXT:    v_mov_b32_e32 v0, v3694; GFX9-O3-NEXT:    v_mov_b32_e32 v1, v4695; GFX9-O3-NEXT:    buffer_store_dwordx2 v[0:1], off, s[16:19], 0 offset:4696; GFX9-O3-NEXT:    s_endpgm697 698 699 700  %tmp107 = tail call i64 @llvm.amdgcn.set.inactive.i64(i64 %arg, i64 0)701  %tmp134 = call i64 @called_i64(i64 %tmp107)702  %tmp136 = add i64 %tmp134, %tmp107703  %tmp137 = tail call i64 @llvm.amdgcn.wwm.i64(i64 %tmp136)704  %tmp138 = bitcast i64 %tmp137 to <2 x i32>705  call void @llvm.amdgcn.raw.ptr.buffer.store.v2i32(<2 x i32> %tmp138, ptr addrspace(8) %tmp14, i32 4, i32 0, i32 0)706  ret void707}708 709define amdgpu_cs void @_amdgpu_cs_main(<4 x i32> inreg %desc, i32 %index) {710; GFX9-O0-LABEL: _amdgpu_cs_main:711; GFX9-O0:       ; %bb.0:712; GFX9-O0-NEXT:    s_mov_b32 s4, s3713; GFX9-O0-NEXT:    s_mov_b32 s5, s2714; GFX9-O0-NEXT:    s_mov_b32 s6, s1715; GFX9-O0-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr3716; GFX9-O0-NEXT:    s_mov_b32 s1, s6717; GFX9-O0-NEXT:    s_mov_b32 s2, s5718; GFX9-O0-NEXT:    s_mov_b32 s3, s4719; GFX9-O0-NEXT:    ; kill: def $sgpr4_sgpr5_sgpr6_sgpr7 killed $sgpr0_sgpr1_sgpr2_sgpr3720; GFX9-O0-NEXT:    s_mov_b32 s4, 5721; GFX9-O0-NEXT:    v_lshlrev_b32_e64 v0, s4, v0722; GFX9-O0-NEXT:    s_mov_b32 s4, 0723; GFX9-O0-NEXT:    buffer_load_dwordx4 v[11:14], v0, s[0:3], s4 offen724; GFX9-O0-NEXT:    buffer_load_dwordx2 v[4:5], v0, s[0:3], s4 offen offset:16725; GFX9-O0-NEXT:    s_waitcnt vmcnt(1)726; GFX9-O0-NEXT:    v_mov_b32_e32 v6, v11727; GFX9-O0-NEXT:    v_mov_b32_e32 v7, v12728; GFX9-O0-NEXT:    s_or_saveexec_b64 s[6:7], -1729; GFX9-O0-NEXT:    s_mov_b32 s5, 0x7fffffff730; GFX9-O0-NEXT:    s_mov_b32 s10, -1731; GFX9-O0-NEXT:    ; kill: def $sgpr10 killed $sgpr10 def $sgpr10_sgpr11732; GFX9-O0-NEXT:    s_mov_b32 s11, s5733; GFX9-O0-NEXT:    s_mov_b32 s8, s11734; GFX9-O0-NEXT:    ; implicit-def: $sgpr12_sgpr13735; GFX9-O0-NEXT:    v_mov_b32_e32 v1, s8736; GFX9-O0-NEXT:    v_cndmask_b32_e64 v1, v1, v7, s[6:7]737; GFX9-O0-NEXT:    s_mov_b32 s5, s10738; GFX9-O0-NEXT:    ; implicit-def: $sgpr10_sgpr11739; GFX9-O0-NEXT:    v_mov_b32_e32 v2, s5740; GFX9-O0-NEXT:    v_cndmask_b32_e64 v2, v2, v6, s[6:7]741; GFX9-O0-NEXT:    v_mov_b32_e32 v3, v1742; GFX9-O0-NEXT:    s_mov_b64 exec, s[6:7]743; GFX9-O0-NEXT:    v_mov_b32_e32 v9, v2744; GFX9-O0-NEXT:    v_mov_b32_e32 v10, v3745; GFX9-O0-NEXT:    v_mov_b32_e32 v6, v13746; GFX9-O0-NEXT:    v_mov_b32_e32 v7, v14747; GFX9-O0-NEXT:    s_or_saveexec_b64 s[6:7], -1748; GFX9-O0-NEXT:    ; implicit-def: $sgpr10_sgpr11749; GFX9-O0-NEXT:    v_mov_b32_e32 v1, s8750; GFX9-O0-NEXT:    v_cndmask_b32_e64 v1, v1, v7, s[6:7]751; GFX9-O0-NEXT:    ; implicit-def: $sgpr10_sgpr11752; GFX9-O0-NEXT:    v_mov_b32_e32 v2, s5753; GFX9-O0-NEXT:    v_cndmask_b32_e64 v2, v2, v6, s[6:7]754; GFX9-O0-NEXT:    v_mov_b32_e32 v3, v1755; GFX9-O0-NEXT:    s_mov_b64 exec, s[6:7]756; GFX9-O0-NEXT:    v_mov_b32_e32 v7, v2757; GFX9-O0-NEXT:    v_mov_b32_e32 v8, v3758; GFX9-O0-NEXT:    s_waitcnt vmcnt(0)759; GFX9-O0-NEXT:    v_mov_b32_e32 v6, v5760; GFX9-O0-NEXT:    s_or_saveexec_b64 s[6:7], -1761; GFX9-O0-NEXT:    ; implicit-def: $sgpr10_sgpr11762; GFX9-O0-NEXT:    v_mov_b32_e32 v1, s8763; GFX9-O0-NEXT:    v_cndmask_b32_e64 v1, v1, v6, s[6:7]764; GFX9-O0-NEXT:    s_mov_b64 exec, s[6:7]765; GFX9-O0-NEXT:    ; kill: def $vgpr4 killed $vgpr4 killed $vgpr4_vgpr5 killed $exec766; GFX9-O0-NEXT:    s_or_saveexec_b64 s[6:7], -1767; GFX9-O0-NEXT:    ; implicit-def: $sgpr8_sgpr9768; GFX9-O0-NEXT:    v_mov_b32_e32 v2, s5769; GFX9-O0-NEXT:    v_cndmask_b32_e64 v2, v2, v4, s[6:7]770; GFX9-O0-NEXT:    v_mov_b32_e32 v3, v1771; GFX9-O0-NEXT:    s_mov_b64 exec, s[6:7]772; GFX9-O0-NEXT:    v_mov_b32_e32 v4, v2773; GFX9-O0-NEXT:    v_mov_b32_e32 v5, v3774; GFX9-O0-NEXT:    v_mov_b32_e32 v12, v10775; GFX9-O0-NEXT:    v_mov_b32_e32 v6, v9776; GFX9-O0-NEXT:    v_mov_b32_e32 v10, v8777; GFX9-O0-NEXT:    v_mov_b32_e32 v11, v7778; GFX9-O0-NEXT:    ; kill: def $vgpr6 killed $vgpr6 def $vgpr6_vgpr7_vgpr8_vgpr9 killed $exec779; GFX9-O0-NEXT:    v_mov_b32_e32 v7, v12780; GFX9-O0-NEXT:    v_mov_b32_e32 v8, v11781; GFX9-O0-NEXT:    v_mov_b32_e32 v9, v10782; GFX9-O0-NEXT:    buffer_store_dwordx4 v[6:9], v0, s[0:3], s4 offen783; GFX9-O0-NEXT:    buffer_store_dwordx2 v[4:5], v0, s[0:3], s4 offen offset:16784; GFX9-O0-NEXT:    s_endpgm785;786; GFX9-O3-LABEL: _amdgpu_cs_main:787; GFX9-O3:       ; %bb.0:788; GFX9-O3-NEXT:    v_lshlrev_b32_e32 v0, 5, v0789; GFX9-O3-NEXT:    buffer_load_dwordx4 v[8:11], v0, s[0:3], 0 offen790; GFX9-O3-NEXT:    buffer_load_dwordx2 v[12:13], v0, s[0:3], 0 offen offset:16791; GFX9-O3-NEXT:    s_or_saveexec_b64 s[4:5], -1792; GFX9-O3-NEXT:    v_bfrev_b32_e32 v1, -2793; GFX9-O3-NEXT:    s_waitcnt vmcnt(1)794; GFX9-O3-NEXT:    v_cndmask_b32_e64 v3, v1, v9, s[4:5]795; GFX9-O3-NEXT:    v_cndmask_b32_e64 v2, -1, v8, s[4:5]796; GFX9-O3-NEXT:    v_cndmask_b32_e64 v5, v1, v11, s[4:5]797; GFX9-O3-NEXT:    v_cndmask_b32_e64 v4, -1, v10, s[4:5]798; GFX9-O3-NEXT:    s_waitcnt vmcnt(0)799; GFX9-O3-NEXT:    v_cndmask_b32_e64 v7, v1, v13, s[4:5]800; GFX9-O3-NEXT:    v_cndmask_b32_e64 v6, -1, v12, s[4:5]801; GFX9-O3-NEXT:    s_mov_b64 exec, s[4:5]802; GFX9-O3-NEXT:    v_mov_b32_e32 v8, v2803; GFX9-O3-NEXT:    v_mov_b32_e32 v10, v4804; GFX9-O3-NEXT:    v_mov_b32_e32 v9, v3805; GFX9-O3-NEXT:    v_mov_b32_e32 v11, v5806; GFX9-O3-NEXT:    v_mov_b32_e32 v12, v6807; GFX9-O3-NEXT:    v_mov_b32_e32 v13, v7808; GFX9-O3-NEXT:    buffer_store_dwordx4 v[8:11], v0, s[0:3], 0 offen809; GFX9-O3-NEXT:    buffer_store_dwordx2 v[12:13], v0, s[0:3], 0 offen offset:16810; GFX9-O3-NEXT:    s_endpgm811  %tmp17 = shl i32 %index, 5812  %tmp18 = tail call <4 x i32> @llvm.amdgcn.s.buffer.load.v4i32(<4 x i32> %desc, i32 %tmp17, i32 0)813  %.i0.upto1.bc = bitcast <4 x i32> %tmp18 to <2 x i64>814  %tmp19 = or i32 %tmp17, 16815  %tmp20 = tail call <2 x i32> @llvm.amdgcn.s.buffer.load.v2i32(<4 x i32> %desc, i32 %tmp19, i32 0)816  %.i0.upto1.extract = extractelement <2 x i64> %.i0.upto1.bc, i32 0817  %tmp22 = tail call i64 @llvm.amdgcn.set.inactive.i64(i64 %.i0.upto1.extract, i64 9223372036854775807)818  %tmp97 = tail call i64 @llvm.amdgcn.wwm.i64(i64 %tmp22)819  %.i1.upto1.extract = extractelement <2 x i64> %.i0.upto1.bc, i32 1820  %tmp99 = tail call i64 @llvm.amdgcn.set.inactive.i64(i64 %.i1.upto1.extract, i64 9223372036854775807)821  %tmp174 = tail call i64 @llvm.amdgcn.wwm.i64(i64 %tmp99)822  %.i25 = bitcast <2 x i32> %tmp20 to i64823  %tmp176 = tail call i64 @llvm.amdgcn.set.inactive.i64(i64 %.i25, i64 9223372036854775807)824  %tmp251 = tail call i64 @llvm.amdgcn.wwm.i64(i64 %tmp176)825  %.cast = bitcast i64 %tmp97 to <2 x float>826  %.cast6 = bitcast i64 %tmp174 to <2 x float>827  %.cast7 = bitcast i64 %tmp251 to <2 x float>828  %tmp254 = shufflevector <2 x float> %.cast, <2 x float> %.cast6, <4 x i32> <i32 0, i32 1, i32 2, i32 3>829  %desc.int = bitcast <4 x i32> %desc to i128830  %desc.ptr = inttoptr i128 %desc.int to ptr addrspace(8)831  tail call void @llvm.amdgcn.raw.ptr.buffer.store.v4f32(<4 x float> %tmp254, ptr addrspace(8) %desc.ptr, i32 %tmp17, i32 0, i32 0)832  tail call void @llvm.amdgcn.raw.ptr.buffer.store.v2f32(<2 x float> %.cast7, ptr addrspace(8) %desc.ptr, i32 %tmp19, i32 0, i32 0)833  ret void834}835 836 837define amdgpu_cs void @strict_wwm_no_cfg(ptr addrspace(8) inreg %tmp14) {838; GFX9-O0-LABEL: strict_wwm_no_cfg:839; GFX9-O0:       ; %bb.0:840; GFX9-O0-NEXT:    s_mov_b32 s6, s2841; GFX9-O0-NEXT:    s_mov_b32 s4, s0842; GFX9-O0-NEXT:    ; kill: def $sgpr6 killed $sgpr6 def $sgpr6_sgpr7843; GFX9-O0-NEXT:    s_mov_b32 s7, s3844; GFX9-O0-NEXT:    s_mov_b32 s8, s7845; GFX9-O0-NEXT:    s_mov_b32 s9, s6846; GFX9-O0-NEXT:    ; kill: def $sgpr4 killed $sgpr4 def $sgpr4_sgpr5847; GFX9-O0-NEXT:    s_mov_b32 s5, s1848; GFX9-O0-NEXT:    s_mov_b32 s10, s5849; GFX9-O0-NEXT:    s_mov_b32 s0, s4850; GFX9-O0-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr3851; GFX9-O0-NEXT:    s_mov_b32 s1, s10852; GFX9-O0-NEXT:    s_mov_b32 s2, s9853; GFX9-O0-NEXT:    s_mov_b32 s3, s8854; GFX9-O0-NEXT:    s_mov_b32 s4, 0855; GFX9-O0-NEXT:    buffer_load_dwordx2 v[5:6], off, s[0:3], s4856; GFX9-O0-NEXT:    s_waitcnt vmcnt(0)857; GFX9-O0-NEXT:    v_mov_b32_e32 v4, v5858; GFX9-O0-NEXT:    v_mov_b32_e32 v3, v6859; GFX9-O0-NEXT:    ; implicit-def: $sgpr6_sgpr7860; GFX9-O0-NEXT:    s_or_saveexec_b64 s[6:7], -1861; GFX9-O0-NEXT:    v_mov_b32_e32 v0, s4862; GFX9-O0-NEXT:    v_cndmask_b32_e64 v0, v0, v4, s[6:7]863; GFX9-O0-NEXT:    s_mov_b64 exec, s[6:7]864; GFX9-O0-NEXT:    ; implicit-def: $sgpr6_sgpr7865; GFX9-O0-NEXT:    s_or_saveexec_b64 s[6:7], -1866; GFX9-O0-NEXT:    v_mov_b32_e32 v1, s4867; GFX9-O0-NEXT:    v_cndmask_b32_e64 v1, v1, v3, s[6:7]868; GFX9-O0-NEXT:    v_mov_b32_e32 v2, s4869; GFX9-O0-NEXT:    s_nop 1870; GFX9-O0-NEXT:    v_mov_b32_dpp v2, v0 row_bcast:31 row_mask:0xc bank_mask:0xf871; GFX9-O0-NEXT:    v_add_u32_e64 v0, v0, v2872; GFX9-O0-NEXT:    s_mov_b64 exec, s[6:7]873; GFX9-O0-NEXT:    v_mov_b32_e32 v3, v0874; GFX9-O0-NEXT:    s_or_saveexec_b64 s[6:7], -1875; GFX9-O0-NEXT:    v_mov_b32_e32 v0, s4876; GFX9-O0-NEXT:    s_nop 1877; GFX9-O0-NEXT:    v_mov_b32_dpp v0, v1 row_bcast:31 row_mask:0xc bank_mask:0xf878; GFX9-O0-NEXT:    v_add_u32_e64 v0, v1, v0879; GFX9-O0-NEXT:    s_mov_b64 exec, s[6:7]880; GFX9-O0-NEXT:    v_mov_b32_e32 v4, v0881; GFX9-O0-NEXT:    v_cmp_eq_u32_e64 s[6:7], v3, v4882; GFX9-O0-NEXT:    v_cndmask_b32_e64 v3, 0, 1, s[6:7]883; GFX9-O0-NEXT:    s_mov_b32 s5, 1884; GFX9-O0-NEXT:    v_lshlrev_b32_e64 v3, s5, v3885; GFX9-O0-NEXT:    s_mov_b32 s5, 2886; GFX9-O0-NEXT:    v_and_b32_e64 v3, v3, s5887; GFX9-O0-NEXT:    buffer_store_dword v3, off, s[0:3], s4 offset:4888; GFX9-O0-NEXT:    s_endpgm889;890; GFX9-O3-LABEL: strict_wwm_no_cfg:891; GFX9-O3:       ; %bb.0:892; GFX9-O3-NEXT:    buffer_load_dwordx2 v[4:5], off, s[0:3], 0893; GFX9-O3-NEXT:    s_or_saveexec_b64 s[4:5], -1894; GFX9-O3-NEXT:    v_mov_b32_e32 v0, 0895; GFX9-O3-NEXT:    v_mov_b32_e32 v1, 0896; GFX9-O3-NEXT:    s_waitcnt vmcnt(0)897; GFX9-O3-NEXT:    v_cndmask_b32_e64 v2, 0, v4, s[4:5]898; GFX9-O3-NEXT:    v_cndmask_b32_e64 v3, 0, v5, s[4:5]899; GFX9-O3-NEXT:    s_nop 0900; GFX9-O3-NEXT:    v_mov_b32_dpp v1, v2 row_bcast:31 row_mask:0xc bank_mask:0xf901; GFX9-O3-NEXT:    v_mov_b32_dpp v0, v3 row_bcast:31 row_mask:0xc bank_mask:0xf902; GFX9-O3-NEXT:    v_add_u32_e32 v1, v2, v1903; GFX9-O3-NEXT:    v_add_u32_e32 v0, v3, v0904; GFX9-O3-NEXT:    s_mov_b64 exec, s[4:5]905; GFX9-O3-NEXT:    v_mov_b32_e32 v4, v1906; GFX9-O3-NEXT:    v_mov_b32_e32 v5, v0907; GFX9-O3-NEXT:    v_cmp_eq_u32_e32 vcc, v4, v5908; GFX9-O3-NEXT:    v_cndmask_b32_e64 v4, 0, 1, vcc909; GFX9-O3-NEXT:    v_lshlrev_b32_e32 v4, 1, v4910; GFX9-O3-NEXT:    v_and_b32_e32 v4, 2, v4911; GFX9-O3-NEXT:    buffer_store_dword v4, off, s[0:3], 0 offset:4912; GFX9-O3-NEXT:    s_endpgm913  %tmp100 = call <2 x float> @llvm.amdgcn.raw.ptr.buffer.load.v2f32(ptr addrspace(8) %tmp14, i32 0, i32 0, i32 0)914  %tmp101 = bitcast <2 x float> %tmp100 to <2 x i32>915  %tmp102 = extractelement <2 x i32> %tmp101, i32 0916  %tmp103 = extractelement <2 x i32> %tmp101, i32 1917  %tmp105 = tail call i32 @llvm.amdgcn.set.inactive.i32(i32 %tmp102, i32 0)918  %tmp107 = tail call i32 @llvm.amdgcn.set.inactive.i32(i32 %tmp103, i32 0)919 920 921  %tmp120 = tail call i32 @llvm.amdgcn.update.dpp.i32(i32 0, i32 %tmp105, i32 323, i32 12, i32 15, i1 false)922  %tmp121 = add i32 %tmp105, %tmp120923  %tmp122 = tail call i32 @llvm.amdgcn.strict.wwm.i32(i32 %tmp121)924 925  %tmp135 = tail call i32 @llvm.amdgcn.update.dpp.i32(i32 0, i32 %tmp107, i32 323, i32 12, i32 15, i1 false)926  %tmp136 = add i32 %tmp107, %tmp135927  %tmp137 = tail call i32 @llvm.amdgcn.strict.wwm.i32(i32 %tmp136)928 929  %tmp138 = icmp eq i32 %tmp122, %tmp137930  %tmp139 = sext i1 %tmp138 to i32931  %tmp140 = shl nsw i32 %tmp139, 1932  %tmp141 = and i32 %tmp140, 2933  %tmp145 = bitcast i32 %tmp141 to float934  call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %tmp145, ptr addrspace(8) %tmp14, i32 4, i32 0, i32 0)935  ret void936}937 938define amdgpu_cs void @strict_wwm_cfg(ptr addrspace(8) inreg %tmp14, i32 %arg) {939; GFX9-O0-LABEL: strict_wwm_cfg:940; GFX9-O0:       ; %bb.0: ; %entry941; GFX9-O0-NEXT:    s_mov_b32 s16, SCRATCH_RSRC_DWORD0942; GFX9-O0-NEXT:    s_mov_b32 s17, SCRATCH_RSRC_DWORD1943; GFX9-O0-NEXT:    s_mov_b32 s18, -1944; GFX9-O0-NEXT:    s_mov_b32 s19, 0xe00000945; GFX9-O0-NEXT:    s_add_u32 s16, s16, s4946; GFX9-O0-NEXT:    s_addc_u32 s17, s17, 0947; GFX9-O0-NEXT:    ; implicit-def: $vgpr5 : SGPR spill to VGPR lane948; GFX9-O0-NEXT:    v_writelane_b32 v5, s3, 0949; GFX9-O0-NEXT:    s_mov_b32 s4, s1950; GFX9-O0-NEXT:    v_readlane_b32 s1, v5, 0951; GFX9-O0-NEXT:    ; kill: def $sgpr2 killed $sgpr2 def $sgpr2_sgpr3952; GFX9-O0-NEXT:    s_mov_b32 s3, s1953; GFX9-O0-NEXT:    s_mov_b32 s8, s3954; GFX9-O0-NEXT:    s_mov_b32 s9, s2955; GFX9-O0-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1956; GFX9-O0-NEXT:    s_mov_b32 s1, s4957; GFX9-O0-NEXT:    s_mov_b32 s10, s1958; GFX9-O0-NEXT:    s_mov_b32 s4, s0959; GFX9-O0-NEXT:    ; kill: def $sgpr4 killed $sgpr4 def $sgpr4_sgpr5_sgpr6_sgpr7960; GFX9-O0-NEXT:    s_mov_b32 s5, s10961; GFX9-O0-NEXT:    s_mov_b32 s6, s9962; GFX9-O0-NEXT:    s_mov_b32 s7, s8963; GFX9-O0-NEXT:    v_writelane_b32 v5, s2, 1964; GFX9-O0-NEXT:    v_writelane_b32 v5, s3, 2965; GFX9-O0-NEXT:    v_writelane_b32 v5, s0, 3966; GFX9-O0-NEXT:    v_writelane_b32 v5, s1, 4967; GFX9-O0-NEXT:    s_mov_b32 s0, 0968; GFX9-O0-NEXT:    s_nop 2969; GFX9-O0-NEXT:    buffer_load_dwordx2 v[3:4], off, s[4:7], s0970; GFX9-O0-NEXT:    s_waitcnt vmcnt(0)971; GFX9-O0-NEXT:    buffer_store_dword v3, off, s[16:19], 0 offset:12 ; 4-byte Folded Spill972; GFX9-O0-NEXT:    s_nop 0973; GFX9-O0-NEXT:    buffer_store_dword v4, off, s[16:19], 0 offset:16 ; 4-byte Folded Spill974; GFX9-O0-NEXT:    ; implicit-def: $sgpr2_sgpr3975; GFX9-O0-NEXT:    s_or_saveexec_b64 s[2:3], -1976; GFX9-O0-NEXT:    v_mov_b32_e32 v1, s0977; GFX9-O0-NEXT:    v_cndmask_b32_e64 v1, v1, v3, s[2:3]978; GFX9-O0-NEXT:    v_mov_b32_e32 v2, s0979; GFX9-O0-NEXT:    s_nop 1980; GFX9-O0-NEXT:    v_mov_b32_dpp v2, v1 row_bcast:31 row_mask:0xc bank_mask:0xf981; GFX9-O0-NEXT:    v_add_u32_e64 v1, v1, v2982; GFX9-O0-NEXT:    s_mov_b64 exec, s[2:3]983; GFX9-O0-NEXT:    v_mov_b32_e32 v3, v1984; GFX9-O0-NEXT:    buffer_store_dword v3, off, s[16:19], 0 offset:8 ; 4-byte Folded Spill985; GFX9-O0-NEXT:    v_cmp_eq_u32_e64 s[2:3], v0, s0986; GFX9-O0-NEXT:    v_mov_b32_e32 v0, s0987; GFX9-O0-NEXT:    buffer_store_dword v0, off, s[16:19], 0 offset:4 ; 4-byte Folded Spill988; GFX9-O0-NEXT:    s_mov_b64 s[0:1], exec989; GFX9-O0-NEXT:    v_writelane_b32 v5, s0, 5990; GFX9-O0-NEXT:    v_writelane_b32 v5, s1, 6991; GFX9-O0-NEXT:    s_or_saveexec_b64 s[12:13], -1992; GFX9-O0-NEXT:    buffer_store_dword v5, off, s[16:19], 0 ; 4-byte Folded Spill993; GFX9-O0-NEXT:    s_mov_b64 exec, s[12:13]994; GFX9-O0-NEXT:    s_and_b64 s[0:1], s[0:1], s[2:3]995; GFX9-O0-NEXT:    s_mov_b64 exec, s[0:1]996; GFX9-O0-NEXT:    s_cbranch_execz .LBB8_2997; GFX9-O0-NEXT:  ; %bb.1: ; %if998; GFX9-O0-NEXT:    buffer_load_dword v3, off, s[16:19], 0 offset:12 ; 4-byte Folded Reload999; GFX9-O0-NEXT:    buffer_load_dword v4, off, s[16:19], 0 offset:16 ; 4-byte Folded Reload1000; GFX9-O0-NEXT:    s_waitcnt vmcnt(0)1001; GFX9-O0-NEXT:    v_mov_b32_e32 v0, v41002; GFX9-O0-NEXT:    s_or_saveexec_b64 s[0:1], -11003; GFX9-O0-NEXT:    v_mov_b32_e32 v1, 01004; GFX9-O0-NEXT:    s_mov_b64 exec, s[0:1]1005; GFX9-O0-NEXT:    ; implicit-def: $sgpr0_sgpr11006; GFX9-O0-NEXT:    s_or_saveexec_b64 s[0:1], -11007; GFX9-O0-NEXT:    v_cndmask_b32_e64 v2, v1, v0, s[0:1]1008; GFX9-O0-NEXT:    s_nop 11009; GFX9-O0-NEXT:    v_mov_b32_dpp v1, v2 row_bcast:31 row_mask:0xc bank_mask:0xf1010; GFX9-O0-NEXT:    v_add_u32_e64 v1, v2, v11011; GFX9-O0-NEXT:    s_mov_b64 exec, s[0:1]1012; GFX9-O0-NEXT:    v_mov_b32_e32 v0, v11013; GFX9-O0-NEXT:    buffer_store_dword v0, off, s[16:19], 0 offset:4 ; 4-byte Folded Spill1014; GFX9-O0-NEXT:  .LBB8_2: ; %merge1015; GFX9-O0-NEXT:    s_or_saveexec_b64 s[12:13], -11016; GFX9-O0-NEXT:    buffer_load_dword v5, off, s[16:19], 0 ; 4-byte Folded Reload1017; GFX9-O0-NEXT:    s_mov_b64 exec, s[12:13]1018; GFX9-O0-NEXT:    s_waitcnt vmcnt(0)1019; GFX9-O0-NEXT:    v_readlane_b32 s4, v5, 51020; GFX9-O0-NEXT:    v_readlane_b32 s5, v5, 61021; GFX9-O0-NEXT:    s_or_b64 exec, exec, s[4:5]1022; GFX9-O0-NEXT:    v_readlane_b32 s2, v5, 11023; GFX9-O0-NEXT:    v_readlane_b32 s3, v5, 21024; GFX9-O0-NEXT:    v_readlane_b32 s0, v5, 31025; GFX9-O0-NEXT:    v_readlane_b32 s1, v5, 41026; GFX9-O0-NEXT:    buffer_load_dword v0, off, s[16:19], 0 offset:8 ; 4-byte Folded Reload1027; GFX9-O0-NEXT:    buffer_load_dword v3, off, s[16:19], 0 offset:4 ; 4-byte Folded Reload1028; GFX9-O0-NEXT:    s_waitcnt vmcnt(0)1029; GFX9-O0-NEXT:    v_cmp_eq_u32_e64 s[4:5], v0, v31030; GFX9-O0-NEXT:    v_cndmask_b32_e64 v0, 0, 1, s[4:5]1031; GFX9-O0-NEXT:    s_mov_b32 s4, 11032; GFX9-O0-NEXT:    v_lshlrev_b32_e64 v0, s4, v01033; GFX9-O0-NEXT:    s_mov_b32 s4, 21034; GFX9-O0-NEXT:    v_and_b32_e64 v0, v0, s41035; GFX9-O0-NEXT:    s_mov_b32 s6, s11036; GFX9-O0-NEXT:    ; kill: def $sgpr0 killed $sgpr0 killed $sgpr0_sgpr11037; GFX9-O0-NEXT:    s_mov_b32 s4, s31038; GFX9-O0-NEXT:    s_mov_b32 s5, s21039; GFX9-O0-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr31040; GFX9-O0-NEXT:    s_mov_b32 s1, s61041; GFX9-O0-NEXT:    s_mov_b32 s2, s51042; GFX9-O0-NEXT:    s_mov_b32 s3, s41043; GFX9-O0-NEXT:    s_mov_b32 s4, 01044; GFX9-O0-NEXT:    buffer_store_dword v0, off, s[0:3], s4 offset:41045; GFX9-O0-NEXT:    s_endpgm1046;1047; GFX9-O3-LABEL: strict_wwm_cfg:1048; GFX9-O3:       ; %bb.0: ; %entry1049; GFX9-O3-NEXT:    buffer_load_dwordx2 v[3:4], off, s[0:3], 01050; GFX9-O3-NEXT:    v_mov_b32_e32 v5, 01051; GFX9-O3-NEXT:    s_or_saveexec_b64 s[4:5], -11052; GFX9-O3-NEXT:    v_mov_b32_e32 v1, 01053; GFX9-O3-NEXT:    s_waitcnt vmcnt(0)1054; GFX9-O3-NEXT:    v_cndmask_b32_e64 v2, 0, v3, s[4:5]1055; GFX9-O3-NEXT:    s_nop 11056; GFX9-O3-NEXT:    v_mov_b32_dpp v1, v2 row_bcast:31 row_mask:0xc bank_mask:0xf1057; GFX9-O3-NEXT:    v_add_u32_e32 v1, v2, v11058; GFX9-O3-NEXT:    s_mov_b64 exec, s[4:5]1059; GFX9-O3-NEXT:    v_mov_b32_e32 v3, v11060; GFX9-O3-NEXT:    v_cmp_eq_u32_e32 vcc, 0, v01061; GFX9-O3-NEXT:    s_and_saveexec_b64 s[4:5], vcc1062; GFX9-O3-NEXT:  ; %bb.1: ; %if1063; GFX9-O3-NEXT:    s_or_saveexec_b64 s[6:7], -11064; GFX9-O3-NEXT:    v_mov_b32_e32 v1, 01065; GFX9-O3-NEXT:    v_cndmask_b32_e64 v2, 0, v4, s[6:7]1066; GFX9-O3-NEXT:    s_nop 11067; GFX9-O3-NEXT:    v_mov_b32_dpp v1, v2 row_bcast:31 row_mask:0xc bank_mask:0xf1068; GFX9-O3-NEXT:    v_add_u32_e32 v1, v2, v11069; GFX9-O3-NEXT:    s_mov_b64 exec, s[6:7]1070; GFX9-O3-NEXT:    v_mov_b32_e32 v5, v11071; GFX9-O3-NEXT:  ; %bb.2: ; %merge1072; GFX9-O3-NEXT:    s_or_b64 exec, exec, s[4:5]1073; GFX9-O3-NEXT:    v_cmp_eq_u32_e32 vcc, v3, v51074; GFX9-O3-NEXT:    v_cndmask_b32_e64 v0, 0, 1, vcc1075; GFX9-O3-NEXT:    v_lshlrev_b32_e32 v0, 1, v01076; GFX9-O3-NEXT:    v_and_b32_e32 v0, 2, v01077; GFX9-O3-NEXT:    buffer_store_dword v0, off, s[0:3], 0 offset:41078; GFX9-O3-NEXT:    s_endpgm1079entry:1080  %tmp100 = call <2 x float> @llvm.amdgcn.raw.ptr.buffer.load.v2f32(ptr addrspace(8) %tmp14, i32 0, i32 0, i32 0)1081  %tmp101 = bitcast <2 x float> %tmp100 to <2 x i32>1082  %tmp102 = extractelement <2 x i32> %tmp101, i32 01083  %tmp105 = tail call i32 @llvm.amdgcn.set.inactive.i32(i32 %tmp102, i32 0)1084 1085  %tmp120 = tail call i32 @llvm.amdgcn.update.dpp.i32(i32 0, i32 %tmp105, i32 323, i32 12, i32 15, i1 false)1086  %tmp121 = add i32 %tmp105, %tmp1201087  %tmp122 = tail call i32 @llvm.amdgcn.strict.wwm.i32(i32 %tmp121)1088 1089  %cond = icmp eq i32 %arg, 01090  br i1 %cond, label %if, label %merge1091if:1092  %tmp103 = extractelement <2 x i32> %tmp101, i32 11093  %tmp107 = tail call i32 @llvm.amdgcn.set.inactive.i32(i32 %tmp103, i32 0)1094 1095  %tmp135 = tail call i32 @llvm.amdgcn.update.dpp.i32(i32 0, i32 %tmp107, i32 323, i32 12, i32 15, i1 false)1096  %tmp136 = add i32 %tmp107, %tmp1351097  %tmp137 = tail call i32 @llvm.amdgcn.strict.wwm.i32(i32 %tmp136)1098  br label %merge1099 1100merge:1101  %merge_value = phi i32 [ 0, %entry ], [%tmp137, %if ]1102  %tmp138 = icmp eq i32 %tmp122, %merge_value1103  %tmp139 = sext i1 %tmp138 to i321104  %tmp140 = shl nsw i32 %tmp139, 11105  %tmp141 = and i32 %tmp140, 21106  %tmp145 = bitcast i32 %tmp141 to float1107  call void @llvm.amdgcn.raw.ptr.buffer.store.f32(float %tmp145, ptr addrspace(8) %tmp14, i32 4, i32 0, i32 0)1108  ret void1109}1110 1111define hidden i32 @strict_wwm_called(i32 %a) noinline {1112; GFX9-O0-LABEL: strict_wwm_called:1113; GFX9-O0:       ; %bb.0:1114; GFX9-O0-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1115; GFX9-O0-NEXT:    v_add_u32_e64 v1, v0, v01116; GFX9-O0-NEXT:    v_mul_lo_u32 v0, v1, v01117; GFX9-O0-NEXT:    v_sub_u32_e64 v0, v0, v11118; GFX9-O0-NEXT:    s_setpc_b64 s[30:31]1119;1120; GFX9-O3-LABEL: strict_wwm_called:1121; GFX9-O3:       ; %bb.0:1122; GFX9-O3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1123; GFX9-O3-NEXT:    v_add_u32_e32 v1, v0, v01124; GFX9-O3-NEXT:    v_mul_lo_u32 v0, v1, v01125; GFX9-O3-NEXT:    v_sub_u32_e32 v0, v0, v11126; GFX9-O3-NEXT:    s_setpc_b64 s[30:31]1127  %add = add i32 %a, %a1128  %mul = mul i32 %add, %a1129  %sub = sub i32 %mul, %add1130  ret i32 %sub1131}1132 1133define amdgpu_kernel void @strict_wwm_call(ptr addrspace(8) %tmp14, i32 %arg) {1134; GFX9-O0-LABEL: strict_wwm_call:1135; GFX9-O0:       ; %bb.0:1136; GFX9-O0-NEXT:    s_mov_b32 s32, 01137; GFX9-O0-NEXT:    s_mov_b32 s24, SCRATCH_RSRC_DWORD01138; GFX9-O0-NEXT:    s_mov_b32 s25, SCRATCH_RSRC_DWORD11139; GFX9-O0-NEXT:    s_mov_b32 s26, -11140; GFX9-O0-NEXT:    s_mov_b32 s27, 0xe000001141; GFX9-O0-NEXT:    s_add_u32 s24, s24, s111142; GFX9-O0-NEXT:    s_addc_u32 s25, s25, 01143; GFX9-O0-NEXT:    s_or_saveexec_b64 s[12:13], -11144; GFX9-O0-NEXT:    ; implicit-def: $vgpr3 : SGPR spill to VGPR lane1145; GFX9-O0-NEXT:    v_writelane_b32 v3, s12, 01146; GFX9-O0-NEXT:    v_writelane_b32 v3, s13, 11147; GFX9-O0-NEXT:    s_mov_b32 s14, s101148; GFX9-O0-NEXT:    s_mov_b32 s13, s91149; GFX9-O0-NEXT:    s_mov_b32 s12, s81150; GFX9-O0-NEXT:    s_mov_b64 s[10:11], s[6:7]1151; GFX9-O0-NEXT:    v_writelane_b32 v3, s4, 21152; GFX9-O0-NEXT:    v_writelane_b32 v3, s5, 31153; GFX9-O0-NEXT:    s_mov_b64 s[6:7], s[2:3]1154; GFX9-O0-NEXT:    v_readlane_b32 s2, v3, 01155; GFX9-O0-NEXT:    v_readlane_b32 s3, v3, 11156; GFX9-O0-NEXT:    s_mov_b64 s[4:5], s[0:1]1157; GFX9-O0-NEXT:    v_readlane_b32 s0, v3, 21158; GFX9-O0-NEXT:    v_readlane_b32 s1, v3, 31159; GFX9-O0-NEXT:    v_mov_b32_e32 v4, v21160; GFX9-O0-NEXT:    v_mov_b32_e32 v5, v11161; GFX9-O0-NEXT:    v_mov_b32_e32 v6, v01162; GFX9-O0-NEXT:    s_mov_b64 exec, s[2:3]1163; GFX9-O0-NEXT:    s_load_dwordx2 s[16:17], s[0:1], 0x241164; GFX9-O0-NEXT:    s_load_dwordx2 s[8:9], s[0:1], 0x2c1165; GFX9-O0-NEXT:    s_load_dword s2, s[0:1], 0x341166; GFX9-O0-NEXT:    s_waitcnt lgkmcnt(0)1167; GFX9-O0-NEXT:    s_mov_b32 s3, s91168; GFX9-O0-NEXT:    ; kill: def $sgpr8 killed $sgpr8 killed $sgpr8_sgpr91169; GFX9-O0-NEXT:    s_mov_b32 s9, s171170; GFX9-O0-NEXT:    ; kill: def $sgpr16 killed $sgpr16 killed $sgpr16_sgpr171171; GFX9-O0-NEXT:    ; kill: def $sgpr16 killed $sgpr16 def $sgpr16_sgpr17_sgpr18_sgpr191172; GFX9-O0-NEXT:    s_mov_b32 s17, s91173; GFX9-O0-NEXT:    s_mov_b32 s18, s81174; GFX9-O0-NEXT:    s_mov_b32 s19, s31175; GFX9-O0-NEXT:    v_writelane_b32 v3, s16, 41176; GFX9-O0-NEXT:    v_writelane_b32 v3, s17, 51177; GFX9-O0-NEXT:    v_writelane_b32 v3, s18, 61178; GFX9-O0-NEXT:    v_writelane_b32 v3, s19, 71179; GFX9-O0-NEXT:    s_mov_b32 s8, 01180; GFX9-O0-NEXT:    v_writelane_b32 v3, s8, 81181; GFX9-O0-NEXT:    ; implicit-def: $sgpr16_sgpr171182; GFX9-O0-NEXT:    v_mov_b32_e32 v0, s21183; GFX9-O0-NEXT:    s_or_saveexec_b64 s[2:3], -11184; GFX9-O0-NEXT:    v_writelane_b32 v3, s2, 91185; GFX9-O0-NEXT:    v_writelane_b32 v3, s3, 101186; GFX9-O0-NEXT:    v_mov_b32_e32 v7, s81187; GFX9-O0-NEXT:    v_cndmask_b32_e64 v7, v7, v0, s[2:3]1188; GFX9-O0-NEXT:    s_mov_b64 s[8:9], 561189; GFX9-O0-NEXT:    s_mov_b32 s2, s01190; GFX9-O0-NEXT:    s_mov_b32 s0, s11191; GFX9-O0-NEXT:    s_mov_b32 s3, s81192; GFX9-O0-NEXT:    s_mov_b32 s1, s91193; GFX9-O0-NEXT:    s_add_u32 s8, s2, s31194; GFX9-O0-NEXT:    s_addc_u32 s0, s0, s11195; GFX9-O0-NEXT:    ; kill: def $sgpr8 killed $sgpr8 def $sgpr8_sgpr91196; GFX9-O0-NEXT:    s_mov_b32 s9, s01197; GFX9-O0-NEXT:    s_getpc_b64 s[16:17]1198; GFX9-O0-NEXT:    s_add_u32 s16, s16, strict_wwm_called@rel32@lo+41199; GFX9-O0-NEXT:    s_addc_u32 s17, s17, strict_wwm_called@rel32@hi+121200; GFX9-O0-NEXT:    s_mov_b64 s[0:1], s[24:25]1201; GFX9-O0-NEXT:    s_mov_b64 s[2:3], s[26:27]1202; GFX9-O0-NEXT:    s_mov_b32 s15, 201203; GFX9-O0-NEXT:    v_lshlrev_b32_e64 v4, s15, v41204; GFX9-O0-NEXT:    s_mov_b32 s15, 101205; GFX9-O0-NEXT:    v_lshlrev_b32_e64 v5, s15, v51206; GFX9-O0-NEXT:    v_or3_b32 v4, v6, v5, v41207; GFX9-O0-NEXT:    ; implicit-def: $sgpr151208; GFX9-O0-NEXT:    v_mov_b32_e32 v31, v41209; GFX9-O0-NEXT:    v_mov_b32_e32 v0, v71210; GFX9-O0-NEXT:    s_swappc_b64 s[30:31], s[16:17]1211; GFX9-O0-NEXT:    v_readlane_b32 s0, v3, 41212; GFX9-O0-NEXT:    v_readlane_b32 s1, v3, 51213; GFX9-O0-NEXT:    v_readlane_b32 s2, v3, 61214; GFX9-O0-NEXT:    v_readlane_b32 s3, v3, 71215; GFX9-O0-NEXT:    v_readlane_b32 s6, v3, 91216; GFX9-O0-NEXT:    v_readlane_b32 s7, v3, 101217; GFX9-O0-NEXT:    v_readlane_b32 s4, v3, 81218; GFX9-O0-NEXT:    v_mov_b32_e32 v3, v01219; GFX9-O0-NEXT:    v_add_u32_e64 v3, v3, v71220; GFX9-O0-NEXT:    s_mov_b64 exec, s[6:7]1221; GFX9-O0-NEXT:    v_mov_b32_e32 v0, v31222; GFX9-O0-NEXT:    s_nop 01223; GFX9-O0-NEXT:    buffer_store_dword v0, off, s[0:3], s4 offset:41224; GFX9-O0-NEXT:    s_endpgm1225;1226; GFX9-O3-LABEL: strict_wwm_call:1227; GFX9-O3:       ; %bb.0:1228; GFX9-O3-NEXT:    s_mov_b32 s24, SCRATCH_RSRC_DWORD01229; GFX9-O3-NEXT:    s_mov_b32 s25, SCRATCH_RSRC_DWORD11230; GFX9-O3-NEXT:    s_mov_b32 s26, -11231; GFX9-O3-NEXT:    s_mov_b32 s27, 0xe000001232; GFX9-O3-NEXT:    s_add_u32 s24, s24, s111233; GFX9-O3-NEXT:    s_mov_b32 s32, 01234; GFX9-O3-NEXT:    s_addc_u32 s25, s25, 01235; GFX9-O3-NEXT:    s_or_saveexec_b64 s[16:17], -11236; GFX9-O3-NEXT:    s_mov_b32 s14, s101237; GFX9-O3-NEXT:    s_mov_b32 s13, s91238; GFX9-O3-NEXT:    s_mov_b32 s12, s81239; GFX9-O3-NEXT:    s_mov_b64 s[10:11], s[6:7]1240; GFX9-O3-NEXT:    v_mov_b32_e32 v3, v21241; GFX9-O3-NEXT:    v_mov_b32_e32 v4, v11242; GFX9-O3-NEXT:    v_mov_b32_e32 v5, v01243; GFX9-O3-NEXT:    s_mov_b64 exec, s[16:17]1244; GFX9-O3-NEXT:    s_load_dword s6, s[4:5], 0x341245; GFX9-O3-NEXT:    s_load_dwordx4 s[16:19], s[4:5], 0x241246; GFX9-O3-NEXT:    s_waitcnt lgkmcnt(0)1247; GFX9-O3-NEXT:    v_mov_b32_e32 v0, s61248; GFX9-O3-NEXT:    s_or_saveexec_b64 s[20:21], -11249; GFX9-O3-NEXT:    s_add_u32 s8, s4, 561250; GFX9-O3-NEXT:    v_lshlrev_b32_e32 v3, 20, v31251; GFX9-O3-NEXT:    v_lshlrev_b32_e32 v4, 10, v41252; GFX9-O3-NEXT:    v_cndmask_b32_e64 v6, 0, v0, s[20:21]1253; GFX9-O3-NEXT:    s_addc_u32 s9, s5, 01254; GFX9-O3-NEXT:    v_or3_b32 v3, v5, v4, v31255; GFX9-O3-NEXT:    s_mov_b64 s[4:5], s[0:1]1256; GFX9-O3-NEXT:    s_mov_b64 s[6:7], s[2:3]1257; GFX9-O3-NEXT:    s_mov_b64 s[0:1], s[24:25]1258; GFX9-O3-NEXT:    s_getpc_b64 s[22:23]1259; GFX9-O3-NEXT:    s_add_u32 s22, s22, strict_wwm_called@rel32@lo+41260; GFX9-O3-NEXT:    s_addc_u32 s23, s23, strict_wwm_called@rel32@hi+121261; GFX9-O3-NEXT:    v_mov_b32_e32 v31, v31262; GFX9-O3-NEXT:    s_mov_b64 s[2:3], s[26:27]1263; GFX9-O3-NEXT:    v_mov_b32_e32 v0, v61264; GFX9-O3-NEXT:    s_swappc_b64 s[30:31], s[22:23]1265; GFX9-O3-NEXT:    v_mov_b32_e32 v3, v01266; GFX9-O3-NEXT:    v_add_u32_e32 v3, v3, v61267; GFX9-O3-NEXT:    s_mov_b64 exec, s[20:21]1268; GFX9-O3-NEXT:    v_mov_b32_e32 v0, v31269; GFX9-O3-NEXT:    buffer_store_dword v0, off, s[16:19], 0 offset:41270; GFX9-O3-NEXT:    s_endpgm1271 1272 1273  %tmp107 = tail call i32 @llvm.amdgcn.set.inactive.i32(i32 %arg, i32 0)1274  %tmp134 = call i32 @strict_wwm_called(i32 %tmp107)1275  %tmp136 = add i32 %tmp134, %tmp1071276  %tmp137 = tail call i32 @llvm.amdgcn.strict.wwm.i32(i32 %tmp136)1277  call void @llvm.amdgcn.raw.ptr.buffer.store.i32(i32 %tmp137, ptr addrspace(8) %tmp14, i32 4, i32 0, i32 0)1278  ret void1279}1280 1281define i64 @strict_wwm_called_i64(i64 %a) noinline {1282; GFX9-O0-LABEL: strict_wwm_called_i64:1283; GFX9-O0:       ; %bb.0:1284; GFX9-O0-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1285; GFX9-O0-NEXT:    v_mov_b32_e32 v2, v01286; GFX9-O0-NEXT:    ; kill: def $vgpr2 killed $vgpr2 def $vgpr2_vgpr3 killed $exec1287; GFX9-O0-NEXT:    v_mov_b32_e32 v3, v11288; GFX9-O0-NEXT:    v_mov_b32_e32 v4, v21289; GFX9-O0-NEXT:    v_mov_b32_e32 v5, v21290; GFX9-O0-NEXT:    v_mov_b32_e32 v0, v31291; GFX9-O0-NEXT:    v_mov_b32_e32 v1, v31292; GFX9-O0-NEXT:    v_add_co_u32_e64 v4, s[4:5], v4, v51293; GFX9-O0-NEXT:    v_addc_co_u32_e64 v0, s[4:5], v0, v1, s[4:5]1294; GFX9-O0-NEXT:    ; kill: def $vgpr4 killed $vgpr4 def $vgpr4_vgpr5 killed $exec1295; GFX9-O0-NEXT:    v_mov_b32_e32 v5, v01296; GFX9-O0-NEXT:    s_mov_b32 s4, 321297; GFX9-O0-NEXT:    v_mov_b32_e32 v0, v21298; GFX9-O0-NEXT:    v_mov_b32_e32 v1, v31299; GFX9-O0-NEXT:    v_lshrrev_b64 v[0:1], s4, v[0:1]1300; GFX9-O0-NEXT:    v_mov_b32_e32 v1, v01301; GFX9-O0-NEXT:    v_mov_b32_e32 v0, v41302; GFX9-O0-NEXT:    v_mul_lo_u32 v1, v0, v11303; GFX9-O0-NEXT:    v_mov_b32_e32 v3, v21304; GFX9-O0-NEXT:    v_lshrrev_b64 v[6:7], s4, v[4:5]1305; GFX9-O0-NEXT:    v_mov_b32_e32 v2, v61306; GFX9-O0-NEXT:    v_mul_lo_u32 v2, v2, v31307; GFX9-O0-NEXT:    v_mad_u64_u32 v[6:7], s[6:7], v0, v3, 01308; GFX9-O0-NEXT:    v_mov_b32_e32 v0, v71309; GFX9-O0-NEXT:    v_add3_u32 v0, v0, v1, v21310; GFX9-O0-NEXT:    ; implicit-def: $sgpr51311; GFX9-O0-NEXT:    ; implicit-def: $sgpr61312; GFX9-O0-NEXT:    ; kill: def $vgpr0 killed $vgpr0 def $vgpr0_vgpr1 killed $exec1313; GFX9-O0-NEXT:    v_mov_b32_e32 v1, s51314; GFX9-O0-NEXT:    v_lshlrev_b64 v[1:2], s4, v[0:1]1315; GFX9-O0-NEXT:    v_mov_b32_e32 v3, v21316; GFX9-O0-NEXT:    ; kill: def $vgpr6 killed $vgpr6 killed $vgpr6_vgpr7 killed $exec1317; GFX9-O0-NEXT:    v_mov_b32_e32 v0, 01318; GFX9-O0-NEXT:    ; kill: def $vgpr6 killed $vgpr6 def $vgpr6_vgpr7 killed $exec1319; GFX9-O0-NEXT:    v_mov_b32_e32 v7, v01320; GFX9-O0-NEXT:    v_mov_b32_e32 v0, v71321; GFX9-O0-NEXT:    v_or_b32_e64 v0, v0, v31322; GFX9-O0-NEXT:    v_mov_b32_e32 v2, v11323; GFX9-O0-NEXT:    v_mov_b32_e32 v1, v61324; GFX9-O0-NEXT:    v_or_b32_e64 v6, v1, v21325; GFX9-O0-NEXT:    ; kill: def $vgpr6 killed $vgpr6 def $vgpr6_vgpr7 killed $exec1326; GFX9-O0-NEXT:    v_mov_b32_e32 v7, v01327; GFX9-O0-NEXT:    v_mov_b32_e32 v1, v61328; GFX9-O0-NEXT:    v_mov_b32_e32 v3, v41329; GFX9-O0-NEXT:    v_mov_b32_e32 v0, v71330; GFX9-O0-NEXT:    v_mov_b32_e32 v2, v51331; GFX9-O0-NEXT:    v_sub_co_u32_e64 v1, s[6:7], v1, v31332; GFX9-O0-NEXT:    v_subb_co_u32_e64 v0, s[6:7], v0, v2, s[6:7]1333; GFX9-O0-NEXT:    ; kill: def $vgpr1 killed $vgpr1 def $vgpr1_vgpr2 killed $exec1334; GFX9-O0-NEXT:    v_mov_b32_e32 v2, v01335; GFX9-O0-NEXT:    v_mov_b32_e32 v0, v11336; GFX9-O0-NEXT:    v_lshrrev_b64 v[1:2], s4, v[1:2]1337; GFX9-O0-NEXT:    ; kill: def $vgpr1 killed $vgpr1 killed $vgpr1_vgpr2 killed $exec1338; GFX9-O0-NEXT:    s_setpc_b64 s[30:31]1339;1340; GFX9-O3-LABEL: strict_wwm_called_i64:1341; GFX9-O3:       ; %bb.0:1342; GFX9-O3-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1343; GFX9-O3-NEXT:    v_add_co_u32_e32 v2, vcc, v0, v01344; GFX9-O3-NEXT:    v_addc_co_u32_e32 v3, vcc, v1, v1, vcc1345; GFX9-O3-NEXT:    v_mul_lo_u32 v4, v3, v01346; GFX9-O3-NEXT:    v_mul_lo_u32 v5, v2, v11347; GFX9-O3-NEXT:    v_mad_u64_u32 v[0:1], s[4:5], v2, v0, 01348; GFX9-O3-NEXT:    v_add3_u32 v1, v1, v5, v41349; GFX9-O3-NEXT:    v_sub_co_u32_e32 v0, vcc, v0, v21350; GFX9-O3-NEXT:    v_subb_co_u32_e32 v1, vcc, v1, v3, vcc1351; GFX9-O3-NEXT:    s_setpc_b64 s[30:31]1352  %add = add i64 %a, %a1353  %mul = mul i64 %add, %a1354  %sub = sub i64 %mul, %add1355  ret i64 %sub1356}1357 1358define amdgpu_kernel void @strict_wwm_call_i64(ptr addrspace(8) %tmp14, i64 %arg) {1359; GFX9-O0-LABEL: strict_wwm_call_i64:1360; GFX9-O0:       ; %bb.0:1361; GFX9-O0-NEXT:    s_mov_b32 s32, 01362; GFX9-O0-NEXT:    s_mov_b32 s24, SCRATCH_RSRC_DWORD01363; GFX9-O0-NEXT:    s_mov_b32 s25, SCRATCH_RSRC_DWORD11364; GFX9-O0-NEXT:    s_mov_b32 s26, -11365; GFX9-O0-NEXT:    s_mov_b32 s27, 0xe000001366; GFX9-O0-NEXT:    s_add_u32 s24, s24, s111367; GFX9-O0-NEXT:    s_addc_u32 s25, s25, 01368; GFX9-O0-NEXT:    s_or_saveexec_b64 s[12:13], -11369; GFX9-O0-NEXT:    ; implicit-def: $vgpr8 : SGPR spill to VGPR lane1370; GFX9-O0-NEXT:    v_writelane_b32 v8, s12, 01371; GFX9-O0-NEXT:    v_writelane_b32 v8, s13, 11372; GFX9-O0-NEXT:    s_mov_b32 s14, s101373; GFX9-O0-NEXT:    s_mov_b32 s13, s91374; GFX9-O0-NEXT:    s_mov_b32 s12, s81375; GFX9-O0-NEXT:    s_mov_b64 s[10:11], s[6:7]1376; GFX9-O0-NEXT:    v_writelane_b32 v8, s4, 21377; GFX9-O0-NEXT:    v_writelane_b32 v8, s5, 31378; GFX9-O0-NEXT:    s_mov_b64 s[6:7], s[2:3]1379; GFX9-O0-NEXT:    v_readlane_b32 s2, v8, 01380; GFX9-O0-NEXT:    v_readlane_b32 s3, v8, 11381; GFX9-O0-NEXT:    s_mov_b64 s[4:5], s[0:1]1382; GFX9-O0-NEXT:    v_readlane_b32 s0, v8, 21383; GFX9-O0-NEXT:    v_readlane_b32 s1, v8, 31384; GFX9-O0-NEXT:    v_mov_b32_e32 v3, v21385; GFX9-O0-NEXT:    v_mov_b32_e32 v4, v11386; GFX9-O0-NEXT:    v_mov_b32_e32 v5, v01387; GFX9-O0-NEXT:    s_mov_b64 exec, s[2:3]1388; GFX9-O0-NEXT:    s_load_dwordx2 s[16:17], s[0:1], 0x241389; GFX9-O0-NEXT:    s_load_dwordx2 s[18:19], s[0:1], 0x2c1390; GFX9-O0-NEXT:    s_load_dwordx2 s[2:3], s[0:1], 0x341391; GFX9-O0-NEXT:    s_waitcnt lgkmcnt(0)1392; GFX9-O0-NEXT:    s_mov_b32 s8, s191393; GFX9-O0-NEXT:    s_mov_b32 s9, s181394; GFX9-O0-NEXT:    s_mov_b32 s15, s171395; GFX9-O0-NEXT:    ; kill: def $sgpr16 killed $sgpr16 killed $sgpr16_sgpr171396; GFX9-O0-NEXT:    ; kill: def $sgpr16 killed $sgpr16 def $sgpr16_sgpr17_sgpr18_sgpr191397; GFX9-O0-NEXT:    s_mov_b32 s17, s151398; GFX9-O0-NEXT:    s_mov_b32 s18, s91399; GFX9-O0-NEXT:    s_mov_b32 s19, s81400; GFX9-O0-NEXT:    v_writelane_b32 v8, s16, 41401; GFX9-O0-NEXT:    v_writelane_b32 v8, s17, 51402; GFX9-O0-NEXT:    v_writelane_b32 v8, s18, 61403; GFX9-O0-NEXT:    v_writelane_b32 v8, s19, 71404; GFX9-O0-NEXT:    s_mov_b64 s[8:9], 01405; GFX9-O0-NEXT:    s_mov_b32 s15, s91406; GFX9-O0-NEXT:    s_mov_b32 s16, s31407; GFX9-O0-NEXT:    ; implicit-def: $sgpr18_sgpr191408; GFX9-O0-NEXT:    v_mov_b32_e32 v0, s161409; GFX9-O0-NEXT:    s_or_saveexec_b64 s[16:17], -11410; GFX9-O0-NEXT:    v_mov_b32_e32 v6, s151411; GFX9-O0-NEXT:    v_cndmask_b32_e64 v6, v6, v0, s[16:17]1412; GFX9-O0-NEXT:    s_mov_b64 exec, s[16:17]1413; GFX9-O0-NEXT:    ; kill: def $sgpr8 killed $sgpr8 killed $sgpr8_sgpr91414; GFX9-O0-NEXT:    ; kill: def $sgpr2 killed $sgpr2 killed $sgpr2_sgpr31415; GFX9-O0-NEXT:    ; implicit-def: $sgpr16_sgpr171416; GFX9-O0-NEXT:    v_mov_b32_e32 v0, s21417; GFX9-O0-NEXT:    s_or_saveexec_b64 s[2:3], -11418; GFX9-O0-NEXT:    v_writelane_b32 v8, s2, 81419; GFX9-O0-NEXT:    v_writelane_b32 v8, s3, 91420; GFX9-O0-NEXT:    v_mov_b32_e32 v7, s81421; GFX9-O0-NEXT:    v_cndmask_b32_e64 v7, v7, v0, s[2:3]1422; GFX9-O0-NEXT:    v_mov_b32_e32 v9, v71423; GFX9-O0-NEXT:    v_mov_b32_e32 v10, v61424; GFX9-O0-NEXT:    s_mov_b32 s2, 321425; GFX9-O0-NEXT:    v_lshrrev_b64 v[11:12], s2, v[9:10]1426; GFX9-O0-NEXT:    v_mov_b32_e32 v6, v111427; GFX9-O0-NEXT:    s_mov_b64 s[8:9], 601428; GFX9-O0-NEXT:    s_mov_b32 s2, s01429; GFX9-O0-NEXT:    s_mov_b32 s0, s11430; GFX9-O0-NEXT:    s_mov_b32 s3, s81431; GFX9-O0-NEXT:    s_mov_b32 s1, s91432; GFX9-O0-NEXT:    s_add_u32 s8, s2, s31433; GFX9-O0-NEXT:    s_addc_u32 s0, s0, s11434; GFX9-O0-NEXT:    ; kill: def $sgpr8 killed $sgpr8 def $sgpr8_sgpr91435; GFX9-O0-NEXT:    s_mov_b32 s9, s01436; GFX9-O0-NEXT:    s_getpc_b64 s[0:1]1437; GFX9-O0-NEXT:    s_add_u32 s0, s0, strict_wwm_called_i64@gotpcrel32@lo+41438; GFX9-O0-NEXT:    s_addc_u32 s1, s1, strict_wwm_called_i64@gotpcrel32@hi+121439; GFX9-O0-NEXT:    s_load_dwordx2 s[16:17], s[0:1], 0x01440; GFX9-O0-NEXT:    s_mov_b64 s[0:1], s[24:25]1441; GFX9-O0-NEXT:    s_mov_b64 s[2:3], s[26:27]1442; GFX9-O0-NEXT:    s_mov_b32 s15, 201443; GFX9-O0-NEXT:    v_lshlrev_b32_e64 v3, s15, v31444; GFX9-O0-NEXT:    s_mov_b32 s15, 101445; GFX9-O0-NEXT:    v_lshlrev_b32_e64 v4, s15, v41446; GFX9-O0-NEXT:    v_or3_b32 v3, v5, v4, v31447; GFX9-O0-NEXT:    ; implicit-def: $sgpr151448; GFX9-O0-NEXT:    v_mov_b32_e32 v31, v31449; GFX9-O0-NEXT:    v_mov_b32_e32 v0, v71450; GFX9-O0-NEXT:    v_mov_b32_e32 v1, v61451; GFX9-O0-NEXT:    s_waitcnt lgkmcnt(0)1452; GFX9-O0-NEXT:    s_swappc_b64 s[30:31], s[16:17]1453; GFX9-O0-NEXT:    v_readlane_b32 s0, v8, 41454; GFX9-O0-NEXT:    v_readlane_b32 s1, v8, 51455; GFX9-O0-NEXT:    v_readlane_b32 s2, v8, 61456; GFX9-O0-NEXT:    v_readlane_b32 s3, v8, 71457; GFX9-O0-NEXT:    v_readlane_b32 s4, v8, 81458; GFX9-O0-NEXT:    v_readlane_b32 s5, v8, 91459; GFX9-O0-NEXT:    v_mov_b32_e32 v3, v01460; GFX9-O0-NEXT:    v_mov_b32_e32 v4, v11461; GFX9-O0-NEXT:    v_mov_b32_e32 v5, v91462; GFX9-O0-NEXT:    v_mov_b32_e32 v6, v101463; GFX9-O0-NEXT:    v_add_co_u32_e64 v3, s[6:7], v3, v51464; GFX9-O0-NEXT:    v_addc_co_u32_e64 v4, s[6:7], v4, v6, s[6:7]1465; GFX9-O0-NEXT:    s_mov_b64 exec, s[4:5]1466; GFX9-O0-NEXT:    v_mov_b32_e32 v0, v31467; GFX9-O0-NEXT:    v_mov_b32_e32 v1, v41468; GFX9-O0-NEXT:    s_mov_b32 s4, 01469; GFX9-O0-NEXT:    buffer_store_dwordx2 v[0:1], off, s[0:3], s4 offset:41470; GFX9-O0-NEXT:    s_endpgm1471;1472; GFX9-O3-LABEL: strict_wwm_call_i64:1473; GFX9-O3:       ; %bb.0:1474; GFX9-O3-NEXT:    s_mov_b32 s24, SCRATCH_RSRC_DWORD01475; GFX9-O3-NEXT:    s_mov_b32 s25, SCRATCH_RSRC_DWORD11476; GFX9-O3-NEXT:    s_mov_b32 s26, -11477; GFX9-O3-NEXT:    s_mov_b32 s27, 0xe000001478; GFX9-O3-NEXT:    s_add_u32 s24, s24, s111479; GFX9-O3-NEXT:    s_mov_b32 s32, 01480; GFX9-O3-NEXT:    s_addc_u32 s25, s25, 01481; GFX9-O3-NEXT:    s_or_saveexec_b64 s[16:17], -11482; GFX9-O3-NEXT:    s_mov_b32 s14, s101483; GFX9-O3-NEXT:    s_mov_b32 s13, s91484; GFX9-O3-NEXT:    s_mov_b32 s12, s81485; GFX9-O3-NEXT:    s_mov_b64 s[10:11], s[6:7]1486; GFX9-O3-NEXT:    v_mov_b32_e32 v3, v21487; GFX9-O3-NEXT:    v_mov_b32_e32 v4, v11488; GFX9-O3-NEXT:    v_mov_b32_e32 v5, v01489; GFX9-O3-NEXT:    s_mov_b64 exec, s[16:17]1490; GFX9-O3-NEXT:    s_load_dwordx2 s[6:7], s[4:5], 0x341491; GFX9-O3-NEXT:    s_load_dwordx4 s[16:19], s[4:5], 0x241492; GFX9-O3-NEXT:    s_waitcnt lgkmcnt(0)1493; GFX9-O3-NEXT:    v_mov_b32_e32 v0, s71494; GFX9-O3-NEXT:    s_or_saveexec_b64 s[8:9], -11495; GFX9-O3-NEXT:    v_cndmask_b32_e64 v6, 0, v0, s[8:9]1496; GFX9-O3-NEXT:    s_mov_b64 exec, s[8:9]1497; GFX9-O3-NEXT:    v_mov_b32_e32 v0, s61498; GFX9-O3-NEXT:    s_or_saveexec_b64 s[20:21], -11499; GFX9-O3-NEXT:    s_add_u32 s8, s4, 601500; GFX9-O3-NEXT:    s_addc_u32 s9, s5, 01501; GFX9-O3-NEXT:    s_getpc_b64 s[4:5]1502; GFX9-O3-NEXT:    s_add_u32 s4, s4, strict_wwm_called_i64@gotpcrel32@lo+41503; GFX9-O3-NEXT:    s_addc_u32 s5, s5, strict_wwm_called_i64@gotpcrel32@hi+121504; GFX9-O3-NEXT:    s_load_dwordx2 s[22:23], s[4:5], 0x01505; GFX9-O3-NEXT:    v_lshlrev_b32_e32 v3, 20, v31506; GFX9-O3-NEXT:    v_lshlrev_b32_e32 v4, 10, v41507; GFX9-O3-NEXT:    v_cndmask_b32_e64 v7, 0, v0, s[20:21]1508; GFX9-O3-NEXT:    v_or3_b32 v3, v5, v4, v31509; GFX9-O3-NEXT:    s_mov_b64 s[4:5], s[0:1]1510; GFX9-O3-NEXT:    s_mov_b64 s[6:7], s[2:3]1511; GFX9-O3-NEXT:    s_mov_b64 s[0:1], s[24:25]1512; GFX9-O3-NEXT:    v_mov_b32_e32 v31, v31513; GFX9-O3-NEXT:    s_mov_b64 s[2:3], s[26:27]1514; GFX9-O3-NEXT:    v_mov_b32_e32 v0, v71515; GFX9-O3-NEXT:    v_mov_b32_e32 v1, v61516; GFX9-O3-NEXT:    s_waitcnt lgkmcnt(0)1517; GFX9-O3-NEXT:    s_swappc_b64 s[30:31], s[22:23]1518; GFX9-O3-NEXT:    v_mov_b32_e32 v3, v01519; GFX9-O3-NEXT:    v_mov_b32_e32 v4, v11520; GFX9-O3-NEXT:    v_add_co_u32_e32 v3, vcc, v3, v71521; GFX9-O3-NEXT:    v_addc_co_u32_e32 v4, vcc, v4, v6, vcc1522; GFX9-O3-NEXT:    s_mov_b64 exec, s[20:21]1523; GFX9-O3-NEXT:    v_mov_b32_e32 v0, v31524; GFX9-O3-NEXT:    v_mov_b32_e32 v1, v41525; GFX9-O3-NEXT:    buffer_store_dwordx2 v[0:1], off, s[16:19], 0 offset:41526; GFX9-O3-NEXT:    s_endpgm1527 1528 1529 1530  %tmp107 = tail call i64 @llvm.amdgcn.set.inactive.i64(i64 %arg, i64 0)1531  %tmp134 = call i64 @strict_wwm_called_i64(i64 %tmp107)1532  %tmp136 = add i64 %tmp134, %tmp1071533  %tmp137 = tail call i64 @llvm.amdgcn.strict.wwm.i64(i64 %tmp136)1534  %tmp138 = bitcast i64 %tmp137 to <2 x i32>1535  call void @llvm.amdgcn.raw.ptr.buffer.store.v2i32(<2 x i32> %tmp138, ptr addrspace(8) %tmp14, i32 4, i32 0, i32 0)1536  ret void1537}1538 1539define amdgpu_cs void @strict_wwm_amdgpu_cs_main(<4 x i32> inreg %desc, i32 %index) {1540; GFX9-O0-LABEL: strict_wwm_amdgpu_cs_main:1541; GFX9-O0:       ; %bb.0:1542; GFX9-O0-NEXT:    s_mov_b32 s4, s31543; GFX9-O0-NEXT:    s_mov_b32 s5, s21544; GFX9-O0-NEXT:    s_mov_b32 s6, s11545; GFX9-O0-NEXT:    ; kill: def $sgpr0 killed $sgpr0 def $sgpr0_sgpr1_sgpr2_sgpr31546; GFX9-O0-NEXT:    s_mov_b32 s1, s61547; GFX9-O0-NEXT:    s_mov_b32 s2, s51548; GFX9-O0-NEXT:    s_mov_b32 s3, s41549; GFX9-O0-NEXT:    ; kill: def $sgpr4_sgpr5_sgpr6_sgpr7 killed $sgpr0_sgpr1_sgpr2_sgpr31550; GFX9-O0-NEXT:    s_mov_b32 s4, 51551; GFX9-O0-NEXT:    v_lshlrev_b32_e64 v0, s4, v01552; GFX9-O0-NEXT:    s_mov_b32 s4, 01553; GFX9-O0-NEXT:    buffer_load_dwordx4 v[11:14], v0, s[0:3], s4 offen1554; GFX9-O0-NEXT:    buffer_load_dwordx2 v[4:5], v0, s[0:3], s4 offen offset:161555; GFX9-O0-NEXT:    s_waitcnt vmcnt(1)1556; GFX9-O0-NEXT:    v_mov_b32_e32 v6, v111557; GFX9-O0-NEXT:    v_mov_b32_e32 v7, v121558; GFX9-O0-NEXT:    s_or_saveexec_b64 s[6:7], -11559; GFX9-O0-NEXT:    s_mov_b32 s5, 0x7fffffff1560; GFX9-O0-NEXT:    s_mov_b32 s10, -11561; GFX9-O0-NEXT:    ; kill: def $sgpr10 killed $sgpr10 def $sgpr10_sgpr111562; GFX9-O0-NEXT:    s_mov_b32 s11, s51563; GFX9-O0-NEXT:    s_mov_b32 s8, s111564; GFX9-O0-NEXT:    ; implicit-def: $sgpr12_sgpr131565; GFX9-O0-NEXT:    v_mov_b32_e32 v1, s81566; GFX9-O0-NEXT:    v_cndmask_b32_e64 v1, v1, v7, s[6:7]1567; GFX9-O0-NEXT:    s_mov_b32 s5, s101568; GFX9-O0-NEXT:    ; implicit-def: $sgpr10_sgpr111569; GFX9-O0-NEXT:    v_mov_b32_e32 v2, s51570; GFX9-O0-NEXT:    v_cndmask_b32_e64 v2, v2, v6, s[6:7]1571; GFX9-O0-NEXT:    v_mov_b32_e32 v3, v11572; GFX9-O0-NEXT:    s_mov_b64 exec, s[6:7]1573; GFX9-O0-NEXT:    v_mov_b32_e32 v9, v21574; GFX9-O0-NEXT:    v_mov_b32_e32 v10, v31575; GFX9-O0-NEXT:    v_mov_b32_e32 v6, v131576; GFX9-O0-NEXT:    v_mov_b32_e32 v7, v141577; GFX9-O0-NEXT:    s_or_saveexec_b64 s[6:7], -11578; GFX9-O0-NEXT:    ; implicit-def: $sgpr10_sgpr111579; GFX9-O0-NEXT:    v_mov_b32_e32 v1, s81580; GFX9-O0-NEXT:    v_cndmask_b32_e64 v1, v1, v7, s[6:7]1581; GFX9-O0-NEXT:    ; implicit-def: $sgpr10_sgpr111582; GFX9-O0-NEXT:    v_mov_b32_e32 v2, s51583; GFX9-O0-NEXT:    v_cndmask_b32_e64 v2, v2, v6, s[6:7]1584; GFX9-O0-NEXT:    v_mov_b32_e32 v3, v11585; GFX9-O0-NEXT:    s_mov_b64 exec, s[6:7]1586; GFX9-O0-NEXT:    v_mov_b32_e32 v7, v21587; GFX9-O0-NEXT:    v_mov_b32_e32 v8, v31588; GFX9-O0-NEXT:    s_waitcnt vmcnt(0)1589; GFX9-O0-NEXT:    v_mov_b32_e32 v6, v51590; GFX9-O0-NEXT:    s_or_saveexec_b64 s[6:7], -11591; GFX9-O0-NEXT:    ; implicit-def: $sgpr10_sgpr111592; GFX9-O0-NEXT:    v_mov_b32_e32 v1, s81593; GFX9-O0-NEXT:    v_cndmask_b32_e64 v1, v1, v6, s[6:7]1594; GFX9-O0-NEXT:    s_mov_b64 exec, s[6:7]1595; GFX9-O0-NEXT:    ; kill: def $vgpr4 killed $vgpr4 killed $vgpr4_vgpr5 killed $exec1596; GFX9-O0-NEXT:    s_or_saveexec_b64 s[6:7], -11597; GFX9-O0-NEXT:    ; implicit-def: $sgpr8_sgpr91598; GFX9-O0-NEXT:    v_mov_b32_e32 v2, s51599; GFX9-O0-NEXT:    v_cndmask_b32_e64 v2, v2, v4, s[6:7]1600; GFX9-O0-NEXT:    v_mov_b32_e32 v3, v11601; GFX9-O0-NEXT:    s_mov_b64 exec, s[6:7]1602; GFX9-O0-NEXT:    v_mov_b32_e32 v4, v21603; GFX9-O0-NEXT:    v_mov_b32_e32 v5, v31604; GFX9-O0-NEXT:    v_mov_b32_e32 v12, v101605; GFX9-O0-NEXT:    v_mov_b32_e32 v6, v91606; GFX9-O0-NEXT:    v_mov_b32_e32 v10, v81607; GFX9-O0-NEXT:    v_mov_b32_e32 v11, v71608; GFX9-O0-NEXT:    ; kill: def $vgpr6 killed $vgpr6 def $vgpr6_vgpr7_vgpr8_vgpr9 killed $exec1609; GFX9-O0-NEXT:    v_mov_b32_e32 v7, v121610; GFX9-O0-NEXT:    v_mov_b32_e32 v8, v111611; GFX9-O0-NEXT:    v_mov_b32_e32 v9, v101612; GFX9-O0-NEXT:    buffer_store_dwordx4 v[6:9], v0, s[0:3], s4 offen1613; GFX9-O0-NEXT:    buffer_store_dwordx2 v[4:5], v0, s[0:3], s4 offen offset:161614; GFX9-O0-NEXT:    s_endpgm1615;1616; GFX9-O3-LABEL: strict_wwm_amdgpu_cs_main:1617; GFX9-O3:       ; %bb.0:1618; GFX9-O3-NEXT:    v_lshlrev_b32_e32 v0, 5, v01619; GFX9-O3-NEXT:    buffer_load_dwordx4 v[8:11], v0, s[0:3], 0 offen1620; GFX9-O3-NEXT:    buffer_load_dwordx2 v[12:13], v0, s[0:3], 0 offen offset:161621; GFX9-O3-NEXT:    s_or_saveexec_b64 s[4:5], -11622; GFX9-O3-NEXT:    v_bfrev_b32_e32 v1, -21623; GFX9-O3-NEXT:    s_waitcnt vmcnt(1)1624; GFX9-O3-NEXT:    v_cndmask_b32_e64 v3, v1, v9, s[4:5]1625; GFX9-O3-NEXT:    v_cndmask_b32_e64 v2, -1, v8, s[4:5]1626; GFX9-O3-NEXT:    v_cndmask_b32_e64 v5, v1, v11, s[4:5]1627; GFX9-O3-NEXT:    v_cndmask_b32_e64 v4, -1, v10, s[4:5]1628; GFX9-O3-NEXT:    s_waitcnt vmcnt(0)1629; GFX9-O3-NEXT:    v_cndmask_b32_e64 v7, v1, v13, s[4:5]1630; GFX9-O3-NEXT:    v_cndmask_b32_e64 v6, -1, v12, s[4:5]1631; GFX9-O3-NEXT:    s_mov_b64 exec, s[4:5]1632; GFX9-O3-NEXT:    v_mov_b32_e32 v8, v21633; GFX9-O3-NEXT:    v_mov_b32_e32 v10, v41634; GFX9-O3-NEXT:    v_mov_b32_e32 v9, v31635; GFX9-O3-NEXT:    v_mov_b32_e32 v11, v51636; GFX9-O3-NEXT:    v_mov_b32_e32 v12, v61637; GFX9-O3-NEXT:    v_mov_b32_e32 v13, v71638; GFX9-O3-NEXT:    buffer_store_dwordx4 v[8:11], v0, s[0:3], 0 offen1639; GFX9-O3-NEXT:    buffer_store_dwordx2 v[12:13], v0, s[0:3], 0 offen offset:161640; GFX9-O3-NEXT:    s_endpgm1641  %tmp17 = shl i32 %index, 51642  %tmp18 = tail call <4 x i32> @llvm.amdgcn.s.buffer.load.v4i32(<4 x i32> %desc, i32 %tmp17, i32 0)1643  %.i0.upto1.bc = bitcast <4 x i32> %tmp18 to <2 x i64>1644  %tmp19 = or i32 %tmp17, 161645  %tmp20 = tail call <2 x i32> @llvm.amdgcn.s.buffer.load.v2i32(<4 x i32> %desc, i32 %tmp19, i32 0)1646  %.i0.upto1.extract = extractelement <2 x i64> %.i0.upto1.bc, i32 01647  %tmp22 = tail call i64 @llvm.amdgcn.set.inactive.i64(i64 %.i0.upto1.extract, i64 9223372036854775807)1648  %tmp97 = tail call i64 @llvm.amdgcn.strict.wwm.i64(i64 %tmp22)1649  %.i1.upto1.extract = extractelement <2 x i64> %.i0.upto1.bc, i32 11650  %tmp99 = tail call i64 @llvm.amdgcn.set.inactive.i64(i64 %.i1.upto1.extract, i64 9223372036854775807)1651  %tmp174 = tail call i64 @llvm.amdgcn.strict.wwm.i64(i64 %tmp99)1652  %.i25 = bitcast <2 x i32> %tmp20 to i641653  %tmp176 = tail call i64 @llvm.amdgcn.set.inactive.i64(i64 %.i25, i64 9223372036854775807)1654  %tmp251 = tail call i64 @llvm.amdgcn.strict.wwm.i64(i64 %tmp176)1655  %.cast = bitcast i64 %tmp97 to <2 x float>1656  %.cast6 = bitcast i64 %tmp174 to <2 x float>1657  %.cast7 = bitcast i64 %tmp251 to <2 x float>1658  %tmp254 = shufflevector <2 x float> %.cast, <2 x float> %.cast6, <4 x i32> <i32 0, i32 1, i32 2, i32 3>1659  %desc.int = bitcast <4 x i32> %desc to i1281660  %desc.ptr = inttoptr i128 %desc.int to ptr addrspace(8)1661  tail call void @llvm.amdgcn.raw.ptr.buffer.store.v4f32(<4 x float> %tmp254, ptr addrspace(8) %desc.ptr, i32 %tmp17, i32 0, i32 0)1662  tail call void @llvm.amdgcn.raw.ptr.buffer.store.v2f32(<2 x float> %.cast7, ptr addrspace(8)%desc.ptr, i32 %tmp19, i32 0, i32 0)1663  ret void1664}1665 1666declare i32 @llvm.amdgcn.strict.wwm.i32(i32)1667declare i64 @llvm.amdgcn.strict.wwm.i64(i64)1668declare i32 @llvm.amdgcn.wwm.i32(i32)1669declare i64 @llvm.amdgcn.wwm.i64(i64)1670declare i32 @llvm.amdgcn.set.inactive.i32(i32, i32)1671declare i64 @llvm.amdgcn.set.inactive.i64(i64, i64)1672declare i32 @llvm.amdgcn.update.dpp.i32(i32, i32, i32, i32, i32, i1)1673declare <2 x float> @llvm.amdgcn.raw.ptr.buffer.load.v2f32(ptr addrspace(8), i32, i32, i32)1674declare void @llvm.amdgcn.raw.ptr.buffer.store.f32(float, ptr addrspace(8), i32, i32, i32)1675declare void @llvm.amdgcn.raw.ptr.buffer.store.i32(i32, ptr addrspace(8), i32, i32, i32)1676declare void @llvm.amdgcn.raw.ptr.buffer.store.v2i32(<2 x i32>, ptr addrspace(8), i32, i32, i32)1677declare void @llvm.amdgcn.raw.ptr.buffer.store.v2f32(<2 x float>, ptr addrspace(8), i32, i32, i32)1678declare void @llvm.amdgcn.raw.ptr.buffer.store.v4f32(<4 x float>, ptr addrspace(8), i32, i32, i32)1679declare <2 x i32> @llvm.amdgcn.s.buffer.load.v2i32(<4 x i32>, i32, i32)1680declare <4 x i32> @llvm.amdgcn.s.buffer.load.v4i32(<4 x i32>, i32, i32)1681 1682