4050 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9,GFX900 %s3; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX90A %s4; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx942 < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX942 %s5 6 7define void @v_shuffle_v2i32_v3i32__u_u(ptr addrspace(1) inreg %ptr) {8; GFX9-LABEL: v_shuffle_v2i32_v3i32__u_u:9; GFX9: ; %bb.0:10; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11; GFX9-NEXT: s_setpc_b64 s[30:31]12 %vec0 = call <3 x i32> asm "; def $0", "=v"()13 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> poison14 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 815 ret void16}17 18define void @v_shuffle_v2i32_v3i32__0_u(ptr addrspace(1) inreg %ptr) {19; GFX900-LABEL: v_shuffle_v2i32_v3i32__0_u:20; GFX900: ; %bb.0:21; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22; GFX900-NEXT: v_mov_b32_e32 v3, 023; GFX900-NEXT: ;;#ASMSTART24; GFX900-NEXT: ; def v[0:2]25; GFX900-NEXT: ;;#ASMEND26; GFX900-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]27; GFX900-NEXT: s_waitcnt vmcnt(0)28; GFX900-NEXT: s_setpc_b64 s[30:31]29;30; GFX90A-LABEL: v_shuffle_v2i32_v3i32__0_u:31; GFX90A: ; %bb.0:32; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)33; GFX90A-NEXT: v_mov_b32_e32 v3, 034; GFX90A-NEXT: ;;#ASMSTART35; GFX90A-NEXT: ; def v[0:2]36; GFX90A-NEXT: ;;#ASMEND37; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]38; GFX90A-NEXT: s_waitcnt vmcnt(0)39; GFX90A-NEXT: s_setpc_b64 s[30:31]40;41; GFX942-LABEL: v_shuffle_v2i32_v3i32__0_u:42; GFX942: ; %bb.0:43; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)44; GFX942-NEXT: v_mov_b32_e32 v3, 045; GFX942-NEXT: ;;#ASMSTART46; GFX942-NEXT: ; def v[0:2]47; GFX942-NEXT: ;;#ASMEND48; GFX942-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1]49; GFX942-NEXT: s_waitcnt vmcnt(0)50; GFX942-NEXT: s_setpc_b64 s[30:31]51 %vec0 = call <3 x i32> asm "; def $0", "=v"()52 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 poison>53 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 854 ret void55}56 57define void @v_shuffle_v2i32_v3i32__1_u(ptr addrspace(1) inreg %ptr) {58; GFX900-LABEL: v_shuffle_v2i32_v3i32__1_u:59; GFX900: ; %bb.0:60; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)61; GFX900-NEXT: v_mov_b32_e32 v3, 062; GFX900-NEXT: ;;#ASMSTART63; GFX900-NEXT: ; def v[0:2]64; GFX900-NEXT: ;;#ASMEND65; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], s[16:17]66; GFX900-NEXT: s_waitcnt vmcnt(0)67; GFX900-NEXT: s_setpc_b64 s[30:31]68;69; GFX90A-LABEL: v_shuffle_v2i32_v3i32__1_u:70; GFX90A: ; %bb.0:71; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)72; GFX90A-NEXT: ;;#ASMSTART73; GFX90A-NEXT: ; def v[0:2]74; GFX90A-NEXT: ;;#ASMEND75; GFX90A-NEXT: v_mov_b32_e32 v3, 076; GFX90A-NEXT: v_mov_b32_e32 v0, v177; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]78; GFX90A-NEXT: s_waitcnt vmcnt(0)79; GFX90A-NEXT: s_setpc_b64 s[30:31]80;81; GFX942-LABEL: v_shuffle_v2i32_v3i32__1_u:82; GFX942: ; %bb.0:83; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)84; GFX942-NEXT: ;;#ASMSTART85; GFX942-NEXT: ; def v[0:2]86; GFX942-NEXT: ;;#ASMEND87; GFX942-NEXT: v_mov_b32_e32 v3, 088; GFX942-NEXT: v_mov_b32_e32 v0, v189; GFX942-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1]90; GFX942-NEXT: s_waitcnt vmcnt(0)91; GFX942-NEXT: s_setpc_b64 s[30:31]92 %vec0 = call <3 x i32> asm "; def $0", "=v"()93 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 poison>94 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 895 ret void96}97 98define void @v_shuffle_v2i32_v3i32__2_u(ptr addrspace(1) inreg %ptr) {99; GFX900-LABEL: v_shuffle_v2i32_v3i32__2_u:100; GFX900: ; %bb.0:101; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)102; GFX900-NEXT: v_mov_b32_e32 v3, 0103; GFX900-NEXT: ;;#ASMSTART104; GFX900-NEXT: ; def v[0:2]105; GFX900-NEXT: ;;#ASMEND106; GFX900-NEXT: global_store_dwordx2 v3, v[2:3], s[16:17]107; GFX900-NEXT: s_waitcnt vmcnt(0)108; GFX900-NEXT: s_setpc_b64 s[30:31]109;110; GFX90A-LABEL: v_shuffle_v2i32_v3i32__2_u:111; GFX90A: ; %bb.0:112; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)113; GFX90A-NEXT: v_mov_b32_e32 v3, 0114; GFX90A-NEXT: ;;#ASMSTART115; GFX90A-NEXT: ; def v[0:2]116; GFX90A-NEXT: ;;#ASMEND117; GFX90A-NEXT: global_store_dwordx2 v3, v[2:3], s[16:17]118; GFX90A-NEXT: s_waitcnt vmcnt(0)119; GFX90A-NEXT: s_setpc_b64 s[30:31]120;121; GFX942-LABEL: v_shuffle_v2i32_v3i32__2_u:122; GFX942: ; %bb.0:123; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)124; GFX942-NEXT: v_mov_b32_e32 v3, 0125; GFX942-NEXT: ;;#ASMSTART126; GFX942-NEXT: ; def v[0:2]127; GFX942-NEXT: ;;#ASMEND128; GFX942-NEXT: global_store_dwordx2 v3, v[2:3], s[0:1]129; GFX942-NEXT: s_waitcnt vmcnt(0)130; GFX942-NEXT: s_setpc_b64 s[30:31]131 %vec0 = call <3 x i32> asm "; def $0", "=v"()132 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 poison>133 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8134 ret void135}136 137define void @v_shuffle_v2i32_v3i32__3_u(ptr addrspace(1) inreg %ptr) {138; GFX9-LABEL: v_shuffle_v2i32_v3i32__3_u:139; GFX9: ; %bb.0:140; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)141; GFX9-NEXT: s_setpc_b64 s[30:31]142 %vec0 = call <3 x i32> asm "; def $0", "=v"()143 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 poison>144 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8145 ret void146}147 148define void @v_shuffle_v2i32_v3i32__4_u(ptr addrspace(1) inreg %ptr) {149; GFX900-LABEL: v_shuffle_v2i32_v3i32__4_u:150; GFX900: ; %bb.0:151; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)152; GFX900-NEXT: v_mov_b32_e32 v3, 0153; GFX900-NEXT: ;;#ASMSTART154; GFX900-NEXT: ; def v[0:2]155; GFX900-NEXT: ;;#ASMEND156; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], s[16:17]157; GFX900-NEXT: s_waitcnt vmcnt(0)158; GFX900-NEXT: s_setpc_b64 s[30:31]159;160; GFX90A-LABEL: v_shuffle_v2i32_v3i32__4_u:161; GFX90A: ; %bb.0:162; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)163; GFX90A-NEXT: ;;#ASMSTART164; GFX90A-NEXT: ; def v[0:2]165; GFX90A-NEXT: ;;#ASMEND166; GFX90A-NEXT: v_mov_b32_e32 v3, 0167; GFX90A-NEXT: v_mov_b32_e32 v0, v1168; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]169; GFX90A-NEXT: s_waitcnt vmcnt(0)170; GFX90A-NEXT: s_setpc_b64 s[30:31]171;172; GFX942-LABEL: v_shuffle_v2i32_v3i32__4_u:173; GFX942: ; %bb.0:174; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)175; GFX942-NEXT: ;;#ASMSTART176; GFX942-NEXT: ; def v[0:2]177; GFX942-NEXT: ;;#ASMEND178; GFX942-NEXT: v_mov_b32_e32 v3, 0179; GFX942-NEXT: v_mov_b32_e32 v0, v1180; GFX942-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1]181; GFX942-NEXT: s_waitcnt vmcnt(0)182; GFX942-NEXT: s_setpc_b64 s[30:31]183 %vec0 = call <3 x i32> asm "; def $0", "=v"()184 %vec1 = call <3 x i32> asm "; def $0", "=v"()185 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 poison>186 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8187 ret void188}189 190define void @v_shuffle_v2i32_v3i32__5_u(ptr addrspace(1) inreg %ptr) {191; GFX900-LABEL: v_shuffle_v2i32_v3i32__5_u:192; GFX900: ; %bb.0:193; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)194; GFX900-NEXT: v_mov_b32_e32 v3, 0195; GFX900-NEXT: ;;#ASMSTART196; GFX900-NEXT: ; def v[0:2]197; GFX900-NEXT: ;;#ASMEND198; GFX900-NEXT: global_store_dwordx2 v3, v[2:3], s[16:17]199; GFX900-NEXT: s_waitcnt vmcnt(0)200; GFX900-NEXT: s_setpc_b64 s[30:31]201;202; GFX90A-LABEL: v_shuffle_v2i32_v3i32__5_u:203; GFX90A: ; %bb.0:204; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)205; GFX90A-NEXT: v_mov_b32_e32 v3, 0206; GFX90A-NEXT: ;;#ASMSTART207; GFX90A-NEXT: ; def v[0:2]208; GFX90A-NEXT: ;;#ASMEND209; GFX90A-NEXT: global_store_dwordx2 v3, v[2:3], s[16:17]210; GFX90A-NEXT: s_waitcnt vmcnt(0)211; GFX90A-NEXT: s_setpc_b64 s[30:31]212;213; GFX942-LABEL: v_shuffle_v2i32_v3i32__5_u:214; GFX942: ; %bb.0:215; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)216; GFX942-NEXT: v_mov_b32_e32 v3, 0217; GFX942-NEXT: ;;#ASMSTART218; GFX942-NEXT: ; def v[0:2]219; GFX942-NEXT: ;;#ASMEND220; GFX942-NEXT: global_store_dwordx2 v3, v[2:3], s[0:1]221; GFX942-NEXT: s_waitcnt vmcnt(0)222; GFX942-NEXT: s_setpc_b64 s[30:31]223 %vec0 = call <3 x i32> asm "; def $0", "=v"()224 %vec1 = call <3 x i32> asm "; def $0", "=v"()225 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 poison>226 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8227 ret void228}229 230define void @v_shuffle_v2i32_v3i32__5_0(ptr addrspace(1) inreg %ptr) {231; GFX900-LABEL: v_shuffle_v2i32_v3i32__5_0:232; GFX900: ; %bb.0:233; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)234; GFX900-NEXT: v_mov_b32_e32 v6, 0235; GFX900-NEXT: ;;#ASMSTART236; GFX900-NEXT: ; def v[3:5]237; GFX900-NEXT: ;;#ASMEND238; GFX900-NEXT: ;;#ASMSTART239; GFX900-NEXT: ; def v[0:2]240; GFX900-NEXT: ;;#ASMEND241; GFX900-NEXT: global_store_dwordx2 v6, v[2:3], s[16:17]242; GFX900-NEXT: s_waitcnt vmcnt(0)243; GFX900-NEXT: s_setpc_b64 s[30:31]244;245; GFX90A-LABEL: v_shuffle_v2i32_v3i32__5_0:246; GFX90A: ; %bb.0:247; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)248; GFX90A-NEXT: v_mov_b32_e32 v7, 0249; GFX90A-NEXT: ;;#ASMSTART250; GFX90A-NEXT: ; def v[4:6]251; GFX90A-NEXT: ;;#ASMEND252; GFX90A-NEXT: v_mov_b32_e32 v3, v4253; GFX90A-NEXT: ;;#ASMSTART254; GFX90A-NEXT: ; def v[0:2]255; GFX90A-NEXT: ;;#ASMEND256; GFX90A-NEXT: global_store_dwordx2 v7, v[2:3], s[16:17]257; GFX90A-NEXT: s_waitcnt vmcnt(0)258; GFX90A-NEXT: s_setpc_b64 s[30:31]259;260; GFX942-LABEL: v_shuffle_v2i32_v3i32__5_0:261; GFX942: ; %bb.0:262; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)263; GFX942-NEXT: v_mov_b32_e32 v7, 0264; GFX942-NEXT: ;;#ASMSTART265; GFX942-NEXT: ; def v[4:6]266; GFX942-NEXT: ;;#ASMEND267; GFX942-NEXT: ;;#ASMSTART268; GFX942-NEXT: ; def v[0:2]269; GFX942-NEXT: ;;#ASMEND270; GFX942-NEXT: s_nop 0271; GFX942-NEXT: v_mov_b32_e32 v3, v4272; GFX942-NEXT: global_store_dwordx2 v7, v[2:3], s[0:1]273; GFX942-NEXT: s_waitcnt vmcnt(0)274; GFX942-NEXT: s_setpc_b64 s[30:31]275 %vec0 = call <3 x i32> asm "; def $0", "=v"()276 %vec1 = call <3 x i32> asm "; def $0", "=v"()277 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 0>278 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8279 ret void280}281 282define void @v_shuffle_v2i32_v3i32__5_1(ptr addrspace(1) inreg %ptr) {283; GFX900-LABEL: v_shuffle_v2i32_v3i32__5_1:284; GFX900: ; %bb.0:285; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)286; GFX900-NEXT: v_mov_b32_e32 v5, 0287; GFX900-NEXT: ;;#ASMSTART288; GFX900-NEXT: ; def v[2:4]289; GFX900-NEXT: ;;#ASMEND290; GFX900-NEXT: ;;#ASMSTART291; GFX900-NEXT: ; def v[0:2]292; GFX900-NEXT: ;;#ASMEND293; GFX900-NEXT: global_store_dwordx2 v5, v[2:3], s[16:17]294; GFX900-NEXT: s_waitcnt vmcnt(0)295; GFX900-NEXT: s_setpc_b64 s[30:31]296;297; GFX90A-LABEL: v_shuffle_v2i32_v3i32__5_1:298; GFX90A: ; %bb.0:299; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)300; GFX90A-NEXT: v_mov_b32_e32 v5, 0301; GFX90A-NEXT: ;;#ASMSTART302; GFX90A-NEXT: ; def v[2:4]303; GFX90A-NEXT: ;;#ASMEND304; GFX90A-NEXT: ;;#ASMSTART305; GFX90A-NEXT: ; def v[0:2]306; GFX90A-NEXT: ;;#ASMEND307; GFX90A-NEXT: global_store_dwordx2 v5, v[2:3], s[16:17]308; GFX90A-NEXT: s_waitcnt vmcnt(0)309; GFX90A-NEXT: s_setpc_b64 s[30:31]310;311; GFX942-LABEL: v_shuffle_v2i32_v3i32__5_1:312; GFX942: ; %bb.0:313; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)314; GFX942-NEXT: v_mov_b32_e32 v5, 0315; GFX942-NEXT: ;;#ASMSTART316; GFX942-NEXT: ; def v[2:4]317; GFX942-NEXT: ;;#ASMEND318; GFX942-NEXT: s_nop 0319; GFX942-NEXT: ;;#ASMSTART320; GFX942-NEXT: ; def v[0:2]321; GFX942-NEXT: ;;#ASMEND322; GFX942-NEXT: global_store_dwordx2 v5, v[2:3], s[0:1]323; GFX942-NEXT: s_waitcnt vmcnt(0)324; GFX942-NEXT: s_setpc_b64 s[30:31]325 %vec0 = call <3 x i32> asm "; def $0", "=v"()326 %vec1 = call <3 x i32> asm "; def $0", "=v"()327 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 1>328 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8329 ret void330}331 332define void @v_shuffle_v2i32_v3i32__5_2(ptr addrspace(1) inreg %ptr) {333; GFX900-LABEL: v_shuffle_v2i32_v3i32__5_2:334; GFX900: ; %bb.0:335; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)336; GFX900-NEXT: v_mov_b32_e32 v4, 0337; GFX900-NEXT: ;;#ASMSTART338; GFX900-NEXT: ; def v[1:3]339; GFX900-NEXT: ;;#ASMEND340; GFX900-NEXT: ;;#ASMSTART341; GFX900-NEXT: ; def v[0:2]342; GFX900-NEXT: ;;#ASMEND343; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]344; GFX900-NEXT: s_waitcnt vmcnt(0)345; GFX900-NEXT: s_setpc_b64 s[30:31]346;347; GFX90A-LABEL: v_shuffle_v2i32_v3i32__5_2:348; GFX90A: ; %bb.0:349; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)350; GFX90A-NEXT: ;;#ASMSTART351; GFX90A-NEXT: ; def v[2:4]352; GFX90A-NEXT: ;;#ASMEND353; GFX90A-NEXT: v_mov_b32_e32 v5, 0354; GFX90A-NEXT: v_mov_b32_e32 v3, v4355; GFX90A-NEXT: ;;#ASMSTART356; GFX90A-NEXT: ; def v[0:2]357; GFX90A-NEXT: ;;#ASMEND358; GFX90A-NEXT: global_store_dwordx2 v5, v[2:3], s[16:17]359; GFX90A-NEXT: s_waitcnt vmcnt(0)360; GFX90A-NEXT: s_setpc_b64 s[30:31]361;362; GFX942-LABEL: v_shuffle_v2i32_v3i32__5_2:363; GFX942: ; %bb.0:364; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)365; GFX942-NEXT: ;;#ASMSTART366; GFX942-NEXT: ; def v[2:4]367; GFX942-NEXT: ;;#ASMEND368; GFX942-NEXT: v_mov_b32_e32 v5, 0369; GFX942-NEXT: v_mov_b32_e32 v3, v4370; GFX942-NEXT: ;;#ASMSTART371; GFX942-NEXT: ; def v[0:2]372; GFX942-NEXT: ;;#ASMEND373; GFX942-NEXT: global_store_dwordx2 v5, v[2:3], s[0:1]374; GFX942-NEXT: s_waitcnt vmcnt(0)375; GFX942-NEXT: s_setpc_b64 s[30:31]376 %vec0 = call <3 x i32> asm "; def $0", "=v"()377 %vec1 = call <3 x i32> asm "; def $0", "=v"()378 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 2>379 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8380 ret void381}382 383define void @v_shuffle_v2i32_v3i32__5_3(ptr addrspace(1) inreg %ptr) {384; GFX900-LABEL: v_shuffle_v2i32_v3i32__5_3:385; GFX900: ; %bb.0:386; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)387; GFX900-NEXT: v_mov_b32_e32 v4, 0388; GFX900-NEXT: ;;#ASMSTART389; GFX900-NEXT: ; def v[0:2]390; GFX900-NEXT: ;;#ASMEND391; GFX900-NEXT: v_mov_b32_e32 v3, v0392; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]393; GFX900-NEXT: s_waitcnt vmcnt(0)394; GFX900-NEXT: s_setpc_b64 s[30:31]395;396; GFX90A-LABEL: v_shuffle_v2i32_v3i32__5_3:397; GFX90A: ; %bb.0:398; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)399; GFX90A-NEXT: v_mov_b32_e32 v4, 0400; GFX90A-NEXT: ;;#ASMSTART401; GFX90A-NEXT: ; def v[0:2]402; GFX90A-NEXT: ;;#ASMEND403; GFX90A-NEXT: v_mov_b32_e32 v3, v0404; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]405; GFX90A-NEXT: s_waitcnt vmcnt(0)406; GFX90A-NEXT: s_setpc_b64 s[30:31]407;408; GFX942-LABEL: v_shuffle_v2i32_v3i32__5_3:409; GFX942: ; %bb.0:410; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)411; GFX942-NEXT: v_mov_b32_e32 v4, 0412; GFX942-NEXT: ;;#ASMSTART413; GFX942-NEXT: ; def v[0:2]414; GFX942-NEXT: ;;#ASMEND415; GFX942-NEXT: s_nop 0416; GFX942-NEXT: v_mov_b32_e32 v3, v0417; GFX942-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1]418; GFX942-NEXT: s_waitcnt vmcnt(0)419; GFX942-NEXT: s_setpc_b64 s[30:31]420 %vec0 = call <3 x i32> asm "; def $0", "=v"()421 %vec1 = call <3 x i32> asm "; def $0", "=v"()422 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 3>423 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8424 ret void425}426 427define void @v_shuffle_v2i32_v3i32__5_4(ptr addrspace(1) inreg %ptr) {428; GFX900-LABEL: v_shuffle_v2i32_v3i32__5_4:429; GFX900: ; %bb.0:430; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)431; GFX900-NEXT: v_mov_b32_e32 v4, 0432; GFX900-NEXT: ;;#ASMSTART433; GFX900-NEXT: ; def v[0:2]434; GFX900-NEXT: ;;#ASMEND435; GFX900-NEXT: v_mov_b32_e32 v3, v1436; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]437; GFX900-NEXT: s_waitcnt vmcnt(0)438; GFX900-NEXT: s_setpc_b64 s[30:31]439;440; GFX90A-LABEL: v_shuffle_v2i32_v3i32__5_4:441; GFX90A: ; %bb.0:442; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)443; GFX90A-NEXT: v_mov_b32_e32 v4, 0444; GFX90A-NEXT: ;;#ASMSTART445; GFX90A-NEXT: ; def v[0:2]446; GFX90A-NEXT: ;;#ASMEND447; GFX90A-NEXT: v_mov_b32_e32 v3, v1448; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]449; GFX90A-NEXT: s_waitcnt vmcnt(0)450; GFX90A-NEXT: s_setpc_b64 s[30:31]451;452; GFX942-LABEL: v_shuffle_v2i32_v3i32__5_4:453; GFX942: ; %bb.0:454; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)455; GFX942-NEXT: v_mov_b32_e32 v4, 0456; GFX942-NEXT: ;;#ASMSTART457; GFX942-NEXT: ; def v[0:2]458; GFX942-NEXT: ;;#ASMEND459; GFX942-NEXT: s_nop 0460; GFX942-NEXT: v_mov_b32_e32 v3, v1461; GFX942-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1]462; GFX942-NEXT: s_waitcnt vmcnt(0)463; GFX942-NEXT: s_setpc_b64 s[30:31]464 %vec0 = call <3 x i32> asm "; def $0", "=v"()465 %vec1 = call <3 x i32> asm "; def $0", "=v"()466 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 4>467 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8468 ret void469}470 471define void @v_shuffle_v2i32_v3i32__5_5(ptr addrspace(1) inreg %ptr) {472; GFX900-LABEL: v_shuffle_v2i32_v3i32__5_5:473; GFX900: ; %bb.0:474; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)475; GFX900-NEXT: v_mov_b32_e32 v4, 0476; GFX900-NEXT: ;;#ASMSTART477; GFX900-NEXT: ; def v[0:2]478; GFX900-NEXT: ;;#ASMEND479; GFX900-NEXT: v_mov_b32_e32 v3, v2480; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]481; GFX900-NEXT: s_waitcnt vmcnt(0)482; GFX900-NEXT: s_setpc_b64 s[30:31]483;484; GFX90A-LABEL: v_shuffle_v2i32_v3i32__5_5:485; GFX90A: ; %bb.0:486; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)487; GFX90A-NEXT: v_mov_b32_e32 v4, 0488; GFX90A-NEXT: ;;#ASMSTART489; GFX90A-NEXT: ; def v[0:2]490; GFX90A-NEXT: ;;#ASMEND491; GFX90A-NEXT: v_mov_b32_e32 v3, v2492; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]493; GFX90A-NEXT: s_waitcnt vmcnt(0)494; GFX90A-NEXT: s_setpc_b64 s[30:31]495;496; GFX942-LABEL: v_shuffle_v2i32_v3i32__5_5:497; GFX942: ; %bb.0:498; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)499; GFX942-NEXT: v_mov_b32_e32 v4, 0500; GFX942-NEXT: ;;#ASMSTART501; GFX942-NEXT: ; def v[0:2]502; GFX942-NEXT: ;;#ASMEND503; GFX942-NEXT: s_nop 0504; GFX942-NEXT: v_mov_b32_e32 v3, v2505; GFX942-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1]506; GFX942-NEXT: s_waitcnt vmcnt(0)507; GFX942-NEXT: s_setpc_b64 s[30:31]508 %vec0 = call <3 x i32> asm "; def $0", "=v"()509 %vec1 = call <3 x i32> asm "; def $0", "=v"()510 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 5>511 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8512 ret void513}514 515define void @v_shuffle_v2i32_v3i32__u_0(ptr addrspace(1) inreg %ptr) {516; GFX900-LABEL: v_shuffle_v2i32_v3i32__u_0:517; GFX900: ; %bb.0:518; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)519; GFX900-NEXT: v_mov_b32_e32 v0, 0520; GFX900-NEXT: ;;#ASMSTART521; GFX900-NEXT: ; def v[1:3]522; GFX900-NEXT: ;;#ASMEND523; GFX900-NEXT: global_store_dwordx2 v0, v[0:1], s[16:17]524; GFX900-NEXT: s_waitcnt vmcnt(0)525; GFX900-NEXT: s_setpc_b64 s[30:31]526;527; GFX90A-LABEL: v_shuffle_v2i32_v3i32__u_0:528; GFX90A: ; %bb.0:529; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)530; GFX90A-NEXT: ;;#ASMSTART531; GFX90A-NEXT: ; def v[0:2]532; GFX90A-NEXT: ;;#ASMEND533; GFX90A-NEXT: v_mov_b32_e32 v3, 0534; GFX90A-NEXT: v_mov_b32_e32 v1, v0535; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]536; GFX90A-NEXT: s_waitcnt vmcnt(0)537; GFX90A-NEXT: s_setpc_b64 s[30:31]538;539; GFX942-LABEL: v_shuffle_v2i32_v3i32__u_0:540; GFX942: ; %bb.0:541; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)542; GFX942-NEXT: ;;#ASMSTART543; GFX942-NEXT: ; def v[0:2]544; GFX942-NEXT: ;;#ASMEND545; GFX942-NEXT: v_mov_b32_e32 v3, 0546; GFX942-NEXT: v_mov_b32_e32 v1, v0547; GFX942-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1]548; GFX942-NEXT: s_waitcnt vmcnt(0)549; GFX942-NEXT: s_setpc_b64 s[30:31]550 %vec0 = call <3 x i32> asm "; def $0", "=v"()551 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 0>552 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8553 ret void554}555 556define void @v_shuffle_v2i32_v3i32__0_0(ptr addrspace(1) inreg %ptr) {557; GFX900-LABEL: v_shuffle_v2i32_v3i32__0_0:558; GFX900: ; %bb.0:559; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)560; GFX900-NEXT: ;;#ASMSTART561; GFX900-NEXT: ; def v[0:2]562; GFX900-NEXT: ;;#ASMEND563; GFX900-NEXT: v_mov_b32_e32 v3, 0564; GFX900-NEXT: v_mov_b32_e32 v1, v0565; GFX900-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]566; GFX900-NEXT: s_waitcnt vmcnt(0)567; GFX900-NEXT: s_setpc_b64 s[30:31]568;569; GFX90A-LABEL: v_shuffle_v2i32_v3i32__0_0:570; GFX90A: ; %bb.0:571; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)572; GFX90A-NEXT: ;;#ASMSTART573; GFX90A-NEXT: ; def v[0:2]574; GFX90A-NEXT: ;;#ASMEND575; GFX90A-NEXT: v_mov_b32_e32 v3, 0576; GFX90A-NEXT: v_mov_b32_e32 v1, v0577; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]578; GFX90A-NEXT: s_waitcnt vmcnt(0)579; GFX90A-NEXT: s_setpc_b64 s[30:31]580;581; GFX942-LABEL: v_shuffle_v2i32_v3i32__0_0:582; GFX942: ; %bb.0:583; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)584; GFX942-NEXT: ;;#ASMSTART585; GFX942-NEXT: ; def v[0:2]586; GFX942-NEXT: ;;#ASMEND587; GFX942-NEXT: v_mov_b32_e32 v3, 0588; GFX942-NEXT: v_mov_b32_e32 v1, v0589; GFX942-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1]590; GFX942-NEXT: s_waitcnt vmcnt(0)591; GFX942-NEXT: s_setpc_b64 s[30:31]592 %vec0 = call <3 x i32> asm "; def $0", "=v"()593 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> zeroinitializer594 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8595 ret void596}597 598define void @v_shuffle_v2i32_v3i32__1_0(ptr addrspace(1) inreg %ptr) {599; GFX900-LABEL: v_shuffle_v2i32_v3i32__1_0:600; GFX900: ; %bb.0:601; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)602; GFX900-NEXT: ;;#ASMSTART603; GFX900-NEXT: ; def v[0:2]604; GFX900-NEXT: ;;#ASMEND605; GFX900-NEXT: v_mov_b32_e32 v3, 0606; GFX900-NEXT: v_mov_b32_e32 v2, v0607; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], s[16:17]608; GFX900-NEXT: s_waitcnt vmcnt(0)609; GFX900-NEXT: s_setpc_b64 s[30:31]610;611; GFX90A-LABEL: v_shuffle_v2i32_v3i32__1_0:612; GFX90A: ; %bb.0:613; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)614; GFX90A-NEXT: ;;#ASMSTART615; GFX90A-NEXT: ; def v[0:2]616; GFX90A-NEXT: ;;#ASMEND617; GFX90A-NEXT: v_mov_b32_e32 v3, 0618; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]619; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]620; GFX90A-NEXT: s_waitcnt vmcnt(0)621; GFX90A-NEXT: s_setpc_b64 s[30:31]622;623; GFX942-LABEL: v_shuffle_v2i32_v3i32__1_0:624; GFX942: ; %bb.0:625; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)626; GFX942-NEXT: ;;#ASMSTART627; GFX942-NEXT: ; def v[0:2]628; GFX942-NEXT: ;;#ASMEND629; GFX942-NEXT: v_mov_b32_e32 v3, 0630; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]631; GFX942-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1]632; GFX942-NEXT: s_waitcnt vmcnt(0)633; GFX942-NEXT: s_setpc_b64 s[30:31]634 %vec0 = call <3 x i32> asm "; def $0", "=v"()635 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 0>636 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8637 ret void638}639 640define void @v_shuffle_v2i32_v3i32__2_0(ptr addrspace(1) inreg %ptr) {641; GFX900-LABEL: v_shuffle_v2i32_v3i32__2_0:642; GFX900: ; %bb.0:643; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)644; GFX900-NEXT: v_mov_b32_e32 v4, 0645; GFX900-NEXT: ;;#ASMSTART646; GFX900-NEXT: ; def v[0:2]647; GFX900-NEXT: ;;#ASMEND648; GFX900-NEXT: v_mov_b32_e32 v3, v0649; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]650; GFX900-NEXT: s_waitcnt vmcnt(0)651; GFX900-NEXT: s_setpc_b64 s[30:31]652;653; GFX90A-LABEL: v_shuffle_v2i32_v3i32__2_0:654; GFX90A: ; %bb.0:655; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)656; GFX90A-NEXT: v_mov_b32_e32 v4, 0657; GFX90A-NEXT: ;;#ASMSTART658; GFX90A-NEXT: ; def v[0:2]659; GFX90A-NEXT: ;;#ASMEND660; GFX90A-NEXT: v_mov_b32_e32 v3, v0661; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]662; GFX90A-NEXT: s_waitcnt vmcnt(0)663; GFX90A-NEXT: s_setpc_b64 s[30:31]664;665; GFX942-LABEL: v_shuffle_v2i32_v3i32__2_0:666; GFX942: ; %bb.0:667; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)668; GFX942-NEXT: v_mov_b32_e32 v4, 0669; GFX942-NEXT: ;;#ASMSTART670; GFX942-NEXT: ; def v[0:2]671; GFX942-NEXT: ;;#ASMEND672; GFX942-NEXT: s_nop 0673; GFX942-NEXT: v_mov_b32_e32 v3, v0674; GFX942-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1]675; GFX942-NEXT: s_waitcnt vmcnt(0)676; GFX942-NEXT: s_setpc_b64 s[30:31]677 %vec0 = call <3 x i32> asm "; def $0", "=v"()678 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 0>679 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8680 ret void681}682 683define void @v_shuffle_v2i32_v3i32__3_0(ptr addrspace(1) inreg %ptr) {684; GFX900-LABEL: v_shuffle_v2i32_v3i32__3_0:685; GFX900: ; %bb.0:686; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)687; GFX900-NEXT: v_mov_b32_e32 v0, 0688; GFX900-NEXT: ;;#ASMSTART689; GFX900-NEXT: ; def v[1:3]690; GFX900-NEXT: ;;#ASMEND691; GFX900-NEXT: global_store_dwordx2 v0, v[0:1], s[16:17]692; GFX900-NEXT: s_waitcnt vmcnt(0)693; GFX900-NEXT: s_setpc_b64 s[30:31]694;695; GFX90A-LABEL: v_shuffle_v2i32_v3i32__3_0:696; GFX90A: ; %bb.0:697; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)698; GFX90A-NEXT: ;;#ASMSTART699; GFX90A-NEXT: ; def v[0:2]700; GFX90A-NEXT: ;;#ASMEND701; GFX90A-NEXT: v_mov_b32_e32 v3, 0702; GFX90A-NEXT: v_mov_b32_e32 v1, v0703; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]704; GFX90A-NEXT: s_waitcnt vmcnt(0)705; GFX90A-NEXT: s_setpc_b64 s[30:31]706;707; GFX942-LABEL: v_shuffle_v2i32_v3i32__3_0:708; GFX942: ; %bb.0:709; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)710; GFX942-NEXT: ;;#ASMSTART711; GFX942-NEXT: ; def v[0:2]712; GFX942-NEXT: ;;#ASMEND713; GFX942-NEXT: v_mov_b32_e32 v3, 0714; GFX942-NEXT: v_mov_b32_e32 v1, v0715; GFX942-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1]716; GFX942-NEXT: s_waitcnt vmcnt(0)717; GFX942-NEXT: s_setpc_b64 s[30:31]718 %vec0 = call <3 x i32> asm "; def $0", "=v"()719 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 0>720 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8721 ret void722}723 724define void @v_shuffle_v2i32_v3i32__4_0(ptr addrspace(1) inreg %ptr) {725; GFX900-LABEL: v_shuffle_v2i32_v3i32__4_0:726; GFX900: ; %bb.0:727; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)728; GFX900-NEXT: ;;#ASMSTART729; GFX900-NEXT: ; def v[0:2]730; GFX900-NEXT: ;;#ASMEND731; GFX900-NEXT: ;;#ASMSTART732; GFX900-NEXT: ; def v[1:3]733; GFX900-NEXT: ;;#ASMEND734; GFX900-NEXT: v_mov_b32_e32 v4, 0735; GFX900-NEXT: v_mov_b32_e32 v3, v0736; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]737; GFX900-NEXT: s_waitcnt vmcnt(0)738; GFX900-NEXT: s_setpc_b64 s[30:31]739;740; GFX90A-LABEL: v_shuffle_v2i32_v3i32__4_0:741; GFX90A: ; %bb.0:742; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)743; GFX90A-NEXT: ;;#ASMSTART744; GFX90A-NEXT: ; def v[0:2]745; GFX90A-NEXT: ;;#ASMEND746; GFX90A-NEXT: v_mov_b32_e32 v5, 0747; GFX90A-NEXT: ;;#ASMSTART748; GFX90A-NEXT: ; def v[2:4]749; GFX90A-NEXT: ;;#ASMEND750; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]751; GFX90A-NEXT: global_store_dwordx2 v5, v[0:1], s[16:17]752; GFX90A-NEXT: s_waitcnt vmcnt(0)753; GFX90A-NEXT: s_setpc_b64 s[30:31]754;755; GFX942-LABEL: v_shuffle_v2i32_v3i32__4_0:756; GFX942: ; %bb.0:757; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)758; GFX942-NEXT: ;;#ASMSTART759; GFX942-NEXT: ; def v[0:2]760; GFX942-NEXT: ;;#ASMEND761; GFX942-NEXT: v_mov_b32_e32 v5, 0762; GFX942-NEXT: ;;#ASMSTART763; GFX942-NEXT: ; def v[2:4]764; GFX942-NEXT: ;;#ASMEND765; GFX942-NEXT: s_nop 0766; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]767; GFX942-NEXT: global_store_dwordx2 v5, v[0:1], s[0:1]768; GFX942-NEXT: s_waitcnt vmcnt(0)769; GFX942-NEXT: s_setpc_b64 s[30:31]770 %vec0 = call <3 x i32> asm "; def $0", "=v"()771 %vec1 = call <3 x i32> asm "; def $0", "=v"()772 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 0>773 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8774 ret void775}776 777define void @v_shuffle_v2i32_v3i32__u_1(ptr addrspace(1) inreg %ptr) {778; GFX900-LABEL: v_shuffle_v2i32_v3i32__u_1:779; GFX900: ; %bb.0:780; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)781; GFX900-NEXT: v_mov_b32_e32 v3, 0782; GFX900-NEXT: ;;#ASMSTART783; GFX900-NEXT: ; def v[0:2]784; GFX900-NEXT: ;;#ASMEND785; GFX900-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]786; GFX900-NEXT: s_waitcnt vmcnt(0)787; GFX900-NEXT: s_setpc_b64 s[30:31]788;789; GFX90A-LABEL: v_shuffle_v2i32_v3i32__u_1:790; GFX90A: ; %bb.0:791; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)792; GFX90A-NEXT: v_mov_b32_e32 v3, 0793; GFX90A-NEXT: ;;#ASMSTART794; GFX90A-NEXT: ; def v[0:2]795; GFX90A-NEXT: ;;#ASMEND796; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]797; GFX90A-NEXT: s_waitcnt vmcnt(0)798; GFX90A-NEXT: s_setpc_b64 s[30:31]799;800; GFX942-LABEL: v_shuffle_v2i32_v3i32__u_1:801; GFX942: ; %bb.0:802; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)803; GFX942-NEXT: v_mov_b32_e32 v3, 0804; GFX942-NEXT: ;;#ASMSTART805; GFX942-NEXT: ; def v[0:2]806; GFX942-NEXT: ;;#ASMEND807; GFX942-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1]808; GFX942-NEXT: s_waitcnt vmcnt(0)809; GFX942-NEXT: s_setpc_b64 s[30:31]810 %vec0 = call <3 x i32> asm "; def $0", "=v"()811 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 1>812 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8813 ret void814}815 816define void @v_shuffle_v2i32_v3i32__0_1(ptr addrspace(1) inreg %ptr) {817; GFX900-LABEL: v_shuffle_v2i32_v3i32__0_1:818; GFX900: ; %bb.0:819; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)820; GFX900-NEXT: v_mov_b32_e32 v3, 0821; GFX900-NEXT: ;;#ASMSTART822; GFX900-NEXT: ; def v[0:2]823; GFX900-NEXT: ;;#ASMEND824; GFX900-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]825; GFX900-NEXT: s_waitcnt vmcnt(0)826; GFX900-NEXT: s_setpc_b64 s[30:31]827;828; GFX90A-LABEL: v_shuffle_v2i32_v3i32__0_1:829; GFX90A: ; %bb.0:830; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)831; GFX90A-NEXT: v_mov_b32_e32 v3, 0832; GFX90A-NEXT: ;;#ASMSTART833; GFX90A-NEXT: ; def v[0:2]834; GFX90A-NEXT: ;;#ASMEND835; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]836; GFX90A-NEXT: s_waitcnt vmcnt(0)837; GFX90A-NEXT: s_setpc_b64 s[30:31]838;839; GFX942-LABEL: v_shuffle_v2i32_v3i32__0_1:840; GFX942: ; %bb.0:841; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)842; GFX942-NEXT: v_mov_b32_e32 v3, 0843; GFX942-NEXT: ;;#ASMSTART844; GFX942-NEXT: ; def v[0:2]845; GFX942-NEXT: ;;#ASMEND846; GFX942-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1]847; GFX942-NEXT: s_waitcnt vmcnt(0)848; GFX942-NEXT: s_setpc_b64 s[30:31]849 %vec0 = call <3 x i32> asm "; def $0", "=v"()850 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 1>851 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8852 ret void853}854 855define void @v_shuffle_v2i32_v3i32__1_1(ptr addrspace(1) inreg %ptr) {856; GFX900-LABEL: v_shuffle_v2i32_v3i32__1_1:857; GFX900: ; %bb.0:858; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)859; GFX900-NEXT: ;;#ASMSTART860; GFX900-NEXT: ; def v[0:2]861; GFX900-NEXT: ;;#ASMEND862; GFX900-NEXT: v_mov_b32_e32 v3, 0863; GFX900-NEXT: v_mov_b32_e32 v2, v1864; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], s[16:17]865; GFX900-NEXT: s_waitcnt vmcnt(0)866; GFX900-NEXT: s_setpc_b64 s[30:31]867;868; GFX90A-LABEL: v_shuffle_v2i32_v3i32__1_1:869; GFX90A: ; %bb.0:870; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)871; GFX90A-NEXT: ;;#ASMSTART872; GFX90A-NEXT: ; def v[0:2]873; GFX90A-NEXT: ;;#ASMEND874; GFX90A-NEXT: v_mov_b32_e32 v3, 0875; GFX90A-NEXT: v_mov_b32_e32 v0, v1876; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]877; GFX90A-NEXT: s_waitcnt vmcnt(0)878; GFX90A-NEXT: s_setpc_b64 s[30:31]879;880; GFX942-LABEL: v_shuffle_v2i32_v3i32__1_1:881; GFX942: ; %bb.0:882; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)883; GFX942-NEXT: ;;#ASMSTART884; GFX942-NEXT: ; def v[0:2]885; GFX942-NEXT: ;;#ASMEND886; GFX942-NEXT: v_mov_b32_e32 v3, 0887; GFX942-NEXT: v_mov_b32_e32 v0, v1888; GFX942-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1]889; GFX942-NEXT: s_waitcnt vmcnt(0)890; GFX942-NEXT: s_setpc_b64 s[30:31]891 %vec0 = call <3 x i32> asm "; def $0", "=v"()892 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 1>893 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8894 ret void895}896 897define void @v_shuffle_v2i32_v3i32__2_1(ptr addrspace(1) inreg %ptr) {898; GFX900-LABEL: v_shuffle_v2i32_v3i32__2_1:899; GFX900: ; %bb.0:900; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)901; GFX900-NEXT: v_mov_b32_e32 v4, 0902; GFX900-NEXT: ;;#ASMSTART903; GFX900-NEXT: ; def v[0:2]904; GFX900-NEXT: ;;#ASMEND905; GFX900-NEXT: v_mov_b32_e32 v3, v1906; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]907; GFX900-NEXT: s_waitcnt vmcnt(0)908; GFX900-NEXT: s_setpc_b64 s[30:31]909;910; GFX90A-LABEL: v_shuffle_v2i32_v3i32__2_1:911; GFX90A: ; %bb.0:912; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)913; GFX90A-NEXT: v_mov_b32_e32 v4, 0914; GFX90A-NEXT: ;;#ASMSTART915; GFX90A-NEXT: ; def v[0:2]916; GFX90A-NEXT: ;;#ASMEND917; GFX90A-NEXT: v_mov_b32_e32 v3, v1918; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]919; GFX90A-NEXT: s_waitcnt vmcnt(0)920; GFX90A-NEXT: s_setpc_b64 s[30:31]921;922; GFX942-LABEL: v_shuffle_v2i32_v3i32__2_1:923; GFX942: ; %bb.0:924; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)925; GFX942-NEXT: v_mov_b32_e32 v4, 0926; GFX942-NEXT: ;;#ASMSTART927; GFX942-NEXT: ; def v[0:2]928; GFX942-NEXT: ;;#ASMEND929; GFX942-NEXT: s_nop 0930; GFX942-NEXT: v_mov_b32_e32 v3, v1931; GFX942-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1]932; GFX942-NEXT: s_waitcnt vmcnt(0)933; GFX942-NEXT: s_setpc_b64 s[30:31]934 %vec0 = call <3 x i32> asm "; def $0", "=v"()935 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 1>936 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8937 ret void938}939 940define void @v_shuffle_v2i32_v3i32__3_1(ptr addrspace(1) inreg %ptr) {941; GFX900-LABEL: v_shuffle_v2i32_v3i32__3_1:942; GFX900: ; %bb.0:943; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)944; GFX900-NEXT: v_mov_b32_e32 v3, 0945; GFX900-NEXT: ;;#ASMSTART946; GFX900-NEXT: ; def v[0:2]947; GFX900-NEXT: ;;#ASMEND948; GFX900-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]949; GFX900-NEXT: s_waitcnt vmcnt(0)950; GFX900-NEXT: s_setpc_b64 s[30:31]951;952; GFX90A-LABEL: v_shuffle_v2i32_v3i32__3_1:953; GFX90A: ; %bb.0:954; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)955; GFX90A-NEXT: v_mov_b32_e32 v3, 0956; GFX90A-NEXT: ;;#ASMSTART957; GFX90A-NEXT: ; def v[0:2]958; GFX90A-NEXT: ;;#ASMEND959; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]960; GFX90A-NEXT: s_waitcnt vmcnt(0)961; GFX90A-NEXT: s_setpc_b64 s[30:31]962;963; GFX942-LABEL: v_shuffle_v2i32_v3i32__3_1:964; GFX942: ; %bb.0:965; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)966; GFX942-NEXT: v_mov_b32_e32 v3, 0967; GFX942-NEXT: ;;#ASMSTART968; GFX942-NEXT: ; def v[0:2]969; GFX942-NEXT: ;;#ASMEND970; GFX942-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1]971; GFX942-NEXT: s_waitcnt vmcnt(0)972; GFX942-NEXT: s_setpc_b64 s[30:31]973 %vec0 = call <3 x i32> asm "; def $0", "=v"()974 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 1>975 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8976 ret void977}978 979define void @v_shuffle_v2i32_v3i32__4_1(ptr addrspace(1) inreg %ptr) {980; GFX900-LABEL: v_shuffle_v2i32_v3i32__4_1:981; GFX900: ; %bb.0:982; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)983; GFX900-NEXT: ;;#ASMSTART984; GFX900-NEXT: ; def v[0:2]985; GFX900-NEXT: ;;#ASMEND986; GFX900-NEXT: ;;#ASMSTART987; GFX900-NEXT: ; def v[2:4]988; GFX900-NEXT: ;;#ASMEND989; GFX900-NEXT: v_mov_b32_e32 v5, 0990; GFX900-NEXT: v_mov_b32_e32 v4, v1991; GFX900-NEXT: global_store_dwordx2 v5, v[3:4], s[16:17]992; GFX900-NEXT: s_waitcnt vmcnt(0)993; GFX900-NEXT: s_setpc_b64 s[30:31]994;995; GFX90A-LABEL: v_shuffle_v2i32_v3i32__4_1:996; GFX90A: ; %bb.0:997; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)998; GFX90A-NEXT: ;;#ASMSTART999; GFX90A-NEXT: ; def v[0:2]1000; GFX90A-NEXT: ;;#ASMEND1001; GFX90A-NEXT: v_mov_b32_e32 v5, 01002; GFX90A-NEXT: ;;#ASMSTART1003; GFX90A-NEXT: ; def v[2:4]1004; GFX90A-NEXT: ;;#ASMEND1005; GFX90A-NEXT: v_mov_b32_e32 v0, v31006; GFX90A-NEXT: global_store_dwordx2 v5, v[0:1], s[16:17]1007; GFX90A-NEXT: s_waitcnt vmcnt(0)1008; GFX90A-NEXT: s_setpc_b64 s[30:31]1009;1010; GFX942-LABEL: v_shuffle_v2i32_v3i32__4_1:1011; GFX942: ; %bb.0:1012; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1013; GFX942-NEXT: ;;#ASMSTART1014; GFX942-NEXT: ; def v[0:2]1015; GFX942-NEXT: ;;#ASMEND1016; GFX942-NEXT: v_mov_b32_e32 v5, 01017; GFX942-NEXT: ;;#ASMSTART1018; GFX942-NEXT: ; def v[2:4]1019; GFX942-NEXT: ;;#ASMEND1020; GFX942-NEXT: s_nop 01021; GFX942-NEXT: v_mov_b32_e32 v0, v31022; GFX942-NEXT: global_store_dwordx2 v5, v[0:1], s[0:1]1023; GFX942-NEXT: s_waitcnt vmcnt(0)1024; GFX942-NEXT: s_setpc_b64 s[30:31]1025 %vec0 = call <3 x i32> asm "; def $0", "=v"()1026 %vec1 = call <3 x i32> asm "; def $0", "=v"()1027 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 1>1028 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 81029 ret void1030}1031 1032define void @v_shuffle_v2i32_v3i32__u_2(ptr addrspace(1) inreg %ptr) {1033; GFX900-LABEL: v_shuffle_v2i32_v3i32__u_2:1034; GFX900: ; %bb.0:1035; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1036; GFX900-NEXT: v_mov_b32_e32 v3, 01037; GFX900-NEXT: ;;#ASMSTART1038; GFX900-NEXT: ; def v[0:2]1039; GFX900-NEXT: ;;#ASMEND1040; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], s[16:17]1041; GFX900-NEXT: s_waitcnt vmcnt(0)1042; GFX900-NEXT: s_setpc_b64 s[30:31]1043;1044; GFX90A-LABEL: v_shuffle_v2i32_v3i32__u_2:1045; GFX90A: ; %bb.0:1046; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1047; GFX90A-NEXT: ;;#ASMSTART1048; GFX90A-NEXT: ; def v[0:2]1049; GFX90A-NEXT: ;;#ASMEND1050; GFX90A-NEXT: v_mov_b32_e32 v3, 01051; GFX90A-NEXT: v_mov_b32_e32 v1, v21052; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]1053; GFX90A-NEXT: s_waitcnt vmcnt(0)1054; GFX90A-NEXT: s_setpc_b64 s[30:31]1055;1056; GFX942-LABEL: v_shuffle_v2i32_v3i32__u_2:1057; GFX942: ; %bb.0:1058; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1059; GFX942-NEXT: ;;#ASMSTART1060; GFX942-NEXT: ; def v[0:2]1061; GFX942-NEXT: ;;#ASMEND1062; GFX942-NEXT: v_mov_b32_e32 v3, 01063; GFX942-NEXT: v_mov_b32_e32 v1, v21064; GFX942-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1]1065; GFX942-NEXT: s_waitcnt vmcnt(0)1066; GFX942-NEXT: s_setpc_b64 s[30:31]1067 %vec0 = call <3 x i32> asm "; def $0", "=v"()1068 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 2>1069 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 81070 ret void1071}1072 1073define void @v_shuffle_v2i32_v3i32__0_2(ptr addrspace(1) inreg %ptr) {1074; GFX900-LABEL: v_shuffle_v2i32_v3i32__0_2:1075; GFX900: ; %bb.0:1076; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1077; GFX900-NEXT: ;;#ASMSTART1078; GFX900-NEXT: ; def v[0:2]1079; GFX900-NEXT: ;;#ASMEND1080; GFX900-NEXT: v_mov_b32_e32 v3, 01081; GFX900-NEXT: v_mov_b32_e32 v1, v21082; GFX900-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]1083; GFX900-NEXT: s_waitcnt vmcnt(0)1084; GFX900-NEXT: s_setpc_b64 s[30:31]1085;1086; GFX90A-LABEL: v_shuffle_v2i32_v3i32__0_2:1087; GFX90A: ; %bb.0:1088; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1089; GFX90A-NEXT: ;;#ASMSTART1090; GFX90A-NEXT: ; def v[0:2]1091; GFX90A-NEXT: ;;#ASMEND1092; GFX90A-NEXT: v_mov_b32_e32 v3, 01093; GFX90A-NEXT: v_mov_b32_e32 v1, v21094; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]1095; GFX90A-NEXT: s_waitcnt vmcnt(0)1096; GFX90A-NEXT: s_setpc_b64 s[30:31]1097;1098; GFX942-LABEL: v_shuffle_v2i32_v3i32__0_2:1099; GFX942: ; %bb.0:1100; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1101; GFX942-NEXT: ;;#ASMSTART1102; GFX942-NEXT: ; def v[0:2]1103; GFX942-NEXT: ;;#ASMEND1104; GFX942-NEXT: v_mov_b32_e32 v3, 01105; GFX942-NEXT: v_mov_b32_e32 v1, v21106; GFX942-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1]1107; GFX942-NEXT: s_waitcnt vmcnt(0)1108; GFX942-NEXT: s_setpc_b64 s[30:31]1109 %vec0 = call <3 x i32> asm "; def $0", "=v"()1110 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 2>1111 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 81112 ret void1113}1114 1115define void @v_shuffle_v2i32_v3i32__1_2(ptr addrspace(1) inreg %ptr) {1116; GFX900-LABEL: v_shuffle_v2i32_v3i32__1_2:1117; GFX900: ; %bb.0:1118; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1119; GFX900-NEXT: v_mov_b32_e32 v3, 01120; GFX900-NEXT: ;;#ASMSTART1121; GFX900-NEXT: ; def v[0:2]1122; GFX900-NEXT: ;;#ASMEND1123; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], s[16:17]1124; GFX900-NEXT: s_waitcnt vmcnt(0)1125; GFX900-NEXT: s_setpc_b64 s[30:31]1126;1127; GFX90A-LABEL: v_shuffle_v2i32_v3i32__1_2:1128; GFX90A: ; %bb.0:1129; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1130; GFX90A-NEXT: ;;#ASMSTART1131; GFX90A-NEXT: ; def v[0:2]1132; GFX90A-NEXT: ;;#ASMEND1133; GFX90A-NEXT: v_mov_b32_e32 v3, 01134; GFX90A-NEXT: v_mov_b32_e32 v0, v11135; GFX90A-NEXT: v_mov_b32_e32 v1, v21136; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]1137; GFX90A-NEXT: s_waitcnt vmcnt(0)1138; GFX90A-NEXT: s_setpc_b64 s[30:31]1139;1140; GFX942-LABEL: v_shuffle_v2i32_v3i32__1_2:1141; GFX942: ; %bb.0:1142; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1143; GFX942-NEXT: ;;#ASMSTART1144; GFX942-NEXT: ; def v[0:2]1145; GFX942-NEXT: ;;#ASMEND1146; GFX942-NEXT: v_mov_b32_e32 v3, 01147; GFX942-NEXT: v_mov_b32_e32 v0, v11148; GFX942-NEXT: v_mov_b32_e32 v1, v21149; GFX942-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1]1150; GFX942-NEXT: s_waitcnt vmcnt(0)1151; GFX942-NEXT: s_setpc_b64 s[30:31]1152 %vec0 = call <3 x i32> asm "; def $0", "=v"()1153 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 2>1154 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 81155 ret void1156}1157 1158define void @v_shuffle_v2i32_v3i32__2_2(ptr addrspace(1) inreg %ptr) {1159; GFX900-LABEL: v_shuffle_v2i32_v3i32__2_2:1160; GFX900: ; %bb.0:1161; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1162; GFX900-NEXT: v_mov_b32_e32 v4, 01163; GFX900-NEXT: ;;#ASMSTART1164; GFX900-NEXT: ; def v[0:2]1165; GFX900-NEXT: ;;#ASMEND1166; GFX900-NEXT: v_mov_b32_e32 v3, v21167; GFX900-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]1168; GFX900-NEXT: s_waitcnt vmcnt(0)1169; GFX900-NEXT: s_setpc_b64 s[30:31]1170;1171; GFX90A-LABEL: v_shuffle_v2i32_v3i32__2_2:1172; GFX90A: ; %bb.0:1173; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1174; GFX90A-NEXT: v_mov_b32_e32 v4, 01175; GFX90A-NEXT: ;;#ASMSTART1176; GFX90A-NEXT: ; def v[0:2]1177; GFX90A-NEXT: ;;#ASMEND1178; GFX90A-NEXT: v_mov_b32_e32 v3, v21179; GFX90A-NEXT: global_store_dwordx2 v4, v[2:3], s[16:17]1180; GFX90A-NEXT: s_waitcnt vmcnt(0)1181; GFX90A-NEXT: s_setpc_b64 s[30:31]1182;1183; GFX942-LABEL: v_shuffle_v2i32_v3i32__2_2:1184; GFX942: ; %bb.0:1185; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1186; GFX942-NEXT: v_mov_b32_e32 v4, 01187; GFX942-NEXT: ;;#ASMSTART1188; GFX942-NEXT: ; def v[0:2]1189; GFX942-NEXT: ;;#ASMEND1190; GFX942-NEXT: s_nop 01191; GFX942-NEXT: v_mov_b32_e32 v3, v21192; GFX942-NEXT: global_store_dwordx2 v4, v[2:3], s[0:1]1193; GFX942-NEXT: s_waitcnt vmcnt(0)1194; GFX942-NEXT: s_setpc_b64 s[30:31]1195 %vec0 = call <3 x i32> asm "; def $0", "=v"()1196 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 2>1197 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 81198 ret void1199}1200 1201define void @v_shuffle_v2i32_v3i32__3_2(ptr addrspace(1) inreg %ptr) {1202; GFX900-LABEL: v_shuffle_v2i32_v3i32__3_2:1203; GFX900: ; %bb.0:1204; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1205; GFX900-NEXT: v_mov_b32_e32 v3, 01206; GFX900-NEXT: ;;#ASMSTART1207; GFX900-NEXT: ; def v[0:2]1208; GFX900-NEXT: ;;#ASMEND1209; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], s[16:17]1210; GFX900-NEXT: s_waitcnt vmcnt(0)1211; GFX900-NEXT: s_setpc_b64 s[30:31]1212;1213; GFX90A-LABEL: v_shuffle_v2i32_v3i32__3_2:1214; GFX90A: ; %bb.0:1215; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1216; GFX90A-NEXT: ;;#ASMSTART1217; GFX90A-NEXT: ; def v[0:2]1218; GFX90A-NEXT: ;;#ASMEND1219; GFX90A-NEXT: v_mov_b32_e32 v3, 01220; GFX90A-NEXT: v_mov_b32_e32 v1, v21221; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]1222; GFX90A-NEXT: s_waitcnt vmcnt(0)1223; GFX90A-NEXT: s_setpc_b64 s[30:31]1224;1225; GFX942-LABEL: v_shuffle_v2i32_v3i32__3_2:1226; GFX942: ; %bb.0:1227; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1228; GFX942-NEXT: ;;#ASMSTART1229; GFX942-NEXT: ; def v[0:2]1230; GFX942-NEXT: ;;#ASMEND1231; GFX942-NEXT: v_mov_b32_e32 v3, 01232; GFX942-NEXT: v_mov_b32_e32 v1, v21233; GFX942-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1]1234; GFX942-NEXT: s_waitcnt vmcnt(0)1235; GFX942-NEXT: s_setpc_b64 s[30:31]1236 %vec0 = call <3 x i32> asm "; def $0", "=v"()1237 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 2>1238 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 81239 ret void1240}1241 1242define void @v_shuffle_v2i32_v3i32__4_2(ptr addrspace(1) inreg %ptr) {1243; GFX900-LABEL: v_shuffle_v2i32_v3i32__4_2:1244; GFX900: ; %bb.0:1245; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1246; GFX900-NEXT: ;;#ASMSTART1247; GFX900-NEXT: ; def v[3:5]1248; GFX900-NEXT: ;;#ASMEND1249; GFX900-NEXT: v_mov_b32_e32 v6, 01250; GFX900-NEXT: ;;#ASMSTART1251; GFX900-NEXT: ; def v[0:2]1252; GFX900-NEXT: ;;#ASMEND1253; GFX900-NEXT: v_mov_b32_e32 v5, v21254; GFX900-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17]1255; GFX900-NEXT: s_waitcnt vmcnt(0)1256; GFX900-NEXT: s_setpc_b64 s[30:31]1257;1258; GFX90A-LABEL: v_shuffle_v2i32_v3i32__4_2:1259; GFX90A: ; %bb.0:1260; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1261; GFX90A-NEXT: ;;#ASMSTART1262; GFX90A-NEXT: ; def v[0:2]1263; GFX90A-NEXT: ;;#ASMEND1264; GFX90A-NEXT: v_mov_b32_e32 v3, 01265; GFX90A-NEXT: ;;#ASMSTART1266; GFX90A-NEXT: ; def v[4:6]1267; GFX90A-NEXT: ;;#ASMEND1268; GFX90A-NEXT: v_mov_b32_e32 v0, v51269; GFX90A-NEXT: v_mov_b32_e32 v1, v21270; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]1271; GFX90A-NEXT: s_waitcnt vmcnt(0)1272; GFX90A-NEXT: s_setpc_b64 s[30:31]1273;1274; GFX942-LABEL: v_shuffle_v2i32_v3i32__4_2:1275; GFX942: ; %bb.0:1276; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1277; GFX942-NEXT: ;;#ASMSTART1278; GFX942-NEXT: ; def v[0:2]1279; GFX942-NEXT: ;;#ASMEND1280; GFX942-NEXT: v_mov_b32_e32 v3, 01281; GFX942-NEXT: ;;#ASMSTART1282; GFX942-NEXT: ; def v[4:6]1283; GFX942-NEXT: ;;#ASMEND1284; GFX942-NEXT: v_mov_b32_e32 v1, v21285; GFX942-NEXT: v_mov_b32_e32 v0, v51286; GFX942-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1]1287; GFX942-NEXT: s_waitcnt vmcnt(0)1288; GFX942-NEXT: s_setpc_b64 s[30:31]1289 %vec0 = call <3 x i32> asm "; def $0", "=v"()1290 %vec1 = call <3 x i32> asm "; def $0", "=v"()1291 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 2>1292 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 81293 ret void1294}1295 1296define void @v_shuffle_v2i32_v3i32__u_3(ptr addrspace(1) inreg %ptr) {1297; GFX9-LABEL: v_shuffle_v2i32_v3i32__u_3:1298; GFX9: ; %bb.0:1299; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1300; GFX9-NEXT: s_setpc_b64 s[30:31]1301 %vec0 = call <3 x i32> asm "; def $0", "=v"()1302 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 3>1303 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 81304 ret void1305}1306 1307define void @v_shuffle_v2i32_v3i32__0_3(ptr addrspace(1) inreg %ptr) {1308; GFX900-LABEL: v_shuffle_v2i32_v3i32__0_3:1309; GFX900: ; %bb.0:1310; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1311; GFX900-NEXT: v_mov_b32_e32 v3, 01312; GFX900-NEXT: ;;#ASMSTART1313; GFX900-NEXT: ; def v[0:2]1314; GFX900-NEXT: ;;#ASMEND1315; GFX900-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]1316; GFX900-NEXT: s_waitcnt vmcnt(0)1317; GFX900-NEXT: s_setpc_b64 s[30:31]1318;1319; GFX90A-LABEL: v_shuffle_v2i32_v3i32__0_3:1320; GFX90A: ; %bb.0:1321; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1322; GFX90A-NEXT: v_mov_b32_e32 v3, 01323; GFX90A-NEXT: ;;#ASMSTART1324; GFX90A-NEXT: ; def v[0:2]1325; GFX90A-NEXT: ;;#ASMEND1326; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]1327; GFX90A-NEXT: s_waitcnt vmcnt(0)1328; GFX90A-NEXT: s_setpc_b64 s[30:31]1329;1330; GFX942-LABEL: v_shuffle_v2i32_v3i32__0_3:1331; GFX942: ; %bb.0:1332; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1333; GFX942-NEXT: v_mov_b32_e32 v3, 01334; GFX942-NEXT: ;;#ASMSTART1335; GFX942-NEXT: ; def v[0:2]1336; GFX942-NEXT: ;;#ASMEND1337; GFX942-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1]1338; GFX942-NEXT: s_waitcnt vmcnt(0)1339; GFX942-NEXT: s_setpc_b64 s[30:31]1340 %vec0 = call <3 x i32> asm "; def $0", "=v"()1341 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 3>1342 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 81343 ret void1344}1345 1346define void @v_shuffle_v2i32_v3i32__1_3(ptr addrspace(1) inreg %ptr) {1347; GFX900-LABEL: v_shuffle_v2i32_v3i32__1_3:1348; GFX900: ; %bb.0:1349; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1350; GFX900-NEXT: v_mov_b32_e32 v3, 01351; GFX900-NEXT: ;;#ASMSTART1352; GFX900-NEXT: ; def v[0:2]1353; GFX900-NEXT: ;;#ASMEND1354; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], s[16:17]1355; GFX900-NEXT: s_waitcnt vmcnt(0)1356; GFX900-NEXT: s_setpc_b64 s[30:31]1357;1358; GFX90A-LABEL: v_shuffle_v2i32_v3i32__1_3:1359; GFX90A: ; %bb.0:1360; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1361; GFX90A-NEXT: ;;#ASMSTART1362; GFX90A-NEXT: ; def v[0:2]1363; GFX90A-NEXT: ;;#ASMEND1364; GFX90A-NEXT: v_mov_b32_e32 v3, 01365; GFX90A-NEXT: v_mov_b32_e32 v0, v11366; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]1367; GFX90A-NEXT: s_waitcnt vmcnt(0)1368; GFX90A-NEXT: s_setpc_b64 s[30:31]1369;1370; GFX942-LABEL: v_shuffle_v2i32_v3i32__1_3:1371; GFX942: ; %bb.0:1372; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1373; GFX942-NEXT: ;;#ASMSTART1374; GFX942-NEXT: ; def v[0:2]1375; GFX942-NEXT: ;;#ASMEND1376; GFX942-NEXT: v_mov_b32_e32 v3, 01377; GFX942-NEXT: v_mov_b32_e32 v0, v11378; GFX942-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1]1379; GFX942-NEXT: s_waitcnt vmcnt(0)1380; GFX942-NEXT: s_setpc_b64 s[30:31]1381 %vec0 = call <3 x i32> asm "; def $0", "=v"()1382 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 3>1383 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 81384 ret void1385}1386 1387define void @v_shuffle_v2i32_v3i32__2_3(ptr addrspace(1) inreg %ptr) {1388; GFX900-LABEL: v_shuffle_v2i32_v3i32__2_3:1389; GFX900: ; %bb.0:1390; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1391; GFX900-NEXT: v_mov_b32_e32 v3, 01392; GFX900-NEXT: ;;#ASMSTART1393; GFX900-NEXT: ; def v[0:2]1394; GFX900-NEXT: ;;#ASMEND1395; GFX900-NEXT: global_store_dwordx2 v3, v[2:3], s[16:17]1396; GFX900-NEXT: s_waitcnt vmcnt(0)1397; GFX900-NEXT: s_setpc_b64 s[30:31]1398;1399; GFX90A-LABEL: v_shuffle_v2i32_v3i32__2_3:1400; GFX90A: ; %bb.0:1401; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1402; GFX90A-NEXT: v_mov_b32_e32 v3, 01403; GFX90A-NEXT: ;;#ASMSTART1404; GFX90A-NEXT: ; def v[0:2]1405; GFX90A-NEXT: ;;#ASMEND1406; GFX90A-NEXT: global_store_dwordx2 v3, v[2:3], s[16:17]1407; GFX90A-NEXT: s_waitcnt vmcnt(0)1408; GFX90A-NEXT: s_setpc_b64 s[30:31]1409;1410; GFX942-LABEL: v_shuffle_v2i32_v3i32__2_3:1411; GFX942: ; %bb.0:1412; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1413; GFX942-NEXT: v_mov_b32_e32 v3, 01414; GFX942-NEXT: ;;#ASMSTART1415; GFX942-NEXT: ; def v[0:2]1416; GFX942-NEXT: ;;#ASMEND1417; GFX942-NEXT: global_store_dwordx2 v3, v[2:3], s[0:1]1418; GFX942-NEXT: s_waitcnt vmcnt(0)1419; GFX942-NEXT: s_setpc_b64 s[30:31]1420 %vec0 = call <3 x i32> asm "; def $0", "=v"()1421 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 3>1422 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 81423 ret void1424}1425 1426define void @v_shuffle_v2i32_v3i32__3_3(ptr addrspace(1) inreg %ptr) {1427; GFX9-LABEL: v_shuffle_v2i32_v3i32__3_3:1428; GFX9: ; %bb.0:1429; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1430; GFX9-NEXT: s_setpc_b64 s[30:31]1431 %vec0 = call <3 x i32> asm "; def $0", "=v"()1432 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 3>1433 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 81434 ret void1435}1436 1437define void @v_shuffle_v2i32_v3i32__4_3(ptr addrspace(1) inreg %ptr) {1438; GFX900-LABEL: v_shuffle_v2i32_v3i32__4_3:1439; GFX900: ; %bb.0:1440; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1441; GFX900-NEXT: ;;#ASMSTART1442; GFX900-NEXT: ; def v[0:2]1443; GFX900-NEXT: ;;#ASMEND1444; GFX900-NEXT: v_mov_b32_e32 v3, 01445; GFX900-NEXT: v_mov_b32_e32 v2, v01446; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], s[16:17]1447; GFX900-NEXT: s_waitcnt vmcnt(0)1448; GFX900-NEXT: s_setpc_b64 s[30:31]1449;1450; GFX90A-LABEL: v_shuffle_v2i32_v3i32__4_3:1451; GFX90A: ; %bb.0:1452; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1453; GFX90A-NEXT: ;;#ASMSTART1454; GFX90A-NEXT: ; def v[0:2]1455; GFX90A-NEXT: ;;#ASMEND1456; GFX90A-NEXT: v_mov_b32_e32 v3, 01457; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]1458; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]1459; GFX90A-NEXT: s_waitcnt vmcnt(0)1460; GFX90A-NEXT: s_setpc_b64 s[30:31]1461;1462; GFX942-LABEL: v_shuffle_v2i32_v3i32__4_3:1463; GFX942: ; %bb.0:1464; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1465; GFX942-NEXT: ;;#ASMSTART1466; GFX942-NEXT: ; def v[0:2]1467; GFX942-NEXT: ;;#ASMEND1468; GFX942-NEXT: v_mov_b32_e32 v3, 01469; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]1470; GFX942-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1]1471; GFX942-NEXT: s_waitcnt vmcnt(0)1472; GFX942-NEXT: s_setpc_b64 s[30:31]1473 %vec0 = call <3 x i32> asm "; def $0", "=v"()1474 %vec1 = call <3 x i32> asm "; def $0", "=v"()1475 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 3>1476 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 81477 ret void1478}1479 1480define void @v_shuffle_v2i32_v3i32__u_4(ptr addrspace(1) inreg %ptr) {1481; GFX900-LABEL: v_shuffle_v2i32_v3i32__u_4:1482; GFX900: ; %bb.0:1483; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1484; GFX900-NEXT: v_mov_b32_e32 v3, 01485; GFX900-NEXT: ;;#ASMSTART1486; GFX900-NEXT: ; def v[0:2]1487; GFX900-NEXT: ;;#ASMEND1488; GFX900-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]1489; GFX900-NEXT: s_waitcnt vmcnt(0)1490; GFX900-NEXT: s_setpc_b64 s[30:31]1491;1492; GFX90A-LABEL: v_shuffle_v2i32_v3i32__u_4:1493; GFX90A: ; %bb.0:1494; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1495; GFX90A-NEXT: v_mov_b32_e32 v3, 01496; GFX90A-NEXT: ;;#ASMSTART1497; GFX90A-NEXT: ; def v[0:2]1498; GFX90A-NEXT: ;;#ASMEND1499; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]1500; GFX90A-NEXT: s_waitcnt vmcnt(0)1501; GFX90A-NEXT: s_setpc_b64 s[30:31]1502;1503; GFX942-LABEL: v_shuffle_v2i32_v3i32__u_4:1504; GFX942: ; %bb.0:1505; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1506; GFX942-NEXT: v_mov_b32_e32 v3, 01507; GFX942-NEXT: ;;#ASMSTART1508; GFX942-NEXT: ; def v[0:2]1509; GFX942-NEXT: ;;#ASMEND1510; GFX942-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1]1511; GFX942-NEXT: s_waitcnt vmcnt(0)1512; GFX942-NEXT: s_setpc_b64 s[30:31]1513 %vec0 = call <3 x i32> asm "; def $0", "=v"()1514 %vec1 = call <3 x i32> asm "; def $0", "=v"()1515 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 poison, i32 4>1516 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 81517 ret void1518}1519 1520define void @v_shuffle_v2i32_v3i32__0_4(ptr addrspace(1) inreg %ptr) {1521; GFX900-LABEL: v_shuffle_v2i32_v3i32__0_4:1522; GFX900: ; %bb.0:1523; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1524; GFX900-NEXT: ;;#ASMSTART1525; GFX900-NEXT: ; def v[0:2]1526; GFX900-NEXT: ;;#ASMEND1527; GFX900-NEXT: ;;#ASMSTART1528; GFX900-NEXT: ; def v[1:3]1529; GFX900-NEXT: ;;#ASMEND1530; GFX900-NEXT: v_mov_b32_e32 v4, 01531; GFX900-NEXT: v_mov_b32_e32 v1, v21532; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]1533; GFX900-NEXT: s_waitcnt vmcnt(0)1534; GFX900-NEXT: s_setpc_b64 s[30:31]1535;1536; GFX90A-LABEL: v_shuffle_v2i32_v3i32__0_4:1537; GFX90A: ; %bb.0:1538; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1539; GFX90A-NEXT: ;;#ASMSTART1540; GFX90A-NEXT: ; def v[0:2]1541; GFX90A-NEXT: ;;#ASMEND1542; GFX90A-NEXT: v_mov_b32_e32 v5, 01543; GFX90A-NEXT: ;;#ASMSTART1544; GFX90A-NEXT: ; def v[2:4]1545; GFX90A-NEXT: ;;#ASMEND1546; GFX90A-NEXT: v_mov_b32_e32 v1, v31547; GFX90A-NEXT: global_store_dwordx2 v5, v[0:1], s[16:17]1548; GFX90A-NEXT: s_waitcnt vmcnt(0)1549; GFX90A-NEXT: s_setpc_b64 s[30:31]1550;1551; GFX942-LABEL: v_shuffle_v2i32_v3i32__0_4:1552; GFX942: ; %bb.0:1553; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1554; GFX942-NEXT: ;;#ASMSTART1555; GFX942-NEXT: ; def v[0:2]1556; GFX942-NEXT: ;;#ASMEND1557; GFX942-NEXT: v_mov_b32_e32 v5, 01558; GFX942-NEXT: ;;#ASMSTART1559; GFX942-NEXT: ; def v[2:4]1560; GFX942-NEXT: ;;#ASMEND1561; GFX942-NEXT: s_nop 01562; GFX942-NEXT: v_mov_b32_e32 v1, v31563; GFX942-NEXT: global_store_dwordx2 v5, v[0:1], s[0:1]1564; GFX942-NEXT: s_waitcnt vmcnt(0)1565; GFX942-NEXT: s_setpc_b64 s[30:31]1566 %vec0 = call <3 x i32> asm "; def $0", "=v"()1567 %vec1 = call <3 x i32> asm "; def $0", "=v"()1568 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 0, i32 4>1569 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 81570 ret void1571}1572 1573define void @v_shuffle_v2i32_v3i32__1_4(ptr addrspace(1) inreg %ptr) {1574; GFX900-LABEL: v_shuffle_v2i32_v3i32__1_4:1575; GFX900: ; %bb.0:1576; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1577; GFX900-NEXT: ;;#ASMSTART1578; GFX900-NEXT: ; def v[0:2]1579; GFX900-NEXT: ;;#ASMEND1580; GFX900-NEXT: ;;#ASMSTART1581; GFX900-NEXT: ; def v[2:4]1582; GFX900-NEXT: ;;#ASMEND1583; GFX900-NEXT: v_mov_b32_e32 v5, 01584; GFX900-NEXT: v_mov_b32_e32 v2, v31585; GFX900-NEXT: global_store_dwordx2 v5, v[1:2], s[16:17]1586; GFX900-NEXT: s_waitcnt vmcnt(0)1587; GFX900-NEXT: s_setpc_b64 s[30:31]1588;1589; GFX90A-LABEL: v_shuffle_v2i32_v3i32__1_4:1590; GFX90A: ; %bb.0:1591; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1592; GFX90A-NEXT: ;;#ASMSTART1593; GFX90A-NEXT: ; def v[0:2]1594; GFX90A-NEXT: ;;#ASMEND1595; GFX90A-NEXT: ;;#ASMSTART1596; GFX90A-NEXT: ; def v[2:4]1597; GFX90A-NEXT: ;;#ASMEND1598; GFX90A-NEXT: v_mov_b32_e32 v5, 01599; GFX90A-NEXT: v_mov_b32_e32 v2, v11600; GFX90A-NEXT: global_store_dwordx2 v5, v[2:3], s[16:17]1601; GFX90A-NEXT: s_waitcnt vmcnt(0)1602; GFX90A-NEXT: s_setpc_b64 s[30:31]1603;1604; GFX942-LABEL: v_shuffle_v2i32_v3i32__1_4:1605; GFX942: ; %bb.0:1606; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1607; GFX942-NEXT: ;;#ASMSTART1608; GFX942-NEXT: ; def v[0:2]1609; GFX942-NEXT: ;;#ASMEND1610; GFX942-NEXT: v_mov_b32_e32 v5, 01611; GFX942-NEXT: ;;#ASMSTART1612; GFX942-NEXT: ; def v[2:4]1613; GFX942-NEXT: ;;#ASMEND1614; GFX942-NEXT: s_nop 01615; GFX942-NEXT: v_mov_b32_e32 v2, v11616; GFX942-NEXT: global_store_dwordx2 v5, v[2:3], s[0:1]1617; GFX942-NEXT: s_waitcnt vmcnt(0)1618; GFX942-NEXT: s_setpc_b64 s[30:31]1619 %vec0 = call <3 x i32> asm "; def $0", "=v"()1620 %vec1 = call <3 x i32> asm "; def $0", "=v"()1621 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 1, i32 4>1622 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 81623 ret void1624}1625 1626define void @v_shuffle_v2i32_v3i32__2_4(ptr addrspace(1) inreg %ptr) {1627; GFX900-LABEL: v_shuffle_v2i32_v3i32__2_4:1628; GFX900: ; %bb.0:1629; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1630; GFX900-NEXT: ;;#ASMSTART1631; GFX900-NEXT: ; def v[3:5]1632; GFX900-NEXT: ;;#ASMEND1633; GFX900-NEXT: v_mov_b32_e32 v6, 01634; GFX900-NEXT: v_mov_b32_e32 v3, v41635; GFX900-NEXT: ;;#ASMSTART1636; GFX900-NEXT: ; def v[0:2]1637; GFX900-NEXT: ;;#ASMEND1638; GFX900-NEXT: global_store_dwordx2 v6, v[2:3], s[16:17]1639; GFX900-NEXT: s_waitcnt vmcnt(0)1640; GFX900-NEXT: s_setpc_b64 s[30:31]1641;1642; GFX90A-LABEL: v_shuffle_v2i32_v3i32__2_4:1643; GFX90A: ; %bb.0:1644; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1645; GFX90A-NEXT: v_mov_b32_e32 v7, 01646; GFX90A-NEXT: ;;#ASMSTART1647; GFX90A-NEXT: ; def v[4:6]1648; GFX90A-NEXT: ;;#ASMEND1649; GFX90A-NEXT: v_mov_b32_e32 v3, v51650; GFX90A-NEXT: ;;#ASMSTART1651; GFX90A-NEXT: ; def v[0:2]1652; GFX90A-NEXT: ;;#ASMEND1653; GFX90A-NEXT: global_store_dwordx2 v7, v[2:3], s[16:17]1654; GFX90A-NEXT: s_waitcnt vmcnt(0)1655; GFX90A-NEXT: s_setpc_b64 s[30:31]1656;1657; GFX942-LABEL: v_shuffle_v2i32_v3i32__2_4:1658; GFX942: ; %bb.0:1659; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1660; GFX942-NEXT: v_mov_b32_e32 v7, 01661; GFX942-NEXT: ;;#ASMSTART1662; GFX942-NEXT: ; def v[4:6]1663; GFX942-NEXT: ;;#ASMEND1664; GFX942-NEXT: ;;#ASMSTART1665; GFX942-NEXT: ; def v[0:2]1666; GFX942-NEXT: ;;#ASMEND1667; GFX942-NEXT: s_nop 01668; GFX942-NEXT: v_mov_b32_e32 v3, v51669; GFX942-NEXT: global_store_dwordx2 v7, v[2:3], s[0:1]1670; GFX942-NEXT: s_waitcnt vmcnt(0)1671; GFX942-NEXT: s_setpc_b64 s[30:31]1672 %vec0 = call <3 x i32> asm "; def $0", "=v"()1673 %vec1 = call <3 x i32> asm "; def $0", "=v"()1674 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 2, i32 4>1675 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 81676 ret void1677}1678 1679define void @v_shuffle_v2i32_v3i32__3_4(ptr addrspace(1) inreg %ptr) {1680; GFX900-LABEL: v_shuffle_v2i32_v3i32__3_4:1681; GFX900: ; %bb.0:1682; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1683; GFX900-NEXT: v_mov_b32_e32 v3, 01684; GFX900-NEXT: ;;#ASMSTART1685; GFX900-NEXT: ; def v[0:2]1686; GFX900-NEXT: ;;#ASMEND1687; GFX900-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]1688; GFX900-NEXT: s_waitcnt vmcnt(0)1689; GFX900-NEXT: s_setpc_b64 s[30:31]1690;1691; GFX90A-LABEL: v_shuffle_v2i32_v3i32__3_4:1692; GFX90A: ; %bb.0:1693; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1694; GFX90A-NEXT: v_mov_b32_e32 v3, 01695; GFX90A-NEXT: ;;#ASMSTART1696; GFX90A-NEXT: ; def v[0:2]1697; GFX90A-NEXT: ;;#ASMEND1698; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]1699; GFX90A-NEXT: s_waitcnt vmcnt(0)1700; GFX90A-NEXT: s_setpc_b64 s[30:31]1701;1702; GFX942-LABEL: v_shuffle_v2i32_v3i32__3_4:1703; GFX942: ; %bb.0:1704; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1705; GFX942-NEXT: v_mov_b32_e32 v3, 01706; GFX942-NEXT: ;;#ASMSTART1707; GFX942-NEXT: ; def v[0:2]1708; GFX942-NEXT: ;;#ASMEND1709; GFX942-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1]1710; GFX942-NEXT: s_waitcnt vmcnt(0)1711; GFX942-NEXT: s_setpc_b64 s[30:31]1712 %vec0 = call <3 x i32> asm "; def $0", "=v"()1713 %vec1 = call <3 x i32> asm "; def $0", "=v"()1714 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 3, i32 4>1715 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 81716 ret void1717}1718 1719define void @v_shuffle_v2i32_v3i32__4_4(ptr addrspace(1) inreg %ptr) {1720; GFX900-LABEL: v_shuffle_v2i32_v3i32__4_4:1721; GFX900: ; %bb.0:1722; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1723; GFX900-NEXT: ;;#ASMSTART1724; GFX900-NEXT: ; def v[0:2]1725; GFX900-NEXT: ;;#ASMEND1726; GFX900-NEXT: v_mov_b32_e32 v3, 01727; GFX900-NEXT: v_mov_b32_e32 v2, v11728; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], s[16:17]1729; GFX900-NEXT: s_waitcnt vmcnt(0)1730; GFX900-NEXT: s_setpc_b64 s[30:31]1731;1732; GFX90A-LABEL: v_shuffle_v2i32_v3i32__4_4:1733; GFX90A: ; %bb.0:1734; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1735; GFX90A-NEXT: ;;#ASMSTART1736; GFX90A-NEXT: ; def v[0:2]1737; GFX90A-NEXT: ;;#ASMEND1738; GFX90A-NEXT: v_mov_b32_e32 v3, 01739; GFX90A-NEXT: v_mov_b32_e32 v0, v11740; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]1741; GFX90A-NEXT: s_waitcnt vmcnt(0)1742; GFX90A-NEXT: s_setpc_b64 s[30:31]1743;1744; GFX942-LABEL: v_shuffle_v2i32_v3i32__4_4:1745; GFX942: ; %bb.0:1746; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1747; GFX942-NEXT: ;;#ASMSTART1748; GFX942-NEXT: ; def v[0:2]1749; GFX942-NEXT: ;;#ASMEND1750; GFX942-NEXT: v_mov_b32_e32 v3, 01751; GFX942-NEXT: v_mov_b32_e32 v0, v11752; GFX942-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1]1753; GFX942-NEXT: s_waitcnt vmcnt(0)1754; GFX942-NEXT: s_setpc_b64 s[30:31]1755 %vec0 = call <3 x i32> asm "; def $0", "=v"()1756 %vec1 = call <3 x i32> asm "; def $0", "=v"()1757 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 4>1758 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 81759 ret void1760}1761 1762define void @v_shuffle_v2i32_v3i32__u_5(ptr addrspace(1) inreg %ptr) {1763; GFX900-LABEL: v_shuffle_v2i32_v3i32__u_5:1764; GFX900: ; %bb.0:1765; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1766; GFX900-NEXT: v_mov_b32_e32 v3, 01767; GFX900-NEXT: ;;#ASMSTART1768; GFX900-NEXT: ; def v[0:2]1769; GFX900-NEXT: ;;#ASMEND1770; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], s[16:17]1771; GFX900-NEXT: s_waitcnt vmcnt(0)1772; GFX900-NEXT: s_setpc_b64 s[30:31]1773;1774; GFX90A-LABEL: v_shuffle_v2i32_v3i32__u_5:1775; GFX90A: ; %bb.0:1776; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1777; GFX90A-NEXT: ;;#ASMSTART1778; GFX90A-NEXT: ; def v[0:2]1779; GFX90A-NEXT: ;;#ASMEND1780; GFX90A-NEXT: v_mov_b32_e32 v3, 01781; GFX90A-NEXT: v_mov_b32_e32 v1, v21782; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]1783; GFX90A-NEXT: s_waitcnt vmcnt(0)1784; GFX90A-NEXT: s_setpc_b64 s[30:31]1785;1786; GFX942-LABEL: v_shuffle_v2i32_v3i32__u_5:1787; GFX942: ; %bb.0:1788; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1789; GFX942-NEXT: ;;#ASMSTART1790; GFX942-NEXT: ; def v[0:2]1791; GFX942-NEXT: ;;#ASMEND1792; GFX942-NEXT: v_mov_b32_e32 v3, 01793; GFX942-NEXT: v_mov_b32_e32 v1, v21794; GFX942-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1]1795; GFX942-NEXT: s_waitcnt vmcnt(0)1796; GFX942-NEXT: s_setpc_b64 s[30:31]1797 %vec0 = call <3 x i32> asm "; def $0", "=v"()1798 %vec1 = call <3 x i32> asm "; def $0", "=v"()1799 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 poison, i32 5>1800 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 81801 ret void1802}1803 1804define void @v_shuffle_v2i32_v3i32__0_5(ptr addrspace(1) inreg %ptr) {1805; GFX900-LABEL: v_shuffle_v2i32_v3i32__0_5:1806; GFX900: ; %bb.0:1807; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1808; GFX900-NEXT: ;;#ASMSTART1809; GFX900-NEXT: ; def v[0:2]1810; GFX900-NEXT: ;;#ASMEND1811; GFX900-NEXT: ;;#ASMSTART1812; GFX900-NEXT: ; def v[1:3]1813; GFX900-NEXT: ;;#ASMEND1814; GFX900-NEXT: v_mov_b32_e32 v4, 01815; GFX900-NEXT: v_mov_b32_e32 v1, v31816; GFX900-NEXT: global_store_dwordx2 v4, v[0:1], s[16:17]1817; GFX900-NEXT: s_waitcnt vmcnt(0)1818; GFX900-NEXT: s_setpc_b64 s[30:31]1819;1820; GFX90A-LABEL: v_shuffle_v2i32_v3i32__0_5:1821; GFX90A: ; %bb.0:1822; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1823; GFX90A-NEXT: ;;#ASMSTART1824; GFX90A-NEXT: ; def v[0:2]1825; GFX90A-NEXT: ;;#ASMEND1826; GFX90A-NEXT: v_mov_b32_e32 v5, 01827; GFX90A-NEXT: ;;#ASMSTART1828; GFX90A-NEXT: ; def v[2:4]1829; GFX90A-NEXT: ;;#ASMEND1830; GFX90A-NEXT: v_mov_b32_e32 v1, v41831; GFX90A-NEXT: global_store_dwordx2 v5, v[0:1], s[16:17]1832; GFX90A-NEXT: s_waitcnt vmcnt(0)1833; GFX90A-NEXT: s_setpc_b64 s[30:31]1834;1835; GFX942-LABEL: v_shuffle_v2i32_v3i32__0_5:1836; GFX942: ; %bb.0:1837; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1838; GFX942-NEXT: ;;#ASMSTART1839; GFX942-NEXT: ; def v[0:2]1840; GFX942-NEXT: ;;#ASMEND1841; GFX942-NEXT: v_mov_b32_e32 v5, 01842; GFX942-NEXT: ;;#ASMSTART1843; GFX942-NEXT: ; def v[2:4]1844; GFX942-NEXT: ;;#ASMEND1845; GFX942-NEXT: s_nop 01846; GFX942-NEXT: v_mov_b32_e32 v1, v41847; GFX942-NEXT: global_store_dwordx2 v5, v[0:1], s[0:1]1848; GFX942-NEXT: s_waitcnt vmcnt(0)1849; GFX942-NEXT: s_setpc_b64 s[30:31]1850 %vec0 = call <3 x i32> asm "; def $0", "=v"()1851 %vec1 = call <3 x i32> asm "; def $0", "=v"()1852 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 0, i32 5>1853 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 81854 ret void1855}1856 1857define void @v_shuffle_v2i32_v3i32__1_5(ptr addrspace(1) inreg %ptr) {1858; GFX900-LABEL: v_shuffle_v2i32_v3i32__1_5:1859; GFX900: ; %bb.0:1860; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1861; GFX900-NEXT: ;;#ASMSTART1862; GFX900-NEXT: ; def v[0:2]1863; GFX900-NEXT: ;;#ASMEND1864; GFX900-NEXT: ;;#ASMSTART1865; GFX900-NEXT: ; def v[2:4]1866; GFX900-NEXT: ;;#ASMEND1867; GFX900-NEXT: v_mov_b32_e32 v5, 01868; GFX900-NEXT: v_mov_b32_e32 v2, v41869; GFX900-NEXT: global_store_dwordx2 v5, v[1:2], s[16:17]1870; GFX900-NEXT: s_waitcnt vmcnt(0)1871; GFX900-NEXT: s_setpc_b64 s[30:31]1872;1873; GFX90A-LABEL: v_shuffle_v2i32_v3i32__1_5:1874; GFX90A: ; %bb.0:1875; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1876; GFX90A-NEXT: ;;#ASMSTART1877; GFX90A-NEXT: ; def v[0:2]1878; GFX90A-NEXT: ;;#ASMEND1879; GFX90A-NEXT: v_mov_b32_e32 v5, 01880; GFX90A-NEXT: ;;#ASMSTART1881; GFX90A-NEXT: ; def v[2:4]1882; GFX90A-NEXT: ;;#ASMEND1883; GFX90A-NEXT: v_mov_b32_e32 v0, v11884; GFX90A-NEXT: v_mov_b32_e32 v1, v41885; GFX90A-NEXT: global_store_dwordx2 v5, v[0:1], s[16:17]1886; GFX90A-NEXT: s_waitcnt vmcnt(0)1887; GFX90A-NEXT: s_setpc_b64 s[30:31]1888;1889; GFX942-LABEL: v_shuffle_v2i32_v3i32__1_5:1890; GFX942: ; %bb.0:1891; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1892; GFX942-NEXT: ;;#ASMSTART1893; GFX942-NEXT: ; def v[0:2]1894; GFX942-NEXT: ;;#ASMEND1895; GFX942-NEXT: v_mov_b32_e32 v5, 01896; GFX942-NEXT: ;;#ASMSTART1897; GFX942-NEXT: ; def v[2:4]1898; GFX942-NEXT: ;;#ASMEND1899; GFX942-NEXT: v_mov_b32_e32 v0, v11900; GFX942-NEXT: v_mov_b32_e32 v1, v41901; GFX942-NEXT: global_store_dwordx2 v5, v[0:1], s[0:1]1902; GFX942-NEXT: s_waitcnt vmcnt(0)1903; GFX942-NEXT: s_setpc_b64 s[30:31]1904 %vec0 = call <3 x i32> asm "; def $0", "=v"()1905 %vec1 = call <3 x i32> asm "; def $0", "=v"()1906 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 1, i32 5>1907 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 81908 ret void1909}1910 1911define void @v_shuffle_v2i32_v3i32__2_5(ptr addrspace(1) inreg %ptr) {1912; GFX900-LABEL: v_shuffle_v2i32_v3i32__2_5:1913; GFX900: ; %bb.0:1914; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1915; GFX900-NEXT: ;;#ASMSTART1916; GFX900-NEXT: ; def v[3:5]1917; GFX900-NEXT: ;;#ASMEND1918; GFX900-NEXT: v_mov_b32_e32 v6, 01919; GFX900-NEXT: v_mov_b32_e32 v3, v51920; GFX900-NEXT: ;;#ASMSTART1921; GFX900-NEXT: ; def v[0:2]1922; GFX900-NEXT: ;;#ASMEND1923; GFX900-NEXT: global_store_dwordx2 v6, v[2:3], s[16:17]1924; GFX900-NEXT: s_waitcnt vmcnt(0)1925; GFX900-NEXT: s_setpc_b64 s[30:31]1926;1927; GFX90A-LABEL: v_shuffle_v2i32_v3i32__2_5:1928; GFX90A: ; %bb.0:1929; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1930; GFX90A-NEXT: v_mov_b32_e32 v7, 01931; GFX90A-NEXT: ;;#ASMSTART1932; GFX90A-NEXT: ; def v[4:6]1933; GFX90A-NEXT: ;;#ASMEND1934; GFX90A-NEXT: v_mov_b32_e32 v3, v61935; GFX90A-NEXT: ;;#ASMSTART1936; GFX90A-NEXT: ; def v[0:2]1937; GFX90A-NEXT: ;;#ASMEND1938; GFX90A-NEXT: global_store_dwordx2 v7, v[2:3], s[16:17]1939; GFX90A-NEXT: s_waitcnt vmcnt(0)1940; GFX90A-NEXT: s_setpc_b64 s[30:31]1941;1942; GFX942-LABEL: v_shuffle_v2i32_v3i32__2_5:1943; GFX942: ; %bb.0:1944; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1945; GFX942-NEXT: v_mov_b32_e32 v7, 01946; GFX942-NEXT: ;;#ASMSTART1947; GFX942-NEXT: ; def v[4:6]1948; GFX942-NEXT: ;;#ASMEND1949; GFX942-NEXT: ;;#ASMSTART1950; GFX942-NEXT: ; def v[0:2]1951; GFX942-NEXT: ;;#ASMEND1952; GFX942-NEXT: s_nop 01953; GFX942-NEXT: v_mov_b32_e32 v3, v61954; GFX942-NEXT: global_store_dwordx2 v7, v[2:3], s[0:1]1955; GFX942-NEXT: s_waitcnt vmcnt(0)1956; GFX942-NEXT: s_setpc_b64 s[30:31]1957 %vec0 = call <3 x i32> asm "; def $0", "=v"()1958 %vec1 = call <3 x i32> asm "; def $0", "=v"()1959 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 2, i32 5>1960 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 81961 ret void1962}1963 1964define void @v_shuffle_v2i32_v3i32__3_5(ptr addrspace(1) inreg %ptr) {1965; GFX900-LABEL: v_shuffle_v2i32_v3i32__3_5:1966; GFX900: ; %bb.0:1967; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1968; GFX900-NEXT: ;;#ASMSTART1969; GFX900-NEXT: ; def v[0:2]1970; GFX900-NEXT: ;;#ASMEND1971; GFX900-NEXT: v_mov_b32_e32 v3, 01972; GFX900-NEXT: v_mov_b32_e32 v1, v21973; GFX900-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]1974; GFX900-NEXT: s_waitcnt vmcnt(0)1975; GFX900-NEXT: s_setpc_b64 s[30:31]1976;1977; GFX90A-LABEL: v_shuffle_v2i32_v3i32__3_5:1978; GFX90A: ; %bb.0:1979; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1980; GFX90A-NEXT: ;;#ASMSTART1981; GFX90A-NEXT: ; def v[0:2]1982; GFX90A-NEXT: ;;#ASMEND1983; GFX90A-NEXT: v_mov_b32_e32 v3, 01984; GFX90A-NEXT: v_mov_b32_e32 v1, v21985; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]1986; GFX90A-NEXT: s_waitcnt vmcnt(0)1987; GFX90A-NEXT: s_setpc_b64 s[30:31]1988;1989; GFX942-LABEL: v_shuffle_v2i32_v3i32__3_5:1990; GFX942: ; %bb.0:1991; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1992; GFX942-NEXT: ;;#ASMSTART1993; GFX942-NEXT: ; def v[0:2]1994; GFX942-NEXT: ;;#ASMEND1995; GFX942-NEXT: v_mov_b32_e32 v3, 01996; GFX942-NEXT: v_mov_b32_e32 v1, v21997; GFX942-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1]1998; GFX942-NEXT: s_waitcnt vmcnt(0)1999; GFX942-NEXT: s_setpc_b64 s[30:31]2000 %vec0 = call <3 x i32> asm "; def $0", "=v"()2001 %vec1 = call <3 x i32> asm "; def $0", "=v"()2002 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 3, i32 5>2003 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 82004 ret void2005}2006 2007define void @v_shuffle_v2i32_v3i32__4_5(ptr addrspace(1) inreg %ptr) {2008; GFX900-LABEL: v_shuffle_v2i32_v3i32__4_5:2009; GFX900: ; %bb.0:2010; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2011; GFX900-NEXT: v_mov_b32_e32 v3, 02012; GFX900-NEXT: ;;#ASMSTART2013; GFX900-NEXT: ; def v[0:2]2014; GFX900-NEXT: ;;#ASMEND2015; GFX900-NEXT: global_store_dwordx2 v3, v[1:2], s[16:17]2016; GFX900-NEXT: s_waitcnt vmcnt(0)2017; GFX900-NEXT: s_setpc_b64 s[30:31]2018;2019; GFX90A-LABEL: v_shuffle_v2i32_v3i32__4_5:2020; GFX90A: ; %bb.0:2021; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2022; GFX90A-NEXT: ;;#ASMSTART2023; GFX90A-NEXT: ; def v[0:2]2024; GFX90A-NEXT: ;;#ASMEND2025; GFX90A-NEXT: v_mov_b32_e32 v3, 02026; GFX90A-NEXT: v_mov_b32_e32 v0, v12027; GFX90A-NEXT: v_mov_b32_e32 v1, v22028; GFX90A-NEXT: global_store_dwordx2 v3, v[0:1], s[16:17]2029; GFX90A-NEXT: s_waitcnt vmcnt(0)2030; GFX90A-NEXT: s_setpc_b64 s[30:31]2031;2032; GFX942-LABEL: v_shuffle_v2i32_v3i32__4_5:2033; GFX942: ; %bb.0:2034; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2035; GFX942-NEXT: ;;#ASMSTART2036; GFX942-NEXT: ; def v[0:2]2037; GFX942-NEXT: ;;#ASMEND2038; GFX942-NEXT: v_mov_b32_e32 v3, 02039; GFX942-NEXT: v_mov_b32_e32 v0, v12040; GFX942-NEXT: v_mov_b32_e32 v1, v22041; GFX942-NEXT: global_store_dwordx2 v3, v[0:1], s[0:1]2042; GFX942-NEXT: s_waitcnt vmcnt(0)2043; GFX942-NEXT: s_setpc_b64 s[30:31]2044 %vec0 = call <3 x i32> asm "; def $0", "=v"()2045 %vec1 = call <3 x i32> asm "; def $0", "=v"()2046 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 5>2047 store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 82048 ret void2049}2050 2051define void @s_shuffle_v2i32_v3i32__u_u() {2052; GFX9-LABEL: s_shuffle_v2i32_v3i32__u_u:2053; GFX9: ; %bb.0:2054; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2055; GFX9-NEXT: ;;#ASMSTART2056; GFX9-NEXT: ; use s[8:9]2057; GFX9-NEXT: ;;#ASMEND2058; GFX9-NEXT: s_setpc_b64 s[30:31]2059 %vec0 = call <3 x i32> asm "; def $0", "=s"()2060 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> poison2061 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)2062 ret void2063}2064 2065define void @s_shuffle_v2i32_v3i32__0_u() {2066; GFX900-LABEL: s_shuffle_v2i32_v3i32__0_u:2067; GFX900: ; %bb.0:2068; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2069; GFX900-NEXT: ;;#ASMSTART2070; GFX900-NEXT: ; def s[8:10]2071; GFX900-NEXT: ;;#ASMEND2072; GFX900-NEXT: ;;#ASMSTART2073; GFX900-NEXT: ; use s[8:9]2074; GFX900-NEXT: ;;#ASMEND2075; GFX900-NEXT: s_setpc_b64 s[30:31]2076;2077; GFX90A-LABEL: s_shuffle_v2i32_v3i32__0_u:2078; GFX90A: ; %bb.0:2079; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2080; GFX90A-NEXT: ;;#ASMSTART2081; GFX90A-NEXT: ; def s[8:10]2082; GFX90A-NEXT: ;;#ASMEND2083; GFX90A-NEXT: ;;#ASMSTART2084; GFX90A-NEXT: ; use s[8:9]2085; GFX90A-NEXT: ;;#ASMEND2086; GFX90A-NEXT: s_setpc_b64 s[30:31]2087;2088; GFX942-LABEL: s_shuffle_v2i32_v3i32__0_u:2089; GFX942: ; %bb.0:2090; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2091; GFX942-NEXT: ;;#ASMSTART2092; GFX942-NEXT: ; def s[8:10]2093; GFX942-NEXT: ;;#ASMEND2094; GFX942-NEXT: s_nop 02095; GFX942-NEXT: ;;#ASMSTART2096; GFX942-NEXT: ; use s[8:9]2097; GFX942-NEXT: ;;#ASMEND2098; GFX942-NEXT: s_setpc_b64 s[30:31]2099 %vec0 = call <3 x i32> asm "; def $0", "=s"()2100 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 poison>2101 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)2102 ret void2103}2104 2105define void @s_shuffle_v2i32_v3i32__1_u() {2106; GFX900-LABEL: s_shuffle_v2i32_v3i32__1_u:2107; GFX900: ; %bb.0:2108; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2109; GFX900-NEXT: ;;#ASMSTART2110; GFX900-NEXT: ; def s[4:6]2111; GFX900-NEXT: ;;#ASMEND2112; GFX900-NEXT: s_mov_b32 s8, s52113; GFX900-NEXT: ;;#ASMSTART2114; GFX900-NEXT: ; use s[8:9]2115; GFX900-NEXT: ;;#ASMEND2116; GFX900-NEXT: s_setpc_b64 s[30:31]2117;2118; GFX90A-LABEL: s_shuffle_v2i32_v3i32__1_u:2119; GFX90A: ; %bb.0:2120; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2121; GFX90A-NEXT: ;;#ASMSTART2122; GFX90A-NEXT: ; def s[4:6]2123; GFX90A-NEXT: ;;#ASMEND2124; GFX90A-NEXT: s_mov_b32 s8, s52125; GFX90A-NEXT: ;;#ASMSTART2126; GFX90A-NEXT: ; use s[8:9]2127; GFX90A-NEXT: ;;#ASMEND2128; GFX90A-NEXT: s_setpc_b64 s[30:31]2129;2130; GFX942-LABEL: s_shuffle_v2i32_v3i32__1_u:2131; GFX942: ; %bb.0:2132; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2133; GFX942-NEXT: ;;#ASMSTART2134; GFX942-NEXT: ; def s[0:2]2135; GFX942-NEXT: ;;#ASMEND2136; GFX942-NEXT: s_mov_b32 s8, s12137; GFX942-NEXT: ;;#ASMSTART2138; GFX942-NEXT: ; use s[8:9]2139; GFX942-NEXT: ;;#ASMEND2140; GFX942-NEXT: s_setpc_b64 s[30:31]2141 %vec0 = call <3 x i32> asm "; def $0", "=s"()2142 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 poison>2143 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)2144 ret void2145}2146 2147define void @s_shuffle_v2i32_v3i32__2_u() {2148; GFX900-LABEL: s_shuffle_v2i32_v3i32__2_u:2149; GFX900: ; %bb.0:2150; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2151; GFX900-NEXT: ;;#ASMSTART2152; GFX900-NEXT: ; def s[4:6]2153; GFX900-NEXT: ;;#ASMEND2154; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]2155; GFX900-NEXT: ;;#ASMSTART2156; GFX900-NEXT: ; use s[8:9]2157; GFX900-NEXT: ;;#ASMEND2158; GFX900-NEXT: s_setpc_b64 s[30:31]2159;2160; GFX90A-LABEL: s_shuffle_v2i32_v3i32__2_u:2161; GFX90A: ; %bb.0:2162; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2163; GFX90A-NEXT: ;;#ASMSTART2164; GFX90A-NEXT: ; def s[4:6]2165; GFX90A-NEXT: ;;#ASMEND2166; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]2167; GFX90A-NEXT: ;;#ASMSTART2168; GFX90A-NEXT: ; use s[8:9]2169; GFX90A-NEXT: ;;#ASMEND2170; GFX90A-NEXT: s_setpc_b64 s[30:31]2171;2172; GFX942-LABEL: s_shuffle_v2i32_v3i32__2_u:2173; GFX942: ; %bb.0:2174; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2175; GFX942-NEXT: ;;#ASMSTART2176; GFX942-NEXT: ; def s[0:2]2177; GFX942-NEXT: ;;#ASMEND2178; GFX942-NEXT: s_mov_b64 s[8:9], s[2:3]2179; GFX942-NEXT: ;;#ASMSTART2180; GFX942-NEXT: ; use s[8:9]2181; GFX942-NEXT: ;;#ASMEND2182; GFX942-NEXT: s_setpc_b64 s[30:31]2183 %vec0 = call <3 x i32> asm "; def $0", "=s"()2184 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 poison>2185 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)2186 ret void2187}2188 2189define void @s_shuffle_v2i32_v3i32__3_u() {2190; GFX9-LABEL: s_shuffle_v2i32_v3i32__3_u:2191; GFX9: ; %bb.0:2192; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2193; GFX9-NEXT: ;;#ASMSTART2194; GFX9-NEXT: ; use s[8:9]2195; GFX9-NEXT: ;;#ASMEND2196; GFX9-NEXT: s_setpc_b64 s[30:31]2197 %vec0 = call <3 x i32> asm "; def $0", "=s"()2198 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 poison>2199 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)2200 ret void2201}2202 2203define void @s_shuffle_v2i32_v3i32__4_u() {2204; GFX900-LABEL: s_shuffle_v2i32_v3i32__4_u:2205; GFX900: ; %bb.0:2206; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2207; GFX900-NEXT: ;;#ASMSTART2208; GFX900-NEXT: ; def s[4:6]2209; GFX900-NEXT: ;;#ASMEND2210; GFX900-NEXT: s_mov_b32 s8, s52211; GFX900-NEXT: ;;#ASMSTART2212; GFX900-NEXT: ; use s[8:9]2213; GFX900-NEXT: ;;#ASMEND2214; GFX900-NEXT: s_setpc_b64 s[30:31]2215;2216; GFX90A-LABEL: s_shuffle_v2i32_v3i32__4_u:2217; GFX90A: ; %bb.0:2218; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2219; GFX90A-NEXT: ;;#ASMSTART2220; GFX90A-NEXT: ; def s[4:6]2221; GFX90A-NEXT: ;;#ASMEND2222; GFX90A-NEXT: s_mov_b32 s8, s52223; GFX90A-NEXT: ;;#ASMSTART2224; GFX90A-NEXT: ; use s[8:9]2225; GFX90A-NEXT: ;;#ASMEND2226; GFX90A-NEXT: s_setpc_b64 s[30:31]2227;2228; GFX942-LABEL: s_shuffle_v2i32_v3i32__4_u:2229; GFX942: ; %bb.0:2230; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2231; GFX942-NEXT: ;;#ASMSTART2232; GFX942-NEXT: ; def s[0:2]2233; GFX942-NEXT: ;;#ASMEND2234; GFX942-NEXT: s_mov_b32 s8, s12235; GFX942-NEXT: ;;#ASMSTART2236; GFX942-NEXT: ; use s[8:9]2237; GFX942-NEXT: ;;#ASMEND2238; GFX942-NEXT: s_setpc_b64 s[30:31]2239 %vec0 = call <3 x i32> asm "; def $0", "=s"()2240 %vec1 = call <3 x i32> asm "; def $0", "=s"()2241 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 poison>2242 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)2243 ret void2244}2245 2246define void @s_shuffle_v2i32_v3i32__5_u() {2247; GFX900-LABEL: s_shuffle_v2i32_v3i32__5_u:2248; GFX900: ; %bb.0:2249; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2250; GFX900-NEXT: ;;#ASMSTART2251; GFX900-NEXT: ; def s[4:6]2252; GFX900-NEXT: ;;#ASMEND2253; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]2254; GFX900-NEXT: ;;#ASMSTART2255; GFX900-NEXT: ; use s[8:9]2256; GFX900-NEXT: ;;#ASMEND2257; GFX900-NEXT: s_setpc_b64 s[30:31]2258;2259; GFX90A-LABEL: s_shuffle_v2i32_v3i32__5_u:2260; GFX90A: ; %bb.0:2261; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2262; GFX90A-NEXT: ;;#ASMSTART2263; GFX90A-NEXT: ; def s[4:6]2264; GFX90A-NEXT: ;;#ASMEND2265; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]2266; GFX90A-NEXT: ;;#ASMSTART2267; GFX90A-NEXT: ; use s[8:9]2268; GFX90A-NEXT: ;;#ASMEND2269; GFX90A-NEXT: s_setpc_b64 s[30:31]2270;2271; GFX942-LABEL: s_shuffle_v2i32_v3i32__5_u:2272; GFX942: ; %bb.0:2273; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2274; GFX942-NEXT: ;;#ASMSTART2275; GFX942-NEXT: ; def s[0:2]2276; GFX942-NEXT: ;;#ASMEND2277; GFX942-NEXT: s_mov_b64 s[8:9], s[2:3]2278; GFX942-NEXT: ;;#ASMSTART2279; GFX942-NEXT: ; use s[8:9]2280; GFX942-NEXT: ;;#ASMEND2281; GFX942-NEXT: s_setpc_b64 s[30:31]2282 %vec0 = call <3 x i32> asm "; def $0", "=s"()2283 %vec1 = call <3 x i32> asm "; def $0", "=s"()2284 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 poison>2285 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)2286 ret void2287}2288 2289define void @s_shuffle_v2i32_v3i32__5_0() {2290; GFX900-LABEL: s_shuffle_v2i32_v3i32__5_0:2291; GFX900: ; %bb.0:2292; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2293; GFX900-NEXT: ;;#ASMSTART2294; GFX900-NEXT: ; def s[8:10]2295; GFX900-NEXT: ;;#ASMEND2296; GFX900-NEXT: s_mov_b32 s7, s82297; GFX900-NEXT: ;;#ASMSTART2298; GFX900-NEXT: ; def s[4:6]2299; GFX900-NEXT: ;;#ASMEND2300; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]2301; GFX900-NEXT: ;;#ASMSTART2302; GFX900-NEXT: ; use s[8:9]2303; GFX900-NEXT: ;;#ASMEND2304; GFX900-NEXT: s_setpc_b64 s[30:31]2305;2306; GFX90A-LABEL: s_shuffle_v2i32_v3i32__5_0:2307; GFX90A: ; %bb.0:2308; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2309; GFX90A-NEXT: ;;#ASMSTART2310; GFX90A-NEXT: ; def s[8:10]2311; GFX90A-NEXT: ;;#ASMEND2312; GFX90A-NEXT: s_mov_b32 s7, s82313; GFX90A-NEXT: ;;#ASMSTART2314; GFX90A-NEXT: ; def s[4:6]2315; GFX90A-NEXT: ;;#ASMEND2316; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]2317; GFX90A-NEXT: ;;#ASMSTART2318; GFX90A-NEXT: ; use s[8:9]2319; GFX90A-NEXT: ;;#ASMEND2320; GFX90A-NEXT: s_setpc_b64 s[30:31]2321;2322; GFX942-LABEL: s_shuffle_v2i32_v3i32__5_0:2323; GFX942: ; %bb.0:2324; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2325; GFX942-NEXT: ;;#ASMSTART2326; GFX942-NEXT: ; def s[4:6]2327; GFX942-NEXT: ;;#ASMEND2328; GFX942-NEXT: s_mov_b32 s3, s42329; GFX942-NEXT: ;;#ASMSTART2330; GFX942-NEXT: ; def s[0:2]2331; GFX942-NEXT: ;;#ASMEND2332; GFX942-NEXT: s_mov_b64 s[8:9], s[2:3]2333; GFX942-NEXT: ;;#ASMSTART2334; GFX942-NEXT: ; use s[8:9]2335; GFX942-NEXT: ;;#ASMEND2336; GFX942-NEXT: s_setpc_b64 s[30:31]2337 %vec0 = call <3 x i32> asm "; def $0", "=s"()2338 %vec1 = call <3 x i32> asm "; def $0", "=s"()2339 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 0>2340 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)2341 ret void2342}2343 2344define void @s_shuffle_v2i32_v3i32__5_1() {2345; GFX900-LABEL: s_shuffle_v2i32_v3i32__5_1:2346; GFX900: ; %bb.0:2347; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2348; GFX900-NEXT: ;;#ASMSTART2349; GFX900-NEXT: ; def s[8:10]2350; GFX900-NEXT: ;;#ASMEND2351; GFX900-NEXT: s_mov_b32 s7, s92352; GFX900-NEXT: ;;#ASMSTART2353; GFX900-NEXT: ; def s[4:6]2354; GFX900-NEXT: ;;#ASMEND2355; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]2356; GFX900-NEXT: ;;#ASMSTART2357; GFX900-NEXT: ; use s[8:9]2358; GFX900-NEXT: ;;#ASMEND2359; GFX900-NEXT: s_setpc_b64 s[30:31]2360;2361; GFX90A-LABEL: s_shuffle_v2i32_v3i32__5_1:2362; GFX90A: ; %bb.0:2363; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2364; GFX90A-NEXT: ;;#ASMSTART2365; GFX90A-NEXT: ; def s[8:10]2366; GFX90A-NEXT: ;;#ASMEND2367; GFX90A-NEXT: s_mov_b32 s7, s92368; GFX90A-NEXT: ;;#ASMSTART2369; GFX90A-NEXT: ; def s[4:6]2370; GFX90A-NEXT: ;;#ASMEND2371; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]2372; GFX90A-NEXT: ;;#ASMSTART2373; GFX90A-NEXT: ; use s[8:9]2374; GFX90A-NEXT: ;;#ASMEND2375; GFX90A-NEXT: s_setpc_b64 s[30:31]2376;2377; GFX942-LABEL: s_shuffle_v2i32_v3i32__5_1:2378; GFX942: ; %bb.0:2379; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2380; GFX942-NEXT: ;;#ASMSTART2381; GFX942-NEXT: ; def s[4:6]2382; GFX942-NEXT: ;;#ASMEND2383; GFX942-NEXT: s_mov_b32 s3, s52384; GFX942-NEXT: ;;#ASMSTART2385; GFX942-NEXT: ; def s[0:2]2386; GFX942-NEXT: ;;#ASMEND2387; GFX942-NEXT: s_mov_b64 s[8:9], s[2:3]2388; GFX942-NEXT: ;;#ASMSTART2389; GFX942-NEXT: ; use s[8:9]2390; GFX942-NEXT: ;;#ASMEND2391; GFX942-NEXT: s_setpc_b64 s[30:31]2392 %vec0 = call <3 x i32> asm "; def $0", "=s"()2393 %vec1 = call <3 x i32> asm "; def $0", "=s"()2394 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 1>2395 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)2396 ret void2397}2398 2399define void @s_shuffle_v2i32_v3i32__5_2() {2400; GFX900-LABEL: s_shuffle_v2i32_v3i32__5_2:2401; GFX900: ; %bb.0:2402; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2403; GFX900-NEXT: ;;#ASMSTART2404; GFX900-NEXT: ; def s[8:10]2405; GFX900-NEXT: ;;#ASMEND2406; GFX900-NEXT: s_mov_b32 s7, s102407; GFX900-NEXT: ;;#ASMSTART2408; GFX900-NEXT: ; def s[4:6]2409; GFX900-NEXT: ;;#ASMEND2410; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]2411; GFX900-NEXT: ;;#ASMSTART2412; GFX900-NEXT: ; use s[8:9]2413; GFX900-NEXT: ;;#ASMEND2414; GFX900-NEXT: s_setpc_b64 s[30:31]2415;2416; GFX90A-LABEL: s_shuffle_v2i32_v3i32__5_2:2417; GFX90A: ; %bb.0:2418; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2419; GFX90A-NEXT: ;;#ASMSTART2420; GFX90A-NEXT: ; def s[8:10]2421; GFX90A-NEXT: ;;#ASMEND2422; GFX90A-NEXT: s_mov_b32 s7, s102423; GFX90A-NEXT: ;;#ASMSTART2424; GFX90A-NEXT: ; def s[4:6]2425; GFX90A-NEXT: ;;#ASMEND2426; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]2427; GFX90A-NEXT: ;;#ASMSTART2428; GFX90A-NEXT: ; use s[8:9]2429; GFX90A-NEXT: ;;#ASMEND2430; GFX90A-NEXT: s_setpc_b64 s[30:31]2431;2432; GFX942-LABEL: s_shuffle_v2i32_v3i32__5_2:2433; GFX942: ; %bb.0:2434; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2435; GFX942-NEXT: ;;#ASMSTART2436; GFX942-NEXT: ; def s[4:6]2437; GFX942-NEXT: ;;#ASMEND2438; GFX942-NEXT: s_mov_b32 s3, s62439; GFX942-NEXT: ;;#ASMSTART2440; GFX942-NEXT: ; def s[0:2]2441; GFX942-NEXT: ;;#ASMEND2442; GFX942-NEXT: s_mov_b64 s[8:9], s[2:3]2443; GFX942-NEXT: ;;#ASMSTART2444; GFX942-NEXT: ; use s[8:9]2445; GFX942-NEXT: ;;#ASMEND2446; GFX942-NEXT: s_setpc_b64 s[30:31]2447 %vec0 = call <3 x i32> asm "; def $0", "=s"()2448 %vec1 = call <3 x i32> asm "; def $0", "=s"()2449 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 2>2450 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)2451 ret void2452}2453 2454define void @s_shuffle_v2i32_v3i32__5_3() {2455; GFX900-LABEL: s_shuffle_v2i32_v3i32__5_3:2456; GFX900: ; %bb.0:2457; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2458; GFX900-NEXT: ;;#ASMSTART2459; GFX900-NEXT: ; def s[4:6]2460; GFX900-NEXT: ;;#ASMEND2461; GFX900-NEXT: s_mov_b32 s7, s42462; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]2463; GFX900-NEXT: ;;#ASMSTART2464; GFX900-NEXT: ; use s[8:9]2465; GFX900-NEXT: ;;#ASMEND2466; GFX900-NEXT: s_setpc_b64 s[30:31]2467;2468; GFX90A-LABEL: s_shuffle_v2i32_v3i32__5_3:2469; GFX90A: ; %bb.0:2470; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2471; GFX90A-NEXT: ;;#ASMSTART2472; GFX90A-NEXT: ; def s[4:6]2473; GFX90A-NEXT: ;;#ASMEND2474; GFX90A-NEXT: s_mov_b32 s7, s42475; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]2476; GFX90A-NEXT: ;;#ASMSTART2477; GFX90A-NEXT: ; use s[8:9]2478; GFX90A-NEXT: ;;#ASMEND2479; GFX90A-NEXT: s_setpc_b64 s[30:31]2480;2481; GFX942-LABEL: s_shuffle_v2i32_v3i32__5_3:2482; GFX942: ; %bb.0:2483; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2484; GFX942-NEXT: ;;#ASMSTART2485; GFX942-NEXT: ; def s[0:2]2486; GFX942-NEXT: ;;#ASMEND2487; GFX942-NEXT: s_mov_b32 s3, s02488; GFX942-NEXT: s_mov_b64 s[8:9], s[2:3]2489; GFX942-NEXT: ;;#ASMSTART2490; GFX942-NEXT: ; use s[8:9]2491; GFX942-NEXT: ;;#ASMEND2492; GFX942-NEXT: s_setpc_b64 s[30:31]2493 %vec0 = call <3 x i32> asm "; def $0", "=s"()2494 %vec1 = call <3 x i32> asm "; def $0", "=s"()2495 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 3>2496 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)2497 ret void2498}2499 2500define void @s_shuffle_v2i32_v3i32__5_4() {2501; GFX900-LABEL: s_shuffle_v2i32_v3i32__5_4:2502; GFX900: ; %bb.0:2503; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2504; GFX900-NEXT: ;;#ASMSTART2505; GFX900-NEXT: ; def s[4:6]2506; GFX900-NEXT: ;;#ASMEND2507; GFX900-NEXT: s_mov_b32 s7, s52508; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]2509; GFX900-NEXT: ;;#ASMSTART2510; GFX900-NEXT: ; use s[8:9]2511; GFX900-NEXT: ;;#ASMEND2512; GFX900-NEXT: s_setpc_b64 s[30:31]2513;2514; GFX90A-LABEL: s_shuffle_v2i32_v3i32__5_4:2515; GFX90A: ; %bb.0:2516; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2517; GFX90A-NEXT: ;;#ASMSTART2518; GFX90A-NEXT: ; def s[4:6]2519; GFX90A-NEXT: ;;#ASMEND2520; GFX90A-NEXT: s_mov_b32 s7, s52521; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]2522; GFX90A-NEXT: ;;#ASMSTART2523; GFX90A-NEXT: ; use s[8:9]2524; GFX90A-NEXT: ;;#ASMEND2525; GFX90A-NEXT: s_setpc_b64 s[30:31]2526;2527; GFX942-LABEL: s_shuffle_v2i32_v3i32__5_4:2528; GFX942: ; %bb.0:2529; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2530; GFX942-NEXT: ;;#ASMSTART2531; GFX942-NEXT: ; def s[0:2]2532; GFX942-NEXT: ;;#ASMEND2533; GFX942-NEXT: s_mov_b32 s3, s12534; GFX942-NEXT: s_mov_b64 s[8:9], s[2:3]2535; GFX942-NEXT: ;;#ASMSTART2536; GFX942-NEXT: ; use s[8:9]2537; GFX942-NEXT: ;;#ASMEND2538; GFX942-NEXT: s_setpc_b64 s[30:31]2539 %vec0 = call <3 x i32> asm "; def $0", "=s"()2540 %vec1 = call <3 x i32> asm "; def $0", "=s"()2541 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 4>2542 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)2543 ret void2544}2545 2546define void @s_shuffle_v2i32_v3i32__5_5() {2547; GFX900-LABEL: s_shuffle_v2i32_v3i32__5_5:2548; GFX900: ; %bb.0:2549; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2550; GFX900-NEXT: ;;#ASMSTART2551; GFX900-NEXT: ; def s[4:6]2552; GFX900-NEXT: ;;#ASMEND2553; GFX900-NEXT: s_mov_b32 s7, s62554; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]2555; GFX900-NEXT: ;;#ASMSTART2556; GFX900-NEXT: ; use s[8:9]2557; GFX900-NEXT: ;;#ASMEND2558; GFX900-NEXT: s_setpc_b64 s[30:31]2559;2560; GFX90A-LABEL: s_shuffle_v2i32_v3i32__5_5:2561; GFX90A: ; %bb.0:2562; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2563; GFX90A-NEXT: ;;#ASMSTART2564; GFX90A-NEXT: ; def s[4:6]2565; GFX90A-NEXT: ;;#ASMEND2566; GFX90A-NEXT: s_mov_b32 s7, s62567; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]2568; GFX90A-NEXT: ;;#ASMSTART2569; GFX90A-NEXT: ; use s[8:9]2570; GFX90A-NEXT: ;;#ASMEND2571; GFX90A-NEXT: s_setpc_b64 s[30:31]2572;2573; GFX942-LABEL: s_shuffle_v2i32_v3i32__5_5:2574; GFX942: ; %bb.0:2575; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2576; GFX942-NEXT: ;;#ASMSTART2577; GFX942-NEXT: ; def s[0:2]2578; GFX942-NEXT: ;;#ASMEND2579; GFX942-NEXT: s_mov_b32 s3, s22580; GFX942-NEXT: s_mov_b64 s[8:9], s[2:3]2581; GFX942-NEXT: ;;#ASMSTART2582; GFX942-NEXT: ; use s[8:9]2583; GFX942-NEXT: ;;#ASMEND2584; GFX942-NEXT: s_setpc_b64 s[30:31]2585 %vec0 = call <3 x i32> asm "; def $0", "=s"()2586 %vec1 = call <3 x i32> asm "; def $0", "=s"()2587 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 5, i32 5>2588 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)2589 ret void2590}2591 2592define void @s_shuffle_v2i32_v3i32__u_0() {2593; GFX900-LABEL: s_shuffle_v2i32_v3i32__u_0:2594; GFX900: ; %bb.0:2595; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2596; GFX900-NEXT: ;;#ASMSTART2597; GFX900-NEXT: ; def s[4:6]2598; GFX900-NEXT: ;;#ASMEND2599; GFX900-NEXT: s_mov_b32 s9, s42600; GFX900-NEXT: ;;#ASMSTART2601; GFX900-NEXT: ; use s[8:9]2602; GFX900-NEXT: ;;#ASMEND2603; GFX900-NEXT: s_setpc_b64 s[30:31]2604;2605; GFX90A-LABEL: s_shuffle_v2i32_v3i32__u_0:2606; GFX90A: ; %bb.0:2607; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2608; GFX90A-NEXT: ;;#ASMSTART2609; GFX90A-NEXT: ; def s[4:6]2610; GFX90A-NEXT: ;;#ASMEND2611; GFX90A-NEXT: s_mov_b32 s9, s42612; GFX90A-NEXT: ;;#ASMSTART2613; GFX90A-NEXT: ; use s[8:9]2614; GFX90A-NEXT: ;;#ASMEND2615; GFX90A-NEXT: s_setpc_b64 s[30:31]2616;2617; GFX942-LABEL: s_shuffle_v2i32_v3i32__u_0:2618; GFX942: ; %bb.0:2619; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2620; GFX942-NEXT: ;;#ASMSTART2621; GFX942-NEXT: ; def s[0:2]2622; GFX942-NEXT: ;;#ASMEND2623; GFX942-NEXT: s_mov_b32 s9, s02624; GFX942-NEXT: ;;#ASMSTART2625; GFX942-NEXT: ; use s[8:9]2626; GFX942-NEXT: ;;#ASMEND2627; GFX942-NEXT: s_setpc_b64 s[30:31]2628 %vec0 = call <3 x i32> asm "; def $0", "=s"()2629 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 0>2630 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)2631 ret void2632}2633 2634define void @s_shuffle_v2i32_v3i32__0_0() {2635; GFX9-LABEL: s_shuffle_v2i32_v3i32__0_0:2636; GFX9: ; %bb.0:2637; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2638; GFX9-NEXT: ;;#ASMSTART2639; GFX9-NEXT: ; def s[8:10]2640; GFX9-NEXT: ;;#ASMEND2641; GFX9-NEXT: s_mov_b32 s9, s82642; GFX9-NEXT: ;;#ASMSTART2643; GFX9-NEXT: ; use s[8:9]2644; GFX9-NEXT: ;;#ASMEND2645; GFX9-NEXT: s_setpc_b64 s[30:31]2646 %vec0 = call <3 x i32> asm "; def $0", "=s"()2647 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> zeroinitializer2648 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)2649 ret void2650}2651 2652define void @s_shuffle_v2i32_v3i32__1_0() {2653; GFX900-LABEL: s_shuffle_v2i32_v3i32__1_0:2654; GFX900: ; %bb.0:2655; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2656; GFX900-NEXT: ;;#ASMSTART2657; GFX900-NEXT: ; def s[4:6]2658; GFX900-NEXT: ;;#ASMEND2659; GFX900-NEXT: s_mov_b32 s8, s52660; GFX900-NEXT: s_mov_b32 s9, s42661; GFX900-NEXT: ;;#ASMSTART2662; GFX900-NEXT: ; use s[8:9]2663; GFX900-NEXT: ;;#ASMEND2664; GFX900-NEXT: s_setpc_b64 s[30:31]2665;2666; GFX90A-LABEL: s_shuffle_v2i32_v3i32__1_0:2667; GFX90A: ; %bb.0:2668; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2669; GFX90A-NEXT: ;;#ASMSTART2670; GFX90A-NEXT: ; def s[4:6]2671; GFX90A-NEXT: ;;#ASMEND2672; GFX90A-NEXT: s_mov_b32 s8, s52673; GFX90A-NEXT: s_mov_b32 s9, s42674; GFX90A-NEXT: ;;#ASMSTART2675; GFX90A-NEXT: ; use s[8:9]2676; GFX90A-NEXT: ;;#ASMEND2677; GFX90A-NEXT: s_setpc_b64 s[30:31]2678;2679; GFX942-LABEL: s_shuffle_v2i32_v3i32__1_0:2680; GFX942: ; %bb.0:2681; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2682; GFX942-NEXT: ;;#ASMSTART2683; GFX942-NEXT: ; def s[0:2]2684; GFX942-NEXT: ;;#ASMEND2685; GFX942-NEXT: s_mov_b32 s8, s12686; GFX942-NEXT: s_mov_b32 s9, s02687; GFX942-NEXT: ;;#ASMSTART2688; GFX942-NEXT: ; use s[8:9]2689; GFX942-NEXT: ;;#ASMEND2690; GFX942-NEXT: s_setpc_b64 s[30:31]2691 %vec0 = call <3 x i32> asm "; def $0", "=s"()2692 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 0>2693 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)2694 ret void2695}2696 2697define void @s_shuffle_v2i32_v3i32__2_0() {2698; GFX900-LABEL: s_shuffle_v2i32_v3i32__2_0:2699; GFX900: ; %bb.0:2700; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2701; GFX900-NEXT: ;;#ASMSTART2702; GFX900-NEXT: ; def s[4:6]2703; GFX900-NEXT: ;;#ASMEND2704; GFX900-NEXT: s_mov_b32 s7, s42705; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]2706; GFX900-NEXT: ;;#ASMSTART2707; GFX900-NEXT: ; use s[8:9]2708; GFX900-NEXT: ;;#ASMEND2709; GFX900-NEXT: s_setpc_b64 s[30:31]2710;2711; GFX90A-LABEL: s_shuffle_v2i32_v3i32__2_0:2712; GFX90A: ; %bb.0:2713; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2714; GFX90A-NEXT: ;;#ASMSTART2715; GFX90A-NEXT: ; def s[4:6]2716; GFX90A-NEXT: ;;#ASMEND2717; GFX90A-NEXT: s_mov_b32 s7, s42718; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]2719; GFX90A-NEXT: ;;#ASMSTART2720; GFX90A-NEXT: ; use s[8:9]2721; GFX90A-NEXT: ;;#ASMEND2722; GFX90A-NEXT: s_setpc_b64 s[30:31]2723;2724; GFX942-LABEL: s_shuffle_v2i32_v3i32__2_0:2725; GFX942: ; %bb.0:2726; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2727; GFX942-NEXT: ;;#ASMSTART2728; GFX942-NEXT: ; def s[0:2]2729; GFX942-NEXT: ;;#ASMEND2730; GFX942-NEXT: s_mov_b32 s3, s02731; GFX942-NEXT: s_mov_b64 s[8:9], s[2:3]2732; GFX942-NEXT: ;;#ASMSTART2733; GFX942-NEXT: ; use s[8:9]2734; GFX942-NEXT: ;;#ASMEND2735; GFX942-NEXT: s_setpc_b64 s[30:31]2736 %vec0 = call <3 x i32> asm "; def $0", "=s"()2737 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 0>2738 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)2739 ret void2740}2741 2742define void @s_shuffle_v2i32_v3i32__3_0() {2743; GFX900-LABEL: s_shuffle_v2i32_v3i32__3_0:2744; GFX900: ; %bb.0:2745; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2746; GFX900-NEXT: ;;#ASMSTART2747; GFX900-NEXT: ; def s[4:6]2748; GFX900-NEXT: ;;#ASMEND2749; GFX900-NEXT: s_mov_b32 s9, s42750; GFX900-NEXT: ;;#ASMSTART2751; GFX900-NEXT: ; use s[8:9]2752; GFX900-NEXT: ;;#ASMEND2753; GFX900-NEXT: s_setpc_b64 s[30:31]2754;2755; GFX90A-LABEL: s_shuffle_v2i32_v3i32__3_0:2756; GFX90A: ; %bb.0:2757; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2758; GFX90A-NEXT: ;;#ASMSTART2759; GFX90A-NEXT: ; def s[4:6]2760; GFX90A-NEXT: ;;#ASMEND2761; GFX90A-NEXT: s_mov_b32 s9, s42762; GFX90A-NEXT: ;;#ASMSTART2763; GFX90A-NEXT: ; use s[8:9]2764; GFX90A-NEXT: ;;#ASMEND2765; GFX90A-NEXT: s_setpc_b64 s[30:31]2766;2767; GFX942-LABEL: s_shuffle_v2i32_v3i32__3_0:2768; GFX942: ; %bb.0:2769; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2770; GFX942-NEXT: ;;#ASMSTART2771; GFX942-NEXT: ; def s[0:2]2772; GFX942-NEXT: ;;#ASMEND2773; GFX942-NEXT: s_mov_b32 s9, s02774; GFX942-NEXT: ;;#ASMSTART2775; GFX942-NEXT: ; use s[8:9]2776; GFX942-NEXT: ;;#ASMEND2777; GFX942-NEXT: s_setpc_b64 s[30:31]2778 %vec0 = call <3 x i32> asm "; def $0", "=s"()2779 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 0>2780 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)2781 ret void2782}2783 2784define void @s_shuffle_v2i32_v3i32__4_0() {2785; GFX900-LABEL: s_shuffle_v2i32_v3i32__4_0:2786; GFX900: ; %bb.0:2787; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2788; GFX900-NEXT: ;;#ASMSTART2789; GFX900-NEXT: ; def s[8:10]2790; GFX900-NEXT: ;;#ASMEND2791; GFX900-NEXT: ;;#ASMSTART2792; GFX900-NEXT: ; def s[4:6]2793; GFX900-NEXT: ;;#ASMEND2794; GFX900-NEXT: s_mov_b32 s8, s92795; GFX900-NEXT: s_mov_b32 s9, s42796; GFX900-NEXT: ;;#ASMSTART2797; GFX900-NEXT: ; use s[8:9]2798; GFX900-NEXT: ;;#ASMEND2799; GFX900-NEXT: s_setpc_b64 s[30:31]2800;2801; GFX90A-LABEL: s_shuffle_v2i32_v3i32__4_0:2802; GFX90A: ; %bb.0:2803; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2804; GFX90A-NEXT: ;;#ASMSTART2805; GFX90A-NEXT: ; def s[8:10]2806; GFX90A-NEXT: ;;#ASMEND2807; GFX90A-NEXT: ;;#ASMSTART2808; GFX90A-NEXT: ; def s[4:6]2809; GFX90A-NEXT: ;;#ASMEND2810; GFX90A-NEXT: s_mov_b32 s8, s92811; GFX90A-NEXT: s_mov_b32 s9, s42812; GFX90A-NEXT: ;;#ASMSTART2813; GFX90A-NEXT: ; use s[8:9]2814; GFX90A-NEXT: ;;#ASMEND2815; GFX90A-NEXT: s_setpc_b64 s[30:31]2816;2817; GFX942-LABEL: s_shuffle_v2i32_v3i32__4_0:2818; GFX942: ; %bb.0:2819; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2820; GFX942-NEXT: ;;#ASMSTART2821; GFX942-NEXT: ; def s[0:2]2822; GFX942-NEXT: ;;#ASMEND2823; GFX942-NEXT: ;;#ASMSTART2824; GFX942-NEXT: ; def s[4:6]2825; GFX942-NEXT: ;;#ASMEND2826; GFX942-NEXT: s_mov_b32 s8, s52827; GFX942-NEXT: s_mov_b32 s9, s02828; GFX942-NEXT: ;;#ASMSTART2829; GFX942-NEXT: ; use s[8:9]2830; GFX942-NEXT: ;;#ASMEND2831; GFX942-NEXT: s_setpc_b64 s[30:31]2832 %vec0 = call <3 x i32> asm "; def $0", "=s"()2833 %vec1 = call <3 x i32> asm "; def $0", "=s"()2834 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 0>2835 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)2836 ret void2837}2838 2839define void @s_shuffle_v2i32_v3i32__u_1() {2840; GFX900-LABEL: s_shuffle_v2i32_v3i32__u_1:2841; GFX900: ; %bb.0:2842; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2843; GFX900-NEXT: ;;#ASMSTART2844; GFX900-NEXT: ; def s[8:10]2845; GFX900-NEXT: ;;#ASMEND2846; GFX900-NEXT: ;;#ASMSTART2847; GFX900-NEXT: ; use s[8:9]2848; GFX900-NEXT: ;;#ASMEND2849; GFX900-NEXT: s_setpc_b64 s[30:31]2850;2851; GFX90A-LABEL: s_shuffle_v2i32_v3i32__u_1:2852; GFX90A: ; %bb.0:2853; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2854; GFX90A-NEXT: ;;#ASMSTART2855; GFX90A-NEXT: ; def s[8:10]2856; GFX90A-NEXT: ;;#ASMEND2857; GFX90A-NEXT: ;;#ASMSTART2858; GFX90A-NEXT: ; use s[8:9]2859; GFX90A-NEXT: ;;#ASMEND2860; GFX90A-NEXT: s_setpc_b64 s[30:31]2861;2862; GFX942-LABEL: s_shuffle_v2i32_v3i32__u_1:2863; GFX942: ; %bb.0:2864; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2865; GFX942-NEXT: ;;#ASMSTART2866; GFX942-NEXT: ; def s[8:10]2867; GFX942-NEXT: ;;#ASMEND2868; GFX942-NEXT: s_nop 02869; GFX942-NEXT: ;;#ASMSTART2870; GFX942-NEXT: ; use s[8:9]2871; GFX942-NEXT: ;;#ASMEND2872; GFX942-NEXT: s_setpc_b64 s[30:31]2873 %vec0 = call <3 x i32> asm "; def $0", "=s"()2874 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 1>2875 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)2876 ret void2877}2878 2879define void @s_shuffle_v2i32_v3i32__0_1() {2880; GFX900-LABEL: s_shuffle_v2i32_v3i32__0_1:2881; GFX900: ; %bb.0:2882; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2883; GFX900-NEXT: ;;#ASMSTART2884; GFX900-NEXT: ; def s[8:10]2885; GFX900-NEXT: ;;#ASMEND2886; GFX900-NEXT: ;;#ASMSTART2887; GFX900-NEXT: ; use s[8:9]2888; GFX900-NEXT: ;;#ASMEND2889; GFX900-NEXT: s_setpc_b64 s[30:31]2890;2891; GFX90A-LABEL: s_shuffle_v2i32_v3i32__0_1:2892; GFX90A: ; %bb.0:2893; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2894; GFX90A-NEXT: ;;#ASMSTART2895; GFX90A-NEXT: ; def s[8:10]2896; GFX90A-NEXT: ;;#ASMEND2897; GFX90A-NEXT: ;;#ASMSTART2898; GFX90A-NEXT: ; use s[8:9]2899; GFX90A-NEXT: ;;#ASMEND2900; GFX90A-NEXT: s_setpc_b64 s[30:31]2901;2902; GFX942-LABEL: s_shuffle_v2i32_v3i32__0_1:2903; GFX942: ; %bb.0:2904; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2905; GFX942-NEXT: ;;#ASMSTART2906; GFX942-NEXT: ; def s[8:10]2907; GFX942-NEXT: ;;#ASMEND2908; GFX942-NEXT: s_nop 02909; GFX942-NEXT: ;;#ASMSTART2910; GFX942-NEXT: ; use s[8:9]2911; GFX942-NEXT: ;;#ASMEND2912; GFX942-NEXT: s_setpc_b64 s[30:31]2913 %vec0 = call <3 x i32> asm "; def $0", "=s"()2914 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 1>2915 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)2916 ret void2917}2918 2919define void @s_shuffle_v2i32_v3i32__1_1() {2920; GFX9-LABEL: s_shuffle_v2i32_v3i32__1_1:2921; GFX9: ; %bb.0:2922; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2923; GFX9-NEXT: ;;#ASMSTART2924; GFX9-NEXT: ; def s[8:10]2925; GFX9-NEXT: ;;#ASMEND2926; GFX9-NEXT: s_mov_b32 s8, s92927; GFX9-NEXT: ;;#ASMSTART2928; GFX9-NEXT: ; use s[8:9]2929; GFX9-NEXT: ;;#ASMEND2930; GFX9-NEXT: s_setpc_b64 s[30:31]2931 %vec0 = call <3 x i32> asm "; def $0", "=s"()2932 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 1>2933 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)2934 ret void2935}2936 2937define void @s_shuffle_v2i32_v3i32__2_1() {2938; GFX900-LABEL: s_shuffle_v2i32_v3i32__2_1:2939; GFX900: ; %bb.0:2940; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2941; GFX900-NEXT: ;;#ASMSTART2942; GFX900-NEXT: ; def s[4:6]2943; GFX900-NEXT: ;;#ASMEND2944; GFX900-NEXT: s_mov_b32 s7, s52945; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]2946; GFX900-NEXT: ;;#ASMSTART2947; GFX900-NEXT: ; use s[8:9]2948; GFX900-NEXT: ;;#ASMEND2949; GFX900-NEXT: s_setpc_b64 s[30:31]2950;2951; GFX90A-LABEL: s_shuffle_v2i32_v3i32__2_1:2952; GFX90A: ; %bb.0:2953; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2954; GFX90A-NEXT: ;;#ASMSTART2955; GFX90A-NEXT: ; def s[4:6]2956; GFX90A-NEXT: ;;#ASMEND2957; GFX90A-NEXT: s_mov_b32 s7, s52958; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]2959; GFX90A-NEXT: ;;#ASMSTART2960; GFX90A-NEXT: ; use s[8:9]2961; GFX90A-NEXT: ;;#ASMEND2962; GFX90A-NEXT: s_setpc_b64 s[30:31]2963;2964; GFX942-LABEL: s_shuffle_v2i32_v3i32__2_1:2965; GFX942: ; %bb.0:2966; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2967; GFX942-NEXT: ;;#ASMSTART2968; GFX942-NEXT: ; def s[0:2]2969; GFX942-NEXT: ;;#ASMEND2970; GFX942-NEXT: s_mov_b32 s3, s12971; GFX942-NEXT: s_mov_b64 s[8:9], s[2:3]2972; GFX942-NEXT: ;;#ASMSTART2973; GFX942-NEXT: ; use s[8:9]2974; GFX942-NEXT: ;;#ASMEND2975; GFX942-NEXT: s_setpc_b64 s[30:31]2976 %vec0 = call <3 x i32> asm "; def $0", "=s"()2977 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 1>2978 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)2979 ret void2980}2981 2982define void @s_shuffle_v2i32_v3i32__3_1() {2983; GFX900-LABEL: s_shuffle_v2i32_v3i32__3_1:2984; GFX900: ; %bb.0:2985; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2986; GFX900-NEXT: ;;#ASMSTART2987; GFX900-NEXT: ; def s[8:10]2988; GFX900-NEXT: ;;#ASMEND2989; GFX900-NEXT: ;;#ASMSTART2990; GFX900-NEXT: ; use s[8:9]2991; GFX900-NEXT: ;;#ASMEND2992; GFX900-NEXT: s_setpc_b64 s[30:31]2993;2994; GFX90A-LABEL: s_shuffle_v2i32_v3i32__3_1:2995; GFX90A: ; %bb.0:2996; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2997; GFX90A-NEXT: ;;#ASMSTART2998; GFX90A-NEXT: ; def s[8:10]2999; GFX90A-NEXT: ;;#ASMEND3000; GFX90A-NEXT: ;;#ASMSTART3001; GFX90A-NEXT: ; use s[8:9]3002; GFX90A-NEXT: ;;#ASMEND3003; GFX90A-NEXT: s_setpc_b64 s[30:31]3004;3005; GFX942-LABEL: s_shuffle_v2i32_v3i32__3_1:3006; GFX942: ; %bb.0:3007; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3008; GFX942-NEXT: ;;#ASMSTART3009; GFX942-NEXT: ; def s[8:10]3010; GFX942-NEXT: ;;#ASMEND3011; GFX942-NEXT: s_nop 03012; GFX942-NEXT: ;;#ASMSTART3013; GFX942-NEXT: ; use s[8:9]3014; GFX942-NEXT: ;;#ASMEND3015; GFX942-NEXT: s_setpc_b64 s[30:31]3016 %vec0 = call <3 x i32> asm "; def $0", "=s"()3017 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 1>3018 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)3019 ret void3020}3021 3022define void @s_shuffle_v2i32_v3i32__4_1() {3023; GFX900-LABEL: s_shuffle_v2i32_v3i32__4_1:3024; GFX900: ; %bb.0:3025; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3026; GFX900-NEXT: ;;#ASMSTART3027; GFX900-NEXT: ; def s[8:10]3028; GFX900-NEXT: ;;#ASMEND3029; GFX900-NEXT: ;;#ASMSTART3030; GFX900-NEXT: ; def s[4:6]3031; GFX900-NEXT: ;;#ASMEND3032; GFX900-NEXT: s_mov_b32 s8, s53033; GFX900-NEXT: ;;#ASMSTART3034; GFX900-NEXT: ; use s[8:9]3035; GFX900-NEXT: ;;#ASMEND3036; GFX900-NEXT: s_setpc_b64 s[30:31]3037;3038; GFX90A-LABEL: s_shuffle_v2i32_v3i32__4_1:3039; GFX90A: ; %bb.0:3040; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3041; GFX90A-NEXT: ;;#ASMSTART3042; GFX90A-NEXT: ; def s[8:10]3043; GFX90A-NEXT: ;;#ASMEND3044; GFX90A-NEXT: ;;#ASMSTART3045; GFX90A-NEXT: ; def s[4:6]3046; GFX90A-NEXT: ;;#ASMEND3047; GFX90A-NEXT: s_mov_b32 s8, s53048; GFX90A-NEXT: ;;#ASMSTART3049; GFX90A-NEXT: ; use s[8:9]3050; GFX90A-NEXT: ;;#ASMEND3051; GFX90A-NEXT: s_setpc_b64 s[30:31]3052;3053; GFX942-LABEL: s_shuffle_v2i32_v3i32__4_1:3054; GFX942: ; %bb.0:3055; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3056; GFX942-NEXT: ;;#ASMSTART3057; GFX942-NEXT: ; def s[8:10]3058; GFX942-NEXT: ;;#ASMEND3059; GFX942-NEXT: ;;#ASMSTART3060; GFX942-NEXT: ; def s[0:2]3061; GFX942-NEXT: ;;#ASMEND3062; GFX942-NEXT: s_mov_b32 s8, s13063; GFX942-NEXT: ;;#ASMSTART3064; GFX942-NEXT: ; use s[8:9]3065; GFX942-NEXT: ;;#ASMEND3066; GFX942-NEXT: s_setpc_b64 s[30:31]3067 %vec0 = call <3 x i32> asm "; def $0", "=s"()3068 %vec1 = call <3 x i32> asm "; def $0", "=s"()3069 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 1>3070 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)3071 ret void3072}3073 3074define void @s_shuffle_v2i32_v3i32__u_2() {3075; GFX900-LABEL: s_shuffle_v2i32_v3i32__u_2:3076; GFX900: ; %bb.0:3077; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3078; GFX900-NEXT: ;;#ASMSTART3079; GFX900-NEXT: ; def s[4:6]3080; GFX900-NEXT: ;;#ASMEND3081; GFX900-NEXT: s_mov_b32 s9, s63082; GFX900-NEXT: ;;#ASMSTART3083; GFX900-NEXT: ; use s[8:9]3084; GFX900-NEXT: ;;#ASMEND3085; GFX900-NEXT: s_setpc_b64 s[30:31]3086;3087; GFX90A-LABEL: s_shuffle_v2i32_v3i32__u_2:3088; GFX90A: ; %bb.0:3089; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3090; GFX90A-NEXT: ;;#ASMSTART3091; GFX90A-NEXT: ; def s[4:6]3092; GFX90A-NEXT: ;;#ASMEND3093; GFX90A-NEXT: s_mov_b32 s9, s63094; GFX90A-NEXT: ;;#ASMSTART3095; GFX90A-NEXT: ; use s[8:9]3096; GFX90A-NEXT: ;;#ASMEND3097; GFX90A-NEXT: s_setpc_b64 s[30:31]3098;3099; GFX942-LABEL: s_shuffle_v2i32_v3i32__u_2:3100; GFX942: ; %bb.0:3101; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3102; GFX942-NEXT: ;;#ASMSTART3103; GFX942-NEXT: ; def s[0:2]3104; GFX942-NEXT: ;;#ASMEND3105; GFX942-NEXT: s_mov_b32 s9, s23106; GFX942-NEXT: ;;#ASMSTART3107; GFX942-NEXT: ; use s[8:9]3108; GFX942-NEXT: ;;#ASMEND3109; GFX942-NEXT: s_setpc_b64 s[30:31]3110 %vec0 = call <3 x i32> asm "; def $0", "=s"()3111 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 2>3112 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)3113 ret void3114}3115 3116define void @s_shuffle_v2i32_v3i32__0_2() {3117; GFX9-LABEL: s_shuffle_v2i32_v3i32__0_2:3118; GFX9: ; %bb.0:3119; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3120; GFX9-NEXT: ;;#ASMSTART3121; GFX9-NEXT: ; def s[8:10]3122; GFX9-NEXT: ;;#ASMEND3123; GFX9-NEXT: s_mov_b32 s9, s103124; GFX9-NEXT: ;;#ASMSTART3125; GFX9-NEXT: ; use s[8:9]3126; GFX9-NEXT: ;;#ASMEND3127; GFX9-NEXT: s_setpc_b64 s[30:31]3128 %vec0 = call <3 x i32> asm "; def $0", "=s"()3129 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 2>3130 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)3131 ret void3132}3133 3134define void @s_shuffle_v2i32_v3i32__1_2() {3135; GFX900-LABEL: s_shuffle_v2i32_v3i32__1_2:3136; GFX900: ; %bb.0:3137; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3138; GFX900-NEXT: ;;#ASMSTART3139; GFX900-NEXT: ; def s[4:6]3140; GFX900-NEXT: ;;#ASMEND3141; GFX900-NEXT: s_mov_b32 s8, s53142; GFX900-NEXT: s_mov_b32 s9, s63143; GFX900-NEXT: ;;#ASMSTART3144; GFX900-NEXT: ; use s[8:9]3145; GFX900-NEXT: ;;#ASMEND3146; GFX900-NEXT: s_setpc_b64 s[30:31]3147;3148; GFX90A-LABEL: s_shuffle_v2i32_v3i32__1_2:3149; GFX90A: ; %bb.0:3150; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3151; GFX90A-NEXT: ;;#ASMSTART3152; GFX90A-NEXT: ; def s[4:6]3153; GFX90A-NEXT: ;;#ASMEND3154; GFX90A-NEXT: s_mov_b32 s8, s53155; GFX90A-NEXT: s_mov_b32 s9, s63156; GFX90A-NEXT: ;;#ASMSTART3157; GFX90A-NEXT: ; use s[8:9]3158; GFX90A-NEXT: ;;#ASMEND3159; GFX90A-NEXT: s_setpc_b64 s[30:31]3160;3161; GFX942-LABEL: s_shuffle_v2i32_v3i32__1_2:3162; GFX942: ; %bb.0:3163; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3164; GFX942-NEXT: ;;#ASMSTART3165; GFX942-NEXT: ; def s[0:2]3166; GFX942-NEXT: ;;#ASMEND3167; GFX942-NEXT: s_mov_b32 s8, s13168; GFX942-NEXT: s_mov_b32 s9, s23169; GFX942-NEXT: ;;#ASMSTART3170; GFX942-NEXT: ; use s[8:9]3171; GFX942-NEXT: ;;#ASMEND3172; GFX942-NEXT: s_setpc_b64 s[30:31]3173 %vec0 = call <3 x i32> asm "; def $0", "=s"()3174 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 2>3175 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)3176 ret void3177}3178 3179define void @s_shuffle_v2i32_v3i32__2_2() {3180; GFX900-LABEL: s_shuffle_v2i32_v3i32__2_2:3181; GFX900: ; %bb.0:3182; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3183; GFX900-NEXT: ;;#ASMSTART3184; GFX900-NEXT: ; def s[4:6]3185; GFX900-NEXT: ;;#ASMEND3186; GFX900-NEXT: s_mov_b32 s7, s63187; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]3188; GFX900-NEXT: ;;#ASMSTART3189; GFX900-NEXT: ; use s[8:9]3190; GFX900-NEXT: ;;#ASMEND3191; GFX900-NEXT: s_setpc_b64 s[30:31]3192;3193; GFX90A-LABEL: s_shuffle_v2i32_v3i32__2_2:3194; GFX90A: ; %bb.0:3195; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3196; GFX90A-NEXT: ;;#ASMSTART3197; GFX90A-NEXT: ; def s[4:6]3198; GFX90A-NEXT: ;;#ASMEND3199; GFX90A-NEXT: s_mov_b32 s7, s63200; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]3201; GFX90A-NEXT: ;;#ASMSTART3202; GFX90A-NEXT: ; use s[8:9]3203; GFX90A-NEXT: ;;#ASMEND3204; GFX90A-NEXT: s_setpc_b64 s[30:31]3205;3206; GFX942-LABEL: s_shuffle_v2i32_v3i32__2_2:3207; GFX942: ; %bb.0:3208; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3209; GFX942-NEXT: ;;#ASMSTART3210; GFX942-NEXT: ; def s[0:2]3211; GFX942-NEXT: ;;#ASMEND3212; GFX942-NEXT: s_mov_b32 s3, s23213; GFX942-NEXT: s_mov_b64 s[8:9], s[2:3]3214; GFX942-NEXT: ;;#ASMSTART3215; GFX942-NEXT: ; use s[8:9]3216; GFX942-NEXT: ;;#ASMEND3217; GFX942-NEXT: s_setpc_b64 s[30:31]3218 %vec0 = call <3 x i32> asm "; def $0", "=s"()3219 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 2>3220 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)3221 ret void3222}3223 3224define void @s_shuffle_v2i32_v3i32__3_2() {3225; GFX900-LABEL: s_shuffle_v2i32_v3i32__3_2:3226; GFX900: ; %bb.0:3227; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3228; GFX900-NEXT: ;;#ASMSTART3229; GFX900-NEXT: ; def s[4:6]3230; GFX900-NEXT: ;;#ASMEND3231; GFX900-NEXT: s_mov_b32 s9, s63232; GFX900-NEXT: ;;#ASMSTART3233; GFX900-NEXT: ; use s[8:9]3234; GFX900-NEXT: ;;#ASMEND3235; GFX900-NEXT: s_setpc_b64 s[30:31]3236;3237; GFX90A-LABEL: s_shuffle_v2i32_v3i32__3_2:3238; GFX90A: ; %bb.0:3239; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3240; GFX90A-NEXT: ;;#ASMSTART3241; GFX90A-NEXT: ; def s[4:6]3242; GFX90A-NEXT: ;;#ASMEND3243; GFX90A-NEXT: s_mov_b32 s9, s63244; GFX90A-NEXT: ;;#ASMSTART3245; GFX90A-NEXT: ; use s[8:9]3246; GFX90A-NEXT: ;;#ASMEND3247; GFX90A-NEXT: s_setpc_b64 s[30:31]3248;3249; GFX942-LABEL: s_shuffle_v2i32_v3i32__3_2:3250; GFX942: ; %bb.0:3251; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3252; GFX942-NEXT: ;;#ASMSTART3253; GFX942-NEXT: ; def s[0:2]3254; GFX942-NEXT: ;;#ASMEND3255; GFX942-NEXT: s_mov_b32 s9, s23256; GFX942-NEXT: ;;#ASMSTART3257; GFX942-NEXT: ; use s[8:9]3258; GFX942-NEXT: ;;#ASMEND3259; GFX942-NEXT: s_setpc_b64 s[30:31]3260 %vec0 = call <3 x i32> asm "; def $0", "=s"()3261 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 2>3262 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)3263 ret void3264}3265 3266define void @s_shuffle_v2i32_v3i32__4_2() {3267; GFX900-LABEL: s_shuffle_v2i32_v3i32__4_2:3268; GFX900: ; %bb.0:3269; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3270; GFX900-NEXT: ;;#ASMSTART3271; GFX900-NEXT: ; def s[8:10]3272; GFX900-NEXT: ;;#ASMEND3273; GFX900-NEXT: ;;#ASMSTART3274; GFX900-NEXT: ; def s[4:6]3275; GFX900-NEXT: ;;#ASMEND3276; GFX900-NEXT: s_mov_b32 s8, s93277; GFX900-NEXT: s_mov_b32 s9, s63278; GFX900-NEXT: ;;#ASMSTART3279; GFX900-NEXT: ; use s[8:9]3280; GFX900-NEXT: ;;#ASMEND3281; GFX900-NEXT: s_setpc_b64 s[30:31]3282;3283; GFX90A-LABEL: s_shuffle_v2i32_v3i32__4_2:3284; GFX90A: ; %bb.0:3285; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3286; GFX90A-NEXT: ;;#ASMSTART3287; GFX90A-NEXT: ; def s[8:10]3288; GFX90A-NEXT: ;;#ASMEND3289; GFX90A-NEXT: ;;#ASMSTART3290; GFX90A-NEXT: ; def s[4:6]3291; GFX90A-NEXT: ;;#ASMEND3292; GFX90A-NEXT: s_mov_b32 s8, s93293; GFX90A-NEXT: s_mov_b32 s9, s63294; GFX90A-NEXT: ;;#ASMSTART3295; GFX90A-NEXT: ; use s[8:9]3296; GFX90A-NEXT: ;;#ASMEND3297; GFX90A-NEXT: s_setpc_b64 s[30:31]3298;3299; GFX942-LABEL: s_shuffle_v2i32_v3i32__4_2:3300; GFX942: ; %bb.0:3301; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3302; GFX942-NEXT: ;;#ASMSTART3303; GFX942-NEXT: ; def s[0:2]3304; GFX942-NEXT: ;;#ASMEND3305; GFX942-NEXT: ;;#ASMSTART3306; GFX942-NEXT: ; def s[4:6]3307; GFX942-NEXT: ;;#ASMEND3308; GFX942-NEXT: s_mov_b32 s8, s53309; GFX942-NEXT: s_mov_b32 s9, s23310; GFX942-NEXT: ;;#ASMSTART3311; GFX942-NEXT: ; use s[8:9]3312; GFX942-NEXT: ;;#ASMEND3313; GFX942-NEXT: s_setpc_b64 s[30:31]3314 %vec0 = call <3 x i32> asm "; def $0", "=s"()3315 %vec1 = call <3 x i32> asm "; def $0", "=s"()3316 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 2>3317 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)3318 ret void3319}3320 3321define void @s_shuffle_v2i32_v3i32__u_3() {3322; GFX9-LABEL: s_shuffle_v2i32_v3i32__u_3:3323; GFX9: ; %bb.0:3324; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3325; GFX9-NEXT: ;;#ASMSTART3326; GFX9-NEXT: ; use s[8:9]3327; GFX9-NEXT: ;;#ASMEND3328; GFX9-NEXT: s_setpc_b64 s[30:31]3329 %vec0 = call <3 x i32> asm "; def $0", "=s"()3330 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 poison, i32 3>3331 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)3332 ret void3333}3334 3335define void @s_shuffle_v2i32_v3i32__0_3() {3336; GFX900-LABEL: s_shuffle_v2i32_v3i32__0_3:3337; GFX900: ; %bb.0:3338; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3339; GFX900-NEXT: ;;#ASMSTART3340; GFX900-NEXT: ; def s[8:10]3341; GFX900-NEXT: ;;#ASMEND3342; GFX900-NEXT: ;;#ASMSTART3343; GFX900-NEXT: ; use s[8:9]3344; GFX900-NEXT: ;;#ASMEND3345; GFX900-NEXT: s_setpc_b64 s[30:31]3346;3347; GFX90A-LABEL: s_shuffle_v2i32_v3i32__0_3:3348; GFX90A: ; %bb.0:3349; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3350; GFX90A-NEXT: ;;#ASMSTART3351; GFX90A-NEXT: ; def s[8:10]3352; GFX90A-NEXT: ;;#ASMEND3353; GFX90A-NEXT: ;;#ASMSTART3354; GFX90A-NEXT: ; use s[8:9]3355; GFX90A-NEXT: ;;#ASMEND3356; GFX90A-NEXT: s_setpc_b64 s[30:31]3357;3358; GFX942-LABEL: s_shuffle_v2i32_v3i32__0_3:3359; GFX942: ; %bb.0:3360; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3361; GFX942-NEXT: ;;#ASMSTART3362; GFX942-NEXT: ; def s[8:10]3363; GFX942-NEXT: ;;#ASMEND3364; GFX942-NEXT: s_nop 03365; GFX942-NEXT: ;;#ASMSTART3366; GFX942-NEXT: ; use s[8:9]3367; GFX942-NEXT: ;;#ASMEND3368; GFX942-NEXT: s_setpc_b64 s[30:31]3369 %vec0 = call <3 x i32> asm "; def $0", "=s"()3370 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 0, i32 3>3371 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)3372 ret void3373}3374 3375define void @s_shuffle_v2i32_v3i32__1_3() {3376; GFX900-LABEL: s_shuffle_v2i32_v3i32__1_3:3377; GFX900: ; %bb.0:3378; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3379; GFX900-NEXT: ;;#ASMSTART3380; GFX900-NEXT: ; def s[4:6]3381; GFX900-NEXT: ;;#ASMEND3382; GFX900-NEXT: s_mov_b32 s8, s53383; GFX900-NEXT: ;;#ASMSTART3384; GFX900-NEXT: ; use s[8:9]3385; GFX900-NEXT: ;;#ASMEND3386; GFX900-NEXT: s_setpc_b64 s[30:31]3387;3388; GFX90A-LABEL: s_shuffle_v2i32_v3i32__1_3:3389; GFX90A: ; %bb.0:3390; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3391; GFX90A-NEXT: ;;#ASMSTART3392; GFX90A-NEXT: ; def s[4:6]3393; GFX90A-NEXT: ;;#ASMEND3394; GFX90A-NEXT: s_mov_b32 s8, s53395; GFX90A-NEXT: ;;#ASMSTART3396; GFX90A-NEXT: ; use s[8:9]3397; GFX90A-NEXT: ;;#ASMEND3398; GFX90A-NEXT: s_setpc_b64 s[30:31]3399;3400; GFX942-LABEL: s_shuffle_v2i32_v3i32__1_3:3401; GFX942: ; %bb.0:3402; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3403; GFX942-NEXT: ;;#ASMSTART3404; GFX942-NEXT: ; def s[0:2]3405; GFX942-NEXT: ;;#ASMEND3406; GFX942-NEXT: s_mov_b32 s8, s13407; GFX942-NEXT: ;;#ASMSTART3408; GFX942-NEXT: ; use s[8:9]3409; GFX942-NEXT: ;;#ASMEND3410; GFX942-NEXT: s_setpc_b64 s[30:31]3411 %vec0 = call <3 x i32> asm "; def $0", "=s"()3412 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 1, i32 3>3413 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)3414 ret void3415}3416 3417define void @s_shuffle_v2i32_v3i32__2_3() {3418; GFX900-LABEL: s_shuffle_v2i32_v3i32__2_3:3419; GFX900: ; %bb.0:3420; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3421; GFX900-NEXT: ;;#ASMSTART3422; GFX900-NEXT: ; def s[4:6]3423; GFX900-NEXT: ;;#ASMEND3424; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]3425; GFX900-NEXT: ;;#ASMSTART3426; GFX900-NEXT: ; use s[8:9]3427; GFX900-NEXT: ;;#ASMEND3428; GFX900-NEXT: s_setpc_b64 s[30:31]3429;3430; GFX90A-LABEL: s_shuffle_v2i32_v3i32__2_3:3431; GFX90A: ; %bb.0:3432; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3433; GFX90A-NEXT: ;;#ASMSTART3434; GFX90A-NEXT: ; def s[4:6]3435; GFX90A-NEXT: ;;#ASMEND3436; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]3437; GFX90A-NEXT: ;;#ASMSTART3438; GFX90A-NEXT: ; use s[8:9]3439; GFX90A-NEXT: ;;#ASMEND3440; GFX90A-NEXT: s_setpc_b64 s[30:31]3441;3442; GFX942-LABEL: s_shuffle_v2i32_v3i32__2_3:3443; GFX942: ; %bb.0:3444; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3445; GFX942-NEXT: ;;#ASMSTART3446; GFX942-NEXT: ; def s[0:2]3447; GFX942-NEXT: ;;#ASMEND3448; GFX942-NEXT: s_mov_b64 s[8:9], s[2:3]3449; GFX942-NEXT: ;;#ASMSTART3450; GFX942-NEXT: ; use s[8:9]3451; GFX942-NEXT: ;;#ASMEND3452; GFX942-NEXT: s_setpc_b64 s[30:31]3453 %vec0 = call <3 x i32> asm "; def $0", "=s"()3454 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 2, i32 3>3455 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)3456 ret void3457}3458 3459define void @s_shuffle_v2i32_v3i32__3_3() {3460; GFX9-LABEL: s_shuffle_v2i32_v3i32__3_3:3461; GFX9: ; %bb.0:3462; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3463; GFX9-NEXT: ;;#ASMSTART3464; GFX9-NEXT: ; use s[8:9]3465; GFX9-NEXT: ;;#ASMEND3466; GFX9-NEXT: s_setpc_b64 s[30:31]3467 %vec0 = call <3 x i32> asm "; def $0", "=s"()3468 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <2 x i32> <i32 3, i32 3>3469 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)3470 ret void3471}3472 3473define void @s_shuffle_v2i32_v3i32__4_3() {3474; GFX900-LABEL: s_shuffle_v2i32_v3i32__4_3:3475; GFX900: ; %bb.0:3476; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3477; GFX900-NEXT: ;;#ASMSTART3478; GFX900-NEXT: ; def s[4:6]3479; GFX900-NEXT: ;;#ASMEND3480; GFX900-NEXT: s_mov_b32 s8, s53481; GFX900-NEXT: s_mov_b32 s9, s43482; GFX900-NEXT: ;;#ASMSTART3483; GFX900-NEXT: ; use s[8:9]3484; GFX900-NEXT: ;;#ASMEND3485; GFX900-NEXT: s_setpc_b64 s[30:31]3486;3487; GFX90A-LABEL: s_shuffle_v2i32_v3i32__4_3:3488; GFX90A: ; %bb.0:3489; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3490; GFX90A-NEXT: ;;#ASMSTART3491; GFX90A-NEXT: ; def s[4:6]3492; GFX90A-NEXT: ;;#ASMEND3493; GFX90A-NEXT: s_mov_b32 s8, s53494; GFX90A-NEXT: s_mov_b32 s9, s43495; GFX90A-NEXT: ;;#ASMSTART3496; GFX90A-NEXT: ; use s[8:9]3497; GFX90A-NEXT: ;;#ASMEND3498; GFX90A-NEXT: s_setpc_b64 s[30:31]3499;3500; GFX942-LABEL: s_shuffle_v2i32_v3i32__4_3:3501; GFX942: ; %bb.0:3502; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3503; GFX942-NEXT: ;;#ASMSTART3504; GFX942-NEXT: ; def s[0:2]3505; GFX942-NEXT: ;;#ASMEND3506; GFX942-NEXT: s_mov_b32 s8, s13507; GFX942-NEXT: s_mov_b32 s9, s03508; GFX942-NEXT: ;;#ASMSTART3509; GFX942-NEXT: ; use s[8:9]3510; GFX942-NEXT: ;;#ASMEND3511; GFX942-NEXT: s_setpc_b64 s[30:31]3512 %vec0 = call <3 x i32> asm "; def $0", "=s"()3513 %vec1 = call <3 x i32> asm "; def $0", "=s"()3514 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 3>3515 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)3516 ret void3517}3518 3519define void @s_shuffle_v2i32_v3i32__u_4() {3520; GFX900-LABEL: s_shuffle_v2i32_v3i32__u_4:3521; GFX900: ; %bb.0:3522; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3523; GFX900-NEXT: ;;#ASMSTART3524; GFX900-NEXT: ; def s[8:10]3525; GFX900-NEXT: ;;#ASMEND3526; GFX900-NEXT: ;;#ASMSTART3527; GFX900-NEXT: ; use s[8:9]3528; GFX900-NEXT: ;;#ASMEND3529; GFX900-NEXT: s_setpc_b64 s[30:31]3530;3531; GFX90A-LABEL: s_shuffle_v2i32_v3i32__u_4:3532; GFX90A: ; %bb.0:3533; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3534; GFX90A-NEXT: ;;#ASMSTART3535; GFX90A-NEXT: ; def s[8:10]3536; GFX90A-NEXT: ;;#ASMEND3537; GFX90A-NEXT: ;;#ASMSTART3538; GFX90A-NEXT: ; use s[8:9]3539; GFX90A-NEXT: ;;#ASMEND3540; GFX90A-NEXT: s_setpc_b64 s[30:31]3541;3542; GFX942-LABEL: s_shuffle_v2i32_v3i32__u_4:3543; GFX942: ; %bb.0:3544; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3545; GFX942-NEXT: ;;#ASMSTART3546; GFX942-NEXT: ; def s[8:10]3547; GFX942-NEXT: ;;#ASMEND3548; GFX942-NEXT: s_nop 03549; GFX942-NEXT: ;;#ASMSTART3550; GFX942-NEXT: ; use s[8:9]3551; GFX942-NEXT: ;;#ASMEND3552; GFX942-NEXT: s_setpc_b64 s[30:31]3553 %vec0 = call <3 x i32> asm "; def $0", "=s"()3554 %vec1 = call <3 x i32> asm "; def $0", "=s"()3555 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 poison, i32 4>3556 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)3557 ret void3558}3559 3560define void @s_shuffle_v2i32_v3i32__0_4() {3561; GFX900-LABEL: s_shuffle_v2i32_v3i32__0_4:3562; GFX900: ; %bb.0:3563; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3564; GFX900-NEXT: ;;#ASMSTART3565; GFX900-NEXT: ; def s[8:10]3566; GFX900-NEXT: ;;#ASMEND3567; GFX900-NEXT: ;;#ASMSTART3568; GFX900-NEXT: ; def s[4:6]3569; GFX900-NEXT: ;;#ASMEND3570; GFX900-NEXT: s_mov_b32 s9, s53571; GFX900-NEXT: ;;#ASMSTART3572; GFX900-NEXT: ; use s[8:9]3573; GFX900-NEXT: ;;#ASMEND3574; GFX900-NEXT: s_setpc_b64 s[30:31]3575;3576; GFX90A-LABEL: s_shuffle_v2i32_v3i32__0_4:3577; GFX90A: ; %bb.0:3578; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3579; GFX90A-NEXT: ;;#ASMSTART3580; GFX90A-NEXT: ; def s[8:10]3581; GFX90A-NEXT: ;;#ASMEND3582; GFX90A-NEXT: ;;#ASMSTART3583; GFX90A-NEXT: ; def s[4:6]3584; GFX90A-NEXT: ;;#ASMEND3585; GFX90A-NEXT: s_mov_b32 s9, s53586; GFX90A-NEXT: ;;#ASMSTART3587; GFX90A-NEXT: ; use s[8:9]3588; GFX90A-NEXT: ;;#ASMEND3589; GFX90A-NEXT: s_setpc_b64 s[30:31]3590;3591; GFX942-LABEL: s_shuffle_v2i32_v3i32__0_4:3592; GFX942: ; %bb.0:3593; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3594; GFX942-NEXT: ;;#ASMSTART3595; GFX942-NEXT: ; def s[8:10]3596; GFX942-NEXT: ;;#ASMEND3597; GFX942-NEXT: ;;#ASMSTART3598; GFX942-NEXT: ; def s[0:2]3599; GFX942-NEXT: ;;#ASMEND3600; GFX942-NEXT: s_mov_b32 s9, s13601; GFX942-NEXT: ;;#ASMSTART3602; GFX942-NEXT: ; use s[8:9]3603; GFX942-NEXT: ;;#ASMEND3604; GFX942-NEXT: s_setpc_b64 s[30:31]3605 %vec0 = call <3 x i32> asm "; def $0", "=s"()3606 %vec1 = call <3 x i32> asm "; def $0", "=s"()3607 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 0, i32 4>3608 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)3609 ret void3610}3611 3612define void @s_shuffle_v2i32_v3i32__1_4() {3613; GFX900-LABEL: s_shuffle_v2i32_v3i32__1_4:3614; GFX900: ; %bb.0:3615; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3616; GFX900-NEXT: ;;#ASMSTART3617; GFX900-NEXT: ; def s[8:10]3618; GFX900-NEXT: ;;#ASMEND3619; GFX900-NEXT: ;;#ASMSTART3620; GFX900-NEXT: ; def s[4:6]3621; GFX900-NEXT: ;;#ASMEND3622; GFX900-NEXT: s_mov_b32 s8, s53623; GFX900-NEXT: ;;#ASMSTART3624; GFX900-NEXT: ; use s[8:9]3625; GFX900-NEXT: ;;#ASMEND3626; GFX900-NEXT: s_setpc_b64 s[30:31]3627;3628; GFX90A-LABEL: s_shuffle_v2i32_v3i32__1_4:3629; GFX90A: ; %bb.0:3630; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3631; GFX90A-NEXT: ;;#ASMSTART3632; GFX90A-NEXT: ; def s[8:10]3633; GFX90A-NEXT: ;;#ASMEND3634; GFX90A-NEXT: ;;#ASMSTART3635; GFX90A-NEXT: ; def s[4:6]3636; GFX90A-NEXT: ;;#ASMEND3637; GFX90A-NEXT: s_mov_b32 s8, s53638; GFX90A-NEXT: ;;#ASMSTART3639; GFX90A-NEXT: ; use s[8:9]3640; GFX90A-NEXT: ;;#ASMEND3641; GFX90A-NEXT: s_setpc_b64 s[30:31]3642;3643; GFX942-LABEL: s_shuffle_v2i32_v3i32__1_4:3644; GFX942: ; %bb.0:3645; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3646; GFX942-NEXT: ;;#ASMSTART3647; GFX942-NEXT: ; def s[8:10]3648; GFX942-NEXT: ;;#ASMEND3649; GFX942-NEXT: ;;#ASMSTART3650; GFX942-NEXT: ; def s[0:2]3651; GFX942-NEXT: ;;#ASMEND3652; GFX942-NEXT: s_mov_b32 s8, s13653; GFX942-NEXT: ;;#ASMSTART3654; GFX942-NEXT: ; use s[8:9]3655; GFX942-NEXT: ;;#ASMEND3656; GFX942-NEXT: s_setpc_b64 s[30:31]3657 %vec0 = call <3 x i32> asm "; def $0", "=s"()3658 %vec1 = call <3 x i32> asm "; def $0", "=s"()3659 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 1, i32 4>3660 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)3661 ret void3662}3663 3664define void @s_shuffle_v2i32_v3i32__2_4() {3665; GFX900-LABEL: s_shuffle_v2i32_v3i32__2_4:3666; GFX900: ; %bb.0:3667; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3668; GFX900-NEXT: ;;#ASMSTART3669; GFX900-NEXT: ; def s[8:10]3670; GFX900-NEXT: ;;#ASMEND3671; GFX900-NEXT: s_mov_b32 s7, s93672; GFX900-NEXT: ;;#ASMSTART3673; GFX900-NEXT: ; def s[4:6]3674; GFX900-NEXT: ;;#ASMEND3675; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]3676; GFX900-NEXT: ;;#ASMSTART3677; GFX900-NEXT: ; use s[8:9]3678; GFX900-NEXT: ;;#ASMEND3679; GFX900-NEXT: s_setpc_b64 s[30:31]3680;3681; GFX90A-LABEL: s_shuffle_v2i32_v3i32__2_4:3682; GFX90A: ; %bb.0:3683; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3684; GFX90A-NEXT: ;;#ASMSTART3685; GFX90A-NEXT: ; def s[8:10]3686; GFX90A-NEXT: ;;#ASMEND3687; GFX90A-NEXT: s_mov_b32 s7, s93688; GFX90A-NEXT: ;;#ASMSTART3689; GFX90A-NEXT: ; def s[4:6]3690; GFX90A-NEXT: ;;#ASMEND3691; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]3692; GFX90A-NEXT: ;;#ASMSTART3693; GFX90A-NEXT: ; use s[8:9]3694; GFX90A-NEXT: ;;#ASMEND3695; GFX90A-NEXT: s_setpc_b64 s[30:31]3696;3697; GFX942-LABEL: s_shuffle_v2i32_v3i32__2_4:3698; GFX942: ; %bb.0:3699; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3700; GFX942-NEXT: ;;#ASMSTART3701; GFX942-NEXT: ; def s[4:6]3702; GFX942-NEXT: ;;#ASMEND3703; GFX942-NEXT: s_mov_b32 s3, s53704; GFX942-NEXT: ;;#ASMSTART3705; GFX942-NEXT: ; def s[0:2]3706; GFX942-NEXT: ;;#ASMEND3707; GFX942-NEXT: s_mov_b64 s[8:9], s[2:3]3708; GFX942-NEXT: ;;#ASMSTART3709; GFX942-NEXT: ; use s[8:9]3710; GFX942-NEXT: ;;#ASMEND3711; GFX942-NEXT: s_setpc_b64 s[30:31]3712 %vec0 = call <3 x i32> asm "; def $0", "=s"()3713 %vec1 = call <3 x i32> asm "; def $0", "=s"()3714 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 2, i32 4>3715 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)3716 ret void3717}3718 3719define void @s_shuffle_v2i32_v3i32__3_4() {3720; GFX900-LABEL: s_shuffle_v2i32_v3i32__3_4:3721; GFX900: ; %bb.0:3722; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3723; GFX900-NEXT: ;;#ASMSTART3724; GFX900-NEXT: ; def s[8:10]3725; GFX900-NEXT: ;;#ASMEND3726; GFX900-NEXT: ;;#ASMSTART3727; GFX900-NEXT: ; use s[8:9]3728; GFX900-NEXT: ;;#ASMEND3729; GFX900-NEXT: s_setpc_b64 s[30:31]3730;3731; GFX90A-LABEL: s_shuffle_v2i32_v3i32__3_4:3732; GFX90A: ; %bb.0:3733; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3734; GFX90A-NEXT: ;;#ASMSTART3735; GFX90A-NEXT: ; def s[8:10]3736; GFX90A-NEXT: ;;#ASMEND3737; GFX90A-NEXT: ;;#ASMSTART3738; GFX90A-NEXT: ; use s[8:9]3739; GFX90A-NEXT: ;;#ASMEND3740; GFX90A-NEXT: s_setpc_b64 s[30:31]3741;3742; GFX942-LABEL: s_shuffle_v2i32_v3i32__3_4:3743; GFX942: ; %bb.0:3744; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3745; GFX942-NEXT: ;;#ASMSTART3746; GFX942-NEXT: ; def s[8:10]3747; GFX942-NEXT: ;;#ASMEND3748; GFX942-NEXT: s_nop 03749; GFX942-NEXT: ;;#ASMSTART3750; GFX942-NEXT: ; use s[8:9]3751; GFX942-NEXT: ;;#ASMEND3752; GFX942-NEXT: s_setpc_b64 s[30:31]3753 %vec0 = call <3 x i32> asm "; def $0", "=s"()3754 %vec1 = call <3 x i32> asm "; def $0", "=s"()3755 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 3, i32 4>3756 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)3757 ret void3758}3759 3760define void @s_shuffle_v2i32_v3i32__4_4() {3761; GFX9-LABEL: s_shuffle_v2i32_v3i32__4_4:3762; GFX9: ; %bb.0:3763; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3764; GFX9-NEXT: ;;#ASMSTART3765; GFX9-NEXT: ; def s[8:10]3766; GFX9-NEXT: ;;#ASMEND3767; GFX9-NEXT: s_mov_b32 s8, s93768; GFX9-NEXT: ;;#ASMSTART3769; GFX9-NEXT: ; use s[8:9]3770; GFX9-NEXT: ;;#ASMEND3771; GFX9-NEXT: s_setpc_b64 s[30:31]3772 %vec0 = call <3 x i32> asm "; def $0", "=s"()3773 %vec1 = call <3 x i32> asm "; def $0", "=s"()3774 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 4>3775 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)3776 ret void3777}3778 3779define void @s_shuffle_v2i32_v3i32__u_5() {3780; GFX900-LABEL: s_shuffle_v2i32_v3i32__u_5:3781; GFX900: ; %bb.0:3782; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3783; GFX900-NEXT: ;;#ASMSTART3784; GFX900-NEXT: ; def s[4:6]3785; GFX900-NEXT: ;;#ASMEND3786; GFX900-NEXT: s_mov_b32 s9, s63787; GFX900-NEXT: ;;#ASMSTART3788; GFX900-NEXT: ; use s[8:9]3789; GFX900-NEXT: ;;#ASMEND3790; GFX900-NEXT: s_setpc_b64 s[30:31]3791;3792; GFX90A-LABEL: s_shuffle_v2i32_v3i32__u_5:3793; GFX90A: ; %bb.0:3794; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3795; GFX90A-NEXT: ;;#ASMSTART3796; GFX90A-NEXT: ; def s[4:6]3797; GFX90A-NEXT: ;;#ASMEND3798; GFX90A-NEXT: s_mov_b32 s9, s63799; GFX90A-NEXT: ;;#ASMSTART3800; GFX90A-NEXT: ; use s[8:9]3801; GFX90A-NEXT: ;;#ASMEND3802; GFX90A-NEXT: s_setpc_b64 s[30:31]3803;3804; GFX942-LABEL: s_shuffle_v2i32_v3i32__u_5:3805; GFX942: ; %bb.0:3806; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3807; GFX942-NEXT: ;;#ASMSTART3808; GFX942-NEXT: ; def s[0:2]3809; GFX942-NEXT: ;;#ASMEND3810; GFX942-NEXT: s_mov_b32 s9, s23811; GFX942-NEXT: ;;#ASMSTART3812; GFX942-NEXT: ; use s[8:9]3813; GFX942-NEXT: ;;#ASMEND3814; GFX942-NEXT: s_setpc_b64 s[30:31]3815 %vec0 = call <3 x i32> asm "; def $0", "=s"()3816 %vec1 = call <3 x i32> asm "; def $0", "=s"()3817 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 poison, i32 5>3818 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)3819 ret void3820}3821 3822define void @s_shuffle_v2i32_v3i32__0_5() {3823; GFX900-LABEL: s_shuffle_v2i32_v3i32__0_5:3824; GFX900: ; %bb.0:3825; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3826; GFX900-NEXT: ;;#ASMSTART3827; GFX900-NEXT: ; def s[8:10]3828; GFX900-NEXT: ;;#ASMEND3829; GFX900-NEXT: ;;#ASMSTART3830; GFX900-NEXT: ; def s[4:6]3831; GFX900-NEXT: ;;#ASMEND3832; GFX900-NEXT: s_mov_b32 s9, s63833; GFX900-NEXT: ;;#ASMSTART3834; GFX900-NEXT: ; use s[8:9]3835; GFX900-NEXT: ;;#ASMEND3836; GFX900-NEXT: s_setpc_b64 s[30:31]3837;3838; GFX90A-LABEL: s_shuffle_v2i32_v3i32__0_5:3839; GFX90A: ; %bb.0:3840; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3841; GFX90A-NEXT: ;;#ASMSTART3842; GFX90A-NEXT: ; def s[8:10]3843; GFX90A-NEXT: ;;#ASMEND3844; GFX90A-NEXT: ;;#ASMSTART3845; GFX90A-NEXT: ; def s[4:6]3846; GFX90A-NEXT: ;;#ASMEND3847; GFX90A-NEXT: s_mov_b32 s9, s63848; GFX90A-NEXT: ;;#ASMSTART3849; GFX90A-NEXT: ; use s[8:9]3850; GFX90A-NEXT: ;;#ASMEND3851; GFX90A-NEXT: s_setpc_b64 s[30:31]3852;3853; GFX942-LABEL: s_shuffle_v2i32_v3i32__0_5:3854; GFX942: ; %bb.0:3855; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3856; GFX942-NEXT: ;;#ASMSTART3857; GFX942-NEXT: ; def s[8:10]3858; GFX942-NEXT: ;;#ASMEND3859; GFX942-NEXT: ;;#ASMSTART3860; GFX942-NEXT: ; def s[0:2]3861; GFX942-NEXT: ;;#ASMEND3862; GFX942-NEXT: s_mov_b32 s9, s23863; GFX942-NEXT: ;;#ASMSTART3864; GFX942-NEXT: ; use s[8:9]3865; GFX942-NEXT: ;;#ASMEND3866; GFX942-NEXT: s_setpc_b64 s[30:31]3867 %vec0 = call <3 x i32> asm "; def $0", "=s"()3868 %vec1 = call <3 x i32> asm "; def $0", "=s"()3869 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 0, i32 5>3870 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)3871 ret void3872}3873 3874define void @s_shuffle_v2i32_v3i32__1_5() {3875; GFX900-LABEL: s_shuffle_v2i32_v3i32__1_5:3876; GFX900: ; %bb.0:3877; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3878; GFX900-NEXT: ;;#ASMSTART3879; GFX900-NEXT: ; def s[8:10]3880; GFX900-NEXT: ;;#ASMEND3881; GFX900-NEXT: ;;#ASMSTART3882; GFX900-NEXT: ; def s[4:6]3883; GFX900-NEXT: ;;#ASMEND3884; GFX900-NEXT: s_mov_b32 s8, s53885; GFX900-NEXT: s_mov_b32 s9, s103886; GFX900-NEXT: ;;#ASMSTART3887; GFX900-NEXT: ; use s[8:9]3888; GFX900-NEXT: ;;#ASMEND3889; GFX900-NEXT: s_setpc_b64 s[30:31]3890;3891; GFX90A-LABEL: s_shuffle_v2i32_v3i32__1_5:3892; GFX90A: ; %bb.0:3893; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3894; GFX90A-NEXT: ;;#ASMSTART3895; GFX90A-NEXT: ; def s[8:10]3896; GFX90A-NEXT: ;;#ASMEND3897; GFX90A-NEXT: ;;#ASMSTART3898; GFX90A-NEXT: ; def s[4:6]3899; GFX90A-NEXT: ;;#ASMEND3900; GFX90A-NEXT: s_mov_b32 s8, s53901; GFX90A-NEXT: s_mov_b32 s9, s103902; GFX90A-NEXT: ;;#ASMSTART3903; GFX90A-NEXT: ; use s[8:9]3904; GFX90A-NEXT: ;;#ASMEND3905; GFX90A-NEXT: s_setpc_b64 s[30:31]3906;3907; GFX942-LABEL: s_shuffle_v2i32_v3i32__1_5:3908; GFX942: ; %bb.0:3909; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3910; GFX942-NEXT: ;;#ASMSTART3911; GFX942-NEXT: ; def s[0:2]3912; GFX942-NEXT: ;;#ASMEND3913; GFX942-NEXT: ;;#ASMSTART3914; GFX942-NEXT: ; def s[4:6]3915; GFX942-NEXT: ;;#ASMEND3916; GFX942-NEXT: s_mov_b32 s8, s13917; GFX942-NEXT: s_mov_b32 s9, s63918; GFX942-NEXT: ;;#ASMSTART3919; GFX942-NEXT: ; use s[8:9]3920; GFX942-NEXT: ;;#ASMEND3921; GFX942-NEXT: s_setpc_b64 s[30:31]3922 %vec0 = call <3 x i32> asm "; def $0", "=s"()3923 %vec1 = call <3 x i32> asm "; def $0", "=s"()3924 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 1, i32 5>3925 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)3926 ret void3927}3928 3929define void @s_shuffle_v2i32_v3i32__2_5() {3930; GFX900-LABEL: s_shuffle_v2i32_v3i32__2_5:3931; GFX900: ; %bb.0:3932; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3933; GFX900-NEXT: ;;#ASMSTART3934; GFX900-NEXT: ; def s[8:10]3935; GFX900-NEXT: ;;#ASMEND3936; GFX900-NEXT: s_mov_b32 s7, s103937; GFX900-NEXT: ;;#ASMSTART3938; GFX900-NEXT: ; def s[4:6]3939; GFX900-NEXT: ;;#ASMEND3940; GFX900-NEXT: s_mov_b64 s[8:9], s[6:7]3941; GFX900-NEXT: ;;#ASMSTART3942; GFX900-NEXT: ; use s[8:9]3943; GFX900-NEXT: ;;#ASMEND3944; GFX900-NEXT: s_setpc_b64 s[30:31]3945;3946; GFX90A-LABEL: s_shuffle_v2i32_v3i32__2_5:3947; GFX90A: ; %bb.0:3948; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3949; GFX90A-NEXT: ;;#ASMSTART3950; GFX90A-NEXT: ; def s[8:10]3951; GFX90A-NEXT: ;;#ASMEND3952; GFX90A-NEXT: s_mov_b32 s7, s103953; GFX90A-NEXT: ;;#ASMSTART3954; GFX90A-NEXT: ; def s[4:6]3955; GFX90A-NEXT: ;;#ASMEND3956; GFX90A-NEXT: s_mov_b64 s[8:9], s[6:7]3957; GFX90A-NEXT: ;;#ASMSTART3958; GFX90A-NEXT: ; use s[8:9]3959; GFX90A-NEXT: ;;#ASMEND3960; GFX90A-NEXT: s_setpc_b64 s[30:31]3961;3962; GFX942-LABEL: s_shuffle_v2i32_v3i32__2_5:3963; GFX942: ; %bb.0:3964; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3965; GFX942-NEXT: ;;#ASMSTART3966; GFX942-NEXT: ; def s[4:6]3967; GFX942-NEXT: ;;#ASMEND3968; GFX942-NEXT: s_mov_b32 s3, s63969; GFX942-NEXT: ;;#ASMSTART3970; GFX942-NEXT: ; def s[0:2]3971; GFX942-NEXT: ;;#ASMEND3972; GFX942-NEXT: s_mov_b64 s[8:9], s[2:3]3973; GFX942-NEXT: ;;#ASMSTART3974; GFX942-NEXT: ; use s[8:9]3975; GFX942-NEXT: ;;#ASMEND3976; GFX942-NEXT: s_setpc_b64 s[30:31]3977 %vec0 = call <3 x i32> asm "; def $0", "=s"()3978 %vec1 = call <3 x i32> asm "; def $0", "=s"()3979 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 2, i32 5>3980 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)3981 ret void3982}3983 3984define void @s_shuffle_v2i32_v3i32__3_5() {3985; GFX9-LABEL: s_shuffle_v2i32_v3i32__3_5:3986; GFX9: ; %bb.0:3987; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3988; GFX9-NEXT: ;;#ASMSTART3989; GFX9-NEXT: ; def s[8:10]3990; GFX9-NEXT: ;;#ASMEND3991; GFX9-NEXT: s_mov_b32 s9, s103992; GFX9-NEXT: ;;#ASMSTART3993; GFX9-NEXT: ; use s[8:9]3994; GFX9-NEXT: ;;#ASMEND3995; GFX9-NEXT: s_setpc_b64 s[30:31]3996 %vec0 = call <3 x i32> asm "; def $0", "=s"()3997 %vec1 = call <3 x i32> asm "; def $0", "=s"()3998 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 3, i32 5>3999 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)4000 ret void4001}4002 4003define void @s_shuffle_v2i32_v3i32__4_5() {4004; GFX900-LABEL: s_shuffle_v2i32_v3i32__4_5:4005; GFX900: ; %bb.0:4006; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4007; GFX900-NEXT: ;;#ASMSTART4008; GFX900-NEXT: ; def s[4:6]4009; GFX900-NEXT: ;;#ASMEND4010; GFX900-NEXT: s_mov_b32 s8, s54011; GFX900-NEXT: s_mov_b32 s9, s64012; GFX900-NEXT: ;;#ASMSTART4013; GFX900-NEXT: ; use s[8:9]4014; GFX900-NEXT: ;;#ASMEND4015; GFX900-NEXT: s_setpc_b64 s[30:31]4016;4017; GFX90A-LABEL: s_shuffle_v2i32_v3i32__4_5:4018; GFX90A: ; %bb.0:4019; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4020; GFX90A-NEXT: ;;#ASMSTART4021; GFX90A-NEXT: ; def s[4:6]4022; GFX90A-NEXT: ;;#ASMEND4023; GFX90A-NEXT: s_mov_b32 s8, s54024; GFX90A-NEXT: s_mov_b32 s9, s64025; GFX90A-NEXT: ;;#ASMSTART4026; GFX90A-NEXT: ; use s[8:9]4027; GFX90A-NEXT: ;;#ASMEND4028; GFX90A-NEXT: s_setpc_b64 s[30:31]4029;4030; GFX942-LABEL: s_shuffle_v2i32_v3i32__4_5:4031; GFX942: ; %bb.0:4032; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4033; GFX942-NEXT: ;;#ASMSTART4034; GFX942-NEXT: ; def s[0:2]4035; GFX942-NEXT: ;;#ASMEND4036; GFX942-NEXT: s_mov_b32 s8, s14037; GFX942-NEXT: s_mov_b32 s9, s24038; GFX942-NEXT: ;;#ASMSTART4039; GFX942-NEXT: ; use s[8:9]4040; GFX942-NEXT: ;;#ASMEND4041; GFX942-NEXT: s_setpc_b64 s[30:31]4042 %vec0 = call <3 x i32> asm "; def $0", "=s"()4043 %vec1 = call <3 x i32> asm "; def $0", "=s"()4044 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <2 x i32> <i32 4, i32 5>4045 call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)4046 ret void4047}4048;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:4049; GFX90APLUS: {{.*}}4050