brintos

brintos / llvm-project-archived public Read only

0
0
Text · 40.9 KiB · 18098d0 Raw
872 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1100 < %s | FileCheck --check-prefixes=GFX11,GISEL11 %s3; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1100 < %s | FileCheck --check-prefixes=GFX11,DAGISEL11 %s4; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1030 < %s | FileCheck --check-prefixes=GFX10,GISEL10 %s5; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1030 < %s | FileCheck --check-prefixes=GFX10,DAGISEL10 %s6; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1100 -mattr=+wavefrontsize64 < %s | FileCheck --check-prefixes=GFX11_W64,GISEL11_W64 %s7; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1100 -mattr=+wavefrontsize64 < %s | FileCheck --check-prefixes=GFX11_W64,DAGISEL11_W64 %s8; RUN: llc -global-isel=1 -mtriple=amdgcn -mcpu=gfx1030 -mattr=+wavefrontsize64 < %s | FileCheck --check-prefixes=GFX10_W64,GISEL10_W64 %s9; RUN: llc -global-isel=0 -mtriple=amdgcn -mcpu=gfx1030 -mattr=+wavefrontsize64 < %s | FileCheck --check-prefixes=GFX10_W64,DAGISEL10_W64 %s10 11define amdgpu_cs_chain void @set_inactive_chain_arg(ptr addrspace(1) %out, i32 %inactive, i32 %active) {12; GFX11-LABEL: set_inactive_chain_arg:13; GFX11:       ; %bb.0:14; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15; GFX11-NEXT:    s_or_saveexec_b32 s0, -116; GFX11-NEXT:    v_mov_b32_e32 v0, v1017; GFX11-NEXT:    s_mov_b32 exec_lo, s018; GFX11-NEXT:    s_or_saveexec_b32 s0, -119; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)20; GFX11-NEXT:    v_cndmask_b32_e64 v0, v0, v11, s021; GFX11-NEXT:    s_mov_b32 exec_lo, s022; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1)23; GFX11-NEXT:    v_mov_b32_e32 v1, v024; GFX11-NEXT:    global_store_b32 v[8:9], v1, off25; GFX11-NEXT:    s_endpgm26;27; GFX10-LABEL: set_inactive_chain_arg:28; GFX10:       ; %bb.0:29; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)30; GFX10-NEXT:    s_or_saveexec_b32 s0, -131; GFX10-NEXT:    v_mov_b32_e32 v0, v1032; GFX10-NEXT:    s_mov_b32 exec_lo, s033; GFX10-NEXT:    s_or_saveexec_b32 s0, -134; GFX10-NEXT:    v_cndmask_b32_e64 v0, v0, v11, s035; GFX10-NEXT:    s_mov_b32 exec_lo, s036; GFX10-NEXT:    v_mov_b32_e32 v1, v037; GFX10-NEXT:    global_store_dword v[8:9], v1, off38; GFX10-NEXT:    s_endpgm39;40; GFX11_W64-LABEL: set_inactive_chain_arg:41; GFX11_W64:       ; %bb.0:42; GFX11_W64-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)43; GFX11_W64-NEXT:    s_or_saveexec_b64 s[0:1], -144; GFX11_W64-NEXT:    v_mov_b32_e32 v0, v1045; GFX11_W64-NEXT:    s_mov_b64 exec, s[0:1]46; GFX11_W64-NEXT:    s_or_saveexec_b64 s[0:1], -147; GFX11_W64-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)48; GFX11_W64-NEXT:    v_cndmask_b32_e64 v0, v0, v11, s[0:1]49; GFX11_W64-NEXT:    s_mov_b64 exec, s[0:1]50; GFX11_W64-NEXT:    s_delay_alu instid0(VALU_DEP_1)51; GFX11_W64-NEXT:    v_mov_b32_e32 v1, v052; GFX11_W64-NEXT:    global_store_b32 v[8:9], v1, off53; GFX11_W64-NEXT:    s_endpgm54;55; GFX10_W64-LABEL: set_inactive_chain_arg:56; GFX10_W64:       ; %bb.0:57; GFX10_W64-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)58; GFX10_W64-NEXT:    s_or_saveexec_b64 s[0:1], -159; GFX10_W64-NEXT:    v_mov_b32_e32 v0, v1060; GFX10_W64-NEXT:    s_mov_b64 exec, s[0:1]61; GFX10_W64-NEXT:    s_or_saveexec_b64 s[0:1], -162; GFX10_W64-NEXT:    v_cndmask_b32_e64 v0, v0, v11, s[0:1]63; GFX10_W64-NEXT:    s_mov_b64 exec, s[0:1]64; GFX10_W64-NEXT:    v_mov_b32_e32 v1, v065; GFX10_W64-NEXT:    global_store_dword v[8:9], v1, off66; GFX10_W64-NEXT:    s_endpgm67  %tmp = call i32 @llvm.amdgcn.set.inactive.chain.arg.i32(i32 %active, i32 %inactive) #068  %wwm = call i32 @llvm.amdgcn.strict.wwm.i32(i32 %tmp)69  store i32 %wwm, ptr addrspace(1) %out70  ret void71}72 73define amdgpu_cs_chain void @set_inactive_chain_arg_64(ptr addrspace(1) %out, i64 %inactive, i64 %active) {74; GISEL11-LABEL: set_inactive_chain_arg_64:75; GISEL11:       ; %bb.0:76; GISEL11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)77; GISEL11-NEXT:    s_or_saveexec_b32 s0, -178; GISEL11-NEXT:    v_dual_mov_b32 v0, v10 :: v_dual_mov_b32 v1, v1179; GISEL11-NEXT:    s_mov_b32 exec_lo, s080; GISEL11-NEXT:    s_or_saveexec_b32 s0, -181; GISEL11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)82; GISEL11-NEXT:    v_cndmask_b32_e64 v0, v0, v12, s083; GISEL11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)84; GISEL11-NEXT:    v_cndmask_b32_e64 v1, v1, v13, s085; GISEL11-NEXT:    s_mov_b32 exec_lo, s086; GISEL11-NEXT:    v_mov_b32_e32 v2, v087; GISEL11-NEXT:    s_delay_alu instid0(VALU_DEP_2)88; GISEL11-NEXT:    v_mov_b32_e32 v3, v189; GISEL11-NEXT:    global_store_b64 v[8:9], v[2:3], off90; GISEL11-NEXT:    s_endpgm91;92; DAGISEL11-LABEL: set_inactive_chain_arg_64:93; DAGISEL11:       ; %bb.0:94; DAGISEL11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)95; DAGISEL11-NEXT:    s_or_saveexec_b32 s0, -196; DAGISEL11-NEXT:    v_dual_mov_b32 v0, v11 :: v_dual_mov_b32 v1, v1097; DAGISEL11-NEXT:    s_mov_b32 exec_lo, s098; DAGISEL11-NEXT:    s_or_saveexec_b32 s0, -199; DAGISEL11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)100; DAGISEL11-NEXT:    v_cndmask_b32_e64 v2, v0, v13, s0101; DAGISEL11-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)102; DAGISEL11-NEXT:    v_cndmask_b32_e64 v1, v1, v12, s0103; DAGISEL11-NEXT:    s_mov_b32 exec_lo, s0104; DAGISEL11-NEXT:    v_mov_b32_e32 v3, v1105; DAGISEL11-NEXT:    s_delay_alu instid0(VALU_DEP_3)106; DAGISEL11-NEXT:    v_mov_b32_e32 v4, v2107; DAGISEL11-NEXT:    global_store_b64 v[8:9], v[3:4], off108; DAGISEL11-NEXT:    s_endpgm109;110; GISEL10-LABEL: set_inactive_chain_arg_64:111; GISEL10:       ; %bb.0:112; GISEL10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)113; GISEL10-NEXT:    s_or_saveexec_b32 s0, -1114; GISEL10-NEXT:    v_mov_b32_e32 v0, v10115; GISEL10-NEXT:    v_mov_b32_e32 v1, v11116; GISEL10-NEXT:    s_mov_b32 exec_lo, s0117; GISEL10-NEXT:    s_or_saveexec_b32 s0, -1118; GISEL10-NEXT:    v_cndmask_b32_e64 v0, v0, v12, s0119; GISEL10-NEXT:    v_cndmask_b32_e64 v1, v1, v13, s0120; GISEL10-NEXT:    s_mov_b32 exec_lo, s0121; GISEL10-NEXT:    v_mov_b32_e32 v2, v0122; GISEL10-NEXT:    v_mov_b32_e32 v3, v1123; GISEL10-NEXT:    global_store_dwordx2 v[8:9], v[2:3], off124; GISEL10-NEXT:    s_endpgm125;126; DAGISEL10-LABEL: set_inactive_chain_arg_64:127; DAGISEL10:       ; %bb.0:128; DAGISEL10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)129; DAGISEL10-NEXT:    s_or_saveexec_b32 s0, -1130; DAGISEL10-NEXT:    v_mov_b32_e32 v0, v11131; DAGISEL10-NEXT:    v_mov_b32_e32 v1, v10132; DAGISEL10-NEXT:    s_mov_b32 exec_lo, s0133; DAGISEL10-NEXT:    s_or_saveexec_b32 s0, -1134; DAGISEL10-NEXT:    v_cndmask_b32_e64 v2, v0, v13, s0135; DAGISEL10-NEXT:    v_cndmask_b32_e64 v1, v1, v12, s0136; DAGISEL10-NEXT:    s_mov_b32 exec_lo, s0137; DAGISEL10-NEXT:    v_mov_b32_e32 v3, v1138; DAGISEL10-NEXT:    v_mov_b32_e32 v4, v2139; DAGISEL10-NEXT:    global_store_dwordx2 v[8:9], v[3:4], off140; DAGISEL10-NEXT:    s_endpgm141;142; GISEL11_W64-LABEL: set_inactive_chain_arg_64:143; GISEL11_W64:       ; %bb.0:144; GISEL11_W64-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)145; GISEL11_W64-NEXT:    s_or_saveexec_b64 s[0:1], -1146; GISEL11_W64-NEXT:    v_mov_b32_e32 v0, v10147; GISEL11_W64-NEXT:    v_mov_b32_e32 v1, v11148; GISEL11_W64-NEXT:    s_mov_b64 exec, s[0:1]149; GISEL11_W64-NEXT:    s_or_saveexec_b64 s[0:1], -1150; GISEL11_W64-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instid1(SALU_CYCLE_1)151; GISEL11_W64-NEXT:    v_cndmask_b32_e64 v0, v0, v12, s[0:1]152; GISEL11_W64-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_2)153; GISEL11_W64-NEXT:    v_cndmask_b32_e64 v1, v1, v13, s[0:1]154; GISEL11_W64-NEXT:    s_mov_b64 exec, s[0:1]155; GISEL11_W64-NEXT:    v_mov_b32_e32 v2, v0156; GISEL11_W64-NEXT:    s_delay_alu instid0(VALU_DEP_2)157; GISEL11_W64-NEXT:    v_mov_b32_e32 v3, v1158; GISEL11_W64-NEXT:    global_store_b64 v[8:9], v[2:3], off159; GISEL11_W64-NEXT:    s_endpgm160;161; DAGISEL11_W64-LABEL: set_inactive_chain_arg_64:162; DAGISEL11_W64:       ; %bb.0:163; DAGISEL11_W64-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)164; DAGISEL11_W64-NEXT:    s_or_saveexec_b64 s[0:1], -1165; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v0, v11166; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v1, v10167; DAGISEL11_W64-NEXT:    s_mov_b64 exec, s[0:1]168; DAGISEL11_W64-NEXT:    s_or_saveexec_b64 s[0:1], -1169; DAGISEL11_W64-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instid1(SALU_CYCLE_1)170; DAGISEL11_W64-NEXT:    v_cndmask_b32_e64 v2, v0, v13, s[0:1]171; DAGISEL11_W64-NEXT:    s_delay_alu instid0(VALU_DEP_2) | instskip(SKIP_1) | instid1(VALU_DEP_1)172; DAGISEL11_W64-NEXT:    v_cndmask_b32_e64 v1, v1, v12, s[0:1]173; DAGISEL11_W64-NEXT:    s_mov_b64 exec, s[0:1]174; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v3, v1175; DAGISEL11_W64-NEXT:    s_delay_alu instid0(VALU_DEP_3)176; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v4, v2177; DAGISEL11_W64-NEXT:    global_store_b64 v[8:9], v[3:4], off178; DAGISEL11_W64-NEXT:    s_endpgm179;180; GISEL10_W64-LABEL: set_inactive_chain_arg_64:181; GISEL10_W64:       ; %bb.0:182; GISEL10_W64-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)183; GISEL10_W64-NEXT:    s_or_saveexec_b64 s[0:1], -1184; GISEL10_W64-NEXT:    v_mov_b32_e32 v0, v10185; GISEL10_W64-NEXT:    v_mov_b32_e32 v1, v11186; GISEL10_W64-NEXT:    s_mov_b64 exec, s[0:1]187; GISEL10_W64-NEXT:    s_or_saveexec_b64 s[0:1], -1188; GISEL10_W64-NEXT:    v_cndmask_b32_e64 v0, v0, v12, s[0:1]189; GISEL10_W64-NEXT:    v_cndmask_b32_e64 v1, v1, v13, s[0:1]190; GISEL10_W64-NEXT:    s_mov_b64 exec, s[0:1]191; GISEL10_W64-NEXT:    v_mov_b32_e32 v2, v0192; GISEL10_W64-NEXT:    v_mov_b32_e32 v3, v1193; GISEL10_W64-NEXT:    global_store_dwordx2 v[8:9], v[2:3], off194; GISEL10_W64-NEXT:    s_endpgm195;196; DAGISEL10_W64-LABEL: set_inactive_chain_arg_64:197; DAGISEL10_W64:       ; %bb.0:198; DAGISEL10_W64-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)199; DAGISEL10_W64-NEXT:    s_or_saveexec_b64 s[0:1], -1200; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v0, v11201; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v1, v10202; DAGISEL10_W64-NEXT:    s_mov_b64 exec, s[0:1]203; DAGISEL10_W64-NEXT:    s_or_saveexec_b64 s[0:1], -1204; DAGISEL10_W64-NEXT:    v_cndmask_b32_e64 v2, v0, v13, s[0:1]205; DAGISEL10_W64-NEXT:    v_cndmask_b32_e64 v1, v1, v12, s[0:1]206; DAGISEL10_W64-NEXT:    s_mov_b64 exec, s[0:1]207; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v3, v1208; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v4, v2209; DAGISEL10_W64-NEXT:    global_store_dwordx2 v[8:9], v[3:4], off210; DAGISEL10_W64-NEXT:    s_endpgm211  %tmp = call i64 @llvm.amdgcn.set.inactive.chain.arg.i64(i64 %active, i64 %inactive) #0212  %wwm = call i64 @llvm.amdgcn.strict.wwm.i64(i64 %tmp)213  store i64 %wwm, ptr addrspace(1) %out214  ret void215}216 217define amdgpu_cs_chain void @set_inactive_chain_arg_dpp(ptr addrspace(1) %out, i32 %inactive, i32 %active) {218; GFX11-LABEL: set_inactive_chain_arg_dpp:219; GFX11:       ; %bb.0:220; GFX11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)221; GFX11-NEXT:    s_or_saveexec_b32 s0, -1222; GFX11-NEXT:    v_mov_b32_e32 v0, v10223; GFX11-NEXT:    s_mov_b32 exec_lo, s0224; GFX11-NEXT:    s_or_saveexec_b32 s0, -1225; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)226; GFX11-NEXT:    v_cndmask_b32_e64 v0, v0, v11, s0227; GFX11-NEXT:    v_mov_b32_e32 v1, 0228; GFX11-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)229; GFX11-NEXT:    v_mov_b32_dpp v1, v0 row_xmask:1 row_mask:0xf bank_mask:0xf230; GFX11-NEXT:    s_mov_b32 exec_lo, s0231; GFX11-NEXT:    v_mov_b32_e32 v2, v1232; GFX11-NEXT:    global_store_b32 v[8:9], v2, off233; GFX11-NEXT:    s_endpgm234;235; GFX10-LABEL: set_inactive_chain_arg_dpp:236; GFX10:       ; %bb.0:237; GFX10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)238; GFX10-NEXT:    s_or_saveexec_b32 s0, -1239; GFX10-NEXT:    v_mov_b32_e32 v0, v10240; GFX10-NEXT:    s_mov_b32 exec_lo, s0241; GFX10-NEXT:    s_or_saveexec_b32 s0, -1242; GFX10-NEXT:    v_cndmask_b32_e64 v0, v0, v11, s0243; GFX10-NEXT:    v_mov_b32_e32 v1, 0244; GFX10-NEXT:    v_mov_b32_dpp v1, v0 row_xmask:1 row_mask:0xf bank_mask:0xf245; GFX10-NEXT:    s_mov_b32 exec_lo, s0246; GFX10-NEXT:    v_mov_b32_e32 v2, v1247; GFX10-NEXT:    global_store_dword v[8:9], v2, off248; GFX10-NEXT:    s_endpgm249;250; GFX11_W64-LABEL: set_inactive_chain_arg_dpp:251; GFX11_W64:       ; %bb.0:252; GFX11_W64-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)253; GFX11_W64-NEXT:    s_or_saveexec_b64 s[0:1], -1254; GFX11_W64-NEXT:    v_mov_b32_e32 v0, v10255; GFX11_W64-NEXT:    s_mov_b64 exec, s[0:1]256; GFX11_W64-NEXT:    s_or_saveexec_b64 s[0:1], -1257; GFX11_W64-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instid1(SALU_CYCLE_1)258; GFX11_W64-NEXT:    v_cndmask_b32_e64 v0, v0, v11, s[0:1]259; GFX11_W64-NEXT:    v_mov_b32_e32 v1, 0260; GFX11_W64-NEXT:    s_delay_alu instid0(VALU_DEP_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)261; GFX11_W64-NEXT:    v_mov_b32_dpp v1, v0 row_xmask:1 row_mask:0xf bank_mask:0xf262; GFX11_W64-NEXT:    s_mov_b64 exec, s[0:1]263; GFX11_W64-NEXT:    v_mov_b32_e32 v2, v1264; GFX11_W64-NEXT:    global_store_b32 v[8:9], v2, off265; GFX11_W64-NEXT:    s_endpgm266;267; GFX10_W64-LABEL: set_inactive_chain_arg_dpp:268; GFX10_W64:       ; %bb.0:269; GFX10_W64-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)270; GFX10_W64-NEXT:    s_or_saveexec_b64 s[0:1], -1271; GFX10_W64-NEXT:    v_mov_b32_e32 v0, v10272; GFX10_W64-NEXT:    s_mov_b64 exec, s[0:1]273; GFX10_W64-NEXT:    s_or_saveexec_b64 s[0:1], -1274; GFX10_W64-NEXT:    v_cndmask_b32_e64 v0, v0, v11, s[0:1]275; GFX10_W64-NEXT:    v_mov_b32_e32 v1, 0276; GFX10_W64-NEXT:    v_mov_b32_dpp v1, v0 row_xmask:1 row_mask:0xf bank_mask:0xf277; GFX10_W64-NEXT:    s_mov_b64 exec, s[0:1]278; GFX10_W64-NEXT:    v_mov_b32_e32 v2, v1279; GFX10_W64-NEXT:    global_store_dword v[8:9], v2, off280; GFX10_W64-NEXT:    s_endpgm281  %tmp = call i32 @llvm.amdgcn.set.inactive.chain.arg.i32(i32 %active, i32 %inactive) #0282  %dpp = call i32 @llvm.amdgcn.update.dpp.i32(i32 0, i32 %tmp, i32 353, i32 15, i32 15, i1 false)283  %wwm = call i32 @llvm.amdgcn.strict.wwm.i32(i32 %dpp)284  store i32 %wwm, ptr addrspace(1) %out285  ret void286}287 288; Make sure that if we need to use the register for %inactive for something else (in this case a call),289; we save its inactive lanes for later use in set.inactive.chain.arg.290define amdgpu_cs_chain void @set_inactive_chain_arg_call(ptr addrspace(1) %out, i32 %inactive, i32 %active) {291; GISEL11-LABEL: set_inactive_chain_arg_call:292; GISEL11:       ; %bb.0:293; GISEL11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)294; GISEL11-NEXT:    s_mov_b32 s32, 0295; GISEL11-NEXT:    v_dual_mov_b32 v41, v8 :: v_dual_mov_b32 v42, v9296; GISEL11-NEXT:    s_or_saveexec_b32 s0, -1297; GISEL11-NEXT:    v_mov_b32_e32 v40, v10298; GISEL11-NEXT:    s_mov_b32 exec_lo, s0299; GISEL11-NEXT:    s_getpc_b64 s[0:1]300; GISEL11-NEXT:    s_add_u32 s0, s0, gfx_callee@gotpcrel32@lo+4301; GISEL11-NEXT:    s_addc_u32 s1, s1, gfx_callee@gotpcrel32@hi+12302; GISEL11-NEXT:    v_dual_mov_b32 v43, v11 :: v_dual_mov_b32 v0, 0303; GISEL11-NEXT:    s_load_b64 s[0:1], s[0:1], 0x0304; GISEL11-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v2, 0305; GISEL11-NEXT:    v_dual_mov_b32 v3, 0 :: v_dual_mov_b32 v4, 0306; GISEL11-NEXT:    v_dual_mov_b32 v5, 0 :: v_dual_mov_b32 v6, 0307; GISEL11-NEXT:    v_dual_mov_b32 v7, 0 :: v_dual_mov_b32 v8, 0308; GISEL11-NEXT:    v_dual_mov_b32 v9, 0 :: v_dual_mov_b32 v10, 0309; GISEL11-NEXT:    v_mov_b32_e32 v11, 0310; GISEL11-NEXT:    s_waitcnt lgkmcnt(0)311; GISEL11-NEXT:    s_swappc_b64 s[30:31], s[0:1]312; GISEL11-NEXT:    s_or_saveexec_b32 s0, -1313; GISEL11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)314; GISEL11-NEXT:    v_cndmask_b32_e64 v12, v40, v43, s0315; GISEL11-NEXT:    s_mov_b32 exec_lo, s0316; GISEL11-NEXT:    v_mov_b32_e32 v0, v12317; GISEL11-NEXT:    global_store_b32 v[41:42], v0, off318; GISEL11-NEXT:    s_endpgm319;320; DAGISEL11-LABEL: set_inactive_chain_arg_call:321; DAGISEL11:       ; %bb.0:322; DAGISEL11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)323; DAGISEL11-NEXT:    s_mov_b32 s32, 0324; DAGISEL11-NEXT:    v_mov_b32_e32 v43, v11325; DAGISEL11-NEXT:    s_or_saveexec_b32 s0, -1326; DAGISEL11-NEXT:    v_mov_b32_e32 v40, v10327; DAGISEL11-NEXT:    s_mov_b32 exec_lo, s0328; DAGISEL11-NEXT:    s_getpc_b64 s[0:1]329; DAGISEL11-NEXT:    s_add_u32 s0, s0, gfx_callee@gotpcrel32@lo+4330; DAGISEL11-NEXT:    s_addc_u32 s1, s1, gfx_callee@gotpcrel32@hi+12331; DAGISEL11-NEXT:    v_dual_mov_b32 v42, v9 :: v_dual_mov_b32 v41, v8332; DAGISEL11-NEXT:    s_load_b64 s[0:1], s[0:1], 0x0333; DAGISEL11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, 0334; DAGISEL11-NEXT:    v_dual_mov_b32 v2, 0 :: v_dual_mov_b32 v3, 0335; DAGISEL11-NEXT:    v_dual_mov_b32 v4, 0 :: v_dual_mov_b32 v5, 0336; DAGISEL11-NEXT:    v_dual_mov_b32 v6, 0 :: v_dual_mov_b32 v7, 0337; DAGISEL11-NEXT:    v_dual_mov_b32 v8, 0 :: v_dual_mov_b32 v9, 0338; DAGISEL11-NEXT:    v_dual_mov_b32 v10, 0 :: v_dual_mov_b32 v11, 0339; DAGISEL11-NEXT:    s_waitcnt lgkmcnt(0)340; DAGISEL11-NEXT:    s_swappc_b64 s[30:31], s[0:1]341; DAGISEL11-NEXT:    s_or_saveexec_b32 s0, -1342; DAGISEL11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)343; DAGISEL11-NEXT:    v_cndmask_b32_e64 v12, v40, v43, s0344; DAGISEL11-NEXT:    s_mov_b32 exec_lo, s0345; DAGISEL11-NEXT:    v_mov_b32_e32 v0, v12346; DAGISEL11-NEXT:    global_store_b32 v[41:42], v0, off347; DAGISEL11-NEXT:    s_endpgm348;349; GISEL10-LABEL: set_inactive_chain_arg_call:350; GISEL10:       ; %bb.0:351; GISEL10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)352; GISEL10-NEXT:    s_mov_b32 s32, 0353; GISEL10-NEXT:    v_mov_b32_e32 v41, v8354; GISEL10-NEXT:    v_mov_b32_e32 v42, v9355; GISEL10-NEXT:    s_or_saveexec_b32 s0, -1356; GISEL10-NEXT:    v_mov_b32_e32 v40, v10357; GISEL10-NEXT:    s_mov_b32 exec_lo, s0358; GISEL10-NEXT:    s_getpc_b64 s[0:1]359; GISEL10-NEXT:    s_add_u32 s0, s0, gfx_callee@gotpcrel32@lo+4360; GISEL10-NEXT:    s_addc_u32 s1, s1, gfx_callee@gotpcrel32@hi+12361; GISEL10-NEXT:    v_mov_b32_e32 v43, v11362; GISEL10-NEXT:    s_load_dwordx2 s[4:5], s[0:1], 0x0363; GISEL10-NEXT:    v_mov_b32_e32 v0, 0364; GISEL10-NEXT:    v_mov_b32_e32 v1, 0365; GISEL10-NEXT:    v_mov_b32_e32 v2, 0366; GISEL10-NEXT:    v_mov_b32_e32 v3, 0367; GISEL10-NEXT:    v_mov_b32_e32 v4, 0368; GISEL10-NEXT:    v_mov_b32_e32 v5, 0369; GISEL10-NEXT:    v_mov_b32_e32 v6, 0370; GISEL10-NEXT:    v_mov_b32_e32 v7, 0371; GISEL10-NEXT:    v_mov_b32_e32 v8, 0372; GISEL10-NEXT:    v_mov_b32_e32 v9, 0373; GISEL10-NEXT:    v_mov_b32_e32 v10, 0374; GISEL10-NEXT:    v_mov_b32_e32 v11, 0375; GISEL10-NEXT:    s_mov_b64 s[0:1], s[48:49]376; GISEL10-NEXT:    s_mov_b64 s[2:3], s[50:51]377; GISEL10-NEXT:    s_waitcnt lgkmcnt(0)378; GISEL10-NEXT:    s_swappc_b64 s[30:31], s[4:5]379; GISEL10-NEXT:    s_or_saveexec_b32 s0, -1380; GISEL10-NEXT:    v_cndmask_b32_e64 v12, v40, v43, s0381; GISEL10-NEXT:    s_mov_b32 exec_lo, s0382; GISEL10-NEXT:    v_mov_b32_e32 v0, v12383; GISEL10-NEXT:    global_store_dword v[41:42], v0, off384; GISEL10-NEXT:    s_endpgm385;386; DAGISEL10-LABEL: set_inactive_chain_arg_call:387; DAGISEL10:       ; %bb.0:388; DAGISEL10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)389; DAGISEL10-NEXT:    s_mov_b32 s32, 0390; DAGISEL10-NEXT:    v_mov_b32_e32 v43, v11391; DAGISEL10-NEXT:    s_or_saveexec_b32 s0, -1392; DAGISEL10-NEXT:    v_mov_b32_e32 v40, v10393; DAGISEL10-NEXT:    s_mov_b32 exec_lo, s0394; DAGISEL10-NEXT:    s_getpc_b64 s[0:1]395; DAGISEL10-NEXT:    s_add_u32 s0, s0, gfx_callee@gotpcrel32@lo+4396; DAGISEL10-NEXT:    s_addc_u32 s1, s1, gfx_callee@gotpcrel32@hi+12397; DAGISEL10-NEXT:    v_mov_b32_e32 v42, v9398; DAGISEL10-NEXT:    s_load_dwordx2 s[4:5], s[0:1], 0x0399; DAGISEL10-NEXT:    v_mov_b32_e32 v41, v8400; DAGISEL10-NEXT:    v_mov_b32_e32 v0, 0401; DAGISEL10-NEXT:    v_mov_b32_e32 v1, 0402; DAGISEL10-NEXT:    v_mov_b32_e32 v2, 0403; DAGISEL10-NEXT:    v_mov_b32_e32 v3, 0404; DAGISEL10-NEXT:    v_mov_b32_e32 v4, 0405; DAGISEL10-NEXT:    v_mov_b32_e32 v5, 0406; DAGISEL10-NEXT:    v_mov_b32_e32 v6, 0407; DAGISEL10-NEXT:    v_mov_b32_e32 v7, 0408; DAGISEL10-NEXT:    v_mov_b32_e32 v8, 0409; DAGISEL10-NEXT:    v_mov_b32_e32 v9, 0410; DAGISEL10-NEXT:    v_mov_b32_e32 v10, 0411; DAGISEL10-NEXT:    v_mov_b32_e32 v11, 0412; DAGISEL10-NEXT:    s_mov_b64 s[0:1], s[48:49]413; DAGISEL10-NEXT:    s_mov_b64 s[2:3], s[50:51]414; DAGISEL10-NEXT:    s_waitcnt lgkmcnt(0)415; DAGISEL10-NEXT:    s_swappc_b64 s[30:31], s[4:5]416; DAGISEL10-NEXT:    s_or_saveexec_b32 s0, -1417; DAGISEL10-NEXT:    v_cndmask_b32_e64 v12, v40, v43, s0418; DAGISEL10-NEXT:    s_mov_b32 exec_lo, s0419; DAGISEL10-NEXT:    v_mov_b32_e32 v0, v12420; DAGISEL10-NEXT:    global_store_dword v[41:42], v0, off421; DAGISEL10-NEXT:    s_endpgm422;423; GISEL11_W64-LABEL: set_inactive_chain_arg_call:424; GISEL11_W64:       ; %bb.0:425; GISEL11_W64-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)426; GISEL11_W64-NEXT:    s_mov_b32 s32, 0427; GISEL11_W64-NEXT:    v_mov_b32_e32 v41, v8428; GISEL11_W64-NEXT:    v_mov_b32_e32 v42, v9429; GISEL11_W64-NEXT:    s_or_saveexec_b64 s[0:1], -1430; GISEL11_W64-NEXT:    v_mov_b32_e32 v40, v10431; GISEL11_W64-NEXT:    s_mov_b64 exec, s[0:1]432; GISEL11_W64-NEXT:    s_getpc_b64 s[0:1]433; GISEL11_W64-NEXT:    s_add_u32 s0, s0, gfx_callee@gotpcrel32@lo+4434; GISEL11_W64-NEXT:    s_addc_u32 s1, s1, gfx_callee@gotpcrel32@hi+12435; GISEL11_W64-NEXT:    v_mov_b32_e32 v43, v11436; GISEL11_W64-NEXT:    s_load_b64 s[0:1], s[0:1], 0x0437; GISEL11_W64-NEXT:    v_mov_b32_e32 v0, 0438; GISEL11_W64-NEXT:    v_mov_b32_e32 v1, 0439; GISEL11_W64-NEXT:    v_mov_b32_e32 v2, 0440; GISEL11_W64-NEXT:    v_mov_b32_e32 v3, 0441; GISEL11_W64-NEXT:    v_mov_b32_e32 v4, 0442; GISEL11_W64-NEXT:    v_mov_b32_e32 v5, 0443; GISEL11_W64-NEXT:    v_mov_b32_e32 v6, 0444; GISEL11_W64-NEXT:    v_mov_b32_e32 v7, 0445; GISEL11_W64-NEXT:    v_mov_b32_e32 v8, 0446; GISEL11_W64-NEXT:    v_mov_b32_e32 v9, 0447; GISEL11_W64-NEXT:    v_mov_b32_e32 v10, 0448; GISEL11_W64-NEXT:    v_mov_b32_e32 v11, 0449; GISEL11_W64-NEXT:    s_waitcnt lgkmcnt(0)450; GISEL11_W64-NEXT:    s_swappc_b64 s[30:31], s[0:1]451; GISEL11_W64-NEXT:    s_or_saveexec_b64 s[0:1], -1452; GISEL11_W64-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)453; GISEL11_W64-NEXT:    v_cndmask_b32_e64 v12, v40, v43, s[0:1]454; GISEL11_W64-NEXT:    s_mov_b64 exec, s[0:1]455; GISEL11_W64-NEXT:    v_mov_b32_e32 v0, v12456; GISEL11_W64-NEXT:    global_store_b32 v[41:42], v0, off457; GISEL11_W64-NEXT:    s_endpgm458;459; DAGISEL11_W64-LABEL: set_inactive_chain_arg_call:460; DAGISEL11_W64:       ; %bb.0:461; DAGISEL11_W64-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)462; DAGISEL11_W64-NEXT:    s_mov_b32 s32, 0463; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v43, v11464; DAGISEL11_W64-NEXT:    s_or_saveexec_b64 s[0:1], -1465; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v40, v10466; DAGISEL11_W64-NEXT:    s_mov_b64 exec, s[0:1]467; DAGISEL11_W64-NEXT:    s_getpc_b64 s[0:1]468; DAGISEL11_W64-NEXT:    s_add_u32 s0, s0, gfx_callee@gotpcrel32@lo+4469; DAGISEL11_W64-NEXT:    s_addc_u32 s1, s1, gfx_callee@gotpcrel32@hi+12470; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v42, v9471; DAGISEL11_W64-NEXT:    s_load_b64 s[0:1], s[0:1], 0x0472; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v41, v8473; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v0, 0474; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v1, 0475; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v2, 0476; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v3, 0477; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v4, 0478; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v5, 0479; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v6, 0480; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v7, 0481; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v8, 0482; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v9, 0483; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v10, 0484; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v11, 0485; DAGISEL11_W64-NEXT:    s_waitcnt lgkmcnt(0)486; DAGISEL11_W64-NEXT:    s_swappc_b64 s[30:31], s[0:1]487; DAGISEL11_W64-NEXT:    s_or_saveexec_b64 s[0:1], -1488; DAGISEL11_W64-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)489; DAGISEL11_W64-NEXT:    v_cndmask_b32_e64 v12, v40, v43, s[0:1]490; DAGISEL11_W64-NEXT:    s_mov_b64 exec, s[0:1]491; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v0, v12492; DAGISEL11_W64-NEXT:    global_store_b32 v[41:42], v0, off493; DAGISEL11_W64-NEXT:    s_endpgm494;495; GISEL10_W64-LABEL: set_inactive_chain_arg_call:496; GISEL10_W64:       ; %bb.0:497; GISEL10_W64-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)498; GISEL10_W64-NEXT:    s_mov_b32 s32, 0499; GISEL10_W64-NEXT:    v_mov_b32_e32 v41, v8500; GISEL10_W64-NEXT:    v_mov_b32_e32 v42, v9501; GISEL10_W64-NEXT:    s_or_saveexec_b64 s[0:1], -1502; GISEL10_W64-NEXT:    v_mov_b32_e32 v40, v10503; GISEL10_W64-NEXT:    s_mov_b64 exec, s[0:1]504; GISEL10_W64-NEXT:    s_getpc_b64 s[0:1]505; GISEL10_W64-NEXT:    s_add_u32 s0, s0, gfx_callee@gotpcrel32@lo+4506; GISEL10_W64-NEXT:    s_addc_u32 s1, s1, gfx_callee@gotpcrel32@hi+12507; GISEL10_W64-NEXT:    v_mov_b32_e32 v43, v11508; GISEL10_W64-NEXT:    s_load_dwordx2 s[4:5], s[0:1], 0x0509; GISEL10_W64-NEXT:    v_mov_b32_e32 v0, 0510; GISEL10_W64-NEXT:    v_mov_b32_e32 v1, 0511; GISEL10_W64-NEXT:    v_mov_b32_e32 v2, 0512; GISEL10_W64-NEXT:    v_mov_b32_e32 v3, 0513; GISEL10_W64-NEXT:    v_mov_b32_e32 v4, 0514; GISEL10_W64-NEXT:    v_mov_b32_e32 v5, 0515; GISEL10_W64-NEXT:    v_mov_b32_e32 v6, 0516; GISEL10_W64-NEXT:    v_mov_b32_e32 v7, 0517; GISEL10_W64-NEXT:    v_mov_b32_e32 v8, 0518; GISEL10_W64-NEXT:    v_mov_b32_e32 v9, 0519; GISEL10_W64-NEXT:    v_mov_b32_e32 v10, 0520; GISEL10_W64-NEXT:    v_mov_b32_e32 v11, 0521; GISEL10_W64-NEXT:    s_mov_b64 s[0:1], s[48:49]522; GISEL10_W64-NEXT:    s_mov_b64 s[2:3], s[50:51]523; GISEL10_W64-NEXT:    s_waitcnt lgkmcnt(0)524; GISEL10_W64-NEXT:    s_swappc_b64 s[30:31], s[4:5]525; GISEL10_W64-NEXT:    s_or_saveexec_b64 s[0:1], -1526; GISEL10_W64-NEXT:    v_cndmask_b32_e64 v12, v40, v43, s[0:1]527; GISEL10_W64-NEXT:    s_mov_b64 exec, s[0:1]528; GISEL10_W64-NEXT:    v_mov_b32_e32 v0, v12529; GISEL10_W64-NEXT:    global_store_dword v[41:42], v0, off530; GISEL10_W64-NEXT:    s_endpgm531;532; DAGISEL10_W64-LABEL: set_inactive_chain_arg_call:533; DAGISEL10_W64:       ; %bb.0:534; DAGISEL10_W64-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)535; DAGISEL10_W64-NEXT:    s_mov_b32 s32, 0536; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v43, v11537; DAGISEL10_W64-NEXT:    s_or_saveexec_b64 s[0:1], -1538; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v40, v10539; DAGISEL10_W64-NEXT:    s_mov_b64 exec, s[0:1]540; DAGISEL10_W64-NEXT:    s_getpc_b64 s[0:1]541; DAGISEL10_W64-NEXT:    s_add_u32 s0, s0, gfx_callee@gotpcrel32@lo+4542; DAGISEL10_W64-NEXT:    s_addc_u32 s1, s1, gfx_callee@gotpcrel32@hi+12543; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v42, v9544; DAGISEL10_W64-NEXT:    s_load_dwordx2 s[4:5], s[0:1], 0x0545; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v41, v8546; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v0, 0547; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v1, 0548; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v2, 0549; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v3, 0550; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v4, 0551; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v5, 0552; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v6, 0553; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v7, 0554; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v8, 0555; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v9, 0556; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v10, 0557; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v11, 0558; DAGISEL10_W64-NEXT:    s_mov_b64 s[0:1], s[48:49]559; DAGISEL10_W64-NEXT:    s_mov_b64 s[2:3], s[50:51]560; DAGISEL10_W64-NEXT:    s_waitcnt lgkmcnt(0)561; DAGISEL10_W64-NEXT:    s_swappc_b64 s[30:31], s[4:5]562; DAGISEL10_W64-NEXT:    s_or_saveexec_b64 s[0:1], -1563; DAGISEL10_W64-NEXT:    v_cndmask_b32_e64 v12, v40, v43, s[0:1]564; DAGISEL10_W64-NEXT:    s_mov_b64 exec, s[0:1]565; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v0, v12566; DAGISEL10_W64-NEXT:    global_store_dword v[41:42], v0, off567; DAGISEL10_W64-NEXT:    s_endpgm568  call amdgpu_gfx void @gfx_callee(<12 x i32> zeroinitializer)569  %tmp = call i32 @llvm.amdgcn.set.inactive.chain.arg.i32(i32 %active, i32 %inactive) #0570  %wwm = call i32 @llvm.amdgcn.strict.wwm.i32(i32 %tmp)571  store i32 %wwm, ptr addrspace(1) %out572  ret void573}574 575; When lowering function arguments, SelectionDAG will put the COPY for the last argument first.576; This used to trigger a bug in si-wqm where the first COPY in the entry block was always skipped577; before entering a strict mode, meaning that we'd only copy the active lanes of the last VGPR578; argument, so we'd end up using arbitrary values for the inactive lanes.579define amdgpu_cs_chain void @set_inactive_chain_arg_last_vgpr(ptr addrspace(1) %out, i32 %active, i32 %inactive) {580; GISEL11-LABEL: set_inactive_chain_arg_last_vgpr:581; GISEL11:       ; %bb.0:582; GISEL11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)583; GISEL11-NEXT:    s_mov_b32 s32, 0584; GISEL11-NEXT:    v_dual_mov_b32 v41, v8 :: v_dual_mov_b32 v42, v9585; GISEL11-NEXT:    v_mov_b32_e32 v43, v10586; GISEL11-NEXT:    s_or_saveexec_b32 s0, -1587; GISEL11-NEXT:    v_mov_b32_e32 v40, v11588; GISEL11-NEXT:    s_mov_b32 exec_lo, s0589; GISEL11-NEXT:    s_getpc_b64 s[0:1]590; GISEL11-NEXT:    s_add_u32 s0, s0, gfx_callee@gotpcrel32@lo+4591; GISEL11-NEXT:    s_addc_u32 s1, s1, gfx_callee@gotpcrel32@hi+12592; GISEL11-NEXT:    v_dual_mov_b32 v0, 0 :: v_dual_mov_b32 v1, 0593; GISEL11-NEXT:    s_load_b64 s[0:1], s[0:1], 0x0594; GISEL11-NEXT:    v_dual_mov_b32 v2, 0 :: v_dual_mov_b32 v3, 0595; GISEL11-NEXT:    v_dual_mov_b32 v4, 0 :: v_dual_mov_b32 v5, 0596; GISEL11-NEXT:    v_dual_mov_b32 v6, 0 :: v_dual_mov_b32 v7, 0597; GISEL11-NEXT:    v_dual_mov_b32 v8, 0 :: v_dual_mov_b32 v9, 0598; GISEL11-NEXT:    v_dual_mov_b32 v10, 0 :: v_dual_mov_b32 v11, 0599; GISEL11-NEXT:    s_waitcnt lgkmcnt(0)600; GISEL11-NEXT:    s_swappc_b64 s[30:31], s[0:1]601; GISEL11-NEXT:    s_or_saveexec_b32 s0, -1602; GISEL11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)603; GISEL11-NEXT:    v_cndmask_b32_e64 v12, v40, v43, s0604; GISEL11-NEXT:    s_mov_b32 exec_lo, s0605; GISEL11-NEXT:    v_mov_b32_e32 v0, v12606; GISEL11-NEXT:    global_store_b32 v[41:42], v0, off607; GISEL11-NEXT:    s_endpgm608;609; DAGISEL11-LABEL: set_inactive_chain_arg_last_vgpr:610; DAGISEL11:       ; %bb.0:611; DAGISEL11-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)612; DAGISEL11-NEXT:    s_mov_b32 s32, 0613; DAGISEL11-NEXT:    s_or_saveexec_b32 s0, -1614; DAGISEL11-NEXT:    v_mov_b32_e32 v40, v11615; DAGISEL11-NEXT:    s_mov_b32 exec_lo, s0616; DAGISEL11-NEXT:    s_getpc_b64 s[0:1]617; DAGISEL11-NEXT:    s_add_u32 s0, s0, gfx_callee@gotpcrel32@lo+4618; DAGISEL11-NEXT:    s_addc_u32 s1, s1, gfx_callee@gotpcrel32@hi+12619; DAGISEL11-NEXT:    v_dual_mov_b32 v43, v10 :: v_dual_mov_b32 v42, v9620; DAGISEL11-NEXT:    s_load_b64 s[0:1], s[0:1], 0x0621; DAGISEL11-NEXT:    v_dual_mov_b32 v41, v8 :: v_dual_mov_b32 v0, 0622; DAGISEL11-NEXT:    v_dual_mov_b32 v1, 0 :: v_dual_mov_b32 v2, 0623; DAGISEL11-NEXT:    v_dual_mov_b32 v3, 0 :: v_dual_mov_b32 v4, 0624; DAGISEL11-NEXT:    v_dual_mov_b32 v5, 0 :: v_dual_mov_b32 v6, 0625; DAGISEL11-NEXT:    v_dual_mov_b32 v7, 0 :: v_dual_mov_b32 v8, 0626; DAGISEL11-NEXT:    v_dual_mov_b32 v9, 0 :: v_dual_mov_b32 v10, 0627; DAGISEL11-NEXT:    v_mov_b32_e32 v11, 0628; DAGISEL11-NEXT:    s_waitcnt lgkmcnt(0)629; DAGISEL11-NEXT:    s_swappc_b64 s[30:31], s[0:1]630; DAGISEL11-NEXT:    s_or_saveexec_b32 s0, -1631; DAGISEL11-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)632; DAGISEL11-NEXT:    v_cndmask_b32_e64 v12, v40, v43, s0633; DAGISEL11-NEXT:    s_mov_b32 exec_lo, s0634; DAGISEL11-NEXT:    v_mov_b32_e32 v0, v12635; DAGISEL11-NEXT:    global_store_b32 v[41:42], v0, off636; DAGISEL11-NEXT:    s_endpgm637;638; GISEL10-LABEL: set_inactive_chain_arg_last_vgpr:639; GISEL10:       ; %bb.0:640; GISEL10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)641; GISEL10-NEXT:    s_mov_b32 s32, 0642; GISEL10-NEXT:    v_mov_b32_e32 v41, v8643; GISEL10-NEXT:    v_mov_b32_e32 v42, v9644; GISEL10-NEXT:    v_mov_b32_e32 v43, v10645; GISEL10-NEXT:    s_or_saveexec_b32 s0, -1646; GISEL10-NEXT:    v_mov_b32_e32 v40, v11647; GISEL10-NEXT:    s_mov_b32 exec_lo, s0648; GISEL10-NEXT:    s_getpc_b64 s[0:1]649; GISEL10-NEXT:    s_add_u32 s0, s0, gfx_callee@gotpcrel32@lo+4650; GISEL10-NEXT:    s_addc_u32 s1, s1, gfx_callee@gotpcrel32@hi+12651; GISEL10-NEXT:    v_mov_b32_e32 v0, 0652; GISEL10-NEXT:    s_load_dwordx2 s[4:5], s[0:1], 0x0653; GISEL10-NEXT:    v_mov_b32_e32 v1, 0654; GISEL10-NEXT:    v_mov_b32_e32 v2, 0655; GISEL10-NEXT:    v_mov_b32_e32 v3, 0656; GISEL10-NEXT:    v_mov_b32_e32 v4, 0657; GISEL10-NEXT:    v_mov_b32_e32 v5, 0658; GISEL10-NEXT:    v_mov_b32_e32 v6, 0659; GISEL10-NEXT:    v_mov_b32_e32 v7, 0660; GISEL10-NEXT:    v_mov_b32_e32 v8, 0661; GISEL10-NEXT:    v_mov_b32_e32 v9, 0662; GISEL10-NEXT:    v_mov_b32_e32 v10, 0663; GISEL10-NEXT:    v_mov_b32_e32 v11, 0664; GISEL10-NEXT:    s_mov_b64 s[0:1], s[48:49]665; GISEL10-NEXT:    s_mov_b64 s[2:3], s[50:51]666; GISEL10-NEXT:    s_waitcnt lgkmcnt(0)667; GISEL10-NEXT:    s_swappc_b64 s[30:31], s[4:5]668; GISEL10-NEXT:    s_or_saveexec_b32 s0, -1669; GISEL10-NEXT:    v_cndmask_b32_e64 v12, v40, v43, s0670; GISEL10-NEXT:    s_mov_b32 exec_lo, s0671; GISEL10-NEXT:    v_mov_b32_e32 v0, v12672; GISEL10-NEXT:    global_store_dword v[41:42], v0, off673; GISEL10-NEXT:    s_endpgm674;675; DAGISEL10-LABEL: set_inactive_chain_arg_last_vgpr:676; DAGISEL10:       ; %bb.0:677; DAGISEL10-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)678; DAGISEL10-NEXT:    s_mov_b32 s32, 0679; DAGISEL10-NEXT:    s_or_saveexec_b32 s0, -1680; DAGISEL10-NEXT:    v_mov_b32_e32 v40, v11681; DAGISEL10-NEXT:    s_mov_b32 exec_lo, s0682; DAGISEL10-NEXT:    s_getpc_b64 s[0:1]683; DAGISEL10-NEXT:    s_add_u32 s0, s0, gfx_callee@gotpcrel32@lo+4684; DAGISEL10-NEXT:    s_addc_u32 s1, s1, gfx_callee@gotpcrel32@hi+12685; DAGISEL10-NEXT:    v_mov_b32_e32 v43, v10686; DAGISEL10-NEXT:    s_load_dwordx2 s[4:5], s[0:1], 0x0687; DAGISEL10-NEXT:    v_mov_b32_e32 v42, v9688; DAGISEL10-NEXT:    v_mov_b32_e32 v41, v8689; DAGISEL10-NEXT:    v_mov_b32_e32 v0, 0690; DAGISEL10-NEXT:    v_mov_b32_e32 v1, 0691; DAGISEL10-NEXT:    v_mov_b32_e32 v2, 0692; DAGISEL10-NEXT:    v_mov_b32_e32 v3, 0693; DAGISEL10-NEXT:    v_mov_b32_e32 v4, 0694; DAGISEL10-NEXT:    v_mov_b32_e32 v5, 0695; DAGISEL10-NEXT:    v_mov_b32_e32 v6, 0696; DAGISEL10-NEXT:    v_mov_b32_e32 v7, 0697; DAGISEL10-NEXT:    v_mov_b32_e32 v8, 0698; DAGISEL10-NEXT:    v_mov_b32_e32 v9, 0699; DAGISEL10-NEXT:    v_mov_b32_e32 v10, 0700; DAGISEL10-NEXT:    v_mov_b32_e32 v11, 0701; DAGISEL10-NEXT:    s_mov_b64 s[0:1], s[48:49]702; DAGISEL10-NEXT:    s_mov_b64 s[2:3], s[50:51]703; DAGISEL10-NEXT:    s_waitcnt lgkmcnt(0)704; DAGISEL10-NEXT:    s_swappc_b64 s[30:31], s[4:5]705; DAGISEL10-NEXT:    s_or_saveexec_b32 s0, -1706; DAGISEL10-NEXT:    v_cndmask_b32_e64 v12, v40, v43, s0707; DAGISEL10-NEXT:    s_mov_b32 exec_lo, s0708; DAGISEL10-NEXT:    v_mov_b32_e32 v0, v12709; DAGISEL10-NEXT:    global_store_dword v[41:42], v0, off710; DAGISEL10-NEXT:    s_endpgm711;712; GISEL11_W64-LABEL: set_inactive_chain_arg_last_vgpr:713; GISEL11_W64:       ; %bb.0:714; GISEL11_W64-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)715; GISEL11_W64-NEXT:    s_mov_b32 s32, 0716; GISEL11_W64-NEXT:    v_mov_b32_e32 v41, v8717; GISEL11_W64-NEXT:    v_mov_b32_e32 v42, v9718; GISEL11_W64-NEXT:    v_mov_b32_e32 v43, v10719; GISEL11_W64-NEXT:    s_or_saveexec_b64 s[0:1], -1720; GISEL11_W64-NEXT:    v_mov_b32_e32 v40, v11721; GISEL11_W64-NEXT:    s_mov_b64 exec, s[0:1]722; GISEL11_W64-NEXT:    s_getpc_b64 s[0:1]723; GISEL11_W64-NEXT:    s_add_u32 s0, s0, gfx_callee@gotpcrel32@lo+4724; GISEL11_W64-NEXT:    s_addc_u32 s1, s1, gfx_callee@gotpcrel32@hi+12725; GISEL11_W64-NEXT:    v_mov_b32_e32 v0, 0726; GISEL11_W64-NEXT:    s_load_b64 s[0:1], s[0:1], 0x0727; GISEL11_W64-NEXT:    v_mov_b32_e32 v1, 0728; GISEL11_W64-NEXT:    v_mov_b32_e32 v2, 0729; GISEL11_W64-NEXT:    v_mov_b32_e32 v3, 0730; GISEL11_W64-NEXT:    v_mov_b32_e32 v4, 0731; GISEL11_W64-NEXT:    v_mov_b32_e32 v5, 0732; GISEL11_W64-NEXT:    v_mov_b32_e32 v6, 0733; GISEL11_W64-NEXT:    v_mov_b32_e32 v7, 0734; GISEL11_W64-NEXT:    v_mov_b32_e32 v8, 0735; GISEL11_W64-NEXT:    v_mov_b32_e32 v9, 0736; GISEL11_W64-NEXT:    v_mov_b32_e32 v10, 0737; GISEL11_W64-NEXT:    v_mov_b32_e32 v11, 0738; GISEL11_W64-NEXT:    s_waitcnt lgkmcnt(0)739; GISEL11_W64-NEXT:    s_swappc_b64 s[30:31], s[0:1]740; GISEL11_W64-NEXT:    s_or_saveexec_b64 s[0:1], -1741; GISEL11_W64-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)742; GISEL11_W64-NEXT:    v_cndmask_b32_e64 v12, v40, v43, s[0:1]743; GISEL11_W64-NEXT:    s_mov_b64 exec, s[0:1]744; GISEL11_W64-NEXT:    v_mov_b32_e32 v0, v12745; GISEL11_W64-NEXT:    global_store_b32 v[41:42], v0, off746; GISEL11_W64-NEXT:    s_endpgm747;748; DAGISEL11_W64-LABEL: set_inactive_chain_arg_last_vgpr:749; DAGISEL11_W64:       ; %bb.0:750; DAGISEL11_W64-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)751; DAGISEL11_W64-NEXT:    s_mov_b32 s32, 0752; DAGISEL11_W64-NEXT:    s_or_saveexec_b64 s[0:1], -1753; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v40, v11754; DAGISEL11_W64-NEXT:    s_mov_b64 exec, s[0:1]755; DAGISEL11_W64-NEXT:    s_getpc_b64 s[0:1]756; DAGISEL11_W64-NEXT:    s_add_u32 s0, s0, gfx_callee@gotpcrel32@lo+4757; DAGISEL11_W64-NEXT:    s_addc_u32 s1, s1, gfx_callee@gotpcrel32@hi+12758; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v43, v10759; DAGISEL11_W64-NEXT:    s_load_b64 s[0:1], s[0:1], 0x0760; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v42, v9761; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v41, v8762; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v0, 0763; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v1, 0764; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v2, 0765; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v3, 0766; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v4, 0767; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v5, 0768; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v6, 0769; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v7, 0770; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v8, 0771; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v9, 0772; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v10, 0773; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v11, 0774; DAGISEL11_W64-NEXT:    s_waitcnt lgkmcnt(0)775; DAGISEL11_W64-NEXT:    s_swappc_b64 s[30:31], s[0:1]776; DAGISEL11_W64-NEXT:    s_or_saveexec_b64 s[0:1], -1777; DAGISEL11_W64-NEXT:    s_delay_alu instid0(SALU_CYCLE_1) | instskip(SKIP_1) | instid1(VALU_DEP_1)778; DAGISEL11_W64-NEXT:    v_cndmask_b32_e64 v12, v40, v43, s[0:1]779; DAGISEL11_W64-NEXT:    s_mov_b64 exec, s[0:1]780; DAGISEL11_W64-NEXT:    v_mov_b32_e32 v0, v12781; DAGISEL11_W64-NEXT:    global_store_b32 v[41:42], v0, off782; DAGISEL11_W64-NEXT:    s_endpgm783;784; GISEL10_W64-LABEL: set_inactive_chain_arg_last_vgpr:785; GISEL10_W64:       ; %bb.0:786; GISEL10_W64-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)787; GISEL10_W64-NEXT:    s_mov_b32 s32, 0788; GISEL10_W64-NEXT:    v_mov_b32_e32 v41, v8789; GISEL10_W64-NEXT:    v_mov_b32_e32 v42, v9790; GISEL10_W64-NEXT:    v_mov_b32_e32 v43, v10791; GISEL10_W64-NEXT:    s_or_saveexec_b64 s[0:1], -1792; GISEL10_W64-NEXT:    v_mov_b32_e32 v40, v11793; GISEL10_W64-NEXT:    s_mov_b64 exec, s[0:1]794; GISEL10_W64-NEXT:    s_getpc_b64 s[0:1]795; GISEL10_W64-NEXT:    s_add_u32 s0, s0, gfx_callee@gotpcrel32@lo+4796; GISEL10_W64-NEXT:    s_addc_u32 s1, s1, gfx_callee@gotpcrel32@hi+12797; GISEL10_W64-NEXT:    v_mov_b32_e32 v0, 0798; GISEL10_W64-NEXT:    s_load_dwordx2 s[4:5], s[0:1], 0x0799; GISEL10_W64-NEXT:    v_mov_b32_e32 v1, 0800; GISEL10_W64-NEXT:    v_mov_b32_e32 v2, 0801; GISEL10_W64-NEXT:    v_mov_b32_e32 v3, 0802; GISEL10_W64-NEXT:    v_mov_b32_e32 v4, 0803; GISEL10_W64-NEXT:    v_mov_b32_e32 v5, 0804; GISEL10_W64-NEXT:    v_mov_b32_e32 v6, 0805; GISEL10_W64-NEXT:    v_mov_b32_e32 v7, 0806; GISEL10_W64-NEXT:    v_mov_b32_e32 v8, 0807; GISEL10_W64-NEXT:    v_mov_b32_e32 v9, 0808; GISEL10_W64-NEXT:    v_mov_b32_e32 v10, 0809; GISEL10_W64-NEXT:    v_mov_b32_e32 v11, 0810; GISEL10_W64-NEXT:    s_mov_b64 s[0:1], s[48:49]811; GISEL10_W64-NEXT:    s_mov_b64 s[2:3], s[50:51]812; GISEL10_W64-NEXT:    s_waitcnt lgkmcnt(0)813; GISEL10_W64-NEXT:    s_swappc_b64 s[30:31], s[4:5]814; GISEL10_W64-NEXT:    s_or_saveexec_b64 s[0:1], -1815; GISEL10_W64-NEXT:    v_cndmask_b32_e64 v12, v40, v43, s[0:1]816; GISEL10_W64-NEXT:    s_mov_b64 exec, s[0:1]817; GISEL10_W64-NEXT:    v_mov_b32_e32 v0, v12818; GISEL10_W64-NEXT:    global_store_dword v[41:42], v0, off819; GISEL10_W64-NEXT:    s_endpgm820;821; DAGISEL10_W64-LABEL: set_inactive_chain_arg_last_vgpr:822; DAGISEL10_W64:       ; %bb.0:823; DAGISEL10_W64-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)824; DAGISEL10_W64-NEXT:    s_mov_b32 s32, 0825; DAGISEL10_W64-NEXT:    s_or_saveexec_b64 s[0:1], -1826; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v40, v11827; DAGISEL10_W64-NEXT:    s_mov_b64 exec, s[0:1]828; DAGISEL10_W64-NEXT:    s_getpc_b64 s[0:1]829; DAGISEL10_W64-NEXT:    s_add_u32 s0, s0, gfx_callee@gotpcrel32@lo+4830; DAGISEL10_W64-NEXT:    s_addc_u32 s1, s1, gfx_callee@gotpcrel32@hi+12831; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v43, v10832; DAGISEL10_W64-NEXT:    s_load_dwordx2 s[4:5], s[0:1], 0x0833; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v42, v9834; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v41, v8835; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v0, 0836; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v1, 0837; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v2, 0838; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v3, 0839; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v4, 0840; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v5, 0841; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v6, 0842; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v7, 0843; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v8, 0844; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v9, 0845; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v10, 0846; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v11, 0847; DAGISEL10_W64-NEXT:    s_mov_b64 s[0:1], s[48:49]848; DAGISEL10_W64-NEXT:    s_mov_b64 s[2:3], s[50:51]849; DAGISEL10_W64-NEXT:    s_waitcnt lgkmcnt(0)850; DAGISEL10_W64-NEXT:    s_swappc_b64 s[30:31], s[4:5]851; DAGISEL10_W64-NEXT:    s_or_saveexec_b64 s[0:1], -1852; DAGISEL10_W64-NEXT:    v_cndmask_b32_e64 v12, v40, v43, s[0:1]853; DAGISEL10_W64-NEXT:    s_mov_b64 exec, s[0:1]854; DAGISEL10_W64-NEXT:    v_mov_b32_e32 v0, v12855; DAGISEL10_W64-NEXT:    global_store_dword v[41:42], v0, off856; DAGISEL10_W64-NEXT:    s_endpgm857  call amdgpu_gfx void @gfx_callee(<12 x i32> zeroinitializer)858  %tmp = call i32 @llvm.amdgcn.set.inactive.chain.arg.i32(i32 %active, i32 %inactive) #0859  %wwm = call i32 @llvm.amdgcn.strict.wwm.i32(i32 %tmp)860  store i32 %wwm, ptr addrspace(1) %out861  ret void862}863 864declare i32 @llvm.amdgcn.set.inactive.chain.arg.i32(i32, i32) #0865declare i64 @llvm.amdgcn.set.inactive.chain.arg.i64(i64, i64) #0866declare i32 @llvm.amdgcn.update.dpp.i32(i32, i32, i32 immarg, i32 immarg, i32 immarg, i1 immarg)867declare i32 @llvm.amdgcn.strict.wwm.i32(i32)868declare i64 @llvm.amdgcn.strict.wwm.i64(i64)869declare amdgpu_gfx void @gfx_callee(<12 x i32>)870 871attributes #0 = { convergent readnone willreturn nocallback nofree}872