8124 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_v3i32_v3i32__u_u_u(ptr addrspace(1) inreg %ptr) {8; GFX9-LABEL: v_shuffle_v3i32_v3i32__u_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, <3 x i32> poison14 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 1615 ret void16}17 18define void @v_shuffle_v3i32_v3i32__0_u_u(ptr addrspace(1) inreg %ptr) {19; GFX900-LABEL: v_shuffle_v3i32_v3i32__0_u_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_dwordx3 v3, v[0:2], 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_v3i32_v3i32__0_u_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_dwordx3 v3, v[0:2], 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_v3i32_v3i32__0_u_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_dwordx3 v3, v[0:2], 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, <3 x i32> <i32 0, i32 poison, i32 poison>53 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 1654 ret void55}56 57define void @v_shuffle_v3i32_v3i32__1_u_u(ptr addrspace(1) inreg %ptr) {58; GFX900-LABEL: v_shuffle_v3i32_v3i32__1_u_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_dwordx3 v3, v[1:3], 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_v3i32_v3i32__1_u_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_dwordx3 v3, v[0:2], 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_v3i32_v3i32__1_u_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_dwordx3 v3, v[0:2], 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, <3 x i32> <i32 1, i32 poison, i32 poison>94 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 1695 ret void96}97 98define void @v_shuffle_v3i32_v3i32__2_u_u(ptr addrspace(1) inreg %ptr) {99; GFX900-LABEL: v_shuffle_v3i32_v3i32__2_u_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_dwordx3 v3, v[2:4], 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_v3i32_v3i32__2_u_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_dwordx3 v3, v[2:4], 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_v3i32_v3i32__2_u_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_dwordx3 v3, v[2:4], 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, <3 x i32> <i32 2, i32 poison, i32 poison>133 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16134 ret void135}136 137define void @v_shuffle_v3i32_v3i32__3_u_u(ptr addrspace(1) inreg %ptr) {138; GFX9-LABEL: v_shuffle_v3i32_v3i32__3_u_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, <3 x i32> <i32 3, i32 poison, i32 poison>144 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16145 ret void146}147 148define void @v_shuffle_v3i32_v3i32__4_u_u(ptr addrspace(1) inreg %ptr) {149; GFX900-LABEL: v_shuffle_v3i32_v3i32__4_u_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_dwordx3 v3, v[1:3], 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_v3i32_v3i32__4_u_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_dwordx3 v3, v[0:2], 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_v3i32_v3i32__4_u_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_dwordx3 v3, v[0:2], 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, <3 x i32> <i32 4, i32 poison, i32 poison>186 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16187 ret void188}189 190define void @v_shuffle_v3i32_v3i32__5_u_u(ptr addrspace(1) inreg %ptr) {191; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_u_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_dwordx3 v3, v[2:4], 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_v3i32_v3i32__5_u_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_dwordx3 v3, v[2:4], 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_v3i32_v3i32__5_u_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_dwordx3 v3, v[2:4], 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, <3 x i32> <i32 5, i32 poison, i32 poison>226 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16227 ret void228}229 230define void @v_shuffle_v3i32_v3i32__5_0_u(ptr addrspace(1) inreg %ptr) {231; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_0_u: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_dwordx3 v6, v[2:4], 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_v3i32_v3i32__5_0_u: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_dwordx3 v7, v[2:4], 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_v3i32_v3i32__5_0_u: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_dwordx3 v7, v[2:4], 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, <3 x i32> <i32 5, i32 0, i32 poison>278 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16279 ret void280}281 282define void @v_shuffle_v3i32_v3i32__5_1_u(ptr addrspace(1) inreg %ptr) {283; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_1_u: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_dwordx3 v5, v[2:4], 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_v3i32_v3i32__5_1_u: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_dwordx3 v5, v[2:4], 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_v3i32_v3i32__5_1_u: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_dwordx3 v5, v[2:4], 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, <3 x i32> <i32 5, i32 1, i32 poison>328 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16329 ret void330}331 332define void @v_shuffle_v3i32_v3i32__5_2_u(ptr addrspace(1) inreg %ptr) {333; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_2_u: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_dwordx3 v4, v[2:4], 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_v3i32_v3i32__5_2_u: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_dwordx3 v5, v[2:4], 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_v3i32_v3i32__5_2_u: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_dwordx3 v5, v[2:4], 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, <3 x i32> <i32 5, i32 2, i32 poison>379 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16380 ret void381}382 383define void @v_shuffle_v3i32_v3i32__5_3_u(ptr addrspace(1) inreg %ptr) {384; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_3_u: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_dwordx3 v4, v[2:4], 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_v3i32_v3i32__5_3_u: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_dwordx3 v4, v[2:4], 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_v3i32_v3i32__5_3_u: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_dwordx3 v4, v[2:4], 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, <3 x i32> <i32 5, i32 3, i32 poison>423 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16424 ret void425}426 427define void @v_shuffle_v3i32_v3i32__5_4_u(ptr addrspace(1) inreg %ptr) {428; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_4_u: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_dwordx3 v4, v[2:4], 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_v3i32_v3i32__5_4_u: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_dwordx3 v4, v[2:4], 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_v3i32_v3i32__5_4_u: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_dwordx3 v4, v[2:4], 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, <3 x i32> <i32 5, i32 4, i32 poison>467 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16468 ret void469}470 471define void @v_shuffle_v3i32_v3i32__5_5_u(ptr addrspace(1) inreg %ptr) {472; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_5_u: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_dwordx3 v4, v[2:4], 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_v3i32_v3i32__5_5_u: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_dwordx3 v4, v[2:4], 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_v3i32_v3i32__5_5_u: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_dwordx3 v4, v[2:4], 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, <3 x i32> <i32 5, i32 5, i32 poison>511 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16512 ret void513}514 515define void @v_shuffle_v3i32_v3i32__5_5_0(ptr addrspace(1) inreg %ptr) {516; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_5_0:517; GFX900: ; %bb.0:518; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)519; GFX900-NEXT: v_mov_b32_e32 v7, 0520; GFX900-NEXT: ;;#ASMSTART521; GFX900-NEXT: ; def v[0:2]522; GFX900-NEXT: ;;#ASMEND523; GFX900-NEXT: v_mov_b32_e32 v3, v2524; GFX900-NEXT: ;;#ASMSTART525; GFX900-NEXT: ; def v[4:6]526; GFX900-NEXT: ;;#ASMEND527; GFX900-NEXT: global_store_dwordx3 v7, v[2:4], s[16:17]528; GFX900-NEXT: s_waitcnt vmcnt(0)529; GFX900-NEXT: s_setpc_b64 s[30:31]530;531; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_5_0:532; GFX90A: ; %bb.0:533; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)534; GFX90A-NEXT: v_mov_b32_e32 v7, 0535; GFX90A-NEXT: ;;#ASMSTART536; GFX90A-NEXT: ; def v[0:2]537; GFX90A-NEXT: ;;#ASMEND538; GFX90A-NEXT: v_mov_b32_e32 v3, v2539; GFX90A-NEXT: ;;#ASMSTART540; GFX90A-NEXT: ; def v[4:6]541; GFX90A-NEXT: ;;#ASMEND542; GFX90A-NEXT: global_store_dwordx3 v7, v[2:4], s[16:17]543; GFX90A-NEXT: s_waitcnt vmcnt(0)544; GFX90A-NEXT: s_setpc_b64 s[30:31]545;546; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_5_0:547; GFX942: ; %bb.0:548; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)549; GFX942-NEXT: v_mov_b32_e32 v7, 0550; GFX942-NEXT: ;;#ASMSTART551; GFX942-NEXT: ; def v[0:2]552; GFX942-NEXT: ;;#ASMEND553; GFX942-NEXT: ;;#ASMSTART554; GFX942-NEXT: ; def v[4:6]555; GFX942-NEXT: ;;#ASMEND556; GFX942-NEXT: s_nop 0557; GFX942-NEXT: v_mov_b32_e32 v3, v2558; GFX942-NEXT: global_store_dwordx3 v7, v[2:4], s[0:1]559; GFX942-NEXT: s_waitcnt vmcnt(0)560; GFX942-NEXT: s_setpc_b64 s[30:31]561 %vec0 = call <3 x i32> asm "; def $0", "=v"()562 %vec1 = call <3 x i32> asm "; def $0", "=v"()563 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 0>564 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16565 ret void566}567 568define void @v_shuffle_v3i32_v3i32__5_5_1(ptr addrspace(1) inreg %ptr) {569; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_5_1:570; GFX900: ; %bb.0:571; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)572; GFX900-NEXT: ;;#ASMSTART573; GFX900-NEXT: ; def v[3:5]574; GFX900-NEXT: ;;#ASMEND575; GFX900-NEXT: v_mov_b32_e32 v6, 0576; GFX900-NEXT: ;;#ASMSTART577; GFX900-NEXT: ; def v[0:2]578; GFX900-NEXT: ;;#ASMEND579; GFX900-NEXT: v_mov_b32_e32 v3, v2580; GFX900-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]581; GFX900-NEXT: s_waitcnt vmcnt(0)582; GFX900-NEXT: s_setpc_b64 s[30:31]583;584; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_5_1:585; GFX90A: ; %bb.0:586; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)587; GFX90A-NEXT: ;;#ASMSTART588; GFX90A-NEXT: ; def v[4:6]589; GFX90A-NEXT: ;;#ASMEND590; GFX90A-NEXT: v_mov_b32_e32 v7, 0591; GFX90A-NEXT: ;;#ASMSTART592; GFX90A-NEXT: ; def v[0:2]593; GFX90A-NEXT: ;;#ASMEND594; GFX90A-NEXT: v_mov_b32_e32 v3, v2595; GFX90A-NEXT: v_mov_b32_e32 v4, v5596; GFX90A-NEXT: global_store_dwordx3 v7, v[2:4], s[16:17]597; GFX90A-NEXT: s_waitcnt vmcnt(0)598; GFX90A-NEXT: s_setpc_b64 s[30:31]599;600; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_5_1:601; GFX942: ; %bb.0:602; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)603; GFX942-NEXT: ;;#ASMSTART604; GFX942-NEXT: ; def v[4:6]605; GFX942-NEXT: ;;#ASMEND606; GFX942-NEXT: v_mov_b32_e32 v7, 0607; GFX942-NEXT: ;;#ASMSTART608; GFX942-NEXT: ; def v[0:2]609; GFX942-NEXT: ;;#ASMEND610; GFX942-NEXT: v_mov_b32_e32 v4, v5611; GFX942-NEXT: v_mov_b32_e32 v3, v2612; GFX942-NEXT: global_store_dwordx3 v7, v[2:4], s[0:1]613; GFX942-NEXT: s_waitcnt vmcnt(0)614; GFX942-NEXT: s_setpc_b64 s[30:31]615 %vec0 = call <3 x i32> asm "; def $0", "=v"()616 %vec1 = call <3 x i32> asm "; def $0", "=v"()617 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 1>618 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16619 ret void620}621 622define void @v_shuffle_v3i32_v3i32__5_5_2(ptr addrspace(1) inreg %ptr) {623; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_5_2:624; GFX900: ; %bb.0:625; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)626; GFX900-NEXT: ;;#ASMSTART627; GFX900-NEXT: ; def v[2:4]628; GFX900-NEXT: ;;#ASMEND629; GFX900-NEXT: v_mov_b32_e32 v5, 0630; GFX900-NEXT: ;;#ASMSTART631; GFX900-NEXT: ; def v[0:2]632; GFX900-NEXT: ;;#ASMEND633; GFX900-NEXT: v_mov_b32_e32 v3, v2634; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]635; GFX900-NEXT: s_waitcnt vmcnt(0)636; GFX900-NEXT: s_setpc_b64 s[30:31]637;638; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_5_2:639; GFX90A: ; %bb.0:640; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)641; GFX90A-NEXT: ;;#ASMSTART642; GFX90A-NEXT: ; def v[2:4]643; GFX90A-NEXT: ;;#ASMEND644; GFX90A-NEXT: v_mov_b32_e32 v5, 0645; GFX90A-NEXT: ;;#ASMSTART646; GFX90A-NEXT: ; def v[0:2]647; GFX90A-NEXT: ;;#ASMEND648; GFX90A-NEXT: v_mov_b32_e32 v3, v2649; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]650; GFX90A-NEXT: s_waitcnt vmcnt(0)651; GFX90A-NEXT: s_setpc_b64 s[30:31]652;653; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_5_2:654; GFX942: ; %bb.0:655; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)656; GFX942-NEXT: ;;#ASMSTART657; GFX942-NEXT: ; def v[2:4]658; GFX942-NEXT: ;;#ASMEND659; GFX942-NEXT: v_mov_b32_e32 v5, 0660; GFX942-NEXT: ;;#ASMSTART661; GFX942-NEXT: ; def v[0:2]662; GFX942-NEXT: ;;#ASMEND663; GFX942-NEXT: s_nop 0664; GFX942-NEXT: v_mov_b32_e32 v3, v2665; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]666; GFX942-NEXT: s_waitcnt vmcnt(0)667; GFX942-NEXT: s_setpc_b64 s[30:31]668 %vec0 = call <3 x i32> asm "; def $0", "=v"()669 %vec1 = call <3 x i32> asm "; def $0", "=v"()670 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 2>671 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16672 ret void673}674 675define void @v_shuffle_v3i32_v3i32__5_5_3(ptr addrspace(1) inreg %ptr) {676; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_5_3:677; GFX900: ; %bb.0:678; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)679; GFX900-NEXT: v_mov_b32_e32 v5, 0680; GFX900-NEXT: ;;#ASMSTART681; GFX900-NEXT: ; def v[0:2]682; GFX900-NEXT: ;;#ASMEND683; GFX900-NEXT: v_mov_b32_e32 v3, v2684; GFX900-NEXT: v_mov_b32_e32 v4, v0685; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]686; GFX900-NEXT: s_waitcnt vmcnt(0)687; GFX900-NEXT: s_setpc_b64 s[30:31]688;689; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_5_3:690; GFX90A: ; %bb.0:691; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)692; GFX90A-NEXT: v_mov_b32_e32 v5, 0693; GFX90A-NEXT: ;;#ASMSTART694; GFX90A-NEXT: ; def v[0:2]695; GFX90A-NEXT: ;;#ASMEND696; GFX90A-NEXT: v_mov_b32_e32 v3, v2697; GFX90A-NEXT: v_mov_b32_e32 v4, v0698; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]699; GFX90A-NEXT: s_waitcnt vmcnt(0)700; GFX90A-NEXT: s_setpc_b64 s[30:31]701;702; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_5_3:703; GFX942: ; %bb.0:704; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)705; GFX942-NEXT: v_mov_b32_e32 v5, 0706; GFX942-NEXT: ;;#ASMSTART707; GFX942-NEXT: ; def v[0:2]708; GFX942-NEXT: ;;#ASMEND709; GFX942-NEXT: s_nop 0710; GFX942-NEXT: v_mov_b32_e32 v3, v2711; GFX942-NEXT: v_mov_b32_e32 v4, v0712; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]713; GFX942-NEXT: s_waitcnt vmcnt(0)714; GFX942-NEXT: s_setpc_b64 s[30:31]715 %vec0 = call <3 x i32> asm "; def $0", "=v"()716 %vec1 = call <3 x i32> asm "; def $0", "=v"()717 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 3>718 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16719 ret void720}721 722define void @v_shuffle_v3i32_v3i32__5_5_4(ptr addrspace(1) inreg %ptr) {723; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_5_4:724; GFX900: ; %bb.0:725; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)726; GFX900-NEXT: v_mov_b32_e32 v5, 0727; GFX900-NEXT: ;;#ASMSTART728; GFX900-NEXT: ; def v[0:2]729; GFX900-NEXT: ;;#ASMEND730; GFX900-NEXT: v_mov_b32_e32 v3, v2731; GFX900-NEXT: v_mov_b32_e32 v4, v1732; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]733; GFX900-NEXT: s_waitcnt vmcnt(0)734; GFX900-NEXT: s_setpc_b64 s[30:31]735;736; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_5_4:737; GFX90A: ; %bb.0:738; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)739; GFX90A-NEXT: v_mov_b32_e32 v5, 0740; GFX90A-NEXT: ;;#ASMSTART741; GFX90A-NEXT: ; def v[0:2]742; GFX90A-NEXT: ;;#ASMEND743; GFX90A-NEXT: v_mov_b32_e32 v3, v2744; GFX90A-NEXT: v_mov_b32_e32 v4, v1745; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]746; GFX90A-NEXT: s_waitcnt vmcnt(0)747; GFX90A-NEXT: s_setpc_b64 s[30:31]748;749; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_5_4:750; GFX942: ; %bb.0:751; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)752; GFX942-NEXT: v_mov_b32_e32 v5, 0753; GFX942-NEXT: ;;#ASMSTART754; GFX942-NEXT: ; def v[0:2]755; GFX942-NEXT: ;;#ASMEND756; GFX942-NEXT: s_nop 0757; GFX942-NEXT: v_mov_b32_e32 v3, v2758; GFX942-NEXT: v_mov_b32_e32 v4, v1759; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]760; GFX942-NEXT: s_waitcnt vmcnt(0)761; GFX942-NEXT: s_setpc_b64 s[30:31]762 %vec0 = call <3 x i32> asm "; def $0", "=v"()763 %vec1 = call <3 x i32> asm "; def $0", "=v"()764 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 4>765 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16766 ret void767}768 769define void @v_shuffle_v3i32_v3i32__5_5_5(ptr addrspace(1) inreg %ptr) {770; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_5_5:771; GFX900: ; %bb.0:772; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)773; GFX900-NEXT: v_mov_b32_e32 v5, 0774; GFX900-NEXT: ;;#ASMSTART775; GFX900-NEXT: ; def v[0:2]776; GFX900-NEXT: ;;#ASMEND777; GFX900-NEXT: v_mov_b32_e32 v3, v2778; GFX900-NEXT: v_mov_b32_e32 v4, v2779; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]780; GFX900-NEXT: s_waitcnt vmcnt(0)781; GFX900-NEXT: s_setpc_b64 s[30:31]782;783; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_5_5:784; GFX90A: ; %bb.0:785; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)786; GFX90A-NEXT: v_mov_b32_e32 v5, 0787; GFX90A-NEXT: ;;#ASMSTART788; GFX90A-NEXT: ; def v[0:2]789; GFX90A-NEXT: ;;#ASMEND790; GFX90A-NEXT: v_mov_b32_e32 v3, v2791; GFX90A-NEXT: v_mov_b32_e32 v4, v2792; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]793; GFX90A-NEXT: s_waitcnt vmcnt(0)794; GFX90A-NEXT: s_setpc_b64 s[30:31]795;796; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_5_5:797; GFX942: ; %bb.0:798; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)799; GFX942-NEXT: v_mov_b32_e32 v5, 0800; GFX942-NEXT: ;;#ASMSTART801; GFX942-NEXT: ; def v[0:2]802; GFX942-NEXT: ;;#ASMEND803; GFX942-NEXT: s_nop 0804; GFX942-NEXT: v_mov_b32_e32 v3, v2805; GFX942-NEXT: v_mov_b32_e32 v4, v2806; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]807; GFX942-NEXT: s_waitcnt vmcnt(0)808; GFX942-NEXT: s_setpc_b64 s[30:31]809 %vec0 = call <3 x i32> asm "; def $0", "=v"()810 %vec1 = call <3 x i32> asm "; def $0", "=v"()811 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 5>812 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16813 ret void814}815 816define void @v_shuffle_v3i32_v3i32__u_0_0(ptr addrspace(1) inreg %ptr) {817; GFX900-LABEL: v_shuffle_v3i32_v3i32__u_0_0:818; GFX900: ; %bb.0:819; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)820; GFX900-NEXT: ;;#ASMSTART821; GFX900-NEXT: ; def v[1:3]822; GFX900-NEXT: ;;#ASMEND823; GFX900-NEXT: v_mov_b32_e32 v0, 0824; GFX900-NEXT: v_mov_b32_e32 v2, v1825; GFX900-NEXT: global_store_dwordx3 v0, v[0:2], s[16:17]826; GFX900-NEXT: s_waitcnt vmcnt(0)827; GFX900-NEXT: s_setpc_b64 s[30:31]828;829; GFX90A-LABEL: v_shuffle_v3i32_v3i32__u_0_0:830; GFX90A: ; %bb.0:831; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)832; GFX90A-NEXT: v_mov_b32_e32 v0, 0833; GFX90A-NEXT: ;;#ASMSTART834; GFX90A-NEXT: ; def v[2:4]835; GFX90A-NEXT: ;;#ASMEND836; GFX90A-NEXT: v_mov_b32_e32 v1, v2837; GFX90A-NEXT: global_store_dwordx3 v0, v[0:2], s[16:17]838; GFX90A-NEXT: s_waitcnt vmcnt(0)839; GFX90A-NEXT: s_setpc_b64 s[30:31]840;841; GFX942-LABEL: v_shuffle_v3i32_v3i32__u_0_0:842; GFX942: ; %bb.0:843; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)844; GFX942-NEXT: v_mov_b32_e32 v0, 0845; GFX942-NEXT: ;;#ASMSTART846; GFX942-NEXT: ; def v[2:4]847; GFX942-NEXT: ;;#ASMEND848; GFX942-NEXT: s_nop 0849; GFX942-NEXT: v_mov_b32_e32 v1, v2850; GFX942-NEXT: global_store_dwordx3 v0, v[0:2], s[0:1]851; GFX942-NEXT: s_waitcnt vmcnt(0)852; GFX942-NEXT: s_setpc_b64 s[30:31]853 %vec0 = call <3 x i32> asm "; def $0", "=v"()854 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 poison, i32 0, i32 0>855 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16856 ret void857}858 859define void @v_shuffle_v3i32_v3i32__0_0_0(ptr addrspace(1) inreg %ptr) {860; GFX900-LABEL: v_shuffle_v3i32_v3i32__0_0_0:861; GFX900: ; %bb.0:862; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)863; GFX900-NEXT: ;;#ASMSTART864; GFX900-NEXT: ; def v[0:2]865; GFX900-NEXT: ;;#ASMEND866; GFX900-NEXT: v_mov_b32_e32 v3, 0867; GFX900-NEXT: v_mov_b32_e32 v1, v0868; GFX900-NEXT: v_mov_b32_e32 v2, v0869; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17]870; GFX900-NEXT: s_waitcnt vmcnt(0)871; GFX900-NEXT: s_setpc_b64 s[30:31]872;873; GFX90A-LABEL: v_shuffle_v3i32_v3i32__0_0_0:874; GFX90A: ; %bb.0:875; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)876; GFX90A-NEXT: ;;#ASMSTART877; GFX90A-NEXT: ; def v[0:2]878; GFX90A-NEXT: ;;#ASMEND879; GFX90A-NEXT: v_mov_b32_e32 v3, 0880; GFX90A-NEXT: v_mov_b32_e32 v1, v0881; GFX90A-NEXT: v_mov_b32_e32 v2, v0882; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17]883; GFX90A-NEXT: s_waitcnt vmcnt(0)884; GFX90A-NEXT: s_setpc_b64 s[30:31]885;886; GFX942-LABEL: v_shuffle_v3i32_v3i32__0_0_0:887; GFX942: ; %bb.0:888; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)889; GFX942-NEXT: ;;#ASMSTART890; GFX942-NEXT: ; def v[0:2]891; GFX942-NEXT: ;;#ASMEND892; GFX942-NEXT: v_mov_b32_e32 v3, 0893; GFX942-NEXT: v_mov_b32_e32 v1, v0894; GFX942-NEXT: v_mov_b32_e32 v2, v0895; GFX942-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1]896; GFX942-NEXT: s_waitcnt vmcnt(0)897; GFX942-NEXT: s_setpc_b64 s[30:31]898 %vec0 = call <3 x i32> asm "; def $0", "=v"()899 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> zeroinitializer900 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16901 ret void902}903 904define void @v_shuffle_v3i32_v3i32__1_0_0(ptr addrspace(1) inreg %ptr) {905; GFX900-LABEL: v_shuffle_v3i32_v3i32__1_0_0:906; GFX900: ; %bb.0:907; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)908; GFX900-NEXT: ;;#ASMSTART909; GFX900-NEXT: ; def v[0:2]910; GFX900-NEXT: ;;#ASMEND911; GFX900-NEXT: v_mov_b32_e32 v4, 0912; GFX900-NEXT: v_mov_b32_e32 v2, v0913; GFX900-NEXT: v_mov_b32_e32 v3, v0914; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]915; GFX900-NEXT: s_waitcnt vmcnt(0)916; GFX900-NEXT: s_setpc_b64 s[30:31]917;918; GFX90A-LABEL: v_shuffle_v3i32_v3i32__1_0_0:919; GFX90A: ; %bb.0:920; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)921; GFX90A-NEXT: v_mov_b32_e32 v5, 0922; GFX90A-NEXT: ;;#ASMSTART923; GFX90A-NEXT: ; def v[2:4]924; GFX90A-NEXT: ;;#ASMEND925; GFX90A-NEXT: v_mov_b32_e32 v0, v3926; GFX90A-NEXT: v_mov_b32_e32 v1, v2927; GFX90A-NEXT: global_store_dwordx3 v5, v[0:2], s[16:17]928; GFX90A-NEXT: s_waitcnt vmcnt(0)929; GFX90A-NEXT: s_setpc_b64 s[30:31]930;931; GFX942-LABEL: v_shuffle_v3i32_v3i32__1_0_0:932; GFX942: ; %bb.0:933; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)934; GFX942-NEXT: v_mov_b32_e32 v5, 0935; GFX942-NEXT: ;;#ASMSTART936; GFX942-NEXT: ; def v[2:4]937; GFX942-NEXT: ;;#ASMEND938; GFX942-NEXT: s_nop 0939; GFX942-NEXT: v_mov_b32_e32 v0, v3940; GFX942-NEXT: v_mov_b32_e32 v1, v2941; GFX942-NEXT: global_store_dwordx3 v5, v[0:2], s[0:1]942; GFX942-NEXT: s_waitcnt vmcnt(0)943; GFX942-NEXT: s_setpc_b64 s[30:31]944 %vec0 = call <3 x i32> asm "; def $0", "=v"()945 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 1, i32 0, i32 0>946 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16947 ret void948}949 950define void @v_shuffle_v3i32_v3i32__2_0_0(ptr addrspace(1) inreg %ptr) {951; GFX900-LABEL: v_shuffle_v3i32_v3i32__2_0_0:952; GFX900: ; %bb.0:953; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)954; GFX900-NEXT: v_mov_b32_e32 v5, 0955; GFX900-NEXT: ;;#ASMSTART956; GFX900-NEXT: ; def v[0:2]957; GFX900-NEXT: ;;#ASMEND958; GFX900-NEXT: v_mov_b32_e32 v3, v0959; GFX900-NEXT: v_mov_b32_e32 v4, v0960; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]961; GFX900-NEXT: s_waitcnt vmcnt(0)962; GFX900-NEXT: s_setpc_b64 s[30:31]963;964; GFX90A-LABEL: v_shuffle_v3i32_v3i32__2_0_0:965; GFX90A: ; %bb.0:966; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)967; GFX90A-NEXT: v_mov_b32_e32 v5, 0968; GFX90A-NEXT: ;;#ASMSTART969; GFX90A-NEXT: ; def v[0:2]970; GFX90A-NEXT: ;;#ASMEND971; GFX90A-NEXT: v_mov_b32_e32 v3, v0972; GFX90A-NEXT: v_mov_b32_e32 v4, v0973; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]974; GFX90A-NEXT: s_waitcnt vmcnt(0)975; GFX90A-NEXT: s_setpc_b64 s[30:31]976;977; GFX942-LABEL: v_shuffle_v3i32_v3i32__2_0_0:978; GFX942: ; %bb.0:979; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)980; GFX942-NEXT: v_mov_b32_e32 v5, 0981; GFX942-NEXT: ;;#ASMSTART982; GFX942-NEXT: ; def v[0:2]983; GFX942-NEXT: ;;#ASMEND984; GFX942-NEXT: s_nop 0985; GFX942-NEXT: v_mov_b32_e32 v3, v0986; GFX942-NEXT: v_mov_b32_e32 v4, v0987; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]988; GFX942-NEXT: s_waitcnt vmcnt(0)989; GFX942-NEXT: s_setpc_b64 s[30:31]990 %vec0 = call <3 x i32> asm "; def $0", "=v"()991 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 2, i32 0, i32 0>992 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16993 ret void994}995 996define void @v_shuffle_v3i32_v3i32__3_0_0(ptr addrspace(1) inreg %ptr) {997; GFX900-LABEL: v_shuffle_v3i32_v3i32__3_0_0:998; GFX900: ; %bb.0:999; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1000; GFX900-NEXT: ;;#ASMSTART1001; GFX900-NEXT: ; def v[1:3]1002; GFX900-NEXT: ;;#ASMEND1003; GFX900-NEXT: v_mov_b32_e32 v0, 01004; GFX900-NEXT: v_mov_b32_e32 v2, v11005; GFX900-NEXT: global_store_dwordx3 v0, v[0:2], s[16:17]1006; GFX900-NEXT: s_waitcnt vmcnt(0)1007; GFX900-NEXT: s_setpc_b64 s[30:31]1008;1009; GFX90A-LABEL: v_shuffle_v3i32_v3i32__3_0_0:1010; GFX90A: ; %bb.0:1011; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1012; GFX90A-NEXT: v_mov_b32_e32 v0, 01013; GFX90A-NEXT: ;;#ASMSTART1014; GFX90A-NEXT: ; def v[2:4]1015; GFX90A-NEXT: ;;#ASMEND1016; GFX90A-NEXT: v_mov_b32_e32 v1, v21017; GFX90A-NEXT: global_store_dwordx3 v0, v[0:2], s[16:17]1018; GFX90A-NEXT: s_waitcnt vmcnt(0)1019; GFX90A-NEXT: s_setpc_b64 s[30:31]1020;1021; GFX942-LABEL: v_shuffle_v3i32_v3i32__3_0_0:1022; GFX942: ; %bb.0:1023; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1024; GFX942-NEXT: v_mov_b32_e32 v0, 01025; GFX942-NEXT: ;;#ASMSTART1026; GFX942-NEXT: ; def v[2:4]1027; GFX942-NEXT: ;;#ASMEND1028; GFX942-NEXT: s_nop 01029; GFX942-NEXT: v_mov_b32_e32 v1, v21030; GFX942-NEXT: global_store_dwordx3 v0, v[0:2], s[0:1]1031; GFX942-NEXT: s_waitcnt vmcnt(0)1032; GFX942-NEXT: s_setpc_b64 s[30:31]1033 %vec0 = call <3 x i32> asm "; def $0", "=v"()1034 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 3, i32 0, i32 0>1035 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161036 ret void1037}1038 1039define void @v_shuffle_v3i32_v3i32__4_0_0(ptr addrspace(1) inreg %ptr) {1040; GFX900-LABEL: v_shuffle_v3i32_v3i32__4_0_0:1041; GFX900: ; %bb.0:1042; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1043; GFX900-NEXT: ;;#ASMSTART1044; GFX900-NEXT: ; def v[0:2]1045; GFX900-NEXT: ;;#ASMEND1046; GFX900-NEXT: v_mov_b32_e32 v6, 01047; GFX900-NEXT: ;;#ASMSTART1048; GFX900-NEXT: ; def v[3:5]1049; GFX900-NEXT: ;;#ASMEND1050; GFX900-NEXT: v_mov_b32_e32 v2, v31051; GFX900-NEXT: global_store_dwordx3 v6, v[1:3], s[16:17]1052; GFX900-NEXT: s_waitcnt vmcnt(0)1053; GFX900-NEXT: s_setpc_b64 s[30:31]1054;1055; GFX90A-LABEL: v_shuffle_v3i32_v3i32__4_0_0:1056; GFX90A: ; %bb.0:1057; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1058; GFX90A-NEXT: ;;#ASMSTART1059; GFX90A-NEXT: ; def v[2:4]1060; GFX90A-NEXT: ;;#ASMEND1061; GFX90A-NEXT: v_mov_b32_e32 v7, 01062; GFX90A-NEXT: ;;#ASMSTART1063; GFX90A-NEXT: ; def v[4:6]1064; GFX90A-NEXT: ;;#ASMEND1065; GFX90A-NEXT: v_mov_b32_e32 v0, v51066; GFX90A-NEXT: v_mov_b32_e32 v1, v21067; GFX90A-NEXT: global_store_dwordx3 v7, v[0:2], s[16:17]1068; GFX90A-NEXT: s_waitcnt vmcnt(0)1069; GFX90A-NEXT: s_setpc_b64 s[30:31]1070;1071; GFX942-LABEL: v_shuffle_v3i32_v3i32__4_0_0:1072; GFX942: ; %bb.0:1073; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1074; GFX942-NEXT: ;;#ASMSTART1075; GFX942-NEXT: ; def v[2:4]1076; GFX942-NEXT: ;;#ASMEND1077; GFX942-NEXT: v_mov_b32_e32 v7, 01078; GFX942-NEXT: ;;#ASMSTART1079; GFX942-NEXT: ; def v[4:6]1080; GFX942-NEXT: ;;#ASMEND1081; GFX942-NEXT: v_mov_b32_e32 v1, v21082; GFX942-NEXT: v_mov_b32_e32 v0, v51083; GFX942-NEXT: global_store_dwordx3 v7, v[0:2], s[0:1]1084; GFX942-NEXT: s_waitcnt vmcnt(0)1085; GFX942-NEXT: s_setpc_b64 s[30:31]1086 %vec0 = call <3 x i32> asm "; def $0", "=v"()1087 %vec1 = call <3 x i32> asm "; def $0", "=v"()1088 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 0, i32 0>1089 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161090 ret void1091}1092 1093define void @v_shuffle_v3i32_v3i32__5_0_0(ptr addrspace(1) inreg %ptr) {1094; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_0_0:1095; GFX900: ; %bb.0:1096; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1097; GFX900-NEXT: ;;#ASMSTART1098; GFX900-NEXT: ; def v[3:5]1099; GFX900-NEXT: ;;#ASMEND1100; GFX900-NEXT: v_mov_b32_e32 v6, 01101; GFX900-NEXT: v_mov_b32_e32 v4, v31102; GFX900-NEXT: ;;#ASMSTART1103; GFX900-NEXT: ; def v[0:2]1104; GFX900-NEXT: ;;#ASMEND1105; GFX900-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]1106; GFX900-NEXT: s_waitcnt vmcnt(0)1107; GFX900-NEXT: s_setpc_b64 s[30:31]1108;1109; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_0_0:1110; GFX90A: ; %bb.0:1111; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1112; GFX90A-NEXT: v_mov_b32_e32 v7, 01113; GFX90A-NEXT: ;;#ASMSTART1114; GFX90A-NEXT: ; def v[4:6]1115; GFX90A-NEXT: ;;#ASMEND1116; GFX90A-NEXT: v_mov_b32_e32 v3, v41117; GFX90A-NEXT: ;;#ASMSTART1118; GFX90A-NEXT: ; def v[0:2]1119; GFX90A-NEXT: ;;#ASMEND1120; GFX90A-NEXT: global_store_dwordx3 v7, v[2:4], s[16:17]1121; GFX90A-NEXT: s_waitcnt vmcnt(0)1122; GFX90A-NEXT: s_setpc_b64 s[30:31]1123;1124; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_0_0:1125; GFX942: ; %bb.0:1126; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1127; GFX942-NEXT: v_mov_b32_e32 v7, 01128; GFX942-NEXT: ;;#ASMSTART1129; GFX942-NEXT: ; def v[4:6]1130; GFX942-NEXT: ;;#ASMEND1131; GFX942-NEXT: ;;#ASMSTART1132; GFX942-NEXT: ; def v[0:2]1133; GFX942-NEXT: ;;#ASMEND1134; GFX942-NEXT: s_nop 01135; GFX942-NEXT: v_mov_b32_e32 v3, v41136; GFX942-NEXT: global_store_dwordx3 v7, v[2:4], s[0:1]1137; GFX942-NEXT: s_waitcnt vmcnt(0)1138; GFX942-NEXT: s_setpc_b64 s[30:31]1139 %vec0 = call <3 x i32> asm "; def $0", "=v"()1140 %vec1 = call <3 x i32> asm "; def $0", "=v"()1141 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 0>1142 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161143 ret void1144}1145 1146define void @v_shuffle_v3i32_v3i32__5_u_0(ptr addrspace(1) inreg %ptr) {1147; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_u_0:1148; GFX900: ; %bb.0:1149; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1150; GFX900-NEXT: v_mov_b32_e32 v3, 01151; GFX900-NEXT: ;;#ASMSTART1152; GFX900-NEXT: ; def v[4:6]1153; GFX900-NEXT: ;;#ASMEND1154; GFX900-NEXT: ;;#ASMSTART1155; GFX900-NEXT: ; def v[0:2]1156; GFX900-NEXT: ;;#ASMEND1157; GFX900-NEXT: global_store_dwordx3 v3, v[2:4], s[16:17]1158; GFX900-NEXT: s_waitcnt vmcnt(0)1159; GFX900-NEXT: s_setpc_b64 s[30:31]1160;1161; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_u_0:1162; GFX90A: ; %bb.0:1163; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1164; GFX90A-NEXT: v_mov_b32_e32 v3, 01165; GFX90A-NEXT: ;;#ASMSTART1166; GFX90A-NEXT: ; def v[4:6]1167; GFX90A-NEXT: ;;#ASMEND1168; GFX90A-NEXT: ;;#ASMSTART1169; GFX90A-NEXT: ; def v[0:2]1170; GFX90A-NEXT: ;;#ASMEND1171; GFX90A-NEXT: global_store_dwordx3 v3, v[2:4], s[16:17]1172; GFX90A-NEXT: s_waitcnt vmcnt(0)1173; GFX90A-NEXT: s_setpc_b64 s[30:31]1174;1175; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_u_0:1176; GFX942: ; %bb.0:1177; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1178; GFX942-NEXT: v_mov_b32_e32 v3, 01179; GFX942-NEXT: ;;#ASMSTART1180; GFX942-NEXT: ; def v[4:6]1181; GFX942-NEXT: ;;#ASMEND1182; GFX942-NEXT: ;;#ASMSTART1183; GFX942-NEXT: ; def v[0:2]1184; GFX942-NEXT: ;;#ASMEND1185; GFX942-NEXT: global_store_dwordx3 v3, v[2:4], s[0:1]1186; GFX942-NEXT: s_waitcnt vmcnt(0)1187; GFX942-NEXT: s_setpc_b64 s[30:31]1188 %vec0 = call <3 x i32> asm "; def $0", "=v"()1189 %vec1 = call <3 x i32> asm "; def $0", "=v"()1190 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 0>1191 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161192 ret void1193}1194 1195define void @v_shuffle_v3i32_v3i32__5_1_0(ptr addrspace(1) inreg %ptr) {1196; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_1_0:1197; GFX900: ; %bb.0:1198; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1199; GFX900-NEXT: v_mov_b32_e32 v7, 01200; GFX900-NEXT: ;;#ASMSTART1201; GFX900-NEXT: ; def v[4:6]1202; GFX900-NEXT: ;;#ASMEND1203; GFX900-NEXT: v_mov_b32_e32 v3, v51204; GFX900-NEXT: ;;#ASMSTART1205; GFX900-NEXT: ; def v[0:2]1206; GFX900-NEXT: ;;#ASMEND1207; GFX900-NEXT: global_store_dwordx3 v7, v[2:4], s[16:17]1208; GFX900-NEXT: s_waitcnt vmcnt(0)1209; GFX900-NEXT: s_setpc_b64 s[30:31]1210;1211; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_1_0:1212; GFX90A: ; %bb.0:1213; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1214; GFX90A-NEXT: v_mov_b32_e32 v7, 01215; GFX90A-NEXT: ;;#ASMSTART1216; GFX90A-NEXT: ; def v[4:6]1217; GFX90A-NEXT: ;;#ASMEND1218; GFX90A-NEXT: v_mov_b32_e32 v3, v51219; GFX90A-NEXT: ;;#ASMSTART1220; GFX90A-NEXT: ; def v[0:2]1221; GFX90A-NEXT: ;;#ASMEND1222; GFX90A-NEXT: global_store_dwordx3 v7, v[2:4], s[16:17]1223; GFX90A-NEXT: s_waitcnt vmcnt(0)1224; GFX90A-NEXT: s_setpc_b64 s[30:31]1225;1226; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_1_0:1227; GFX942: ; %bb.0:1228; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1229; GFX942-NEXT: v_mov_b32_e32 v7, 01230; GFX942-NEXT: ;;#ASMSTART1231; GFX942-NEXT: ; def v[4:6]1232; GFX942-NEXT: ;;#ASMEND1233; GFX942-NEXT: ;;#ASMSTART1234; GFX942-NEXT: ; def v[0:2]1235; GFX942-NEXT: ;;#ASMEND1236; GFX942-NEXT: s_nop 01237; GFX942-NEXT: v_mov_b32_e32 v3, v51238; GFX942-NEXT: global_store_dwordx3 v7, v[2:4], s[0:1]1239; GFX942-NEXT: s_waitcnt vmcnt(0)1240; GFX942-NEXT: s_setpc_b64 s[30:31]1241 %vec0 = call <3 x i32> asm "; def $0", "=v"()1242 %vec1 = call <3 x i32> asm "; def $0", "=v"()1243 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 0>1244 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161245 ret void1246}1247 1248define void @v_shuffle_v3i32_v3i32__5_2_0(ptr addrspace(1) inreg %ptr) {1249; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_2_0:1250; GFX900: ; %bb.0:1251; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1252; GFX900-NEXT: v_mov_b32_e32 v7, 01253; GFX900-NEXT: ;;#ASMSTART1254; GFX900-NEXT: ; def v[4:6]1255; GFX900-NEXT: ;;#ASMEND1256; GFX900-NEXT: v_mov_b32_e32 v3, v61257; GFX900-NEXT: ;;#ASMSTART1258; GFX900-NEXT: ; def v[0:2]1259; GFX900-NEXT: ;;#ASMEND1260; GFX900-NEXT: global_store_dwordx3 v7, v[2:4], s[16:17]1261; GFX900-NEXT: s_waitcnt vmcnt(0)1262; GFX900-NEXT: s_setpc_b64 s[30:31]1263;1264; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_2_0:1265; GFX90A: ; %bb.0:1266; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1267; GFX90A-NEXT: v_mov_b32_e32 v7, 01268; GFX90A-NEXT: ;;#ASMSTART1269; GFX90A-NEXT: ; def v[4:6]1270; GFX90A-NEXT: ;;#ASMEND1271; GFX90A-NEXT: v_mov_b32_e32 v3, v61272; GFX90A-NEXT: ;;#ASMSTART1273; GFX90A-NEXT: ; def v[0:2]1274; GFX90A-NEXT: ;;#ASMEND1275; GFX90A-NEXT: global_store_dwordx3 v7, v[2:4], s[16:17]1276; GFX90A-NEXT: s_waitcnt vmcnt(0)1277; GFX90A-NEXT: s_setpc_b64 s[30:31]1278;1279; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_2_0:1280; GFX942: ; %bb.0:1281; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1282; GFX942-NEXT: v_mov_b32_e32 v7, 01283; GFX942-NEXT: ;;#ASMSTART1284; GFX942-NEXT: ; def v[4:6]1285; GFX942-NEXT: ;;#ASMEND1286; GFX942-NEXT: ;;#ASMSTART1287; GFX942-NEXT: ; def v[0:2]1288; GFX942-NEXT: ;;#ASMEND1289; GFX942-NEXT: s_nop 01290; GFX942-NEXT: v_mov_b32_e32 v3, v61291; GFX942-NEXT: global_store_dwordx3 v7, v[2:4], s[0:1]1292; GFX942-NEXT: s_waitcnt vmcnt(0)1293; GFX942-NEXT: s_setpc_b64 s[30:31]1294 %vec0 = call <3 x i32> asm "; def $0", "=v"()1295 %vec1 = call <3 x i32> asm "; def $0", "=v"()1296 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 0>1297 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161298 ret void1299}1300 1301define void @v_shuffle_v3i32_v3i32__5_3_0(ptr addrspace(1) inreg %ptr) {1302; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_3_0:1303; GFX900: ; %bb.0:1304; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1305; GFX900-NEXT: v_mov_b32_e32 v7, 01306; GFX900-NEXT: ;;#ASMSTART1307; GFX900-NEXT: ; def v[0:2]1308; GFX900-NEXT: ;;#ASMEND1309; GFX900-NEXT: v_mov_b32_e32 v3, v01310; GFX900-NEXT: ;;#ASMSTART1311; GFX900-NEXT: ; def v[4:6]1312; GFX900-NEXT: ;;#ASMEND1313; GFX900-NEXT: global_store_dwordx3 v7, v[2:4], s[16:17]1314; GFX900-NEXT: s_waitcnt vmcnt(0)1315; GFX900-NEXT: s_setpc_b64 s[30:31]1316;1317; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_3_0:1318; GFX90A: ; %bb.0:1319; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1320; GFX90A-NEXT: v_mov_b32_e32 v7, 01321; GFX90A-NEXT: ;;#ASMSTART1322; GFX90A-NEXT: ; def v[0:2]1323; GFX90A-NEXT: ;;#ASMEND1324; GFX90A-NEXT: v_mov_b32_e32 v3, v01325; GFX90A-NEXT: ;;#ASMSTART1326; GFX90A-NEXT: ; def v[4:6]1327; GFX90A-NEXT: ;;#ASMEND1328; GFX90A-NEXT: global_store_dwordx3 v7, v[2:4], s[16:17]1329; GFX90A-NEXT: s_waitcnt vmcnt(0)1330; GFX90A-NEXT: s_setpc_b64 s[30:31]1331;1332; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_3_0:1333; GFX942: ; %bb.0:1334; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1335; GFX942-NEXT: v_mov_b32_e32 v7, 01336; GFX942-NEXT: ;;#ASMSTART1337; GFX942-NEXT: ; def v[0:2]1338; GFX942-NEXT: ;;#ASMEND1339; GFX942-NEXT: ;;#ASMSTART1340; GFX942-NEXT: ; def v[4:6]1341; GFX942-NEXT: ;;#ASMEND1342; GFX942-NEXT: s_nop 01343; GFX942-NEXT: v_mov_b32_e32 v3, v01344; GFX942-NEXT: global_store_dwordx3 v7, v[2:4], s[0:1]1345; GFX942-NEXT: s_waitcnt vmcnt(0)1346; GFX942-NEXT: s_setpc_b64 s[30:31]1347 %vec0 = call <3 x i32> asm "; def $0", "=v"()1348 %vec1 = call <3 x i32> asm "; def $0", "=v"()1349 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 0>1350 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161351 ret void1352}1353 1354define void @v_shuffle_v3i32_v3i32__5_4_0(ptr addrspace(1) inreg %ptr) {1355; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_4_0:1356; GFX900: ; %bb.0:1357; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1358; GFX900-NEXT: v_mov_b32_e32 v7, 01359; GFX900-NEXT: ;;#ASMSTART1360; GFX900-NEXT: ; def v[0:2]1361; GFX900-NEXT: ;;#ASMEND1362; GFX900-NEXT: v_mov_b32_e32 v3, v11363; GFX900-NEXT: ;;#ASMSTART1364; GFX900-NEXT: ; def v[4:6]1365; GFX900-NEXT: ;;#ASMEND1366; GFX900-NEXT: global_store_dwordx3 v7, v[2:4], s[16:17]1367; GFX900-NEXT: s_waitcnt vmcnt(0)1368; GFX900-NEXT: s_setpc_b64 s[30:31]1369;1370; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_4_0:1371; GFX90A: ; %bb.0:1372; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1373; GFX90A-NEXT: v_mov_b32_e32 v7, 01374; GFX90A-NEXT: ;;#ASMSTART1375; GFX90A-NEXT: ; def v[0:2]1376; GFX90A-NEXT: ;;#ASMEND1377; GFX90A-NEXT: v_mov_b32_e32 v3, v11378; GFX90A-NEXT: ;;#ASMSTART1379; GFX90A-NEXT: ; def v[4:6]1380; GFX90A-NEXT: ;;#ASMEND1381; GFX90A-NEXT: global_store_dwordx3 v7, v[2:4], s[16:17]1382; GFX90A-NEXT: s_waitcnt vmcnt(0)1383; GFX90A-NEXT: s_setpc_b64 s[30:31]1384;1385; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_4_0:1386; GFX942: ; %bb.0:1387; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1388; GFX942-NEXT: v_mov_b32_e32 v7, 01389; GFX942-NEXT: ;;#ASMSTART1390; GFX942-NEXT: ; def v[0:2]1391; GFX942-NEXT: ;;#ASMEND1392; GFX942-NEXT: ;;#ASMSTART1393; GFX942-NEXT: ; def v[4:6]1394; GFX942-NEXT: ;;#ASMEND1395; GFX942-NEXT: s_nop 01396; GFX942-NEXT: v_mov_b32_e32 v3, v11397; GFX942-NEXT: global_store_dwordx3 v7, v[2:4], s[0:1]1398; GFX942-NEXT: s_waitcnt vmcnt(0)1399; GFX942-NEXT: s_setpc_b64 s[30:31]1400 %vec0 = call <3 x i32> asm "; def $0", "=v"()1401 %vec1 = call <3 x i32> asm "; def $0", "=v"()1402 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 0>1403 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161404 ret void1405}1406 1407define void @v_shuffle_v3i32_v3i32__u_1_1(ptr addrspace(1) inreg %ptr) {1408; GFX900-LABEL: v_shuffle_v3i32_v3i32__u_1_1:1409; GFX900: ; %bb.0:1410; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1411; GFX900-NEXT: ;;#ASMSTART1412; GFX900-NEXT: ; def v[0:2]1413; GFX900-NEXT: ;;#ASMEND1414; GFX900-NEXT: v_mov_b32_e32 v3, 01415; GFX900-NEXT: v_mov_b32_e32 v2, v11416; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17]1417; GFX900-NEXT: s_waitcnt vmcnt(0)1418; GFX900-NEXT: s_setpc_b64 s[30:31]1419;1420; GFX90A-LABEL: v_shuffle_v3i32_v3i32__u_1_1:1421; GFX90A: ; %bb.0:1422; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1423; GFX90A-NEXT: ;;#ASMSTART1424; GFX90A-NEXT: ; def v[0:2]1425; GFX90A-NEXT: ;;#ASMEND1426; GFX90A-NEXT: v_mov_b32_e32 v3, 01427; GFX90A-NEXT: v_mov_b32_e32 v2, v11428; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17]1429; GFX90A-NEXT: s_waitcnt vmcnt(0)1430; GFX90A-NEXT: s_setpc_b64 s[30:31]1431;1432; GFX942-LABEL: v_shuffle_v3i32_v3i32__u_1_1:1433; GFX942: ; %bb.0:1434; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1435; GFX942-NEXT: ;;#ASMSTART1436; GFX942-NEXT: ; def v[0:2]1437; GFX942-NEXT: ;;#ASMEND1438; GFX942-NEXT: v_mov_b32_e32 v3, 01439; GFX942-NEXT: v_mov_b32_e32 v2, v11440; GFX942-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1]1441; GFX942-NEXT: s_waitcnt vmcnt(0)1442; GFX942-NEXT: s_setpc_b64 s[30:31]1443 %vec0 = call <3 x i32> asm "; def $0", "=v"()1444 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 poison, i32 1, i32 1>1445 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161446 ret void1447}1448 1449define void @v_shuffle_v3i32_v3i32__0_1_1(ptr addrspace(1) inreg %ptr) {1450; GFX900-LABEL: v_shuffle_v3i32_v3i32__0_1_1:1451; GFX900: ; %bb.0:1452; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1453; GFX900-NEXT: ;;#ASMSTART1454; GFX900-NEXT: ; def v[0:2]1455; GFX900-NEXT: ;;#ASMEND1456; GFX900-NEXT: v_mov_b32_e32 v3, 01457; GFX900-NEXT: v_mov_b32_e32 v2, v11458; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17]1459; GFX900-NEXT: s_waitcnt vmcnt(0)1460; GFX900-NEXT: s_setpc_b64 s[30:31]1461;1462; GFX90A-LABEL: v_shuffle_v3i32_v3i32__0_1_1:1463; GFX90A: ; %bb.0:1464; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1465; GFX90A-NEXT: ;;#ASMSTART1466; GFX90A-NEXT: ; def v[0:2]1467; GFX90A-NEXT: ;;#ASMEND1468; GFX90A-NEXT: v_mov_b32_e32 v3, 01469; GFX90A-NEXT: v_mov_b32_e32 v2, v11470; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17]1471; GFX90A-NEXT: s_waitcnt vmcnt(0)1472; GFX90A-NEXT: s_setpc_b64 s[30:31]1473;1474; GFX942-LABEL: v_shuffle_v3i32_v3i32__0_1_1:1475; GFX942: ; %bb.0:1476; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1477; GFX942-NEXT: ;;#ASMSTART1478; GFX942-NEXT: ; def v[0:2]1479; GFX942-NEXT: ;;#ASMEND1480; GFX942-NEXT: v_mov_b32_e32 v3, 01481; GFX942-NEXT: v_mov_b32_e32 v2, v11482; GFX942-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1]1483; GFX942-NEXT: s_waitcnt vmcnt(0)1484; GFX942-NEXT: s_setpc_b64 s[30:31]1485 %vec0 = call <3 x i32> asm "; def $0", "=v"()1486 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 0, i32 1, i32 1>1487 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161488 ret void1489}1490 1491define void @v_shuffle_v3i32_v3i32__1_1_1(ptr addrspace(1) inreg %ptr) {1492; GFX900-LABEL: v_shuffle_v3i32_v3i32__1_1_1:1493; GFX900: ; %bb.0:1494; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1495; GFX900-NEXT: ;;#ASMSTART1496; GFX900-NEXT: ; def v[0:2]1497; GFX900-NEXT: ;;#ASMEND1498; GFX900-NEXT: v_mov_b32_e32 v4, 01499; GFX900-NEXT: v_mov_b32_e32 v2, v11500; GFX900-NEXT: v_mov_b32_e32 v3, v11501; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]1502; GFX900-NEXT: s_waitcnt vmcnt(0)1503; GFX900-NEXT: s_setpc_b64 s[30:31]1504;1505; GFX90A-LABEL: v_shuffle_v3i32_v3i32__1_1_1:1506; GFX90A: ; %bb.0:1507; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1508; GFX90A-NEXT: ;;#ASMSTART1509; GFX90A-NEXT: ; def v[0:2]1510; GFX90A-NEXT: ;;#ASMEND1511; GFX90A-NEXT: v_mov_b32_e32 v3, 01512; GFX90A-NEXT: v_mov_b32_e32 v0, v11513; GFX90A-NEXT: v_mov_b32_e32 v2, v11514; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17]1515; GFX90A-NEXT: s_waitcnt vmcnt(0)1516; GFX90A-NEXT: s_setpc_b64 s[30:31]1517;1518; GFX942-LABEL: v_shuffle_v3i32_v3i32__1_1_1:1519; GFX942: ; %bb.0:1520; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1521; GFX942-NEXT: ;;#ASMSTART1522; GFX942-NEXT: ; def v[0:2]1523; GFX942-NEXT: ;;#ASMEND1524; GFX942-NEXT: v_mov_b32_e32 v3, 01525; GFX942-NEXT: v_mov_b32_e32 v0, v11526; GFX942-NEXT: v_mov_b32_e32 v2, v11527; GFX942-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1]1528; GFX942-NEXT: s_waitcnt vmcnt(0)1529; GFX942-NEXT: s_setpc_b64 s[30:31]1530 %vec0 = call <3 x i32> asm "; def $0", "=v"()1531 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 1, i32 1, i32 1>1532 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161533 ret void1534}1535 1536define void @v_shuffle_v3i32_v3i32__2_1_1(ptr addrspace(1) inreg %ptr) {1537; GFX900-LABEL: v_shuffle_v3i32_v3i32__2_1_1:1538; GFX900: ; %bb.0:1539; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1540; GFX900-NEXT: v_mov_b32_e32 v5, 01541; GFX900-NEXT: ;;#ASMSTART1542; GFX900-NEXT: ; def v[0:2]1543; GFX900-NEXT: ;;#ASMEND1544; GFX900-NEXT: v_mov_b32_e32 v3, v11545; GFX900-NEXT: v_mov_b32_e32 v4, v11546; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]1547; GFX900-NEXT: s_waitcnt vmcnt(0)1548; GFX900-NEXT: s_setpc_b64 s[30:31]1549;1550; GFX90A-LABEL: v_shuffle_v3i32_v3i32__2_1_1:1551; GFX90A: ; %bb.0:1552; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1553; GFX90A-NEXT: v_mov_b32_e32 v5, 01554; GFX90A-NEXT: ;;#ASMSTART1555; GFX90A-NEXT: ; def v[0:2]1556; GFX90A-NEXT: ;;#ASMEND1557; GFX90A-NEXT: v_mov_b32_e32 v3, v11558; GFX90A-NEXT: v_mov_b32_e32 v4, v11559; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]1560; GFX90A-NEXT: s_waitcnt vmcnt(0)1561; GFX90A-NEXT: s_setpc_b64 s[30:31]1562;1563; GFX942-LABEL: v_shuffle_v3i32_v3i32__2_1_1:1564; GFX942: ; %bb.0:1565; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1566; GFX942-NEXT: v_mov_b32_e32 v5, 01567; GFX942-NEXT: ;;#ASMSTART1568; GFX942-NEXT: ; def v[0:2]1569; GFX942-NEXT: ;;#ASMEND1570; GFX942-NEXT: s_nop 01571; GFX942-NEXT: v_mov_b32_e32 v3, v11572; GFX942-NEXT: v_mov_b32_e32 v4, v11573; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]1574; GFX942-NEXT: s_waitcnt vmcnt(0)1575; GFX942-NEXT: s_setpc_b64 s[30:31]1576 %vec0 = call <3 x i32> asm "; def $0", "=v"()1577 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 2, i32 1, i32 1>1578 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161579 ret void1580}1581 1582define void @v_shuffle_v3i32_v3i32__3_1_1(ptr addrspace(1) inreg %ptr) {1583; GFX900-LABEL: v_shuffle_v3i32_v3i32__3_1_1:1584; GFX900: ; %bb.0:1585; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1586; GFX900-NEXT: ;;#ASMSTART1587; GFX900-NEXT: ; def v[0:2]1588; GFX900-NEXT: ;;#ASMEND1589; GFX900-NEXT: v_mov_b32_e32 v3, 01590; GFX900-NEXT: v_mov_b32_e32 v2, v11591; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17]1592; GFX900-NEXT: s_waitcnt vmcnt(0)1593; GFX900-NEXT: s_setpc_b64 s[30:31]1594;1595; GFX90A-LABEL: v_shuffle_v3i32_v3i32__3_1_1:1596; GFX90A: ; %bb.0:1597; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1598; GFX90A-NEXT: ;;#ASMSTART1599; GFX90A-NEXT: ; def v[0:2]1600; GFX90A-NEXT: ;;#ASMEND1601; GFX90A-NEXT: v_mov_b32_e32 v3, 01602; GFX90A-NEXT: v_mov_b32_e32 v2, v11603; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17]1604; GFX90A-NEXT: s_waitcnt vmcnt(0)1605; GFX90A-NEXT: s_setpc_b64 s[30:31]1606;1607; GFX942-LABEL: v_shuffle_v3i32_v3i32__3_1_1:1608; GFX942: ; %bb.0:1609; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1610; GFX942-NEXT: ;;#ASMSTART1611; GFX942-NEXT: ; def v[0:2]1612; GFX942-NEXT: ;;#ASMEND1613; GFX942-NEXT: v_mov_b32_e32 v3, 01614; GFX942-NEXT: v_mov_b32_e32 v2, v11615; GFX942-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1]1616; GFX942-NEXT: s_waitcnt vmcnt(0)1617; GFX942-NEXT: s_setpc_b64 s[30:31]1618 %vec0 = call <3 x i32> asm "; def $0", "=v"()1619 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 3, i32 1, i32 1>1620 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161621 ret void1622}1623 1624define void @v_shuffle_v3i32_v3i32__4_1_1(ptr addrspace(1) inreg %ptr) {1625; GFX900-LABEL: v_shuffle_v3i32_v3i32__4_1_1:1626; GFX900: ; %bb.0:1627; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1628; GFX900-NEXT: ;;#ASMSTART1629; GFX900-NEXT: ; def v[2:4]1630; GFX900-NEXT: ;;#ASMEND1631; GFX900-NEXT: ;;#ASMSTART1632; GFX900-NEXT: ; def v[0:2]1633; GFX900-NEXT: ;;#ASMEND1634; GFX900-NEXT: v_mov_b32_e32 v5, 01635; GFX900-NEXT: v_mov_b32_e32 v2, v31636; GFX900-NEXT: global_store_dwordx3 v5, v[1:3], s[16:17]1637; GFX900-NEXT: s_waitcnt vmcnt(0)1638; GFX900-NEXT: s_setpc_b64 s[30:31]1639;1640; GFX90A-LABEL: v_shuffle_v3i32_v3i32__4_1_1:1641; GFX90A: ; %bb.0:1642; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1643; GFX90A-NEXT: ;;#ASMSTART1644; GFX90A-NEXT: ; def v[0:2]1645; GFX90A-NEXT: ;;#ASMEND1646; GFX90A-NEXT: ;;#ASMSTART1647; GFX90A-NEXT: ; def v[2:4]1648; GFX90A-NEXT: ;;#ASMEND1649; GFX90A-NEXT: v_mov_b32_e32 v5, 01650; GFX90A-NEXT: v_mov_b32_e32 v0, v31651; GFX90A-NEXT: v_mov_b32_e32 v2, v11652; GFX90A-NEXT: global_store_dwordx3 v5, v[0:2], s[16:17]1653; GFX90A-NEXT: s_waitcnt vmcnt(0)1654; GFX90A-NEXT: s_setpc_b64 s[30:31]1655;1656; GFX942-LABEL: v_shuffle_v3i32_v3i32__4_1_1:1657; GFX942: ; %bb.0:1658; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1659; GFX942-NEXT: ;;#ASMSTART1660; GFX942-NEXT: ; def v[0:2]1661; GFX942-NEXT: ;;#ASMEND1662; GFX942-NEXT: v_mov_b32_e32 v5, 01663; GFX942-NEXT: ;;#ASMSTART1664; GFX942-NEXT: ; def v[2:4]1665; GFX942-NEXT: ;;#ASMEND1666; GFX942-NEXT: s_nop 01667; GFX942-NEXT: v_mov_b32_e32 v0, v31668; GFX942-NEXT: v_mov_b32_e32 v2, v11669; GFX942-NEXT: global_store_dwordx3 v5, v[0:2], 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, <3 x i32> <i32 4, i32 1, i32 1>1675 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161676 ret void1677}1678 1679define void @v_shuffle_v3i32_v3i32__5_1_1(ptr addrspace(1) inreg %ptr) {1680; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_1_1:1681; GFX900: ; %bb.0:1682; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1683; GFX900-NEXT: ;;#ASMSTART1684; GFX900-NEXT: ; def v[2:4]1685; GFX900-NEXT: ;;#ASMEND1686; GFX900-NEXT: v_mov_b32_e32 v5, 01687; GFX900-NEXT: v_mov_b32_e32 v4, v31688; GFX900-NEXT: ;;#ASMSTART1689; GFX900-NEXT: ; def v[0:2]1690; GFX900-NEXT: ;;#ASMEND1691; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]1692; GFX900-NEXT: s_waitcnt vmcnt(0)1693; GFX900-NEXT: s_setpc_b64 s[30:31]1694;1695; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_1_1:1696; GFX90A: ; %bb.0:1697; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1698; GFX90A-NEXT: ;;#ASMSTART1699; GFX90A-NEXT: ; def v[2:4]1700; GFX90A-NEXT: ;;#ASMEND1701; GFX90A-NEXT: v_mov_b32_e32 v5, 01702; GFX90A-NEXT: v_mov_b32_e32 v4, v31703; GFX90A-NEXT: ;;#ASMSTART1704; GFX90A-NEXT: ; def v[0:2]1705; GFX90A-NEXT: ;;#ASMEND1706; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]1707; GFX90A-NEXT: s_waitcnt vmcnt(0)1708; GFX90A-NEXT: s_setpc_b64 s[30:31]1709;1710; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_1_1:1711; GFX942: ; %bb.0:1712; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1713; GFX942-NEXT: ;;#ASMSTART1714; GFX942-NEXT: ; def v[2:4]1715; GFX942-NEXT: ;;#ASMEND1716; GFX942-NEXT: v_mov_b32_e32 v5, 01717; GFX942-NEXT: v_mov_b32_e32 v4, v31718; GFX942-NEXT: ;;#ASMSTART1719; GFX942-NEXT: ; def v[0:2]1720; GFX942-NEXT: ;;#ASMEND1721; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]1722; GFX942-NEXT: s_waitcnt vmcnt(0)1723; GFX942-NEXT: s_setpc_b64 s[30:31]1724 %vec0 = call <3 x i32> asm "; def $0", "=v"()1725 %vec1 = call <3 x i32> asm "; def $0", "=v"()1726 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 1>1727 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161728 ret void1729}1730 1731define void @v_shuffle_v3i32_v3i32__5_u_1(ptr addrspace(1) inreg %ptr) {1732; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_u_1:1733; GFX900: ; %bb.0:1734; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1735; GFX900-NEXT: v_mov_b32_e32 v6, 01736; GFX900-NEXT: ;;#ASMSTART1737; GFX900-NEXT: ; def v[3:5]1738; GFX900-NEXT: ;;#ASMEND1739; GFX900-NEXT: ;;#ASMSTART1740; GFX900-NEXT: ; def v[0:2]1741; GFX900-NEXT: ;;#ASMEND1742; GFX900-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]1743; GFX900-NEXT: s_waitcnt vmcnt(0)1744; GFX900-NEXT: s_setpc_b64 s[30:31]1745;1746; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_u_1:1747; GFX90A: ; %bb.0:1748; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1749; GFX90A-NEXT: ;;#ASMSTART1750; GFX90A-NEXT: ; def v[2:4]1751; GFX90A-NEXT: ;;#ASMEND1752; GFX90A-NEXT: v_mov_b32_e32 v5, 01753; GFX90A-NEXT: v_mov_b32_e32 v4, v31754; GFX90A-NEXT: ;;#ASMSTART1755; GFX90A-NEXT: ; def v[0:2]1756; GFX90A-NEXT: ;;#ASMEND1757; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]1758; GFX90A-NEXT: s_waitcnt vmcnt(0)1759; GFX90A-NEXT: s_setpc_b64 s[30:31]1760;1761; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_u_1:1762; GFX942: ; %bb.0:1763; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1764; GFX942-NEXT: ;;#ASMSTART1765; GFX942-NEXT: ; def v[2:4]1766; GFX942-NEXT: ;;#ASMEND1767; GFX942-NEXT: v_mov_b32_e32 v5, 01768; GFX942-NEXT: v_mov_b32_e32 v4, v31769; GFX942-NEXT: ;;#ASMSTART1770; GFX942-NEXT: ; def v[0:2]1771; GFX942-NEXT: ;;#ASMEND1772; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]1773; GFX942-NEXT: s_waitcnt vmcnt(0)1774; GFX942-NEXT: s_setpc_b64 s[30:31]1775 %vec0 = call <3 x i32> asm "; def $0", "=v"()1776 %vec1 = call <3 x i32> asm "; def $0", "=v"()1777 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 1>1778 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161779 ret void1780}1781 1782define void @v_shuffle_v3i32_v3i32__5_0_1(ptr addrspace(1) inreg %ptr) {1783; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_0_1:1784; GFX900: ; %bb.0:1785; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1786; GFX900-NEXT: v_mov_b32_e32 v6, 01787; GFX900-NEXT: ;;#ASMSTART1788; GFX900-NEXT: ; def v[3:5]1789; GFX900-NEXT: ;;#ASMEND1790; GFX900-NEXT: ;;#ASMSTART1791; GFX900-NEXT: ; def v[0:2]1792; GFX900-NEXT: ;;#ASMEND1793; GFX900-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]1794; GFX900-NEXT: s_waitcnt vmcnt(0)1795; GFX900-NEXT: s_setpc_b64 s[30:31]1796;1797; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_0_1:1798; GFX90A: ; %bb.0:1799; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1800; GFX90A-NEXT: ;;#ASMSTART1801; GFX90A-NEXT: ; def v[4:6]1802; GFX90A-NEXT: ;;#ASMEND1803; GFX90A-NEXT: v_mov_b32_e32 v7, 01804; GFX90A-NEXT: v_mov_b32_e32 v3, v41805; GFX90A-NEXT: v_mov_b32_e32 v4, v51806; GFX90A-NEXT: ;;#ASMSTART1807; GFX90A-NEXT: ; def v[0:2]1808; GFX90A-NEXT: ;;#ASMEND1809; GFX90A-NEXT: global_store_dwordx3 v7, v[2:4], s[16:17]1810; GFX90A-NEXT: s_waitcnt vmcnt(0)1811; GFX90A-NEXT: s_setpc_b64 s[30:31]1812;1813; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_0_1:1814; GFX942: ; %bb.0:1815; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1816; GFX942-NEXT: ;;#ASMSTART1817; GFX942-NEXT: ; def v[4:6]1818; GFX942-NEXT: ;;#ASMEND1819; GFX942-NEXT: v_mov_b32_e32 v7, 01820; GFX942-NEXT: v_mov_b32_e32 v3, v41821; GFX942-NEXT: v_mov_b32_e32 v4, v51822; GFX942-NEXT: ;;#ASMSTART1823; GFX942-NEXT: ; def v[0:2]1824; GFX942-NEXT: ;;#ASMEND1825; GFX942-NEXT: global_store_dwordx3 v7, v[2:4], s[0:1]1826; GFX942-NEXT: s_waitcnt vmcnt(0)1827; GFX942-NEXT: s_setpc_b64 s[30:31]1828 %vec0 = call <3 x i32> asm "; def $0", "=v"()1829 %vec1 = call <3 x i32> asm "; def $0", "=v"()1830 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 1>1831 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161832 ret void1833}1834 1835define void @v_shuffle_v3i32_v3i32__5_2_1(ptr addrspace(1) inreg %ptr) {1836; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_2_1:1837; GFX900: ; %bb.0:1838; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1839; GFX900-NEXT: ;;#ASMSTART1840; GFX900-NEXT: ; def v[3:5]1841; GFX900-NEXT: ;;#ASMEND1842; GFX900-NEXT: v_mov_b32_e32 v6, 01843; GFX900-NEXT: v_mov_b32_e32 v3, v51844; GFX900-NEXT: ;;#ASMSTART1845; GFX900-NEXT: ; def v[0:2]1846; GFX900-NEXT: ;;#ASMEND1847; GFX900-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]1848; GFX900-NEXT: s_waitcnt vmcnt(0)1849; GFX900-NEXT: s_setpc_b64 s[30:31]1850;1851; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_2_1:1852; GFX90A: ; %bb.0:1853; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1854; GFX90A-NEXT: ;;#ASMSTART1855; GFX90A-NEXT: ; def v[4:6]1856; GFX90A-NEXT: ;;#ASMEND1857; GFX90A-NEXT: v_mov_b32_e32 v7, 01858; GFX90A-NEXT: v_mov_b32_e32 v3, v61859; GFX90A-NEXT: v_mov_b32_e32 v4, v51860; GFX90A-NEXT: ;;#ASMSTART1861; GFX90A-NEXT: ; def v[0:2]1862; GFX90A-NEXT: ;;#ASMEND1863; GFX90A-NEXT: global_store_dwordx3 v7, v[2:4], s[16:17]1864; GFX90A-NEXT: s_waitcnt vmcnt(0)1865; GFX90A-NEXT: s_setpc_b64 s[30:31]1866;1867; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_2_1:1868; GFX942: ; %bb.0:1869; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1870; GFX942-NEXT: ;;#ASMSTART1871; GFX942-NEXT: ; def v[4:6]1872; GFX942-NEXT: ;;#ASMEND1873; GFX942-NEXT: v_mov_b32_e32 v7, 01874; GFX942-NEXT: v_mov_b32_e32 v3, v61875; GFX942-NEXT: v_mov_b32_e32 v4, v51876; GFX942-NEXT: ;;#ASMSTART1877; GFX942-NEXT: ; def v[0:2]1878; GFX942-NEXT: ;;#ASMEND1879; GFX942-NEXT: global_store_dwordx3 v7, v[2:4], s[0:1]1880; GFX942-NEXT: s_waitcnt vmcnt(0)1881; GFX942-NEXT: s_setpc_b64 s[30:31]1882 %vec0 = call <3 x i32> asm "; def $0", "=v"()1883 %vec1 = call <3 x i32> asm "; def $0", "=v"()1884 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 1>1885 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161886 ret void1887}1888 1889define void @v_shuffle_v3i32_v3i32__5_3_1(ptr addrspace(1) inreg %ptr) {1890; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_3_1:1891; GFX900: ; %bb.0:1892; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1893; GFX900-NEXT: ;;#ASMSTART1894; GFX900-NEXT: ; def v[3:5]1895; GFX900-NEXT: ;;#ASMEND1896; GFX900-NEXT: v_mov_b32_e32 v6, 01897; GFX900-NEXT: ;;#ASMSTART1898; GFX900-NEXT: ; def v[0:2]1899; GFX900-NEXT: ;;#ASMEND1900; GFX900-NEXT: v_mov_b32_e32 v3, v01901; GFX900-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]1902; GFX900-NEXT: s_waitcnt vmcnt(0)1903; GFX900-NEXT: s_setpc_b64 s[30:31]1904;1905; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_3_1:1906; GFX90A: ; %bb.0:1907; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1908; GFX90A-NEXT: ;;#ASMSTART1909; GFX90A-NEXT: ; def v[4:6]1910; GFX90A-NEXT: ;;#ASMEND1911; GFX90A-NEXT: v_mov_b32_e32 v7, 01912; GFX90A-NEXT: ;;#ASMSTART1913; GFX90A-NEXT: ; def v[0:2]1914; GFX90A-NEXT: ;;#ASMEND1915; GFX90A-NEXT: v_mov_b32_e32 v3, v01916; GFX90A-NEXT: v_mov_b32_e32 v4, v51917; GFX90A-NEXT: global_store_dwordx3 v7, v[2:4], s[16:17]1918; GFX90A-NEXT: s_waitcnt vmcnt(0)1919; GFX90A-NEXT: s_setpc_b64 s[30:31]1920;1921; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_3_1:1922; GFX942: ; %bb.0:1923; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1924; GFX942-NEXT: ;;#ASMSTART1925; GFX942-NEXT: ; def v[4:6]1926; GFX942-NEXT: ;;#ASMEND1927; GFX942-NEXT: v_mov_b32_e32 v7, 01928; GFX942-NEXT: ;;#ASMSTART1929; GFX942-NEXT: ; def v[0:2]1930; GFX942-NEXT: ;;#ASMEND1931; GFX942-NEXT: v_mov_b32_e32 v4, v51932; GFX942-NEXT: v_mov_b32_e32 v3, v01933; GFX942-NEXT: global_store_dwordx3 v7, v[2:4], s[0:1]1934; GFX942-NEXT: s_waitcnt vmcnt(0)1935; GFX942-NEXT: s_setpc_b64 s[30:31]1936 %vec0 = call <3 x i32> asm "; def $0", "=v"()1937 %vec1 = call <3 x i32> asm "; def $0", "=v"()1938 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 1>1939 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161940 ret void1941}1942 1943define void @v_shuffle_v3i32_v3i32__5_4_1(ptr addrspace(1) inreg %ptr) {1944; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_4_1:1945; GFX900: ; %bb.0:1946; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1947; GFX900-NEXT: ;;#ASMSTART1948; GFX900-NEXT: ; def v[3:5]1949; GFX900-NEXT: ;;#ASMEND1950; GFX900-NEXT: v_mov_b32_e32 v6, 01951; GFX900-NEXT: ;;#ASMSTART1952; GFX900-NEXT: ; def v[0:2]1953; GFX900-NEXT: ;;#ASMEND1954; GFX900-NEXT: v_mov_b32_e32 v3, v11955; GFX900-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]1956; GFX900-NEXT: s_waitcnt vmcnt(0)1957; GFX900-NEXT: s_setpc_b64 s[30:31]1958;1959; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_4_1:1960; GFX90A: ; %bb.0:1961; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1962; GFX90A-NEXT: ;;#ASMSTART1963; GFX90A-NEXT: ; def v[4:6]1964; GFX90A-NEXT: ;;#ASMEND1965; GFX90A-NEXT: v_mov_b32_e32 v7, 01966; GFX90A-NEXT: ;;#ASMSTART1967; GFX90A-NEXT: ; def v[0:2]1968; GFX90A-NEXT: ;;#ASMEND1969; GFX90A-NEXT: v_mov_b32_e32 v3, v11970; GFX90A-NEXT: v_mov_b32_e32 v4, v51971; GFX90A-NEXT: global_store_dwordx3 v7, v[2:4], s[16:17]1972; GFX90A-NEXT: s_waitcnt vmcnt(0)1973; GFX90A-NEXT: s_setpc_b64 s[30:31]1974;1975; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_4_1:1976; GFX942: ; %bb.0:1977; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1978; GFX942-NEXT: ;;#ASMSTART1979; GFX942-NEXT: ; def v[4:6]1980; GFX942-NEXT: ;;#ASMEND1981; GFX942-NEXT: v_mov_b32_e32 v7, 01982; GFX942-NEXT: ;;#ASMSTART1983; GFX942-NEXT: ; def v[0:2]1984; GFX942-NEXT: ;;#ASMEND1985; GFX942-NEXT: v_mov_b32_e32 v4, v51986; GFX942-NEXT: v_mov_b32_e32 v3, v11987; GFX942-NEXT: global_store_dwordx3 v7, v[2:4], s[0:1]1988; GFX942-NEXT: s_waitcnt vmcnt(0)1989; GFX942-NEXT: s_setpc_b64 s[30:31]1990 %vec0 = call <3 x i32> asm "; def $0", "=v"()1991 %vec1 = call <3 x i32> asm "; def $0", "=v"()1992 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 1>1993 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161994 ret void1995}1996 1997define void @v_shuffle_v3i32_v3i32__u_2_2(ptr addrspace(1) inreg %ptr) {1998; GFX900-LABEL: v_shuffle_v3i32_v3i32__u_2_2:1999; GFX900: ; %bb.0:2000; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2001; GFX900-NEXT: v_mov_b32_e32 v4, 02002; GFX900-NEXT: ;;#ASMSTART2003; GFX900-NEXT: ; def v[0:2]2004; GFX900-NEXT: ;;#ASMEND2005; GFX900-NEXT: v_mov_b32_e32 v3, v22006; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]2007; GFX900-NEXT: s_waitcnt vmcnt(0)2008; GFX900-NEXT: s_setpc_b64 s[30:31]2009;2010; GFX90A-LABEL: v_shuffle_v3i32_v3i32__u_2_2:2011; GFX90A: ; %bb.0:2012; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2013; GFX90A-NEXT: ;;#ASMSTART2014; GFX90A-NEXT: ; def v[0:2]2015; GFX90A-NEXT: ;;#ASMEND2016; GFX90A-NEXT: v_mov_b32_e32 v3, 02017; GFX90A-NEXT: v_mov_b32_e32 v1, v22018; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17]2019; GFX90A-NEXT: s_waitcnt vmcnt(0)2020; GFX90A-NEXT: s_setpc_b64 s[30:31]2021;2022; GFX942-LABEL: v_shuffle_v3i32_v3i32__u_2_2:2023; GFX942: ; %bb.0:2024; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2025; GFX942-NEXT: ;;#ASMSTART2026; GFX942-NEXT: ; def v[0:2]2027; GFX942-NEXT: ;;#ASMEND2028; GFX942-NEXT: v_mov_b32_e32 v3, 02029; GFX942-NEXT: v_mov_b32_e32 v1, v22030; GFX942-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1]2031; GFX942-NEXT: s_waitcnt vmcnt(0)2032; GFX942-NEXT: s_setpc_b64 s[30:31]2033 %vec0 = call <3 x i32> asm "; def $0", "=v"()2034 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 poison, i32 2, i32 2>2035 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 162036 ret void2037}2038 2039define void @v_shuffle_v3i32_v3i32__0_2_2(ptr addrspace(1) inreg %ptr) {2040; GFX900-LABEL: v_shuffle_v3i32_v3i32__0_2_2:2041; GFX900: ; %bb.0:2042; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2043; GFX900-NEXT: ;;#ASMSTART2044; GFX900-NEXT: ; def v[0:2]2045; GFX900-NEXT: ;;#ASMEND2046; GFX900-NEXT: v_mov_b32_e32 v3, 02047; GFX900-NEXT: v_mov_b32_e32 v1, v22048; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17]2049; GFX900-NEXT: s_waitcnt vmcnt(0)2050; GFX900-NEXT: s_setpc_b64 s[30:31]2051;2052; GFX90A-LABEL: v_shuffle_v3i32_v3i32__0_2_2:2053; GFX90A: ; %bb.0:2054; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2055; GFX90A-NEXT: ;;#ASMSTART2056; GFX90A-NEXT: ; def v[0:2]2057; GFX90A-NEXT: ;;#ASMEND2058; GFX90A-NEXT: v_mov_b32_e32 v3, 02059; GFX90A-NEXT: v_mov_b32_e32 v1, v22060; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17]2061; GFX90A-NEXT: s_waitcnt vmcnt(0)2062; GFX90A-NEXT: s_setpc_b64 s[30:31]2063;2064; GFX942-LABEL: v_shuffle_v3i32_v3i32__0_2_2:2065; GFX942: ; %bb.0:2066; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2067; GFX942-NEXT: ;;#ASMSTART2068; GFX942-NEXT: ; def v[0:2]2069; GFX942-NEXT: ;;#ASMEND2070; GFX942-NEXT: v_mov_b32_e32 v3, 02071; GFX942-NEXT: v_mov_b32_e32 v1, v22072; GFX942-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1]2073; GFX942-NEXT: s_waitcnt vmcnt(0)2074; GFX942-NEXT: s_setpc_b64 s[30:31]2075 %vec0 = call <3 x i32> asm "; def $0", "=v"()2076 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 0, i32 2, i32 2>2077 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 162078 ret void2079}2080 2081define void @v_shuffle_v3i32_v3i32__1_2_2(ptr addrspace(1) inreg %ptr) {2082; GFX900-LABEL: v_shuffle_v3i32_v3i32__1_2_2:2083; GFX900: ; %bb.0:2084; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2085; GFX900-NEXT: v_mov_b32_e32 v4, 02086; GFX900-NEXT: ;;#ASMSTART2087; GFX900-NEXT: ; def v[0:2]2088; GFX900-NEXT: ;;#ASMEND2089; GFX900-NEXT: v_mov_b32_e32 v3, v22090; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]2091; GFX900-NEXT: s_waitcnt vmcnt(0)2092; GFX900-NEXT: s_setpc_b64 s[30:31]2093;2094; GFX90A-LABEL: v_shuffle_v3i32_v3i32__1_2_2:2095; GFX90A: ; %bb.0:2096; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2097; GFX90A-NEXT: ;;#ASMSTART2098; GFX90A-NEXT: ; def v[0:2]2099; GFX90A-NEXT: ;;#ASMEND2100; GFX90A-NEXT: v_mov_b32_e32 v3, 02101; GFX90A-NEXT: v_mov_b32_e32 v0, v12102; GFX90A-NEXT: v_mov_b32_e32 v1, v22103; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17]2104; GFX90A-NEXT: s_waitcnt vmcnt(0)2105; GFX90A-NEXT: s_setpc_b64 s[30:31]2106;2107; GFX942-LABEL: v_shuffle_v3i32_v3i32__1_2_2:2108; GFX942: ; %bb.0:2109; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2110; GFX942-NEXT: ;;#ASMSTART2111; GFX942-NEXT: ; def v[0:2]2112; GFX942-NEXT: ;;#ASMEND2113; GFX942-NEXT: v_mov_b32_e32 v3, 02114; GFX942-NEXT: v_mov_b32_e32 v0, v12115; GFX942-NEXT: v_mov_b32_e32 v1, v22116; GFX942-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1]2117; GFX942-NEXT: s_waitcnt vmcnt(0)2118; GFX942-NEXT: s_setpc_b64 s[30:31]2119 %vec0 = call <3 x i32> asm "; def $0", "=v"()2120 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 1, i32 2, i32 2>2121 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 162122 ret void2123}2124 2125define void @v_shuffle_v3i32_v3i32__2_2_2(ptr addrspace(1) inreg %ptr) {2126; GFX900-LABEL: v_shuffle_v3i32_v3i32__2_2_2:2127; GFX900: ; %bb.0:2128; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2129; GFX900-NEXT: v_mov_b32_e32 v5, 02130; GFX900-NEXT: ;;#ASMSTART2131; GFX900-NEXT: ; def v[0:2]2132; GFX900-NEXT: ;;#ASMEND2133; GFX900-NEXT: v_mov_b32_e32 v3, v22134; GFX900-NEXT: v_mov_b32_e32 v4, v22135; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]2136; GFX900-NEXT: s_waitcnt vmcnt(0)2137; GFX900-NEXT: s_setpc_b64 s[30:31]2138;2139; GFX90A-LABEL: v_shuffle_v3i32_v3i32__2_2_2:2140; GFX90A: ; %bb.0:2141; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2142; GFX90A-NEXT: v_mov_b32_e32 v5, 02143; GFX90A-NEXT: ;;#ASMSTART2144; GFX90A-NEXT: ; def v[0:2]2145; GFX90A-NEXT: ;;#ASMEND2146; GFX90A-NEXT: v_mov_b32_e32 v3, v22147; GFX90A-NEXT: v_mov_b32_e32 v4, v22148; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]2149; GFX90A-NEXT: s_waitcnt vmcnt(0)2150; GFX90A-NEXT: s_setpc_b64 s[30:31]2151;2152; GFX942-LABEL: v_shuffle_v3i32_v3i32__2_2_2:2153; GFX942: ; %bb.0:2154; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2155; GFX942-NEXT: v_mov_b32_e32 v5, 02156; GFX942-NEXT: ;;#ASMSTART2157; GFX942-NEXT: ; def v[0:2]2158; GFX942-NEXT: ;;#ASMEND2159; GFX942-NEXT: s_nop 02160; GFX942-NEXT: v_mov_b32_e32 v3, v22161; GFX942-NEXT: v_mov_b32_e32 v4, v22162; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]2163; GFX942-NEXT: s_waitcnt vmcnt(0)2164; GFX942-NEXT: s_setpc_b64 s[30:31]2165 %vec0 = call <3 x i32> asm "; def $0", "=v"()2166 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 2, i32 2, i32 2>2167 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 162168 ret void2169}2170 2171define void @v_shuffle_v3i32_v3i32__3_2_2(ptr addrspace(1) inreg %ptr) {2172; GFX900-LABEL: v_shuffle_v3i32_v3i32__3_2_2:2173; GFX900: ; %bb.0:2174; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2175; GFX900-NEXT: v_mov_b32_e32 v4, 02176; GFX900-NEXT: ;;#ASMSTART2177; GFX900-NEXT: ; def v[0:2]2178; GFX900-NEXT: ;;#ASMEND2179; GFX900-NEXT: v_mov_b32_e32 v3, v22180; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]2181; GFX900-NEXT: s_waitcnt vmcnt(0)2182; GFX900-NEXT: s_setpc_b64 s[30:31]2183;2184; GFX90A-LABEL: v_shuffle_v3i32_v3i32__3_2_2:2185; GFX90A: ; %bb.0:2186; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2187; GFX90A-NEXT: ;;#ASMSTART2188; GFX90A-NEXT: ; def v[0:2]2189; GFX90A-NEXT: ;;#ASMEND2190; GFX90A-NEXT: v_mov_b32_e32 v3, 02191; GFX90A-NEXT: v_mov_b32_e32 v1, v22192; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17]2193; GFX90A-NEXT: s_waitcnt vmcnt(0)2194; GFX90A-NEXT: s_setpc_b64 s[30:31]2195;2196; GFX942-LABEL: v_shuffle_v3i32_v3i32__3_2_2:2197; GFX942: ; %bb.0:2198; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2199; GFX942-NEXT: ;;#ASMSTART2200; GFX942-NEXT: ; def v[0:2]2201; GFX942-NEXT: ;;#ASMEND2202; GFX942-NEXT: v_mov_b32_e32 v3, 02203; GFX942-NEXT: v_mov_b32_e32 v1, v22204; GFX942-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1]2205; GFX942-NEXT: s_waitcnt vmcnt(0)2206; GFX942-NEXT: s_setpc_b64 s[30:31]2207 %vec0 = call <3 x i32> asm "; def $0", "=v"()2208 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 3, i32 2, i32 2>2209 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 162210 ret void2211}2212 2213define void @v_shuffle_v3i32_v3i32__4_2_2(ptr addrspace(1) inreg %ptr) {2214; GFX900-LABEL: v_shuffle_v3i32_v3i32__4_2_2:2215; GFX900: ; %bb.0:2216; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2217; GFX900-NEXT: ;;#ASMSTART2218; GFX900-NEXT: ; def v[1:3]2219; GFX900-NEXT: ;;#ASMEND2220; GFX900-NEXT: ;;#ASMSTART2221; GFX900-NEXT: ; def v[0:2]2222; GFX900-NEXT: ;;#ASMEND2223; GFX900-NEXT: v_mov_b32_e32 v4, 02224; GFX900-NEXT: v_mov_b32_e32 v2, v32225; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]2226; GFX900-NEXT: s_waitcnt vmcnt(0)2227; GFX900-NEXT: s_setpc_b64 s[30:31]2228;2229; GFX90A-LABEL: v_shuffle_v3i32_v3i32__4_2_2:2230; GFX90A: ; %bb.0:2231; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2232; GFX90A-NEXT: ;;#ASMSTART2233; GFX90A-NEXT: ; def v[0:2]2234; GFX90A-NEXT: ;;#ASMEND2235; GFX90A-NEXT: v_mov_b32_e32 v3, 02236; GFX90A-NEXT: ;;#ASMSTART2237; GFX90A-NEXT: ; def v[4:6]2238; GFX90A-NEXT: ;;#ASMEND2239; GFX90A-NEXT: v_mov_b32_e32 v0, v52240; GFX90A-NEXT: v_mov_b32_e32 v1, v22241; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17]2242; GFX90A-NEXT: s_waitcnt vmcnt(0)2243; GFX90A-NEXT: s_setpc_b64 s[30:31]2244;2245; GFX942-LABEL: v_shuffle_v3i32_v3i32__4_2_2:2246; GFX942: ; %bb.0:2247; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2248; GFX942-NEXT: ;;#ASMSTART2249; GFX942-NEXT: ; def v[0:2]2250; GFX942-NEXT: ;;#ASMEND2251; GFX942-NEXT: v_mov_b32_e32 v3, 02252; GFX942-NEXT: ;;#ASMSTART2253; GFX942-NEXT: ; def v[4:6]2254; GFX942-NEXT: ;;#ASMEND2255; GFX942-NEXT: v_mov_b32_e32 v1, v22256; GFX942-NEXT: v_mov_b32_e32 v0, v52257; GFX942-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1]2258; GFX942-NEXT: s_waitcnt vmcnt(0)2259; GFX942-NEXT: s_setpc_b64 s[30:31]2260 %vec0 = call <3 x i32> asm "; def $0", "=v"()2261 %vec1 = call <3 x i32> asm "; def $0", "=v"()2262 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 2, i32 2>2263 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 162264 ret void2265}2266 2267define void @v_shuffle_v3i32_v3i32__5_2_2(ptr addrspace(1) inreg %ptr) {2268; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_2_2:2269; GFX900: ; %bb.0:2270; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2271; GFX900-NEXT: v_mov_b32_e32 v5, 02272; GFX900-NEXT: ;;#ASMSTART2273; GFX900-NEXT: ; def v[1:3]2274; GFX900-NEXT: ;;#ASMEND2275; GFX900-NEXT: v_mov_b32_e32 v4, v32276; GFX900-NEXT: ;;#ASMSTART2277; GFX900-NEXT: ; def v[0:2]2278; GFX900-NEXT: ;;#ASMEND2279; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]2280; GFX900-NEXT: s_waitcnt vmcnt(0)2281; GFX900-NEXT: s_setpc_b64 s[30:31]2282;2283; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_2_2:2284; GFX90A: ; %bb.0:2285; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2286; GFX90A-NEXT: ;;#ASMSTART2287; GFX90A-NEXT: ; def v[2:4]2288; GFX90A-NEXT: ;;#ASMEND2289; GFX90A-NEXT: v_mov_b32_e32 v5, 02290; GFX90A-NEXT: v_mov_b32_e32 v3, v42291; GFX90A-NEXT: ;;#ASMSTART2292; GFX90A-NEXT: ; def v[0:2]2293; GFX90A-NEXT: ;;#ASMEND2294; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]2295; GFX90A-NEXT: s_waitcnt vmcnt(0)2296; GFX90A-NEXT: s_setpc_b64 s[30:31]2297;2298; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_2_2:2299; GFX942: ; %bb.0:2300; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2301; GFX942-NEXT: ;;#ASMSTART2302; GFX942-NEXT: ; def v[2:4]2303; GFX942-NEXT: ;;#ASMEND2304; GFX942-NEXT: v_mov_b32_e32 v5, 02305; GFX942-NEXT: v_mov_b32_e32 v3, v42306; GFX942-NEXT: ;;#ASMSTART2307; GFX942-NEXT: ; def v[0:2]2308; GFX942-NEXT: ;;#ASMEND2309; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]2310; GFX942-NEXT: s_waitcnt vmcnt(0)2311; GFX942-NEXT: s_setpc_b64 s[30:31]2312 %vec0 = call <3 x i32> asm "; def $0", "=v"()2313 %vec1 = call <3 x i32> asm "; def $0", "=v"()2314 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 2>2315 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 162316 ret void2317}2318 2319define void @v_shuffle_v3i32_v3i32__5_u_2(ptr addrspace(1) inreg %ptr) {2320; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_u_2:2321; GFX900: ; %bb.0:2322; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2323; GFX900-NEXT: v_mov_b32_e32 v5, 02324; GFX900-NEXT: ;;#ASMSTART2325; GFX900-NEXT: ; def v[2:4]2326; GFX900-NEXT: ;;#ASMEND2327; GFX900-NEXT: ;;#ASMSTART2328; GFX900-NEXT: ; def v[0:2]2329; GFX900-NEXT: ;;#ASMEND2330; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]2331; GFX900-NEXT: s_waitcnt vmcnt(0)2332; GFX900-NEXT: s_setpc_b64 s[30:31]2333;2334; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_u_2:2335; GFX90A: ; %bb.0:2336; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2337; GFX90A-NEXT: v_mov_b32_e32 v5, 02338; GFX90A-NEXT: ;;#ASMSTART2339; GFX90A-NEXT: ; def v[2:4]2340; GFX90A-NEXT: ;;#ASMEND2341; GFX90A-NEXT: ;;#ASMSTART2342; GFX90A-NEXT: ; def v[0:2]2343; GFX90A-NEXT: ;;#ASMEND2344; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]2345; GFX90A-NEXT: s_waitcnt vmcnt(0)2346; GFX90A-NEXT: s_setpc_b64 s[30:31]2347;2348; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_u_2:2349; GFX942: ; %bb.0:2350; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2351; GFX942-NEXT: v_mov_b32_e32 v5, 02352; GFX942-NEXT: ;;#ASMSTART2353; GFX942-NEXT: ; def v[2:4]2354; GFX942-NEXT: ;;#ASMEND2355; GFX942-NEXT: s_nop 02356; GFX942-NEXT: ;;#ASMSTART2357; GFX942-NEXT: ; def v[0:2]2358; GFX942-NEXT: ;;#ASMEND2359; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]2360; GFX942-NEXT: s_waitcnt vmcnt(0)2361; GFX942-NEXT: s_setpc_b64 s[30:31]2362 %vec0 = call <3 x i32> asm "; def $0", "=v"()2363 %vec1 = call <3 x i32> asm "; def $0", "=v"()2364 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 2>2365 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 162366 ret void2367}2368 2369define void @v_shuffle_v3i32_v3i32__5_0_2(ptr addrspace(1) inreg %ptr) {2370; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_0_2:2371; GFX900: ; %bb.0:2372; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2373; GFX900-NEXT: ;;#ASMSTART2374; GFX900-NEXT: ; def v[3:5]2375; GFX900-NEXT: ;;#ASMEND2376; GFX900-NEXT: v_mov_b32_e32 v6, 02377; GFX900-NEXT: v_mov_b32_e32 v4, v52378; GFX900-NEXT: ;;#ASMSTART2379; GFX900-NEXT: ; def v[0:2]2380; GFX900-NEXT: ;;#ASMEND2381; GFX900-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]2382; GFX900-NEXT: s_waitcnt vmcnt(0)2383; GFX900-NEXT: s_setpc_b64 s[30:31]2384;2385; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_0_2:2386; GFX90A: ; %bb.0:2387; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2388; GFX90A-NEXT: ;;#ASMSTART2389; GFX90A-NEXT: ; def v[4:6]2390; GFX90A-NEXT: ;;#ASMEND2391; GFX90A-NEXT: v_mov_b32_e32 v7, 02392; GFX90A-NEXT: v_mov_b32_e32 v3, v42393; GFX90A-NEXT: v_mov_b32_e32 v4, v62394; GFX90A-NEXT: ;;#ASMSTART2395; GFX90A-NEXT: ; def v[0:2]2396; GFX90A-NEXT: ;;#ASMEND2397; GFX90A-NEXT: global_store_dwordx3 v7, v[2:4], s[16:17]2398; GFX90A-NEXT: s_waitcnt vmcnt(0)2399; GFX90A-NEXT: s_setpc_b64 s[30:31]2400;2401; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_0_2:2402; GFX942: ; %bb.0:2403; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2404; GFX942-NEXT: ;;#ASMSTART2405; GFX942-NEXT: ; def v[4:6]2406; GFX942-NEXT: ;;#ASMEND2407; GFX942-NEXT: v_mov_b32_e32 v7, 02408; GFX942-NEXT: v_mov_b32_e32 v3, v42409; GFX942-NEXT: v_mov_b32_e32 v4, v62410; GFX942-NEXT: ;;#ASMSTART2411; GFX942-NEXT: ; def v[0:2]2412; GFX942-NEXT: ;;#ASMEND2413; GFX942-NEXT: global_store_dwordx3 v7, v[2:4], s[0:1]2414; GFX942-NEXT: s_waitcnt vmcnt(0)2415; GFX942-NEXT: s_setpc_b64 s[30:31]2416 %vec0 = call <3 x i32> asm "; def $0", "=v"()2417 %vec1 = call <3 x i32> asm "; def $0", "=v"()2418 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 2>2419 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 162420 ret void2421}2422 2423define void @v_shuffle_v3i32_v3i32__5_1_2(ptr addrspace(1) inreg %ptr) {2424; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_1_2:2425; GFX900: ; %bb.0:2426; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2427; GFX900-NEXT: v_mov_b32_e32 v5, 02428; GFX900-NEXT: ;;#ASMSTART2429; GFX900-NEXT: ; def v[2:4]2430; GFX900-NEXT: ;;#ASMEND2431; GFX900-NEXT: ;;#ASMSTART2432; GFX900-NEXT: ; def v[0:2]2433; GFX900-NEXT: ;;#ASMEND2434; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]2435; GFX900-NEXT: s_waitcnt vmcnt(0)2436; GFX900-NEXT: s_setpc_b64 s[30:31]2437;2438; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_1_2:2439; GFX90A: ; %bb.0:2440; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2441; GFX90A-NEXT: v_mov_b32_e32 v5, 02442; GFX90A-NEXT: ;;#ASMSTART2443; GFX90A-NEXT: ; def v[2:4]2444; GFX90A-NEXT: ;;#ASMEND2445; GFX90A-NEXT: ;;#ASMSTART2446; GFX90A-NEXT: ; def v[0:2]2447; GFX90A-NEXT: ;;#ASMEND2448; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]2449; GFX90A-NEXT: s_waitcnt vmcnt(0)2450; GFX90A-NEXT: s_setpc_b64 s[30:31]2451;2452; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_1_2:2453; GFX942: ; %bb.0:2454; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2455; GFX942-NEXT: v_mov_b32_e32 v5, 02456; GFX942-NEXT: ;;#ASMSTART2457; GFX942-NEXT: ; def v[2:4]2458; GFX942-NEXT: ;;#ASMEND2459; GFX942-NEXT: s_nop 02460; GFX942-NEXT: ;;#ASMSTART2461; GFX942-NEXT: ; def v[0:2]2462; GFX942-NEXT: ;;#ASMEND2463; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]2464; GFX942-NEXT: s_waitcnt vmcnt(0)2465; GFX942-NEXT: s_setpc_b64 s[30:31]2466 %vec0 = call <3 x i32> asm "; def $0", "=v"()2467 %vec1 = call <3 x i32> asm "; def $0", "=v"()2468 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 2>2469 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 162470 ret void2471}2472 2473define void @v_shuffle_v3i32_v3i32__5_3_2(ptr addrspace(1) inreg %ptr) {2474; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_3_2:2475; GFX900: ; %bb.0:2476; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2477; GFX900-NEXT: ;;#ASMSTART2478; GFX900-NEXT: ; def v[2:4]2479; GFX900-NEXT: ;;#ASMEND2480; GFX900-NEXT: v_mov_b32_e32 v5, 02481; GFX900-NEXT: ;;#ASMSTART2482; GFX900-NEXT: ; def v[0:2]2483; GFX900-NEXT: ;;#ASMEND2484; GFX900-NEXT: v_mov_b32_e32 v3, v02485; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]2486; GFX900-NEXT: s_waitcnt vmcnt(0)2487; GFX900-NEXT: s_setpc_b64 s[30:31]2488;2489; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_3_2:2490; GFX90A: ; %bb.0:2491; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2492; GFX90A-NEXT: ;;#ASMSTART2493; GFX90A-NEXT: ; def v[2:4]2494; GFX90A-NEXT: ;;#ASMEND2495; GFX90A-NEXT: v_mov_b32_e32 v5, 02496; GFX90A-NEXT: ;;#ASMSTART2497; GFX90A-NEXT: ; def v[0:2]2498; GFX90A-NEXT: ;;#ASMEND2499; GFX90A-NEXT: v_mov_b32_e32 v3, v02500; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]2501; GFX90A-NEXT: s_waitcnt vmcnt(0)2502; GFX90A-NEXT: s_setpc_b64 s[30:31]2503;2504; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_3_2:2505; GFX942: ; %bb.0:2506; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2507; GFX942-NEXT: ;;#ASMSTART2508; GFX942-NEXT: ; def v[2:4]2509; GFX942-NEXT: ;;#ASMEND2510; GFX942-NEXT: v_mov_b32_e32 v5, 02511; GFX942-NEXT: ;;#ASMSTART2512; GFX942-NEXT: ; def v[0:2]2513; GFX942-NEXT: ;;#ASMEND2514; GFX942-NEXT: s_nop 02515; GFX942-NEXT: v_mov_b32_e32 v3, v02516; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]2517; GFX942-NEXT: s_waitcnt vmcnt(0)2518; GFX942-NEXT: s_setpc_b64 s[30:31]2519 %vec0 = call <3 x i32> asm "; def $0", "=v"()2520 %vec1 = call <3 x i32> asm "; def $0", "=v"()2521 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 2>2522 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 162523 ret void2524}2525 2526define void @v_shuffle_v3i32_v3i32__5_4_2(ptr addrspace(1) inreg %ptr) {2527; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_4_2:2528; GFX900: ; %bb.0:2529; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2530; GFX900-NEXT: ;;#ASMSTART2531; GFX900-NEXT: ; def v[2:4]2532; GFX900-NEXT: ;;#ASMEND2533; GFX900-NEXT: v_mov_b32_e32 v5, 02534; GFX900-NEXT: ;;#ASMSTART2535; GFX900-NEXT: ; def v[0:2]2536; GFX900-NEXT: ;;#ASMEND2537; GFX900-NEXT: v_mov_b32_e32 v3, v12538; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]2539; GFX900-NEXT: s_waitcnt vmcnt(0)2540; GFX900-NEXT: s_setpc_b64 s[30:31]2541;2542; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_4_2:2543; GFX90A: ; %bb.0:2544; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2545; GFX90A-NEXT: ;;#ASMSTART2546; GFX90A-NEXT: ; def v[2:4]2547; GFX90A-NEXT: ;;#ASMEND2548; GFX90A-NEXT: v_mov_b32_e32 v5, 02549; GFX90A-NEXT: ;;#ASMSTART2550; GFX90A-NEXT: ; def v[0:2]2551; GFX90A-NEXT: ;;#ASMEND2552; GFX90A-NEXT: v_mov_b32_e32 v3, v12553; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]2554; GFX90A-NEXT: s_waitcnt vmcnt(0)2555; GFX90A-NEXT: s_setpc_b64 s[30:31]2556;2557; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_4_2:2558; GFX942: ; %bb.0:2559; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2560; GFX942-NEXT: ;;#ASMSTART2561; GFX942-NEXT: ; def v[2:4]2562; GFX942-NEXT: ;;#ASMEND2563; GFX942-NEXT: v_mov_b32_e32 v5, 02564; GFX942-NEXT: ;;#ASMSTART2565; GFX942-NEXT: ; def v[0:2]2566; GFX942-NEXT: ;;#ASMEND2567; GFX942-NEXT: s_nop 02568; GFX942-NEXT: v_mov_b32_e32 v3, v12569; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]2570; GFX942-NEXT: s_waitcnt vmcnt(0)2571; GFX942-NEXT: s_setpc_b64 s[30:31]2572 %vec0 = call <3 x i32> asm "; def $0", "=v"()2573 %vec1 = call <3 x i32> asm "; def $0", "=v"()2574 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 2>2575 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 162576 ret void2577}2578 2579define void @v_shuffle_v3i32_v3i32__u_3_3(ptr addrspace(1) inreg %ptr) {2580; GFX9-LABEL: v_shuffle_v3i32_v3i32__u_3_3:2581; GFX9: ; %bb.0:2582; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2583; GFX9-NEXT: s_setpc_b64 s[30:31]2584 %vec0 = call <3 x i32> asm "; def $0", "=v"()2585 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 poison, i32 3, i32 3>2586 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 162587 ret void2588}2589 2590define void @v_shuffle_v3i32_v3i32__0_3_3(ptr addrspace(1) inreg %ptr) {2591; GFX900-LABEL: v_shuffle_v3i32_v3i32__0_3_3:2592; GFX900: ; %bb.0:2593; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2594; GFX900-NEXT: v_mov_b32_e32 v3, 02595; GFX900-NEXT: ;;#ASMSTART2596; GFX900-NEXT: ; def v[0:2]2597; GFX900-NEXT: ;;#ASMEND2598; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17]2599; GFX900-NEXT: s_waitcnt vmcnt(0)2600; GFX900-NEXT: s_setpc_b64 s[30:31]2601;2602; GFX90A-LABEL: v_shuffle_v3i32_v3i32__0_3_3:2603; GFX90A: ; %bb.0:2604; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2605; GFX90A-NEXT: v_mov_b32_e32 v3, 02606; GFX90A-NEXT: ;;#ASMSTART2607; GFX90A-NEXT: ; def v[0:2]2608; GFX90A-NEXT: ;;#ASMEND2609; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17]2610; GFX90A-NEXT: s_waitcnt vmcnt(0)2611; GFX90A-NEXT: s_setpc_b64 s[30:31]2612;2613; GFX942-LABEL: v_shuffle_v3i32_v3i32__0_3_3:2614; GFX942: ; %bb.0:2615; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2616; GFX942-NEXT: v_mov_b32_e32 v3, 02617; GFX942-NEXT: ;;#ASMSTART2618; GFX942-NEXT: ; def v[0:2]2619; GFX942-NEXT: ;;#ASMEND2620; GFX942-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1]2621; GFX942-NEXT: s_waitcnt vmcnt(0)2622; GFX942-NEXT: s_setpc_b64 s[30:31]2623 %vec0 = call <3 x i32> asm "; def $0", "=v"()2624 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 0, i32 3, i32 3>2625 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 162626 ret void2627}2628 2629define void @v_shuffle_v3i32_v3i32__1_3_3(ptr addrspace(1) inreg %ptr) {2630; GFX900-LABEL: v_shuffle_v3i32_v3i32__1_3_3:2631; GFX900: ; %bb.0:2632; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2633; GFX900-NEXT: v_mov_b32_e32 v3, 02634; GFX900-NEXT: ;;#ASMSTART2635; GFX900-NEXT: ; def v[0:2]2636; GFX900-NEXT: ;;#ASMEND2637; GFX900-NEXT: global_store_dwordx3 v3, v[1:3], s[16:17]2638; GFX900-NEXT: s_waitcnt vmcnt(0)2639; GFX900-NEXT: s_setpc_b64 s[30:31]2640;2641; GFX90A-LABEL: v_shuffle_v3i32_v3i32__1_3_3:2642; GFX90A: ; %bb.0:2643; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2644; GFX90A-NEXT: ;;#ASMSTART2645; GFX90A-NEXT: ; def v[0:2]2646; GFX90A-NEXT: ;;#ASMEND2647; GFX90A-NEXT: v_mov_b32_e32 v3, 02648; GFX90A-NEXT: v_mov_b32_e32 v0, v12649; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17]2650; GFX90A-NEXT: s_waitcnt vmcnt(0)2651; GFX90A-NEXT: s_setpc_b64 s[30:31]2652;2653; GFX942-LABEL: v_shuffle_v3i32_v3i32__1_3_3:2654; GFX942: ; %bb.0:2655; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2656; GFX942-NEXT: ;;#ASMSTART2657; GFX942-NEXT: ; def v[0:2]2658; GFX942-NEXT: ;;#ASMEND2659; GFX942-NEXT: v_mov_b32_e32 v3, 02660; GFX942-NEXT: v_mov_b32_e32 v0, v12661; GFX942-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1]2662; GFX942-NEXT: s_waitcnt vmcnt(0)2663; GFX942-NEXT: s_setpc_b64 s[30:31]2664 %vec0 = call <3 x i32> asm "; def $0", "=v"()2665 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 1, i32 3, i32 3>2666 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 162667 ret void2668}2669 2670define void @v_shuffle_v3i32_v3i32__2_3_3(ptr addrspace(1) inreg %ptr) {2671; GFX900-LABEL: v_shuffle_v3i32_v3i32__2_3_3:2672; GFX900: ; %bb.0:2673; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2674; GFX900-NEXT: v_mov_b32_e32 v3, 02675; GFX900-NEXT: ;;#ASMSTART2676; GFX900-NEXT: ; def v[0:2]2677; GFX900-NEXT: ;;#ASMEND2678; GFX900-NEXT: global_store_dwordx3 v3, v[2:4], s[16:17]2679; GFX900-NEXT: s_waitcnt vmcnt(0)2680; GFX900-NEXT: s_setpc_b64 s[30:31]2681;2682; GFX90A-LABEL: v_shuffle_v3i32_v3i32__2_3_3:2683; GFX90A: ; %bb.0:2684; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2685; GFX90A-NEXT: v_mov_b32_e32 v3, 02686; GFX90A-NEXT: ;;#ASMSTART2687; GFX90A-NEXT: ; def v[0:2]2688; GFX90A-NEXT: ;;#ASMEND2689; GFX90A-NEXT: global_store_dwordx3 v3, v[2:4], s[16:17]2690; GFX90A-NEXT: s_waitcnt vmcnt(0)2691; GFX90A-NEXT: s_setpc_b64 s[30:31]2692;2693; GFX942-LABEL: v_shuffle_v3i32_v3i32__2_3_3:2694; GFX942: ; %bb.0:2695; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2696; GFX942-NEXT: v_mov_b32_e32 v3, 02697; GFX942-NEXT: ;;#ASMSTART2698; GFX942-NEXT: ; def v[0:2]2699; GFX942-NEXT: ;;#ASMEND2700; GFX942-NEXT: global_store_dwordx3 v3, v[2:4], s[0:1]2701; GFX942-NEXT: s_waitcnt vmcnt(0)2702; GFX942-NEXT: s_setpc_b64 s[30:31]2703 %vec0 = call <3 x i32> asm "; def $0", "=v"()2704 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 2, i32 3, i32 3>2705 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 162706 ret void2707}2708 2709define void @v_shuffle_v3i32_v3i32__3_3_3(ptr addrspace(1) inreg %ptr) {2710; GFX9-LABEL: v_shuffle_v3i32_v3i32__3_3_3:2711; GFX9: ; %bb.0:2712; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2713; GFX9-NEXT: s_setpc_b64 s[30:31]2714 %vec0 = call <3 x i32> asm "; def $0", "=v"()2715 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 3, i32 3, i32 3>2716 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 162717 ret void2718}2719 2720define void @v_shuffle_v3i32_v3i32__4_3_3(ptr addrspace(1) inreg %ptr) {2721; GFX900-LABEL: v_shuffle_v3i32_v3i32__4_3_3:2722; GFX900: ; %bb.0:2723; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2724; GFX900-NEXT: ;;#ASMSTART2725; GFX900-NEXT: ; def v[0:2]2726; GFX900-NEXT: ;;#ASMEND2727; GFX900-NEXT: v_mov_b32_e32 v4, 02728; GFX900-NEXT: v_mov_b32_e32 v2, v02729; GFX900-NEXT: v_mov_b32_e32 v3, v02730; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]2731; GFX900-NEXT: s_waitcnt vmcnt(0)2732; GFX900-NEXT: s_setpc_b64 s[30:31]2733;2734; GFX90A-LABEL: v_shuffle_v3i32_v3i32__4_3_3:2735; GFX90A: ; %bb.0:2736; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2737; GFX90A-NEXT: v_mov_b32_e32 v5, 02738; GFX90A-NEXT: ;;#ASMSTART2739; GFX90A-NEXT: ; def v[2:4]2740; GFX90A-NEXT: ;;#ASMEND2741; GFX90A-NEXT: v_mov_b32_e32 v0, v32742; GFX90A-NEXT: v_mov_b32_e32 v1, v22743; GFX90A-NEXT: global_store_dwordx3 v5, v[0:2], s[16:17]2744; GFX90A-NEXT: s_waitcnt vmcnt(0)2745; GFX90A-NEXT: s_setpc_b64 s[30:31]2746;2747; GFX942-LABEL: v_shuffle_v3i32_v3i32__4_3_3:2748; GFX942: ; %bb.0:2749; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2750; GFX942-NEXT: v_mov_b32_e32 v5, 02751; GFX942-NEXT: ;;#ASMSTART2752; GFX942-NEXT: ; def v[2:4]2753; GFX942-NEXT: ;;#ASMEND2754; GFX942-NEXT: s_nop 02755; GFX942-NEXT: v_mov_b32_e32 v0, v32756; GFX942-NEXT: v_mov_b32_e32 v1, v22757; GFX942-NEXT: global_store_dwordx3 v5, v[0:2], s[0:1]2758; GFX942-NEXT: s_waitcnt vmcnt(0)2759; GFX942-NEXT: s_setpc_b64 s[30:31]2760 %vec0 = call <3 x i32> asm "; def $0", "=v"()2761 %vec1 = call <3 x i32> asm "; def $0", "=v"()2762 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 3, i32 3>2763 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 162764 ret void2765}2766 2767define void @v_shuffle_v3i32_v3i32__5_3_3(ptr addrspace(1) inreg %ptr) {2768; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_3_3:2769; GFX900: ; %bb.0:2770; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2771; GFX900-NEXT: v_mov_b32_e32 v5, 02772; GFX900-NEXT: ;;#ASMSTART2773; GFX900-NEXT: ; def v[0:2]2774; GFX900-NEXT: ;;#ASMEND2775; GFX900-NEXT: v_mov_b32_e32 v3, v02776; GFX900-NEXT: v_mov_b32_e32 v4, v02777; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]2778; GFX900-NEXT: s_waitcnt vmcnt(0)2779; GFX900-NEXT: s_setpc_b64 s[30:31]2780;2781; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_3_3:2782; GFX90A: ; %bb.0:2783; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2784; GFX90A-NEXT: v_mov_b32_e32 v5, 02785; GFX90A-NEXT: ;;#ASMSTART2786; GFX90A-NEXT: ; def v[0:2]2787; GFX90A-NEXT: ;;#ASMEND2788; GFX90A-NEXT: v_mov_b32_e32 v3, v02789; GFX90A-NEXT: v_mov_b32_e32 v4, v02790; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]2791; GFX90A-NEXT: s_waitcnt vmcnt(0)2792; GFX90A-NEXT: s_setpc_b64 s[30:31]2793;2794; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_3_3:2795; GFX942: ; %bb.0:2796; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2797; GFX942-NEXT: v_mov_b32_e32 v5, 02798; GFX942-NEXT: ;;#ASMSTART2799; GFX942-NEXT: ; def v[0:2]2800; GFX942-NEXT: ;;#ASMEND2801; GFX942-NEXT: s_nop 02802; GFX942-NEXT: v_mov_b32_e32 v3, v02803; GFX942-NEXT: v_mov_b32_e32 v4, v02804; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]2805; GFX942-NEXT: s_waitcnt vmcnt(0)2806; GFX942-NEXT: s_setpc_b64 s[30:31]2807 %vec0 = call <3 x i32> asm "; def $0", "=v"()2808 %vec1 = call <3 x i32> asm "; def $0", "=v"()2809 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 3>2810 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 162811 ret void2812}2813 2814define void @v_shuffle_v3i32_v3i32__5_u_3(ptr addrspace(1) inreg %ptr) {2815; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_u_3:2816; GFX900: ; %bb.0:2817; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2818; GFX900-NEXT: v_mov_b32_e32 v3, 02819; GFX900-NEXT: ;;#ASMSTART2820; GFX900-NEXT: ; def v[0:2]2821; GFX900-NEXT: ;;#ASMEND2822; GFX900-NEXT: v_mov_b32_e32 v4, v02823; GFX900-NEXT: global_store_dwordx3 v3, v[2:4], s[16:17]2824; GFX900-NEXT: s_waitcnt vmcnt(0)2825; GFX900-NEXT: s_setpc_b64 s[30:31]2826;2827; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_u_3:2828; GFX90A: ; %bb.0:2829; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2830; GFX90A-NEXT: v_mov_b32_e32 v3, 02831; GFX90A-NEXT: ;;#ASMSTART2832; GFX90A-NEXT: ; def v[0:2]2833; GFX90A-NEXT: ;;#ASMEND2834; GFX90A-NEXT: v_mov_b32_e32 v4, v02835; GFX90A-NEXT: global_store_dwordx3 v3, v[2:4], s[16:17]2836; GFX90A-NEXT: s_waitcnt vmcnt(0)2837; GFX90A-NEXT: s_setpc_b64 s[30:31]2838;2839; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_u_3:2840; GFX942: ; %bb.0:2841; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2842; GFX942-NEXT: v_mov_b32_e32 v3, 02843; GFX942-NEXT: ;;#ASMSTART2844; GFX942-NEXT: ; def v[0:2]2845; GFX942-NEXT: ;;#ASMEND2846; GFX942-NEXT: s_nop 02847; GFX942-NEXT: v_mov_b32_e32 v4, v02848; GFX942-NEXT: global_store_dwordx3 v3, v[2:4], s[0:1]2849; GFX942-NEXT: s_waitcnt vmcnt(0)2850; GFX942-NEXT: s_setpc_b64 s[30:31]2851 %vec0 = call <3 x i32> asm "; def $0", "=v"()2852 %vec1 = call <3 x i32> asm "; def $0", "=v"()2853 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 3>2854 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 162855 ret void2856}2857 2858define void @v_shuffle_v3i32_v3i32__5_0_3(ptr addrspace(1) inreg %ptr) {2859; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_0_3:2860; GFX900: ; %bb.0:2861; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2862; GFX900-NEXT: ;;#ASMSTART2863; GFX900-NEXT: ; def v[3:5]2864; GFX900-NEXT: ;;#ASMEND2865; GFX900-NEXT: v_mov_b32_e32 v6, 02866; GFX900-NEXT: ;;#ASMSTART2867; GFX900-NEXT: ; def v[0:2]2868; GFX900-NEXT: ;;#ASMEND2869; GFX900-NEXT: v_mov_b32_e32 v4, v02870; GFX900-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]2871; GFX900-NEXT: s_waitcnt vmcnt(0)2872; GFX900-NEXT: s_setpc_b64 s[30:31]2873;2874; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_0_3:2875; GFX90A: ; %bb.0:2876; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2877; GFX90A-NEXT: ;;#ASMSTART2878; GFX90A-NEXT: ; def v[4:6]2879; GFX90A-NEXT: ;;#ASMEND2880; GFX90A-NEXT: v_mov_b32_e32 v7, 02881; GFX90A-NEXT: ;;#ASMSTART2882; GFX90A-NEXT: ; def v[0:2]2883; GFX90A-NEXT: ;;#ASMEND2884; GFX90A-NEXT: v_mov_b32_e32 v3, v42885; GFX90A-NEXT: v_mov_b32_e32 v4, v02886; GFX90A-NEXT: global_store_dwordx3 v7, v[2:4], s[16:17]2887; GFX90A-NEXT: s_waitcnt vmcnt(0)2888; GFX90A-NEXT: s_setpc_b64 s[30:31]2889;2890; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_0_3:2891; GFX942: ; %bb.0:2892; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2893; GFX942-NEXT: ;;#ASMSTART2894; GFX942-NEXT: ; def v[4:6]2895; GFX942-NEXT: ;;#ASMEND2896; GFX942-NEXT: v_mov_b32_e32 v7, 02897; GFX942-NEXT: ;;#ASMSTART2898; GFX942-NEXT: ; def v[0:2]2899; GFX942-NEXT: ;;#ASMEND2900; GFX942-NEXT: v_mov_b32_e32 v3, v42901; GFX942-NEXT: v_mov_b32_e32 v4, v02902; GFX942-NEXT: global_store_dwordx3 v7, v[2:4], s[0:1]2903; GFX942-NEXT: s_waitcnt vmcnt(0)2904; GFX942-NEXT: s_setpc_b64 s[30:31]2905 %vec0 = call <3 x i32> asm "; def $0", "=v"()2906 %vec1 = call <3 x i32> asm "; def $0", "=v"()2907 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 3>2908 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 162909 ret void2910}2911 2912define void @v_shuffle_v3i32_v3i32__5_1_3(ptr addrspace(1) inreg %ptr) {2913; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_1_3:2914; GFX900: ; %bb.0:2915; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2916; GFX900-NEXT: ;;#ASMSTART2917; GFX900-NEXT: ; def v[2:4]2918; GFX900-NEXT: ;;#ASMEND2919; GFX900-NEXT: v_mov_b32_e32 v5, 02920; GFX900-NEXT: ;;#ASMSTART2921; GFX900-NEXT: ; def v[0:2]2922; GFX900-NEXT: ;;#ASMEND2923; GFX900-NEXT: v_mov_b32_e32 v4, v02924; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]2925; GFX900-NEXT: s_waitcnt vmcnt(0)2926; GFX900-NEXT: s_setpc_b64 s[30:31]2927;2928; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_1_3:2929; GFX90A: ; %bb.0:2930; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2931; GFX90A-NEXT: ;;#ASMSTART2932; GFX90A-NEXT: ; def v[2:4]2933; GFX90A-NEXT: ;;#ASMEND2934; GFX90A-NEXT: v_mov_b32_e32 v5, 02935; GFX90A-NEXT: ;;#ASMSTART2936; GFX90A-NEXT: ; def v[0:2]2937; GFX90A-NEXT: ;;#ASMEND2938; GFX90A-NEXT: v_mov_b32_e32 v4, v02939; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]2940; GFX90A-NEXT: s_waitcnt vmcnt(0)2941; GFX90A-NEXT: s_setpc_b64 s[30:31]2942;2943; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_1_3:2944; GFX942: ; %bb.0:2945; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2946; GFX942-NEXT: ;;#ASMSTART2947; GFX942-NEXT: ; def v[2:4]2948; GFX942-NEXT: ;;#ASMEND2949; GFX942-NEXT: v_mov_b32_e32 v5, 02950; GFX942-NEXT: ;;#ASMSTART2951; GFX942-NEXT: ; def v[0:2]2952; GFX942-NEXT: ;;#ASMEND2953; GFX942-NEXT: s_nop 02954; GFX942-NEXT: v_mov_b32_e32 v4, v02955; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]2956; GFX942-NEXT: s_waitcnt vmcnt(0)2957; GFX942-NEXT: s_setpc_b64 s[30:31]2958 %vec0 = call <3 x i32> asm "; def $0", "=v"()2959 %vec1 = call <3 x i32> asm "; def $0", "=v"()2960 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 3>2961 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 162962 ret void2963}2964 2965define void @v_shuffle_v3i32_v3i32__5_2_3(ptr addrspace(1) inreg %ptr) {2966; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_2_3:2967; GFX900: ; %bb.0:2968; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2969; GFX900-NEXT: ;;#ASMSTART2970; GFX900-NEXT: ; def v[1:3]2971; GFX900-NEXT: ;;#ASMEND2972; GFX900-NEXT: v_mov_b32_e32 v5, 02973; GFX900-NEXT: ;;#ASMSTART2974; GFX900-NEXT: ; def v[0:2]2975; GFX900-NEXT: ;;#ASMEND2976; GFX900-NEXT: v_mov_b32_e32 v4, v02977; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]2978; GFX900-NEXT: s_waitcnt vmcnt(0)2979; GFX900-NEXT: s_setpc_b64 s[30:31]2980;2981; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_2_3:2982; GFX90A: ; %bb.0:2983; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2984; GFX90A-NEXT: ;;#ASMSTART2985; GFX90A-NEXT: ; def v[2:4]2986; GFX90A-NEXT: ;;#ASMEND2987; GFX90A-NEXT: v_mov_b32_e32 v5, 02988; GFX90A-NEXT: ;;#ASMSTART2989; GFX90A-NEXT: ; def v[0:2]2990; GFX90A-NEXT: ;;#ASMEND2991; GFX90A-NEXT: v_mov_b32_e32 v3, v42992; GFX90A-NEXT: v_mov_b32_e32 v4, v02993; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]2994; GFX90A-NEXT: s_waitcnt vmcnt(0)2995; GFX90A-NEXT: s_setpc_b64 s[30:31]2996;2997; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_2_3:2998; GFX942: ; %bb.0:2999; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3000; GFX942-NEXT: ;;#ASMSTART3001; GFX942-NEXT: ; def v[2:4]3002; GFX942-NEXT: ;;#ASMEND3003; GFX942-NEXT: v_mov_b32_e32 v5, 03004; GFX942-NEXT: ;;#ASMSTART3005; GFX942-NEXT: ; def v[0:2]3006; GFX942-NEXT: ;;#ASMEND3007; GFX942-NEXT: v_mov_b32_e32 v3, v43008; GFX942-NEXT: v_mov_b32_e32 v4, v03009; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]3010; GFX942-NEXT: s_waitcnt vmcnt(0)3011; GFX942-NEXT: s_setpc_b64 s[30:31]3012 %vec0 = call <3 x i32> asm "; def $0", "=v"()3013 %vec1 = call <3 x i32> asm "; def $0", "=v"()3014 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 3>3015 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 163016 ret void3017}3018 3019define void @v_shuffle_v3i32_v3i32__5_4_3(ptr addrspace(1) inreg %ptr) {3020; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_4_3:3021; GFX900: ; %bb.0:3022; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3023; GFX900-NEXT: v_mov_b32_e32 v5, 03024; GFX900-NEXT: ;;#ASMSTART3025; GFX900-NEXT: ; def v[0:2]3026; GFX900-NEXT: ;;#ASMEND3027; GFX900-NEXT: v_mov_b32_e32 v3, v13028; GFX900-NEXT: v_mov_b32_e32 v4, v03029; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]3030; GFX900-NEXT: s_waitcnt vmcnt(0)3031; GFX900-NEXT: s_setpc_b64 s[30:31]3032;3033; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_4_3:3034; GFX90A: ; %bb.0:3035; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3036; GFX90A-NEXT: v_mov_b32_e32 v5, 03037; GFX90A-NEXT: ;;#ASMSTART3038; GFX90A-NEXT: ; def v[0:2]3039; GFX90A-NEXT: ;;#ASMEND3040; GFX90A-NEXT: v_mov_b32_e32 v3, v13041; GFX90A-NEXT: v_mov_b32_e32 v4, v03042; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]3043; GFX90A-NEXT: s_waitcnt vmcnt(0)3044; GFX90A-NEXT: s_setpc_b64 s[30:31]3045;3046; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_4_3:3047; GFX942: ; %bb.0:3048; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3049; GFX942-NEXT: v_mov_b32_e32 v5, 03050; GFX942-NEXT: ;;#ASMSTART3051; GFX942-NEXT: ; def v[0:2]3052; GFX942-NEXT: ;;#ASMEND3053; GFX942-NEXT: s_nop 03054; GFX942-NEXT: v_mov_b32_e32 v3, v13055; GFX942-NEXT: v_mov_b32_e32 v4, v03056; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]3057; GFX942-NEXT: s_waitcnt vmcnt(0)3058; GFX942-NEXT: s_setpc_b64 s[30:31]3059 %vec0 = call <3 x i32> asm "; def $0", "=v"()3060 %vec1 = call <3 x i32> asm "; def $0", "=v"()3061 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 3>3062 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 163063 ret void3064}3065 3066define void @v_shuffle_v3i32_v3i32__u_4_4(ptr addrspace(1) inreg %ptr) {3067; GFX900-LABEL: v_shuffle_v3i32_v3i32__u_4_4:3068; GFX900: ; %bb.0:3069; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3070; GFX900-NEXT: ;;#ASMSTART3071; GFX900-NEXT: ; def v[0:2]3072; GFX900-NEXT: ;;#ASMEND3073; GFX900-NEXT: v_mov_b32_e32 v3, 03074; GFX900-NEXT: v_mov_b32_e32 v2, v13075; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17]3076; GFX900-NEXT: s_waitcnt vmcnt(0)3077; GFX900-NEXT: s_setpc_b64 s[30:31]3078;3079; GFX90A-LABEL: v_shuffle_v3i32_v3i32__u_4_4:3080; GFX90A: ; %bb.0:3081; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3082; GFX90A-NEXT: ;;#ASMSTART3083; GFX90A-NEXT: ; def v[0:2]3084; GFX90A-NEXT: ;;#ASMEND3085; GFX90A-NEXT: v_mov_b32_e32 v3, 03086; GFX90A-NEXT: v_mov_b32_e32 v2, v13087; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17]3088; GFX90A-NEXT: s_waitcnt vmcnt(0)3089; GFX90A-NEXT: s_setpc_b64 s[30:31]3090;3091; GFX942-LABEL: v_shuffle_v3i32_v3i32__u_4_4:3092; GFX942: ; %bb.0:3093; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3094; GFX942-NEXT: ;;#ASMSTART3095; GFX942-NEXT: ; def v[0:2]3096; GFX942-NEXT: ;;#ASMEND3097; GFX942-NEXT: v_mov_b32_e32 v3, 03098; GFX942-NEXT: v_mov_b32_e32 v2, v13099; GFX942-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1]3100; GFX942-NEXT: s_waitcnt vmcnt(0)3101; GFX942-NEXT: s_setpc_b64 s[30:31]3102 %vec0 = call <3 x i32> asm "; def $0", "=v"()3103 %vec1 = call <3 x i32> asm "; def $0", "=v"()3104 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 poison, i32 4, i32 4>3105 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 163106 ret void3107}3108 3109define void @v_shuffle_v3i32_v3i32__0_4_4(ptr addrspace(1) inreg %ptr) {3110; GFX900-LABEL: v_shuffle_v3i32_v3i32__0_4_4:3111; GFX900: ; %bb.0:3112; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3113; GFX900-NEXT: ;;#ASMSTART3114; GFX900-NEXT: ; def v[0:2]3115; GFX900-NEXT: ;;#ASMEND3116; GFX900-NEXT: ;;#ASMSTART3117; GFX900-NEXT: ; def v[1:3]3118; GFX900-NEXT: ;;#ASMEND3119; GFX900-NEXT: v_mov_b32_e32 v4, 03120; GFX900-NEXT: v_mov_b32_e32 v1, v23121; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]3122; GFX900-NEXT: s_waitcnt vmcnt(0)3123; GFX900-NEXT: s_setpc_b64 s[30:31]3124;3125; GFX90A-LABEL: v_shuffle_v3i32_v3i32__0_4_4:3126; GFX90A: ; %bb.0:3127; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3128; GFX90A-NEXT: ;;#ASMSTART3129; GFX90A-NEXT: ; def v[0:2]3130; GFX90A-NEXT: ;;#ASMEND3131; GFX90A-NEXT: ;;#ASMSTART3132; GFX90A-NEXT: ; def v[2:4]3133; GFX90A-NEXT: ;;#ASMEND3134; GFX90A-NEXT: v_mov_b32_e32 v5, 03135; GFX90A-NEXT: v_mov_b32_e32 v1, v33136; GFX90A-NEXT: v_mov_b32_e32 v2, v33137; GFX90A-NEXT: global_store_dwordx3 v5, v[0:2], s[16:17]3138; GFX90A-NEXT: s_waitcnt vmcnt(0)3139; GFX90A-NEXT: s_setpc_b64 s[30:31]3140;3141; GFX942-LABEL: v_shuffle_v3i32_v3i32__0_4_4:3142; GFX942: ; %bb.0:3143; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3144; GFX942-NEXT: ;;#ASMSTART3145; GFX942-NEXT: ; def v[0:2]3146; GFX942-NEXT: ;;#ASMEND3147; GFX942-NEXT: v_mov_b32_e32 v5, 03148; GFX942-NEXT: ;;#ASMSTART3149; GFX942-NEXT: ; def v[2:4]3150; GFX942-NEXT: ;;#ASMEND3151; GFX942-NEXT: s_nop 03152; GFX942-NEXT: v_mov_b32_e32 v1, v33153; GFX942-NEXT: v_mov_b32_e32 v2, v33154; GFX942-NEXT: global_store_dwordx3 v5, v[0:2], s[0:1]3155; GFX942-NEXT: s_waitcnt vmcnt(0)3156; GFX942-NEXT: s_setpc_b64 s[30:31]3157 %vec0 = call <3 x i32> asm "; def $0", "=v"()3158 %vec1 = call <3 x i32> asm "; def $0", "=v"()3159 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 0, i32 4, i32 4>3160 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 163161 ret void3162}3163 3164define void @v_shuffle_v3i32_v3i32__1_4_4(ptr addrspace(1) inreg %ptr) {3165; GFX900-LABEL: v_shuffle_v3i32_v3i32__1_4_4:3166; GFX900: ; %bb.0:3167; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3168; GFX900-NEXT: ;;#ASMSTART3169; GFX900-NEXT: ; def v[0:2]3170; GFX900-NEXT: ;;#ASMEND3171; GFX900-NEXT: ;;#ASMSTART3172; GFX900-NEXT: ; def v[2:4]3173; GFX900-NEXT: ;;#ASMEND3174; GFX900-NEXT: v_mov_b32_e32 v5, 03175; GFX900-NEXT: v_mov_b32_e32 v2, v33176; GFX900-NEXT: global_store_dwordx3 v5, v[1:3], s[16:17]3177; GFX900-NEXT: s_waitcnt vmcnt(0)3178; GFX900-NEXT: s_setpc_b64 s[30:31]3179;3180; GFX90A-LABEL: v_shuffle_v3i32_v3i32__1_4_4:3181; GFX90A: ; %bb.0:3182; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3183; GFX90A-NEXT: ;;#ASMSTART3184; GFX90A-NEXT: ; def v[0:2]3185; GFX90A-NEXT: ;;#ASMEND3186; GFX90A-NEXT: ;;#ASMSTART3187; GFX90A-NEXT: ; def v[2:4]3188; GFX90A-NEXT: ;;#ASMEND3189; GFX90A-NEXT: v_mov_b32_e32 v5, 03190; GFX90A-NEXT: v_mov_b32_e32 v2, v13191; GFX90A-NEXT: v_mov_b32_e32 v4, v33192; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]3193; GFX90A-NEXT: s_waitcnt vmcnt(0)3194; GFX90A-NEXT: s_setpc_b64 s[30:31]3195;3196; GFX942-LABEL: v_shuffle_v3i32_v3i32__1_4_4:3197; GFX942: ; %bb.0:3198; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3199; GFX942-NEXT: ;;#ASMSTART3200; GFX942-NEXT: ; def v[0:2]3201; GFX942-NEXT: ;;#ASMEND3202; GFX942-NEXT: v_mov_b32_e32 v5, 03203; GFX942-NEXT: ;;#ASMSTART3204; GFX942-NEXT: ; def v[2:4]3205; GFX942-NEXT: ;;#ASMEND3206; GFX942-NEXT: s_nop 03207; GFX942-NEXT: v_mov_b32_e32 v2, v13208; GFX942-NEXT: v_mov_b32_e32 v4, v33209; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]3210; GFX942-NEXT: s_waitcnt vmcnt(0)3211; GFX942-NEXT: s_setpc_b64 s[30:31]3212 %vec0 = call <3 x i32> asm "; def $0", "=v"()3213 %vec1 = call <3 x i32> asm "; def $0", "=v"()3214 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 1, i32 4, i32 4>3215 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 163216 ret void3217}3218 3219define void @v_shuffle_v3i32_v3i32__2_4_4(ptr addrspace(1) inreg %ptr) {3220; GFX900-LABEL: v_shuffle_v3i32_v3i32__2_4_4:3221; GFX900: ; %bb.0:3222; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3223; GFX900-NEXT: ;;#ASMSTART3224; GFX900-NEXT: ; def v[3:5]3225; GFX900-NEXT: ;;#ASMEND3226; GFX900-NEXT: v_mov_b32_e32 v6, 03227; GFX900-NEXT: v_mov_b32_e32 v3, v43228; GFX900-NEXT: ;;#ASMSTART3229; GFX900-NEXT: ; def v[0:2]3230; GFX900-NEXT: ;;#ASMEND3231; GFX900-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]3232; GFX900-NEXT: s_waitcnt vmcnt(0)3233; GFX900-NEXT: s_setpc_b64 s[30:31]3234;3235; GFX90A-LABEL: v_shuffle_v3i32_v3i32__2_4_4:3236; GFX90A: ; %bb.0:3237; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3238; GFX90A-NEXT: ;;#ASMSTART3239; GFX90A-NEXT: ; def v[4:6]3240; GFX90A-NEXT: ;;#ASMEND3241; GFX90A-NEXT: v_mov_b32_e32 v7, 03242; GFX90A-NEXT: v_mov_b32_e32 v3, v53243; GFX90A-NEXT: v_mov_b32_e32 v4, v53244; GFX90A-NEXT: ;;#ASMSTART3245; GFX90A-NEXT: ; def v[0:2]3246; GFX90A-NEXT: ;;#ASMEND3247; GFX90A-NEXT: global_store_dwordx3 v7, v[2:4], s[16:17]3248; GFX90A-NEXT: s_waitcnt vmcnt(0)3249; GFX90A-NEXT: s_setpc_b64 s[30:31]3250;3251; GFX942-LABEL: v_shuffle_v3i32_v3i32__2_4_4:3252; GFX942: ; %bb.0:3253; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3254; GFX942-NEXT: ;;#ASMSTART3255; GFX942-NEXT: ; def v[4:6]3256; GFX942-NEXT: ;;#ASMEND3257; GFX942-NEXT: v_mov_b32_e32 v7, 03258; GFX942-NEXT: v_mov_b32_e32 v3, v53259; GFX942-NEXT: v_mov_b32_e32 v4, v53260; GFX942-NEXT: ;;#ASMSTART3261; GFX942-NEXT: ; def v[0:2]3262; GFX942-NEXT: ;;#ASMEND3263; GFX942-NEXT: global_store_dwordx3 v7, v[2:4], s[0:1]3264; GFX942-NEXT: s_waitcnt vmcnt(0)3265; GFX942-NEXT: s_setpc_b64 s[30:31]3266 %vec0 = call <3 x i32> asm "; def $0", "=v"()3267 %vec1 = call <3 x i32> asm "; def $0", "=v"()3268 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 2, i32 4, i32 4>3269 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 163270 ret void3271}3272 3273define void @v_shuffle_v3i32_v3i32__3_4_4(ptr addrspace(1) inreg %ptr) {3274; GFX900-LABEL: v_shuffle_v3i32_v3i32__3_4_4:3275; GFX900: ; %bb.0:3276; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3277; GFX900-NEXT: ;;#ASMSTART3278; GFX900-NEXT: ; def v[0:2]3279; GFX900-NEXT: ;;#ASMEND3280; GFX900-NEXT: v_mov_b32_e32 v3, 03281; GFX900-NEXT: v_mov_b32_e32 v2, v13282; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17]3283; GFX900-NEXT: s_waitcnt vmcnt(0)3284; GFX900-NEXT: s_setpc_b64 s[30:31]3285;3286; GFX90A-LABEL: v_shuffle_v3i32_v3i32__3_4_4:3287; GFX90A: ; %bb.0:3288; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3289; GFX90A-NEXT: ;;#ASMSTART3290; GFX90A-NEXT: ; def v[0:2]3291; GFX90A-NEXT: ;;#ASMEND3292; GFX90A-NEXT: v_mov_b32_e32 v3, 03293; GFX90A-NEXT: v_mov_b32_e32 v2, v13294; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17]3295; GFX90A-NEXT: s_waitcnt vmcnt(0)3296; GFX90A-NEXT: s_setpc_b64 s[30:31]3297;3298; GFX942-LABEL: v_shuffle_v3i32_v3i32__3_4_4:3299; GFX942: ; %bb.0:3300; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3301; GFX942-NEXT: ;;#ASMSTART3302; GFX942-NEXT: ; def v[0:2]3303; GFX942-NEXT: ;;#ASMEND3304; GFX942-NEXT: v_mov_b32_e32 v3, 03305; GFX942-NEXT: v_mov_b32_e32 v2, v13306; GFX942-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1]3307; GFX942-NEXT: s_waitcnt vmcnt(0)3308; GFX942-NEXT: s_setpc_b64 s[30:31]3309 %vec0 = call <3 x i32> asm "; def $0", "=v"()3310 %vec1 = call <3 x i32> asm "; def $0", "=v"()3311 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 3, i32 4, i32 4>3312 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 163313 ret void3314}3315 3316define void @v_shuffle_v3i32_v3i32__4_4_4(ptr addrspace(1) inreg %ptr) {3317; GFX900-LABEL: v_shuffle_v3i32_v3i32__4_4_4:3318; GFX900: ; %bb.0:3319; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3320; GFX900-NEXT: ;;#ASMSTART3321; GFX900-NEXT: ; def v[0:2]3322; GFX900-NEXT: ;;#ASMEND3323; GFX900-NEXT: v_mov_b32_e32 v4, 03324; GFX900-NEXT: v_mov_b32_e32 v2, v13325; GFX900-NEXT: v_mov_b32_e32 v3, v13326; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]3327; GFX900-NEXT: s_waitcnt vmcnt(0)3328; GFX900-NEXT: s_setpc_b64 s[30:31]3329;3330; GFX90A-LABEL: v_shuffle_v3i32_v3i32__4_4_4:3331; GFX90A: ; %bb.0:3332; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3333; GFX90A-NEXT: ;;#ASMSTART3334; GFX90A-NEXT: ; def v[0:2]3335; GFX90A-NEXT: ;;#ASMEND3336; GFX90A-NEXT: v_mov_b32_e32 v3, 03337; GFX90A-NEXT: v_mov_b32_e32 v0, v13338; GFX90A-NEXT: v_mov_b32_e32 v2, v13339; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17]3340; GFX90A-NEXT: s_waitcnt vmcnt(0)3341; GFX90A-NEXT: s_setpc_b64 s[30:31]3342;3343; GFX942-LABEL: v_shuffle_v3i32_v3i32__4_4_4:3344; GFX942: ; %bb.0:3345; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3346; GFX942-NEXT: ;;#ASMSTART3347; GFX942-NEXT: ; def v[0:2]3348; GFX942-NEXT: ;;#ASMEND3349; GFX942-NEXT: v_mov_b32_e32 v3, 03350; GFX942-NEXT: v_mov_b32_e32 v0, v13351; GFX942-NEXT: v_mov_b32_e32 v2, v13352; GFX942-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1]3353; GFX942-NEXT: s_waitcnt vmcnt(0)3354; GFX942-NEXT: s_setpc_b64 s[30:31]3355 %vec0 = call <3 x i32> asm "; def $0", "=v"()3356 %vec1 = call <3 x i32> asm "; def $0", "=v"()3357 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 4, i32 4>3358 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 163359 ret void3360}3361 3362define void @v_shuffle_v3i32_v3i32__5_4_4(ptr addrspace(1) inreg %ptr) {3363; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_4_4:3364; GFX900: ; %bb.0:3365; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3366; GFX900-NEXT: v_mov_b32_e32 v5, 03367; GFX900-NEXT: ;;#ASMSTART3368; GFX900-NEXT: ; def v[0:2]3369; GFX900-NEXT: ;;#ASMEND3370; GFX900-NEXT: v_mov_b32_e32 v3, v13371; GFX900-NEXT: v_mov_b32_e32 v4, v13372; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]3373; GFX900-NEXT: s_waitcnt vmcnt(0)3374; GFX900-NEXT: s_setpc_b64 s[30:31]3375;3376; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_4_4:3377; GFX90A: ; %bb.0:3378; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3379; GFX90A-NEXT: v_mov_b32_e32 v5, 03380; GFX90A-NEXT: ;;#ASMSTART3381; GFX90A-NEXT: ; def v[0:2]3382; GFX90A-NEXT: ;;#ASMEND3383; GFX90A-NEXT: v_mov_b32_e32 v3, v13384; GFX90A-NEXT: v_mov_b32_e32 v4, v13385; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]3386; GFX90A-NEXT: s_waitcnt vmcnt(0)3387; GFX90A-NEXT: s_setpc_b64 s[30:31]3388;3389; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_4_4:3390; GFX942: ; %bb.0:3391; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3392; GFX942-NEXT: v_mov_b32_e32 v5, 03393; GFX942-NEXT: ;;#ASMSTART3394; GFX942-NEXT: ; def v[0:2]3395; GFX942-NEXT: ;;#ASMEND3396; GFX942-NEXT: s_nop 03397; GFX942-NEXT: v_mov_b32_e32 v3, v13398; GFX942-NEXT: v_mov_b32_e32 v4, v13399; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]3400; GFX942-NEXT: s_waitcnt vmcnt(0)3401; GFX942-NEXT: s_setpc_b64 s[30:31]3402 %vec0 = call <3 x i32> asm "; def $0", "=v"()3403 %vec1 = call <3 x i32> asm "; def $0", "=v"()3404 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 4>3405 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 163406 ret void3407}3408 3409define void @v_shuffle_v3i32_v3i32__5_u_4(ptr addrspace(1) inreg %ptr) {3410; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_u_4:3411; GFX900: ; %bb.0:3412; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3413; GFX900-NEXT: v_mov_b32_e32 v3, 03414; GFX900-NEXT: ;;#ASMSTART3415; GFX900-NEXT: ; def v[0:2]3416; GFX900-NEXT: ;;#ASMEND3417; GFX900-NEXT: v_mov_b32_e32 v4, v13418; GFX900-NEXT: global_store_dwordx3 v3, v[2:4], s[16:17]3419; GFX900-NEXT: s_waitcnt vmcnt(0)3420; GFX900-NEXT: s_setpc_b64 s[30:31]3421;3422; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_u_4:3423; GFX90A: ; %bb.0:3424; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3425; GFX90A-NEXT: v_mov_b32_e32 v3, 03426; GFX90A-NEXT: ;;#ASMSTART3427; GFX90A-NEXT: ; def v[0:2]3428; GFX90A-NEXT: ;;#ASMEND3429; GFX90A-NEXT: v_mov_b32_e32 v4, v13430; GFX90A-NEXT: global_store_dwordx3 v3, v[2:4], s[16:17]3431; GFX90A-NEXT: s_waitcnt vmcnt(0)3432; GFX90A-NEXT: s_setpc_b64 s[30:31]3433;3434; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_u_4:3435; GFX942: ; %bb.0:3436; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3437; GFX942-NEXT: v_mov_b32_e32 v3, 03438; GFX942-NEXT: ;;#ASMSTART3439; GFX942-NEXT: ; def v[0:2]3440; GFX942-NEXT: ;;#ASMEND3441; GFX942-NEXT: s_nop 03442; GFX942-NEXT: v_mov_b32_e32 v4, v13443; GFX942-NEXT: global_store_dwordx3 v3, v[2:4], s[0:1]3444; GFX942-NEXT: s_waitcnt vmcnt(0)3445; GFX942-NEXT: s_setpc_b64 s[30:31]3446 %vec0 = call <3 x i32> asm "; def $0", "=v"()3447 %vec1 = call <3 x i32> asm "; def $0", "=v"()3448 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 4>3449 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 163450 ret void3451}3452 3453define void @v_shuffle_v3i32_v3i32__5_0_4(ptr addrspace(1) inreg %ptr) {3454; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_0_4:3455; GFX900: ; %bb.0:3456; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3457; GFX900-NEXT: ;;#ASMSTART3458; GFX900-NEXT: ; def v[3:5]3459; GFX900-NEXT: ;;#ASMEND3460; GFX900-NEXT: v_mov_b32_e32 v6, 03461; GFX900-NEXT: ;;#ASMSTART3462; GFX900-NEXT: ; def v[0:2]3463; GFX900-NEXT: ;;#ASMEND3464; GFX900-NEXT: v_mov_b32_e32 v4, v13465; GFX900-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]3466; GFX900-NEXT: s_waitcnt vmcnt(0)3467; GFX900-NEXT: s_setpc_b64 s[30:31]3468;3469; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_0_4:3470; GFX90A: ; %bb.0:3471; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3472; GFX90A-NEXT: ;;#ASMSTART3473; GFX90A-NEXT: ; def v[4:6]3474; GFX90A-NEXT: ;;#ASMEND3475; GFX90A-NEXT: v_mov_b32_e32 v7, 03476; GFX90A-NEXT: ;;#ASMSTART3477; GFX90A-NEXT: ; def v[0:2]3478; GFX90A-NEXT: ;;#ASMEND3479; GFX90A-NEXT: v_mov_b32_e32 v3, v43480; GFX90A-NEXT: v_mov_b32_e32 v4, v13481; GFX90A-NEXT: global_store_dwordx3 v7, v[2:4], s[16:17]3482; GFX90A-NEXT: s_waitcnt vmcnt(0)3483; GFX90A-NEXT: s_setpc_b64 s[30:31]3484;3485; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_0_4:3486; GFX942: ; %bb.0:3487; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3488; GFX942-NEXT: ;;#ASMSTART3489; GFX942-NEXT: ; def v[4:6]3490; GFX942-NEXT: ;;#ASMEND3491; GFX942-NEXT: v_mov_b32_e32 v7, 03492; GFX942-NEXT: ;;#ASMSTART3493; GFX942-NEXT: ; def v[0:2]3494; GFX942-NEXT: ;;#ASMEND3495; GFX942-NEXT: v_mov_b32_e32 v3, v43496; GFX942-NEXT: v_mov_b32_e32 v4, v13497; GFX942-NEXT: global_store_dwordx3 v7, v[2:4], s[0:1]3498; GFX942-NEXT: s_waitcnt vmcnt(0)3499; GFX942-NEXT: s_setpc_b64 s[30:31]3500 %vec0 = call <3 x i32> asm "; def $0", "=v"()3501 %vec1 = call <3 x i32> asm "; def $0", "=v"()3502 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 4>3503 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 163504 ret void3505}3506 3507define void @v_shuffle_v3i32_v3i32__5_1_4(ptr addrspace(1) inreg %ptr) {3508; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_1_4:3509; GFX900: ; %bb.0:3510; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3511; GFX900-NEXT: ;;#ASMSTART3512; GFX900-NEXT: ; def v[2:4]3513; GFX900-NEXT: ;;#ASMEND3514; GFX900-NEXT: v_mov_b32_e32 v5, 03515; GFX900-NEXT: ;;#ASMSTART3516; GFX900-NEXT: ; def v[0:2]3517; GFX900-NEXT: ;;#ASMEND3518; GFX900-NEXT: v_mov_b32_e32 v4, v13519; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]3520; GFX900-NEXT: s_waitcnt vmcnt(0)3521; GFX900-NEXT: s_setpc_b64 s[30:31]3522;3523; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_1_4:3524; GFX90A: ; %bb.0:3525; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3526; GFX90A-NEXT: ;;#ASMSTART3527; GFX90A-NEXT: ; def v[2:4]3528; GFX90A-NEXT: ;;#ASMEND3529; GFX90A-NEXT: v_mov_b32_e32 v5, 03530; GFX90A-NEXT: ;;#ASMSTART3531; GFX90A-NEXT: ; def v[0:2]3532; GFX90A-NEXT: ;;#ASMEND3533; GFX90A-NEXT: v_mov_b32_e32 v4, v13534; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]3535; GFX90A-NEXT: s_waitcnt vmcnt(0)3536; GFX90A-NEXT: s_setpc_b64 s[30:31]3537;3538; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_1_4:3539; GFX942: ; %bb.0:3540; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3541; GFX942-NEXT: ;;#ASMSTART3542; GFX942-NEXT: ; def v[2:4]3543; GFX942-NEXT: ;;#ASMEND3544; GFX942-NEXT: v_mov_b32_e32 v5, 03545; GFX942-NEXT: ;;#ASMSTART3546; GFX942-NEXT: ; def v[0:2]3547; GFX942-NEXT: ;;#ASMEND3548; GFX942-NEXT: s_nop 03549; GFX942-NEXT: v_mov_b32_e32 v4, v13550; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]3551; GFX942-NEXT: s_waitcnt vmcnt(0)3552; GFX942-NEXT: s_setpc_b64 s[30:31]3553 %vec0 = call <3 x i32> asm "; def $0", "=v"()3554 %vec1 = call <3 x i32> asm "; def $0", "=v"()3555 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 4>3556 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 163557 ret void3558}3559 3560define void @v_shuffle_v3i32_v3i32__5_2_4(ptr addrspace(1) inreg %ptr) {3561; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_2_4:3562; GFX900: ; %bb.0:3563; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3564; GFX900-NEXT: ;;#ASMSTART3565; GFX900-NEXT: ; def v[1:3]3566; GFX900-NEXT: ;;#ASMEND3567; GFX900-NEXT: v_mov_b32_e32 v5, 03568; GFX900-NEXT: ;;#ASMSTART3569; GFX900-NEXT: ; def v[0:2]3570; GFX900-NEXT: ;;#ASMEND3571; GFX900-NEXT: v_mov_b32_e32 v4, v13572; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]3573; GFX900-NEXT: s_waitcnt vmcnt(0)3574; GFX900-NEXT: s_setpc_b64 s[30:31]3575;3576; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_2_4:3577; GFX90A: ; %bb.0:3578; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3579; GFX90A-NEXT: ;;#ASMSTART3580; GFX90A-NEXT: ; def v[2:4]3581; GFX90A-NEXT: ;;#ASMEND3582; GFX90A-NEXT: v_mov_b32_e32 v5, 03583; GFX90A-NEXT: ;;#ASMSTART3584; GFX90A-NEXT: ; def v[0:2]3585; GFX90A-NEXT: ;;#ASMEND3586; GFX90A-NEXT: v_mov_b32_e32 v3, v43587; GFX90A-NEXT: v_mov_b32_e32 v4, v13588; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]3589; GFX90A-NEXT: s_waitcnt vmcnt(0)3590; GFX90A-NEXT: s_setpc_b64 s[30:31]3591;3592; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_2_4:3593; GFX942: ; %bb.0:3594; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3595; GFX942-NEXT: ;;#ASMSTART3596; GFX942-NEXT: ; def v[2:4]3597; GFX942-NEXT: ;;#ASMEND3598; GFX942-NEXT: v_mov_b32_e32 v5, 03599; GFX942-NEXT: ;;#ASMSTART3600; GFX942-NEXT: ; def v[0:2]3601; GFX942-NEXT: ;;#ASMEND3602; GFX942-NEXT: v_mov_b32_e32 v3, v43603; GFX942-NEXT: v_mov_b32_e32 v4, v13604; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]3605; GFX942-NEXT: s_waitcnt vmcnt(0)3606; GFX942-NEXT: s_setpc_b64 s[30:31]3607 %vec0 = call <3 x i32> asm "; def $0", "=v"()3608 %vec1 = call <3 x i32> asm "; def $0", "=v"()3609 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 4>3610 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 163611 ret void3612}3613 3614define void @v_shuffle_v3i32_v3i32__5_3_4(ptr addrspace(1) inreg %ptr) {3615; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_3_4:3616; GFX900: ; %bb.0:3617; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3618; GFX900-NEXT: v_mov_b32_e32 v5, 03619; GFX900-NEXT: ;;#ASMSTART3620; GFX900-NEXT: ; def v[0:2]3621; GFX900-NEXT: ;;#ASMEND3622; GFX900-NEXT: v_mov_b32_e32 v3, v03623; GFX900-NEXT: v_mov_b32_e32 v4, v13624; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]3625; GFX900-NEXT: s_waitcnt vmcnt(0)3626; GFX900-NEXT: s_setpc_b64 s[30:31]3627;3628; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_3_4:3629; GFX90A: ; %bb.0:3630; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3631; GFX90A-NEXT: v_mov_b32_e32 v5, 03632; GFX90A-NEXT: ;;#ASMSTART3633; GFX90A-NEXT: ; def v[0:2]3634; GFX90A-NEXT: ;;#ASMEND3635; GFX90A-NEXT: v_mov_b32_e32 v3, v03636; GFX90A-NEXT: v_mov_b32_e32 v4, v13637; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]3638; GFX90A-NEXT: s_waitcnt vmcnt(0)3639; GFX90A-NEXT: s_setpc_b64 s[30:31]3640;3641; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_3_4:3642; GFX942: ; %bb.0:3643; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3644; GFX942-NEXT: v_mov_b32_e32 v5, 03645; GFX942-NEXT: ;;#ASMSTART3646; GFX942-NEXT: ; def v[0:2]3647; GFX942-NEXT: ;;#ASMEND3648; GFX942-NEXT: s_nop 03649; GFX942-NEXT: v_mov_b32_e32 v3, v03650; GFX942-NEXT: v_mov_b32_e32 v4, v13651; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]3652; GFX942-NEXT: s_waitcnt vmcnt(0)3653; GFX942-NEXT: s_setpc_b64 s[30:31]3654 %vec0 = call <3 x i32> asm "; def $0", "=v"()3655 %vec1 = call <3 x i32> asm "; def $0", "=v"()3656 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 4>3657 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 163658 ret void3659}3660 3661define void @v_shuffle_v3i32_v3i32__u_5_5(ptr addrspace(1) inreg %ptr) {3662; GFX900-LABEL: v_shuffle_v3i32_v3i32__u_5_5:3663; GFX900: ; %bb.0:3664; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3665; GFX900-NEXT: v_mov_b32_e32 v4, 03666; GFX900-NEXT: ;;#ASMSTART3667; GFX900-NEXT: ; def v[0:2]3668; GFX900-NEXT: ;;#ASMEND3669; GFX900-NEXT: v_mov_b32_e32 v3, v23670; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]3671; GFX900-NEXT: s_waitcnt vmcnt(0)3672; GFX900-NEXT: s_setpc_b64 s[30:31]3673;3674; GFX90A-LABEL: v_shuffle_v3i32_v3i32__u_5_5:3675; GFX90A: ; %bb.0:3676; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3677; GFX90A-NEXT: ;;#ASMSTART3678; GFX90A-NEXT: ; def v[0:2]3679; GFX90A-NEXT: ;;#ASMEND3680; GFX90A-NEXT: v_mov_b32_e32 v3, 03681; GFX90A-NEXT: v_mov_b32_e32 v1, v23682; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17]3683; GFX90A-NEXT: s_waitcnt vmcnt(0)3684; GFX90A-NEXT: s_setpc_b64 s[30:31]3685;3686; GFX942-LABEL: v_shuffle_v3i32_v3i32__u_5_5:3687; GFX942: ; %bb.0:3688; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3689; GFX942-NEXT: ;;#ASMSTART3690; GFX942-NEXT: ; def v[0:2]3691; GFX942-NEXT: ;;#ASMEND3692; GFX942-NEXT: v_mov_b32_e32 v3, 03693; GFX942-NEXT: v_mov_b32_e32 v1, v23694; GFX942-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1]3695; GFX942-NEXT: s_waitcnt vmcnt(0)3696; GFX942-NEXT: s_setpc_b64 s[30:31]3697 %vec0 = call <3 x i32> asm "; def $0", "=v"()3698 %vec1 = call <3 x i32> asm "; def $0", "=v"()3699 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 poison, i32 5, i32 5>3700 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 163701 ret void3702}3703 3704define void @v_shuffle_v3i32_v3i32__0_5_5(ptr addrspace(1) inreg %ptr) {3705; GFX900-LABEL: v_shuffle_v3i32_v3i32__0_5_5:3706; GFX900: ; %bb.0:3707; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3708; GFX900-NEXT: ;;#ASMSTART3709; GFX900-NEXT: ; def v[0:2]3710; GFX900-NEXT: ;;#ASMEND3711; GFX900-NEXT: ;;#ASMSTART3712; GFX900-NEXT: ; def v[1:3]3713; GFX900-NEXT: ;;#ASMEND3714; GFX900-NEXT: v_mov_b32_e32 v4, 03715; GFX900-NEXT: v_mov_b32_e32 v1, v33716; GFX900-NEXT: v_mov_b32_e32 v2, v33717; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]3718; GFX900-NEXT: s_waitcnt vmcnt(0)3719; GFX900-NEXT: s_setpc_b64 s[30:31]3720;3721; GFX90A-LABEL: v_shuffle_v3i32_v3i32__0_5_5:3722; GFX90A: ; %bb.0:3723; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3724; GFX90A-NEXT: ;;#ASMSTART3725; GFX90A-NEXT: ; def v[0:2]3726; GFX90A-NEXT: ;;#ASMEND3727; GFX90A-NEXT: ;;#ASMSTART3728; GFX90A-NEXT: ; def v[2:4]3729; GFX90A-NEXT: ;;#ASMEND3730; GFX90A-NEXT: v_mov_b32_e32 v5, 03731; GFX90A-NEXT: v_mov_b32_e32 v1, v43732; GFX90A-NEXT: v_mov_b32_e32 v2, v43733; GFX90A-NEXT: global_store_dwordx3 v5, v[0:2], s[16:17]3734; GFX90A-NEXT: s_waitcnt vmcnt(0)3735; GFX90A-NEXT: s_setpc_b64 s[30:31]3736;3737; GFX942-LABEL: v_shuffle_v3i32_v3i32__0_5_5:3738; GFX942: ; %bb.0:3739; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3740; GFX942-NEXT: ;;#ASMSTART3741; GFX942-NEXT: ; def v[0:2]3742; GFX942-NEXT: ;;#ASMEND3743; GFX942-NEXT: v_mov_b32_e32 v5, 03744; GFX942-NEXT: ;;#ASMSTART3745; GFX942-NEXT: ; def v[2:4]3746; GFX942-NEXT: ;;#ASMEND3747; GFX942-NEXT: s_nop 03748; GFX942-NEXT: v_mov_b32_e32 v1, v43749; GFX942-NEXT: v_mov_b32_e32 v2, v43750; GFX942-NEXT: global_store_dwordx3 v5, v[0:2], s[0:1]3751; GFX942-NEXT: s_waitcnt vmcnt(0)3752; GFX942-NEXT: s_setpc_b64 s[30:31]3753 %vec0 = call <3 x i32> asm "; def $0", "=v"()3754 %vec1 = call <3 x i32> asm "; def $0", "=v"()3755 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 0, i32 5, i32 5>3756 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 163757 ret void3758}3759 3760define void @v_shuffle_v3i32_v3i32__1_5_5(ptr addrspace(1) inreg %ptr) {3761; GFX900-LABEL: v_shuffle_v3i32_v3i32__1_5_5:3762; GFX900: ; %bb.0:3763; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3764; GFX900-NEXT: ;;#ASMSTART3765; GFX900-NEXT: ; def v[0:2]3766; GFX900-NEXT: ;;#ASMEND3767; GFX900-NEXT: ;;#ASMSTART3768; GFX900-NEXT: ; def v[2:4]3769; GFX900-NEXT: ;;#ASMEND3770; GFX900-NEXT: v_mov_b32_e32 v5, 03771; GFX900-NEXT: v_mov_b32_e32 v2, v43772; GFX900-NEXT: v_mov_b32_e32 v3, v43773; GFX900-NEXT: global_store_dwordx3 v5, v[1:3], s[16:17]3774; GFX900-NEXT: s_waitcnt vmcnt(0)3775; GFX900-NEXT: s_setpc_b64 s[30:31]3776;3777; GFX90A-LABEL: v_shuffle_v3i32_v3i32__1_5_5:3778; GFX90A: ; %bb.0:3779; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3780; GFX90A-NEXT: ;;#ASMSTART3781; GFX90A-NEXT: ; def v[0:2]3782; GFX90A-NEXT: ;;#ASMEND3783; GFX90A-NEXT: ;;#ASMSTART3784; GFX90A-NEXT: ; def v[2:4]3785; GFX90A-NEXT: ;;#ASMEND3786; GFX90A-NEXT: v_mov_b32_e32 v5, 03787; GFX90A-NEXT: v_mov_b32_e32 v2, v13788; GFX90A-NEXT: v_mov_b32_e32 v3, v43789; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]3790; GFX90A-NEXT: s_waitcnt vmcnt(0)3791; GFX90A-NEXT: s_setpc_b64 s[30:31]3792;3793; GFX942-LABEL: v_shuffle_v3i32_v3i32__1_5_5:3794; GFX942: ; %bb.0:3795; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3796; GFX942-NEXT: ;;#ASMSTART3797; GFX942-NEXT: ; def v[0:2]3798; GFX942-NEXT: ;;#ASMEND3799; GFX942-NEXT: v_mov_b32_e32 v5, 03800; GFX942-NEXT: ;;#ASMSTART3801; GFX942-NEXT: ; def v[2:4]3802; GFX942-NEXT: ;;#ASMEND3803; GFX942-NEXT: s_nop 03804; GFX942-NEXT: v_mov_b32_e32 v2, v13805; GFX942-NEXT: v_mov_b32_e32 v3, v43806; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]3807; GFX942-NEXT: s_waitcnt vmcnt(0)3808; GFX942-NEXT: s_setpc_b64 s[30:31]3809 %vec0 = call <3 x i32> asm "; def $0", "=v"()3810 %vec1 = call <3 x i32> asm "; def $0", "=v"()3811 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 1, i32 5, i32 5>3812 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 163813 ret void3814}3815 3816define void @v_shuffle_v3i32_v3i32__2_5_5(ptr addrspace(1) inreg %ptr) {3817; GFX900-LABEL: v_shuffle_v3i32_v3i32__2_5_5:3818; GFX900: ; %bb.0:3819; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3820; GFX900-NEXT: ;;#ASMSTART3821; GFX900-NEXT: ; def v[3:5]3822; GFX900-NEXT: ;;#ASMEND3823; GFX900-NEXT: v_mov_b32_e32 v6, 03824; GFX900-NEXT: v_mov_b32_e32 v3, v53825; GFX900-NEXT: v_mov_b32_e32 v4, v53826; GFX900-NEXT: ;;#ASMSTART3827; GFX900-NEXT: ; def v[0:2]3828; GFX900-NEXT: ;;#ASMEND3829; GFX900-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]3830; GFX900-NEXT: s_waitcnt vmcnt(0)3831; GFX900-NEXT: s_setpc_b64 s[30:31]3832;3833; GFX90A-LABEL: v_shuffle_v3i32_v3i32__2_5_5:3834; GFX90A: ; %bb.0:3835; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3836; GFX90A-NEXT: ;;#ASMSTART3837; GFX90A-NEXT: ; def v[4:6]3838; GFX90A-NEXT: ;;#ASMEND3839; GFX90A-NEXT: v_mov_b32_e32 v7, 03840; GFX90A-NEXT: v_mov_b32_e32 v3, v63841; GFX90A-NEXT: v_mov_b32_e32 v4, v63842; GFX90A-NEXT: ;;#ASMSTART3843; GFX90A-NEXT: ; def v[0:2]3844; GFX90A-NEXT: ;;#ASMEND3845; GFX90A-NEXT: global_store_dwordx3 v7, v[2:4], s[16:17]3846; GFX90A-NEXT: s_waitcnt vmcnt(0)3847; GFX90A-NEXT: s_setpc_b64 s[30:31]3848;3849; GFX942-LABEL: v_shuffle_v3i32_v3i32__2_5_5:3850; GFX942: ; %bb.0:3851; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3852; GFX942-NEXT: ;;#ASMSTART3853; GFX942-NEXT: ; def v[4:6]3854; GFX942-NEXT: ;;#ASMEND3855; GFX942-NEXT: v_mov_b32_e32 v7, 03856; GFX942-NEXT: v_mov_b32_e32 v3, v63857; GFX942-NEXT: v_mov_b32_e32 v4, v63858; GFX942-NEXT: ;;#ASMSTART3859; GFX942-NEXT: ; def v[0:2]3860; GFX942-NEXT: ;;#ASMEND3861; GFX942-NEXT: global_store_dwordx3 v7, v[2:4], s[0:1]3862; GFX942-NEXT: s_waitcnt vmcnt(0)3863; GFX942-NEXT: s_setpc_b64 s[30:31]3864 %vec0 = call <3 x i32> asm "; def $0", "=v"()3865 %vec1 = call <3 x i32> asm "; def $0", "=v"()3866 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 2, i32 5, i32 5>3867 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 163868 ret void3869}3870 3871define void @v_shuffle_v3i32_v3i32__3_5_5(ptr addrspace(1) inreg %ptr) {3872; GFX900-LABEL: v_shuffle_v3i32_v3i32__3_5_5:3873; GFX900: ; %bb.0:3874; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3875; GFX900-NEXT: ;;#ASMSTART3876; GFX900-NEXT: ; def v[0:2]3877; GFX900-NEXT: ;;#ASMEND3878; GFX900-NEXT: v_mov_b32_e32 v3, 03879; GFX900-NEXT: v_mov_b32_e32 v1, v23880; GFX900-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17]3881; GFX900-NEXT: s_waitcnt vmcnt(0)3882; GFX900-NEXT: s_setpc_b64 s[30:31]3883;3884; GFX90A-LABEL: v_shuffle_v3i32_v3i32__3_5_5:3885; GFX90A: ; %bb.0:3886; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3887; GFX90A-NEXT: ;;#ASMSTART3888; GFX90A-NEXT: ; def v[0:2]3889; GFX90A-NEXT: ;;#ASMEND3890; GFX90A-NEXT: v_mov_b32_e32 v3, 03891; GFX90A-NEXT: v_mov_b32_e32 v1, v23892; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17]3893; GFX90A-NEXT: s_waitcnt vmcnt(0)3894; GFX90A-NEXT: s_setpc_b64 s[30:31]3895;3896; GFX942-LABEL: v_shuffle_v3i32_v3i32__3_5_5:3897; GFX942: ; %bb.0:3898; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3899; GFX942-NEXT: ;;#ASMSTART3900; GFX942-NEXT: ; def v[0:2]3901; GFX942-NEXT: ;;#ASMEND3902; GFX942-NEXT: v_mov_b32_e32 v3, 03903; GFX942-NEXT: v_mov_b32_e32 v1, v23904; GFX942-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1]3905; GFX942-NEXT: s_waitcnt vmcnt(0)3906; GFX942-NEXT: s_setpc_b64 s[30:31]3907 %vec0 = call <3 x i32> asm "; def $0", "=v"()3908 %vec1 = call <3 x i32> asm "; def $0", "=v"()3909 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 3, i32 5, i32 5>3910 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 163911 ret void3912}3913 3914define void @v_shuffle_v3i32_v3i32__4_5_5(ptr addrspace(1) inreg %ptr) {3915; GFX900-LABEL: v_shuffle_v3i32_v3i32__4_5_5:3916; GFX900: ; %bb.0:3917; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3918; GFX900-NEXT: v_mov_b32_e32 v4, 03919; GFX900-NEXT: ;;#ASMSTART3920; GFX900-NEXT: ; def v[0:2]3921; GFX900-NEXT: ;;#ASMEND3922; GFX900-NEXT: v_mov_b32_e32 v3, v23923; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]3924; GFX900-NEXT: s_waitcnt vmcnt(0)3925; GFX900-NEXT: s_setpc_b64 s[30:31]3926;3927; GFX90A-LABEL: v_shuffle_v3i32_v3i32__4_5_5:3928; GFX90A: ; %bb.0:3929; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3930; GFX90A-NEXT: ;;#ASMSTART3931; GFX90A-NEXT: ; def v[0:2]3932; GFX90A-NEXT: ;;#ASMEND3933; GFX90A-NEXT: v_mov_b32_e32 v3, 03934; GFX90A-NEXT: v_mov_b32_e32 v0, v13935; GFX90A-NEXT: v_mov_b32_e32 v1, v23936; GFX90A-NEXT: global_store_dwordx3 v3, v[0:2], s[16:17]3937; GFX90A-NEXT: s_waitcnt vmcnt(0)3938; GFX90A-NEXT: s_setpc_b64 s[30:31]3939;3940; GFX942-LABEL: v_shuffle_v3i32_v3i32__4_5_5:3941; GFX942: ; %bb.0:3942; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3943; GFX942-NEXT: ;;#ASMSTART3944; GFX942-NEXT: ; def v[0:2]3945; GFX942-NEXT: ;;#ASMEND3946; GFX942-NEXT: v_mov_b32_e32 v3, 03947; GFX942-NEXT: v_mov_b32_e32 v0, v13948; GFX942-NEXT: v_mov_b32_e32 v1, v23949; GFX942-NEXT: global_store_dwordx3 v3, v[0:2], s[0:1]3950; GFX942-NEXT: s_waitcnt vmcnt(0)3951; GFX942-NEXT: s_setpc_b64 s[30:31]3952 %vec0 = call <3 x i32> asm "; def $0", "=v"()3953 %vec1 = call <3 x i32> asm "; def $0", "=v"()3954 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 5, i32 5>3955 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 163956 ret void3957}3958 3959define void @v_shuffle_v3i32_v3i32__5_u_5(ptr addrspace(1) inreg %ptr) {3960; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_u_5:3961; GFX900: ; %bb.0:3962; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3963; GFX900-NEXT: v_mov_b32_e32 v3, 03964; GFX900-NEXT: ;;#ASMSTART3965; GFX900-NEXT: ; def v[0:2]3966; GFX900-NEXT: ;;#ASMEND3967; GFX900-NEXT: v_mov_b32_e32 v4, v23968; GFX900-NEXT: global_store_dwordx3 v3, v[2:4], s[16:17]3969; GFX900-NEXT: s_waitcnt vmcnt(0)3970; GFX900-NEXT: s_setpc_b64 s[30:31]3971;3972; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_u_5:3973; GFX90A: ; %bb.0:3974; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3975; GFX90A-NEXT: v_mov_b32_e32 v3, 03976; GFX90A-NEXT: ;;#ASMSTART3977; GFX90A-NEXT: ; def v[0:2]3978; GFX90A-NEXT: ;;#ASMEND3979; GFX90A-NEXT: v_mov_b32_e32 v4, v23980; GFX90A-NEXT: global_store_dwordx3 v3, v[2:4], s[16:17]3981; GFX90A-NEXT: s_waitcnt vmcnt(0)3982; GFX90A-NEXT: s_setpc_b64 s[30:31]3983;3984; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_u_5:3985; GFX942: ; %bb.0:3986; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3987; GFX942-NEXT: v_mov_b32_e32 v3, 03988; GFX942-NEXT: ;;#ASMSTART3989; GFX942-NEXT: ; def v[0:2]3990; GFX942-NEXT: ;;#ASMEND3991; GFX942-NEXT: s_nop 03992; GFX942-NEXT: v_mov_b32_e32 v4, v23993; GFX942-NEXT: global_store_dwordx3 v3, v[2:4], s[0:1]3994; GFX942-NEXT: s_waitcnt vmcnt(0)3995; GFX942-NEXT: s_setpc_b64 s[30:31]3996 %vec0 = call <3 x i32> asm "; def $0", "=v"()3997 %vec1 = call <3 x i32> asm "; def $0", "=v"()3998 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 5>3999 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 164000 ret void4001}4002 4003define void @v_shuffle_v3i32_v3i32__5_0_5(ptr addrspace(1) inreg %ptr) {4004; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_0_5:4005; GFX900: ; %bb.0:4006; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4007; GFX900-NEXT: ;;#ASMSTART4008; GFX900-NEXT: ; def v[3:5]4009; GFX900-NEXT: ;;#ASMEND4010; GFX900-NEXT: v_mov_b32_e32 v6, 04011; GFX900-NEXT: ;;#ASMSTART4012; GFX900-NEXT: ; def v[0:2]4013; GFX900-NEXT: ;;#ASMEND4014; GFX900-NEXT: v_mov_b32_e32 v4, v24015; GFX900-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]4016; GFX900-NEXT: s_waitcnt vmcnt(0)4017; GFX900-NEXT: s_setpc_b64 s[30:31]4018;4019; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_0_5:4020; GFX90A: ; %bb.0:4021; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4022; GFX90A-NEXT: ;;#ASMSTART4023; GFX90A-NEXT: ; def v[4:6]4024; GFX90A-NEXT: ;;#ASMEND4025; GFX90A-NEXT: v_mov_b32_e32 v7, 04026; GFX90A-NEXT: ;;#ASMSTART4027; GFX90A-NEXT: ; def v[0:2]4028; GFX90A-NEXT: ;;#ASMEND4029; GFX90A-NEXT: v_mov_b32_e32 v3, v44030; GFX90A-NEXT: v_mov_b32_e32 v4, v24031; GFX90A-NEXT: global_store_dwordx3 v7, v[2:4], s[16:17]4032; GFX90A-NEXT: s_waitcnt vmcnt(0)4033; GFX90A-NEXT: s_setpc_b64 s[30:31]4034;4035; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_0_5:4036; GFX942: ; %bb.0:4037; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4038; GFX942-NEXT: ;;#ASMSTART4039; GFX942-NEXT: ; def v[4:6]4040; GFX942-NEXT: ;;#ASMEND4041; GFX942-NEXT: v_mov_b32_e32 v7, 04042; GFX942-NEXT: ;;#ASMSTART4043; GFX942-NEXT: ; def v[0:2]4044; GFX942-NEXT: ;;#ASMEND4045; GFX942-NEXT: v_mov_b32_e32 v3, v44046; GFX942-NEXT: v_mov_b32_e32 v4, v24047; GFX942-NEXT: global_store_dwordx3 v7, v[2:4], s[0:1]4048; GFX942-NEXT: s_waitcnt vmcnt(0)4049; GFX942-NEXT: s_setpc_b64 s[30:31]4050 %vec0 = call <3 x i32> asm "; def $0", "=v"()4051 %vec1 = call <3 x i32> asm "; def $0", "=v"()4052 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 5>4053 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 164054 ret void4055}4056 4057define void @v_shuffle_v3i32_v3i32__5_1_5(ptr addrspace(1) inreg %ptr) {4058; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_1_5:4059; GFX900: ; %bb.0:4060; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4061; GFX900-NEXT: ;;#ASMSTART4062; GFX900-NEXT: ; def v[2:4]4063; GFX900-NEXT: ;;#ASMEND4064; GFX900-NEXT: v_mov_b32_e32 v5, 04065; GFX900-NEXT: ;;#ASMSTART4066; GFX900-NEXT: ; def v[0:2]4067; GFX900-NEXT: ;;#ASMEND4068; GFX900-NEXT: v_mov_b32_e32 v4, v24069; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]4070; GFX900-NEXT: s_waitcnt vmcnt(0)4071; GFX900-NEXT: s_setpc_b64 s[30:31]4072;4073; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_1_5:4074; GFX90A: ; %bb.0:4075; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4076; GFX90A-NEXT: ;;#ASMSTART4077; GFX90A-NEXT: ; def v[2:4]4078; GFX90A-NEXT: ;;#ASMEND4079; GFX90A-NEXT: v_mov_b32_e32 v5, 04080; GFX90A-NEXT: ;;#ASMSTART4081; GFX90A-NEXT: ; def v[0:2]4082; GFX90A-NEXT: ;;#ASMEND4083; GFX90A-NEXT: v_mov_b32_e32 v4, v24084; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]4085; GFX90A-NEXT: s_waitcnt vmcnt(0)4086; GFX90A-NEXT: s_setpc_b64 s[30:31]4087;4088; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_1_5:4089; GFX942: ; %bb.0:4090; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4091; GFX942-NEXT: ;;#ASMSTART4092; GFX942-NEXT: ; def v[2:4]4093; GFX942-NEXT: ;;#ASMEND4094; GFX942-NEXT: v_mov_b32_e32 v5, 04095; GFX942-NEXT: ;;#ASMSTART4096; GFX942-NEXT: ; def v[0:2]4097; GFX942-NEXT: ;;#ASMEND4098; GFX942-NEXT: s_nop 04099; GFX942-NEXT: v_mov_b32_e32 v4, v24100; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]4101; GFX942-NEXT: s_waitcnt vmcnt(0)4102; GFX942-NEXT: s_setpc_b64 s[30:31]4103 %vec0 = call <3 x i32> asm "; def $0", "=v"()4104 %vec1 = call <3 x i32> asm "; def $0", "=v"()4105 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 5>4106 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 164107 ret void4108}4109 4110define void @v_shuffle_v3i32_v3i32__5_2_5(ptr addrspace(1) inreg %ptr) {4111; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_2_5:4112; GFX900: ; %bb.0:4113; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4114; GFX900-NEXT: ;;#ASMSTART4115; GFX900-NEXT: ; def v[1:3]4116; GFX900-NEXT: ;;#ASMEND4117; GFX900-NEXT: v_mov_b32_e32 v5, 04118; GFX900-NEXT: ;;#ASMSTART4119; GFX900-NEXT: ; def v[0:2]4120; GFX900-NEXT: ;;#ASMEND4121; GFX900-NEXT: v_mov_b32_e32 v4, v24122; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]4123; GFX900-NEXT: s_waitcnt vmcnt(0)4124; GFX900-NEXT: s_setpc_b64 s[30:31]4125;4126; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_2_5:4127; GFX90A: ; %bb.0:4128; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4129; GFX90A-NEXT: ;;#ASMSTART4130; GFX90A-NEXT: ; def v[2:4]4131; GFX90A-NEXT: ;;#ASMEND4132; GFX90A-NEXT: v_mov_b32_e32 v5, 04133; GFX90A-NEXT: ;;#ASMSTART4134; GFX90A-NEXT: ; def v[0:2]4135; GFX90A-NEXT: ;;#ASMEND4136; GFX90A-NEXT: v_mov_b32_e32 v3, v44137; GFX90A-NEXT: v_mov_b32_e32 v4, v24138; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]4139; GFX90A-NEXT: s_waitcnt vmcnt(0)4140; GFX90A-NEXT: s_setpc_b64 s[30:31]4141;4142; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_2_5:4143; GFX942: ; %bb.0:4144; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4145; GFX942-NEXT: ;;#ASMSTART4146; GFX942-NEXT: ; def v[2:4]4147; GFX942-NEXT: ;;#ASMEND4148; GFX942-NEXT: v_mov_b32_e32 v5, 04149; GFX942-NEXT: ;;#ASMSTART4150; GFX942-NEXT: ; def v[0:2]4151; GFX942-NEXT: ;;#ASMEND4152; GFX942-NEXT: v_mov_b32_e32 v3, v44153; GFX942-NEXT: v_mov_b32_e32 v4, v24154; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]4155; GFX942-NEXT: s_waitcnt vmcnt(0)4156; GFX942-NEXT: s_setpc_b64 s[30:31]4157 %vec0 = call <3 x i32> asm "; def $0", "=v"()4158 %vec1 = call <3 x i32> asm "; def $0", "=v"()4159 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 5>4160 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 164161 ret void4162}4163 4164define void @v_shuffle_v3i32_v3i32__5_3_5(ptr addrspace(1) inreg %ptr) {4165; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_3_5:4166; GFX900: ; %bb.0:4167; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4168; GFX900-NEXT: v_mov_b32_e32 v5, 04169; GFX900-NEXT: ;;#ASMSTART4170; GFX900-NEXT: ; def v[0:2]4171; GFX900-NEXT: ;;#ASMEND4172; GFX900-NEXT: v_mov_b32_e32 v3, v04173; GFX900-NEXT: v_mov_b32_e32 v4, v24174; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]4175; GFX900-NEXT: s_waitcnt vmcnt(0)4176; GFX900-NEXT: s_setpc_b64 s[30:31]4177;4178; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_3_5:4179; GFX90A: ; %bb.0:4180; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4181; GFX90A-NEXT: v_mov_b32_e32 v5, 04182; GFX90A-NEXT: ;;#ASMSTART4183; GFX90A-NEXT: ; def v[0:2]4184; GFX90A-NEXT: ;;#ASMEND4185; GFX90A-NEXT: v_mov_b32_e32 v3, v04186; GFX90A-NEXT: v_mov_b32_e32 v4, v24187; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]4188; GFX90A-NEXT: s_waitcnt vmcnt(0)4189; GFX90A-NEXT: s_setpc_b64 s[30:31]4190;4191; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_3_5:4192; GFX942: ; %bb.0:4193; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4194; GFX942-NEXT: v_mov_b32_e32 v5, 04195; GFX942-NEXT: ;;#ASMSTART4196; GFX942-NEXT: ; def v[0:2]4197; GFX942-NEXT: ;;#ASMEND4198; GFX942-NEXT: s_nop 04199; GFX942-NEXT: v_mov_b32_e32 v3, v04200; GFX942-NEXT: v_mov_b32_e32 v4, v24201; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]4202; GFX942-NEXT: s_waitcnt vmcnt(0)4203; GFX942-NEXT: s_setpc_b64 s[30:31]4204 %vec0 = call <3 x i32> asm "; def $0", "=v"()4205 %vec1 = call <3 x i32> asm "; def $0", "=v"()4206 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 5>4207 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 164208 ret void4209}4210 4211define void @v_shuffle_v3i32_v3i32__5_4_5(ptr addrspace(1) inreg %ptr) {4212; GFX900-LABEL: v_shuffle_v3i32_v3i32__5_4_5:4213; GFX900: ; %bb.0:4214; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4215; GFX900-NEXT: v_mov_b32_e32 v5, 04216; GFX900-NEXT: ;;#ASMSTART4217; GFX900-NEXT: ; def v[0:2]4218; GFX900-NEXT: ;;#ASMEND4219; GFX900-NEXT: v_mov_b32_e32 v3, v14220; GFX900-NEXT: v_mov_b32_e32 v4, v24221; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]4222; GFX900-NEXT: s_waitcnt vmcnt(0)4223; GFX900-NEXT: s_setpc_b64 s[30:31]4224;4225; GFX90A-LABEL: v_shuffle_v3i32_v3i32__5_4_5:4226; GFX90A: ; %bb.0:4227; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4228; GFX90A-NEXT: v_mov_b32_e32 v5, 04229; GFX90A-NEXT: ;;#ASMSTART4230; GFX90A-NEXT: ; def v[0:2]4231; GFX90A-NEXT: ;;#ASMEND4232; GFX90A-NEXT: v_mov_b32_e32 v3, v14233; GFX90A-NEXT: v_mov_b32_e32 v4, v24234; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]4235; GFX90A-NEXT: s_waitcnt vmcnt(0)4236; GFX90A-NEXT: s_setpc_b64 s[30:31]4237;4238; GFX942-LABEL: v_shuffle_v3i32_v3i32__5_4_5:4239; GFX942: ; %bb.0:4240; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4241; GFX942-NEXT: v_mov_b32_e32 v5, 04242; GFX942-NEXT: ;;#ASMSTART4243; GFX942-NEXT: ; def v[0:2]4244; GFX942-NEXT: ;;#ASMEND4245; GFX942-NEXT: s_nop 04246; GFX942-NEXT: v_mov_b32_e32 v3, v14247; GFX942-NEXT: v_mov_b32_e32 v4, v24248; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]4249; GFX942-NEXT: s_waitcnt vmcnt(0)4250; GFX942-NEXT: s_setpc_b64 s[30:31]4251 %vec0 = call <3 x i32> asm "; def $0", "=v"()4252 %vec1 = call <3 x i32> asm "; def $0", "=v"()4253 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 5>4254 store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 164255 ret void4256}4257 4258define void @s_shuffle_v3i32_v3i32__u_u_u() {4259; GFX9-LABEL: s_shuffle_v3i32_v3i32__u_u_u:4260; GFX9: ; %bb.0:4261; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4262; GFX9-NEXT: ;;#ASMSTART4263; GFX9-NEXT: ; use s[8:10]4264; GFX9-NEXT: ;;#ASMEND4265; GFX9-NEXT: s_setpc_b64 s[30:31]4266 %vec0 = call <3 x i32> asm "; def $0", "=s"()4267 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> poison4268 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)4269 ret void4270}4271 4272define void @s_shuffle_v3i32_v3i32__0_u_u() {4273; GFX900-LABEL: s_shuffle_v3i32_v3i32__0_u_u:4274; GFX900: ; %bb.0:4275; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4276; GFX900-NEXT: ;;#ASMSTART4277; GFX900-NEXT: ; def s[8:10]4278; GFX900-NEXT: ;;#ASMEND4279; GFX900-NEXT: ;;#ASMSTART4280; GFX900-NEXT: ; use s[8:10]4281; GFX900-NEXT: ;;#ASMEND4282; GFX900-NEXT: s_setpc_b64 s[30:31]4283;4284; GFX90A-LABEL: s_shuffle_v3i32_v3i32__0_u_u:4285; GFX90A: ; %bb.0:4286; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4287; GFX90A-NEXT: ;;#ASMSTART4288; GFX90A-NEXT: ; def s[8:10]4289; GFX90A-NEXT: ;;#ASMEND4290; GFX90A-NEXT: ;;#ASMSTART4291; GFX90A-NEXT: ; use s[8:10]4292; GFX90A-NEXT: ;;#ASMEND4293; GFX90A-NEXT: s_setpc_b64 s[30:31]4294;4295; GFX942-LABEL: s_shuffle_v3i32_v3i32__0_u_u:4296; GFX942: ; %bb.0:4297; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4298; GFX942-NEXT: ;;#ASMSTART4299; GFX942-NEXT: ; def s[8:10]4300; GFX942-NEXT: ;;#ASMEND4301; GFX942-NEXT: s_nop 04302; GFX942-NEXT: ;;#ASMSTART4303; GFX942-NEXT: ; use s[8:10]4304; GFX942-NEXT: ;;#ASMEND4305; GFX942-NEXT: s_setpc_b64 s[30:31]4306 %vec0 = call <3 x i32> asm "; def $0", "=s"()4307 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 0, i32 poison, i32 poison>4308 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)4309 ret void4310}4311 4312define void @s_shuffle_v3i32_v3i32__1_u_u() {4313; GFX900-LABEL: s_shuffle_v3i32_v3i32__1_u_u:4314; GFX900: ; %bb.0:4315; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4316; GFX900-NEXT: ;;#ASMSTART4317; GFX900-NEXT: ; def s[4:6]4318; GFX900-NEXT: ;;#ASMEND4319; GFX900-NEXT: s_mov_b32 s8, s54320; GFX900-NEXT: ;;#ASMSTART4321; GFX900-NEXT: ; use s[8:10]4322; GFX900-NEXT: ;;#ASMEND4323; GFX900-NEXT: s_setpc_b64 s[30:31]4324;4325; GFX90A-LABEL: s_shuffle_v3i32_v3i32__1_u_u:4326; GFX90A: ; %bb.0:4327; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4328; GFX90A-NEXT: ;;#ASMSTART4329; GFX90A-NEXT: ; def s[4:6]4330; GFX90A-NEXT: ;;#ASMEND4331; GFX90A-NEXT: s_mov_b32 s8, s54332; GFX90A-NEXT: ;;#ASMSTART4333; GFX90A-NEXT: ; use s[8:10]4334; GFX90A-NEXT: ;;#ASMEND4335; GFX90A-NEXT: s_setpc_b64 s[30:31]4336;4337; GFX942-LABEL: s_shuffle_v3i32_v3i32__1_u_u:4338; GFX942: ; %bb.0:4339; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4340; GFX942-NEXT: ;;#ASMSTART4341; GFX942-NEXT: ; def s[0:2]4342; GFX942-NEXT: ;;#ASMEND4343; GFX942-NEXT: s_mov_b32 s8, s14344; GFX942-NEXT: ;;#ASMSTART4345; GFX942-NEXT: ; use s[8:10]4346; GFX942-NEXT: ;;#ASMEND4347; GFX942-NEXT: s_setpc_b64 s[30:31]4348 %vec0 = call <3 x i32> asm "; def $0", "=s"()4349 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 1, i32 poison, i32 poison>4350 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)4351 ret void4352}4353 4354define void @s_shuffle_v3i32_v3i32__2_u_u() {4355; GFX900-LABEL: s_shuffle_v3i32_v3i32__2_u_u:4356; GFX900: ; %bb.0:4357; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4358; GFX900-NEXT: ;;#ASMSTART4359; GFX900-NEXT: ; def s[4:6]4360; GFX900-NEXT: ;;#ASMEND4361; GFX900-NEXT: s_mov_b32 s8, s64362; GFX900-NEXT: ;;#ASMSTART4363; GFX900-NEXT: ; use s[8:10]4364; GFX900-NEXT: ;;#ASMEND4365; GFX900-NEXT: s_setpc_b64 s[30:31]4366;4367; GFX90A-LABEL: s_shuffle_v3i32_v3i32__2_u_u:4368; GFX90A: ; %bb.0:4369; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4370; GFX90A-NEXT: ;;#ASMSTART4371; GFX90A-NEXT: ; def s[4:6]4372; GFX90A-NEXT: ;;#ASMEND4373; GFX90A-NEXT: s_mov_b32 s8, s64374; GFX90A-NEXT: ;;#ASMSTART4375; GFX90A-NEXT: ; use s[8:10]4376; GFX90A-NEXT: ;;#ASMEND4377; GFX90A-NEXT: s_setpc_b64 s[30:31]4378;4379; GFX942-LABEL: s_shuffle_v3i32_v3i32__2_u_u:4380; GFX942: ; %bb.0:4381; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4382; GFX942-NEXT: ;;#ASMSTART4383; GFX942-NEXT: ; def s[0:2]4384; GFX942-NEXT: ;;#ASMEND4385; GFX942-NEXT: s_mov_b32 s8, s24386; GFX942-NEXT: ;;#ASMSTART4387; GFX942-NEXT: ; use s[8:10]4388; GFX942-NEXT: ;;#ASMEND4389; GFX942-NEXT: s_setpc_b64 s[30:31]4390 %vec0 = call <3 x i32> asm "; def $0", "=s"()4391 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 2, i32 poison, i32 poison>4392 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)4393 ret void4394}4395 4396define void @s_shuffle_v3i32_v3i32__3_u_u() {4397; GFX9-LABEL: s_shuffle_v3i32_v3i32__3_u_u:4398; GFX9: ; %bb.0:4399; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4400; GFX9-NEXT: ;;#ASMSTART4401; GFX9-NEXT: ; use s[8:10]4402; GFX9-NEXT: ;;#ASMEND4403; GFX9-NEXT: s_setpc_b64 s[30:31]4404 %vec0 = call <3 x i32> asm "; def $0", "=s"()4405 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 3, i32 poison, i32 poison>4406 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)4407 ret void4408}4409 4410define void @s_shuffle_v3i32_v3i32__4_u_u() {4411; GFX900-LABEL: s_shuffle_v3i32_v3i32__4_u_u:4412; GFX900: ; %bb.0:4413; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4414; GFX900-NEXT: ;;#ASMSTART4415; GFX900-NEXT: ; def s[4:6]4416; GFX900-NEXT: ;;#ASMEND4417; GFX900-NEXT: s_mov_b32 s8, s54418; GFX900-NEXT: ;;#ASMSTART4419; GFX900-NEXT: ; use s[8:10]4420; GFX900-NEXT: ;;#ASMEND4421; GFX900-NEXT: s_setpc_b64 s[30:31]4422;4423; GFX90A-LABEL: s_shuffle_v3i32_v3i32__4_u_u:4424; GFX90A: ; %bb.0:4425; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4426; GFX90A-NEXT: ;;#ASMSTART4427; GFX90A-NEXT: ; def s[4:6]4428; GFX90A-NEXT: ;;#ASMEND4429; GFX90A-NEXT: s_mov_b32 s8, s54430; GFX90A-NEXT: ;;#ASMSTART4431; GFX90A-NEXT: ; use s[8:10]4432; GFX90A-NEXT: ;;#ASMEND4433; GFX90A-NEXT: s_setpc_b64 s[30:31]4434;4435; GFX942-LABEL: s_shuffle_v3i32_v3i32__4_u_u:4436; GFX942: ; %bb.0:4437; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4438; GFX942-NEXT: ;;#ASMSTART4439; GFX942-NEXT: ; def s[0:2]4440; GFX942-NEXT: ;;#ASMEND4441; GFX942-NEXT: s_mov_b32 s8, s14442; GFX942-NEXT: ;;#ASMSTART4443; GFX942-NEXT: ; use s[8:10]4444; GFX942-NEXT: ;;#ASMEND4445; GFX942-NEXT: s_setpc_b64 s[30:31]4446 %vec0 = call <3 x i32> asm "; def $0", "=s"()4447 %vec1 = call <3 x i32> asm "; def $0", "=s"()4448 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 poison, i32 poison>4449 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)4450 ret void4451}4452 4453define void @s_shuffle_v3i32_v3i32__5_u_u() {4454; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_u_u:4455; GFX900: ; %bb.0:4456; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4457; GFX900-NEXT: ;;#ASMSTART4458; GFX900-NEXT: ; def s[4:6]4459; GFX900-NEXT: ;;#ASMEND4460; GFX900-NEXT: s_mov_b32 s8, s64461; GFX900-NEXT: ;;#ASMSTART4462; GFX900-NEXT: ; use s[8:10]4463; GFX900-NEXT: ;;#ASMEND4464; GFX900-NEXT: s_setpc_b64 s[30:31]4465;4466; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_u_u:4467; GFX90A: ; %bb.0:4468; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4469; GFX90A-NEXT: ;;#ASMSTART4470; GFX90A-NEXT: ; def s[4:6]4471; GFX90A-NEXT: ;;#ASMEND4472; GFX90A-NEXT: s_mov_b32 s8, s64473; GFX90A-NEXT: ;;#ASMSTART4474; GFX90A-NEXT: ; use s[8:10]4475; GFX90A-NEXT: ;;#ASMEND4476; GFX90A-NEXT: s_setpc_b64 s[30:31]4477;4478; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_u_u:4479; GFX942: ; %bb.0:4480; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4481; GFX942-NEXT: ;;#ASMSTART4482; GFX942-NEXT: ; def s[0:2]4483; GFX942-NEXT: ;;#ASMEND4484; GFX942-NEXT: s_mov_b32 s8, s24485; GFX942-NEXT: ;;#ASMSTART4486; GFX942-NEXT: ; use s[8:10]4487; GFX942-NEXT: ;;#ASMEND4488; GFX942-NEXT: s_setpc_b64 s[30:31]4489 %vec0 = call <3 x i32> asm "; def $0", "=s"()4490 %vec1 = call <3 x i32> asm "; def $0", "=s"()4491 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 poison>4492 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)4493 ret void4494}4495 4496define void @s_shuffle_v3i32_v3i32__5_0_u() {4497; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_0_u:4498; GFX900: ; %bb.0:4499; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4500; GFX900-NEXT: ;;#ASMSTART4501; GFX900-NEXT: ; def s[8:10]4502; GFX900-NEXT: ;;#ASMEND4503; GFX900-NEXT: ;;#ASMSTART4504; GFX900-NEXT: ; def s[4:6]4505; GFX900-NEXT: ;;#ASMEND4506; GFX900-NEXT: s_mov_b32 s8, s104507; GFX900-NEXT: s_mov_b32 s9, s44508; GFX900-NEXT: ;;#ASMSTART4509; GFX900-NEXT: ; use s[8:10]4510; GFX900-NEXT: ;;#ASMEND4511; GFX900-NEXT: s_setpc_b64 s[30:31]4512;4513; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_0_u:4514; GFX90A: ; %bb.0:4515; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4516; GFX90A-NEXT: ;;#ASMSTART4517; GFX90A-NEXT: ; def s[8:10]4518; GFX90A-NEXT: ;;#ASMEND4519; GFX90A-NEXT: ;;#ASMSTART4520; GFX90A-NEXT: ; def s[4:6]4521; GFX90A-NEXT: ;;#ASMEND4522; GFX90A-NEXT: s_mov_b32 s8, s104523; GFX90A-NEXT: s_mov_b32 s9, s44524; GFX90A-NEXT: ;;#ASMSTART4525; GFX90A-NEXT: ; use s[8:10]4526; GFX90A-NEXT: ;;#ASMEND4527; GFX90A-NEXT: s_setpc_b64 s[30:31]4528;4529; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_0_u:4530; GFX942: ; %bb.0:4531; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4532; GFX942-NEXT: ;;#ASMSTART4533; GFX942-NEXT: ; def s[0:2]4534; GFX942-NEXT: ;;#ASMEND4535; GFX942-NEXT: ;;#ASMSTART4536; GFX942-NEXT: ; def s[4:6]4537; GFX942-NEXT: ;;#ASMEND4538; GFX942-NEXT: s_mov_b32 s8, s64539; GFX942-NEXT: s_mov_b32 s9, s04540; GFX942-NEXT: ;;#ASMSTART4541; GFX942-NEXT: ; use s[8:10]4542; GFX942-NEXT: ;;#ASMEND4543; GFX942-NEXT: s_setpc_b64 s[30:31]4544 %vec0 = call <3 x i32> asm "; def $0", "=s"()4545 %vec1 = call <3 x i32> asm "; def $0", "=s"()4546 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 poison>4547 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)4548 ret void4549}4550 4551define void @s_shuffle_v3i32_v3i32__5_1_u() {4552; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_1_u:4553; GFX900: ; %bb.0:4554; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4555; GFX900-NEXT: ;;#ASMSTART4556; GFX900-NEXT: ; def s[8:10]4557; GFX900-NEXT: ;;#ASMEND4558; GFX900-NEXT: ;;#ASMSTART4559; GFX900-NEXT: ; def s[4:6]4560; GFX900-NEXT: ;;#ASMEND4561; GFX900-NEXT: s_mov_b32 s8, s64562; GFX900-NEXT: ;;#ASMSTART4563; GFX900-NEXT: ; use s[8:10]4564; GFX900-NEXT: ;;#ASMEND4565; GFX900-NEXT: s_setpc_b64 s[30:31]4566;4567; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_1_u:4568; GFX90A: ; %bb.0:4569; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4570; GFX90A-NEXT: ;;#ASMSTART4571; GFX90A-NEXT: ; def s[8:10]4572; GFX90A-NEXT: ;;#ASMEND4573; GFX90A-NEXT: ;;#ASMSTART4574; GFX90A-NEXT: ; def s[4:6]4575; GFX90A-NEXT: ;;#ASMEND4576; GFX90A-NEXT: s_mov_b32 s8, s64577; GFX90A-NEXT: ;;#ASMSTART4578; GFX90A-NEXT: ; use s[8:10]4579; GFX90A-NEXT: ;;#ASMEND4580; GFX90A-NEXT: s_setpc_b64 s[30:31]4581;4582; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_1_u:4583; GFX942: ; %bb.0:4584; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4585; GFX942-NEXT: ;;#ASMSTART4586; GFX942-NEXT: ; def s[8:10]4587; GFX942-NEXT: ;;#ASMEND4588; GFX942-NEXT: ;;#ASMSTART4589; GFX942-NEXT: ; def s[0:2]4590; GFX942-NEXT: ;;#ASMEND4591; GFX942-NEXT: s_mov_b32 s8, s24592; GFX942-NEXT: ;;#ASMSTART4593; GFX942-NEXT: ; use s[8:10]4594; GFX942-NEXT: ;;#ASMEND4595; GFX942-NEXT: s_setpc_b64 s[30:31]4596 %vec0 = call <3 x i32> asm "; def $0", "=s"()4597 %vec1 = call <3 x i32> asm "; def $0", "=s"()4598 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 poison>4599 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)4600 ret void4601}4602 4603define void @s_shuffle_v3i32_v3i32__5_2_u() {4604; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_2_u:4605; GFX900: ; %bb.0:4606; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4607; GFX900-NEXT: ;;#ASMSTART4608; GFX900-NEXT: ; def s[8:10]4609; GFX900-NEXT: ;;#ASMEND4610; GFX900-NEXT: ;;#ASMSTART4611; GFX900-NEXT: ; def s[4:6]4612; GFX900-NEXT: ;;#ASMEND4613; GFX900-NEXT: s_mov_b32 s8, s104614; GFX900-NEXT: s_mov_b32 s9, s64615; GFX900-NEXT: ;;#ASMSTART4616; GFX900-NEXT: ; use s[8:10]4617; GFX900-NEXT: ;;#ASMEND4618; GFX900-NEXT: s_setpc_b64 s[30:31]4619;4620; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_2_u:4621; GFX90A: ; %bb.0:4622; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4623; GFX90A-NEXT: ;;#ASMSTART4624; GFX90A-NEXT: ; def s[8:10]4625; GFX90A-NEXT: ;;#ASMEND4626; GFX90A-NEXT: ;;#ASMSTART4627; GFX90A-NEXT: ; def s[4:6]4628; GFX90A-NEXT: ;;#ASMEND4629; GFX90A-NEXT: s_mov_b32 s8, s104630; GFX90A-NEXT: s_mov_b32 s9, s64631; GFX90A-NEXT: ;;#ASMSTART4632; GFX90A-NEXT: ; use s[8:10]4633; GFX90A-NEXT: ;;#ASMEND4634; GFX90A-NEXT: s_setpc_b64 s[30:31]4635;4636; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_2_u:4637; GFX942: ; %bb.0:4638; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4639; GFX942-NEXT: ;;#ASMSTART4640; GFX942-NEXT: ; def s[0:2]4641; GFX942-NEXT: ;;#ASMEND4642; GFX942-NEXT: ;;#ASMSTART4643; GFX942-NEXT: ; def s[4:6]4644; GFX942-NEXT: ;;#ASMEND4645; GFX942-NEXT: s_mov_b32 s8, s64646; GFX942-NEXT: s_mov_b32 s9, s24647; GFX942-NEXT: ;;#ASMSTART4648; GFX942-NEXT: ; use s[8:10]4649; GFX942-NEXT: ;;#ASMEND4650; GFX942-NEXT: s_setpc_b64 s[30:31]4651 %vec0 = call <3 x i32> asm "; def $0", "=s"()4652 %vec1 = call <3 x i32> asm "; def $0", "=s"()4653 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 poison>4654 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)4655 ret void4656}4657 4658define void @s_shuffle_v3i32_v3i32__5_3_u() {4659; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_3_u:4660; GFX900: ; %bb.0:4661; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4662; GFX900-NEXT: ;;#ASMSTART4663; GFX900-NEXT: ; def s[4:6]4664; GFX900-NEXT: ;;#ASMEND4665; GFX900-NEXT: s_mov_b32 s8, s64666; GFX900-NEXT: s_mov_b32 s9, s44667; GFX900-NEXT: ;;#ASMSTART4668; GFX900-NEXT: ; use s[8:10]4669; GFX900-NEXT: ;;#ASMEND4670; GFX900-NEXT: s_setpc_b64 s[30:31]4671;4672; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_3_u:4673; GFX90A: ; %bb.0:4674; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4675; GFX90A-NEXT: ;;#ASMSTART4676; GFX90A-NEXT: ; def s[4:6]4677; GFX90A-NEXT: ;;#ASMEND4678; GFX90A-NEXT: s_mov_b32 s8, s64679; GFX90A-NEXT: s_mov_b32 s9, s44680; GFX90A-NEXT: ;;#ASMSTART4681; GFX90A-NEXT: ; use s[8:10]4682; GFX90A-NEXT: ;;#ASMEND4683; GFX90A-NEXT: s_setpc_b64 s[30:31]4684;4685; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_3_u:4686; GFX942: ; %bb.0:4687; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4688; GFX942-NEXT: ;;#ASMSTART4689; GFX942-NEXT: ; def s[0:2]4690; GFX942-NEXT: ;;#ASMEND4691; GFX942-NEXT: s_mov_b32 s8, s24692; GFX942-NEXT: s_mov_b32 s9, s04693; GFX942-NEXT: ;;#ASMSTART4694; GFX942-NEXT: ; use s[8:10]4695; GFX942-NEXT: ;;#ASMEND4696; GFX942-NEXT: s_setpc_b64 s[30:31]4697 %vec0 = call <3 x i32> asm "; def $0", "=s"()4698 %vec1 = call <3 x i32> asm "; def $0", "=s"()4699 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 poison>4700 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)4701 ret void4702}4703 4704define void @s_shuffle_v3i32_v3i32__5_4_u() {4705; GFX9-LABEL: s_shuffle_v3i32_v3i32__5_4_u:4706; GFX9: ; %bb.0:4707; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4708; GFX9-NEXT: ;;#ASMSTART4709; GFX9-NEXT: ; def s[8:10]4710; GFX9-NEXT: ;;#ASMEND4711; GFX9-NEXT: s_mov_b32 s8, s104712; GFX9-NEXT: ;;#ASMSTART4713; GFX9-NEXT: ; use s[8:10]4714; GFX9-NEXT: ;;#ASMEND4715; GFX9-NEXT: s_setpc_b64 s[30:31]4716 %vec0 = call <3 x i32> asm "; def $0", "=s"()4717 %vec1 = call <3 x i32> asm "; def $0", "=s"()4718 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 poison>4719 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)4720 ret void4721}4722 4723define void @s_shuffle_v3i32_v3i32__5_5_u() {4724; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_5_u:4725; GFX900: ; %bb.0:4726; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4727; GFX900-NEXT: ;;#ASMSTART4728; GFX900-NEXT: ; def s[4:6]4729; GFX900-NEXT: ;;#ASMEND4730; GFX900-NEXT: s_mov_b32 s8, s64731; GFX900-NEXT: s_mov_b32 s9, s64732; GFX900-NEXT: ;;#ASMSTART4733; GFX900-NEXT: ; use s[8:10]4734; GFX900-NEXT: ;;#ASMEND4735; GFX900-NEXT: s_setpc_b64 s[30:31]4736;4737; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_5_u:4738; GFX90A: ; %bb.0:4739; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4740; GFX90A-NEXT: ;;#ASMSTART4741; GFX90A-NEXT: ; def s[4:6]4742; GFX90A-NEXT: ;;#ASMEND4743; GFX90A-NEXT: s_mov_b32 s8, s64744; GFX90A-NEXT: s_mov_b32 s9, s64745; GFX90A-NEXT: ;;#ASMSTART4746; GFX90A-NEXT: ; use s[8:10]4747; GFX90A-NEXT: ;;#ASMEND4748; GFX90A-NEXT: s_setpc_b64 s[30:31]4749;4750; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_5_u:4751; GFX942: ; %bb.0:4752; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4753; GFX942-NEXT: ;;#ASMSTART4754; GFX942-NEXT: ; def s[0:2]4755; GFX942-NEXT: ;;#ASMEND4756; GFX942-NEXT: s_mov_b32 s8, s24757; GFX942-NEXT: s_mov_b32 s9, s24758; GFX942-NEXT: ;;#ASMSTART4759; GFX942-NEXT: ; use s[8:10]4760; GFX942-NEXT: ;;#ASMEND4761; GFX942-NEXT: s_setpc_b64 s[30:31]4762 %vec0 = call <3 x i32> asm "; def $0", "=s"()4763 %vec1 = call <3 x i32> asm "; def $0", "=s"()4764 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 poison>4765 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)4766 ret void4767}4768 4769define void @s_shuffle_v3i32_v3i32__5_5_0() {4770; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_5_0:4771; GFX900: ; %bb.0:4772; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4773; GFX900-NEXT: ;;#ASMSTART4774; GFX900-NEXT: ; def s[8:10]4775; GFX900-NEXT: ;;#ASMEND4776; GFX900-NEXT: ;;#ASMSTART4777; GFX900-NEXT: ; def s[4:6]4778; GFX900-NEXT: ;;#ASMEND4779; GFX900-NEXT: s_mov_b32 s8, s104780; GFX900-NEXT: s_mov_b32 s9, s104781; GFX900-NEXT: s_mov_b32 s10, s44782; GFX900-NEXT: ;;#ASMSTART4783; GFX900-NEXT: ; use s[8:10]4784; GFX900-NEXT: ;;#ASMEND4785; GFX900-NEXT: s_setpc_b64 s[30:31]4786;4787; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_5_0:4788; GFX90A: ; %bb.0:4789; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4790; GFX90A-NEXT: ;;#ASMSTART4791; GFX90A-NEXT: ; def s[8:10]4792; GFX90A-NEXT: ;;#ASMEND4793; GFX90A-NEXT: ;;#ASMSTART4794; GFX90A-NEXT: ; def s[4:6]4795; GFX90A-NEXT: ;;#ASMEND4796; GFX90A-NEXT: s_mov_b32 s8, s104797; GFX90A-NEXT: s_mov_b32 s9, s104798; GFX90A-NEXT: s_mov_b32 s10, s44799; GFX90A-NEXT: ;;#ASMSTART4800; GFX90A-NEXT: ; use s[8:10]4801; GFX90A-NEXT: ;;#ASMEND4802; GFX90A-NEXT: s_setpc_b64 s[30:31]4803;4804; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_5_0:4805; GFX942: ; %bb.0:4806; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4807; GFX942-NEXT: ;;#ASMSTART4808; GFX942-NEXT: ; def s[0:2]4809; GFX942-NEXT: ;;#ASMEND4810; GFX942-NEXT: ;;#ASMSTART4811; GFX942-NEXT: ; def s[4:6]4812; GFX942-NEXT: ;;#ASMEND4813; GFX942-NEXT: s_mov_b32 s8, s64814; GFX942-NEXT: s_mov_b32 s9, s64815; GFX942-NEXT: s_mov_b32 s10, s04816; GFX942-NEXT: ;;#ASMSTART4817; GFX942-NEXT: ; use s[8:10]4818; GFX942-NEXT: ;;#ASMEND4819; GFX942-NEXT: s_setpc_b64 s[30:31]4820 %vec0 = call <3 x i32> asm "; def $0", "=s"()4821 %vec1 = call <3 x i32> asm "; def $0", "=s"()4822 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 0>4823 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)4824 ret void4825}4826 4827define void @s_shuffle_v3i32_v3i32__5_5_1() {4828; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_5_1:4829; GFX900: ; %bb.0:4830; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4831; GFX900-NEXT: ;;#ASMSTART4832; GFX900-NEXT: ; def s[8:10]4833; GFX900-NEXT: ;;#ASMEND4834; GFX900-NEXT: ;;#ASMSTART4835; GFX900-NEXT: ; def s[4:6]4836; GFX900-NEXT: ;;#ASMEND4837; GFX900-NEXT: s_mov_b32 s8, s104838; GFX900-NEXT: s_mov_b32 s9, s104839; GFX900-NEXT: s_mov_b32 s10, s54840; GFX900-NEXT: ;;#ASMSTART4841; GFX900-NEXT: ; use s[8:10]4842; GFX900-NEXT: ;;#ASMEND4843; GFX900-NEXT: s_setpc_b64 s[30:31]4844;4845; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_5_1:4846; GFX90A: ; %bb.0:4847; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4848; GFX90A-NEXT: ;;#ASMSTART4849; GFX90A-NEXT: ; def s[8:10]4850; GFX90A-NEXT: ;;#ASMEND4851; GFX90A-NEXT: ;;#ASMSTART4852; GFX90A-NEXT: ; def s[4:6]4853; GFX90A-NEXT: ;;#ASMEND4854; GFX90A-NEXT: s_mov_b32 s8, s104855; GFX90A-NEXT: s_mov_b32 s9, s104856; GFX90A-NEXT: s_mov_b32 s10, s54857; GFX90A-NEXT: ;;#ASMSTART4858; GFX90A-NEXT: ; use s[8:10]4859; GFX90A-NEXT: ;;#ASMEND4860; GFX90A-NEXT: s_setpc_b64 s[30:31]4861;4862; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_5_1:4863; GFX942: ; %bb.0:4864; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4865; GFX942-NEXT: ;;#ASMSTART4866; GFX942-NEXT: ; def s[0:2]4867; GFX942-NEXT: ;;#ASMEND4868; GFX942-NEXT: ;;#ASMSTART4869; GFX942-NEXT: ; def s[4:6]4870; GFX942-NEXT: ;;#ASMEND4871; GFX942-NEXT: s_mov_b32 s8, s64872; GFX942-NEXT: s_mov_b32 s9, s64873; GFX942-NEXT: s_mov_b32 s10, s14874; GFX942-NEXT: ;;#ASMSTART4875; GFX942-NEXT: ; use s[8:10]4876; GFX942-NEXT: ;;#ASMEND4877; GFX942-NEXT: s_setpc_b64 s[30:31]4878 %vec0 = call <3 x i32> asm "; def $0", "=s"()4879 %vec1 = call <3 x i32> asm "; def $0", "=s"()4880 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 1>4881 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)4882 ret void4883}4884 4885define void @s_shuffle_v3i32_v3i32__5_5_2() {4886; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_5_2:4887; GFX900: ; %bb.0:4888; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4889; GFX900-NEXT: ;;#ASMSTART4890; GFX900-NEXT: ; def s[8:10]4891; GFX900-NEXT: ;;#ASMEND4892; GFX900-NEXT: ;;#ASMSTART4893; GFX900-NEXT: ; def s[4:6]4894; GFX900-NEXT: ;;#ASMEND4895; GFX900-NEXT: s_mov_b32 s8, s64896; GFX900-NEXT: s_mov_b32 s9, s64897; GFX900-NEXT: ;;#ASMSTART4898; GFX900-NEXT: ; use s[8:10]4899; GFX900-NEXT: ;;#ASMEND4900; GFX900-NEXT: s_setpc_b64 s[30:31]4901;4902; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_5_2:4903; GFX90A: ; %bb.0:4904; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4905; GFX90A-NEXT: ;;#ASMSTART4906; GFX90A-NEXT: ; def s[8:10]4907; GFX90A-NEXT: ;;#ASMEND4908; GFX90A-NEXT: ;;#ASMSTART4909; GFX90A-NEXT: ; def s[4:6]4910; GFX90A-NEXT: ;;#ASMEND4911; GFX90A-NEXT: s_mov_b32 s8, s64912; GFX90A-NEXT: s_mov_b32 s9, s64913; GFX90A-NEXT: ;;#ASMSTART4914; GFX90A-NEXT: ; use s[8:10]4915; GFX90A-NEXT: ;;#ASMEND4916; GFX90A-NEXT: s_setpc_b64 s[30:31]4917;4918; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_5_2:4919; GFX942: ; %bb.0:4920; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4921; GFX942-NEXT: ;;#ASMSTART4922; GFX942-NEXT: ; def s[8:10]4923; GFX942-NEXT: ;;#ASMEND4924; GFX942-NEXT: ;;#ASMSTART4925; GFX942-NEXT: ; def s[0:2]4926; GFX942-NEXT: ;;#ASMEND4927; GFX942-NEXT: s_mov_b32 s8, s24928; GFX942-NEXT: s_mov_b32 s9, s24929; GFX942-NEXT: ;;#ASMSTART4930; GFX942-NEXT: ; use s[8:10]4931; GFX942-NEXT: ;;#ASMEND4932; GFX942-NEXT: s_setpc_b64 s[30:31]4933 %vec0 = call <3 x i32> asm "; def $0", "=s"()4934 %vec1 = call <3 x i32> asm "; def $0", "=s"()4935 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 2>4936 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)4937 ret void4938}4939 4940define void @s_shuffle_v3i32_v3i32__5_5_3() {4941; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_5_3:4942; GFX900: ; %bb.0:4943; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4944; GFX900-NEXT: ;;#ASMSTART4945; GFX900-NEXT: ; def s[4:6]4946; GFX900-NEXT: ;;#ASMEND4947; GFX900-NEXT: s_mov_b32 s8, s64948; GFX900-NEXT: s_mov_b32 s9, s64949; GFX900-NEXT: s_mov_b32 s10, s44950; GFX900-NEXT: ;;#ASMSTART4951; GFX900-NEXT: ; use s[8:10]4952; GFX900-NEXT: ;;#ASMEND4953; GFX900-NEXT: s_setpc_b64 s[30:31]4954;4955; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_5_3:4956; GFX90A: ; %bb.0:4957; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4958; GFX90A-NEXT: ;;#ASMSTART4959; GFX90A-NEXT: ; def s[4:6]4960; GFX90A-NEXT: ;;#ASMEND4961; GFX90A-NEXT: s_mov_b32 s8, s64962; GFX90A-NEXT: s_mov_b32 s9, s64963; GFX90A-NEXT: s_mov_b32 s10, s44964; GFX90A-NEXT: ;;#ASMSTART4965; GFX90A-NEXT: ; use s[8:10]4966; GFX90A-NEXT: ;;#ASMEND4967; GFX90A-NEXT: s_setpc_b64 s[30:31]4968;4969; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_5_3:4970; GFX942: ; %bb.0:4971; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4972; GFX942-NEXT: ;;#ASMSTART4973; GFX942-NEXT: ; def s[0:2]4974; GFX942-NEXT: ;;#ASMEND4975; GFX942-NEXT: s_mov_b32 s8, s24976; GFX942-NEXT: s_mov_b32 s9, s24977; GFX942-NEXT: s_mov_b32 s10, s04978; GFX942-NEXT: ;;#ASMSTART4979; GFX942-NEXT: ; use s[8:10]4980; GFX942-NEXT: ;;#ASMEND4981; GFX942-NEXT: s_setpc_b64 s[30:31]4982 %vec0 = call <3 x i32> asm "; def $0", "=s"()4983 %vec1 = call <3 x i32> asm "; def $0", "=s"()4984 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 3>4985 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)4986 ret void4987}4988 4989define void @s_shuffle_v3i32_v3i32__5_5_4() {4990; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_5_4:4991; GFX900: ; %bb.0:4992; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4993; GFX900-NEXT: ;;#ASMSTART4994; GFX900-NEXT: ; def s[4:6]4995; GFX900-NEXT: ;;#ASMEND4996; GFX900-NEXT: s_mov_b32 s8, s64997; GFX900-NEXT: s_mov_b32 s9, s64998; GFX900-NEXT: s_mov_b32 s10, s54999; GFX900-NEXT: ;;#ASMSTART5000; GFX900-NEXT: ; use s[8:10]5001; GFX900-NEXT: ;;#ASMEND5002; GFX900-NEXT: s_setpc_b64 s[30:31]5003;5004; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_5_4:5005; GFX90A: ; %bb.0:5006; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5007; GFX90A-NEXT: ;;#ASMSTART5008; GFX90A-NEXT: ; def s[4:6]5009; GFX90A-NEXT: ;;#ASMEND5010; GFX90A-NEXT: s_mov_b32 s8, s65011; GFX90A-NEXT: s_mov_b32 s9, s65012; GFX90A-NEXT: s_mov_b32 s10, s55013; GFX90A-NEXT: ;;#ASMSTART5014; GFX90A-NEXT: ; use s[8:10]5015; GFX90A-NEXT: ;;#ASMEND5016; GFX90A-NEXT: s_setpc_b64 s[30:31]5017;5018; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_5_4:5019; GFX942: ; %bb.0:5020; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5021; GFX942-NEXT: ;;#ASMSTART5022; GFX942-NEXT: ; def s[0:2]5023; GFX942-NEXT: ;;#ASMEND5024; GFX942-NEXT: s_mov_b32 s8, s25025; GFX942-NEXT: s_mov_b32 s9, s25026; GFX942-NEXT: s_mov_b32 s10, s15027; GFX942-NEXT: ;;#ASMSTART5028; GFX942-NEXT: ; use s[8:10]5029; GFX942-NEXT: ;;#ASMEND5030; GFX942-NEXT: s_setpc_b64 s[30:31]5031 %vec0 = call <3 x i32> asm "; def $0", "=s"()5032 %vec1 = call <3 x i32> asm "; def $0", "=s"()5033 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 4>5034 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)5035 ret void5036}5037 5038define void @s_shuffle_v3i32_v3i32__5_5_5() {5039; GFX9-LABEL: s_shuffle_v3i32_v3i32__5_5_5:5040; GFX9: ; %bb.0:5041; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5042; GFX9-NEXT: ;;#ASMSTART5043; GFX9-NEXT: ; def s[8:10]5044; GFX9-NEXT: ;;#ASMEND5045; GFX9-NEXT: s_mov_b32 s8, s105046; GFX9-NEXT: s_mov_b32 s9, s105047; GFX9-NEXT: ;;#ASMSTART5048; GFX9-NEXT: ; use s[8:10]5049; GFX9-NEXT: ;;#ASMEND5050; GFX9-NEXT: s_setpc_b64 s[30:31]5051 %vec0 = call <3 x i32> asm "; def $0", "=s"()5052 %vec1 = call <3 x i32> asm "; def $0", "=s"()5053 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 5, i32 5>5054 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)5055 ret void5056}5057 5058define void @s_shuffle_v3i32_v3i32__u_0_0() {5059; GFX900-LABEL: s_shuffle_v3i32_v3i32__u_0_0:5060; GFX900: ; %bb.0:5061; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5062; GFX900-NEXT: ;;#ASMSTART5063; GFX900-NEXT: ; def s[4:6]5064; GFX900-NEXT: ;;#ASMEND5065; GFX900-NEXT: s_mov_b32 s9, s45066; GFX900-NEXT: s_mov_b32 s10, s45067; GFX900-NEXT: ;;#ASMSTART5068; GFX900-NEXT: ; use s[8:10]5069; GFX900-NEXT: ;;#ASMEND5070; GFX900-NEXT: s_setpc_b64 s[30:31]5071;5072; GFX90A-LABEL: s_shuffle_v3i32_v3i32__u_0_0:5073; GFX90A: ; %bb.0:5074; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5075; GFX90A-NEXT: ;;#ASMSTART5076; GFX90A-NEXT: ; def s[4:6]5077; GFX90A-NEXT: ;;#ASMEND5078; GFX90A-NEXT: s_mov_b32 s9, s45079; GFX90A-NEXT: s_mov_b32 s10, s45080; GFX90A-NEXT: ;;#ASMSTART5081; GFX90A-NEXT: ; use s[8:10]5082; GFX90A-NEXT: ;;#ASMEND5083; GFX90A-NEXT: s_setpc_b64 s[30:31]5084;5085; GFX942-LABEL: s_shuffle_v3i32_v3i32__u_0_0:5086; GFX942: ; %bb.0:5087; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5088; GFX942-NEXT: ;;#ASMSTART5089; GFX942-NEXT: ; def s[0:2]5090; GFX942-NEXT: ;;#ASMEND5091; GFX942-NEXT: s_mov_b32 s9, s05092; GFX942-NEXT: s_mov_b32 s10, s05093; GFX942-NEXT: ;;#ASMSTART5094; GFX942-NEXT: ; use s[8:10]5095; GFX942-NEXT: ;;#ASMEND5096; GFX942-NEXT: s_setpc_b64 s[30:31]5097 %vec0 = call <3 x i32> asm "; def $0", "=s"()5098 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 poison, i32 0, i32 0>5099 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)5100 ret void5101}5102 5103define void @s_shuffle_v3i32_v3i32__0_0_0() {5104; GFX9-LABEL: s_shuffle_v3i32_v3i32__0_0_0:5105; GFX9: ; %bb.0:5106; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5107; GFX9-NEXT: ;;#ASMSTART5108; GFX9-NEXT: ; def s[8:10]5109; GFX9-NEXT: ;;#ASMEND5110; GFX9-NEXT: s_mov_b32 s9, s85111; GFX9-NEXT: s_mov_b32 s10, s85112; GFX9-NEXT: ;;#ASMSTART5113; GFX9-NEXT: ; use s[8:10]5114; GFX9-NEXT: ;;#ASMEND5115; GFX9-NEXT: s_setpc_b64 s[30:31]5116 %vec0 = call <3 x i32> asm "; def $0", "=s"()5117 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> zeroinitializer5118 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)5119 ret void5120}5121 5122define void @s_shuffle_v3i32_v3i32__1_0_0() {5123; GFX900-LABEL: s_shuffle_v3i32_v3i32__1_0_0:5124; GFX900: ; %bb.0:5125; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5126; GFX900-NEXT: ;;#ASMSTART5127; GFX900-NEXT: ; def s[4:6]5128; GFX900-NEXT: ;;#ASMEND5129; GFX900-NEXT: s_mov_b32 s8, s55130; GFX900-NEXT: s_mov_b32 s9, s45131; GFX900-NEXT: s_mov_b32 s10, s45132; GFX900-NEXT: ;;#ASMSTART5133; GFX900-NEXT: ; use s[8:10]5134; GFX900-NEXT: ;;#ASMEND5135; GFX900-NEXT: s_setpc_b64 s[30:31]5136;5137; GFX90A-LABEL: s_shuffle_v3i32_v3i32__1_0_0:5138; GFX90A: ; %bb.0:5139; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5140; GFX90A-NEXT: ;;#ASMSTART5141; GFX90A-NEXT: ; def s[4:6]5142; GFX90A-NEXT: ;;#ASMEND5143; GFX90A-NEXT: s_mov_b32 s8, s55144; GFX90A-NEXT: s_mov_b32 s9, s45145; GFX90A-NEXT: s_mov_b32 s10, s45146; GFX90A-NEXT: ;;#ASMSTART5147; GFX90A-NEXT: ; use s[8:10]5148; GFX90A-NEXT: ;;#ASMEND5149; GFX90A-NEXT: s_setpc_b64 s[30:31]5150;5151; GFX942-LABEL: s_shuffle_v3i32_v3i32__1_0_0:5152; GFX942: ; %bb.0:5153; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5154; GFX942-NEXT: ;;#ASMSTART5155; GFX942-NEXT: ; def s[0:2]5156; GFX942-NEXT: ;;#ASMEND5157; GFX942-NEXT: s_mov_b32 s8, s15158; GFX942-NEXT: s_mov_b32 s9, s05159; GFX942-NEXT: s_mov_b32 s10, s05160; GFX942-NEXT: ;;#ASMSTART5161; GFX942-NEXT: ; use s[8:10]5162; GFX942-NEXT: ;;#ASMEND5163; GFX942-NEXT: s_setpc_b64 s[30:31]5164 %vec0 = call <3 x i32> asm "; def $0", "=s"()5165 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 1, i32 0, i32 0>5166 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)5167 ret void5168}5169 5170define void @s_shuffle_v3i32_v3i32__2_0_0() {5171; GFX900-LABEL: s_shuffle_v3i32_v3i32__2_0_0:5172; GFX900: ; %bb.0:5173; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5174; GFX900-NEXT: ;;#ASMSTART5175; GFX900-NEXT: ; def s[4:6]5176; GFX900-NEXT: ;;#ASMEND5177; GFX900-NEXT: s_mov_b32 s8, s65178; GFX900-NEXT: s_mov_b32 s9, s45179; GFX900-NEXT: s_mov_b32 s10, s45180; GFX900-NEXT: ;;#ASMSTART5181; GFX900-NEXT: ; use s[8:10]5182; GFX900-NEXT: ;;#ASMEND5183; GFX900-NEXT: s_setpc_b64 s[30:31]5184;5185; GFX90A-LABEL: s_shuffle_v3i32_v3i32__2_0_0:5186; GFX90A: ; %bb.0:5187; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5188; GFX90A-NEXT: ;;#ASMSTART5189; GFX90A-NEXT: ; def s[4:6]5190; GFX90A-NEXT: ;;#ASMEND5191; GFX90A-NEXT: s_mov_b32 s8, s65192; GFX90A-NEXT: s_mov_b32 s9, s45193; GFX90A-NEXT: s_mov_b32 s10, s45194; GFX90A-NEXT: ;;#ASMSTART5195; GFX90A-NEXT: ; use s[8:10]5196; GFX90A-NEXT: ;;#ASMEND5197; GFX90A-NEXT: s_setpc_b64 s[30:31]5198;5199; GFX942-LABEL: s_shuffle_v3i32_v3i32__2_0_0:5200; GFX942: ; %bb.0:5201; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5202; GFX942-NEXT: ;;#ASMSTART5203; GFX942-NEXT: ; def s[0:2]5204; GFX942-NEXT: ;;#ASMEND5205; GFX942-NEXT: s_mov_b32 s8, s25206; GFX942-NEXT: s_mov_b32 s9, s05207; GFX942-NEXT: s_mov_b32 s10, s05208; GFX942-NEXT: ;;#ASMSTART5209; GFX942-NEXT: ; use s[8:10]5210; GFX942-NEXT: ;;#ASMEND5211; GFX942-NEXT: s_setpc_b64 s[30:31]5212 %vec0 = call <3 x i32> asm "; def $0", "=s"()5213 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 2, i32 0, i32 0>5214 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)5215 ret void5216}5217 5218define void @s_shuffle_v3i32_v3i32__3_0_0() {5219; GFX900-LABEL: s_shuffle_v3i32_v3i32__3_0_0:5220; GFX900: ; %bb.0:5221; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5222; GFX900-NEXT: ;;#ASMSTART5223; GFX900-NEXT: ; def s[4:6]5224; GFX900-NEXT: ;;#ASMEND5225; GFX900-NEXT: s_mov_b32 s9, s45226; GFX900-NEXT: s_mov_b32 s10, s45227; GFX900-NEXT: ;;#ASMSTART5228; GFX900-NEXT: ; use s[8:10]5229; GFX900-NEXT: ;;#ASMEND5230; GFX900-NEXT: s_setpc_b64 s[30:31]5231;5232; GFX90A-LABEL: s_shuffle_v3i32_v3i32__3_0_0:5233; GFX90A: ; %bb.0:5234; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5235; GFX90A-NEXT: ;;#ASMSTART5236; GFX90A-NEXT: ; def s[4:6]5237; GFX90A-NEXT: ;;#ASMEND5238; GFX90A-NEXT: s_mov_b32 s9, s45239; GFX90A-NEXT: s_mov_b32 s10, s45240; GFX90A-NEXT: ;;#ASMSTART5241; GFX90A-NEXT: ; use s[8:10]5242; GFX90A-NEXT: ;;#ASMEND5243; GFX90A-NEXT: s_setpc_b64 s[30:31]5244;5245; GFX942-LABEL: s_shuffle_v3i32_v3i32__3_0_0:5246; GFX942: ; %bb.0:5247; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5248; GFX942-NEXT: ;;#ASMSTART5249; GFX942-NEXT: ; def s[0:2]5250; GFX942-NEXT: ;;#ASMEND5251; GFX942-NEXT: s_mov_b32 s9, s05252; GFX942-NEXT: s_mov_b32 s10, s05253; GFX942-NEXT: ;;#ASMSTART5254; GFX942-NEXT: ; use s[8:10]5255; GFX942-NEXT: ;;#ASMEND5256; GFX942-NEXT: s_setpc_b64 s[30:31]5257 %vec0 = call <3 x i32> asm "; def $0", "=s"()5258 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 3, i32 0, i32 0>5259 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)5260 ret void5261}5262 5263define void @s_shuffle_v3i32_v3i32__4_0_0() {5264; GFX900-LABEL: s_shuffle_v3i32_v3i32__4_0_0:5265; GFX900: ; %bb.0:5266; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5267; GFX900-NEXT: ;;#ASMSTART5268; GFX900-NEXT: ; def s[8:10]5269; GFX900-NEXT: ;;#ASMEND5270; GFX900-NEXT: ;;#ASMSTART5271; GFX900-NEXT: ; def s[4:6]5272; GFX900-NEXT: ;;#ASMEND5273; GFX900-NEXT: s_mov_b32 s8, s95274; GFX900-NEXT: s_mov_b32 s9, s45275; GFX900-NEXT: s_mov_b32 s10, s45276; GFX900-NEXT: ;;#ASMSTART5277; GFX900-NEXT: ; use s[8:10]5278; GFX900-NEXT: ;;#ASMEND5279; GFX900-NEXT: s_setpc_b64 s[30:31]5280;5281; GFX90A-LABEL: s_shuffle_v3i32_v3i32__4_0_0:5282; GFX90A: ; %bb.0:5283; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5284; GFX90A-NEXT: ;;#ASMSTART5285; GFX90A-NEXT: ; def s[8:10]5286; GFX90A-NEXT: ;;#ASMEND5287; GFX90A-NEXT: ;;#ASMSTART5288; GFX90A-NEXT: ; def s[4:6]5289; GFX90A-NEXT: ;;#ASMEND5290; GFX90A-NEXT: s_mov_b32 s8, s95291; GFX90A-NEXT: s_mov_b32 s9, s45292; GFX90A-NEXT: s_mov_b32 s10, s45293; GFX90A-NEXT: ;;#ASMSTART5294; GFX90A-NEXT: ; use s[8:10]5295; GFX90A-NEXT: ;;#ASMEND5296; GFX90A-NEXT: s_setpc_b64 s[30:31]5297;5298; GFX942-LABEL: s_shuffle_v3i32_v3i32__4_0_0:5299; GFX942: ; %bb.0:5300; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5301; GFX942-NEXT: ;;#ASMSTART5302; GFX942-NEXT: ; def s[0:2]5303; GFX942-NEXT: ;;#ASMEND5304; GFX942-NEXT: ;;#ASMSTART5305; GFX942-NEXT: ; def s[4:6]5306; GFX942-NEXT: ;;#ASMEND5307; GFX942-NEXT: s_mov_b32 s8, s55308; GFX942-NEXT: s_mov_b32 s9, s05309; GFX942-NEXT: s_mov_b32 s10, s05310; GFX942-NEXT: ;;#ASMSTART5311; GFX942-NEXT: ; use s[8:10]5312; GFX942-NEXT: ;;#ASMEND5313; GFX942-NEXT: s_setpc_b64 s[30:31]5314 %vec0 = call <3 x i32> asm "; def $0", "=s"()5315 %vec1 = call <3 x i32> asm "; def $0", "=s"()5316 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 0, i32 0>5317 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)5318 ret void5319}5320 5321define void @s_shuffle_v3i32_v3i32__5_0_0() {5322; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_0_0:5323; GFX900: ; %bb.0:5324; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5325; GFX900-NEXT: ;;#ASMSTART5326; GFX900-NEXT: ; def s[8:10]5327; GFX900-NEXT: ;;#ASMEND5328; GFX900-NEXT: ;;#ASMSTART5329; GFX900-NEXT: ; def s[4:6]5330; GFX900-NEXT: ;;#ASMEND5331; GFX900-NEXT: s_mov_b32 s8, s105332; GFX900-NEXT: s_mov_b32 s9, s45333; GFX900-NEXT: s_mov_b32 s10, s45334; GFX900-NEXT: ;;#ASMSTART5335; GFX900-NEXT: ; use s[8:10]5336; GFX900-NEXT: ;;#ASMEND5337; GFX900-NEXT: s_setpc_b64 s[30:31]5338;5339; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_0_0:5340; GFX90A: ; %bb.0:5341; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5342; GFX90A-NEXT: ;;#ASMSTART5343; GFX90A-NEXT: ; def s[8:10]5344; GFX90A-NEXT: ;;#ASMEND5345; GFX90A-NEXT: ;;#ASMSTART5346; GFX90A-NEXT: ; def s[4:6]5347; GFX90A-NEXT: ;;#ASMEND5348; GFX90A-NEXT: s_mov_b32 s8, s105349; GFX90A-NEXT: s_mov_b32 s9, s45350; GFX90A-NEXT: s_mov_b32 s10, s45351; GFX90A-NEXT: ;;#ASMSTART5352; GFX90A-NEXT: ; use s[8:10]5353; GFX90A-NEXT: ;;#ASMEND5354; GFX90A-NEXT: s_setpc_b64 s[30:31]5355;5356; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_0_0:5357; GFX942: ; %bb.0:5358; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5359; GFX942-NEXT: ;;#ASMSTART5360; GFX942-NEXT: ; def s[0:2]5361; GFX942-NEXT: ;;#ASMEND5362; GFX942-NEXT: ;;#ASMSTART5363; GFX942-NEXT: ; def s[4:6]5364; GFX942-NEXT: ;;#ASMEND5365; GFX942-NEXT: s_mov_b32 s8, s65366; GFX942-NEXT: s_mov_b32 s9, s05367; GFX942-NEXT: s_mov_b32 s10, s05368; GFX942-NEXT: ;;#ASMSTART5369; GFX942-NEXT: ; use s[8:10]5370; GFX942-NEXT: ;;#ASMEND5371; GFX942-NEXT: s_setpc_b64 s[30:31]5372 %vec0 = call <3 x i32> asm "; def $0", "=s"()5373 %vec1 = call <3 x i32> asm "; def $0", "=s"()5374 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 0>5375 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)5376 ret void5377}5378 5379define void @s_shuffle_v3i32_v3i32__5_u_0() {5380; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_u_0:5381; GFX900: ; %bb.0:5382; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5383; GFX900-NEXT: ;;#ASMSTART5384; GFX900-NEXT: ; def s[8:10]5385; GFX900-NEXT: ;;#ASMEND5386; GFX900-NEXT: ;;#ASMSTART5387; GFX900-NEXT: ; def s[4:6]5388; GFX900-NEXT: ;;#ASMEND5389; GFX900-NEXT: s_mov_b32 s8, s105390; GFX900-NEXT: s_mov_b32 s10, s45391; GFX900-NEXT: ;;#ASMSTART5392; GFX900-NEXT: ; use s[8:10]5393; GFX900-NEXT: ;;#ASMEND5394; GFX900-NEXT: s_setpc_b64 s[30:31]5395;5396; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_u_0:5397; GFX90A: ; %bb.0:5398; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5399; GFX90A-NEXT: ;;#ASMSTART5400; GFX90A-NEXT: ; def s[8:10]5401; GFX90A-NEXT: ;;#ASMEND5402; GFX90A-NEXT: ;;#ASMSTART5403; GFX90A-NEXT: ; def s[4:6]5404; GFX90A-NEXT: ;;#ASMEND5405; GFX90A-NEXT: s_mov_b32 s8, s105406; GFX90A-NEXT: s_mov_b32 s10, s45407; GFX90A-NEXT: ;;#ASMSTART5408; GFX90A-NEXT: ; use s[8:10]5409; GFX90A-NEXT: ;;#ASMEND5410; GFX90A-NEXT: s_setpc_b64 s[30:31]5411;5412; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_u_0:5413; GFX942: ; %bb.0:5414; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5415; GFX942-NEXT: ;;#ASMSTART5416; GFX942-NEXT: ; def s[0:2]5417; GFX942-NEXT: ;;#ASMEND5418; GFX942-NEXT: ;;#ASMSTART5419; GFX942-NEXT: ; def s[4:6]5420; GFX942-NEXT: ;;#ASMEND5421; GFX942-NEXT: s_mov_b32 s8, s65422; GFX942-NEXT: s_mov_b32 s10, s05423; GFX942-NEXT: ;;#ASMSTART5424; GFX942-NEXT: ; use s[8:10]5425; GFX942-NEXT: ;;#ASMEND5426; GFX942-NEXT: s_setpc_b64 s[30:31]5427 %vec0 = call <3 x i32> asm "; def $0", "=s"()5428 %vec1 = call <3 x i32> asm "; def $0", "=s"()5429 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 0>5430 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)5431 ret void5432}5433 5434define void @s_shuffle_v3i32_v3i32__5_1_0() {5435; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_1_0:5436; GFX900: ; %bb.0:5437; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5438; GFX900-NEXT: ;;#ASMSTART5439; GFX900-NEXT: ; def s[8:10]5440; GFX900-NEXT: ;;#ASMEND5441; GFX900-NEXT: ;;#ASMSTART5442; GFX900-NEXT: ; def s[4:6]5443; GFX900-NEXT: ;;#ASMEND5444; GFX900-NEXT: s_mov_b32 s8, s105445; GFX900-NEXT: s_mov_b32 s9, s55446; GFX900-NEXT: s_mov_b32 s10, s45447; GFX900-NEXT: ;;#ASMSTART5448; GFX900-NEXT: ; use s[8:10]5449; GFX900-NEXT: ;;#ASMEND5450; GFX900-NEXT: s_setpc_b64 s[30:31]5451;5452; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_1_0:5453; GFX90A: ; %bb.0:5454; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5455; GFX90A-NEXT: ;;#ASMSTART5456; GFX90A-NEXT: ; def s[8:10]5457; GFX90A-NEXT: ;;#ASMEND5458; GFX90A-NEXT: ;;#ASMSTART5459; GFX90A-NEXT: ; def s[4:6]5460; GFX90A-NEXT: ;;#ASMEND5461; GFX90A-NEXT: s_mov_b32 s8, s105462; GFX90A-NEXT: s_mov_b32 s9, s55463; GFX90A-NEXT: s_mov_b32 s10, s45464; GFX90A-NEXT: ;;#ASMSTART5465; GFX90A-NEXT: ; use s[8:10]5466; GFX90A-NEXT: ;;#ASMEND5467; GFX90A-NEXT: s_setpc_b64 s[30:31]5468;5469; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_1_0:5470; GFX942: ; %bb.0:5471; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5472; GFX942-NEXT: ;;#ASMSTART5473; GFX942-NEXT: ; def s[0:2]5474; GFX942-NEXT: ;;#ASMEND5475; GFX942-NEXT: ;;#ASMSTART5476; GFX942-NEXT: ; def s[4:6]5477; GFX942-NEXT: ;;#ASMEND5478; GFX942-NEXT: s_mov_b32 s8, s65479; GFX942-NEXT: s_mov_b32 s9, s15480; GFX942-NEXT: s_mov_b32 s10, s05481; GFX942-NEXT: ;;#ASMSTART5482; GFX942-NEXT: ; use s[8:10]5483; GFX942-NEXT: ;;#ASMEND5484; GFX942-NEXT: s_setpc_b64 s[30:31]5485 %vec0 = call <3 x i32> asm "; def $0", "=s"()5486 %vec1 = call <3 x i32> asm "; def $0", "=s"()5487 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 0>5488 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)5489 ret void5490}5491 5492define void @s_shuffle_v3i32_v3i32__5_2_0() {5493; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_2_0:5494; GFX900: ; %bb.0:5495; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5496; GFX900-NEXT: ;;#ASMSTART5497; GFX900-NEXT: ; def s[8:10]5498; GFX900-NEXT: ;;#ASMEND5499; GFX900-NEXT: ;;#ASMSTART5500; GFX900-NEXT: ; def s[4:6]5501; GFX900-NEXT: ;;#ASMEND5502; GFX900-NEXT: s_mov_b32 s8, s105503; GFX900-NEXT: s_mov_b32 s9, s65504; GFX900-NEXT: s_mov_b32 s10, s45505; GFX900-NEXT: ;;#ASMSTART5506; GFX900-NEXT: ; use s[8:10]5507; GFX900-NEXT: ;;#ASMEND5508; GFX900-NEXT: s_setpc_b64 s[30:31]5509;5510; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_2_0:5511; GFX90A: ; %bb.0:5512; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5513; GFX90A-NEXT: ;;#ASMSTART5514; GFX90A-NEXT: ; def s[8:10]5515; GFX90A-NEXT: ;;#ASMEND5516; GFX90A-NEXT: ;;#ASMSTART5517; GFX90A-NEXT: ; def s[4:6]5518; GFX90A-NEXT: ;;#ASMEND5519; GFX90A-NEXT: s_mov_b32 s8, s105520; GFX90A-NEXT: s_mov_b32 s9, s65521; GFX90A-NEXT: s_mov_b32 s10, s45522; GFX90A-NEXT: ;;#ASMSTART5523; GFX90A-NEXT: ; use s[8:10]5524; GFX90A-NEXT: ;;#ASMEND5525; GFX90A-NEXT: s_setpc_b64 s[30:31]5526;5527; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_2_0:5528; GFX942: ; %bb.0:5529; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5530; GFX942-NEXT: ;;#ASMSTART5531; GFX942-NEXT: ; def s[0:2]5532; GFX942-NEXT: ;;#ASMEND5533; GFX942-NEXT: ;;#ASMSTART5534; GFX942-NEXT: ; def s[4:6]5535; GFX942-NEXT: ;;#ASMEND5536; GFX942-NEXT: s_mov_b32 s8, s65537; GFX942-NEXT: s_mov_b32 s9, s25538; GFX942-NEXT: s_mov_b32 s10, s05539; GFX942-NEXT: ;;#ASMSTART5540; GFX942-NEXT: ; use s[8:10]5541; GFX942-NEXT: ;;#ASMEND5542; GFX942-NEXT: s_setpc_b64 s[30:31]5543 %vec0 = call <3 x i32> asm "; def $0", "=s"()5544 %vec1 = call <3 x i32> asm "; def $0", "=s"()5545 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 0>5546 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)5547 ret void5548}5549 5550define void @s_shuffle_v3i32_v3i32__5_3_0() {5551; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_3_0:5552; GFX900: ; %bb.0:5553; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5554; GFX900-NEXT: ;;#ASMSTART5555; GFX900-NEXT: ; def s[4:6]5556; GFX900-NEXT: ;;#ASMEND5557; GFX900-NEXT: ;;#ASMSTART5558; GFX900-NEXT: ; def s[12:14]5559; GFX900-NEXT: ;;#ASMEND5560; GFX900-NEXT: s_mov_b32 s8, s145561; GFX900-NEXT: s_mov_b32 s9, s125562; GFX900-NEXT: s_mov_b32 s10, s45563; GFX900-NEXT: ;;#ASMSTART5564; GFX900-NEXT: ; use s[8:10]5565; GFX900-NEXT: ;;#ASMEND5566; GFX900-NEXT: s_setpc_b64 s[30:31]5567;5568; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_3_0:5569; GFX90A: ; %bb.0:5570; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5571; GFX90A-NEXT: ;;#ASMSTART5572; GFX90A-NEXT: ; def s[4:6]5573; GFX90A-NEXT: ;;#ASMEND5574; GFX90A-NEXT: ;;#ASMSTART5575; GFX90A-NEXT: ; def s[12:14]5576; GFX90A-NEXT: ;;#ASMEND5577; GFX90A-NEXT: s_mov_b32 s8, s145578; GFX90A-NEXT: s_mov_b32 s9, s125579; GFX90A-NEXT: s_mov_b32 s10, s45580; GFX90A-NEXT: ;;#ASMSTART5581; GFX90A-NEXT: ; use s[8:10]5582; GFX90A-NEXT: ;;#ASMEND5583; GFX90A-NEXT: s_setpc_b64 s[30:31]5584;5585; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_3_0:5586; GFX942: ; %bb.0:5587; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5588; GFX942-NEXT: ;;#ASMSTART5589; GFX942-NEXT: ; def s[0:2]5590; GFX942-NEXT: ;;#ASMEND5591; GFX942-NEXT: ;;#ASMSTART5592; GFX942-NEXT: ; def s[4:6]5593; GFX942-NEXT: ;;#ASMEND5594; GFX942-NEXT: s_mov_b32 s8, s65595; GFX942-NEXT: s_mov_b32 s9, s45596; GFX942-NEXT: s_mov_b32 s10, s05597; GFX942-NEXT: ;;#ASMSTART5598; GFX942-NEXT: ; use s[8:10]5599; GFX942-NEXT: ;;#ASMEND5600; GFX942-NEXT: s_setpc_b64 s[30:31]5601 %vec0 = call <3 x i32> asm "; def $0", "=s"()5602 %vec1 = call <3 x i32> asm "; def $0", "=s"()5603 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 0>5604 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)5605 ret void5606}5607 5608define void @s_shuffle_v3i32_v3i32__5_4_0() {5609; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_4_0:5610; GFX900: ; %bb.0:5611; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5612; GFX900-NEXT: ;;#ASMSTART5613; GFX900-NEXT: ; def s[8:10]5614; GFX900-NEXT: ;;#ASMEND5615; GFX900-NEXT: ;;#ASMSTART5616; GFX900-NEXT: ; def s[4:6]5617; GFX900-NEXT: ;;#ASMEND5618; GFX900-NEXT: s_mov_b32 s8, s105619; GFX900-NEXT: s_mov_b32 s10, s45620; GFX900-NEXT: ;;#ASMSTART5621; GFX900-NEXT: ; use s[8:10]5622; GFX900-NEXT: ;;#ASMEND5623; GFX900-NEXT: s_setpc_b64 s[30:31]5624;5625; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_4_0:5626; GFX90A: ; %bb.0:5627; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5628; GFX90A-NEXT: ;;#ASMSTART5629; GFX90A-NEXT: ; def s[8:10]5630; GFX90A-NEXT: ;;#ASMEND5631; GFX90A-NEXT: ;;#ASMSTART5632; GFX90A-NEXT: ; def s[4:6]5633; GFX90A-NEXT: ;;#ASMEND5634; GFX90A-NEXT: s_mov_b32 s8, s105635; GFX90A-NEXT: s_mov_b32 s10, s45636; GFX90A-NEXT: ;;#ASMSTART5637; GFX90A-NEXT: ; use s[8:10]5638; GFX90A-NEXT: ;;#ASMEND5639; GFX90A-NEXT: s_setpc_b64 s[30:31]5640;5641; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_4_0:5642; GFX942: ; %bb.0:5643; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5644; GFX942-NEXT: ;;#ASMSTART5645; GFX942-NEXT: ; def s[8:10]5646; GFX942-NEXT: ;;#ASMEND5647; GFX942-NEXT: ;;#ASMSTART5648; GFX942-NEXT: ; def s[0:2]5649; GFX942-NEXT: ;;#ASMEND5650; GFX942-NEXT: s_mov_b32 s8, s105651; GFX942-NEXT: s_mov_b32 s10, s05652; GFX942-NEXT: ;;#ASMSTART5653; GFX942-NEXT: ; use s[8:10]5654; GFX942-NEXT: ;;#ASMEND5655; GFX942-NEXT: s_setpc_b64 s[30:31]5656 %vec0 = call <3 x i32> asm "; def $0", "=s"()5657 %vec1 = call <3 x i32> asm "; def $0", "=s"()5658 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 0>5659 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)5660 ret void5661}5662 5663define void @s_shuffle_v3i32_v3i32__u_1_1() {5664; GFX9-LABEL: s_shuffle_v3i32_v3i32__u_1_1:5665; GFX9: ; %bb.0:5666; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5667; GFX9-NEXT: ;;#ASMSTART5668; GFX9-NEXT: ; def s[8:10]5669; GFX9-NEXT: ;;#ASMEND5670; GFX9-NEXT: s_mov_b32 s10, s95671; GFX9-NEXT: ;;#ASMSTART5672; GFX9-NEXT: ; use s[8:10]5673; GFX9-NEXT: ;;#ASMEND5674; GFX9-NEXT: s_setpc_b64 s[30:31]5675 %vec0 = call <3 x i32> asm "; def $0", "=s"()5676 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 poison, i32 1, i32 1>5677 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)5678 ret void5679}5680 5681define void @s_shuffle_v3i32_v3i32__0_1_1() {5682; GFX9-LABEL: s_shuffle_v3i32_v3i32__0_1_1:5683; GFX9: ; %bb.0:5684; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5685; GFX9-NEXT: ;;#ASMSTART5686; GFX9-NEXT: ; def s[8:10]5687; GFX9-NEXT: ;;#ASMEND5688; GFX9-NEXT: s_mov_b32 s10, s95689; GFX9-NEXT: ;;#ASMSTART5690; GFX9-NEXT: ; use s[8:10]5691; GFX9-NEXT: ;;#ASMEND5692; GFX9-NEXT: s_setpc_b64 s[30:31]5693 %vec0 = call <3 x i32> asm "; def $0", "=s"()5694 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 0, i32 1, i32 1>5695 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)5696 ret void5697}5698 5699define void @s_shuffle_v3i32_v3i32__1_1_1() {5700; GFX9-LABEL: s_shuffle_v3i32_v3i32__1_1_1:5701; GFX9: ; %bb.0:5702; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5703; GFX9-NEXT: ;;#ASMSTART5704; GFX9-NEXT: ; def s[8:10]5705; GFX9-NEXT: ;;#ASMEND5706; GFX9-NEXT: s_mov_b32 s8, s95707; GFX9-NEXT: s_mov_b32 s10, s95708; GFX9-NEXT: ;;#ASMSTART5709; GFX9-NEXT: ; use s[8:10]5710; GFX9-NEXT: ;;#ASMEND5711; GFX9-NEXT: s_setpc_b64 s[30:31]5712 %vec0 = call <3 x i32> asm "; def $0", "=s"()5713 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 1, i32 1, i32 1>5714 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)5715 ret void5716}5717 5718define void @s_shuffle_v3i32_v3i32__2_1_1() {5719; GFX9-LABEL: s_shuffle_v3i32_v3i32__2_1_1:5720; GFX9: ; %bb.0:5721; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5722; GFX9-NEXT: ;;#ASMSTART5723; GFX9-NEXT: ; def s[8:10]5724; GFX9-NEXT: ;;#ASMEND5725; GFX9-NEXT: s_mov_b32 s8, s105726; GFX9-NEXT: s_mov_b32 s10, s95727; GFX9-NEXT: ;;#ASMSTART5728; GFX9-NEXT: ; use s[8:10]5729; GFX9-NEXT: ;;#ASMEND5730; GFX9-NEXT: s_setpc_b64 s[30:31]5731 %vec0 = call <3 x i32> asm "; def $0", "=s"()5732 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 2, i32 1, i32 1>5733 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)5734 ret void5735}5736 5737define void @s_shuffle_v3i32_v3i32__3_1_1() {5738; GFX9-LABEL: s_shuffle_v3i32_v3i32__3_1_1:5739; GFX9: ; %bb.0:5740; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5741; GFX9-NEXT: ;;#ASMSTART5742; GFX9-NEXT: ; def s[8:10]5743; GFX9-NEXT: ;;#ASMEND5744; GFX9-NEXT: s_mov_b32 s10, s95745; GFX9-NEXT: ;;#ASMSTART5746; GFX9-NEXT: ; use s[8:10]5747; GFX9-NEXT: ;;#ASMEND5748; GFX9-NEXT: s_setpc_b64 s[30:31]5749 %vec0 = call <3 x i32> asm "; def $0", "=s"()5750 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 3, i32 1, i32 1>5751 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)5752 ret void5753}5754 5755define void @s_shuffle_v3i32_v3i32__4_1_1() {5756; GFX900-LABEL: s_shuffle_v3i32_v3i32__4_1_1:5757; GFX900: ; %bb.0:5758; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5759; GFX900-NEXT: ;;#ASMSTART5760; GFX900-NEXT: ; def s[8:10]5761; GFX900-NEXT: ;;#ASMEND5762; GFX900-NEXT: ;;#ASMSTART5763; GFX900-NEXT: ; def s[4:6]5764; GFX900-NEXT: ;;#ASMEND5765; GFX900-NEXT: s_mov_b32 s8, s55766; GFX900-NEXT: s_mov_b32 s10, s95767; GFX900-NEXT: ;;#ASMSTART5768; GFX900-NEXT: ; use s[8:10]5769; GFX900-NEXT: ;;#ASMEND5770; GFX900-NEXT: s_setpc_b64 s[30:31]5771;5772; GFX90A-LABEL: s_shuffle_v3i32_v3i32__4_1_1:5773; GFX90A: ; %bb.0:5774; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5775; GFX90A-NEXT: ;;#ASMSTART5776; GFX90A-NEXT: ; def s[8:10]5777; GFX90A-NEXT: ;;#ASMEND5778; GFX90A-NEXT: ;;#ASMSTART5779; GFX90A-NEXT: ; def s[4:6]5780; GFX90A-NEXT: ;;#ASMEND5781; GFX90A-NEXT: s_mov_b32 s8, s55782; GFX90A-NEXT: s_mov_b32 s10, s95783; GFX90A-NEXT: ;;#ASMSTART5784; GFX90A-NEXT: ; use s[8:10]5785; GFX90A-NEXT: ;;#ASMEND5786; GFX90A-NEXT: s_setpc_b64 s[30:31]5787;5788; GFX942-LABEL: s_shuffle_v3i32_v3i32__4_1_1:5789; GFX942: ; %bb.0:5790; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5791; GFX942-NEXT: ;;#ASMSTART5792; GFX942-NEXT: ; def s[8:10]5793; GFX942-NEXT: ;;#ASMEND5794; GFX942-NEXT: ;;#ASMSTART5795; GFX942-NEXT: ; def s[0:2]5796; GFX942-NEXT: ;;#ASMEND5797; GFX942-NEXT: s_mov_b32 s8, s15798; GFX942-NEXT: s_mov_b32 s10, s95799; GFX942-NEXT: ;;#ASMSTART5800; GFX942-NEXT: ; use s[8:10]5801; GFX942-NEXT: ;;#ASMEND5802; GFX942-NEXT: s_setpc_b64 s[30:31]5803 %vec0 = call <3 x i32> asm "; def $0", "=s"()5804 %vec1 = call <3 x i32> asm "; def $0", "=s"()5805 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 1, i32 1>5806 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)5807 ret void5808}5809 5810define void @s_shuffle_v3i32_v3i32__5_1_1() {5811; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_1_1:5812; GFX900: ; %bb.0:5813; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5814; GFX900-NEXT: ;;#ASMSTART5815; GFX900-NEXT: ; def s[8:10]5816; GFX900-NEXT: ;;#ASMEND5817; GFX900-NEXT: ;;#ASMSTART5818; GFX900-NEXT: ; def s[4:6]5819; GFX900-NEXT: ;;#ASMEND5820; GFX900-NEXT: s_mov_b32 s8, s65821; GFX900-NEXT: s_mov_b32 s10, s95822; GFX900-NEXT: ;;#ASMSTART5823; GFX900-NEXT: ; use s[8:10]5824; GFX900-NEXT: ;;#ASMEND5825; GFX900-NEXT: s_setpc_b64 s[30:31]5826;5827; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_1_1:5828; GFX90A: ; %bb.0:5829; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5830; GFX90A-NEXT: ;;#ASMSTART5831; GFX90A-NEXT: ; def s[8:10]5832; GFX90A-NEXT: ;;#ASMEND5833; GFX90A-NEXT: ;;#ASMSTART5834; GFX90A-NEXT: ; def s[4:6]5835; GFX90A-NEXT: ;;#ASMEND5836; GFX90A-NEXT: s_mov_b32 s8, s65837; GFX90A-NEXT: s_mov_b32 s10, s95838; GFX90A-NEXT: ;;#ASMSTART5839; GFX90A-NEXT: ; use s[8:10]5840; GFX90A-NEXT: ;;#ASMEND5841; GFX90A-NEXT: s_setpc_b64 s[30:31]5842;5843; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_1_1:5844; GFX942: ; %bb.0:5845; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5846; GFX942-NEXT: ;;#ASMSTART5847; GFX942-NEXT: ; def s[8:10]5848; GFX942-NEXT: ;;#ASMEND5849; GFX942-NEXT: ;;#ASMSTART5850; GFX942-NEXT: ; def s[0:2]5851; GFX942-NEXT: ;;#ASMEND5852; GFX942-NEXT: s_mov_b32 s8, s25853; GFX942-NEXT: s_mov_b32 s10, s95854; GFX942-NEXT: ;;#ASMSTART5855; GFX942-NEXT: ; use s[8:10]5856; GFX942-NEXT: ;;#ASMEND5857; GFX942-NEXT: s_setpc_b64 s[30:31]5858 %vec0 = call <3 x i32> asm "; def $0", "=s"()5859 %vec1 = call <3 x i32> asm "; def $0", "=s"()5860 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 1>5861 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)5862 ret void5863}5864 5865define void @s_shuffle_v3i32_v3i32__5_u_1() {5866; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_u_1:5867; GFX900: ; %bb.0:5868; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5869; GFX900-NEXT: ;;#ASMSTART5870; GFX900-NEXT: ; def s[8:10]5871; GFX900-NEXT: ;;#ASMEND5872; GFX900-NEXT: ;;#ASMSTART5873; GFX900-NEXT: ; def s[4:6]5874; GFX900-NEXT: ;;#ASMEND5875; GFX900-NEXT: s_mov_b32 s8, s105876; GFX900-NEXT: s_mov_b32 s10, s55877; GFX900-NEXT: ;;#ASMSTART5878; GFX900-NEXT: ; use s[8:10]5879; GFX900-NEXT: ;;#ASMEND5880; GFX900-NEXT: s_setpc_b64 s[30:31]5881;5882; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_u_1:5883; GFX90A: ; %bb.0:5884; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5885; GFX90A-NEXT: ;;#ASMSTART5886; GFX90A-NEXT: ; def s[8:10]5887; GFX90A-NEXT: ;;#ASMEND5888; GFX90A-NEXT: ;;#ASMSTART5889; GFX90A-NEXT: ; def s[4:6]5890; GFX90A-NEXT: ;;#ASMEND5891; GFX90A-NEXT: s_mov_b32 s8, s105892; GFX90A-NEXT: s_mov_b32 s10, s55893; GFX90A-NEXT: ;;#ASMSTART5894; GFX90A-NEXT: ; use s[8:10]5895; GFX90A-NEXT: ;;#ASMEND5896; GFX90A-NEXT: s_setpc_b64 s[30:31]5897;5898; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_u_1:5899; GFX942: ; %bb.0:5900; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5901; GFX942-NEXT: ;;#ASMSTART5902; GFX942-NEXT: ; def s[0:2]5903; GFX942-NEXT: ;;#ASMEND5904; GFX942-NEXT: ;;#ASMSTART5905; GFX942-NEXT: ; def s[4:6]5906; GFX942-NEXT: ;;#ASMEND5907; GFX942-NEXT: s_mov_b32 s8, s65908; GFX942-NEXT: s_mov_b32 s10, s15909; GFX942-NEXT: ;;#ASMSTART5910; GFX942-NEXT: ; use s[8:10]5911; GFX942-NEXT: ;;#ASMEND5912; GFX942-NEXT: s_setpc_b64 s[30:31]5913 %vec0 = call <3 x i32> asm "; def $0", "=s"()5914 %vec1 = call <3 x i32> asm "; def $0", "=s"()5915 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 1>5916 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)5917 ret void5918}5919 5920define void @s_shuffle_v3i32_v3i32__5_0_1() {5921; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_0_1:5922; GFX900: ; %bb.0:5923; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5924; GFX900-NEXT: ;;#ASMSTART5925; GFX900-NEXT: ; def s[8:10]5926; GFX900-NEXT: ;;#ASMEND5927; GFX900-NEXT: ;;#ASMSTART5928; GFX900-NEXT: ; def s[4:6]5929; GFX900-NEXT: ;;#ASMEND5930; GFX900-NEXT: s_mov_b32 s8, s105931; GFX900-NEXT: s_mov_b32 s9, s45932; GFX900-NEXT: s_mov_b32 s10, s55933; GFX900-NEXT: ;;#ASMSTART5934; GFX900-NEXT: ; use s[8:10]5935; GFX900-NEXT: ;;#ASMEND5936; GFX900-NEXT: s_setpc_b64 s[30:31]5937;5938; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_0_1:5939; GFX90A: ; %bb.0:5940; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5941; GFX90A-NEXT: ;;#ASMSTART5942; GFX90A-NEXT: ; def s[8:10]5943; GFX90A-NEXT: ;;#ASMEND5944; GFX90A-NEXT: ;;#ASMSTART5945; GFX90A-NEXT: ; def s[4:6]5946; GFX90A-NEXT: ;;#ASMEND5947; GFX90A-NEXT: s_mov_b32 s8, s105948; GFX90A-NEXT: s_mov_b32 s9, s45949; GFX90A-NEXT: s_mov_b32 s10, s55950; GFX90A-NEXT: ;;#ASMSTART5951; GFX90A-NEXT: ; use s[8:10]5952; GFX90A-NEXT: ;;#ASMEND5953; GFX90A-NEXT: s_setpc_b64 s[30:31]5954;5955; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_0_1:5956; GFX942: ; %bb.0:5957; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5958; GFX942-NEXT: ;;#ASMSTART5959; GFX942-NEXT: ; def s[0:2]5960; GFX942-NEXT: ;;#ASMEND5961; GFX942-NEXT: ;;#ASMSTART5962; GFX942-NEXT: ; def s[4:6]5963; GFX942-NEXT: ;;#ASMEND5964; GFX942-NEXT: s_mov_b32 s8, s65965; GFX942-NEXT: s_mov_b32 s9, s05966; GFX942-NEXT: s_mov_b32 s10, s15967; GFX942-NEXT: ;;#ASMSTART5968; GFX942-NEXT: ; use s[8:10]5969; GFX942-NEXT: ;;#ASMEND5970; GFX942-NEXT: s_setpc_b64 s[30:31]5971 %vec0 = call <3 x i32> asm "; def $0", "=s"()5972 %vec1 = call <3 x i32> asm "; def $0", "=s"()5973 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 1>5974 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)5975 ret void5976}5977 5978define void @s_shuffle_v3i32_v3i32__5_2_1() {5979; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_2_1:5980; GFX900: ; %bb.0:5981; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5982; GFX900-NEXT: ;;#ASMSTART5983; GFX900-NEXT: ; def s[8:10]5984; GFX900-NEXT: ;;#ASMEND5985; GFX900-NEXT: ;;#ASMSTART5986; GFX900-NEXT: ; def s[4:6]5987; GFX900-NEXT: ;;#ASMEND5988; GFX900-NEXT: s_mov_b32 s8, s105989; GFX900-NEXT: s_mov_b32 s9, s65990; GFX900-NEXT: s_mov_b32 s10, s55991; GFX900-NEXT: ;;#ASMSTART5992; GFX900-NEXT: ; use s[8:10]5993; GFX900-NEXT: ;;#ASMEND5994; GFX900-NEXT: s_setpc_b64 s[30:31]5995;5996; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_2_1:5997; GFX90A: ; %bb.0:5998; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5999; GFX90A-NEXT: ;;#ASMSTART6000; GFX90A-NEXT: ; def s[8:10]6001; GFX90A-NEXT: ;;#ASMEND6002; GFX90A-NEXT: ;;#ASMSTART6003; GFX90A-NEXT: ; def s[4:6]6004; GFX90A-NEXT: ;;#ASMEND6005; GFX90A-NEXT: s_mov_b32 s8, s106006; GFX90A-NEXT: s_mov_b32 s9, s66007; GFX90A-NEXT: s_mov_b32 s10, s56008; GFX90A-NEXT: ;;#ASMSTART6009; GFX90A-NEXT: ; use s[8:10]6010; GFX90A-NEXT: ;;#ASMEND6011; GFX90A-NEXT: s_setpc_b64 s[30:31]6012;6013; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_2_1:6014; GFX942: ; %bb.0:6015; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6016; GFX942-NEXT: ;;#ASMSTART6017; GFX942-NEXT: ; def s[0:2]6018; GFX942-NEXT: ;;#ASMEND6019; GFX942-NEXT: ;;#ASMSTART6020; GFX942-NEXT: ; def s[4:6]6021; GFX942-NEXT: ;;#ASMEND6022; GFX942-NEXT: s_mov_b32 s8, s66023; GFX942-NEXT: s_mov_b32 s9, s26024; GFX942-NEXT: s_mov_b32 s10, s16025; GFX942-NEXT: ;;#ASMSTART6026; GFX942-NEXT: ; use s[8:10]6027; GFX942-NEXT: ;;#ASMEND6028; GFX942-NEXT: s_setpc_b64 s[30:31]6029 %vec0 = call <3 x i32> asm "; def $0", "=s"()6030 %vec1 = call <3 x i32> asm "; def $0", "=s"()6031 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 1>6032 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)6033 ret void6034}6035 6036define void @s_shuffle_v3i32_v3i32__5_3_1() {6037; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_3_1:6038; GFX900: ; %bb.0:6039; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6040; GFX900-NEXT: ;;#ASMSTART6041; GFX900-NEXT: ; def s[4:6]6042; GFX900-NEXT: ;;#ASMEND6043; GFX900-NEXT: ;;#ASMSTART6044; GFX900-NEXT: ; def s[12:14]6045; GFX900-NEXT: ;;#ASMEND6046; GFX900-NEXT: s_mov_b32 s8, s146047; GFX900-NEXT: s_mov_b32 s9, s126048; GFX900-NEXT: s_mov_b32 s10, s56049; GFX900-NEXT: ;;#ASMSTART6050; GFX900-NEXT: ; use s[8:10]6051; GFX900-NEXT: ;;#ASMEND6052; GFX900-NEXT: s_setpc_b64 s[30:31]6053;6054; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_3_1:6055; GFX90A: ; %bb.0:6056; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6057; GFX90A-NEXT: ;;#ASMSTART6058; GFX90A-NEXT: ; def s[4:6]6059; GFX90A-NEXT: ;;#ASMEND6060; GFX90A-NEXT: ;;#ASMSTART6061; GFX90A-NEXT: ; def s[12:14]6062; GFX90A-NEXT: ;;#ASMEND6063; GFX90A-NEXT: s_mov_b32 s8, s146064; GFX90A-NEXT: s_mov_b32 s9, s126065; GFX90A-NEXT: s_mov_b32 s10, s56066; GFX90A-NEXT: ;;#ASMSTART6067; GFX90A-NEXT: ; use s[8:10]6068; GFX90A-NEXT: ;;#ASMEND6069; GFX90A-NEXT: s_setpc_b64 s[30:31]6070;6071; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_3_1:6072; GFX942: ; %bb.0:6073; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6074; GFX942-NEXT: ;;#ASMSTART6075; GFX942-NEXT: ; def s[0:2]6076; GFX942-NEXT: ;;#ASMEND6077; GFX942-NEXT: ;;#ASMSTART6078; GFX942-NEXT: ; def s[4:6]6079; GFX942-NEXT: ;;#ASMEND6080; GFX942-NEXT: s_mov_b32 s8, s66081; GFX942-NEXT: s_mov_b32 s9, s46082; GFX942-NEXT: s_mov_b32 s10, s16083; GFX942-NEXT: ;;#ASMSTART6084; GFX942-NEXT: ; use s[8:10]6085; GFX942-NEXT: ;;#ASMEND6086; GFX942-NEXT: s_setpc_b64 s[30:31]6087 %vec0 = call <3 x i32> asm "; def $0", "=s"()6088 %vec1 = call <3 x i32> asm "; def $0", "=s"()6089 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 1>6090 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)6091 ret void6092}6093 6094define void @s_shuffle_v3i32_v3i32__5_4_1() {6095; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_4_1:6096; GFX900: ; %bb.0:6097; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6098; GFX900-NEXT: ;;#ASMSTART6099; GFX900-NEXT: ; def s[8:10]6100; GFX900-NEXT: ;;#ASMEND6101; GFX900-NEXT: ;;#ASMSTART6102; GFX900-NEXT: ; def s[4:6]6103; GFX900-NEXT: ;;#ASMEND6104; GFX900-NEXT: s_mov_b32 s8, s106105; GFX900-NEXT: s_mov_b32 s10, s56106; GFX900-NEXT: ;;#ASMSTART6107; GFX900-NEXT: ; use s[8:10]6108; GFX900-NEXT: ;;#ASMEND6109; GFX900-NEXT: s_setpc_b64 s[30:31]6110;6111; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_4_1:6112; GFX90A: ; %bb.0:6113; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6114; GFX90A-NEXT: ;;#ASMSTART6115; GFX90A-NEXT: ; def s[8:10]6116; GFX90A-NEXT: ;;#ASMEND6117; GFX90A-NEXT: ;;#ASMSTART6118; GFX90A-NEXT: ; def s[4:6]6119; GFX90A-NEXT: ;;#ASMEND6120; GFX90A-NEXT: s_mov_b32 s8, s106121; GFX90A-NEXT: s_mov_b32 s10, s56122; GFX90A-NEXT: ;;#ASMSTART6123; GFX90A-NEXT: ; use s[8:10]6124; GFX90A-NEXT: ;;#ASMEND6125; GFX90A-NEXT: s_setpc_b64 s[30:31]6126;6127; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_4_1:6128; GFX942: ; %bb.0:6129; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6130; GFX942-NEXT: ;;#ASMSTART6131; GFX942-NEXT: ; def s[8:10]6132; GFX942-NEXT: ;;#ASMEND6133; GFX942-NEXT: ;;#ASMSTART6134; GFX942-NEXT: ; def s[0:2]6135; GFX942-NEXT: ;;#ASMEND6136; GFX942-NEXT: s_mov_b32 s8, s106137; GFX942-NEXT: s_mov_b32 s10, s16138; GFX942-NEXT: ;;#ASMSTART6139; GFX942-NEXT: ; use s[8:10]6140; GFX942-NEXT: ;;#ASMEND6141; GFX942-NEXT: s_setpc_b64 s[30:31]6142 %vec0 = call <3 x i32> asm "; def $0", "=s"()6143 %vec1 = call <3 x i32> asm "; def $0", "=s"()6144 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 1>6145 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)6146 ret void6147}6148 6149define void @s_shuffle_v3i32_v3i32__u_2_2() {6150; GFX9-LABEL: s_shuffle_v3i32_v3i32__u_2_2:6151; GFX9: ; %bb.0:6152; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6153; GFX9-NEXT: ;;#ASMSTART6154; GFX9-NEXT: ; def s[8:10]6155; GFX9-NEXT: ;;#ASMEND6156; GFX9-NEXT: s_mov_b32 s9, s106157; GFX9-NEXT: ;;#ASMSTART6158; GFX9-NEXT: ; use s[8:10]6159; GFX9-NEXT: ;;#ASMEND6160; GFX9-NEXT: s_setpc_b64 s[30:31]6161 %vec0 = call <3 x i32> asm "; def $0", "=s"()6162 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 poison, i32 2, i32 2>6163 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)6164 ret void6165}6166 6167define void @s_shuffle_v3i32_v3i32__0_2_2() {6168; GFX9-LABEL: s_shuffle_v3i32_v3i32__0_2_2:6169; GFX9: ; %bb.0:6170; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6171; GFX9-NEXT: ;;#ASMSTART6172; GFX9-NEXT: ; def s[8:10]6173; GFX9-NEXT: ;;#ASMEND6174; GFX9-NEXT: s_mov_b32 s9, s106175; GFX9-NEXT: ;;#ASMSTART6176; GFX9-NEXT: ; use s[8:10]6177; GFX9-NEXT: ;;#ASMEND6178; GFX9-NEXT: s_setpc_b64 s[30:31]6179 %vec0 = call <3 x i32> asm "; def $0", "=s"()6180 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 0, i32 2, i32 2>6181 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)6182 ret void6183}6184 6185define void @s_shuffle_v3i32_v3i32__1_2_2() {6186; GFX9-LABEL: s_shuffle_v3i32_v3i32__1_2_2:6187; GFX9: ; %bb.0:6188; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6189; GFX9-NEXT: ;;#ASMSTART6190; GFX9-NEXT: ; def s[8:10]6191; GFX9-NEXT: ;;#ASMEND6192; GFX9-NEXT: s_mov_b32 s8, s96193; GFX9-NEXT: s_mov_b32 s9, s106194; GFX9-NEXT: ;;#ASMSTART6195; GFX9-NEXT: ; use s[8:10]6196; GFX9-NEXT: ;;#ASMEND6197; GFX9-NEXT: s_setpc_b64 s[30:31]6198 %vec0 = call <3 x i32> asm "; def $0", "=s"()6199 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 1, i32 2, i32 2>6200 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)6201 ret void6202}6203 6204define void @s_shuffle_v3i32_v3i32__2_2_2() {6205; GFX9-LABEL: s_shuffle_v3i32_v3i32__2_2_2:6206; GFX9: ; %bb.0:6207; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6208; GFX9-NEXT: ;;#ASMSTART6209; GFX9-NEXT: ; def s[8:10]6210; GFX9-NEXT: ;;#ASMEND6211; GFX9-NEXT: s_mov_b32 s8, s106212; GFX9-NEXT: s_mov_b32 s9, s106213; GFX9-NEXT: ;;#ASMSTART6214; GFX9-NEXT: ; use s[8:10]6215; GFX9-NEXT: ;;#ASMEND6216; GFX9-NEXT: s_setpc_b64 s[30:31]6217 %vec0 = call <3 x i32> asm "; def $0", "=s"()6218 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 2, i32 2, i32 2>6219 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)6220 ret void6221}6222 6223define void @s_shuffle_v3i32_v3i32__3_2_2() {6224; GFX9-LABEL: s_shuffle_v3i32_v3i32__3_2_2:6225; GFX9: ; %bb.0:6226; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6227; GFX9-NEXT: ;;#ASMSTART6228; GFX9-NEXT: ; def s[8:10]6229; GFX9-NEXT: ;;#ASMEND6230; GFX9-NEXT: s_mov_b32 s9, s106231; GFX9-NEXT: ;;#ASMSTART6232; GFX9-NEXT: ; use s[8:10]6233; GFX9-NEXT: ;;#ASMEND6234; GFX9-NEXT: s_setpc_b64 s[30:31]6235 %vec0 = call <3 x i32> asm "; def $0", "=s"()6236 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 3, i32 2, i32 2>6237 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)6238 ret void6239}6240 6241define void @s_shuffle_v3i32_v3i32__4_2_2() {6242; GFX900-LABEL: s_shuffle_v3i32_v3i32__4_2_2:6243; GFX900: ; %bb.0:6244; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6245; GFX900-NEXT: ;;#ASMSTART6246; GFX900-NEXT: ; def s[8:10]6247; GFX900-NEXT: ;;#ASMEND6248; GFX900-NEXT: ;;#ASMSTART6249; GFX900-NEXT: ; def s[4:6]6250; GFX900-NEXT: ;;#ASMEND6251; GFX900-NEXT: s_mov_b32 s8, s56252; GFX900-NEXT: s_mov_b32 s9, s106253; GFX900-NEXT: ;;#ASMSTART6254; GFX900-NEXT: ; use s[8:10]6255; GFX900-NEXT: ;;#ASMEND6256; GFX900-NEXT: s_setpc_b64 s[30:31]6257;6258; GFX90A-LABEL: s_shuffle_v3i32_v3i32__4_2_2:6259; GFX90A: ; %bb.0:6260; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6261; GFX90A-NEXT: ;;#ASMSTART6262; GFX90A-NEXT: ; def s[8:10]6263; GFX90A-NEXT: ;;#ASMEND6264; GFX90A-NEXT: ;;#ASMSTART6265; GFX90A-NEXT: ; def s[4:6]6266; GFX90A-NEXT: ;;#ASMEND6267; GFX90A-NEXT: s_mov_b32 s8, s56268; GFX90A-NEXT: s_mov_b32 s9, s106269; GFX90A-NEXT: ;;#ASMSTART6270; GFX90A-NEXT: ; use s[8:10]6271; GFX90A-NEXT: ;;#ASMEND6272; GFX90A-NEXT: s_setpc_b64 s[30:31]6273;6274; GFX942-LABEL: s_shuffle_v3i32_v3i32__4_2_2:6275; GFX942: ; %bb.0:6276; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6277; GFX942-NEXT: ;;#ASMSTART6278; GFX942-NEXT: ; def s[8:10]6279; GFX942-NEXT: ;;#ASMEND6280; GFX942-NEXT: ;;#ASMSTART6281; GFX942-NEXT: ; def s[0:2]6282; GFX942-NEXT: ;;#ASMEND6283; GFX942-NEXT: s_mov_b32 s8, s16284; GFX942-NEXT: s_mov_b32 s9, s106285; GFX942-NEXT: ;;#ASMSTART6286; GFX942-NEXT: ; use s[8:10]6287; GFX942-NEXT: ;;#ASMEND6288; GFX942-NEXT: s_setpc_b64 s[30:31]6289 %vec0 = call <3 x i32> asm "; def $0", "=s"()6290 %vec1 = call <3 x i32> asm "; def $0", "=s"()6291 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 2, i32 2>6292 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)6293 ret void6294}6295 6296define void @s_shuffle_v3i32_v3i32__5_2_2() {6297; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_2_2:6298; GFX900: ; %bb.0:6299; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6300; GFX900-NEXT: ;;#ASMSTART6301; GFX900-NEXT: ; def s[8:10]6302; GFX900-NEXT: ;;#ASMEND6303; GFX900-NEXT: ;;#ASMSTART6304; GFX900-NEXT: ; def s[4:6]6305; GFX900-NEXT: ;;#ASMEND6306; GFX900-NEXT: s_mov_b32 s8, s66307; GFX900-NEXT: s_mov_b32 s9, s106308; GFX900-NEXT: ;;#ASMSTART6309; GFX900-NEXT: ; use s[8:10]6310; GFX900-NEXT: ;;#ASMEND6311; GFX900-NEXT: s_setpc_b64 s[30:31]6312;6313; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_2_2:6314; GFX90A: ; %bb.0:6315; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6316; GFX90A-NEXT: ;;#ASMSTART6317; GFX90A-NEXT: ; def s[8:10]6318; GFX90A-NEXT: ;;#ASMEND6319; GFX90A-NEXT: ;;#ASMSTART6320; GFX90A-NEXT: ; def s[4:6]6321; GFX90A-NEXT: ;;#ASMEND6322; GFX90A-NEXT: s_mov_b32 s8, s66323; GFX90A-NEXT: s_mov_b32 s9, s106324; GFX90A-NEXT: ;;#ASMSTART6325; GFX90A-NEXT: ; use s[8:10]6326; GFX90A-NEXT: ;;#ASMEND6327; GFX90A-NEXT: s_setpc_b64 s[30:31]6328;6329; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_2_2:6330; GFX942: ; %bb.0:6331; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6332; GFX942-NEXT: ;;#ASMSTART6333; GFX942-NEXT: ; def s[8:10]6334; GFX942-NEXT: ;;#ASMEND6335; GFX942-NEXT: ;;#ASMSTART6336; GFX942-NEXT: ; def s[0:2]6337; GFX942-NEXT: ;;#ASMEND6338; GFX942-NEXT: s_mov_b32 s8, s26339; GFX942-NEXT: s_mov_b32 s9, s106340; GFX942-NEXT: ;;#ASMSTART6341; GFX942-NEXT: ; use s[8:10]6342; GFX942-NEXT: ;;#ASMEND6343; GFX942-NEXT: s_setpc_b64 s[30:31]6344 %vec0 = call <3 x i32> asm "; def $0", "=s"()6345 %vec1 = call <3 x i32> asm "; def $0", "=s"()6346 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 2>6347 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)6348 ret void6349}6350 6351define void @s_shuffle_v3i32_v3i32__5_u_2() {6352; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_u_2:6353; GFX900: ; %bb.0:6354; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6355; GFX900-NEXT: ;;#ASMSTART6356; GFX900-NEXT: ; def s[8:10]6357; GFX900-NEXT: ;;#ASMEND6358; GFX900-NEXT: ;;#ASMSTART6359; GFX900-NEXT: ; def s[4:6]6360; GFX900-NEXT: ;;#ASMEND6361; GFX900-NEXT: s_mov_b32 s8, s66362; GFX900-NEXT: ;;#ASMSTART6363; GFX900-NEXT: ; use s[8:10]6364; GFX900-NEXT: ;;#ASMEND6365; GFX900-NEXT: s_setpc_b64 s[30:31]6366;6367; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_u_2:6368; GFX90A: ; %bb.0:6369; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6370; GFX90A-NEXT: ;;#ASMSTART6371; GFX90A-NEXT: ; def s[8:10]6372; GFX90A-NEXT: ;;#ASMEND6373; GFX90A-NEXT: ;;#ASMSTART6374; GFX90A-NEXT: ; def s[4:6]6375; GFX90A-NEXT: ;;#ASMEND6376; GFX90A-NEXT: s_mov_b32 s8, s66377; GFX90A-NEXT: ;;#ASMSTART6378; GFX90A-NEXT: ; use s[8:10]6379; GFX90A-NEXT: ;;#ASMEND6380; GFX90A-NEXT: s_setpc_b64 s[30:31]6381;6382; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_u_2:6383; GFX942: ; %bb.0:6384; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6385; GFX942-NEXT: ;;#ASMSTART6386; GFX942-NEXT: ; def s[8:10]6387; GFX942-NEXT: ;;#ASMEND6388; GFX942-NEXT: ;;#ASMSTART6389; GFX942-NEXT: ; def s[0:2]6390; GFX942-NEXT: ;;#ASMEND6391; GFX942-NEXT: s_mov_b32 s8, s26392; GFX942-NEXT: ;;#ASMSTART6393; GFX942-NEXT: ; use s[8:10]6394; GFX942-NEXT: ;;#ASMEND6395; GFX942-NEXT: s_setpc_b64 s[30:31]6396 %vec0 = call <3 x i32> asm "; def $0", "=s"()6397 %vec1 = call <3 x i32> asm "; def $0", "=s"()6398 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 2>6399 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)6400 ret void6401}6402 6403define void @s_shuffle_v3i32_v3i32__5_0_2() {6404; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_0_2:6405; GFX900: ; %bb.0:6406; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6407; GFX900-NEXT: ;;#ASMSTART6408; GFX900-NEXT: ; def s[8:10]6409; GFX900-NEXT: ;;#ASMEND6410; GFX900-NEXT: ;;#ASMSTART6411; GFX900-NEXT: ; def s[4:6]6412; GFX900-NEXT: ;;#ASMEND6413; GFX900-NEXT: s_mov_b32 s8, s106414; GFX900-NEXT: s_mov_b32 s9, s46415; GFX900-NEXT: s_mov_b32 s10, s66416; GFX900-NEXT: ;;#ASMSTART6417; GFX900-NEXT: ; use s[8:10]6418; GFX900-NEXT: ;;#ASMEND6419; GFX900-NEXT: s_setpc_b64 s[30:31]6420;6421; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_0_2:6422; GFX90A: ; %bb.0:6423; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6424; GFX90A-NEXT: ;;#ASMSTART6425; GFX90A-NEXT: ; def s[8:10]6426; GFX90A-NEXT: ;;#ASMEND6427; GFX90A-NEXT: ;;#ASMSTART6428; GFX90A-NEXT: ; def s[4:6]6429; GFX90A-NEXT: ;;#ASMEND6430; GFX90A-NEXT: s_mov_b32 s8, s106431; GFX90A-NEXT: s_mov_b32 s9, s46432; GFX90A-NEXT: s_mov_b32 s10, s66433; GFX90A-NEXT: ;;#ASMSTART6434; GFX90A-NEXT: ; use s[8:10]6435; GFX90A-NEXT: ;;#ASMEND6436; GFX90A-NEXT: s_setpc_b64 s[30:31]6437;6438; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_0_2:6439; GFX942: ; %bb.0:6440; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6441; GFX942-NEXT: ;;#ASMSTART6442; GFX942-NEXT: ; def s[0:2]6443; GFX942-NEXT: ;;#ASMEND6444; GFX942-NEXT: ;;#ASMSTART6445; GFX942-NEXT: ; def s[4:6]6446; GFX942-NEXT: ;;#ASMEND6447; GFX942-NEXT: s_mov_b32 s8, s66448; GFX942-NEXT: s_mov_b32 s9, s06449; GFX942-NEXT: s_mov_b32 s10, s26450; GFX942-NEXT: ;;#ASMSTART6451; GFX942-NEXT: ; use s[8:10]6452; GFX942-NEXT: ;;#ASMEND6453; GFX942-NEXT: s_setpc_b64 s[30:31]6454 %vec0 = call <3 x i32> asm "; def $0", "=s"()6455 %vec1 = call <3 x i32> asm "; def $0", "=s"()6456 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 2>6457 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)6458 ret void6459}6460 6461define void @s_shuffle_v3i32_v3i32__5_1_2() {6462; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_1_2:6463; GFX900: ; %bb.0:6464; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6465; GFX900-NEXT: ;;#ASMSTART6466; GFX900-NEXT: ; def s[8:10]6467; GFX900-NEXT: ;;#ASMEND6468; GFX900-NEXT: ;;#ASMSTART6469; GFX900-NEXT: ; def s[4:6]6470; GFX900-NEXT: ;;#ASMEND6471; GFX900-NEXT: s_mov_b32 s8, s66472; GFX900-NEXT: ;;#ASMSTART6473; GFX900-NEXT: ; use s[8:10]6474; GFX900-NEXT: ;;#ASMEND6475; GFX900-NEXT: s_setpc_b64 s[30:31]6476;6477; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_1_2:6478; GFX90A: ; %bb.0:6479; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6480; GFX90A-NEXT: ;;#ASMSTART6481; GFX90A-NEXT: ; def s[8:10]6482; GFX90A-NEXT: ;;#ASMEND6483; GFX90A-NEXT: ;;#ASMSTART6484; GFX90A-NEXT: ; def s[4:6]6485; GFX90A-NEXT: ;;#ASMEND6486; GFX90A-NEXT: s_mov_b32 s8, s66487; GFX90A-NEXT: ;;#ASMSTART6488; GFX90A-NEXT: ; use s[8:10]6489; GFX90A-NEXT: ;;#ASMEND6490; GFX90A-NEXT: s_setpc_b64 s[30:31]6491;6492; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_1_2:6493; GFX942: ; %bb.0:6494; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6495; GFX942-NEXT: ;;#ASMSTART6496; GFX942-NEXT: ; def s[8:10]6497; GFX942-NEXT: ;;#ASMEND6498; GFX942-NEXT: ;;#ASMSTART6499; GFX942-NEXT: ; def s[0:2]6500; GFX942-NEXT: ;;#ASMEND6501; GFX942-NEXT: s_mov_b32 s8, s26502; GFX942-NEXT: ;;#ASMSTART6503; GFX942-NEXT: ; use s[8:10]6504; GFX942-NEXT: ;;#ASMEND6505; GFX942-NEXT: s_setpc_b64 s[30:31]6506 %vec0 = call <3 x i32> asm "; def $0", "=s"()6507 %vec1 = call <3 x i32> asm "; def $0", "=s"()6508 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 2>6509 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)6510 ret void6511}6512 6513define void @s_shuffle_v3i32_v3i32__5_3_2() {6514; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_3_2:6515; GFX900: ; %bb.0:6516; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6517; GFX900-NEXT: ;;#ASMSTART6518; GFX900-NEXT: ; def s[8:10]6519; GFX900-NEXT: ;;#ASMEND6520; GFX900-NEXT: ;;#ASMSTART6521; GFX900-NEXT: ; def s[4:6]6522; GFX900-NEXT: ;;#ASMEND6523; GFX900-NEXT: s_mov_b32 s8, s66524; GFX900-NEXT: s_mov_b32 s9, s46525; GFX900-NEXT: ;;#ASMSTART6526; GFX900-NEXT: ; use s[8:10]6527; GFX900-NEXT: ;;#ASMEND6528; GFX900-NEXT: s_setpc_b64 s[30:31]6529;6530; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_3_2:6531; GFX90A: ; %bb.0:6532; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6533; GFX90A-NEXT: ;;#ASMSTART6534; GFX90A-NEXT: ; def s[8:10]6535; GFX90A-NEXT: ;;#ASMEND6536; GFX90A-NEXT: ;;#ASMSTART6537; GFX90A-NEXT: ; def s[4:6]6538; GFX90A-NEXT: ;;#ASMEND6539; GFX90A-NEXT: s_mov_b32 s8, s66540; GFX90A-NEXT: s_mov_b32 s9, s46541; GFX90A-NEXT: ;;#ASMSTART6542; GFX90A-NEXT: ; use s[8:10]6543; GFX90A-NEXT: ;;#ASMEND6544; GFX90A-NEXT: s_setpc_b64 s[30:31]6545;6546; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_3_2:6547; GFX942: ; %bb.0:6548; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6549; GFX942-NEXT: ;;#ASMSTART6550; GFX942-NEXT: ; def s[8:10]6551; GFX942-NEXT: ;;#ASMEND6552; GFX942-NEXT: ;;#ASMSTART6553; GFX942-NEXT: ; def s[0:2]6554; GFX942-NEXT: ;;#ASMEND6555; GFX942-NEXT: s_mov_b32 s8, s26556; GFX942-NEXT: s_mov_b32 s9, s06557; GFX942-NEXT: ;;#ASMSTART6558; GFX942-NEXT: ; use s[8:10]6559; GFX942-NEXT: ;;#ASMEND6560; GFX942-NEXT: s_setpc_b64 s[30:31]6561 %vec0 = call <3 x i32> asm "; def $0", "=s"()6562 %vec1 = call <3 x i32> asm "; def $0", "=s"()6563 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 2>6564 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)6565 ret void6566}6567 6568define void @s_shuffle_v3i32_v3i32__5_4_2() {6569; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_4_2:6570; GFX900: ; %bb.0:6571; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6572; GFX900-NEXT: ;;#ASMSTART6573; GFX900-NEXT: ; def s[8:10]6574; GFX900-NEXT: ;;#ASMEND6575; GFX900-NEXT: ;;#ASMSTART6576; GFX900-NEXT: ; def s[4:6]6577; GFX900-NEXT: ;;#ASMEND6578; GFX900-NEXT: s_mov_b32 s8, s106579; GFX900-NEXT: s_mov_b32 s10, s66580; GFX900-NEXT: ;;#ASMSTART6581; GFX900-NEXT: ; use s[8:10]6582; GFX900-NEXT: ;;#ASMEND6583; GFX900-NEXT: s_setpc_b64 s[30:31]6584;6585; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_4_2:6586; GFX90A: ; %bb.0:6587; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6588; GFX90A-NEXT: ;;#ASMSTART6589; GFX90A-NEXT: ; def s[8:10]6590; GFX90A-NEXT: ;;#ASMEND6591; GFX90A-NEXT: ;;#ASMSTART6592; GFX90A-NEXT: ; def s[4:6]6593; GFX90A-NEXT: ;;#ASMEND6594; GFX90A-NEXT: s_mov_b32 s8, s106595; GFX90A-NEXT: s_mov_b32 s10, s66596; GFX90A-NEXT: ;;#ASMSTART6597; GFX90A-NEXT: ; use s[8:10]6598; GFX90A-NEXT: ;;#ASMEND6599; GFX90A-NEXT: s_setpc_b64 s[30:31]6600;6601; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_4_2:6602; GFX942: ; %bb.0:6603; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6604; GFX942-NEXT: ;;#ASMSTART6605; GFX942-NEXT: ; def s[8:10]6606; GFX942-NEXT: ;;#ASMEND6607; GFX942-NEXT: ;;#ASMSTART6608; GFX942-NEXT: ; def s[0:2]6609; GFX942-NEXT: ;;#ASMEND6610; GFX942-NEXT: s_mov_b32 s8, s106611; GFX942-NEXT: s_mov_b32 s10, s26612; GFX942-NEXT: ;;#ASMSTART6613; GFX942-NEXT: ; use s[8:10]6614; GFX942-NEXT: ;;#ASMEND6615; GFX942-NEXT: s_setpc_b64 s[30:31]6616 %vec0 = call <3 x i32> asm "; def $0", "=s"()6617 %vec1 = call <3 x i32> asm "; def $0", "=s"()6618 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 2>6619 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)6620 ret void6621}6622 6623define void @s_shuffle_v3i32_v3i32__u_3_3() {6624; GFX9-LABEL: s_shuffle_v3i32_v3i32__u_3_3:6625; GFX9: ; %bb.0:6626; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6627; GFX9-NEXT: ;;#ASMSTART6628; GFX9-NEXT: ; use s[8:10]6629; GFX9-NEXT: ;;#ASMEND6630; GFX9-NEXT: s_setpc_b64 s[30:31]6631 %vec0 = call <3 x i32> asm "; def $0", "=s"()6632 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 poison, i32 3, i32 3>6633 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)6634 ret void6635}6636 6637define void @s_shuffle_v3i32_v3i32__0_3_3() {6638; GFX900-LABEL: s_shuffle_v3i32_v3i32__0_3_3:6639; GFX900: ; %bb.0:6640; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6641; GFX900-NEXT: ;;#ASMSTART6642; GFX900-NEXT: ; def s[8:10]6643; GFX900-NEXT: ;;#ASMEND6644; GFX900-NEXT: ;;#ASMSTART6645; GFX900-NEXT: ; use s[8:10]6646; GFX900-NEXT: ;;#ASMEND6647; GFX900-NEXT: s_setpc_b64 s[30:31]6648;6649; GFX90A-LABEL: s_shuffle_v3i32_v3i32__0_3_3:6650; GFX90A: ; %bb.0:6651; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6652; GFX90A-NEXT: ;;#ASMSTART6653; GFX90A-NEXT: ; def s[8:10]6654; GFX90A-NEXT: ;;#ASMEND6655; GFX90A-NEXT: ;;#ASMSTART6656; GFX90A-NEXT: ; use s[8:10]6657; GFX90A-NEXT: ;;#ASMEND6658; GFX90A-NEXT: s_setpc_b64 s[30:31]6659;6660; GFX942-LABEL: s_shuffle_v3i32_v3i32__0_3_3:6661; GFX942: ; %bb.0:6662; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6663; GFX942-NEXT: ;;#ASMSTART6664; GFX942-NEXT: ; def s[8:10]6665; GFX942-NEXT: ;;#ASMEND6666; GFX942-NEXT: s_nop 06667; GFX942-NEXT: ;;#ASMSTART6668; GFX942-NEXT: ; use s[8:10]6669; GFX942-NEXT: ;;#ASMEND6670; GFX942-NEXT: s_setpc_b64 s[30:31]6671 %vec0 = call <3 x i32> asm "; def $0", "=s"()6672 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 0, i32 3, i32 3>6673 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)6674 ret void6675}6676 6677define void @s_shuffle_v3i32_v3i32__1_3_3() {6678; GFX900-LABEL: s_shuffle_v3i32_v3i32__1_3_3:6679; GFX900: ; %bb.0:6680; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6681; GFX900-NEXT: ;;#ASMSTART6682; GFX900-NEXT: ; def s[4:6]6683; GFX900-NEXT: ;;#ASMEND6684; GFX900-NEXT: s_mov_b32 s8, s56685; GFX900-NEXT: ;;#ASMSTART6686; GFX900-NEXT: ; use s[8:10]6687; GFX900-NEXT: ;;#ASMEND6688; GFX900-NEXT: s_setpc_b64 s[30:31]6689;6690; GFX90A-LABEL: s_shuffle_v3i32_v3i32__1_3_3:6691; GFX90A: ; %bb.0:6692; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6693; GFX90A-NEXT: ;;#ASMSTART6694; GFX90A-NEXT: ; def s[4:6]6695; GFX90A-NEXT: ;;#ASMEND6696; GFX90A-NEXT: s_mov_b32 s8, s56697; GFX90A-NEXT: ;;#ASMSTART6698; GFX90A-NEXT: ; use s[8:10]6699; GFX90A-NEXT: ;;#ASMEND6700; GFX90A-NEXT: s_setpc_b64 s[30:31]6701;6702; GFX942-LABEL: s_shuffle_v3i32_v3i32__1_3_3:6703; GFX942: ; %bb.0:6704; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6705; GFX942-NEXT: ;;#ASMSTART6706; GFX942-NEXT: ; def s[0:2]6707; GFX942-NEXT: ;;#ASMEND6708; GFX942-NEXT: s_mov_b32 s8, s16709; GFX942-NEXT: ;;#ASMSTART6710; GFX942-NEXT: ; use s[8:10]6711; GFX942-NEXT: ;;#ASMEND6712; GFX942-NEXT: s_setpc_b64 s[30:31]6713 %vec0 = call <3 x i32> asm "; def $0", "=s"()6714 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 1, i32 3, i32 3>6715 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)6716 ret void6717}6718 6719define void @s_shuffle_v3i32_v3i32__2_3_3() {6720; GFX900-LABEL: s_shuffle_v3i32_v3i32__2_3_3:6721; GFX900: ; %bb.0:6722; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6723; GFX900-NEXT: ;;#ASMSTART6724; GFX900-NEXT: ; def s[4:6]6725; GFX900-NEXT: ;;#ASMEND6726; GFX900-NEXT: s_mov_b32 s8, s66727; GFX900-NEXT: ;;#ASMSTART6728; GFX900-NEXT: ; use s[8:10]6729; GFX900-NEXT: ;;#ASMEND6730; GFX900-NEXT: s_setpc_b64 s[30:31]6731;6732; GFX90A-LABEL: s_shuffle_v3i32_v3i32__2_3_3:6733; GFX90A: ; %bb.0:6734; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6735; GFX90A-NEXT: ;;#ASMSTART6736; GFX90A-NEXT: ; def s[4:6]6737; GFX90A-NEXT: ;;#ASMEND6738; GFX90A-NEXT: s_mov_b32 s8, s66739; GFX90A-NEXT: ;;#ASMSTART6740; GFX90A-NEXT: ; use s[8:10]6741; GFX90A-NEXT: ;;#ASMEND6742; GFX90A-NEXT: s_setpc_b64 s[30:31]6743;6744; GFX942-LABEL: s_shuffle_v3i32_v3i32__2_3_3:6745; GFX942: ; %bb.0:6746; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6747; GFX942-NEXT: ;;#ASMSTART6748; GFX942-NEXT: ; def s[0:2]6749; GFX942-NEXT: ;;#ASMEND6750; GFX942-NEXT: s_mov_b32 s8, s26751; GFX942-NEXT: ;;#ASMSTART6752; GFX942-NEXT: ; use s[8:10]6753; GFX942-NEXT: ;;#ASMEND6754; GFX942-NEXT: s_setpc_b64 s[30:31]6755 %vec0 = call <3 x i32> asm "; def $0", "=s"()6756 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 2, i32 3, i32 3>6757 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)6758 ret void6759}6760 6761define void @s_shuffle_v3i32_v3i32__3_3_3() {6762; GFX9-LABEL: s_shuffle_v3i32_v3i32__3_3_3:6763; GFX9: ; %bb.0:6764; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6765; GFX9-NEXT: ;;#ASMSTART6766; GFX9-NEXT: ; use s[8:10]6767; GFX9-NEXT: ;;#ASMEND6768; GFX9-NEXT: s_setpc_b64 s[30:31]6769 %vec0 = call <3 x i32> asm "; def $0", "=s"()6770 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> poison, <3 x i32> <i32 3, i32 3, i32 3>6771 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)6772 ret void6773}6774 6775define void @s_shuffle_v3i32_v3i32__4_3_3() {6776; GFX900-LABEL: s_shuffle_v3i32_v3i32__4_3_3:6777; GFX900: ; %bb.0:6778; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6779; GFX900-NEXT: ;;#ASMSTART6780; GFX900-NEXT: ; def s[4:6]6781; GFX900-NEXT: ;;#ASMEND6782; GFX900-NEXT: s_mov_b32 s8, s56783; GFX900-NEXT: s_mov_b32 s9, s46784; GFX900-NEXT: s_mov_b32 s10, s46785; GFX900-NEXT: ;;#ASMSTART6786; GFX900-NEXT: ; use s[8:10]6787; GFX900-NEXT: ;;#ASMEND6788; GFX900-NEXT: s_setpc_b64 s[30:31]6789;6790; GFX90A-LABEL: s_shuffle_v3i32_v3i32__4_3_3:6791; GFX90A: ; %bb.0:6792; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6793; GFX90A-NEXT: ;;#ASMSTART6794; GFX90A-NEXT: ; def s[4:6]6795; GFX90A-NEXT: ;;#ASMEND6796; GFX90A-NEXT: s_mov_b32 s8, s56797; GFX90A-NEXT: s_mov_b32 s9, s46798; GFX90A-NEXT: s_mov_b32 s10, s46799; GFX90A-NEXT: ;;#ASMSTART6800; GFX90A-NEXT: ; use s[8:10]6801; GFX90A-NEXT: ;;#ASMEND6802; GFX90A-NEXT: s_setpc_b64 s[30:31]6803;6804; GFX942-LABEL: s_shuffle_v3i32_v3i32__4_3_3:6805; GFX942: ; %bb.0:6806; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6807; GFX942-NEXT: ;;#ASMSTART6808; GFX942-NEXT: ; def s[0:2]6809; GFX942-NEXT: ;;#ASMEND6810; GFX942-NEXT: s_mov_b32 s8, s16811; GFX942-NEXT: s_mov_b32 s9, s06812; GFX942-NEXT: s_mov_b32 s10, s06813; GFX942-NEXT: ;;#ASMSTART6814; GFX942-NEXT: ; use s[8:10]6815; GFX942-NEXT: ;;#ASMEND6816; GFX942-NEXT: s_setpc_b64 s[30:31]6817 %vec0 = call <3 x i32> asm "; def $0", "=s"()6818 %vec1 = call <3 x i32> asm "; def $0", "=s"()6819 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 3, i32 3>6820 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)6821 ret void6822}6823 6824define void @s_shuffle_v3i32_v3i32__5_3_3() {6825; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_3_3:6826; GFX900: ; %bb.0:6827; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6828; GFX900-NEXT: ;;#ASMSTART6829; GFX900-NEXT: ; def s[4:6]6830; GFX900-NEXT: ;;#ASMEND6831; GFX900-NEXT: s_mov_b32 s8, s66832; GFX900-NEXT: s_mov_b32 s9, s46833; GFX900-NEXT: s_mov_b32 s10, s46834; GFX900-NEXT: ;;#ASMSTART6835; GFX900-NEXT: ; use s[8:10]6836; GFX900-NEXT: ;;#ASMEND6837; GFX900-NEXT: s_setpc_b64 s[30:31]6838;6839; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_3_3:6840; GFX90A: ; %bb.0:6841; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6842; GFX90A-NEXT: ;;#ASMSTART6843; GFX90A-NEXT: ; def s[4:6]6844; GFX90A-NEXT: ;;#ASMEND6845; GFX90A-NEXT: s_mov_b32 s8, s66846; GFX90A-NEXT: s_mov_b32 s9, s46847; GFX90A-NEXT: s_mov_b32 s10, s46848; GFX90A-NEXT: ;;#ASMSTART6849; GFX90A-NEXT: ; use s[8:10]6850; GFX90A-NEXT: ;;#ASMEND6851; GFX90A-NEXT: s_setpc_b64 s[30:31]6852;6853; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_3_3:6854; GFX942: ; %bb.0:6855; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6856; GFX942-NEXT: ;;#ASMSTART6857; GFX942-NEXT: ; def s[0:2]6858; GFX942-NEXT: ;;#ASMEND6859; GFX942-NEXT: s_mov_b32 s8, s26860; GFX942-NEXT: s_mov_b32 s9, s06861; GFX942-NEXT: s_mov_b32 s10, s06862; GFX942-NEXT: ;;#ASMSTART6863; GFX942-NEXT: ; use s[8:10]6864; GFX942-NEXT: ;;#ASMEND6865; GFX942-NEXT: s_setpc_b64 s[30:31]6866 %vec0 = call <3 x i32> asm "; def $0", "=s"()6867 %vec1 = call <3 x i32> asm "; def $0", "=s"()6868 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 3>6869 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)6870 ret void6871}6872 6873define void @s_shuffle_v3i32_v3i32__5_u_3() {6874; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_u_3:6875; GFX900: ; %bb.0:6876; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6877; GFX900-NEXT: ;;#ASMSTART6878; GFX900-NEXT: ; def s[4:6]6879; GFX900-NEXT: ;;#ASMEND6880; GFX900-NEXT: s_mov_b32 s8, s66881; GFX900-NEXT: s_mov_b32 s10, s46882; GFX900-NEXT: ;;#ASMSTART6883; GFX900-NEXT: ; use s[8:10]6884; GFX900-NEXT: ;;#ASMEND6885; GFX900-NEXT: s_setpc_b64 s[30:31]6886;6887; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_u_3:6888; GFX90A: ; %bb.0:6889; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6890; GFX90A-NEXT: ;;#ASMSTART6891; GFX90A-NEXT: ; def s[4:6]6892; GFX90A-NEXT: ;;#ASMEND6893; GFX90A-NEXT: s_mov_b32 s8, s66894; GFX90A-NEXT: s_mov_b32 s10, s46895; GFX90A-NEXT: ;;#ASMSTART6896; GFX90A-NEXT: ; use s[8:10]6897; GFX90A-NEXT: ;;#ASMEND6898; GFX90A-NEXT: s_setpc_b64 s[30:31]6899;6900; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_u_3:6901; GFX942: ; %bb.0:6902; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6903; GFX942-NEXT: ;;#ASMSTART6904; GFX942-NEXT: ; def s[0:2]6905; GFX942-NEXT: ;;#ASMEND6906; GFX942-NEXT: s_mov_b32 s8, s26907; GFX942-NEXT: s_mov_b32 s10, s06908; GFX942-NEXT: ;;#ASMSTART6909; GFX942-NEXT: ; use s[8:10]6910; GFX942-NEXT: ;;#ASMEND6911; GFX942-NEXT: s_setpc_b64 s[30:31]6912 %vec0 = call <3 x i32> asm "; def $0", "=s"()6913 %vec1 = call <3 x i32> asm "; def $0", "=s"()6914 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 3>6915 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)6916 ret void6917}6918 6919define void @s_shuffle_v3i32_v3i32__5_0_3() {6920; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_0_3:6921; GFX900: ; %bb.0:6922; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6923; GFX900-NEXT: ;;#ASMSTART6924; GFX900-NEXT: ; def s[4:6]6925; GFX900-NEXT: ;;#ASMEND6926; GFX900-NEXT: ;;#ASMSTART6927; GFX900-NEXT: ; def s[12:14]6928; GFX900-NEXT: ;;#ASMEND6929; GFX900-NEXT: s_mov_b32 s8, s146930; GFX900-NEXT: s_mov_b32 s9, s46931; GFX900-NEXT: s_mov_b32 s10, s126932; GFX900-NEXT: ;;#ASMSTART6933; GFX900-NEXT: ; use s[8:10]6934; GFX900-NEXT: ;;#ASMEND6935; GFX900-NEXT: s_setpc_b64 s[30:31]6936;6937; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_0_3:6938; GFX90A: ; %bb.0:6939; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6940; GFX90A-NEXT: ;;#ASMSTART6941; GFX90A-NEXT: ; def s[4:6]6942; GFX90A-NEXT: ;;#ASMEND6943; GFX90A-NEXT: ;;#ASMSTART6944; GFX90A-NEXT: ; def s[12:14]6945; GFX90A-NEXT: ;;#ASMEND6946; GFX90A-NEXT: s_mov_b32 s8, s146947; GFX90A-NEXT: s_mov_b32 s9, s46948; GFX90A-NEXT: s_mov_b32 s10, s126949; GFX90A-NEXT: ;;#ASMSTART6950; GFX90A-NEXT: ; use s[8:10]6951; GFX90A-NEXT: ;;#ASMEND6952; GFX90A-NEXT: s_setpc_b64 s[30:31]6953;6954; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_0_3:6955; GFX942: ; %bb.0:6956; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6957; GFX942-NEXT: ;;#ASMSTART6958; GFX942-NEXT: ; def s[0:2]6959; GFX942-NEXT: ;;#ASMEND6960; GFX942-NEXT: ;;#ASMSTART6961; GFX942-NEXT: ; def s[4:6]6962; GFX942-NEXT: ;;#ASMEND6963; GFX942-NEXT: s_mov_b32 s8, s66964; GFX942-NEXT: s_mov_b32 s9, s06965; GFX942-NEXT: s_mov_b32 s10, s46966; GFX942-NEXT: ;;#ASMSTART6967; GFX942-NEXT: ; use s[8:10]6968; GFX942-NEXT: ;;#ASMEND6969; GFX942-NEXT: s_setpc_b64 s[30:31]6970 %vec0 = call <3 x i32> asm "; def $0", "=s"()6971 %vec1 = call <3 x i32> asm "; def $0", "=s"()6972 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 3>6973 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)6974 ret void6975}6976 6977define void @s_shuffle_v3i32_v3i32__5_1_3() {6978; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_1_3:6979; GFX900: ; %bb.0:6980; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6981; GFX900-NEXT: ;;#ASMSTART6982; GFX900-NEXT: ; def s[8:10]6983; GFX900-NEXT: ;;#ASMEND6984; GFX900-NEXT: ;;#ASMSTART6985; GFX900-NEXT: ; def s[4:6]6986; GFX900-NEXT: ;;#ASMEND6987; GFX900-NEXT: s_mov_b32 s8, s66988; GFX900-NEXT: s_mov_b32 s10, s46989; GFX900-NEXT: ;;#ASMSTART6990; GFX900-NEXT: ; use s[8:10]6991; GFX900-NEXT: ;;#ASMEND6992; GFX900-NEXT: s_setpc_b64 s[30:31]6993;6994; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_1_3:6995; GFX90A: ; %bb.0:6996; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6997; GFX90A-NEXT: ;;#ASMSTART6998; GFX90A-NEXT: ; def s[8:10]6999; GFX90A-NEXT: ;;#ASMEND7000; GFX90A-NEXT: ;;#ASMSTART7001; GFX90A-NEXT: ; def s[4:6]7002; GFX90A-NEXT: ;;#ASMEND7003; GFX90A-NEXT: s_mov_b32 s8, s67004; GFX90A-NEXT: s_mov_b32 s10, s47005; GFX90A-NEXT: ;;#ASMSTART7006; GFX90A-NEXT: ; use s[8:10]7007; GFX90A-NEXT: ;;#ASMEND7008; GFX90A-NEXT: s_setpc_b64 s[30:31]7009;7010; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_1_3:7011; GFX942: ; %bb.0:7012; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7013; GFX942-NEXT: ;;#ASMSTART7014; GFX942-NEXT: ; def s[8:10]7015; GFX942-NEXT: ;;#ASMEND7016; GFX942-NEXT: ;;#ASMSTART7017; GFX942-NEXT: ; def s[0:2]7018; GFX942-NEXT: ;;#ASMEND7019; GFX942-NEXT: s_mov_b32 s8, s27020; GFX942-NEXT: s_mov_b32 s10, s07021; GFX942-NEXT: ;;#ASMSTART7022; GFX942-NEXT: ; use s[8:10]7023; GFX942-NEXT: ;;#ASMEND7024; GFX942-NEXT: s_setpc_b64 s[30:31]7025 %vec0 = call <3 x i32> asm "; def $0", "=s"()7026 %vec1 = call <3 x i32> asm "; def $0", "=s"()7027 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 3>7028 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)7029 ret void7030}7031 7032define void @s_shuffle_v3i32_v3i32__5_2_3() {7033; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_2_3:7034; GFX900: ; %bb.0:7035; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7036; GFX900-NEXT: ;;#ASMSTART7037; GFX900-NEXT: ; def s[4:6]7038; GFX900-NEXT: ;;#ASMEND7039; GFX900-NEXT: ;;#ASMSTART7040; GFX900-NEXT: ; def s[12:14]7041; GFX900-NEXT: ;;#ASMEND7042; GFX900-NEXT: s_mov_b32 s8, s147043; GFX900-NEXT: s_mov_b32 s9, s67044; GFX900-NEXT: s_mov_b32 s10, s127045; GFX900-NEXT: ;;#ASMSTART7046; GFX900-NEXT: ; use s[8:10]7047; GFX900-NEXT: ;;#ASMEND7048; GFX900-NEXT: s_setpc_b64 s[30:31]7049;7050; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_2_3:7051; GFX90A: ; %bb.0:7052; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7053; GFX90A-NEXT: ;;#ASMSTART7054; GFX90A-NEXT: ; def s[4:6]7055; GFX90A-NEXT: ;;#ASMEND7056; GFX90A-NEXT: ;;#ASMSTART7057; GFX90A-NEXT: ; def s[12:14]7058; GFX90A-NEXT: ;;#ASMEND7059; GFX90A-NEXT: s_mov_b32 s8, s147060; GFX90A-NEXT: s_mov_b32 s9, s67061; GFX90A-NEXT: s_mov_b32 s10, s127062; GFX90A-NEXT: ;;#ASMSTART7063; GFX90A-NEXT: ; use s[8:10]7064; GFX90A-NEXT: ;;#ASMEND7065; GFX90A-NEXT: s_setpc_b64 s[30:31]7066;7067; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_2_3:7068; GFX942: ; %bb.0:7069; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7070; GFX942-NEXT: ;;#ASMSTART7071; GFX942-NEXT: ; def s[0:2]7072; GFX942-NEXT: ;;#ASMEND7073; GFX942-NEXT: ;;#ASMSTART7074; GFX942-NEXT: ; def s[4:6]7075; GFX942-NEXT: ;;#ASMEND7076; GFX942-NEXT: s_mov_b32 s8, s67077; GFX942-NEXT: s_mov_b32 s9, s27078; GFX942-NEXT: s_mov_b32 s10, s47079; GFX942-NEXT: ;;#ASMSTART7080; GFX942-NEXT: ; use s[8:10]7081; GFX942-NEXT: ;;#ASMEND7082; GFX942-NEXT: s_setpc_b64 s[30:31]7083 %vec0 = call <3 x i32> asm "; def $0", "=s"()7084 %vec1 = call <3 x i32> asm "; def $0", "=s"()7085 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 3>7086 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)7087 ret void7088}7089 7090define void @s_shuffle_v3i32_v3i32__5_4_3() {7091; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_4_3:7092; GFX900: ; %bb.0:7093; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7094; GFX900-NEXT: ;;#ASMSTART7095; GFX900-NEXT: ; def s[4:6]7096; GFX900-NEXT: ;;#ASMEND7097; GFX900-NEXT: s_mov_b32 s8, s67098; GFX900-NEXT: s_mov_b32 s9, s57099; GFX900-NEXT: s_mov_b32 s10, s47100; GFX900-NEXT: ;;#ASMSTART7101; GFX900-NEXT: ; use s[8:10]7102; GFX900-NEXT: ;;#ASMEND7103; GFX900-NEXT: s_setpc_b64 s[30:31]7104;7105; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_4_3:7106; GFX90A: ; %bb.0:7107; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7108; GFX90A-NEXT: ;;#ASMSTART7109; GFX90A-NEXT: ; def s[4:6]7110; GFX90A-NEXT: ;;#ASMEND7111; GFX90A-NEXT: s_mov_b32 s8, s67112; GFX90A-NEXT: s_mov_b32 s9, s57113; GFX90A-NEXT: s_mov_b32 s10, s47114; GFX90A-NEXT: ;;#ASMSTART7115; GFX90A-NEXT: ; use s[8:10]7116; GFX90A-NEXT: ;;#ASMEND7117; GFX90A-NEXT: s_setpc_b64 s[30:31]7118;7119; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_4_3:7120; GFX942: ; %bb.0:7121; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7122; GFX942-NEXT: ;;#ASMSTART7123; GFX942-NEXT: ; def s[0:2]7124; GFX942-NEXT: ;;#ASMEND7125; GFX942-NEXT: s_mov_b32 s8, s27126; GFX942-NEXT: s_mov_b32 s9, s17127; GFX942-NEXT: s_mov_b32 s10, s07128; GFX942-NEXT: ;;#ASMSTART7129; GFX942-NEXT: ; use s[8:10]7130; GFX942-NEXT: ;;#ASMEND7131; GFX942-NEXT: s_setpc_b64 s[30:31]7132 %vec0 = call <3 x i32> asm "; def $0", "=s"()7133 %vec1 = call <3 x i32> asm "; def $0", "=s"()7134 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 3>7135 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)7136 ret void7137}7138 7139define void @s_shuffle_v3i32_v3i32__u_4_4() {7140; GFX9-LABEL: s_shuffle_v3i32_v3i32__u_4_4:7141; GFX9: ; %bb.0:7142; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7143; GFX9-NEXT: ;;#ASMSTART7144; GFX9-NEXT: ; def s[8:10]7145; GFX9-NEXT: ;;#ASMEND7146; GFX9-NEXT: s_mov_b32 s10, s97147; GFX9-NEXT: ;;#ASMSTART7148; GFX9-NEXT: ; use s[8:10]7149; GFX9-NEXT: ;;#ASMEND7150; GFX9-NEXT: s_setpc_b64 s[30:31]7151 %vec0 = call <3 x i32> asm "; def $0", "=s"()7152 %vec1 = call <3 x i32> asm "; def $0", "=s"()7153 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 poison, i32 4, i32 4>7154 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)7155 ret void7156}7157 7158define void @s_shuffle_v3i32_v3i32__0_4_4() {7159; GFX900-LABEL: s_shuffle_v3i32_v3i32__0_4_4:7160; GFX900: ; %bb.0:7161; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7162; GFX900-NEXT: ;;#ASMSTART7163; GFX900-NEXT: ; def s[8:10]7164; GFX900-NEXT: ;;#ASMEND7165; GFX900-NEXT: ;;#ASMSTART7166; GFX900-NEXT: ; def s[4:6]7167; GFX900-NEXT: ;;#ASMEND7168; GFX900-NEXT: s_mov_b32 s9, s57169; GFX900-NEXT: s_mov_b32 s10, s57170; GFX900-NEXT: ;;#ASMSTART7171; GFX900-NEXT: ; use s[8:10]7172; GFX900-NEXT: ;;#ASMEND7173; GFX900-NEXT: s_setpc_b64 s[30:31]7174;7175; GFX90A-LABEL: s_shuffle_v3i32_v3i32__0_4_4:7176; GFX90A: ; %bb.0:7177; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7178; GFX90A-NEXT: ;;#ASMSTART7179; GFX90A-NEXT: ; def s[8:10]7180; GFX90A-NEXT: ;;#ASMEND7181; GFX90A-NEXT: ;;#ASMSTART7182; GFX90A-NEXT: ; def s[4:6]7183; GFX90A-NEXT: ;;#ASMEND7184; GFX90A-NEXT: s_mov_b32 s9, s57185; GFX90A-NEXT: s_mov_b32 s10, s57186; GFX90A-NEXT: ;;#ASMSTART7187; GFX90A-NEXT: ; use s[8:10]7188; GFX90A-NEXT: ;;#ASMEND7189; GFX90A-NEXT: s_setpc_b64 s[30:31]7190;7191; GFX942-LABEL: s_shuffle_v3i32_v3i32__0_4_4:7192; GFX942: ; %bb.0:7193; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7194; GFX942-NEXT: ;;#ASMSTART7195; GFX942-NEXT: ; def s[8:10]7196; GFX942-NEXT: ;;#ASMEND7197; GFX942-NEXT: ;;#ASMSTART7198; GFX942-NEXT: ; def s[0:2]7199; GFX942-NEXT: ;;#ASMEND7200; GFX942-NEXT: s_mov_b32 s9, s17201; GFX942-NEXT: s_mov_b32 s10, s17202; GFX942-NEXT: ;;#ASMSTART7203; GFX942-NEXT: ; use s[8:10]7204; GFX942-NEXT: ;;#ASMEND7205; GFX942-NEXT: s_setpc_b64 s[30:31]7206 %vec0 = call <3 x i32> asm "; def $0", "=s"()7207 %vec1 = call <3 x i32> asm "; def $0", "=s"()7208 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 0, i32 4, i32 4>7209 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)7210 ret void7211}7212 7213define void @s_shuffle_v3i32_v3i32__1_4_4() {7214; GFX900-LABEL: s_shuffle_v3i32_v3i32__1_4_4:7215; GFX900: ; %bb.0:7216; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7217; GFX900-NEXT: ;;#ASMSTART7218; GFX900-NEXT: ; def s[8:10]7219; GFX900-NEXT: ;;#ASMEND7220; GFX900-NEXT: ;;#ASMSTART7221; GFX900-NEXT: ; def s[4:6]7222; GFX900-NEXT: ;;#ASMEND7223; GFX900-NEXT: s_mov_b32 s8, s57224; GFX900-NEXT: s_mov_b32 s10, s97225; GFX900-NEXT: ;;#ASMSTART7226; GFX900-NEXT: ; use s[8:10]7227; GFX900-NEXT: ;;#ASMEND7228; GFX900-NEXT: s_setpc_b64 s[30:31]7229;7230; GFX90A-LABEL: s_shuffle_v3i32_v3i32__1_4_4:7231; GFX90A: ; %bb.0:7232; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7233; GFX90A-NEXT: ;;#ASMSTART7234; GFX90A-NEXT: ; def s[8:10]7235; GFX90A-NEXT: ;;#ASMEND7236; GFX90A-NEXT: ;;#ASMSTART7237; GFX90A-NEXT: ; def s[4:6]7238; GFX90A-NEXT: ;;#ASMEND7239; GFX90A-NEXT: s_mov_b32 s8, s57240; GFX90A-NEXT: s_mov_b32 s10, s97241; GFX90A-NEXT: ;;#ASMSTART7242; GFX90A-NEXT: ; use s[8:10]7243; GFX90A-NEXT: ;;#ASMEND7244; GFX90A-NEXT: s_setpc_b64 s[30:31]7245;7246; GFX942-LABEL: s_shuffle_v3i32_v3i32__1_4_4:7247; GFX942: ; %bb.0:7248; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7249; GFX942-NEXT: ;;#ASMSTART7250; GFX942-NEXT: ; def s[8:10]7251; GFX942-NEXT: ;;#ASMEND7252; GFX942-NEXT: ;;#ASMSTART7253; GFX942-NEXT: ; def s[0:2]7254; GFX942-NEXT: ;;#ASMEND7255; GFX942-NEXT: s_mov_b32 s8, s17256; GFX942-NEXT: s_mov_b32 s10, s97257; GFX942-NEXT: ;;#ASMSTART7258; GFX942-NEXT: ; use s[8:10]7259; GFX942-NEXT: ;;#ASMEND7260; GFX942-NEXT: s_setpc_b64 s[30:31]7261 %vec0 = call <3 x i32> asm "; def $0", "=s"()7262 %vec1 = call <3 x i32> asm "; def $0", "=s"()7263 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 1, i32 4, i32 4>7264 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)7265 ret void7266}7267 7268define void @s_shuffle_v3i32_v3i32__2_4_4() {7269; GFX900-LABEL: s_shuffle_v3i32_v3i32__2_4_4:7270; GFX900: ; %bb.0:7271; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7272; GFX900-NEXT: ;;#ASMSTART7273; GFX900-NEXT: ; def s[8:10]7274; GFX900-NEXT: ;;#ASMEND7275; GFX900-NEXT: ;;#ASMSTART7276; GFX900-NEXT: ; def s[4:6]7277; GFX900-NEXT: ;;#ASMEND7278; GFX900-NEXT: s_mov_b32 s8, s67279; GFX900-NEXT: s_mov_b32 s10, s97280; GFX900-NEXT: ;;#ASMSTART7281; GFX900-NEXT: ; use s[8:10]7282; GFX900-NEXT: ;;#ASMEND7283; GFX900-NEXT: s_setpc_b64 s[30:31]7284;7285; GFX90A-LABEL: s_shuffle_v3i32_v3i32__2_4_4:7286; GFX90A: ; %bb.0:7287; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7288; GFX90A-NEXT: ;;#ASMSTART7289; GFX90A-NEXT: ; def s[8:10]7290; GFX90A-NEXT: ;;#ASMEND7291; GFX90A-NEXT: ;;#ASMSTART7292; GFX90A-NEXT: ; def s[4:6]7293; GFX90A-NEXT: ;;#ASMEND7294; GFX90A-NEXT: s_mov_b32 s8, s67295; GFX90A-NEXT: s_mov_b32 s10, s97296; GFX90A-NEXT: ;;#ASMSTART7297; GFX90A-NEXT: ; use s[8:10]7298; GFX90A-NEXT: ;;#ASMEND7299; GFX90A-NEXT: s_setpc_b64 s[30:31]7300;7301; GFX942-LABEL: s_shuffle_v3i32_v3i32__2_4_4:7302; GFX942: ; %bb.0:7303; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7304; GFX942-NEXT: ;;#ASMSTART7305; GFX942-NEXT: ; def s[8:10]7306; GFX942-NEXT: ;;#ASMEND7307; GFX942-NEXT: ;;#ASMSTART7308; GFX942-NEXT: ; def s[0:2]7309; GFX942-NEXT: ;;#ASMEND7310; GFX942-NEXT: s_mov_b32 s8, s27311; GFX942-NEXT: s_mov_b32 s10, s97312; GFX942-NEXT: ;;#ASMSTART7313; GFX942-NEXT: ; use s[8:10]7314; GFX942-NEXT: ;;#ASMEND7315; GFX942-NEXT: s_setpc_b64 s[30:31]7316 %vec0 = call <3 x i32> asm "; def $0", "=s"()7317 %vec1 = call <3 x i32> asm "; def $0", "=s"()7318 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 2, i32 4, i32 4>7319 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)7320 ret void7321}7322 7323define void @s_shuffle_v3i32_v3i32__3_4_4() {7324; GFX9-LABEL: s_shuffle_v3i32_v3i32__3_4_4:7325; GFX9: ; %bb.0:7326; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7327; GFX9-NEXT: ;;#ASMSTART7328; GFX9-NEXT: ; def s[8:10]7329; GFX9-NEXT: ;;#ASMEND7330; GFX9-NEXT: s_mov_b32 s10, s97331; GFX9-NEXT: ;;#ASMSTART7332; GFX9-NEXT: ; use s[8:10]7333; GFX9-NEXT: ;;#ASMEND7334; GFX9-NEXT: s_setpc_b64 s[30:31]7335 %vec0 = call <3 x i32> asm "; def $0", "=s"()7336 %vec1 = call <3 x i32> asm "; def $0", "=s"()7337 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 3, i32 4, i32 4>7338 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)7339 ret void7340}7341 7342define void @s_shuffle_v3i32_v3i32__4_4_4() {7343; GFX9-LABEL: s_shuffle_v3i32_v3i32__4_4_4:7344; GFX9: ; %bb.0:7345; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7346; GFX9-NEXT: ;;#ASMSTART7347; GFX9-NEXT: ; def s[8:10]7348; GFX9-NEXT: ;;#ASMEND7349; GFX9-NEXT: s_mov_b32 s8, s97350; GFX9-NEXT: s_mov_b32 s10, s97351; GFX9-NEXT: ;;#ASMSTART7352; GFX9-NEXT: ; use s[8:10]7353; GFX9-NEXT: ;;#ASMEND7354; GFX9-NEXT: s_setpc_b64 s[30:31]7355 %vec0 = call <3 x i32> asm "; def $0", "=s"()7356 %vec1 = call <3 x i32> asm "; def $0", "=s"()7357 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 4, i32 4>7358 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)7359 ret void7360}7361 7362define void @s_shuffle_v3i32_v3i32__5_4_4() {7363; GFX9-LABEL: s_shuffle_v3i32_v3i32__5_4_4:7364; GFX9: ; %bb.0:7365; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7366; GFX9-NEXT: ;;#ASMSTART7367; GFX9-NEXT: ; def s[8:10]7368; GFX9-NEXT: ;;#ASMEND7369; GFX9-NEXT: s_mov_b32 s8, s107370; GFX9-NEXT: s_mov_b32 s10, s97371; GFX9-NEXT: ;;#ASMSTART7372; GFX9-NEXT: ; use s[8:10]7373; GFX9-NEXT: ;;#ASMEND7374; GFX9-NEXT: s_setpc_b64 s[30:31]7375 %vec0 = call <3 x i32> asm "; def $0", "=s"()7376 %vec1 = call <3 x i32> asm "; def $0", "=s"()7377 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 4>7378 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)7379 ret void7380}7381 7382define void @s_shuffle_v3i32_v3i32__5_u_4() {7383; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_u_4:7384; GFX900: ; %bb.0:7385; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7386; GFX900-NEXT: ;;#ASMSTART7387; GFX900-NEXT: ; def s[4:6]7388; GFX900-NEXT: ;;#ASMEND7389; GFX900-NEXT: s_mov_b32 s8, s67390; GFX900-NEXT: s_mov_b32 s10, s57391; GFX900-NEXT: ;;#ASMSTART7392; GFX900-NEXT: ; use s[8:10]7393; GFX900-NEXT: ;;#ASMEND7394; GFX900-NEXT: s_setpc_b64 s[30:31]7395;7396; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_u_4:7397; GFX90A: ; %bb.0:7398; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7399; GFX90A-NEXT: ;;#ASMSTART7400; GFX90A-NEXT: ; def s[4:6]7401; GFX90A-NEXT: ;;#ASMEND7402; GFX90A-NEXT: s_mov_b32 s8, s67403; GFX90A-NEXT: s_mov_b32 s10, s57404; GFX90A-NEXT: ;;#ASMSTART7405; GFX90A-NEXT: ; use s[8:10]7406; GFX90A-NEXT: ;;#ASMEND7407; GFX90A-NEXT: s_setpc_b64 s[30:31]7408;7409; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_u_4:7410; GFX942: ; %bb.0:7411; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7412; GFX942-NEXT: ;;#ASMSTART7413; GFX942-NEXT: ; def s[0:2]7414; GFX942-NEXT: ;;#ASMEND7415; GFX942-NEXT: s_mov_b32 s8, s27416; GFX942-NEXT: s_mov_b32 s10, s17417; GFX942-NEXT: ;;#ASMSTART7418; GFX942-NEXT: ; use s[8:10]7419; GFX942-NEXT: ;;#ASMEND7420; GFX942-NEXT: s_setpc_b64 s[30:31]7421 %vec0 = call <3 x i32> asm "; def $0", "=s"()7422 %vec1 = call <3 x i32> asm "; def $0", "=s"()7423 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 4>7424 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)7425 ret void7426}7427 7428define void @s_shuffle_v3i32_v3i32__5_0_4() {7429; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_0_4:7430; GFX900: ; %bb.0:7431; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7432; GFX900-NEXT: ;;#ASMSTART7433; GFX900-NEXT: ; def s[4:6]7434; GFX900-NEXT: ;;#ASMEND7435; GFX900-NEXT: ;;#ASMSTART7436; GFX900-NEXT: ; def s[12:14]7437; GFX900-NEXT: ;;#ASMEND7438; GFX900-NEXT: s_mov_b32 s8, s147439; GFX900-NEXT: s_mov_b32 s9, s47440; GFX900-NEXT: s_mov_b32 s10, s137441; GFX900-NEXT: ;;#ASMSTART7442; GFX900-NEXT: ; use s[8:10]7443; GFX900-NEXT: ;;#ASMEND7444; GFX900-NEXT: s_setpc_b64 s[30:31]7445;7446; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_0_4:7447; GFX90A: ; %bb.0:7448; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7449; GFX90A-NEXT: ;;#ASMSTART7450; GFX90A-NEXT: ; def s[4:6]7451; GFX90A-NEXT: ;;#ASMEND7452; GFX90A-NEXT: ;;#ASMSTART7453; GFX90A-NEXT: ; def s[12:14]7454; GFX90A-NEXT: ;;#ASMEND7455; GFX90A-NEXT: s_mov_b32 s8, s147456; GFX90A-NEXT: s_mov_b32 s9, s47457; GFX90A-NEXT: s_mov_b32 s10, s137458; GFX90A-NEXT: ;;#ASMSTART7459; GFX90A-NEXT: ; use s[8:10]7460; GFX90A-NEXT: ;;#ASMEND7461; GFX90A-NEXT: s_setpc_b64 s[30:31]7462;7463; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_0_4:7464; GFX942: ; %bb.0:7465; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7466; GFX942-NEXT: ;;#ASMSTART7467; GFX942-NEXT: ; def s[0:2]7468; GFX942-NEXT: ;;#ASMEND7469; GFX942-NEXT: ;;#ASMSTART7470; GFX942-NEXT: ; def s[4:6]7471; GFX942-NEXT: ;;#ASMEND7472; GFX942-NEXT: s_mov_b32 s8, s67473; GFX942-NEXT: s_mov_b32 s9, s07474; GFX942-NEXT: s_mov_b32 s10, s57475; GFX942-NEXT: ;;#ASMSTART7476; GFX942-NEXT: ; use s[8:10]7477; GFX942-NEXT: ;;#ASMEND7478; GFX942-NEXT: s_setpc_b64 s[30:31]7479 %vec0 = call <3 x i32> asm "; def $0", "=s"()7480 %vec1 = call <3 x i32> asm "; def $0", "=s"()7481 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 4>7482 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)7483 ret void7484}7485 7486define void @s_shuffle_v3i32_v3i32__5_1_4() {7487; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_1_4:7488; GFX900: ; %bb.0:7489; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7490; GFX900-NEXT: ;;#ASMSTART7491; GFX900-NEXT: ; def s[8:10]7492; GFX900-NEXT: ;;#ASMEND7493; GFX900-NEXT: ;;#ASMSTART7494; GFX900-NEXT: ; def s[4:6]7495; GFX900-NEXT: ;;#ASMEND7496; GFX900-NEXT: s_mov_b32 s8, s67497; GFX900-NEXT: s_mov_b32 s10, s57498; GFX900-NEXT: ;;#ASMSTART7499; GFX900-NEXT: ; use s[8:10]7500; GFX900-NEXT: ;;#ASMEND7501; GFX900-NEXT: s_setpc_b64 s[30:31]7502;7503; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_1_4:7504; GFX90A: ; %bb.0:7505; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7506; GFX90A-NEXT: ;;#ASMSTART7507; GFX90A-NEXT: ; def s[8:10]7508; GFX90A-NEXT: ;;#ASMEND7509; GFX90A-NEXT: ;;#ASMSTART7510; GFX90A-NEXT: ; def s[4:6]7511; GFX90A-NEXT: ;;#ASMEND7512; GFX90A-NEXT: s_mov_b32 s8, s67513; GFX90A-NEXT: s_mov_b32 s10, s57514; GFX90A-NEXT: ;;#ASMSTART7515; GFX90A-NEXT: ; use s[8:10]7516; GFX90A-NEXT: ;;#ASMEND7517; GFX90A-NEXT: s_setpc_b64 s[30:31]7518;7519; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_1_4:7520; GFX942: ; %bb.0:7521; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7522; GFX942-NEXT: ;;#ASMSTART7523; GFX942-NEXT: ; def s[8:10]7524; GFX942-NEXT: ;;#ASMEND7525; GFX942-NEXT: ;;#ASMSTART7526; GFX942-NEXT: ; def s[0:2]7527; GFX942-NEXT: ;;#ASMEND7528; GFX942-NEXT: s_mov_b32 s8, s27529; GFX942-NEXT: s_mov_b32 s10, s17530; GFX942-NEXT: ;;#ASMSTART7531; GFX942-NEXT: ; use s[8:10]7532; GFX942-NEXT: ;;#ASMEND7533; GFX942-NEXT: s_setpc_b64 s[30:31]7534 %vec0 = call <3 x i32> asm "; def $0", "=s"()7535 %vec1 = call <3 x i32> asm "; def $0", "=s"()7536 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 4>7537 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)7538 ret void7539}7540 7541define void @s_shuffle_v3i32_v3i32__5_2_4() {7542; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_2_4:7543; GFX900: ; %bb.0:7544; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7545; GFX900-NEXT: ;;#ASMSTART7546; GFX900-NEXT: ; def s[4:6]7547; GFX900-NEXT: ;;#ASMEND7548; GFX900-NEXT: ;;#ASMSTART7549; GFX900-NEXT: ; def s[12:14]7550; GFX900-NEXT: ;;#ASMEND7551; GFX900-NEXT: s_mov_b32 s8, s147552; GFX900-NEXT: s_mov_b32 s9, s67553; GFX900-NEXT: s_mov_b32 s10, s137554; GFX900-NEXT: ;;#ASMSTART7555; GFX900-NEXT: ; use s[8:10]7556; GFX900-NEXT: ;;#ASMEND7557; GFX900-NEXT: s_setpc_b64 s[30:31]7558;7559; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_2_4:7560; GFX90A: ; %bb.0:7561; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7562; GFX90A-NEXT: ;;#ASMSTART7563; GFX90A-NEXT: ; def s[4:6]7564; GFX90A-NEXT: ;;#ASMEND7565; GFX90A-NEXT: ;;#ASMSTART7566; GFX90A-NEXT: ; def s[12:14]7567; GFX90A-NEXT: ;;#ASMEND7568; GFX90A-NEXT: s_mov_b32 s8, s147569; GFX90A-NEXT: s_mov_b32 s9, s67570; GFX90A-NEXT: s_mov_b32 s10, s137571; GFX90A-NEXT: ;;#ASMSTART7572; GFX90A-NEXT: ; use s[8:10]7573; GFX90A-NEXT: ;;#ASMEND7574; GFX90A-NEXT: s_setpc_b64 s[30:31]7575;7576; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_2_4:7577; GFX942: ; %bb.0:7578; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7579; GFX942-NEXT: ;;#ASMSTART7580; GFX942-NEXT: ; def s[0:2]7581; GFX942-NEXT: ;;#ASMEND7582; GFX942-NEXT: ;;#ASMSTART7583; GFX942-NEXT: ; def s[4:6]7584; GFX942-NEXT: ;;#ASMEND7585; GFX942-NEXT: s_mov_b32 s8, s67586; GFX942-NEXT: s_mov_b32 s9, s27587; GFX942-NEXT: s_mov_b32 s10, s57588; GFX942-NEXT: ;;#ASMSTART7589; GFX942-NEXT: ; use s[8:10]7590; GFX942-NEXT: ;;#ASMEND7591; GFX942-NEXT: s_setpc_b64 s[30:31]7592 %vec0 = call <3 x i32> asm "; def $0", "=s"()7593 %vec1 = call <3 x i32> asm "; def $0", "=s"()7594 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 4>7595 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)7596 ret void7597}7598 7599define void @s_shuffle_v3i32_v3i32__5_3_4() {7600; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_3_4:7601; GFX900: ; %bb.0:7602; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7603; GFX900-NEXT: ;;#ASMSTART7604; GFX900-NEXT: ; def s[4:6]7605; GFX900-NEXT: ;;#ASMEND7606; GFX900-NEXT: s_mov_b32 s8, s67607; GFX900-NEXT: s_mov_b32 s9, s47608; GFX900-NEXT: s_mov_b32 s10, s57609; GFX900-NEXT: ;;#ASMSTART7610; GFX900-NEXT: ; use s[8:10]7611; GFX900-NEXT: ;;#ASMEND7612; GFX900-NEXT: s_setpc_b64 s[30:31]7613;7614; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_3_4:7615; GFX90A: ; %bb.0:7616; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7617; GFX90A-NEXT: ;;#ASMSTART7618; GFX90A-NEXT: ; def s[4:6]7619; GFX90A-NEXT: ;;#ASMEND7620; GFX90A-NEXT: s_mov_b32 s8, s67621; GFX90A-NEXT: s_mov_b32 s9, s47622; GFX90A-NEXT: s_mov_b32 s10, s57623; GFX90A-NEXT: ;;#ASMSTART7624; GFX90A-NEXT: ; use s[8:10]7625; GFX90A-NEXT: ;;#ASMEND7626; GFX90A-NEXT: s_setpc_b64 s[30:31]7627;7628; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_3_4:7629; GFX942: ; %bb.0:7630; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7631; GFX942-NEXT: ;;#ASMSTART7632; GFX942-NEXT: ; def s[0:2]7633; GFX942-NEXT: ;;#ASMEND7634; GFX942-NEXT: s_mov_b32 s8, s27635; GFX942-NEXT: s_mov_b32 s9, s07636; GFX942-NEXT: s_mov_b32 s10, s17637; GFX942-NEXT: ;;#ASMSTART7638; GFX942-NEXT: ; use s[8:10]7639; GFX942-NEXT: ;;#ASMEND7640; GFX942-NEXT: s_setpc_b64 s[30:31]7641 %vec0 = call <3 x i32> asm "; def $0", "=s"()7642 %vec1 = call <3 x i32> asm "; def $0", "=s"()7643 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 4>7644 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)7645 ret void7646}7647 7648define void @s_shuffle_v3i32_v3i32__u_5_5() {7649; GFX9-LABEL: s_shuffle_v3i32_v3i32__u_5_5:7650; GFX9: ; %bb.0:7651; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7652; GFX9-NEXT: ;;#ASMSTART7653; GFX9-NEXT: ; def s[8:10]7654; GFX9-NEXT: ;;#ASMEND7655; GFX9-NEXT: s_mov_b32 s9, s107656; GFX9-NEXT: ;;#ASMSTART7657; GFX9-NEXT: ; use s[8:10]7658; GFX9-NEXT: ;;#ASMEND7659; GFX9-NEXT: s_setpc_b64 s[30:31]7660 %vec0 = call <3 x i32> asm "; def $0", "=s"()7661 %vec1 = call <3 x i32> asm "; def $0", "=s"()7662 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 poison, i32 5, i32 5>7663 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)7664 ret void7665}7666 7667define void @s_shuffle_v3i32_v3i32__0_5_5() {7668; GFX900-LABEL: s_shuffle_v3i32_v3i32__0_5_5:7669; GFX900: ; %bb.0:7670; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7671; GFX900-NEXT: ;;#ASMSTART7672; GFX900-NEXT: ; def s[8:10]7673; GFX900-NEXT: ;;#ASMEND7674; GFX900-NEXT: ;;#ASMSTART7675; GFX900-NEXT: ; def s[4:6]7676; GFX900-NEXT: ;;#ASMEND7677; GFX900-NEXT: s_mov_b32 s9, s67678; GFX900-NEXT: s_mov_b32 s10, s67679; GFX900-NEXT: ;;#ASMSTART7680; GFX900-NEXT: ; use s[8:10]7681; GFX900-NEXT: ;;#ASMEND7682; GFX900-NEXT: s_setpc_b64 s[30:31]7683;7684; GFX90A-LABEL: s_shuffle_v3i32_v3i32__0_5_5:7685; GFX90A: ; %bb.0:7686; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7687; GFX90A-NEXT: ;;#ASMSTART7688; GFX90A-NEXT: ; def s[8:10]7689; GFX90A-NEXT: ;;#ASMEND7690; GFX90A-NEXT: ;;#ASMSTART7691; GFX90A-NEXT: ; def s[4:6]7692; GFX90A-NEXT: ;;#ASMEND7693; GFX90A-NEXT: s_mov_b32 s9, s67694; GFX90A-NEXT: s_mov_b32 s10, s67695; GFX90A-NEXT: ;;#ASMSTART7696; GFX90A-NEXT: ; use s[8:10]7697; GFX90A-NEXT: ;;#ASMEND7698; GFX90A-NEXT: s_setpc_b64 s[30:31]7699;7700; GFX942-LABEL: s_shuffle_v3i32_v3i32__0_5_5:7701; GFX942: ; %bb.0:7702; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7703; GFX942-NEXT: ;;#ASMSTART7704; GFX942-NEXT: ; def s[8:10]7705; GFX942-NEXT: ;;#ASMEND7706; GFX942-NEXT: ;;#ASMSTART7707; GFX942-NEXT: ; def s[0:2]7708; GFX942-NEXT: ;;#ASMEND7709; GFX942-NEXT: s_mov_b32 s9, s27710; GFX942-NEXT: s_mov_b32 s10, s27711; GFX942-NEXT: ;;#ASMSTART7712; GFX942-NEXT: ; use s[8:10]7713; GFX942-NEXT: ;;#ASMEND7714; GFX942-NEXT: s_setpc_b64 s[30:31]7715 %vec0 = call <3 x i32> asm "; def $0", "=s"()7716 %vec1 = call <3 x i32> asm "; def $0", "=s"()7717 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 0, i32 5, i32 5>7718 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)7719 ret void7720}7721 7722define void @s_shuffle_v3i32_v3i32__1_5_5() {7723; GFX900-LABEL: s_shuffle_v3i32_v3i32__1_5_5:7724; GFX900: ; %bb.0:7725; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7726; GFX900-NEXT: ;;#ASMSTART7727; GFX900-NEXT: ; def s[8:10]7728; GFX900-NEXT: ;;#ASMEND7729; GFX900-NEXT: ;;#ASMSTART7730; GFX900-NEXT: ; def s[4:6]7731; GFX900-NEXT: ;;#ASMEND7732; GFX900-NEXT: s_mov_b32 s8, s57733; GFX900-NEXT: s_mov_b32 s9, s107734; GFX900-NEXT: ;;#ASMSTART7735; GFX900-NEXT: ; use s[8:10]7736; GFX900-NEXT: ;;#ASMEND7737; GFX900-NEXT: s_setpc_b64 s[30:31]7738;7739; GFX90A-LABEL: s_shuffle_v3i32_v3i32__1_5_5:7740; GFX90A: ; %bb.0:7741; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7742; GFX90A-NEXT: ;;#ASMSTART7743; GFX90A-NEXT: ; def s[8:10]7744; GFX90A-NEXT: ;;#ASMEND7745; GFX90A-NEXT: ;;#ASMSTART7746; GFX90A-NEXT: ; def s[4:6]7747; GFX90A-NEXT: ;;#ASMEND7748; GFX90A-NEXT: s_mov_b32 s8, s57749; GFX90A-NEXT: s_mov_b32 s9, s107750; GFX90A-NEXT: ;;#ASMSTART7751; GFX90A-NEXT: ; use s[8:10]7752; GFX90A-NEXT: ;;#ASMEND7753; GFX90A-NEXT: s_setpc_b64 s[30:31]7754;7755; GFX942-LABEL: s_shuffle_v3i32_v3i32__1_5_5:7756; GFX942: ; %bb.0:7757; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7758; GFX942-NEXT: ;;#ASMSTART7759; GFX942-NEXT: ; def s[8:10]7760; GFX942-NEXT: ;;#ASMEND7761; GFX942-NEXT: ;;#ASMSTART7762; GFX942-NEXT: ; def s[0:2]7763; GFX942-NEXT: ;;#ASMEND7764; GFX942-NEXT: s_mov_b32 s8, s17765; GFX942-NEXT: s_mov_b32 s9, s107766; GFX942-NEXT: ;;#ASMSTART7767; GFX942-NEXT: ; use s[8:10]7768; GFX942-NEXT: ;;#ASMEND7769; GFX942-NEXT: s_setpc_b64 s[30:31]7770 %vec0 = call <3 x i32> asm "; def $0", "=s"()7771 %vec1 = call <3 x i32> asm "; def $0", "=s"()7772 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 1, i32 5, i32 5>7773 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)7774 ret void7775}7776 7777define void @s_shuffle_v3i32_v3i32__2_5_5() {7778; GFX900-LABEL: s_shuffle_v3i32_v3i32__2_5_5:7779; GFX900: ; %bb.0:7780; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7781; GFX900-NEXT: ;;#ASMSTART7782; GFX900-NEXT: ; def s[8:10]7783; GFX900-NEXT: ;;#ASMEND7784; GFX900-NEXT: ;;#ASMSTART7785; GFX900-NEXT: ; def s[4:6]7786; GFX900-NEXT: ;;#ASMEND7787; GFX900-NEXT: s_mov_b32 s8, s67788; GFX900-NEXT: s_mov_b32 s9, s107789; GFX900-NEXT: ;;#ASMSTART7790; GFX900-NEXT: ; use s[8:10]7791; GFX900-NEXT: ;;#ASMEND7792; GFX900-NEXT: s_setpc_b64 s[30:31]7793;7794; GFX90A-LABEL: s_shuffle_v3i32_v3i32__2_5_5:7795; GFX90A: ; %bb.0:7796; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7797; GFX90A-NEXT: ;;#ASMSTART7798; GFX90A-NEXT: ; def s[8:10]7799; GFX90A-NEXT: ;;#ASMEND7800; GFX90A-NEXT: ;;#ASMSTART7801; GFX90A-NEXT: ; def s[4:6]7802; GFX90A-NEXT: ;;#ASMEND7803; GFX90A-NEXT: s_mov_b32 s8, s67804; GFX90A-NEXT: s_mov_b32 s9, s107805; GFX90A-NEXT: ;;#ASMSTART7806; GFX90A-NEXT: ; use s[8:10]7807; GFX90A-NEXT: ;;#ASMEND7808; GFX90A-NEXT: s_setpc_b64 s[30:31]7809;7810; GFX942-LABEL: s_shuffle_v3i32_v3i32__2_5_5:7811; GFX942: ; %bb.0:7812; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7813; GFX942-NEXT: ;;#ASMSTART7814; GFX942-NEXT: ; def s[8:10]7815; GFX942-NEXT: ;;#ASMEND7816; GFX942-NEXT: ;;#ASMSTART7817; GFX942-NEXT: ; def s[0:2]7818; GFX942-NEXT: ;;#ASMEND7819; GFX942-NEXT: s_mov_b32 s8, s27820; GFX942-NEXT: s_mov_b32 s9, s107821; GFX942-NEXT: ;;#ASMSTART7822; GFX942-NEXT: ; use s[8:10]7823; GFX942-NEXT: ;;#ASMEND7824; GFX942-NEXT: s_setpc_b64 s[30:31]7825 %vec0 = call <3 x i32> asm "; def $0", "=s"()7826 %vec1 = call <3 x i32> asm "; def $0", "=s"()7827 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 2, i32 5, i32 5>7828 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)7829 ret void7830}7831 7832define void @s_shuffle_v3i32_v3i32__3_5_5() {7833; GFX9-LABEL: s_shuffle_v3i32_v3i32__3_5_5:7834; GFX9: ; %bb.0:7835; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7836; GFX9-NEXT: ;;#ASMSTART7837; GFX9-NEXT: ; def s[8:10]7838; GFX9-NEXT: ;;#ASMEND7839; GFX9-NEXT: s_mov_b32 s9, s107840; GFX9-NEXT: ;;#ASMSTART7841; GFX9-NEXT: ; use s[8:10]7842; GFX9-NEXT: ;;#ASMEND7843; GFX9-NEXT: s_setpc_b64 s[30:31]7844 %vec0 = call <3 x i32> asm "; def $0", "=s"()7845 %vec1 = call <3 x i32> asm "; def $0", "=s"()7846 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 3, i32 5, i32 5>7847 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)7848 ret void7849}7850 7851define void @s_shuffle_v3i32_v3i32__4_5_5() {7852; GFX9-LABEL: s_shuffle_v3i32_v3i32__4_5_5:7853; GFX9: ; %bb.0:7854; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7855; GFX9-NEXT: ;;#ASMSTART7856; GFX9-NEXT: ; def s[8:10]7857; GFX9-NEXT: ;;#ASMEND7858; GFX9-NEXT: s_mov_b32 s8, s97859; GFX9-NEXT: s_mov_b32 s9, s107860; GFX9-NEXT: ;;#ASMSTART7861; GFX9-NEXT: ; use s[8:10]7862; GFX9-NEXT: ;;#ASMEND7863; GFX9-NEXT: s_setpc_b64 s[30:31]7864 %vec0 = call <3 x i32> asm "; def $0", "=s"()7865 %vec1 = call <3 x i32> asm "; def $0", "=s"()7866 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 4, i32 5, i32 5>7867 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)7868 ret void7869}7870 7871define void @s_shuffle_v3i32_v3i32__5_u_5() {7872; GFX9-LABEL: s_shuffle_v3i32_v3i32__5_u_5:7873; GFX9: ; %bb.0:7874; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7875; GFX9-NEXT: ;;#ASMSTART7876; GFX9-NEXT: ; def s[8:10]7877; GFX9-NEXT: ;;#ASMEND7878; GFX9-NEXT: s_mov_b32 s8, s107879; GFX9-NEXT: ;;#ASMSTART7880; GFX9-NEXT: ; use s[8:10]7881; GFX9-NEXT: ;;#ASMEND7882; GFX9-NEXT: s_setpc_b64 s[30:31]7883 %vec0 = call <3 x i32> asm "; def $0", "=s"()7884 %vec1 = call <3 x i32> asm "; def $0", "=s"()7885 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 poison, i32 5>7886 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)7887 ret void7888}7889 7890define void @s_shuffle_v3i32_v3i32__5_0_5() {7891; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_0_5:7892; GFX900: ; %bb.0:7893; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7894; GFX900-NEXT: ;;#ASMSTART7895; GFX900-NEXT: ; def s[8:10]7896; GFX900-NEXT: ;;#ASMEND7897; GFX900-NEXT: ;;#ASMSTART7898; GFX900-NEXT: ; def s[4:6]7899; GFX900-NEXT: ;;#ASMEND7900; GFX900-NEXT: s_mov_b32 s8, s107901; GFX900-NEXT: s_mov_b32 s9, s47902; GFX900-NEXT: ;;#ASMSTART7903; GFX900-NEXT: ; use s[8:10]7904; GFX900-NEXT: ;;#ASMEND7905; GFX900-NEXT: s_setpc_b64 s[30:31]7906;7907; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_0_5:7908; GFX90A: ; %bb.0:7909; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7910; GFX90A-NEXT: ;;#ASMSTART7911; GFX90A-NEXT: ; def s[8:10]7912; GFX90A-NEXT: ;;#ASMEND7913; GFX90A-NEXT: ;;#ASMSTART7914; GFX90A-NEXT: ; def s[4:6]7915; GFX90A-NEXT: ;;#ASMEND7916; GFX90A-NEXT: s_mov_b32 s8, s107917; GFX90A-NEXT: s_mov_b32 s9, s47918; GFX90A-NEXT: ;;#ASMSTART7919; GFX90A-NEXT: ; use s[8:10]7920; GFX90A-NEXT: ;;#ASMEND7921; GFX90A-NEXT: s_setpc_b64 s[30:31]7922;7923; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_0_5:7924; GFX942: ; %bb.0:7925; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7926; GFX942-NEXT: ;;#ASMSTART7927; GFX942-NEXT: ; def s[8:10]7928; GFX942-NEXT: ;;#ASMEND7929; GFX942-NEXT: ;;#ASMSTART7930; GFX942-NEXT: ; def s[0:2]7931; GFX942-NEXT: ;;#ASMEND7932; GFX942-NEXT: s_mov_b32 s8, s107933; GFX942-NEXT: s_mov_b32 s9, s07934; GFX942-NEXT: ;;#ASMSTART7935; GFX942-NEXT: ; use s[8:10]7936; GFX942-NEXT: ;;#ASMEND7937; GFX942-NEXT: s_setpc_b64 s[30:31]7938 %vec0 = call <3 x i32> asm "; def $0", "=s"()7939 %vec1 = call <3 x i32> asm "; def $0", "=s"()7940 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 0, i32 5>7941 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)7942 ret void7943}7944 7945define void @s_shuffle_v3i32_v3i32__5_1_5() {7946; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_1_5:7947; GFX900: ; %bb.0:7948; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7949; GFX900-NEXT: ;;#ASMSTART7950; GFX900-NEXT: ; def s[8:10]7951; GFX900-NEXT: ;;#ASMEND7952; GFX900-NEXT: ;;#ASMSTART7953; GFX900-NEXT: ; def s[4:6]7954; GFX900-NEXT: ;;#ASMEND7955; GFX900-NEXT: s_mov_b32 s8, s67956; GFX900-NEXT: s_mov_b32 s10, s67957; GFX900-NEXT: ;;#ASMSTART7958; GFX900-NEXT: ; use s[8:10]7959; GFX900-NEXT: ;;#ASMEND7960; GFX900-NEXT: s_setpc_b64 s[30:31]7961;7962; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_1_5:7963; GFX90A: ; %bb.0:7964; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7965; GFX90A-NEXT: ;;#ASMSTART7966; GFX90A-NEXT: ; def s[8:10]7967; GFX90A-NEXT: ;;#ASMEND7968; GFX90A-NEXT: ;;#ASMSTART7969; GFX90A-NEXT: ; def s[4:6]7970; GFX90A-NEXT: ;;#ASMEND7971; GFX90A-NEXT: s_mov_b32 s8, s67972; GFX90A-NEXT: s_mov_b32 s10, s67973; GFX90A-NEXT: ;;#ASMSTART7974; GFX90A-NEXT: ; use s[8:10]7975; GFX90A-NEXT: ;;#ASMEND7976; GFX90A-NEXT: s_setpc_b64 s[30:31]7977;7978; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_1_5:7979; GFX942: ; %bb.0:7980; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7981; GFX942-NEXT: ;;#ASMSTART7982; GFX942-NEXT: ; def s[8:10]7983; GFX942-NEXT: ;;#ASMEND7984; GFX942-NEXT: ;;#ASMSTART7985; GFX942-NEXT: ; def s[0:2]7986; GFX942-NEXT: ;;#ASMEND7987; GFX942-NEXT: s_mov_b32 s8, s27988; GFX942-NEXT: s_mov_b32 s10, s27989; GFX942-NEXT: ;;#ASMSTART7990; GFX942-NEXT: ; use s[8:10]7991; GFX942-NEXT: ;;#ASMEND7992; GFX942-NEXT: s_setpc_b64 s[30:31]7993 %vec0 = call <3 x i32> asm "; def $0", "=s"()7994 %vec1 = call <3 x i32> asm "; def $0", "=s"()7995 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 1, i32 5>7996 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)7997 ret void7998}7999 8000define void @s_shuffle_v3i32_v3i32__5_2_5() {8001; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_2_5:8002; GFX900: ; %bb.0:8003; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8004; GFX900-NEXT: ;;#ASMSTART8005; GFX900-NEXT: ; def s[8:10]8006; GFX900-NEXT: ;;#ASMEND8007; GFX900-NEXT: ;;#ASMSTART8008; GFX900-NEXT: ; def s[4:6]8009; GFX900-NEXT: ;;#ASMEND8010; GFX900-NEXT: s_mov_b32 s8, s108011; GFX900-NEXT: s_mov_b32 s9, s68012; GFX900-NEXT: ;;#ASMSTART8013; GFX900-NEXT: ; use s[8:10]8014; GFX900-NEXT: ;;#ASMEND8015; GFX900-NEXT: s_setpc_b64 s[30:31]8016;8017; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_2_5:8018; GFX90A: ; %bb.0:8019; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8020; GFX90A-NEXT: ;;#ASMSTART8021; GFX90A-NEXT: ; def s[8:10]8022; GFX90A-NEXT: ;;#ASMEND8023; GFX90A-NEXT: ;;#ASMSTART8024; GFX90A-NEXT: ; def s[4:6]8025; GFX90A-NEXT: ;;#ASMEND8026; GFX90A-NEXT: s_mov_b32 s8, s108027; GFX90A-NEXT: s_mov_b32 s9, s68028; GFX90A-NEXT: ;;#ASMSTART8029; GFX90A-NEXT: ; use s[8:10]8030; GFX90A-NEXT: ;;#ASMEND8031; GFX90A-NEXT: s_setpc_b64 s[30:31]8032;8033; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_2_5:8034; GFX942: ; %bb.0:8035; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8036; GFX942-NEXT: ;;#ASMSTART8037; GFX942-NEXT: ; def s[8:10]8038; GFX942-NEXT: ;;#ASMEND8039; GFX942-NEXT: ;;#ASMSTART8040; GFX942-NEXT: ; def s[0:2]8041; GFX942-NEXT: ;;#ASMEND8042; GFX942-NEXT: s_mov_b32 s8, s108043; GFX942-NEXT: s_mov_b32 s9, s28044; GFX942-NEXT: ;;#ASMSTART8045; GFX942-NEXT: ; use s[8:10]8046; GFX942-NEXT: ;;#ASMEND8047; GFX942-NEXT: s_setpc_b64 s[30:31]8048 %vec0 = call <3 x i32> asm "; def $0", "=s"()8049 %vec1 = call <3 x i32> asm "; def $0", "=s"()8050 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 2, i32 5>8051 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)8052 ret void8053}8054 8055define void @s_shuffle_v3i32_v3i32__5_3_5() {8056; GFX900-LABEL: s_shuffle_v3i32_v3i32__5_3_5:8057; GFX900: ; %bb.0:8058; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8059; GFX900-NEXT: ;;#ASMSTART8060; GFX900-NEXT: ; def s[4:6]8061; GFX900-NEXT: ;;#ASMEND8062; GFX900-NEXT: s_mov_b32 s8, s68063; GFX900-NEXT: s_mov_b32 s9, s48064; GFX900-NEXT: s_mov_b32 s10, s68065; GFX900-NEXT: ;;#ASMSTART8066; GFX900-NEXT: ; use s[8:10]8067; GFX900-NEXT: ;;#ASMEND8068; GFX900-NEXT: s_setpc_b64 s[30:31]8069;8070; GFX90A-LABEL: s_shuffle_v3i32_v3i32__5_3_5:8071; GFX90A: ; %bb.0:8072; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8073; GFX90A-NEXT: ;;#ASMSTART8074; GFX90A-NEXT: ; def s[4:6]8075; GFX90A-NEXT: ;;#ASMEND8076; GFX90A-NEXT: s_mov_b32 s8, s68077; GFX90A-NEXT: s_mov_b32 s9, s48078; GFX90A-NEXT: s_mov_b32 s10, s68079; GFX90A-NEXT: ;;#ASMSTART8080; GFX90A-NEXT: ; use s[8:10]8081; GFX90A-NEXT: ;;#ASMEND8082; GFX90A-NEXT: s_setpc_b64 s[30:31]8083;8084; GFX942-LABEL: s_shuffle_v3i32_v3i32__5_3_5:8085; GFX942: ; %bb.0:8086; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8087; GFX942-NEXT: ;;#ASMSTART8088; GFX942-NEXT: ; def s[0:2]8089; GFX942-NEXT: ;;#ASMEND8090; GFX942-NEXT: s_mov_b32 s8, s28091; GFX942-NEXT: s_mov_b32 s9, s08092; GFX942-NEXT: s_mov_b32 s10, s28093; GFX942-NEXT: ;;#ASMSTART8094; GFX942-NEXT: ; use s[8:10]8095; GFX942-NEXT: ;;#ASMEND8096; GFX942-NEXT: s_setpc_b64 s[30:31]8097 %vec0 = call <3 x i32> asm "; def $0", "=s"()8098 %vec1 = call <3 x i32> asm "; def $0", "=s"()8099 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 3, i32 5>8100 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)8101 ret void8102}8103 8104define void @s_shuffle_v3i32_v3i32__5_4_5() {8105; GFX9-LABEL: s_shuffle_v3i32_v3i32__5_4_5:8106; GFX9: ; %bb.0:8107; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8108; GFX9-NEXT: ;;#ASMSTART8109; GFX9-NEXT: ; def s[8:10]8110; GFX9-NEXT: ;;#ASMEND8111; GFX9-NEXT: s_mov_b32 s8, s108112; GFX9-NEXT: ;;#ASMSTART8113; GFX9-NEXT: ; use s[8:10]8114; GFX9-NEXT: ;;#ASMEND8115; GFX9-NEXT: s_setpc_b64 s[30:31]8116 %vec0 = call <3 x i32> asm "; def $0", "=s"()8117 %vec1 = call <3 x i32> asm "; def $0", "=s"()8118 %shuf = shufflevector <3 x i32> %vec0, <3 x i32> %vec1, <3 x i32> <i32 5, i32 4, i32 5>8119 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)8120 ret void8121}8122;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:8123; GFX90APLUS: {{.*}}8124