brintos

brintos / llvm-project-archived public Read only

0
0
Text · 127.5 KiB · 6a0527f Raw
3647 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_v2i32__u_u_u(ptr addrspace(1) inreg %ptr) {8; GFX9-LABEL: v_shuffle_v3i32_v2i32__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 <2 x i32> asm "; def $0", "=v"()13  %shuf = shufflevector <2 x i32> %vec0, <2 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_v2i32__0_u_u(ptr addrspace(1) inreg %ptr) {19; GFX900-LABEL: v_shuffle_v3i32_v2i32__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 v2, 023; GFX900-NEXT:    ;;#ASMSTART24; GFX900-NEXT:    ; def v[0:1]25; GFX900-NEXT:    ;;#ASMEND26; GFX900-NEXT:    global_store_dwordx3 v2, 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_v2i32__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 v2, 034; GFX90A-NEXT:    ;;#ASMSTART35; GFX90A-NEXT:    ; def v[0:1]36; GFX90A-NEXT:    ;;#ASMEND37; GFX90A-NEXT:    global_store_dwordx3 v2, 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_v2i32__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 v2, 045; GFX942-NEXT:    ;;#ASMSTART46; GFX942-NEXT:    ; def v[0:1]47; GFX942-NEXT:    ;;#ASMEND48; GFX942-NEXT:    global_store_dwordx3 v2, 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 <2 x i32> asm "; def $0", "=v"()52  %shuf = shufflevector <2 x i32> %vec0, <2 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_v2i32__1_u_u(ptr addrspace(1) inreg %ptr) {58; GFX900-LABEL: v_shuffle_v3i32_v2i32__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 v2, 062; GFX900-NEXT:    ;;#ASMSTART63; GFX900-NEXT:    ; def v[0:1]64; GFX900-NEXT:    ;;#ASMEND65; GFX900-NEXT:    global_store_dwordx3 v2, 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_v2i32__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:1]74; GFX90A-NEXT:    ;;#ASMEND75; GFX90A-NEXT:    v_mov_b32_e32 v2, 076; GFX90A-NEXT:    v_mov_b32_e32 v0, v177; GFX90A-NEXT:    global_store_dwordx3 v2, 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_v2i32__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:1]86; GFX942-NEXT:    ;;#ASMEND87; GFX942-NEXT:    v_mov_b32_e32 v2, 088; GFX942-NEXT:    v_mov_b32_e32 v0, v189; GFX942-NEXT:    global_store_dwordx3 v2, 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 <2 x i32> asm "; def $0", "=v"()93  %shuf = shufflevector <2 x i32> %vec0, <2 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_v2i32__2_u_u(ptr addrspace(1) inreg %ptr) {99; GFX9-LABEL: v_shuffle_v3i32_v2i32__2_u_u:100; GFX9:       ; %bb.0:101; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)102; GFX9-NEXT:    s_setpc_b64 s[30:31]103  %vec0 = call <2 x i32> asm "; def $0", "=v"()104  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 2, i32 poison, i32 poison>105  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16106  ret void107}108 109define void @v_shuffle_v3i32_v2i32__3_u_u(ptr addrspace(1) inreg %ptr) {110; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_u_u:111; GFX900:       ; %bb.0:112; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)113; GFX900-NEXT:    v_mov_b32_e32 v2, 0114; GFX900-NEXT:    ;;#ASMSTART115; GFX900-NEXT:    ; def v[0:1]116; GFX900-NEXT:    ;;#ASMEND117; GFX900-NEXT:    global_store_dwordx3 v2, v[1:3], s[16:17]118; GFX900-NEXT:    s_waitcnt vmcnt(0)119; GFX900-NEXT:    s_setpc_b64 s[30:31]120;121; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_u_u:122; GFX90A:       ; %bb.0:123; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)124; GFX90A-NEXT:    ;;#ASMSTART125; GFX90A-NEXT:    ; def v[0:1]126; GFX90A-NEXT:    ;;#ASMEND127; GFX90A-NEXT:    v_mov_b32_e32 v2, 0128; GFX90A-NEXT:    v_mov_b32_e32 v0, v1129; GFX90A-NEXT:    global_store_dwordx3 v2, v[0:2], s[16:17]130; GFX90A-NEXT:    s_waitcnt vmcnt(0)131; GFX90A-NEXT:    s_setpc_b64 s[30:31]132;133; GFX942-LABEL: v_shuffle_v3i32_v2i32__3_u_u:134; GFX942:       ; %bb.0:135; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)136; GFX942-NEXT:    ;;#ASMSTART137; GFX942-NEXT:    ; def v[0:1]138; GFX942-NEXT:    ;;#ASMEND139; GFX942-NEXT:    v_mov_b32_e32 v2, 0140; GFX942-NEXT:    v_mov_b32_e32 v0, v1141; GFX942-NEXT:    global_store_dwordx3 v2, v[0:2], s[0:1]142; GFX942-NEXT:    s_waitcnt vmcnt(0)143; GFX942-NEXT:    s_setpc_b64 s[30:31]144  %vec0 = call <2 x i32> asm "; def $0", "=v"()145  %vec1 = call <2 x i32> asm "; def $0", "=v"()146  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 poison, i32 poison>147  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16148  ret void149}150 151define void @v_shuffle_v3i32_v2i32__3_0_u(ptr addrspace(1) inreg %ptr) {152; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_0_u:153; GFX900:       ; %bb.0:154; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)155; GFX900-NEXT:    v_mov_b32_e32 v4, 0156; GFX900-NEXT:    ;;#ASMSTART157; GFX900-NEXT:    ; def v[2:3]158; GFX900-NEXT:    ;;#ASMEND159; GFX900-NEXT:    ;;#ASMSTART160; GFX900-NEXT:    ; def v[0:1]161; GFX900-NEXT:    ;;#ASMEND162; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]163; GFX900-NEXT:    s_waitcnt vmcnt(0)164; GFX900-NEXT:    s_setpc_b64 s[30:31]165;166; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_0_u:167; GFX90A:       ; %bb.0:168; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)169; GFX90A-NEXT:    ;;#ASMSTART170; GFX90A-NEXT:    ; def v[2:3]171; GFX90A-NEXT:    ;;#ASMEND172; GFX90A-NEXT:    v_mov_b32_e32 v4, 0173; GFX90A-NEXT:    ;;#ASMSTART174; GFX90A-NEXT:    ; def v[0:1]175; GFX90A-NEXT:    ;;#ASMEND176; GFX90A-NEXT:    v_mov_b32_e32 v2, v3177; GFX90A-NEXT:    v_mov_b32_e32 v3, v0178; GFX90A-NEXT:    global_store_dwordx3 v4, v[2:4], s[16:17]179; GFX90A-NEXT:    s_waitcnt vmcnt(0)180; GFX90A-NEXT:    s_setpc_b64 s[30:31]181;182; GFX942-LABEL: v_shuffle_v3i32_v2i32__3_0_u:183; GFX942:       ; %bb.0:184; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)185; GFX942-NEXT:    ;;#ASMSTART186; GFX942-NEXT:    ; def v[2:3]187; GFX942-NEXT:    ;;#ASMEND188; GFX942-NEXT:    v_mov_b32_e32 v4, 0189; GFX942-NEXT:    ;;#ASMSTART190; GFX942-NEXT:    ; def v[0:1]191; GFX942-NEXT:    ;;#ASMEND192; GFX942-NEXT:    v_mov_b32_e32 v2, v3193; GFX942-NEXT:    v_mov_b32_e32 v3, v0194; GFX942-NEXT:    global_store_dwordx3 v4, v[2:4], s[0:1]195; GFX942-NEXT:    s_waitcnt vmcnt(0)196; GFX942-NEXT:    s_setpc_b64 s[30:31]197  %vec0 = call <2 x i32> asm "; def $0", "=v"()198  %vec1 = call <2 x i32> asm "; def $0", "=v"()199  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 0, i32 poison>200  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16201  ret void202}203 204define void @v_shuffle_v3i32_v2i32__3_1_u(ptr addrspace(1) inreg %ptr) {205; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_1_u:206; GFX900:       ; %bb.0:207; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)208; GFX900-NEXT:    v_mov_b32_e32 v3, 0209; GFX900-NEXT:    ;;#ASMSTART210; GFX900-NEXT:    ; def v[1:2]211; GFX900-NEXT:    ;;#ASMEND212; GFX900-NEXT:    ;;#ASMSTART213; GFX900-NEXT:    ; def v[0:1]214; GFX900-NEXT:    ;;#ASMEND215; GFX900-NEXT:    global_store_dwordx3 v3, v[1:3], s[16:17]216; GFX900-NEXT:    s_waitcnt vmcnt(0)217; GFX900-NEXT:    s_setpc_b64 s[30:31]218;219; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_1_u:220; GFX90A:       ; %bb.0:221; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)222; GFX90A-NEXT:    ;;#ASMSTART223; GFX90A-NEXT:    ; def v[0:1]224; GFX90A-NEXT:    ;;#ASMEND225; GFX90A-NEXT:    v_mov_b32_e32 v4, 0226; GFX90A-NEXT:    ;;#ASMSTART227; GFX90A-NEXT:    ; def v[2:3]228; GFX90A-NEXT:    ;;#ASMEND229; GFX90A-NEXT:    v_mov_b32_e32 v0, v3230; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]231; GFX90A-NEXT:    s_waitcnt vmcnt(0)232; GFX90A-NEXT:    s_setpc_b64 s[30:31]233;234; GFX942-LABEL: v_shuffle_v3i32_v2i32__3_1_u:235; GFX942:       ; %bb.0:236; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)237; GFX942-NEXT:    ;;#ASMSTART238; GFX942-NEXT:    ; def v[0:1]239; GFX942-NEXT:    ;;#ASMEND240; GFX942-NEXT:    v_mov_b32_e32 v4, 0241; GFX942-NEXT:    ;;#ASMSTART242; GFX942-NEXT:    ; def v[2:3]243; GFX942-NEXT:    ;;#ASMEND244; GFX942-NEXT:    s_nop 0245; GFX942-NEXT:    v_mov_b32_e32 v0, v3246; GFX942-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1]247; GFX942-NEXT:    s_waitcnt vmcnt(0)248; GFX942-NEXT:    s_setpc_b64 s[30:31]249  %vec0 = call <2 x i32> asm "; def $0", "=v"()250  %vec1 = call <2 x i32> asm "; def $0", "=v"()251  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 1, i32 poison>252  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16253  ret void254}255 256define void @v_shuffle_v3i32_v2i32__3_2_u(ptr addrspace(1) inreg %ptr) {257; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_2_u:258; GFX900:       ; %bb.0:259; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)260; GFX900-NEXT:    v_mov_b32_e32 v3, 0261; GFX900-NEXT:    ;;#ASMSTART262; GFX900-NEXT:    ; def v[0:1]263; GFX900-NEXT:    ;;#ASMEND264; GFX900-NEXT:    v_mov_b32_e32 v2, v0265; GFX900-NEXT:    global_store_dwordx3 v3, v[1:3], s[16:17]266; GFX900-NEXT:    s_waitcnt vmcnt(0)267; GFX900-NEXT:    s_setpc_b64 s[30:31]268;269; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_2_u:270; GFX90A:       ; %bb.0:271; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)272; GFX90A-NEXT:    v_mov_b32_e32 v2, 0273; GFX90A-NEXT:    ;;#ASMSTART274; GFX90A-NEXT:    ; def v[0:1]275; GFX90A-NEXT:    ;;#ASMEND276; GFX90A-NEXT:    v_mov_b32_e32 v4, v1277; GFX90A-NEXT:    v_mov_b32_e32 v5, v0278; GFX90A-NEXT:    global_store_dwordx3 v2, v[4:6], s[16:17]279; GFX90A-NEXT:    s_waitcnt vmcnt(0)280; GFX90A-NEXT:    s_setpc_b64 s[30:31]281;282; GFX942-LABEL: v_shuffle_v3i32_v2i32__3_2_u:283; GFX942:       ; %bb.0:284; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)285; GFX942-NEXT:    v_mov_b32_e32 v2, 0286; GFX942-NEXT:    ;;#ASMSTART287; GFX942-NEXT:    ; def v[0:1]288; GFX942-NEXT:    ;;#ASMEND289; GFX942-NEXT:    s_nop 0290; GFX942-NEXT:    v_mov_b32_e32 v4, v1291; GFX942-NEXT:    v_mov_b32_e32 v5, v0292; GFX942-NEXT:    global_store_dwordx3 v2, v[4:6], s[0:1]293; GFX942-NEXT:    s_waitcnt vmcnt(0)294; GFX942-NEXT:    s_setpc_b64 s[30:31]295  %vec0 = call <2 x i32> asm "; def $0", "=v"()296  %vec1 = call <2 x i32> asm "; def $0", "=v"()297  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 2, i32 poison>298  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16299  ret void300}301 302define void @v_shuffle_v3i32_v2i32__3_3_u(ptr addrspace(1) inreg %ptr) {303; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_3_u:304; GFX900:       ; %bb.0:305; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)306; GFX900-NEXT:    v_mov_b32_e32 v3, 0307; GFX900-NEXT:    ;;#ASMSTART308; GFX900-NEXT:    ; def v[0:1]309; GFX900-NEXT:    ;;#ASMEND310; GFX900-NEXT:    v_mov_b32_e32 v2, v1311; GFX900-NEXT:    global_store_dwordx3 v3, v[1:3], s[16:17]312; GFX900-NEXT:    s_waitcnt vmcnt(0)313; GFX900-NEXT:    s_setpc_b64 s[30:31]314;315; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_3_u:316; GFX90A:       ; %bb.0:317; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)318; GFX90A-NEXT:    ;;#ASMSTART319; GFX90A-NEXT:    ; def v[0:1]320; GFX90A-NEXT:    ;;#ASMEND321; GFX90A-NEXT:    v_mov_b32_e32 v2, 0322; GFX90A-NEXT:    v_mov_b32_e32 v0, v1323; GFX90A-NEXT:    global_store_dwordx3 v2, v[0:2], s[16:17]324; GFX90A-NEXT:    s_waitcnt vmcnt(0)325; GFX90A-NEXT:    s_setpc_b64 s[30:31]326;327; GFX942-LABEL: v_shuffle_v3i32_v2i32__3_3_u:328; GFX942:       ; %bb.0:329; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)330; GFX942-NEXT:    ;;#ASMSTART331; GFX942-NEXT:    ; def v[0:1]332; GFX942-NEXT:    ;;#ASMEND333; GFX942-NEXT:    v_mov_b32_e32 v2, 0334; GFX942-NEXT:    v_mov_b32_e32 v0, v1335; GFX942-NEXT:    global_store_dwordx3 v2, v[0:2], s[0:1]336; GFX942-NEXT:    s_waitcnt vmcnt(0)337; GFX942-NEXT:    s_setpc_b64 s[30:31]338  %vec0 = call <2 x i32> asm "; def $0", "=v"()339  %vec1 = call <2 x i32> asm "; def $0", "=v"()340  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 3, i32 poison>341  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16342  ret void343}344 345define void @v_shuffle_v3i32_v2i32__3_3_0(ptr addrspace(1) inreg %ptr) {346; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_3_0:347; GFX900:       ; %bb.0:348; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)349; GFX900-NEXT:    v_mov_b32_e32 v5, 0350; GFX900-NEXT:    ;;#ASMSTART351; GFX900-NEXT:    ; def v[0:1]352; GFX900-NEXT:    ;;#ASMEND353; GFX900-NEXT:    v_mov_b32_e32 v2, v1354; GFX900-NEXT:    ;;#ASMSTART355; GFX900-NEXT:    ; def v[3:4]356; GFX900-NEXT:    ;;#ASMEND357; GFX900-NEXT:    global_store_dwordx3 v5, v[1:3], s[16:17]358; GFX900-NEXT:    s_waitcnt vmcnt(0)359; GFX900-NEXT:    s_setpc_b64 s[30:31]360;361; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_3_0:362; GFX90A:       ; %bb.0:363; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)364; GFX90A-NEXT:    ;;#ASMSTART365; GFX90A-NEXT:    ; def v[0:1]366; GFX90A-NEXT:    ;;#ASMEND367; GFX90A-NEXT:    v_mov_b32_e32 v4, 0368; GFX90A-NEXT:    v_mov_b32_e32 v0, v1369; GFX90A-NEXT:    ;;#ASMSTART370; GFX90A-NEXT:    ; def v[2:3]371; GFX90A-NEXT:    ;;#ASMEND372; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]373; GFX90A-NEXT:    s_waitcnt vmcnt(0)374; GFX90A-NEXT:    s_setpc_b64 s[30:31]375;376; GFX942-LABEL: v_shuffle_v3i32_v2i32__3_3_0:377; GFX942:       ; %bb.0:378; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)379; GFX942-NEXT:    ;;#ASMSTART380; GFX942-NEXT:    ; def v[0:1]381; GFX942-NEXT:    ;;#ASMEND382; GFX942-NEXT:    v_mov_b32_e32 v4, 0383; GFX942-NEXT:    v_mov_b32_e32 v0, v1384; GFX942-NEXT:    ;;#ASMSTART385; GFX942-NEXT:    ; def v[2:3]386; GFX942-NEXT:    ;;#ASMEND387; GFX942-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1]388; GFX942-NEXT:    s_waitcnt vmcnt(0)389; GFX942-NEXT:    s_setpc_b64 s[30:31]390  %vec0 = call <2 x i32> asm "; def $0", "=v"()391  %vec1 = call <2 x i32> asm "; def $0", "=v"()392  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 3, i32 0>393  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16394  ret void395}396 397define void @v_shuffle_v3i32_v2i32__3_3_1(ptr addrspace(1) inreg %ptr) {398; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_3_1:399; GFX900:       ; %bb.0:400; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)401; GFX900-NEXT:    ;;#ASMSTART402; GFX900-NEXT:    ; def v[2:3]403; GFX900-NEXT:    ;;#ASMEND404; GFX900-NEXT:    v_mov_b32_e32 v4, 0405; GFX900-NEXT:    ;;#ASMSTART406; GFX900-NEXT:    ; def v[0:1]407; GFX900-NEXT:    ;;#ASMEND408; GFX900-NEXT:    v_mov_b32_e32 v2, v1409; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]410; GFX900-NEXT:    s_waitcnt vmcnt(0)411; GFX900-NEXT:    s_setpc_b64 s[30:31]412;413; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_3_1:414; GFX90A:       ; %bb.0:415; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)416; GFX90A-NEXT:    ;;#ASMSTART417; GFX90A-NEXT:    ; def v[2:3]418; GFX90A-NEXT:    ;;#ASMEND419; GFX90A-NEXT:    ;;#ASMSTART420; GFX90A-NEXT:    ; def v[0:1]421; GFX90A-NEXT:    ;;#ASMEND422; GFX90A-NEXT:    v_mov_b32_e32 v4, 0423; GFX90A-NEXT:    v_mov_b32_e32 v0, v1424; GFX90A-NEXT:    v_mov_b32_e32 v2, v3425; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]426; GFX90A-NEXT:    s_waitcnt vmcnt(0)427; GFX90A-NEXT:    s_setpc_b64 s[30:31]428;429; GFX942-LABEL: v_shuffle_v3i32_v2i32__3_3_1:430; GFX942:       ; %bb.0:431; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)432; GFX942-NEXT:    ;;#ASMSTART433; GFX942-NEXT:    ; def v[2:3]434; GFX942-NEXT:    ;;#ASMEND435; GFX942-NEXT:    ;;#ASMSTART436; GFX942-NEXT:    ; def v[0:1]437; GFX942-NEXT:    ;;#ASMEND438; GFX942-NEXT:    v_mov_b32_e32 v4, 0439; GFX942-NEXT:    v_mov_b32_e32 v0, v1440; GFX942-NEXT:    v_mov_b32_e32 v2, v3441; GFX942-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1]442; GFX942-NEXT:    s_waitcnt vmcnt(0)443; GFX942-NEXT:    s_setpc_b64 s[30:31]444  %vec0 = call <2 x i32> asm "; def $0", "=v"()445  %vec1 = call <2 x i32> asm "; def $0", "=v"()446  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 3, i32 1>447  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16448  ret void449}450 451define void @v_shuffle_v3i32_v2i32__3_3_2(ptr addrspace(1) inreg %ptr) {452; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_3_2:453; GFX900:       ; %bb.0:454; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)455; GFX900-NEXT:    v_mov_b32_e32 v4, 0456; GFX900-NEXT:    ;;#ASMSTART457; GFX900-NEXT:    ; def v[0:1]458; GFX900-NEXT:    ;;#ASMEND459; GFX900-NEXT:    v_mov_b32_e32 v2, v1460; GFX900-NEXT:    v_mov_b32_e32 v3, v0461; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]462; GFX900-NEXT:    s_waitcnt vmcnt(0)463; GFX900-NEXT:    s_setpc_b64 s[30:31]464;465; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_3_2:466; GFX90A:       ; %bb.0:467; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)468; GFX90A-NEXT:    v_mov_b32_e32 v4, 0469; GFX90A-NEXT:    ;;#ASMSTART470; GFX90A-NEXT:    ; def v[2:3]471; GFX90A-NEXT:    ;;#ASMEND472; GFX90A-NEXT:    v_mov_b32_e32 v0, v3473; GFX90A-NEXT:    v_mov_b32_e32 v1, v3474; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]475; GFX90A-NEXT:    s_waitcnt vmcnt(0)476; GFX90A-NEXT:    s_setpc_b64 s[30:31]477;478; GFX942-LABEL: v_shuffle_v3i32_v2i32__3_3_2:479; GFX942:       ; %bb.0:480; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)481; GFX942-NEXT:    v_mov_b32_e32 v4, 0482; GFX942-NEXT:    ;;#ASMSTART483; GFX942-NEXT:    ; def v[2:3]484; GFX942-NEXT:    ;;#ASMEND485; GFX942-NEXT:    s_nop 0486; GFX942-NEXT:    v_mov_b32_e32 v0, v3487; GFX942-NEXT:    v_mov_b32_e32 v1, v3488; GFX942-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1]489; GFX942-NEXT:    s_waitcnt vmcnt(0)490; GFX942-NEXT:    s_setpc_b64 s[30:31]491  %vec0 = call <2 x i32> asm "; def $0", "=v"()492  %vec1 = call <2 x i32> asm "; def $0", "=v"()493  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 3, i32 2>494  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16495  ret void496}497 498define void @v_shuffle_v3i32_v2i32__3_3_3(ptr addrspace(1) inreg %ptr) {499; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_3_3:500; GFX900:       ; %bb.0:501; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)502; GFX900-NEXT:    v_mov_b32_e32 v4, 0503; GFX900-NEXT:    ;;#ASMSTART504; GFX900-NEXT:    ; def v[0:1]505; GFX900-NEXT:    ;;#ASMEND506; GFX900-NEXT:    v_mov_b32_e32 v2, v1507; GFX900-NEXT:    v_mov_b32_e32 v3, v1508; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]509; GFX900-NEXT:    s_waitcnt vmcnt(0)510; GFX900-NEXT:    s_setpc_b64 s[30:31]511;512; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_3_3:513; GFX90A:       ; %bb.0:514; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)515; GFX90A-NEXT:    ;;#ASMSTART516; GFX90A-NEXT:    ; def v[0:1]517; GFX90A-NEXT:    ;;#ASMEND518; GFX90A-NEXT:    v_mov_b32_e32 v3, 0519; GFX90A-NEXT:    v_mov_b32_e32 v0, v1520; GFX90A-NEXT:    v_mov_b32_e32 v2, v1521; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]522; GFX90A-NEXT:    s_waitcnt vmcnt(0)523; GFX90A-NEXT:    s_setpc_b64 s[30:31]524;525; GFX942-LABEL: v_shuffle_v3i32_v2i32__3_3_3:526; GFX942:       ; %bb.0:527; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)528; GFX942-NEXT:    ;;#ASMSTART529; GFX942-NEXT:    ; def v[0:1]530; GFX942-NEXT:    ;;#ASMEND531; GFX942-NEXT:    v_mov_b32_e32 v3, 0532; GFX942-NEXT:    v_mov_b32_e32 v0, v1533; GFX942-NEXT:    v_mov_b32_e32 v2, v1534; GFX942-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1]535; GFX942-NEXT:    s_waitcnt vmcnt(0)536; GFX942-NEXT:    s_setpc_b64 s[30:31]537  %vec0 = call <2 x i32> asm "; def $0", "=v"()538  %vec1 = call <2 x i32> asm "; def $0", "=v"()539  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 3, i32 3>540  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16541  ret void542}543 544define void @v_shuffle_v3i32_v2i32__u_0_0(ptr addrspace(1) inreg %ptr) {545; GFX900-LABEL: v_shuffle_v3i32_v2i32__u_0_0:546; GFX900:       ; %bb.0:547; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)548; GFX900-NEXT:    ;;#ASMSTART549; GFX900-NEXT:    ; def v[1:2]550; GFX900-NEXT:    ;;#ASMEND551; GFX900-NEXT:    v_mov_b32_e32 v0, 0552; GFX900-NEXT:    v_mov_b32_e32 v2, v1553; GFX900-NEXT:    global_store_dwordx3 v0, v[0:2], s[16:17]554; GFX900-NEXT:    s_waitcnt vmcnt(0)555; GFX900-NEXT:    s_setpc_b64 s[30:31]556;557; GFX90A-LABEL: v_shuffle_v3i32_v2i32__u_0_0:558; GFX90A:       ; %bb.0:559; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)560; GFX90A-NEXT:    v_mov_b32_e32 v0, 0561; GFX90A-NEXT:    ;;#ASMSTART562; GFX90A-NEXT:    ; def v[2:3]563; GFX90A-NEXT:    ;;#ASMEND564; GFX90A-NEXT:    v_mov_b32_e32 v1, v2565; GFX90A-NEXT:    global_store_dwordx3 v0, v[0:2], s[16:17]566; GFX90A-NEXT:    s_waitcnt vmcnt(0)567; GFX90A-NEXT:    s_setpc_b64 s[30:31]568;569; GFX942-LABEL: v_shuffle_v3i32_v2i32__u_0_0:570; GFX942:       ; %bb.0:571; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)572; GFX942-NEXT:    v_mov_b32_e32 v0, 0573; GFX942-NEXT:    ;;#ASMSTART574; GFX942-NEXT:    ; def v[2:3]575; GFX942-NEXT:    ;;#ASMEND576; GFX942-NEXT:    s_nop 0577; GFX942-NEXT:    v_mov_b32_e32 v1, v2578; GFX942-NEXT:    global_store_dwordx3 v0, v[0:2], s[0:1]579; GFX942-NEXT:    s_waitcnt vmcnt(0)580; GFX942-NEXT:    s_setpc_b64 s[30:31]581  %vec0 = call <2 x i32> asm "; def $0", "=v"()582  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 poison, i32 0, i32 0>583  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16584  ret void585}586 587define void @v_shuffle_v3i32_v2i32__0_0_0(ptr addrspace(1) inreg %ptr) {588; GFX900-LABEL: v_shuffle_v3i32_v2i32__0_0_0:589; GFX900:       ; %bb.0:590; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)591; GFX900-NEXT:    ;;#ASMSTART592; GFX900-NEXT:    ; def v[0:1]593; GFX900-NEXT:    ;;#ASMEND594; GFX900-NEXT:    v_mov_b32_e32 v3, 0595; GFX900-NEXT:    v_mov_b32_e32 v1, v0596; GFX900-NEXT:    v_mov_b32_e32 v2, v0597; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]598; GFX900-NEXT:    s_waitcnt vmcnt(0)599; GFX900-NEXT:    s_setpc_b64 s[30:31]600;601; GFX90A-LABEL: v_shuffle_v3i32_v2i32__0_0_0:602; GFX90A:       ; %bb.0:603; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)604; GFX90A-NEXT:    ;;#ASMSTART605; GFX90A-NEXT:    ; def v[0:1]606; GFX90A-NEXT:    ;;#ASMEND607; GFX90A-NEXT:    v_mov_b32_e32 v3, 0608; GFX90A-NEXT:    v_mov_b32_e32 v1, v0609; GFX90A-NEXT:    v_mov_b32_e32 v2, v0610; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]611; GFX90A-NEXT:    s_waitcnt vmcnt(0)612; GFX90A-NEXT:    s_setpc_b64 s[30:31]613;614; GFX942-LABEL: v_shuffle_v3i32_v2i32__0_0_0:615; GFX942:       ; %bb.0:616; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)617; GFX942-NEXT:    ;;#ASMSTART618; GFX942-NEXT:    ; def v[0:1]619; GFX942-NEXT:    ;;#ASMEND620; GFX942-NEXT:    v_mov_b32_e32 v3, 0621; GFX942-NEXT:    v_mov_b32_e32 v1, v0622; GFX942-NEXT:    v_mov_b32_e32 v2, v0623; GFX942-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1]624; GFX942-NEXT:    s_waitcnt vmcnt(0)625; GFX942-NEXT:    s_setpc_b64 s[30:31]626  %vec0 = call <2 x i32> asm "; def $0", "=v"()627  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> zeroinitializer628  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16629  ret void630}631 632define void @v_shuffle_v3i32_v2i32__1_0_0(ptr addrspace(1) inreg %ptr) {633; GFX900-LABEL: v_shuffle_v3i32_v2i32__1_0_0:634; GFX900:       ; %bb.0:635; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)636; GFX900-NEXT:    v_mov_b32_e32 v4, 0637; GFX900-NEXT:    ;;#ASMSTART638; GFX900-NEXT:    ; def v[0:1]639; GFX900-NEXT:    ;;#ASMEND640; GFX900-NEXT:    v_mov_b32_e32 v2, v0641; GFX900-NEXT:    v_mov_b32_e32 v3, v0642; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]643; GFX900-NEXT:    s_waitcnt vmcnt(0)644; GFX900-NEXT:    s_setpc_b64 s[30:31]645;646; GFX90A-LABEL: v_shuffle_v3i32_v2i32__1_0_0:647; GFX90A:       ; %bb.0:648; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)649; GFX90A-NEXT:    v_mov_b32_e32 v4, 0650; GFX90A-NEXT:    ;;#ASMSTART651; GFX90A-NEXT:    ; def v[2:3]652; GFX90A-NEXT:    ;;#ASMEND653; GFX90A-NEXT:    v_mov_b32_e32 v0, v3654; GFX90A-NEXT:    v_mov_b32_e32 v1, v2655; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]656; GFX90A-NEXT:    s_waitcnt vmcnt(0)657; GFX90A-NEXT:    s_setpc_b64 s[30:31]658;659; GFX942-LABEL: v_shuffle_v3i32_v2i32__1_0_0:660; GFX942:       ; %bb.0:661; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)662; GFX942-NEXT:    v_mov_b32_e32 v4, 0663; GFX942-NEXT:    ;;#ASMSTART664; GFX942-NEXT:    ; def v[2:3]665; GFX942-NEXT:    ;;#ASMEND666; GFX942-NEXT:    s_nop 0667; GFX942-NEXT:    v_mov_b32_e32 v0, v3668; GFX942-NEXT:    v_mov_b32_e32 v1, v2669; GFX942-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1]670; GFX942-NEXT:    s_waitcnt vmcnt(0)671; GFX942-NEXT:    s_setpc_b64 s[30:31]672  %vec0 = call <2 x i32> asm "; def $0", "=v"()673  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 1, i32 0, i32 0>674  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16675  ret void676}677 678define void @v_shuffle_v3i32_v2i32__2_0_0(ptr addrspace(1) inreg %ptr) {679; GFX900-LABEL: v_shuffle_v3i32_v2i32__2_0_0:680; GFX900:       ; %bb.0:681; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)682; GFX900-NEXT:    ;;#ASMSTART683; GFX900-NEXT:    ; def v[1:2]684; GFX900-NEXT:    ;;#ASMEND685; GFX900-NEXT:    v_mov_b32_e32 v0, 0686; GFX900-NEXT:    v_mov_b32_e32 v2, v1687; GFX900-NEXT:    global_store_dwordx3 v0, v[0:2], s[16:17]688; GFX900-NEXT:    s_waitcnt vmcnt(0)689; GFX900-NEXT:    s_setpc_b64 s[30:31]690;691; GFX90A-LABEL: v_shuffle_v3i32_v2i32__2_0_0:692; GFX90A:       ; %bb.0:693; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)694; GFX90A-NEXT:    v_mov_b32_e32 v0, 0695; GFX90A-NEXT:    ;;#ASMSTART696; GFX90A-NEXT:    ; def v[2:3]697; GFX90A-NEXT:    ;;#ASMEND698; GFX90A-NEXT:    v_mov_b32_e32 v1, v2699; GFX90A-NEXT:    global_store_dwordx3 v0, v[0:2], s[16:17]700; GFX90A-NEXT:    s_waitcnt vmcnt(0)701; GFX90A-NEXT:    s_setpc_b64 s[30:31]702;703; GFX942-LABEL: v_shuffle_v3i32_v2i32__2_0_0:704; GFX942:       ; %bb.0:705; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)706; GFX942-NEXT:    v_mov_b32_e32 v0, 0707; GFX942-NEXT:    ;;#ASMSTART708; GFX942-NEXT:    ; def v[2:3]709; GFX942-NEXT:    ;;#ASMEND710; GFX942-NEXT:    s_nop 0711; GFX942-NEXT:    v_mov_b32_e32 v1, v2712; GFX942-NEXT:    global_store_dwordx3 v0, v[0:2], s[0:1]713; GFX942-NEXT:    s_waitcnt vmcnt(0)714; GFX942-NEXT:    s_setpc_b64 s[30:31]715  %vec0 = call <2 x i32> asm "; def $0", "=v"()716  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 2, i32 0, i32 0>717  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16718  ret void719}720 721define void @v_shuffle_v3i32_v2i32__3_0_0(ptr addrspace(1) inreg %ptr) {722; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_0_0:723; GFX900:       ; %bb.0:724; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)725; GFX900-NEXT:    ;;#ASMSTART726; GFX900-NEXT:    ; def v[2:3]727; GFX900-NEXT:    ;;#ASMEND728; GFX900-NEXT:    v_mov_b32_e32 v4, 0729; GFX900-NEXT:    v_mov_b32_e32 v3, v2730; GFX900-NEXT:    ;;#ASMSTART731; GFX900-NEXT:    ; def v[0:1]732; GFX900-NEXT:    ;;#ASMEND733; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]734; GFX900-NEXT:    s_waitcnt vmcnt(0)735; GFX900-NEXT:    s_setpc_b64 s[30:31]736;737; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_0_0:738; GFX90A:       ; %bb.0:739; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)740; GFX90A-NEXT:    ;;#ASMSTART741; GFX90A-NEXT:    ; def v[0:1]742; GFX90A-NEXT:    ;;#ASMEND743; GFX90A-NEXT:    v_mov_b32_e32 v4, 0744; GFX90A-NEXT:    ;;#ASMSTART745; GFX90A-NEXT:    ; def v[2:3]746; GFX90A-NEXT:    ;;#ASMEND747; GFX90A-NEXT:    v_mov_b32_e32 v0, v1748; GFX90A-NEXT:    v_mov_b32_e32 v1, v2749; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]750; GFX90A-NEXT:    s_waitcnt vmcnt(0)751; GFX90A-NEXT:    s_setpc_b64 s[30:31]752;753; GFX942-LABEL: v_shuffle_v3i32_v2i32__3_0_0:754; GFX942:       ; %bb.0:755; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)756; GFX942-NEXT:    ;;#ASMSTART757; GFX942-NEXT:    ; def v[0:1]758; GFX942-NEXT:    ;;#ASMEND759; GFX942-NEXT:    v_mov_b32_e32 v4, 0760; GFX942-NEXT:    ;;#ASMSTART761; GFX942-NEXT:    ; def v[2:3]762; GFX942-NEXT:    ;;#ASMEND763; GFX942-NEXT:    v_mov_b32_e32 v0, v1764; GFX942-NEXT:    v_mov_b32_e32 v1, v2765; GFX942-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1]766; GFX942-NEXT:    s_waitcnt vmcnt(0)767; GFX942-NEXT:    s_setpc_b64 s[30:31]768  %vec0 = call <2 x i32> asm "; def $0", "=v"()769  %vec1 = call <2 x i32> asm "; def $0", "=v"()770  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 0, i32 0>771  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16772  ret void773}774 775define void @v_shuffle_v3i32_v2i32__3_u_0(ptr addrspace(1) inreg %ptr) {776; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_u_0:777; GFX900:       ; %bb.0:778; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)779; GFX900-NEXT:    v_mov_b32_e32 v2, 0780; GFX900-NEXT:    ;;#ASMSTART781; GFX900-NEXT:    ; def v[3:4]782; GFX900-NEXT:    ;;#ASMEND783; GFX900-NEXT:    ;;#ASMSTART784; GFX900-NEXT:    ; def v[0:1]785; GFX900-NEXT:    ;;#ASMEND786; GFX900-NEXT:    global_store_dwordx3 v2, v[1:3], s[16:17]787; GFX900-NEXT:    s_waitcnt vmcnt(0)788; GFX900-NEXT:    s_setpc_b64 s[30:31]789;790; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_u_0:791; GFX90A:       ; %bb.0:792; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)793; GFX90A-NEXT:    ;;#ASMSTART794; GFX90A-NEXT:    ; def v[0:1]795; GFX90A-NEXT:    ;;#ASMEND796; GFX90A-NEXT:    v_mov_b32_e32 v4, 0797; GFX90A-NEXT:    v_mov_b32_e32 v0, v1798; GFX90A-NEXT:    ;;#ASMSTART799; GFX90A-NEXT:    ; def v[2:3]800; GFX90A-NEXT:    ;;#ASMEND801; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]802; GFX90A-NEXT:    s_waitcnt vmcnt(0)803; GFX90A-NEXT:    s_setpc_b64 s[30:31]804;805; GFX942-LABEL: v_shuffle_v3i32_v2i32__3_u_0:806; GFX942:       ; %bb.0:807; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)808; GFX942-NEXT:    ;;#ASMSTART809; GFX942-NEXT:    ; def v[0:1]810; GFX942-NEXT:    ;;#ASMEND811; GFX942-NEXT:    v_mov_b32_e32 v4, 0812; GFX942-NEXT:    v_mov_b32_e32 v0, v1813; GFX942-NEXT:    ;;#ASMSTART814; GFX942-NEXT:    ; def v[2:3]815; GFX942-NEXT:    ;;#ASMEND816; GFX942-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1]817; GFX942-NEXT:    s_waitcnt vmcnt(0)818; GFX942-NEXT:    s_setpc_b64 s[30:31]819  %vec0 = call <2 x i32> asm "; def $0", "=v"()820  %vec1 = call <2 x i32> asm "; def $0", "=v"()821  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 poison, i32 0>822  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16823  ret void824}825 826define void @v_shuffle_v3i32_v2i32__3_1_0(ptr addrspace(1) inreg %ptr) {827; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_1_0:828; GFX900:       ; %bb.0:829; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)830; GFX900-NEXT:    v_mov_b32_e32 v5, 0831; GFX900-NEXT:    ;;#ASMSTART832; GFX900-NEXT:    ; def v[3:4]833; GFX900-NEXT:    ;;#ASMEND834; GFX900-NEXT:    v_mov_b32_e32 v2, v4835; GFX900-NEXT:    ;;#ASMSTART836; GFX900-NEXT:    ; def v[0:1]837; GFX900-NEXT:    ;;#ASMEND838; GFX900-NEXT:    global_store_dwordx3 v5, v[1:3], s[16:17]839; GFX900-NEXT:    s_waitcnt vmcnt(0)840; GFX900-NEXT:    s_setpc_b64 s[30:31]841;842; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_1_0:843; GFX90A:       ; %bb.0:844; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)845; GFX90A-NEXT:    ;;#ASMSTART846; GFX90A-NEXT:    ; def v[0:1]847; GFX90A-NEXT:    ;;#ASMEND848; GFX90A-NEXT:    v_mov_b32_e32 v4, 0849; GFX90A-NEXT:    ;;#ASMSTART850; GFX90A-NEXT:    ; def v[2:3]851; GFX90A-NEXT:    ;;#ASMEND852; GFX90A-NEXT:    v_mov_b32_e32 v0, v1853; GFX90A-NEXT:    v_mov_b32_e32 v1, v3854; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]855; GFX90A-NEXT:    s_waitcnt vmcnt(0)856; GFX90A-NEXT:    s_setpc_b64 s[30:31]857;858; GFX942-LABEL: v_shuffle_v3i32_v2i32__3_1_0:859; GFX942:       ; %bb.0:860; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)861; GFX942-NEXT:    ;;#ASMSTART862; GFX942-NEXT:    ; def v[0:1]863; GFX942-NEXT:    ;;#ASMEND864; GFX942-NEXT:    v_mov_b32_e32 v4, 0865; GFX942-NEXT:    ;;#ASMSTART866; GFX942-NEXT:    ; def v[2:3]867; GFX942-NEXT:    ;;#ASMEND868; GFX942-NEXT:    v_mov_b32_e32 v0, v1869; GFX942-NEXT:    v_mov_b32_e32 v1, v3870; GFX942-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1]871; GFX942-NEXT:    s_waitcnt vmcnt(0)872; GFX942-NEXT:    s_setpc_b64 s[30:31]873  %vec0 = call <2 x i32> asm "; def $0", "=v"()874  %vec1 = call <2 x i32> asm "; def $0", "=v"()875  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 1, i32 0>876  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16877  ret void878}879 880define void @v_shuffle_v3i32_v2i32__3_2_0(ptr addrspace(1) inreg %ptr) {881; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_2_0:882; GFX900:       ; %bb.0:883; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)884; GFX900-NEXT:    v_mov_b32_e32 v5, 0885; GFX900-NEXT:    ;;#ASMSTART886; GFX900-NEXT:    ; def v[0:1]887; GFX900-NEXT:    ;;#ASMEND888; GFX900-NEXT:    v_mov_b32_e32 v2, v0889; GFX900-NEXT:    ;;#ASMSTART890; GFX900-NEXT:    ; def v[3:4]891; GFX900-NEXT:    ;;#ASMEND892; GFX900-NEXT:    global_store_dwordx3 v5, v[1:3], s[16:17]893; GFX900-NEXT:    s_waitcnt vmcnt(0)894; GFX900-NEXT:    s_setpc_b64 s[30:31]895;896; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_2_0:897; GFX90A:       ; %bb.0:898; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)899; GFX90A-NEXT:    v_mov_b32_e32 v6, 0900; GFX90A-NEXT:    ;;#ASMSTART901; GFX90A-NEXT:    ; def v[4:5]902; GFX90A-NEXT:    ;;#ASMEND903; GFX90A-NEXT:    v_mov_b32_e32 v0, v5904; GFX90A-NEXT:    v_mov_b32_e32 v1, v4905; GFX90A-NEXT:    ;;#ASMSTART906; GFX90A-NEXT:    ; def v[2:3]907; GFX90A-NEXT:    ;;#ASMEND908; GFX90A-NEXT:    global_store_dwordx3 v6, v[0:2], s[16:17]909; GFX90A-NEXT:    s_waitcnt vmcnt(0)910; GFX90A-NEXT:    s_setpc_b64 s[30:31]911;912; GFX942-LABEL: v_shuffle_v3i32_v2i32__3_2_0:913; GFX942:       ; %bb.0:914; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)915; GFX942-NEXT:    v_mov_b32_e32 v6, 0916; GFX942-NEXT:    ;;#ASMSTART917; GFX942-NEXT:    ; def v[4:5]918; GFX942-NEXT:    ;;#ASMEND919; GFX942-NEXT:    ;;#ASMSTART920; GFX942-NEXT:    ; def v[2:3]921; GFX942-NEXT:    ;;#ASMEND922; GFX942-NEXT:    s_nop 0923; GFX942-NEXT:    v_mov_b32_e32 v0, v5924; GFX942-NEXT:    v_mov_b32_e32 v1, v4925; GFX942-NEXT:    global_store_dwordx3 v6, v[0:2], s[0:1]926; GFX942-NEXT:    s_waitcnt vmcnt(0)927; GFX942-NEXT:    s_setpc_b64 s[30:31]928  %vec0 = call <2 x i32> asm "; def $0", "=v"()929  %vec1 = call <2 x i32> asm "; def $0", "=v"()930  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 2, i32 0>931  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16932  ret void933}934 935define void @v_shuffle_v3i32_v2i32__u_1_1(ptr addrspace(1) inreg %ptr) {936; GFX900-LABEL: v_shuffle_v3i32_v2i32__u_1_1:937; GFX900:       ; %bb.0:938; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)939; GFX900-NEXT:    v_mov_b32_e32 v3, 0940; GFX900-NEXT:    ;;#ASMSTART941; GFX900-NEXT:    ; def v[0:1]942; GFX900-NEXT:    ;;#ASMEND943; GFX900-NEXT:    v_mov_b32_e32 v2, v1944; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]945; GFX900-NEXT:    s_waitcnt vmcnt(0)946; GFX900-NEXT:    s_setpc_b64 s[30:31]947;948; GFX90A-LABEL: v_shuffle_v3i32_v2i32__u_1_1:949; GFX90A:       ; %bb.0:950; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)951; GFX90A-NEXT:    v_mov_b32_e32 v3, 0952; GFX90A-NEXT:    ;;#ASMSTART953; GFX90A-NEXT:    ; def v[0:1]954; GFX90A-NEXT:    ;;#ASMEND955; GFX90A-NEXT:    v_mov_b32_e32 v2, v1956; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]957; GFX90A-NEXT:    s_waitcnt vmcnt(0)958; GFX90A-NEXT:    s_setpc_b64 s[30:31]959;960; GFX942-LABEL: v_shuffle_v3i32_v2i32__u_1_1:961; GFX942:       ; %bb.0:962; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)963; GFX942-NEXT:    v_mov_b32_e32 v3, 0964; GFX942-NEXT:    ;;#ASMSTART965; GFX942-NEXT:    ; def v[0:1]966; GFX942-NEXT:    ;;#ASMEND967; GFX942-NEXT:    s_nop 0968; GFX942-NEXT:    v_mov_b32_e32 v2, v1969; GFX942-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1]970; GFX942-NEXT:    s_waitcnt vmcnt(0)971; GFX942-NEXT:    s_setpc_b64 s[30:31]972  %vec0 = call <2 x i32> asm "; def $0", "=v"()973  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 poison, i32 1, i32 1>974  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 16975  ret void976}977 978define void @v_shuffle_v3i32_v2i32__0_1_1(ptr addrspace(1) inreg %ptr) {979; GFX900-LABEL: v_shuffle_v3i32_v2i32__0_1_1:980; GFX900:       ; %bb.0:981; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)982; GFX900-NEXT:    v_mov_b32_e32 v3, 0983; GFX900-NEXT:    ;;#ASMSTART984; GFX900-NEXT:    ; def v[0:1]985; GFX900-NEXT:    ;;#ASMEND986; GFX900-NEXT:    v_mov_b32_e32 v2, v1987; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]988; GFX900-NEXT:    s_waitcnt vmcnt(0)989; GFX900-NEXT:    s_setpc_b64 s[30:31]990;991; GFX90A-LABEL: v_shuffle_v3i32_v2i32__0_1_1:992; GFX90A:       ; %bb.0:993; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)994; GFX90A-NEXT:    v_mov_b32_e32 v3, 0995; GFX90A-NEXT:    ;;#ASMSTART996; GFX90A-NEXT:    ; def v[0:1]997; GFX90A-NEXT:    ;;#ASMEND998; GFX90A-NEXT:    v_mov_b32_e32 v2, v1999; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]1000; GFX90A-NEXT:    s_waitcnt vmcnt(0)1001; GFX90A-NEXT:    s_setpc_b64 s[30:31]1002;1003; GFX942-LABEL: v_shuffle_v3i32_v2i32__0_1_1:1004; GFX942:       ; %bb.0:1005; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1006; GFX942-NEXT:    v_mov_b32_e32 v3, 01007; GFX942-NEXT:    ;;#ASMSTART1008; GFX942-NEXT:    ; def v[0:1]1009; GFX942-NEXT:    ;;#ASMEND1010; GFX942-NEXT:    s_nop 01011; GFX942-NEXT:    v_mov_b32_e32 v2, v11012; GFX942-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1]1013; GFX942-NEXT:    s_waitcnt vmcnt(0)1014; GFX942-NEXT:    s_setpc_b64 s[30:31]1015  %vec0 = call <2 x i32> asm "; def $0", "=v"()1016  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 0, i32 1, i32 1>1017  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161018  ret void1019}1020 1021define void @v_shuffle_v3i32_v2i32__1_1_1(ptr addrspace(1) inreg %ptr) {1022; GFX900-LABEL: v_shuffle_v3i32_v2i32__1_1_1:1023; GFX900:       ; %bb.0:1024; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1025; GFX900-NEXT:    v_mov_b32_e32 v4, 01026; GFX900-NEXT:    ;;#ASMSTART1027; GFX900-NEXT:    ; def v[0:1]1028; GFX900-NEXT:    ;;#ASMEND1029; GFX900-NEXT:    v_mov_b32_e32 v2, v11030; GFX900-NEXT:    v_mov_b32_e32 v3, v11031; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]1032; GFX900-NEXT:    s_waitcnt vmcnt(0)1033; GFX900-NEXT:    s_setpc_b64 s[30:31]1034;1035; GFX90A-LABEL: v_shuffle_v3i32_v2i32__1_1_1:1036; GFX90A:       ; %bb.0:1037; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1038; GFX90A-NEXT:    ;;#ASMSTART1039; GFX90A-NEXT:    ; def v[0:1]1040; GFX90A-NEXT:    ;;#ASMEND1041; GFX90A-NEXT:    v_mov_b32_e32 v3, 01042; GFX90A-NEXT:    v_mov_b32_e32 v0, v11043; GFX90A-NEXT:    v_mov_b32_e32 v2, v11044; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]1045; GFX90A-NEXT:    s_waitcnt vmcnt(0)1046; GFX90A-NEXT:    s_setpc_b64 s[30:31]1047;1048; GFX942-LABEL: v_shuffle_v3i32_v2i32__1_1_1:1049; GFX942:       ; %bb.0:1050; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1051; GFX942-NEXT:    ;;#ASMSTART1052; GFX942-NEXT:    ; def v[0:1]1053; GFX942-NEXT:    ;;#ASMEND1054; GFX942-NEXT:    v_mov_b32_e32 v3, 01055; GFX942-NEXT:    v_mov_b32_e32 v0, v11056; GFX942-NEXT:    v_mov_b32_e32 v2, v11057; GFX942-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1]1058; GFX942-NEXT:    s_waitcnt vmcnt(0)1059; GFX942-NEXT:    s_setpc_b64 s[30:31]1060  %vec0 = call <2 x i32> asm "; def $0", "=v"()1061  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 1, i32 1, i32 1>1062  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161063  ret void1064}1065 1066define void @v_shuffle_v3i32_v2i32__2_1_1(ptr addrspace(1) inreg %ptr) {1067; GFX900-LABEL: v_shuffle_v3i32_v2i32__2_1_1:1068; GFX900:       ; %bb.0:1069; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1070; GFX900-NEXT:    v_mov_b32_e32 v3, 01071; GFX900-NEXT:    ;;#ASMSTART1072; GFX900-NEXT:    ; def v[0:1]1073; GFX900-NEXT:    ;;#ASMEND1074; GFX900-NEXT:    v_mov_b32_e32 v2, v11075; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]1076; GFX900-NEXT:    s_waitcnt vmcnt(0)1077; GFX900-NEXT:    s_setpc_b64 s[30:31]1078;1079; GFX90A-LABEL: v_shuffle_v3i32_v2i32__2_1_1:1080; GFX90A:       ; %bb.0:1081; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1082; GFX90A-NEXT:    v_mov_b32_e32 v3, 01083; GFX90A-NEXT:    ;;#ASMSTART1084; GFX90A-NEXT:    ; def v[0:1]1085; GFX90A-NEXT:    ;;#ASMEND1086; GFX90A-NEXT:    v_mov_b32_e32 v2, v11087; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]1088; GFX90A-NEXT:    s_waitcnt vmcnt(0)1089; GFX90A-NEXT:    s_setpc_b64 s[30:31]1090;1091; GFX942-LABEL: v_shuffle_v3i32_v2i32__2_1_1:1092; GFX942:       ; %bb.0:1093; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1094; GFX942-NEXT:    v_mov_b32_e32 v3, 01095; GFX942-NEXT:    ;;#ASMSTART1096; GFX942-NEXT:    ; def v[0:1]1097; GFX942-NEXT:    ;;#ASMEND1098; GFX942-NEXT:    s_nop 01099; GFX942-NEXT:    v_mov_b32_e32 v2, v11100; GFX942-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1]1101; GFX942-NEXT:    s_waitcnt vmcnt(0)1102; GFX942-NEXT:    s_setpc_b64 s[30:31]1103  %vec0 = call <2 x i32> asm "; def $0", "=v"()1104  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 2, i32 1, i32 1>1105  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161106  ret void1107}1108 1109define void @v_shuffle_v3i32_v2i32__3_1_1(ptr addrspace(1) inreg %ptr) {1110; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_1_1:1111; GFX900:       ; %bb.0:1112; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1113; GFX900-NEXT:    v_mov_b32_e32 v4, 01114; GFX900-NEXT:    ;;#ASMSTART1115; GFX900-NEXT:    ; def v[1:2]1116; GFX900-NEXT:    ;;#ASMEND1117; GFX900-NEXT:    v_mov_b32_e32 v3, v21118; GFX900-NEXT:    ;;#ASMSTART1119; GFX900-NEXT:    ; def v[0:1]1120; GFX900-NEXT:    ;;#ASMEND1121; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]1122; GFX900-NEXT:    s_waitcnt vmcnt(0)1123; GFX900-NEXT:    s_setpc_b64 s[30:31]1124;1125; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_1_1:1126; GFX90A:       ; %bb.0:1127; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1128; GFX90A-NEXT:    ;;#ASMSTART1129; GFX90A-NEXT:    ; def v[0:1]1130; GFX90A-NEXT:    ;;#ASMEND1131; GFX90A-NEXT:    ;;#ASMSTART1132; GFX90A-NEXT:    ; def v[2:3]1133; GFX90A-NEXT:    ;;#ASMEND1134; GFX90A-NEXT:    v_mov_b32_e32 v4, 01135; GFX90A-NEXT:    v_mov_b32_e32 v0, v31136; GFX90A-NEXT:    v_mov_b32_e32 v2, v11137; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]1138; GFX90A-NEXT:    s_waitcnt vmcnt(0)1139; GFX90A-NEXT:    s_setpc_b64 s[30:31]1140;1141; GFX942-LABEL: v_shuffle_v3i32_v2i32__3_1_1:1142; GFX942:       ; %bb.0:1143; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1144; GFX942-NEXT:    ;;#ASMSTART1145; GFX942-NEXT:    ; def v[0:1]1146; GFX942-NEXT:    ;;#ASMEND1147; GFX942-NEXT:    ;;#ASMSTART1148; GFX942-NEXT:    ; def v[2:3]1149; GFX942-NEXT:    ;;#ASMEND1150; GFX942-NEXT:    v_mov_b32_e32 v4, 01151; GFX942-NEXT:    v_mov_b32_e32 v0, v31152; GFX942-NEXT:    v_mov_b32_e32 v2, v11153; GFX942-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1]1154; GFX942-NEXT:    s_waitcnt vmcnt(0)1155; GFX942-NEXT:    s_setpc_b64 s[30:31]1156  %vec0 = call <2 x i32> asm "; def $0", "=v"()1157  %vec1 = call <2 x i32> asm "; def $0", "=v"()1158  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 1, i32 1>1159  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161160  ret void1161}1162 1163define void @v_shuffle_v3i32_v2i32__3_u_1(ptr addrspace(1) inreg %ptr) {1164; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_u_1:1165; GFX900:       ; %bb.0:1166; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1167; GFX900-NEXT:    v_mov_b32_e32 v4, 01168; GFX900-NEXT:    ;;#ASMSTART1169; GFX900-NEXT:    ; def v[2:3]1170; GFX900-NEXT:    ;;#ASMEND1171; GFX900-NEXT:    ;;#ASMSTART1172; GFX900-NEXT:    ; def v[0:1]1173; GFX900-NEXT:    ;;#ASMEND1174; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]1175; GFX900-NEXT:    s_waitcnt vmcnt(0)1176; GFX900-NEXT:    s_setpc_b64 s[30:31]1177;1178; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_u_1:1179; GFX90A:       ; %bb.0:1180; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1181; GFX90A-NEXT:    ;;#ASMSTART1182; GFX90A-NEXT:    ; def v[0:1]1183; GFX90A-NEXT:    ;;#ASMEND1184; GFX90A-NEXT:    ;;#ASMSTART1185; GFX90A-NEXT:    ; def v[2:3]1186; GFX90A-NEXT:    ;;#ASMEND1187; GFX90A-NEXT:    v_mov_b32_e32 v4, 01188; GFX90A-NEXT:    v_mov_b32_e32 v0, v31189; GFX90A-NEXT:    v_mov_b32_e32 v2, v11190; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]1191; GFX90A-NEXT:    s_waitcnt vmcnt(0)1192; GFX90A-NEXT:    s_setpc_b64 s[30:31]1193;1194; GFX942-LABEL: v_shuffle_v3i32_v2i32__3_u_1:1195; GFX942:       ; %bb.0:1196; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1197; GFX942-NEXT:    ;;#ASMSTART1198; GFX942-NEXT:    ; def v[0:1]1199; GFX942-NEXT:    ;;#ASMEND1200; GFX942-NEXT:    ;;#ASMSTART1201; GFX942-NEXT:    ; def v[2:3]1202; GFX942-NEXT:    ;;#ASMEND1203; GFX942-NEXT:    v_mov_b32_e32 v4, 01204; GFX942-NEXT:    v_mov_b32_e32 v0, v31205; GFX942-NEXT:    v_mov_b32_e32 v2, v11206; GFX942-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1]1207; GFX942-NEXT:    s_waitcnt vmcnt(0)1208; GFX942-NEXT:    s_setpc_b64 s[30:31]1209  %vec0 = call <2 x i32> asm "; def $0", "=v"()1210  %vec1 = call <2 x i32> asm "; def $0", "=v"()1211  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 poison, i32 1>1212  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161213  ret void1214}1215 1216define void @v_shuffle_v3i32_v2i32__3_0_1(ptr addrspace(1) inreg %ptr) {1217; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_0_1:1218; GFX900:       ; %bb.0:1219; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1220; GFX900-NEXT:    v_mov_b32_e32 v4, 01221; GFX900-NEXT:    ;;#ASMSTART1222; GFX900-NEXT:    ; def v[2:3]1223; GFX900-NEXT:    ;;#ASMEND1224; GFX900-NEXT:    ;;#ASMSTART1225; GFX900-NEXT:    ; def v[0:1]1226; GFX900-NEXT:    ;;#ASMEND1227; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]1228; GFX900-NEXT:    s_waitcnt vmcnt(0)1229; GFX900-NEXT:    s_setpc_b64 s[30:31]1230;1231; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_0_1:1232; GFX90A:       ; %bb.0:1233; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1234; GFX90A-NEXT:    v_mov_b32_e32 v4, 01235; GFX90A-NEXT:    ;;#ASMSTART1236; GFX90A-NEXT:    ; def v[0:1]1237; GFX90A-NEXT:    ;;#ASMEND1238; GFX90A-NEXT:    ;;#ASMSTART1239; GFX90A-NEXT:    ; def v[2:3]1240; GFX90A-NEXT:    ;;#ASMEND1241; GFX90A-NEXT:    v_mov_b32_e32 v6, v31242; GFX90A-NEXT:    v_mov_b32_e32 v7, v01243; GFX90A-NEXT:    v_mov_b32_e32 v8, v11244; GFX90A-NEXT:    global_store_dwordx3 v4, v[6:8], s[16:17]1245; GFX90A-NEXT:    s_waitcnt vmcnt(0)1246; GFX90A-NEXT:    s_setpc_b64 s[30:31]1247;1248; GFX942-LABEL: v_shuffle_v3i32_v2i32__3_0_1:1249; GFX942:       ; %bb.0:1250; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1251; GFX942-NEXT:    v_mov_b32_e32 v4, 01252; GFX942-NEXT:    ;;#ASMSTART1253; GFX942-NEXT:    ; def v[0:1]1254; GFX942-NEXT:    ;;#ASMEND1255; GFX942-NEXT:    ;;#ASMSTART1256; GFX942-NEXT:    ; def v[2:3]1257; GFX942-NEXT:    ;;#ASMEND1258; GFX942-NEXT:    s_nop 01259; GFX942-NEXT:    v_mov_b32_e32 v6, v31260; GFX942-NEXT:    v_mov_b32_e32 v7, v01261; GFX942-NEXT:    v_mov_b32_e32 v8, v11262; GFX942-NEXT:    global_store_dwordx3 v4, v[6:8], s[0:1]1263; GFX942-NEXT:    s_waitcnt vmcnt(0)1264; GFX942-NEXT:    s_setpc_b64 s[30:31]1265  %vec0 = call <2 x i32> asm "; def $0", "=v"()1266  %vec1 = call <2 x i32> asm "; def $0", "=v"()1267  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 0, i32 1>1268  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161269  ret void1270}1271 1272define void @v_shuffle_v3i32_v2i32__3_2_1(ptr addrspace(1) inreg %ptr) {1273; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_2_1:1274; GFX900:       ; %bb.0:1275; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1276; GFX900-NEXT:    ;;#ASMSTART1277; GFX900-NEXT:    ; def v[2:3]1278; GFX900-NEXT:    ;;#ASMEND1279; GFX900-NEXT:    v_mov_b32_e32 v4, 01280; GFX900-NEXT:    ;;#ASMSTART1281; GFX900-NEXT:    ; def v[0:1]1282; GFX900-NEXT:    ;;#ASMEND1283; GFX900-NEXT:    v_mov_b32_e32 v2, v01284; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]1285; GFX900-NEXT:    s_waitcnt vmcnt(0)1286; GFX900-NEXT:    s_setpc_b64 s[30:31]1287;1288; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_2_1:1289; GFX90A:       ; %bb.0:1290; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1291; GFX90A-NEXT:    v_mov_b32_e32 v4, 01292; GFX90A-NEXT:    ;;#ASMSTART1293; GFX90A-NEXT:    ; def v[0:1]1294; GFX90A-NEXT:    ;;#ASMEND1295; GFX90A-NEXT:    ;;#ASMSTART1296; GFX90A-NEXT:    ; def v[2:3]1297; GFX90A-NEXT:    ;;#ASMEND1298; GFX90A-NEXT:    v_mov_b32_e32 v6, v31299; GFX90A-NEXT:    v_mov_b32_e32 v7, v21300; GFX90A-NEXT:    v_mov_b32_e32 v8, v11301; GFX90A-NEXT:    global_store_dwordx3 v4, v[6:8], s[16:17]1302; GFX90A-NEXT:    s_waitcnt vmcnt(0)1303; GFX90A-NEXT:    s_setpc_b64 s[30:31]1304;1305; GFX942-LABEL: v_shuffle_v3i32_v2i32__3_2_1:1306; GFX942:       ; %bb.0:1307; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1308; GFX942-NEXT:    v_mov_b32_e32 v4, 01309; GFX942-NEXT:    ;;#ASMSTART1310; GFX942-NEXT:    ; def v[0:1]1311; GFX942-NEXT:    ;;#ASMEND1312; GFX942-NEXT:    ;;#ASMSTART1313; GFX942-NEXT:    ; def v[2:3]1314; GFX942-NEXT:    ;;#ASMEND1315; GFX942-NEXT:    s_nop 01316; GFX942-NEXT:    v_mov_b32_e32 v6, v31317; GFX942-NEXT:    v_mov_b32_e32 v7, v21318; GFX942-NEXT:    v_mov_b32_e32 v8, v11319; GFX942-NEXT:    global_store_dwordx3 v4, v[6:8], s[0:1]1320; GFX942-NEXT:    s_waitcnt vmcnt(0)1321; GFX942-NEXT:    s_setpc_b64 s[30:31]1322  %vec0 = call <2 x i32> asm "; def $0", "=v"()1323  %vec1 = call <2 x i32> asm "; def $0", "=v"()1324  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 2, i32 1>1325  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161326  ret void1327}1328 1329define void @v_shuffle_v3i32_v2i32__u_2_2(ptr addrspace(1) inreg %ptr) {1330; GFX9-LABEL: v_shuffle_v3i32_v2i32__u_2_2:1331; GFX9:       ; %bb.0:1332; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1333; GFX9-NEXT:    s_setpc_b64 s[30:31]1334  %vec0 = call <2 x i32> asm "; def $0", "=v"()1335  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 poison, i32 2, i32 2>1336  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161337  ret void1338}1339 1340define void @v_shuffle_v3i32_v2i32__0_2_2(ptr addrspace(1) inreg %ptr) {1341; GFX900-LABEL: v_shuffle_v3i32_v2i32__0_2_2:1342; GFX900:       ; %bb.0:1343; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1344; GFX900-NEXT:    v_mov_b32_e32 v2, 01345; GFX900-NEXT:    ;;#ASMSTART1346; GFX900-NEXT:    ; def v[0:1]1347; GFX900-NEXT:    ;;#ASMEND1348; GFX900-NEXT:    global_store_dwordx3 v2, v[0:2], s[16:17]1349; GFX900-NEXT:    s_waitcnt vmcnt(0)1350; GFX900-NEXT:    s_setpc_b64 s[30:31]1351;1352; GFX90A-LABEL: v_shuffle_v3i32_v2i32__0_2_2:1353; GFX90A:       ; %bb.0:1354; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1355; GFX90A-NEXT:    v_mov_b32_e32 v2, 01356; GFX90A-NEXT:    ;;#ASMSTART1357; GFX90A-NEXT:    ; def v[0:1]1358; GFX90A-NEXT:    ;;#ASMEND1359; GFX90A-NEXT:    global_store_dwordx3 v2, v[0:2], s[16:17]1360; GFX90A-NEXT:    s_waitcnt vmcnt(0)1361; GFX90A-NEXT:    s_setpc_b64 s[30:31]1362;1363; GFX942-LABEL: v_shuffle_v3i32_v2i32__0_2_2:1364; GFX942:       ; %bb.0:1365; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1366; GFX942-NEXT:    v_mov_b32_e32 v2, 01367; GFX942-NEXT:    ;;#ASMSTART1368; GFX942-NEXT:    ; def v[0:1]1369; GFX942-NEXT:    ;;#ASMEND1370; GFX942-NEXT:    global_store_dwordx3 v2, v[0:2], s[0:1]1371; GFX942-NEXT:    s_waitcnt vmcnt(0)1372; GFX942-NEXT:    s_setpc_b64 s[30:31]1373  %vec0 = call <2 x i32> asm "; def $0", "=v"()1374  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 0, i32 2, i32 2>1375  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161376  ret void1377}1378 1379define void @v_shuffle_v3i32_v2i32__1_2_2(ptr addrspace(1) inreg %ptr) {1380; GFX900-LABEL: v_shuffle_v3i32_v2i32__1_2_2:1381; GFX900:       ; %bb.0:1382; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1383; GFX900-NEXT:    v_mov_b32_e32 v2, 01384; GFX900-NEXT:    ;;#ASMSTART1385; GFX900-NEXT:    ; def v[0:1]1386; GFX900-NEXT:    ;;#ASMEND1387; GFX900-NEXT:    global_store_dwordx3 v2, v[1:3], s[16:17]1388; GFX900-NEXT:    s_waitcnt vmcnt(0)1389; GFX900-NEXT:    s_setpc_b64 s[30:31]1390;1391; GFX90A-LABEL: v_shuffle_v3i32_v2i32__1_2_2:1392; GFX90A:       ; %bb.0:1393; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1394; GFX90A-NEXT:    ;;#ASMSTART1395; GFX90A-NEXT:    ; def v[0:1]1396; GFX90A-NEXT:    ;;#ASMEND1397; GFX90A-NEXT:    v_mov_b32_e32 v2, 01398; GFX90A-NEXT:    v_mov_b32_e32 v0, v11399; GFX90A-NEXT:    global_store_dwordx3 v2, v[0:2], s[16:17]1400; GFX90A-NEXT:    s_waitcnt vmcnt(0)1401; GFX90A-NEXT:    s_setpc_b64 s[30:31]1402;1403; GFX942-LABEL: v_shuffle_v3i32_v2i32__1_2_2:1404; GFX942:       ; %bb.0:1405; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1406; GFX942-NEXT:    ;;#ASMSTART1407; GFX942-NEXT:    ; def v[0:1]1408; GFX942-NEXT:    ;;#ASMEND1409; GFX942-NEXT:    v_mov_b32_e32 v2, 01410; GFX942-NEXT:    v_mov_b32_e32 v0, v11411; GFX942-NEXT:    global_store_dwordx3 v2, v[0:2], s[0:1]1412; GFX942-NEXT:    s_waitcnt vmcnt(0)1413; GFX942-NEXT:    s_setpc_b64 s[30:31]1414  %vec0 = call <2 x i32> asm "; def $0", "=v"()1415  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 1, i32 2, i32 2>1416  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161417  ret void1418}1419 1420define void @v_shuffle_v3i32_v2i32__2_2_2(ptr addrspace(1) inreg %ptr) {1421; GFX9-LABEL: v_shuffle_v3i32_v2i32__2_2_2:1422; GFX9:       ; %bb.0:1423; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1424; GFX9-NEXT:    s_setpc_b64 s[30:31]1425  %vec0 = call <2 x i32> asm "; def $0", "=v"()1426  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 2, i32 2, i32 2>1427  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161428  ret void1429}1430 1431define void @v_shuffle_v3i32_v2i32__3_2_2(ptr addrspace(1) inreg %ptr) {1432; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_2_2:1433; GFX900:       ; %bb.0:1434; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1435; GFX900-NEXT:    v_mov_b32_e32 v4, 01436; GFX900-NEXT:    ;;#ASMSTART1437; GFX900-NEXT:    ; def v[0:1]1438; GFX900-NEXT:    ;;#ASMEND1439; GFX900-NEXT:    v_mov_b32_e32 v2, v01440; GFX900-NEXT:    v_mov_b32_e32 v3, v01441; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]1442; GFX900-NEXT:    s_waitcnt vmcnt(0)1443; GFX900-NEXT:    s_setpc_b64 s[30:31]1444;1445; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_2_2:1446; GFX90A:       ; %bb.0:1447; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1448; GFX90A-NEXT:    v_mov_b32_e32 v4, 01449; GFX90A-NEXT:    ;;#ASMSTART1450; GFX90A-NEXT:    ; def v[2:3]1451; GFX90A-NEXT:    ;;#ASMEND1452; GFX90A-NEXT:    v_mov_b32_e32 v0, v31453; GFX90A-NEXT:    v_mov_b32_e32 v1, v21454; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]1455; GFX90A-NEXT:    s_waitcnt vmcnt(0)1456; GFX90A-NEXT:    s_setpc_b64 s[30:31]1457;1458; GFX942-LABEL: v_shuffle_v3i32_v2i32__3_2_2:1459; GFX942:       ; %bb.0:1460; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1461; GFX942-NEXT:    v_mov_b32_e32 v4, 01462; GFX942-NEXT:    ;;#ASMSTART1463; GFX942-NEXT:    ; def v[2:3]1464; GFX942-NEXT:    ;;#ASMEND1465; GFX942-NEXT:    s_nop 01466; GFX942-NEXT:    v_mov_b32_e32 v0, v31467; GFX942-NEXT:    v_mov_b32_e32 v1, v21468; GFX942-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1]1469; GFX942-NEXT:    s_waitcnt vmcnt(0)1470; GFX942-NEXT:    s_setpc_b64 s[30:31]1471  %vec0 = call <2 x i32> asm "; def $0", "=v"()1472  %vec1 = call <2 x i32> asm "; def $0", "=v"()1473  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 2, i32 2>1474  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161475  ret void1476}1477 1478define void @v_shuffle_v3i32_v2i32__3_u_2(ptr addrspace(1) inreg %ptr) {1479; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_u_2:1480; GFX900:       ; %bb.0:1481; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1482; GFX900-NEXT:    v_mov_b32_e32 v2, 01483; GFX900-NEXT:    ;;#ASMSTART1484; GFX900-NEXT:    ; def v[0:1]1485; GFX900-NEXT:    ;;#ASMEND1486; GFX900-NEXT:    v_mov_b32_e32 v3, v01487; GFX900-NEXT:    global_store_dwordx3 v2, v[1:3], s[16:17]1488; GFX900-NEXT:    s_waitcnt vmcnt(0)1489; GFX900-NEXT:    s_setpc_b64 s[30:31]1490;1491; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_u_2:1492; GFX90A:       ; %bb.0:1493; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1494; GFX90A-NEXT:    v_mov_b32_e32 v1, 01495; GFX90A-NEXT:    ;;#ASMSTART1496; GFX90A-NEXT:    ; def v[2:3]1497; GFX90A-NEXT:    ;;#ASMEND1498; GFX90A-NEXT:    v_mov_b32_e32 v0, v31499; GFX90A-NEXT:    global_store_dwordx3 v1, v[0:2], s[16:17]1500; GFX90A-NEXT:    s_waitcnt vmcnt(0)1501; GFX90A-NEXT:    s_setpc_b64 s[30:31]1502;1503; GFX942-LABEL: v_shuffle_v3i32_v2i32__3_u_2:1504; GFX942:       ; %bb.0:1505; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1506; GFX942-NEXT:    v_mov_b32_e32 v1, 01507; GFX942-NEXT:    ;;#ASMSTART1508; GFX942-NEXT:    ; def v[2:3]1509; GFX942-NEXT:    ;;#ASMEND1510; GFX942-NEXT:    s_nop 01511; GFX942-NEXT:    v_mov_b32_e32 v0, v31512; GFX942-NEXT:    global_store_dwordx3 v1, v[0:2], s[0:1]1513; GFX942-NEXT:    s_waitcnt vmcnt(0)1514; GFX942-NEXT:    s_setpc_b64 s[30:31]1515  %vec0 = call <2 x i32> asm "; def $0", "=v"()1516  %vec1 = call <2 x i32> asm "; def $0", "=v"()1517  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 poison, i32 2>1518  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161519  ret void1520}1521 1522define void @v_shuffle_v3i32_v2i32__3_0_2(ptr addrspace(1) inreg %ptr) {1523; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_0_2:1524; GFX900:       ; %bb.0:1525; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1526; GFX900-NEXT:    ;;#ASMSTART1527; GFX900-NEXT:    ; def v[2:3]1528; GFX900-NEXT:    ;;#ASMEND1529; GFX900-NEXT:    v_mov_b32_e32 v4, 01530; GFX900-NEXT:    ;;#ASMSTART1531; GFX900-NEXT:    ; def v[0:1]1532; GFX900-NEXT:    ;;#ASMEND1533; GFX900-NEXT:    v_mov_b32_e32 v3, v01534; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]1535; GFX900-NEXT:    s_waitcnt vmcnt(0)1536; GFX900-NEXT:    s_setpc_b64 s[30:31]1537;1538; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_0_2:1539; GFX90A:       ; %bb.0:1540; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1541; GFX90A-NEXT:    v_mov_b32_e32 v6, 01542; GFX90A-NEXT:    ;;#ASMSTART1543; GFX90A-NEXT:    ; def v[4:5]1544; GFX90A-NEXT:    ;;#ASMEND1545; GFX90A-NEXT:    ;;#ASMSTART1546; GFX90A-NEXT:    ; def v[2:3]1547; GFX90A-NEXT:    ;;#ASMEND1548; GFX90A-NEXT:    v_mov_b32_e32 v0, v31549; GFX90A-NEXT:    v_mov_b32_e32 v1, v41550; GFX90A-NEXT:    global_store_dwordx3 v6, v[0:2], s[16:17]1551; GFX90A-NEXT:    s_waitcnt vmcnt(0)1552; GFX90A-NEXT:    s_setpc_b64 s[30:31]1553;1554; GFX942-LABEL: v_shuffle_v3i32_v2i32__3_0_2:1555; GFX942:       ; %bb.0:1556; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1557; GFX942-NEXT:    v_mov_b32_e32 v6, 01558; GFX942-NEXT:    ;;#ASMSTART1559; GFX942-NEXT:    ; def v[4:5]1560; GFX942-NEXT:    ;;#ASMEND1561; GFX942-NEXT:    ;;#ASMSTART1562; GFX942-NEXT:    ; def v[2:3]1563; GFX942-NEXT:    ;;#ASMEND1564; GFX942-NEXT:    s_nop 01565; GFX942-NEXT:    v_mov_b32_e32 v0, v31566; GFX942-NEXT:    v_mov_b32_e32 v1, v41567; GFX942-NEXT:    global_store_dwordx3 v6, v[0:2], s[0:1]1568; GFX942-NEXT:    s_waitcnt vmcnt(0)1569; GFX942-NEXT:    s_setpc_b64 s[30:31]1570  %vec0 = call <2 x i32> asm "; def $0", "=v"()1571  %vec1 = call <2 x i32> asm "; def $0", "=v"()1572  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 0, i32 2>1573  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161574  ret void1575}1576 1577define void @v_shuffle_v3i32_v2i32__3_1_2(ptr addrspace(1) inreg %ptr) {1578; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_1_2:1579; GFX900:       ; %bb.0:1580; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1581; GFX900-NEXT:    ;;#ASMSTART1582; GFX900-NEXT:    ; def v[1:2]1583; GFX900-NEXT:    ;;#ASMEND1584; GFX900-NEXT:    v_mov_b32_e32 v4, 01585; GFX900-NEXT:    ;;#ASMSTART1586; GFX900-NEXT:    ; def v[0:1]1587; GFX900-NEXT:    ;;#ASMEND1588; GFX900-NEXT:    v_mov_b32_e32 v3, v01589; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]1590; GFX900-NEXT:    s_waitcnt vmcnt(0)1591; GFX900-NEXT:    s_setpc_b64 s[30:31]1592;1593; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_1_2:1594; GFX90A:       ; %bb.0:1595; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1596; GFX90A-NEXT:    ;;#ASMSTART1597; GFX90A-NEXT:    ; def v[0:1]1598; GFX90A-NEXT:    ;;#ASMEND1599; GFX90A-NEXT:    v_mov_b32_e32 v4, 01600; GFX90A-NEXT:    ;;#ASMSTART1601; GFX90A-NEXT:    ; def v[2:3]1602; GFX90A-NEXT:    ;;#ASMEND1603; GFX90A-NEXT:    v_mov_b32_e32 v0, v31604; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]1605; GFX90A-NEXT:    s_waitcnt vmcnt(0)1606; GFX90A-NEXT:    s_setpc_b64 s[30:31]1607;1608; GFX942-LABEL: v_shuffle_v3i32_v2i32__3_1_2:1609; GFX942:       ; %bb.0:1610; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1611; GFX942-NEXT:    ;;#ASMSTART1612; GFX942-NEXT:    ; def v[0:1]1613; GFX942-NEXT:    ;;#ASMEND1614; GFX942-NEXT:    v_mov_b32_e32 v4, 01615; GFX942-NEXT:    ;;#ASMSTART1616; GFX942-NEXT:    ; def v[2:3]1617; GFX942-NEXT:    ;;#ASMEND1618; GFX942-NEXT:    s_nop 01619; GFX942-NEXT:    v_mov_b32_e32 v0, v31620; GFX942-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1]1621; GFX942-NEXT:    s_waitcnt vmcnt(0)1622; GFX942-NEXT:    s_setpc_b64 s[30:31]1623  %vec0 = call <2 x i32> asm "; def $0", "=v"()1624  %vec1 = call <2 x i32> asm "; def $0", "=v"()1625  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 1, i32 2>1626  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161627  ret void1628}1629 1630define void @v_shuffle_v3i32_v2i32__u_3_3(ptr addrspace(1) inreg %ptr) {1631; GFX900-LABEL: v_shuffle_v3i32_v2i32__u_3_3:1632; GFX900:       ; %bb.0:1633; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1634; GFX900-NEXT:    v_mov_b32_e32 v3, 01635; GFX900-NEXT:    ;;#ASMSTART1636; GFX900-NEXT:    ; def v[0:1]1637; GFX900-NEXT:    ;;#ASMEND1638; GFX900-NEXT:    v_mov_b32_e32 v2, v11639; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]1640; GFX900-NEXT:    s_waitcnt vmcnt(0)1641; GFX900-NEXT:    s_setpc_b64 s[30:31]1642;1643; GFX90A-LABEL: v_shuffle_v3i32_v2i32__u_3_3:1644; GFX90A:       ; %bb.0:1645; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1646; GFX90A-NEXT:    v_mov_b32_e32 v3, 01647; GFX90A-NEXT:    ;;#ASMSTART1648; GFX90A-NEXT:    ; def v[0:1]1649; GFX90A-NEXT:    ;;#ASMEND1650; GFX90A-NEXT:    v_mov_b32_e32 v2, v11651; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]1652; GFX90A-NEXT:    s_waitcnt vmcnt(0)1653; GFX90A-NEXT:    s_setpc_b64 s[30:31]1654;1655; GFX942-LABEL: v_shuffle_v3i32_v2i32__u_3_3:1656; GFX942:       ; %bb.0:1657; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1658; GFX942-NEXT:    v_mov_b32_e32 v3, 01659; GFX942-NEXT:    ;;#ASMSTART1660; GFX942-NEXT:    ; def v[0:1]1661; GFX942-NEXT:    ;;#ASMEND1662; GFX942-NEXT:    s_nop 01663; GFX942-NEXT:    v_mov_b32_e32 v2, v11664; GFX942-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1]1665; GFX942-NEXT:    s_waitcnt vmcnt(0)1666; GFX942-NEXT:    s_setpc_b64 s[30:31]1667  %vec0 = call <2 x i32> asm "; def $0", "=v"()1668  %vec1 = call <2 x i32> asm "; def $0", "=v"()1669  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 poison, i32 3, i32 3>1670  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161671  ret void1672}1673 1674define void @v_shuffle_v3i32_v2i32__0_3_3(ptr addrspace(1) inreg %ptr) {1675; GFX900-LABEL: v_shuffle_v3i32_v2i32__0_3_3:1676; GFX900:       ; %bb.0:1677; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1678; GFX900-NEXT:    ;;#ASMSTART1679; GFX900-NEXT:    ; def v[0:1]1680; GFX900-NEXT:    ;;#ASMEND1681; GFX900-NEXT:    ;;#ASMSTART1682; GFX900-NEXT:    ; def v[1:2]1683; GFX900-NEXT:    ;;#ASMEND1684; GFX900-NEXT:    v_mov_b32_e32 v3, 01685; GFX900-NEXT:    v_mov_b32_e32 v1, v21686; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]1687; GFX900-NEXT:    s_waitcnt vmcnt(0)1688; GFX900-NEXT:    s_setpc_b64 s[30:31]1689;1690; GFX90A-LABEL: v_shuffle_v3i32_v2i32__0_3_3:1691; GFX90A:       ; %bb.0:1692; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1693; GFX90A-NEXT:    ;;#ASMSTART1694; GFX90A-NEXT:    ; def v[0:1]1695; GFX90A-NEXT:    ;;#ASMEND1696; GFX90A-NEXT:    ;;#ASMSTART1697; GFX90A-NEXT:    ; def v[2:3]1698; GFX90A-NEXT:    ;;#ASMEND1699; GFX90A-NEXT:    v_mov_b32_e32 v4, 01700; GFX90A-NEXT:    v_mov_b32_e32 v1, v31701; GFX90A-NEXT:    v_mov_b32_e32 v2, v31702; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]1703; GFX90A-NEXT:    s_waitcnt vmcnt(0)1704; GFX90A-NEXT:    s_setpc_b64 s[30:31]1705;1706; GFX942-LABEL: v_shuffle_v3i32_v2i32__0_3_3:1707; GFX942:       ; %bb.0:1708; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1709; GFX942-NEXT:    ;;#ASMSTART1710; GFX942-NEXT:    ; def v[0:1]1711; GFX942-NEXT:    ;;#ASMEND1712; GFX942-NEXT:    ;;#ASMSTART1713; GFX942-NEXT:    ; def v[2:3]1714; GFX942-NEXT:    ;;#ASMEND1715; GFX942-NEXT:    v_mov_b32_e32 v4, 01716; GFX942-NEXT:    v_mov_b32_e32 v1, v31717; GFX942-NEXT:    v_mov_b32_e32 v2, v31718; GFX942-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1]1719; GFX942-NEXT:    s_waitcnt vmcnt(0)1720; GFX942-NEXT:    s_setpc_b64 s[30:31]1721  %vec0 = call <2 x i32> asm "; def $0", "=v"()1722  %vec1 = call <2 x i32> asm "; def $0", "=v"()1723  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 0, i32 3, i32 3>1724  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161725  ret void1726}1727 1728define void @v_shuffle_v3i32_v2i32__1_3_3(ptr addrspace(1) inreg %ptr) {1729; GFX900-LABEL: v_shuffle_v3i32_v2i32__1_3_3:1730; GFX900:       ; %bb.0:1731; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1732; GFX900-NEXT:    ;;#ASMSTART1733; GFX900-NEXT:    ; def v[2:3]1734; GFX900-NEXT:    ;;#ASMEND1735; GFX900-NEXT:    v_mov_b32_e32 v4, 01736; GFX900-NEXT:    v_mov_b32_e32 v2, v31737; GFX900-NEXT:    ;;#ASMSTART1738; GFX900-NEXT:    ; def v[0:1]1739; GFX900-NEXT:    ;;#ASMEND1740; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]1741; GFX900-NEXT:    s_waitcnt vmcnt(0)1742; GFX900-NEXT:    s_setpc_b64 s[30:31]1743;1744; GFX90A-LABEL: v_shuffle_v3i32_v2i32__1_3_3:1745; GFX90A:       ; %bb.0:1746; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1747; GFX90A-NEXT:    ;;#ASMSTART1748; GFX90A-NEXT:    ; def v[2:3]1749; GFX90A-NEXT:    ;;#ASMEND1750; GFX90A-NEXT:    ;;#ASMSTART1751; GFX90A-NEXT:    ; def v[0:1]1752; GFX90A-NEXT:    ;;#ASMEND1753; GFX90A-NEXT:    v_mov_b32_e32 v4, 01754; GFX90A-NEXT:    v_mov_b32_e32 v0, v31755; GFX90A-NEXT:    v_mov_b32_e32 v2, v11756; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]1757; GFX90A-NEXT:    s_waitcnt vmcnt(0)1758; GFX90A-NEXT:    s_setpc_b64 s[30:31]1759;1760; GFX942-LABEL: v_shuffle_v3i32_v2i32__1_3_3:1761; GFX942:       ; %bb.0:1762; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1763; GFX942-NEXT:    ;;#ASMSTART1764; GFX942-NEXT:    ; def v[2:3]1765; GFX942-NEXT:    ;;#ASMEND1766; GFX942-NEXT:    ;;#ASMSTART1767; GFX942-NEXT:    ; def v[0:1]1768; GFX942-NEXT:    ;;#ASMEND1769; GFX942-NEXT:    v_mov_b32_e32 v4, 01770; GFX942-NEXT:    v_mov_b32_e32 v0, v31771; GFX942-NEXT:    v_mov_b32_e32 v2, v11772; GFX942-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1]1773; GFX942-NEXT:    s_waitcnt vmcnt(0)1774; GFX942-NEXT:    s_setpc_b64 s[30:31]1775  %vec0 = call <2 x i32> asm "; def $0", "=v"()1776  %vec1 = call <2 x i32> asm "; def $0", "=v"()1777  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 1, i32 3, i32 3>1778  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161779  ret void1780}1781 1782define void @v_shuffle_v3i32_v2i32__2_3_3(ptr addrspace(1) inreg %ptr) {1783; GFX900-LABEL: v_shuffle_v3i32_v2i32__2_3_3:1784; GFX900:       ; %bb.0:1785; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1786; GFX900-NEXT:    v_mov_b32_e32 v3, 01787; GFX900-NEXT:    ;;#ASMSTART1788; GFX900-NEXT:    ; def v[0:1]1789; GFX900-NEXT:    ;;#ASMEND1790; GFX900-NEXT:    v_mov_b32_e32 v2, v11791; GFX900-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]1792; GFX900-NEXT:    s_waitcnt vmcnt(0)1793; GFX900-NEXT:    s_setpc_b64 s[30:31]1794;1795; GFX90A-LABEL: v_shuffle_v3i32_v2i32__2_3_3:1796; GFX90A:       ; %bb.0:1797; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1798; GFX90A-NEXT:    v_mov_b32_e32 v3, 01799; GFX90A-NEXT:    ;;#ASMSTART1800; GFX90A-NEXT:    ; def v[0:1]1801; GFX90A-NEXT:    ;;#ASMEND1802; GFX90A-NEXT:    v_mov_b32_e32 v2, v11803; GFX90A-NEXT:    global_store_dwordx3 v3, v[0:2], s[16:17]1804; GFX90A-NEXT:    s_waitcnt vmcnt(0)1805; GFX90A-NEXT:    s_setpc_b64 s[30:31]1806;1807; GFX942-LABEL: v_shuffle_v3i32_v2i32__2_3_3:1808; GFX942:       ; %bb.0:1809; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1810; GFX942-NEXT:    v_mov_b32_e32 v3, 01811; GFX942-NEXT:    ;;#ASMSTART1812; GFX942-NEXT:    ; def v[0:1]1813; GFX942-NEXT:    ;;#ASMEND1814; GFX942-NEXT:    s_nop 01815; GFX942-NEXT:    v_mov_b32_e32 v2, v11816; GFX942-NEXT:    global_store_dwordx3 v3, v[0:2], s[0:1]1817; GFX942-NEXT:    s_waitcnt vmcnt(0)1818; GFX942-NEXT:    s_setpc_b64 s[30:31]1819  %vec0 = call <2 x i32> asm "; def $0", "=v"()1820  %vec1 = call <2 x i32> asm "; def $0", "=v"()1821  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 2, i32 3, i32 3>1822  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161823  ret void1824}1825 1826define void @v_shuffle_v3i32_v2i32__3_u_3(ptr addrspace(1) inreg %ptr) {1827; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_u_3:1828; GFX900:       ; %bb.0:1829; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1830; GFX900-NEXT:    v_mov_b32_e32 v2, 01831; GFX900-NEXT:    ;;#ASMSTART1832; GFX900-NEXT:    ; def v[0:1]1833; GFX900-NEXT:    ;;#ASMEND1834; GFX900-NEXT:    v_mov_b32_e32 v3, v11835; GFX900-NEXT:    global_store_dwordx3 v2, v[1:3], s[16:17]1836; GFX900-NEXT:    s_waitcnt vmcnt(0)1837; GFX900-NEXT:    s_setpc_b64 s[30:31]1838;1839; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_u_3:1840; GFX90A:       ; %bb.0:1841; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1842; GFX90A-NEXT:    v_mov_b32_e32 v2, 01843; GFX90A-NEXT:    ;;#ASMSTART1844; GFX90A-NEXT:    ; def v[0:1]1845; GFX90A-NEXT:    ;;#ASMEND1846; GFX90A-NEXT:    v_mov_b32_e32 v4, v11847; GFX90A-NEXT:    v_mov_b32_e32 v6, v11848; GFX90A-NEXT:    global_store_dwordx3 v2, v[4:6], s[16:17]1849; GFX90A-NEXT:    s_waitcnt vmcnt(0)1850; GFX90A-NEXT:    s_setpc_b64 s[30:31]1851;1852; GFX942-LABEL: v_shuffle_v3i32_v2i32__3_u_3:1853; GFX942:       ; %bb.0:1854; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1855; GFX942-NEXT:    v_mov_b32_e32 v2, 01856; GFX942-NEXT:    ;;#ASMSTART1857; GFX942-NEXT:    ; def v[0:1]1858; GFX942-NEXT:    ;;#ASMEND1859; GFX942-NEXT:    s_nop 01860; GFX942-NEXT:    v_mov_b32_e32 v4, v11861; GFX942-NEXT:    v_mov_b32_e32 v6, v11862; GFX942-NEXT:    global_store_dwordx3 v2, v[4:6], s[0:1]1863; GFX942-NEXT:    s_waitcnt vmcnt(0)1864; GFX942-NEXT:    s_setpc_b64 s[30:31]1865  %vec0 = call <2 x i32> asm "; def $0", "=v"()1866  %vec1 = call <2 x i32> asm "; def $0", "=v"()1867  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 poison, i32 3>1868  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161869  ret void1870}1871 1872define void @v_shuffle_v3i32_v2i32__3_0_3(ptr addrspace(1) inreg %ptr) {1873; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_0_3:1874; GFX900:       ; %bb.0:1875; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1876; GFX900-NEXT:    ;;#ASMSTART1877; GFX900-NEXT:    ; def v[2:3]1878; GFX900-NEXT:    ;;#ASMEND1879; GFX900-NEXT:    v_mov_b32_e32 v4, 01880; GFX900-NEXT:    ;;#ASMSTART1881; GFX900-NEXT:    ; def v[0:1]1882; GFX900-NEXT:    ;;#ASMEND1883; GFX900-NEXT:    v_mov_b32_e32 v3, v11884; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]1885; GFX900-NEXT:    s_waitcnt vmcnt(0)1886; GFX900-NEXT:    s_setpc_b64 s[30:31]1887;1888; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_0_3:1889; GFX90A:       ; %bb.0:1890; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1891; GFX90A-NEXT:    v_mov_b32_e32 v4, 01892; GFX90A-NEXT:    ;;#ASMSTART1893; GFX90A-NEXT:    ; def v[0:1]1894; GFX90A-NEXT:    ;;#ASMEND1895; GFX90A-NEXT:    ;;#ASMSTART1896; GFX90A-NEXT:    ; def v[2:3]1897; GFX90A-NEXT:    ;;#ASMEND1898; GFX90A-NEXT:    v_mov_b32_e32 v6, v31899; GFX90A-NEXT:    v_mov_b32_e32 v7, v01900; GFX90A-NEXT:    v_mov_b32_e32 v8, v31901; GFX90A-NEXT:    global_store_dwordx3 v4, v[6:8], s[16:17]1902; GFX90A-NEXT:    s_waitcnt vmcnt(0)1903; GFX90A-NEXT:    s_setpc_b64 s[30:31]1904;1905; GFX942-LABEL: v_shuffle_v3i32_v2i32__3_0_3:1906; GFX942:       ; %bb.0:1907; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1908; GFX942-NEXT:    v_mov_b32_e32 v4, 01909; GFX942-NEXT:    ;;#ASMSTART1910; GFX942-NEXT:    ; def v[0:1]1911; GFX942-NEXT:    ;;#ASMEND1912; GFX942-NEXT:    ;;#ASMSTART1913; GFX942-NEXT:    ; def v[2:3]1914; GFX942-NEXT:    ;;#ASMEND1915; GFX942-NEXT:    s_nop 01916; GFX942-NEXT:    v_mov_b32_e32 v6, v31917; GFX942-NEXT:    v_mov_b32_e32 v7, v01918; GFX942-NEXT:    v_mov_b32_e32 v8, v31919; GFX942-NEXT:    global_store_dwordx3 v4, v[6:8], s[0:1]1920; GFX942-NEXT:    s_waitcnt vmcnt(0)1921; GFX942-NEXT:    s_setpc_b64 s[30:31]1922  %vec0 = call <2 x i32> asm "; def $0", "=v"()1923  %vec1 = call <2 x i32> asm "; def $0", "=v"()1924  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 0, i32 3>1925  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161926  ret void1927}1928 1929define void @v_shuffle_v3i32_v2i32__3_1_3(ptr addrspace(1) inreg %ptr) {1930; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_1_3:1931; GFX900:       ; %bb.0:1932; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1933; GFX900-NEXT:    ;;#ASMSTART1934; GFX900-NEXT:    ; def v[1:2]1935; GFX900-NEXT:    ;;#ASMEND1936; GFX900-NEXT:    v_mov_b32_e32 v4, 01937; GFX900-NEXT:    ;;#ASMSTART1938; GFX900-NEXT:    ; def v[0:1]1939; GFX900-NEXT:    ;;#ASMEND1940; GFX900-NEXT:    v_mov_b32_e32 v3, v11941; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]1942; GFX900-NEXT:    s_waitcnt vmcnt(0)1943; GFX900-NEXT:    s_setpc_b64 s[30:31]1944;1945; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_1_3:1946; GFX90A:       ; %bb.0:1947; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1948; GFX90A-NEXT:    ;;#ASMSTART1949; GFX90A-NEXT:    ; def v[0:1]1950; GFX90A-NEXT:    ;;#ASMEND1951; GFX90A-NEXT:    ;;#ASMSTART1952; GFX90A-NEXT:    ; def v[2:3]1953; GFX90A-NEXT:    ;;#ASMEND1954; GFX90A-NEXT:    v_mov_b32_e32 v4, 01955; GFX90A-NEXT:    v_mov_b32_e32 v0, v31956; GFX90A-NEXT:    v_mov_b32_e32 v2, v31957; GFX90A-NEXT:    global_store_dwordx3 v4, v[0:2], s[16:17]1958; GFX90A-NEXT:    s_waitcnt vmcnt(0)1959; GFX90A-NEXT:    s_setpc_b64 s[30:31]1960;1961; GFX942-LABEL: v_shuffle_v3i32_v2i32__3_1_3:1962; GFX942:       ; %bb.0:1963; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1964; GFX942-NEXT:    ;;#ASMSTART1965; GFX942-NEXT:    ; def v[0:1]1966; GFX942-NEXT:    ;;#ASMEND1967; GFX942-NEXT:    ;;#ASMSTART1968; GFX942-NEXT:    ; def v[2:3]1969; GFX942-NEXT:    ;;#ASMEND1970; GFX942-NEXT:    v_mov_b32_e32 v4, 01971; GFX942-NEXT:    v_mov_b32_e32 v0, v31972; GFX942-NEXT:    v_mov_b32_e32 v2, v31973; GFX942-NEXT:    global_store_dwordx3 v4, v[0:2], s[0:1]1974; GFX942-NEXT:    s_waitcnt vmcnt(0)1975; GFX942-NEXT:    s_setpc_b64 s[30:31]1976  %vec0 = call <2 x i32> asm "; def $0", "=v"()1977  %vec1 = call <2 x i32> asm "; def $0", "=v"()1978  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 1, i32 3>1979  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 161980  ret void1981}1982 1983define void @v_shuffle_v3i32_v2i32__3_2_3(ptr addrspace(1) inreg %ptr) {1984; GFX900-LABEL: v_shuffle_v3i32_v2i32__3_2_3:1985; GFX900:       ; %bb.0:1986; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1987; GFX900-NEXT:    v_mov_b32_e32 v4, 01988; GFX900-NEXT:    ;;#ASMSTART1989; GFX900-NEXT:    ; def v[0:1]1990; GFX900-NEXT:    ;;#ASMEND1991; GFX900-NEXT:    v_mov_b32_e32 v2, v01992; GFX900-NEXT:    v_mov_b32_e32 v3, v11993; GFX900-NEXT:    global_store_dwordx3 v4, v[1:3], s[16:17]1994; GFX900-NEXT:    s_waitcnt vmcnt(0)1995; GFX900-NEXT:    s_setpc_b64 s[30:31]1996;1997; GFX90A-LABEL: v_shuffle_v3i32_v2i32__3_2_3:1998; GFX90A:       ; %bb.0:1999; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2000; GFX90A-NEXT:    v_mov_b32_e32 v2, 02001; GFX90A-NEXT:    ;;#ASMSTART2002; GFX90A-NEXT:    ; def v[0:1]2003; GFX90A-NEXT:    ;;#ASMEND2004; GFX90A-NEXT:    v_mov_b32_e32 v4, v12005; GFX90A-NEXT:    v_mov_b32_e32 v5, v02006; GFX90A-NEXT:    v_mov_b32_e32 v6, v12007; GFX90A-NEXT:    global_store_dwordx3 v2, v[4:6], s[16:17]2008; GFX90A-NEXT:    s_waitcnt vmcnt(0)2009; GFX90A-NEXT:    s_setpc_b64 s[30:31]2010;2011; GFX942-LABEL: v_shuffle_v3i32_v2i32__3_2_3:2012; GFX942:       ; %bb.0:2013; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2014; GFX942-NEXT:    v_mov_b32_e32 v2, 02015; GFX942-NEXT:    ;;#ASMSTART2016; GFX942-NEXT:    ; def v[0:1]2017; GFX942-NEXT:    ;;#ASMEND2018; GFX942-NEXT:    s_nop 02019; GFX942-NEXT:    v_mov_b32_e32 v4, v12020; GFX942-NEXT:    v_mov_b32_e32 v5, v02021; GFX942-NEXT:    v_mov_b32_e32 v6, v12022; GFX942-NEXT:    global_store_dwordx3 v2, v[4:6], s[0:1]2023; GFX942-NEXT:    s_waitcnt vmcnt(0)2024; GFX942-NEXT:    s_setpc_b64 s[30:31]2025  %vec0 = call <2 x i32> asm "; def $0", "=v"()2026  %vec1 = call <2 x i32> asm "; def $0", "=v"()2027  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 2, i32 3>2028  store <3 x i32> %shuf, ptr addrspace(1) %ptr, align 162029  ret void2030}2031 2032define void @s_shuffle_v3i32_v2i32__u_u_u() {2033; GFX9-LABEL: s_shuffle_v3i32_v2i32__u_u_u:2034; GFX9:       ; %bb.0:2035; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2036; GFX9-NEXT:    ;;#ASMSTART2037; GFX9-NEXT:    ; use s[8:10]2038; GFX9-NEXT:    ;;#ASMEND2039; GFX9-NEXT:    s_setpc_b64 s[30:31]2040  %vec0 = call <2 x i32> asm "; def $0", "=s"()2041  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> poison2042  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)2043  ret void2044}2045 2046define void @s_shuffle_v3i32_v2i32__0_u_u() {2047; GFX900-LABEL: s_shuffle_v3i32_v2i32__0_u_u:2048; GFX900:       ; %bb.0:2049; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2050; GFX900-NEXT:    ;;#ASMSTART2051; GFX900-NEXT:    ; def s[8:9]2052; GFX900-NEXT:    ;;#ASMEND2053; GFX900-NEXT:    ;;#ASMSTART2054; GFX900-NEXT:    ; use s[8:10]2055; GFX900-NEXT:    ;;#ASMEND2056; GFX900-NEXT:    s_setpc_b64 s[30:31]2057;2058; GFX90A-LABEL: s_shuffle_v3i32_v2i32__0_u_u:2059; GFX90A:       ; %bb.0:2060; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2061; GFX90A-NEXT:    ;;#ASMSTART2062; GFX90A-NEXT:    ; def s[8:9]2063; GFX90A-NEXT:    ;;#ASMEND2064; GFX90A-NEXT:    ;;#ASMSTART2065; GFX90A-NEXT:    ; use s[8:10]2066; GFX90A-NEXT:    ;;#ASMEND2067; GFX90A-NEXT:    s_setpc_b64 s[30:31]2068;2069; GFX942-LABEL: s_shuffle_v3i32_v2i32__0_u_u:2070; GFX942:       ; %bb.0:2071; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2072; GFX942-NEXT:    ;;#ASMSTART2073; GFX942-NEXT:    ; def s[8:9]2074; GFX942-NEXT:    ;;#ASMEND2075; GFX942-NEXT:    s_nop 02076; GFX942-NEXT:    ;;#ASMSTART2077; GFX942-NEXT:    ; use s[8:10]2078; GFX942-NEXT:    ;;#ASMEND2079; GFX942-NEXT:    s_setpc_b64 s[30:31]2080  %vec0 = call <2 x i32> asm "; def $0", "=s"()2081  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 0, i32 poison, i32 poison>2082  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)2083  ret void2084}2085 2086define void @s_shuffle_v3i32_v2i32__1_u_u() {2087; GFX900-LABEL: s_shuffle_v3i32_v2i32__1_u_u:2088; GFX900:       ; %bb.0:2089; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2090; GFX900-NEXT:    ;;#ASMSTART2091; GFX900-NEXT:    ; def s[4:5]2092; GFX900-NEXT:    ;;#ASMEND2093; GFX900-NEXT:    s_mov_b32 s8, s52094; GFX900-NEXT:    ;;#ASMSTART2095; GFX900-NEXT:    ; use s[8:10]2096; GFX900-NEXT:    ;;#ASMEND2097; GFX900-NEXT:    s_setpc_b64 s[30:31]2098;2099; GFX90A-LABEL: s_shuffle_v3i32_v2i32__1_u_u:2100; GFX90A:       ; %bb.0:2101; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2102; GFX90A-NEXT:    ;;#ASMSTART2103; GFX90A-NEXT:    ; def s[4:5]2104; GFX90A-NEXT:    ;;#ASMEND2105; GFX90A-NEXT:    s_mov_b32 s8, s52106; GFX90A-NEXT:    ;;#ASMSTART2107; GFX90A-NEXT:    ; use s[8:10]2108; GFX90A-NEXT:    ;;#ASMEND2109; GFX90A-NEXT:    s_setpc_b64 s[30:31]2110;2111; GFX942-LABEL: s_shuffle_v3i32_v2i32__1_u_u:2112; GFX942:       ; %bb.0:2113; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2114; GFX942-NEXT:    ;;#ASMSTART2115; GFX942-NEXT:    ; def s[0:1]2116; GFX942-NEXT:    ;;#ASMEND2117; GFX942-NEXT:    s_mov_b32 s8, s12118; GFX942-NEXT:    ;;#ASMSTART2119; GFX942-NEXT:    ; use s[8:10]2120; GFX942-NEXT:    ;;#ASMEND2121; GFX942-NEXT:    s_setpc_b64 s[30:31]2122  %vec0 = call <2 x i32> asm "; def $0", "=s"()2123  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 1, i32 poison, i32 poison>2124  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)2125  ret void2126}2127 2128define void @s_shuffle_v3i32_v2i32__2_u_u() {2129; GFX9-LABEL: s_shuffle_v3i32_v2i32__2_u_u:2130; GFX9:       ; %bb.0:2131; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2132; GFX9-NEXT:    ;;#ASMSTART2133; GFX9-NEXT:    ; use s[8:10]2134; GFX9-NEXT:    ;;#ASMEND2135; GFX9-NEXT:    s_setpc_b64 s[30:31]2136  %vec0 = call <2 x i32> asm "; def $0", "=s"()2137  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 2, i32 poison, i32 poison>2138  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)2139  ret void2140}2141 2142define void @s_shuffle_v3i32_v2i32__3_u_u() {2143; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_u_u:2144; GFX900:       ; %bb.0:2145; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2146; GFX900-NEXT:    ;;#ASMSTART2147; GFX900-NEXT:    ; def s[4:5]2148; GFX900-NEXT:    ;;#ASMEND2149; GFX900-NEXT:    s_mov_b32 s8, s52150; GFX900-NEXT:    ;;#ASMSTART2151; GFX900-NEXT:    ; use s[8:10]2152; GFX900-NEXT:    ;;#ASMEND2153; GFX900-NEXT:    s_setpc_b64 s[30:31]2154;2155; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_u_u:2156; GFX90A:       ; %bb.0:2157; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2158; GFX90A-NEXT:    ;;#ASMSTART2159; GFX90A-NEXT:    ; def s[4:5]2160; GFX90A-NEXT:    ;;#ASMEND2161; GFX90A-NEXT:    s_mov_b32 s8, s52162; GFX90A-NEXT:    ;;#ASMSTART2163; GFX90A-NEXT:    ; use s[8:10]2164; GFX90A-NEXT:    ;;#ASMEND2165; GFX90A-NEXT:    s_setpc_b64 s[30:31]2166;2167; GFX942-LABEL: s_shuffle_v3i32_v2i32__3_u_u:2168; GFX942:       ; %bb.0:2169; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2170; GFX942-NEXT:    ;;#ASMSTART2171; GFX942-NEXT:    ; def s[0:1]2172; GFX942-NEXT:    ;;#ASMEND2173; GFX942-NEXT:    s_mov_b32 s8, s12174; GFX942-NEXT:    ;;#ASMSTART2175; GFX942-NEXT:    ; use s[8:10]2176; GFX942-NEXT:    ;;#ASMEND2177; GFX942-NEXT:    s_setpc_b64 s[30:31]2178  %vec0 = call <2 x i32> asm "; def $0", "=s"()2179  %vec1 = call <2 x i32> asm "; def $0", "=s"()2180  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 poison, i32 poison>2181  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)2182  ret void2183}2184 2185define void @s_shuffle_v3i32_v2i32__3_0_u() {2186; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_0_u:2187; GFX900:       ; %bb.0:2188; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2189; GFX900-NEXT:    ;;#ASMSTART2190; GFX900-NEXT:    ; def s[4:5]2191; GFX900-NEXT:    ;;#ASMEND2192; GFX900-NEXT:    ;;#ASMSTART2193; GFX900-NEXT:    ; def s[6:7]2194; GFX900-NEXT:    ;;#ASMEND2195; GFX900-NEXT:    s_mov_b32 s8, s72196; GFX900-NEXT:    s_mov_b32 s9, s42197; GFX900-NEXT:    ;;#ASMSTART2198; GFX900-NEXT:    ; use s[8:10]2199; GFX900-NEXT:    ;;#ASMEND2200; GFX900-NEXT:    s_setpc_b64 s[30:31]2201;2202; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_0_u:2203; GFX90A:       ; %bb.0:2204; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2205; GFX90A-NEXT:    ;;#ASMSTART2206; GFX90A-NEXT:    ; def s[4:5]2207; GFX90A-NEXT:    ;;#ASMEND2208; GFX90A-NEXT:    ;;#ASMSTART2209; GFX90A-NEXT:    ; def s[6:7]2210; GFX90A-NEXT:    ;;#ASMEND2211; GFX90A-NEXT:    s_mov_b32 s8, s72212; GFX90A-NEXT:    s_mov_b32 s9, s42213; GFX90A-NEXT:    ;;#ASMSTART2214; GFX90A-NEXT:    ; use s[8:10]2215; GFX90A-NEXT:    ;;#ASMEND2216; GFX90A-NEXT:    s_setpc_b64 s[30:31]2217;2218; GFX942-LABEL: s_shuffle_v3i32_v2i32__3_0_u:2219; GFX942:       ; %bb.0:2220; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2221; GFX942-NEXT:    ;;#ASMSTART2222; GFX942-NEXT:    ; def s[0:1]2223; GFX942-NEXT:    ;;#ASMEND2224; GFX942-NEXT:    ;;#ASMSTART2225; GFX942-NEXT:    ; def s[2:3]2226; GFX942-NEXT:    ;;#ASMEND2227; GFX942-NEXT:    s_mov_b32 s8, s32228; GFX942-NEXT:    s_mov_b32 s9, s02229; GFX942-NEXT:    ;;#ASMSTART2230; GFX942-NEXT:    ; use s[8:10]2231; GFX942-NEXT:    ;;#ASMEND2232; GFX942-NEXT:    s_setpc_b64 s[30:31]2233  %vec0 = call <2 x i32> asm "; def $0", "=s"()2234  %vec1 = call <2 x i32> asm "; def $0", "=s"()2235  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 0, i32 poison>2236  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)2237  ret void2238}2239 2240define void @s_shuffle_v3i32_v2i32__3_1_u() {2241; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_1_u:2242; GFX900:       ; %bb.0:2243; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2244; GFX900-NEXT:    ;;#ASMSTART2245; GFX900-NEXT:    ; def s[8:9]2246; GFX900-NEXT:    ;;#ASMEND2247; GFX900-NEXT:    ;;#ASMSTART2248; GFX900-NEXT:    ; def s[4:5]2249; GFX900-NEXT:    ;;#ASMEND2250; GFX900-NEXT:    s_mov_b32 s8, s52251; GFX900-NEXT:    ;;#ASMSTART2252; GFX900-NEXT:    ; use s[8:10]2253; GFX900-NEXT:    ;;#ASMEND2254; GFX900-NEXT:    s_setpc_b64 s[30:31]2255;2256; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_1_u:2257; GFX90A:       ; %bb.0:2258; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2259; GFX90A-NEXT:    ;;#ASMSTART2260; GFX90A-NEXT:    ; def s[8:9]2261; GFX90A-NEXT:    ;;#ASMEND2262; GFX90A-NEXT:    ;;#ASMSTART2263; GFX90A-NEXT:    ; def s[4:5]2264; GFX90A-NEXT:    ;;#ASMEND2265; GFX90A-NEXT:    s_mov_b32 s8, s52266; GFX90A-NEXT:    ;;#ASMSTART2267; GFX90A-NEXT:    ; use s[8:10]2268; GFX90A-NEXT:    ;;#ASMEND2269; GFX90A-NEXT:    s_setpc_b64 s[30:31]2270;2271; GFX942-LABEL: s_shuffle_v3i32_v2i32__3_1_u:2272; GFX942:       ; %bb.0:2273; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2274; GFX942-NEXT:    ;;#ASMSTART2275; GFX942-NEXT:    ; def s[8:9]2276; GFX942-NEXT:    ;;#ASMEND2277; GFX942-NEXT:    ;;#ASMSTART2278; GFX942-NEXT:    ; def s[0:1]2279; GFX942-NEXT:    ;;#ASMEND2280; GFX942-NEXT:    s_mov_b32 s8, s12281; GFX942-NEXT:    ;;#ASMSTART2282; GFX942-NEXT:    ; use s[8:10]2283; GFX942-NEXT:    ;;#ASMEND2284; GFX942-NEXT:    s_setpc_b64 s[30:31]2285  %vec0 = call <2 x i32> asm "; def $0", "=s"()2286  %vec1 = call <2 x i32> asm "; def $0", "=s"()2287  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 1, i32 poison>2288  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)2289  ret void2290}2291 2292define void @s_shuffle_v3i32_v2i32__3_2_u() {2293; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_2_u:2294; GFX900:       ; %bb.0:2295; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2296; GFX900-NEXT:    ;;#ASMSTART2297; GFX900-NEXT:    ; def s[4:5]2298; GFX900-NEXT:    ;;#ASMEND2299; GFX900-NEXT:    s_mov_b32 s8, s52300; GFX900-NEXT:    s_mov_b32 s9, s42301; GFX900-NEXT:    ;;#ASMSTART2302; GFX900-NEXT:    ; use s[8:10]2303; GFX900-NEXT:    ;;#ASMEND2304; GFX900-NEXT:    s_setpc_b64 s[30:31]2305;2306; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_2_u:2307; GFX90A:       ; %bb.0:2308; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2309; GFX90A-NEXT:    ;;#ASMSTART2310; GFX90A-NEXT:    ; def s[4:5]2311; GFX90A-NEXT:    ;;#ASMEND2312; GFX90A-NEXT:    s_mov_b32 s8, s52313; GFX90A-NEXT:    s_mov_b32 s9, s42314; GFX90A-NEXT:    ;;#ASMSTART2315; GFX90A-NEXT:    ; use s[8:10]2316; GFX90A-NEXT:    ;;#ASMEND2317; GFX90A-NEXT:    s_setpc_b64 s[30:31]2318;2319; GFX942-LABEL: s_shuffle_v3i32_v2i32__3_2_u:2320; GFX942:       ; %bb.0:2321; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2322; GFX942-NEXT:    ;;#ASMSTART2323; GFX942-NEXT:    ; def s[0:1]2324; GFX942-NEXT:    ;;#ASMEND2325; GFX942-NEXT:    s_mov_b32 s8, s12326; GFX942-NEXT:    s_mov_b32 s9, s02327; GFX942-NEXT:    ;;#ASMSTART2328; GFX942-NEXT:    ; use s[8:10]2329; GFX942-NEXT:    ;;#ASMEND2330; GFX942-NEXT:    s_setpc_b64 s[30:31]2331  %vec0 = call <2 x i32> asm "; def $0", "=s"()2332  %vec1 = call <2 x i32> asm "; def $0", "=s"()2333  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 2, i32 poison>2334  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)2335  ret void2336}2337 2338define void @s_shuffle_v3i32_v2i32__3_3_u() {2339; GFX9-LABEL: s_shuffle_v3i32_v2i32__3_3_u:2340; GFX9:       ; %bb.0:2341; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2342; GFX9-NEXT:    ;;#ASMSTART2343; GFX9-NEXT:    ; def s[8:9]2344; GFX9-NEXT:    ;;#ASMEND2345; GFX9-NEXT:    s_mov_b32 s8, s92346; GFX9-NEXT:    ;;#ASMSTART2347; GFX9-NEXT:    ; use s[8:10]2348; GFX9-NEXT:    ;;#ASMEND2349; GFX9-NEXT:    s_setpc_b64 s[30:31]2350  %vec0 = call <2 x i32> asm "; def $0", "=s"()2351  %vec1 = call <2 x i32> asm "; def $0", "=s"()2352  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 3, i32 poison>2353  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)2354  ret void2355}2356 2357define void @s_shuffle_v3i32_v2i32__3_3_0() {2358; GFX9-LABEL: s_shuffle_v3i32_v2i32__3_3_0:2359; GFX9:       ; %bb.0:2360; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2361; GFX9-NEXT:    ;;#ASMSTART2362; GFX9-NEXT:    ; def s[8:9]2363; GFX9-NEXT:    ;;#ASMEND2364; GFX9-NEXT:    ;;#ASMSTART2365; GFX9-NEXT:    ; def s[10:11]2366; GFX9-NEXT:    ;;#ASMEND2367; GFX9-NEXT:    s_mov_b32 s8, s92368; GFX9-NEXT:    ;;#ASMSTART2369; GFX9-NEXT:    ; use s[8:10]2370; GFX9-NEXT:    ;;#ASMEND2371; GFX9-NEXT:    s_setpc_b64 s[30:31]2372  %vec0 = call <2 x i32> asm "; def $0", "=s"()2373  %vec1 = call <2 x i32> asm "; def $0", "=s"()2374  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 3, i32 0>2375  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)2376  ret void2377}2378 2379define void @s_shuffle_v3i32_v2i32__3_3_1() {2380; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_3_1:2381; GFX900:       ; %bb.0:2382; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2383; GFX900-NEXT:    ;;#ASMSTART2384; GFX900-NEXT:    ; def s[8:9]2385; GFX900-NEXT:    ;;#ASMEND2386; GFX900-NEXT:    ;;#ASMSTART2387; GFX900-NEXT:    ; def s[4:5]2388; GFX900-NEXT:    ;;#ASMEND2389; GFX900-NEXT:    s_mov_b32 s8, s92390; GFX900-NEXT:    s_mov_b32 s10, s52391; GFX900-NEXT:    ;;#ASMSTART2392; GFX900-NEXT:    ; use s[8:10]2393; GFX900-NEXT:    ;;#ASMEND2394; GFX900-NEXT:    s_setpc_b64 s[30:31]2395;2396; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_3_1:2397; GFX90A:       ; %bb.0:2398; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2399; GFX90A-NEXT:    ;;#ASMSTART2400; GFX90A-NEXT:    ; def s[8:9]2401; GFX90A-NEXT:    ;;#ASMEND2402; GFX90A-NEXT:    ;;#ASMSTART2403; GFX90A-NEXT:    ; def s[4:5]2404; GFX90A-NEXT:    ;;#ASMEND2405; GFX90A-NEXT:    s_mov_b32 s8, s92406; GFX90A-NEXT:    s_mov_b32 s10, s52407; GFX90A-NEXT:    ;;#ASMSTART2408; GFX90A-NEXT:    ; use s[8:10]2409; GFX90A-NEXT:    ;;#ASMEND2410; GFX90A-NEXT:    s_setpc_b64 s[30:31]2411;2412; GFX942-LABEL: s_shuffle_v3i32_v2i32__3_3_1:2413; GFX942:       ; %bb.0:2414; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2415; GFX942-NEXT:    ;;#ASMSTART2416; GFX942-NEXT:    ; def s[8:9]2417; GFX942-NEXT:    ;;#ASMEND2418; GFX942-NEXT:    ;;#ASMSTART2419; GFX942-NEXT:    ; def s[0:1]2420; GFX942-NEXT:    ;;#ASMEND2421; GFX942-NEXT:    s_mov_b32 s8, s92422; GFX942-NEXT:    s_mov_b32 s10, s12423; GFX942-NEXT:    ;;#ASMSTART2424; GFX942-NEXT:    ; use s[8:10]2425; GFX942-NEXT:    ;;#ASMEND2426; GFX942-NEXT:    s_setpc_b64 s[30:31]2427  %vec0 = call <2 x i32> asm "; def $0", "=s"()2428  %vec1 = call <2 x i32> asm "; def $0", "=s"()2429  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 3, i32 1>2430  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)2431  ret void2432}2433 2434define void @s_shuffle_v3i32_v2i32__3_3_2() {2435; GFX9-LABEL: s_shuffle_v3i32_v2i32__3_3_2:2436; GFX9:       ; %bb.0:2437; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2438; GFX9-NEXT:    ;;#ASMSTART2439; GFX9-NEXT:    ; def s[10:11]2440; GFX9-NEXT:    ;;#ASMEND2441; GFX9-NEXT:    s_mov_b32 s8, s112442; GFX9-NEXT:    s_mov_b32 s9, s112443; GFX9-NEXT:    ;;#ASMSTART2444; GFX9-NEXT:    ; use s[8:10]2445; GFX9-NEXT:    ;;#ASMEND2446; GFX9-NEXT:    s_setpc_b64 s[30:31]2447  %vec0 = call <2 x i32> asm "; def $0", "=s"()2448  %vec1 = call <2 x i32> asm "; def $0", "=s"()2449  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 3, i32 2>2450  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)2451  ret void2452}2453 2454define void @s_shuffle_v3i32_v2i32__3_3_3() {2455; GFX9-LABEL: s_shuffle_v3i32_v2i32__3_3_3:2456; GFX9:       ; %bb.0:2457; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2458; GFX9-NEXT:    ;;#ASMSTART2459; GFX9-NEXT:    ; def s[8:9]2460; GFX9-NEXT:    ;;#ASMEND2461; GFX9-NEXT:    s_mov_b32 s8, s92462; GFX9-NEXT:    s_mov_b32 s10, s92463; GFX9-NEXT:    ;;#ASMSTART2464; GFX9-NEXT:    ; use s[8:10]2465; GFX9-NEXT:    ;;#ASMEND2466; GFX9-NEXT:    s_setpc_b64 s[30:31]2467  %vec0 = call <2 x i32> asm "; def $0", "=s"()2468  %vec1 = call <2 x i32> asm "; def $0", "=s"()2469  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 3, i32 3>2470  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)2471  ret void2472}2473 2474define void @s_shuffle_v3i32_v2i32__u_0_0() {2475; GFX9-LABEL: s_shuffle_v3i32_v2i32__u_0_0:2476; GFX9:       ; %bb.0:2477; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2478; GFX9-NEXT:    ;;#ASMSTART2479; GFX9-NEXT:    ; def s[10:11]2480; GFX9-NEXT:    ;;#ASMEND2481; GFX9-NEXT:    s_mov_b32 s9, s102482; GFX9-NEXT:    ;;#ASMSTART2483; GFX9-NEXT:    ; use s[8:10]2484; GFX9-NEXT:    ;;#ASMEND2485; GFX9-NEXT:    s_setpc_b64 s[30:31]2486  %vec0 = call <2 x i32> asm "; def $0", "=s"()2487  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 poison, i32 0, i32 0>2488  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)2489  ret void2490}2491 2492define void @s_shuffle_v3i32_v2i32__0_0_0() {2493; GFX9-LABEL: s_shuffle_v3i32_v2i32__0_0_0:2494; GFX9:       ; %bb.0:2495; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2496; GFX9-NEXT:    ;;#ASMSTART2497; GFX9-NEXT:    ; def s[8:9]2498; GFX9-NEXT:    ;;#ASMEND2499; GFX9-NEXT:    s_mov_b32 s9, s82500; GFX9-NEXT:    s_mov_b32 s10, s82501; GFX9-NEXT:    ;;#ASMSTART2502; GFX9-NEXT:    ; use s[8:10]2503; GFX9-NEXT:    ;;#ASMEND2504; GFX9-NEXT:    s_setpc_b64 s[30:31]2505  %vec0 = call <2 x i32> asm "; def $0", "=s"()2506  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> zeroinitializer2507  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)2508  ret void2509}2510 2511define void @s_shuffle_v3i32_v2i32__1_0_0() {2512; GFX9-LABEL: s_shuffle_v3i32_v2i32__1_0_0:2513; GFX9:       ; %bb.0:2514; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2515; GFX9-NEXT:    ;;#ASMSTART2516; GFX9-NEXT:    ; def s[10:11]2517; GFX9-NEXT:    ;;#ASMEND2518; GFX9-NEXT:    s_mov_b32 s8, s112519; GFX9-NEXT:    s_mov_b32 s9, s102520; GFX9-NEXT:    ;;#ASMSTART2521; GFX9-NEXT:    ; use s[8:10]2522; GFX9-NEXT:    ;;#ASMEND2523; GFX9-NEXT:    s_setpc_b64 s[30:31]2524  %vec0 = call <2 x i32> asm "; def $0", "=s"()2525  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 1, i32 0, i32 0>2526  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)2527  ret void2528}2529 2530define void @s_shuffle_v3i32_v2i32__2_0_0() {2531; GFX9-LABEL: s_shuffle_v3i32_v2i32__2_0_0:2532; GFX9:       ; %bb.0:2533; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2534; GFX9-NEXT:    ;;#ASMSTART2535; GFX9-NEXT:    ; def s[10:11]2536; GFX9-NEXT:    ;;#ASMEND2537; GFX9-NEXT:    s_mov_b32 s9, s102538; GFX9-NEXT:    ;;#ASMSTART2539; GFX9-NEXT:    ; use s[8:10]2540; GFX9-NEXT:    ;;#ASMEND2541; GFX9-NEXT:    s_setpc_b64 s[30:31]2542  %vec0 = call <2 x i32> asm "; def $0", "=s"()2543  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 2, i32 0, i32 0>2544  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)2545  ret void2546}2547 2548define void @s_shuffle_v3i32_v2i32__3_0_0() {2549; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_0_0:2550; GFX900:       ; %bb.0:2551; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2552; GFX900-NEXT:    ;;#ASMSTART2553; GFX900-NEXT:    ; def s[10:11]2554; GFX900-NEXT:    ;;#ASMEND2555; GFX900-NEXT:    ;;#ASMSTART2556; GFX900-NEXT:    ; def s[4:5]2557; GFX900-NEXT:    ;;#ASMEND2558; GFX900-NEXT:    s_mov_b32 s8, s52559; GFX900-NEXT:    s_mov_b32 s9, s102560; GFX900-NEXT:    ;;#ASMSTART2561; GFX900-NEXT:    ; use s[8:10]2562; GFX900-NEXT:    ;;#ASMEND2563; GFX900-NEXT:    s_setpc_b64 s[30:31]2564;2565; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_0_0:2566; GFX90A:       ; %bb.0:2567; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2568; GFX90A-NEXT:    ;;#ASMSTART2569; GFX90A-NEXT:    ; def s[10:11]2570; GFX90A-NEXT:    ;;#ASMEND2571; GFX90A-NEXT:    ;;#ASMSTART2572; GFX90A-NEXT:    ; def s[4:5]2573; GFX90A-NEXT:    ;;#ASMEND2574; GFX90A-NEXT:    s_mov_b32 s8, s52575; GFX90A-NEXT:    s_mov_b32 s9, s102576; GFX90A-NEXT:    ;;#ASMSTART2577; GFX90A-NEXT:    ; use s[8:10]2578; GFX90A-NEXT:    ;;#ASMEND2579; GFX90A-NEXT:    s_setpc_b64 s[30:31]2580;2581; GFX942-LABEL: s_shuffle_v3i32_v2i32__3_0_0:2582; GFX942:       ; %bb.0:2583; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2584; GFX942-NEXT:    ;;#ASMSTART2585; GFX942-NEXT:    ; def s[10:11]2586; GFX942-NEXT:    ;;#ASMEND2587; GFX942-NEXT:    ;;#ASMSTART2588; GFX942-NEXT:    ; def s[0:1]2589; GFX942-NEXT:    ;;#ASMEND2590; GFX942-NEXT:    s_mov_b32 s8, s12591; GFX942-NEXT:    s_mov_b32 s9, s102592; GFX942-NEXT:    ;;#ASMSTART2593; GFX942-NEXT:    ; use s[8:10]2594; GFX942-NEXT:    ;;#ASMEND2595; GFX942-NEXT:    s_setpc_b64 s[30:31]2596  %vec0 = call <2 x i32> asm "; def $0", "=s"()2597  %vec1 = call <2 x i32> asm "; def $0", "=s"()2598  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 0, i32 0>2599  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)2600  ret void2601}2602 2603define void @s_shuffle_v3i32_v2i32__3_u_0() {2604; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_u_0:2605; GFX900:       ; %bb.0:2606; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2607; GFX900-NEXT:    ;;#ASMSTART2608; GFX900-NEXT:    ; def s[10:11]2609; GFX900-NEXT:    ;;#ASMEND2610; GFX900-NEXT:    ;;#ASMSTART2611; GFX900-NEXT:    ; def s[4:5]2612; GFX900-NEXT:    ;;#ASMEND2613; GFX900-NEXT:    s_mov_b32 s8, s52614; GFX900-NEXT:    ;;#ASMSTART2615; GFX900-NEXT:    ; use s[8:10]2616; GFX900-NEXT:    ;;#ASMEND2617; GFX900-NEXT:    s_setpc_b64 s[30:31]2618;2619; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_u_0:2620; GFX90A:       ; %bb.0:2621; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2622; GFX90A-NEXT:    ;;#ASMSTART2623; GFX90A-NEXT:    ; def s[10:11]2624; GFX90A-NEXT:    ;;#ASMEND2625; GFX90A-NEXT:    ;;#ASMSTART2626; GFX90A-NEXT:    ; def s[4:5]2627; GFX90A-NEXT:    ;;#ASMEND2628; GFX90A-NEXT:    s_mov_b32 s8, s52629; GFX90A-NEXT:    ;;#ASMSTART2630; GFX90A-NEXT:    ; use s[8:10]2631; GFX90A-NEXT:    ;;#ASMEND2632; GFX90A-NEXT:    s_setpc_b64 s[30:31]2633;2634; GFX942-LABEL: s_shuffle_v3i32_v2i32__3_u_0:2635; GFX942:       ; %bb.0:2636; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2637; GFX942-NEXT:    ;;#ASMSTART2638; GFX942-NEXT:    ; def s[10:11]2639; GFX942-NEXT:    ;;#ASMEND2640; GFX942-NEXT:    ;;#ASMSTART2641; GFX942-NEXT:    ; def s[0:1]2642; GFX942-NEXT:    ;;#ASMEND2643; GFX942-NEXT:    s_mov_b32 s8, s12644; GFX942-NEXT:    ;;#ASMSTART2645; GFX942-NEXT:    ; use s[8:10]2646; GFX942-NEXT:    ;;#ASMEND2647; GFX942-NEXT:    s_setpc_b64 s[30:31]2648  %vec0 = call <2 x i32> asm "; def $0", "=s"()2649  %vec1 = call <2 x i32> asm "; def $0", "=s"()2650  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 poison, i32 0>2651  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)2652  ret void2653}2654 2655define void @s_shuffle_v3i32_v2i32__3_1_0() {2656; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_1_0:2657; GFX900:       ; %bb.0:2658; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2659; GFX900-NEXT:    ;;#ASMSTART2660; GFX900-NEXT:    ; def s[10:11]2661; GFX900-NEXT:    ;;#ASMEND2662; GFX900-NEXT:    ;;#ASMSTART2663; GFX900-NEXT:    ; def s[4:5]2664; GFX900-NEXT:    ;;#ASMEND2665; GFX900-NEXT:    s_mov_b32 s8, s52666; GFX900-NEXT:    s_mov_b32 s9, s112667; GFX900-NEXT:    ;;#ASMSTART2668; GFX900-NEXT:    ; use s[8:10]2669; GFX900-NEXT:    ;;#ASMEND2670; GFX900-NEXT:    s_setpc_b64 s[30:31]2671;2672; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_1_0:2673; GFX90A:       ; %bb.0:2674; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2675; GFX90A-NEXT:    ;;#ASMSTART2676; GFX90A-NEXT:    ; def s[10:11]2677; GFX90A-NEXT:    ;;#ASMEND2678; GFX90A-NEXT:    ;;#ASMSTART2679; GFX90A-NEXT:    ; def s[4:5]2680; GFX90A-NEXT:    ;;#ASMEND2681; GFX90A-NEXT:    s_mov_b32 s8, s52682; GFX90A-NEXT:    s_mov_b32 s9, s112683; GFX90A-NEXT:    ;;#ASMSTART2684; GFX90A-NEXT:    ; use s[8:10]2685; GFX90A-NEXT:    ;;#ASMEND2686; GFX90A-NEXT:    s_setpc_b64 s[30:31]2687;2688; GFX942-LABEL: s_shuffle_v3i32_v2i32__3_1_0:2689; GFX942:       ; %bb.0:2690; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2691; GFX942-NEXT:    ;;#ASMSTART2692; GFX942-NEXT:    ; def s[10:11]2693; GFX942-NEXT:    ;;#ASMEND2694; GFX942-NEXT:    ;;#ASMSTART2695; GFX942-NEXT:    ; def s[0:1]2696; GFX942-NEXT:    ;;#ASMEND2697; GFX942-NEXT:    s_mov_b32 s8, s12698; GFX942-NEXT:    s_mov_b32 s9, s112699; GFX942-NEXT:    ;;#ASMSTART2700; GFX942-NEXT:    ; use s[8:10]2701; GFX942-NEXT:    ;;#ASMEND2702; GFX942-NEXT:    s_setpc_b64 s[30:31]2703  %vec0 = call <2 x i32> asm "; def $0", "=s"()2704  %vec1 = call <2 x i32> asm "; def $0", "=s"()2705  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 1, i32 0>2706  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)2707  ret void2708}2709 2710define void @s_shuffle_v3i32_v2i32__3_2_0() {2711; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_2_0:2712; GFX900:       ; %bb.0:2713; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2714; GFX900-NEXT:    ;;#ASMSTART2715; GFX900-NEXT:    ; def s[10:11]2716; GFX900-NEXT:    ;;#ASMEND2717; GFX900-NEXT:    ;;#ASMSTART2718; GFX900-NEXT:    ; def s[4:5]2719; GFX900-NEXT:    ;;#ASMEND2720; GFX900-NEXT:    s_mov_b32 s8, s52721; GFX900-NEXT:    s_mov_b32 s9, s42722; GFX900-NEXT:    ;;#ASMSTART2723; GFX900-NEXT:    ; use s[8:10]2724; GFX900-NEXT:    ;;#ASMEND2725; GFX900-NEXT:    s_setpc_b64 s[30:31]2726;2727; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_2_0:2728; GFX90A:       ; %bb.0:2729; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2730; GFX90A-NEXT:    ;;#ASMSTART2731; GFX90A-NEXT:    ; def s[10:11]2732; GFX90A-NEXT:    ;;#ASMEND2733; GFX90A-NEXT:    ;;#ASMSTART2734; GFX90A-NEXT:    ; def s[4:5]2735; GFX90A-NEXT:    ;;#ASMEND2736; GFX90A-NEXT:    s_mov_b32 s8, s52737; GFX90A-NEXT:    s_mov_b32 s9, s42738; GFX90A-NEXT:    ;;#ASMSTART2739; GFX90A-NEXT:    ; use s[8:10]2740; GFX90A-NEXT:    ;;#ASMEND2741; GFX90A-NEXT:    s_setpc_b64 s[30:31]2742;2743; GFX942-LABEL: s_shuffle_v3i32_v2i32__3_2_0:2744; GFX942:       ; %bb.0:2745; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2746; GFX942-NEXT:    ;;#ASMSTART2747; GFX942-NEXT:    ; def s[10:11]2748; GFX942-NEXT:    ;;#ASMEND2749; GFX942-NEXT:    ;;#ASMSTART2750; GFX942-NEXT:    ; def s[0:1]2751; GFX942-NEXT:    ;;#ASMEND2752; GFX942-NEXT:    s_mov_b32 s8, s12753; GFX942-NEXT:    s_mov_b32 s9, s02754; GFX942-NEXT:    ;;#ASMSTART2755; GFX942-NEXT:    ; use s[8:10]2756; GFX942-NEXT:    ;;#ASMEND2757; GFX942-NEXT:    s_setpc_b64 s[30:31]2758  %vec0 = call <2 x i32> asm "; def $0", "=s"()2759  %vec1 = call <2 x i32> asm "; def $0", "=s"()2760  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 2, i32 0>2761  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)2762  ret void2763}2764 2765define void @s_shuffle_v3i32_v2i32__u_1_1() {2766; GFX9-LABEL: s_shuffle_v3i32_v2i32__u_1_1:2767; GFX9:       ; %bb.0:2768; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2769; GFX9-NEXT:    ;;#ASMSTART2770; GFX9-NEXT:    ; def s[8:9]2771; GFX9-NEXT:    ;;#ASMEND2772; GFX9-NEXT:    s_mov_b32 s10, s92773; GFX9-NEXT:    ;;#ASMSTART2774; GFX9-NEXT:    ; use s[8:10]2775; GFX9-NEXT:    ;;#ASMEND2776; GFX9-NEXT:    s_setpc_b64 s[30:31]2777  %vec0 = call <2 x i32> asm "; def $0", "=s"()2778  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 poison, i32 1, i32 1>2779  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)2780  ret void2781}2782 2783define void @s_shuffle_v3i32_v2i32__0_1_1() {2784; GFX9-LABEL: s_shuffle_v3i32_v2i32__0_1_1:2785; GFX9:       ; %bb.0:2786; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2787; GFX9-NEXT:    ;;#ASMSTART2788; GFX9-NEXT:    ; def s[8:9]2789; GFX9-NEXT:    ;;#ASMEND2790; GFX9-NEXT:    s_mov_b32 s10, s92791; GFX9-NEXT:    ;;#ASMSTART2792; GFX9-NEXT:    ; use s[8:10]2793; GFX9-NEXT:    ;;#ASMEND2794; GFX9-NEXT:    s_setpc_b64 s[30:31]2795  %vec0 = call <2 x i32> asm "; def $0", "=s"()2796  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 0, i32 1, i32 1>2797  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)2798  ret void2799}2800 2801define void @s_shuffle_v3i32_v2i32__1_1_1() {2802; GFX9-LABEL: s_shuffle_v3i32_v2i32__1_1_1:2803; GFX9:       ; %bb.0:2804; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2805; GFX9-NEXT:    ;;#ASMSTART2806; GFX9-NEXT:    ; def s[8:9]2807; GFX9-NEXT:    ;;#ASMEND2808; GFX9-NEXT:    s_mov_b32 s8, s92809; GFX9-NEXT:    s_mov_b32 s10, s92810; GFX9-NEXT:    ;;#ASMSTART2811; GFX9-NEXT:    ; use s[8:10]2812; GFX9-NEXT:    ;;#ASMEND2813; GFX9-NEXT:    s_setpc_b64 s[30:31]2814  %vec0 = call <2 x i32> asm "; def $0", "=s"()2815  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 1, i32 1, i32 1>2816  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)2817  ret void2818}2819 2820define void @s_shuffle_v3i32_v2i32__2_1_1() {2821; GFX9-LABEL: s_shuffle_v3i32_v2i32__2_1_1:2822; GFX9:       ; %bb.0:2823; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2824; GFX9-NEXT:    ;;#ASMSTART2825; GFX9-NEXT:    ; def s[8:9]2826; GFX9-NEXT:    ;;#ASMEND2827; GFX9-NEXT:    s_mov_b32 s10, s92828; GFX9-NEXT:    ;;#ASMSTART2829; GFX9-NEXT:    ; use s[8:10]2830; GFX9-NEXT:    ;;#ASMEND2831; GFX9-NEXT:    s_setpc_b64 s[30:31]2832  %vec0 = call <2 x i32> asm "; def $0", "=s"()2833  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 2, i32 1, i32 1>2834  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)2835  ret void2836}2837 2838define void @s_shuffle_v3i32_v2i32__3_1_1() {2839; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_1_1:2840; GFX900:       ; %bb.0:2841; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2842; GFX900-NEXT:    ;;#ASMSTART2843; GFX900-NEXT:    ; def s[8:9]2844; GFX900-NEXT:    ;;#ASMEND2845; GFX900-NEXT:    ;;#ASMSTART2846; GFX900-NEXT:    ; def s[4:5]2847; GFX900-NEXT:    ;;#ASMEND2848; GFX900-NEXT:    s_mov_b32 s8, s52849; GFX900-NEXT:    s_mov_b32 s10, s92850; GFX900-NEXT:    ;;#ASMSTART2851; GFX900-NEXT:    ; use s[8:10]2852; GFX900-NEXT:    ;;#ASMEND2853; GFX900-NEXT:    s_setpc_b64 s[30:31]2854;2855; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_1_1:2856; GFX90A:       ; %bb.0:2857; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2858; GFX90A-NEXT:    ;;#ASMSTART2859; GFX90A-NEXT:    ; def s[8:9]2860; GFX90A-NEXT:    ;;#ASMEND2861; GFX90A-NEXT:    ;;#ASMSTART2862; GFX90A-NEXT:    ; def s[4:5]2863; GFX90A-NEXT:    ;;#ASMEND2864; GFX90A-NEXT:    s_mov_b32 s8, s52865; GFX90A-NEXT:    s_mov_b32 s10, s92866; GFX90A-NEXT:    ;;#ASMSTART2867; GFX90A-NEXT:    ; use s[8:10]2868; GFX90A-NEXT:    ;;#ASMEND2869; GFX90A-NEXT:    s_setpc_b64 s[30:31]2870;2871; GFX942-LABEL: s_shuffle_v3i32_v2i32__3_1_1:2872; GFX942:       ; %bb.0:2873; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2874; GFX942-NEXT:    ;;#ASMSTART2875; GFX942-NEXT:    ; def s[8:9]2876; GFX942-NEXT:    ;;#ASMEND2877; GFX942-NEXT:    ;;#ASMSTART2878; GFX942-NEXT:    ; def s[0:1]2879; GFX942-NEXT:    ;;#ASMEND2880; GFX942-NEXT:    s_mov_b32 s8, s12881; GFX942-NEXT:    s_mov_b32 s10, s92882; GFX942-NEXT:    ;;#ASMSTART2883; GFX942-NEXT:    ; use s[8:10]2884; GFX942-NEXT:    ;;#ASMEND2885; GFX942-NEXT:    s_setpc_b64 s[30:31]2886  %vec0 = call <2 x i32> asm "; def $0", "=s"()2887  %vec1 = call <2 x i32> asm "; def $0", "=s"()2888  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 1, i32 1>2889  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)2890  ret void2891}2892 2893define void @s_shuffle_v3i32_v2i32__3_u_1() {2894; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_u_1:2895; GFX900:       ; %bb.0:2896; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2897; GFX900-NEXT:    ;;#ASMSTART2898; GFX900-NEXT:    ; def s[4:5]2899; GFX900-NEXT:    ;;#ASMEND2900; GFX900-NEXT:    ;;#ASMSTART2901; GFX900-NEXT:    ; def s[6:7]2902; GFX900-NEXT:    ;;#ASMEND2903; GFX900-NEXT:    s_mov_b32 s8, s72904; GFX900-NEXT:    s_mov_b32 s10, s52905; GFX900-NEXT:    ;;#ASMSTART2906; GFX900-NEXT:    ; use s[8:10]2907; GFX900-NEXT:    ;;#ASMEND2908; GFX900-NEXT:    s_setpc_b64 s[30:31]2909;2910; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_u_1:2911; GFX90A:       ; %bb.0:2912; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2913; GFX90A-NEXT:    ;;#ASMSTART2914; GFX90A-NEXT:    ; def s[4:5]2915; GFX90A-NEXT:    ;;#ASMEND2916; GFX90A-NEXT:    ;;#ASMSTART2917; GFX90A-NEXT:    ; def s[6:7]2918; GFX90A-NEXT:    ;;#ASMEND2919; GFX90A-NEXT:    s_mov_b32 s8, s72920; GFX90A-NEXT:    s_mov_b32 s10, s52921; GFX90A-NEXT:    ;;#ASMSTART2922; GFX90A-NEXT:    ; use s[8:10]2923; GFX90A-NEXT:    ;;#ASMEND2924; GFX90A-NEXT:    s_setpc_b64 s[30:31]2925;2926; GFX942-LABEL: s_shuffle_v3i32_v2i32__3_u_1:2927; GFX942:       ; %bb.0:2928; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2929; GFX942-NEXT:    ;;#ASMSTART2930; GFX942-NEXT:    ; def s[0:1]2931; GFX942-NEXT:    ;;#ASMEND2932; GFX942-NEXT:    ;;#ASMSTART2933; GFX942-NEXT:    ; def s[2:3]2934; GFX942-NEXT:    ;;#ASMEND2935; GFX942-NEXT:    s_mov_b32 s8, s32936; GFX942-NEXT:    s_mov_b32 s10, s12937; GFX942-NEXT:    ;;#ASMSTART2938; GFX942-NEXT:    ; use s[8:10]2939; GFX942-NEXT:    ;;#ASMEND2940; GFX942-NEXT:    s_setpc_b64 s[30:31]2941  %vec0 = call <2 x i32> asm "; def $0", "=s"()2942  %vec1 = call <2 x i32> asm "; def $0", "=s"()2943  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 poison, i32 1>2944  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)2945  ret void2946}2947 2948define void @s_shuffle_v3i32_v2i32__3_0_1() {2949; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_0_1:2950; GFX900:       ; %bb.0:2951; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2952; GFX900-NEXT:    ;;#ASMSTART2953; GFX900-NEXT:    ; def s[4:5]2954; GFX900-NEXT:    ;;#ASMEND2955; GFX900-NEXT:    ;;#ASMSTART2956; GFX900-NEXT:    ; def s[6:7]2957; GFX900-NEXT:    ;;#ASMEND2958; GFX900-NEXT:    s_mov_b32 s8, s72959; GFX900-NEXT:    s_mov_b32 s9, s42960; GFX900-NEXT:    s_mov_b32 s10, s52961; GFX900-NEXT:    ;;#ASMSTART2962; GFX900-NEXT:    ; use s[8:10]2963; GFX900-NEXT:    ;;#ASMEND2964; GFX900-NEXT:    s_setpc_b64 s[30:31]2965;2966; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_0_1:2967; GFX90A:       ; %bb.0:2968; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2969; GFX90A-NEXT:    ;;#ASMSTART2970; GFX90A-NEXT:    ; def s[4:5]2971; GFX90A-NEXT:    ;;#ASMEND2972; GFX90A-NEXT:    ;;#ASMSTART2973; GFX90A-NEXT:    ; def s[6:7]2974; GFX90A-NEXT:    ;;#ASMEND2975; GFX90A-NEXT:    s_mov_b32 s8, s72976; GFX90A-NEXT:    s_mov_b32 s9, s42977; GFX90A-NEXT:    s_mov_b32 s10, s52978; GFX90A-NEXT:    ;;#ASMSTART2979; GFX90A-NEXT:    ; use s[8:10]2980; GFX90A-NEXT:    ;;#ASMEND2981; GFX90A-NEXT:    s_setpc_b64 s[30:31]2982;2983; GFX942-LABEL: s_shuffle_v3i32_v2i32__3_0_1:2984; GFX942:       ; %bb.0:2985; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2986; GFX942-NEXT:    ;;#ASMSTART2987; GFX942-NEXT:    ; def s[0:1]2988; GFX942-NEXT:    ;;#ASMEND2989; GFX942-NEXT:    ;;#ASMSTART2990; GFX942-NEXT:    ; def s[2:3]2991; GFX942-NEXT:    ;;#ASMEND2992; GFX942-NEXT:    s_mov_b32 s8, s32993; GFX942-NEXT:    s_mov_b32 s9, s02994; GFX942-NEXT:    s_mov_b32 s10, s12995; GFX942-NEXT:    ;;#ASMSTART2996; GFX942-NEXT:    ; use s[8:10]2997; GFX942-NEXT:    ;;#ASMEND2998; GFX942-NEXT:    s_setpc_b64 s[30:31]2999  %vec0 = call <2 x i32> asm "; def $0", "=s"()3000  %vec1 = call <2 x i32> asm "; def $0", "=s"()3001  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 0, i32 1>3002  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)3003  ret void3004}3005 3006define void @s_shuffle_v3i32_v2i32__3_2_1() {3007; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_2_1:3008; GFX900:       ; %bb.0:3009; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3010; GFX900-NEXT:    ;;#ASMSTART3011; GFX900-NEXT:    ; def s[4:5]3012; GFX900-NEXT:    ;;#ASMEND3013; GFX900-NEXT:    ;;#ASMSTART3014; GFX900-NEXT:    ; def s[6:7]3015; GFX900-NEXT:    ;;#ASMEND3016; GFX900-NEXT:    s_mov_b32 s8, s73017; GFX900-NEXT:    s_mov_b32 s9, s63018; GFX900-NEXT:    s_mov_b32 s10, s53019; GFX900-NEXT:    ;;#ASMSTART3020; GFX900-NEXT:    ; use s[8:10]3021; GFX900-NEXT:    ;;#ASMEND3022; GFX900-NEXT:    s_setpc_b64 s[30:31]3023;3024; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_2_1:3025; GFX90A:       ; %bb.0:3026; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3027; GFX90A-NEXT:    ;;#ASMSTART3028; GFX90A-NEXT:    ; def s[4:5]3029; GFX90A-NEXT:    ;;#ASMEND3030; GFX90A-NEXT:    ;;#ASMSTART3031; GFX90A-NEXT:    ; def s[6:7]3032; GFX90A-NEXT:    ;;#ASMEND3033; GFX90A-NEXT:    s_mov_b32 s8, s73034; GFX90A-NEXT:    s_mov_b32 s9, s63035; GFX90A-NEXT:    s_mov_b32 s10, s53036; GFX90A-NEXT:    ;;#ASMSTART3037; GFX90A-NEXT:    ; use s[8:10]3038; GFX90A-NEXT:    ;;#ASMEND3039; GFX90A-NEXT:    s_setpc_b64 s[30:31]3040;3041; GFX942-LABEL: s_shuffle_v3i32_v2i32__3_2_1:3042; GFX942:       ; %bb.0:3043; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3044; GFX942-NEXT:    ;;#ASMSTART3045; GFX942-NEXT:    ; def s[0:1]3046; GFX942-NEXT:    ;;#ASMEND3047; GFX942-NEXT:    ;;#ASMSTART3048; GFX942-NEXT:    ; def s[2:3]3049; GFX942-NEXT:    ;;#ASMEND3050; GFX942-NEXT:    s_mov_b32 s8, s33051; GFX942-NEXT:    s_mov_b32 s9, s23052; GFX942-NEXT:    s_mov_b32 s10, s13053; GFX942-NEXT:    ;;#ASMSTART3054; GFX942-NEXT:    ; use s[8:10]3055; GFX942-NEXT:    ;;#ASMEND3056; GFX942-NEXT:    s_setpc_b64 s[30:31]3057  %vec0 = call <2 x i32> asm "; def $0", "=s"()3058  %vec1 = call <2 x i32> asm "; def $0", "=s"()3059  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 2, i32 1>3060  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)3061  ret void3062}3063 3064define void @s_shuffle_v3i32_v2i32__u_2_2() {3065; GFX9-LABEL: s_shuffle_v3i32_v2i32__u_2_2:3066; GFX9:       ; %bb.0:3067; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3068; GFX9-NEXT:    ;;#ASMSTART3069; GFX9-NEXT:    ; use s[8:10]3070; GFX9-NEXT:    ;;#ASMEND3071; GFX9-NEXT:    s_setpc_b64 s[30:31]3072  %vec0 = call <2 x i32> asm "; def $0", "=s"()3073  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 poison, i32 2, i32 2>3074  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)3075  ret void3076}3077 3078define void @s_shuffle_v3i32_v2i32__0_2_2() {3079; GFX900-LABEL: s_shuffle_v3i32_v2i32__0_2_2:3080; GFX900:       ; %bb.0:3081; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3082; GFX900-NEXT:    ;;#ASMSTART3083; GFX900-NEXT:    ; def s[8:9]3084; GFX900-NEXT:    ;;#ASMEND3085; GFX900-NEXT:    ;;#ASMSTART3086; GFX900-NEXT:    ; use s[8:10]3087; GFX900-NEXT:    ;;#ASMEND3088; GFX900-NEXT:    s_setpc_b64 s[30:31]3089;3090; GFX90A-LABEL: s_shuffle_v3i32_v2i32__0_2_2:3091; GFX90A:       ; %bb.0:3092; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3093; GFX90A-NEXT:    ;;#ASMSTART3094; GFX90A-NEXT:    ; def s[8:9]3095; GFX90A-NEXT:    ;;#ASMEND3096; GFX90A-NEXT:    ;;#ASMSTART3097; GFX90A-NEXT:    ; use s[8:10]3098; GFX90A-NEXT:    ;;#ASMEND3099; GFX90A-NEXT:    s_setpc_b64 s[30:31]3100;3101; GFX942-LABEL: s_shuffle_v3i32_v2i32__0_2_2:3102; GFX942:       ; %bb.0:3103; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3104; GFX942-NEXT:    ;;#ASMSTART3105; GFX942-NEXT:    ; def s[8:9]3106; GFX942-NEXT:    ;;#ASMEND3107; GFX942-NEXT:    s_nop 03108; GFX942-NEXT:    ;;#ASMSTART3109; GFX942-NEXT:    ; use s[8:10]3110; GFX942-NEXT:    ;;#ASMEND3111; GFX942-NEXT:    s_setpc_b64 s[30:31]3112  %vec0 = call <2 x i32> asm "; def $0", "=s"()3113  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 0, i32 2, i32 2>3114  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)3115  ret void3116}3117 3118define void @s_shuffle_v3i32_v2i32__1_2_2() {3119; GFX900-LABEL: s_shuffle_v3i32_v2i32__1_2_2:3120; GFX900:       ; %bb.0:3121; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3122; GFX900-NEXT:    ;;#ASMSTART3123; GFX900-NEXT:    ; def s[4:5]3124; GFX900-NEXT:    ;;#ASMEND3125; GFX900-NEXT:    s_mov_b32 s8, s53126; GFX900-NEXT:    ;;#ASMSTART3127; GFX900-NEXT:    ; use s[8:10]3128; GFX900-NEXT:    ;;#ASMEND3129; GFX900-NEXT:    s_setpc_b64 s[30:31]3130;3131; GFX90A-LABEL: s_shuffle_v3i32_v2i32__1_2_2:3132; GFX90A:       ; %bb.0:3133; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3134; GFX90A-NEXT:    ;;#ASMSTART3135; GFX90A-NEXT:    ; def s[4:5]3136; GFX90A-NEXT:    ;;#ASMEND3137; GFX90A-NEXT:    s_mov_b32 s8, s53138; GFX90A-NEXT:    ;;#ASMSTART3139; GFX90A-NEXT:    ; use s[8:10]3140; GFX90A-NEXT:    ;;#ASMEND3141; GFX90A-NEXT:    s_setpc_b64 s[30:31]3142;3143; GFX942-LABEL: s_shuffle_v3i32_v2i32__1_2_2:3144; GFX942:       ; %bb.0:3145; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3146; GFX942-NEXT:    ;;#ASMSTART3147; GFX942-NEXT:    ; def s[0:1]3148; GFX942-NEXT:    ;;#ASMEND3149; GFX942-NEXT:    s_mov_b32 s8, s13150; GFX942-NEXT:    ;;#ASMSTART3151; GFX942-NEXT:    ; use s[8:10]3152; GFX942-NEXT:    ;;#ASMEND3153; GFX942-NEXT:    s_setpc_b64 s[30:31]3154  %vec0 = call <2 x i32> asm "; def $0", "=s"()3155  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 1, i32 2, i32 2>3156  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)3157  ret void3158}3159 3160define void @s_shuffle_v3i32_v2i32__2_2_2() {3161; GFX9-LABEL: s_shuffle_v3i32_v2i32__2_2_2:3162; GFX9:       ; %bb.0:3163; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3164; GFX9-NEXT:    ;;#ASMSTART3165; GFX9-NEXT:    ; use s[8:10]3166; GFX9-NEXT:    ;;#ASMEND3167; GFX9-NEXT:    s_setpc_b64 s[30:31]3168  %vec0 = call <2 x i32> asm "; def $0", "=s"()3169  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <3 x i32> <i32 2, i32 2, i32 2>3170  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)3171  ret void3172}3173 3174define void @s_shuffle_v3i32_v2i32__3_2_2() {3175; GFX9-LABEL: s_shuffle_v3i32_v2i32__3_2_2:3176; GFX9:       ; %bb.0:3177; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3178; GFX9-NEXT:    ;;#ASMSTART3179; GFX9-NEXT:    ; def s[10:11]3180; GFX9-NEXT:    ;;#ASMEND3181; GFX9-NEXT:    s_mov_b32 s8, s113182; GFX9-NEXT:    s_mov_b32 s9, s103183; GFX9-NEXT:    ;;#ASMSTART3184; GFX9-NEXT:    ; use s[8:10]3185; GFX9-NEXT:    ;;#ASMEND3186; GFX9-NEXT:    s_setpc_b64 s[30:31]3187  %vec0 = call <2 x i32> asm "; def $0", "=s"()3188  %vec1 = call <2 x i32> asm "; def $0", "=s"()3189  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 2, i32 2>3190  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)3191  ret void3192}3193 3194define void @s_shuffle_v3i32_v2i32__3_u_2() {3195; GFX9-LABEL: s_shuffle_v3i32_v2i32__3_u_2:3196; GFX9:       ; %bb.0:3197; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3198; GFX9-NEXT:    ;;#ASMSTART3199; GFX9-NEXT:    ; def s[10:11]3200; GFX9-NEXT:    ;;#ASMEND3201; GFX9-NEXT:    s_mov_b32 s8, s113202; GFX9-NEXT:    ;;#ASMSTART3203; GFX9-NEXT:    ; use s[8:10]3204; GFX9-NEXT:    ;;#ASMEND3205; GFX9-NEXT:    s_setpc_b64 s[30:31]3206  %vec0 = call <2 x i32> asm "; def $0", "=s"()3207  %vec1 = call <2 x i32> asm "; def $0", "=s"()3208  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 poison, i32 2>3209  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)3210  ret void3211}3212 3213define void @s_shuffle_v3i32_v2i32__3_0_2() {3214; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_0_2:3215; GFX900:       ; %bb.0:3216; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3217; GFX900-NEXT:    ;;#ASMSTART3218; GFX900-NEXT:    ; def s[4:5]3219; GFX900-NEXT:    ;;#ASMEND3220; GFX900-NEXT:    ;;#ASMSTART3221; GFX900-NEXT:    ; def s[10:11]3222; GFX900-NEXT:    ;;#ASMEND3223; GFX900-NEXT:    s_mov_b32 s8, s113224; GFX900-NEXT:    s_mov_b32 s9, s43225; GFX900-NEXT:    ;;#ASMSTART3226; GFX900-NEXT:    ; use s[8:10]3227; GFX900-NEXT:    ;;#ASMEND3228; GFX900-NEXT:    s_setpc_b64 s[30:31]3229;3230; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_0_2:3231; GFX90A:       ; %bb.0:3232; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3233; GFX90A-NEXT:    ;;#ASMSTART3234; GFX90A-NEXT:    ; def s[4:5]3235; GFX90A-NEXT:    ;;#ASMEND3236; GFX90A-NEXT:    ;;#ASMSTART3237; GFX90A-NEXT:    ; def s[10:11]3238; GFX90A-NEXT:    ;;#ASMEND3239; GFX90A-NEXT:    s_mov_b32 s8, s113240; GFX90A-NEXT:    s_mov_b32 s9, s43241; GFX90A-NEXT:    ;;#ASMSTART3242; GFX90A-NEXT:    ; use s[8:10]3243; GFX90A-NEXT:    ;;#ASMEND3244; GFX90A-NEXT:    s_setpc_b64 s[30:31]3245;3246; GFX942-LABEL: s_shuffle_v3i32_v2i32__3_0_2:3247; GFX942:       ; %bb.0:3248; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3249; GFX942-NEXT:    ;;#ASMSTART3250; GFX942-NEXT:    ; def s[0:1]3251; GFX942-NEXT:    ;;#ASMEND3252; GFX942-NEXT:    ;;#ASMSTART3253; GFX942-NEXT:    ; def s[10:11]3254; GFX942-NEXT:    ;;#ASMEND3255; GFX942-NEXT:    s_mov_b32 s8, s113256; GFX942-NEXT:    s_mov_b32 s9, s03257; GFX942-NEXT:    ;;#ASMSTART3258; GFX942-NEXT:    ; use s[8:10]3259; GFX942-NEXT:    ;;#ASMEND3260; GFX942-NEXT:    s_setpc_b64 s[30:31]3261  %vec0 = call <2 x i32> asm "; def $0", "=s"()3262  %vec1 = call <2 x i32> asm "; def $0", "=s"()3263  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 0, i32 2>3264  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)3265  ret void3266}3267 3268define void @s_shuffle_v3i32_v2i32__3_1_2() {3269; GFX9-LABEL: s_shuffle_v3i32_v2i32__3_1_2:3270; GFX9:       ; %bb.0:3271; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3272; GFX9-NEXT:    ;;#ASMSTART3273; GFX9-NEXT:    ; def s[8:9]3274; GFX9-NEXT:    ;;#ASMEND3275; GFX9-NEXT:    ;;#ASMSTART3276; GFX9-NEXT:    ; def s[10:11]3277; GFX9-NEXT:    ;;#ASMEND3278; GFX9-NEXT:    s_mov_b32 s8, s113279; GFX9-NEXT:    ;;#ASMSTART3280; GFX9-NEXT:    ; use s[8:10]3281; GFX9-NEXT:    ;;#ASMEND3282; GFX9-NEXT:    s_setpc_b64 s[30:31]3283  %vec0 = call <2 x i32> asm "; def $0", "=s"()3284  %vec1 = call <2 x i32> asm "; def $0", "=s"()3285  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 1, i32 2>3286  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)3287  ret void3288}3289 3290define void @s_shuffle_v3i32_v2i32__u_3_3() {3291; GFX9-LABEL: s_shuffle_v3i32_v2i32__u_3_3:3292; GFX9:       ; %bb.0:3293; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3294; GFX9-NEXT:    ;;#ASMSTART3295; GFX9-NEXT:    ; def s[8:9]3296; GFX9-NEXT:    ;;#ASMEND3297; GFX9-NEXT:    s_mov_b32 s10, s93298; GFX9-NEXT:    ;;#ASMSTART3299; GFX9-NEXT:    ; use s[8:10]3300; GFX9-NEXT:    ;;#ASMEND3301; GFX9-NEXT:    s_setpc_b64 s[30:31]3302  %vec0 = call <2 x i32> asm "; def $0", "=s"()3303  %vec1 = call <2 x i32> asm "; def $0", "=s"()3304  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 poison, i32 3, i32 3>3305  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)3306  ret void3307}3308 3309define void @s_shuffle_v3i32_v2i32__0_3_3() {3310; GFX900-LABEL: s_shuffle_v3i32_v2i32__0_3_3:3311; GFX900:       ; %bb.0:3312; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3313; GFX900-NEXT:    ;;#ASMSTART3314; GFX900-NEXT:    ; def s[8:9]3315; GFX900-NEXT:    ;;#ASMEND3316; GFX900-NEXT:    ;;#ASMSTART3317; GFX900-NEXT:    ; def s[4:5]3318; GFX900-NEXT:    ;;#ASMEND3319; GFX900-NEXT:    s_mov_b32 s9, s53320; GFX900-NEXT:    s_mov_b32 s10, s53321; GFX900-NEXT:    ;;#ASMSTART3322; GFX900-NEXT:    ; use s[8:10]3323; GFX900-NEXT:    ;;#ASMEND3324; GFX900-NEXT:    s_setpc_b64 s[30:31]3325;3326; GFX90A-LABEL: s_shuffle_v3i32_v2i32__0_3_3:3327; GFX90A:       ; %bb.0:3328; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3329; GFX90A-NEXT:    ;;#ASMSTART3330; GFX90A-NEXT:    ; def s[8:9]3331; GFX90A-NEXT:    ;;#ASMEND3332; GFX90A-NEXT:    ;;#ASMSTART3333; GFX90A-NEXT:    ; def s[4:5]3334; GFX90A-NEXT:    ;;#ASMEND3335; GFX90A-NEXT:    s_mov_b32 s9, s53336; GFX90A-NEXT:    s_mov_b32 s10, s53337; GFX90A-NEXT:    ;;#ASMSTART3338; GFX90A-NEXT:    ; use s[8:10]3339; GFX90A-NEXT:    ;;#ASMEND3340; GFX90A-NEXT:    s_setpc_b64 s[30:31]3341;3342; GFX942-LABEL: s_shuffle_v3i32_v2i32__0_3_3:3343; GFX942:       ; %bb.0:3344; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3345; GFX942-NEXT:    ;;#ASMSTART3346; GFX942-NEXT:    ; def s[8:9]3347; GFX942-NEXT:    ;;#ASMEND3348; GFX942-NEXT:    ;;#ASMSTART3349; GFX942-NEXT:    ; def s[0:1]3350; GFX942-NEXT:    ;;#ASMEND3351; GFX942-NEXT:    s_mov_b32 s9, s13352; GFX942-NEXT:    s_mov_b32 s10, s13353; GFX942-NEXT:    ;;#ASMSTART3354; GFX942-NEXT:    ; use s[8:10]3355; GFX942-NEXT:    ;;#ASMEND3356; GFX942-NEXT:    s_setpc_b64 s[30:31]3357  %vec0 = call <2 x i32> asm "; def $0", "=s"()3358  %vec1 = call <2 x i32> asm "; def $0", "=s"()3359  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 0, i32 3, i32 3>3360  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)3361  ret void3362}3363 3364define void @s_shuffle_v3i32_v2i32__1_3_3() {3365; GFX900-LABEL: s_shuffle_v3i32_v2i32__1_3_3:3366; GFX900:       ; %bb.0:3367; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3368; GFX900-NEXT:    ;;#ASMSTART3369; GFX900-NEXT:    ; def s[8:9]3370; GFX900-NEXT:    ;;#ASMEND3371; GFX900-NEXT:    ;;#ASMSTART3372; GFX900-NEXT:    ; def s[4:5]3373; GFX900-NEXT:    ;;#ASMEND3374; GFX900-NEXT:    s_mov_b32 s8, s53375; GFX900-NEXT:    s_mov_b32 s10, s93376; GFX900-NEXT:    ;;#ASMSTART3377; GFX900-NEXT:    ; use s[8:10]3378; GFX900-NEXT:    ;;#ASMEND3379; GFX900-NEXT:    s_setpc_b64 s[30:31]3380;3381; GFX90A-LABEL: s_shuffle_v3i32_v2i32__1_3_3:3382; GFX90A:       ; %bb.0:3383; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3384; GFX90A-NEXT:    ;;#ASMSTART3385; GFX90A-NEXT:    ; def s[8:9]3386; GFX90A-NEXT:    ;;#ASMEND3387; GFX90A-NEXT:    ;;#ASMSTART3388; GFX90A-NEXT:    ; def s[4:5]3389; GFX90A-NEXT:    ;;#ASMEND3390; GFX90A-NEXT:    s_mov_b32 s8, s53391; GFX90A-NEXT:    s_mov_b32 s10, s93392; GFX90A-NEXT:    ;;#ASMSTART3393; GFX90A-NEXT:    ; use s[8:10]3394; GFX90A-NEXT:    ;;#ASMEND3395; GFX90A-NEXT:    s_setpc_b64 s[30:31]3396;3397; GFX942-LABEL: s_shuffle_v3i32_v2i32__1_3_3:3398; GFX942:       ; %bb.0:3399; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3400; GFX942-NEXT:    ;;#ASMSTART3401; GFX942-NEXT:    ; def s[8:9]3402; GFX942-NEXT:    ;;#ASMEND3403; GFX942-NEXT:    ;;#ASMSTART3404; GFX942-NEXT:    ; def s[0:1]3405; GFX942-NEXT:    ;;#ASMEND3406; GFX942-NEXT:    s_mov_b32 s8, s13407; GFX942-NEXT:    s_mov_b32 s10, s93408; GFX942-NEXT:    ;;#ASMSTART3409; GFX942-NEXT:    ; use s[8:10]3410; GFX942-NEXT:    ;;#ASMEND3411; GFX942-NEXT:    s_setpc_b64 s[30:31]3412  %vec0 = call <2 x i32> asm "; def $0", "=s"()3413  %vec1 = call <2 x i32> asm "; def $0", "=s"()3414  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 1, i32 3, i32 3>3415  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)3416  ret void3417}3418 3419define void @s_shuffle_v3i32_v2i32__2_3_3() {3420; GFX9-LABEL: s_shuffle_v3i32_v2i32__2_3_3:3421; GFX9:       ; %bb.0:3422; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3423; GFX9-NEXT:    ;;#ASMSTART3424; GFX9-NEXT:    ; def s[8:9]3425; GFX9-NEXT:    ;;#ASMEND3426; GFX9-NEXT:    s_mov_b32 s10, s93427; GFX9-NEXT:    ;;#ASMSTART3428; GFX9-NEXT:    ; use s[8:10]3429; GFX9-NEXT:    ;;#ASMEND3430; GFX9-NEXT:    s_setpc_b64 s[30:31]3431  %vec0 = call <2 x i32> asm "; def $0", "=s"()3432  %vec1 = call <2 x i32> asm "; def $0", "=s"()3433  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 2, i32 3, i32 3>3434  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)3435  ret void3436}3437 3438define void @s_shuffle_v3i32_v2i32__3_u_3() {3439; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_u_3:3440; GFX900:       ; %bb.0:3441; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3442; GFX900-NEXT:    ;;#ASMSTART3443; GFX900-NEXT:    ; def s[4:5]3444; GFX900-NEXT:    ;;#ASMEND3445; GFX900-NEXT:    s_mov_b32 s8, s53446; GFX900-NEXT:    s_mov_b32 s10, s53447; GFX900-NEXT:    ;;#ASMSTART3448; GFX900-NEXT:    ; use s[8:10]3449; GFX900-NEXT:    ;;#ASMEND3450; GFX900-NEXT:    s_setpc_b64 s[30:31]3451;3452; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_u_3:3453; GFX90A:       ; %bb.0:3454; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3455; GFX90A-NEXT:    ;;#ASMSTART3456; GFX90A-NEXT:    ; def s[4:5]3457; GFX90A-NEXT:    ;;#ASMEND3458; GFX90A-NEXT:    s_mov_b32 s8, s53459; GFX90A-NEXT:    s_mov_b32 s10, s53460; GFX90A-NEXT:    ;;#ASMSTART3461; GFX90A-NEXT:    ; use s[8:10]3462; GFX90A-NEXT:    ;;#ASMEND3463; GFX90A-NEXT:    s_setpc_b64 s[30:31]3464;3465; GFX942-LABEL: s_shuffle_v3i32_v2i32__3_u_3:3466; GFX942:       ; %bb.0:3467; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3468; GFX942-NEXT:    ;;#ASMSTART3469; GFX942-NEXT:    ; def s[0:1]3470; GFX942-NEXT:    ;;#ASMEND3471; GFX942-NEXT:    s_mov_b32 s8, s13472; GFX942-NEXT:    s_mov_b32 s10, s13473; GFX942-NEXT:    ;;#ASMSTART3474; GFX942-NEXT:    ; use s[8:10]3475; GFX942-NEXT:    ;;#ASMEND3476; GFX942-NEXT:    s_setpc_b64 s[30:31]3477  %vec0 = call <2 x i32> asm "; def $0", "=s"()3478  %vec1 = call <2 x i32> asm "; def $0", "=s"()3479  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 poison, i32 3>3480  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)3481  ret void3482}3483 3484define void @s_shuffle_v3i32_v2i32__3_0_3() {3485; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_0_3:3486; GFX900:       ; %bb.0:3487; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3488; GFX900-NEXT:    ;;#ASMSTART3489; GFX900-NEXT:    ; def s[4:5]3490; GFX900-NEXT:    ;;#ASMEND3491; GFX900-NEXT:    ;;#ASMSTART3492; GFX900-NEXT:    ; def s[6:7]3493; GFX900-NEXT:    ;;#ASMEND3494; GFX900-NEXT:    s_mov_b32 s8, s73495; GFX900-NEXT:    s_mov_b32 s9, s43496; GFX900-NEXT:    s_mov_b32 s10, s73497; GFX900-NEXT:    ;;#ASMSTART3498; GFX900-NEXT:    ; use s[8:10]3499; GFX900-NEXT:    ;;#ASMEND3500; GFX900-NEXT:    s_setpc_b64 s[30:31]3501;3502; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_0_3:3503; GFX90A:       ; %bb.0:3504; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3505; GFX90A-NEXT:    ;;#ASMSTART3506; GFX90A-NEXT:    ; def s[4:5]3507; GFX90A-NEXT:    ;;#ASMEND3508; GFX90A-NEXT:    ;;#ASMSTART3509; GFX90A-NEXT:    ; def s[6:7]3510; GFX90A-NEXT:    ;;#ASMEND3511; GFX90A-NEXT:    s_mov_b32 s8, s73512; GFX90A-NEXT:    s_mov_b32 s9, s43513; GFX90A-NEXT:    s_mov_b32 s10, s73514; GFX90A-NEXT:    ;;#ASMSTART3515; GFX90A-NEXT:    ; use s[8:10]3516; GFX90A-NEXT:    ;;#ASMEND3517; GFX90A-NEXT:    s_setpc_b64 s[30:31]3518;3519; GFX942-LABEL: s_shuffle_v3i32_v2i32__3_0_3:3520; GFX942:       ; %bb.0:3521; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3522; GFX942-NEXT:    ;;#ASMSTART3523; GFX942-NEXT:    ; def s[0:1]3524; GFX942-NEXT:    ;;#ASMEND3525; GFX942-NEXT:    ;;#ASMSTART3526; GFX942-NEXT:    ; def s[2:3]3527; GFX942-NEXT:    ;;#ASMEND3528; GFX942-NEXT:    s_mov_b32 s8, s33529; GFX942-NEXT:    s_mov_b32 s9, s03530; GFX942-NEXT:    s_mov_b32 s10, s33531; GFX942-NEXT:    ;;#ASMSTART3532; GFX942-NEXT:    ; use s[8:10]3533; GFX942-NEXT:    ;;#ASMEND3534; GFX942-NEXT:    s_setpc_b64 s[30:31]3535  %vec0 = call <2 x i32> asm "; def $0", "=s"()3536  %vec1 = call <2 x i32> asm "; def $0", "=s"()3537  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 0, i32 3>3538  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)3539  ret void3540}3541 3542define void @s_shuffle_v3i32_v2i32__3_1_3() {3543; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_1_3:3544; GFX900:       ; %bb.0:3545; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3546; GFX900-NEXT:    ;;#ASMSTART3547; GFX900-NEXT:    ; def s[8:9]3548; GFX900-NEXT:    ;;#ASMEND3549; GFX900-NEXT:    ;;#ASMSTART3550; GFX900-NEXT:    ; def s[4:5]3551; GFX900-NEXT:    ;;#ASMEND3552; GFX900-NEXT:    s_mov_b32 s8, s53553; GFX900-NEXT:    s_mov_b32 s10, s53554; GFX900-NEXT:    ;;#ASMSTART3555; GFX900-NEXT:    ; use s[8:10]3556; GFX900-NEXT:    ;;#ASMEND3557; GFX900-NEXT:    s_setpc_b64 s[30:31]3558;3559; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_1_3:3560; GFX90A:       ; %bb.0:3561; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3562; GFX90A-NEXT:    ;;#ASMSTART3563; GFX90A-NEXT:    ; def s[8:9]3564; GFX90A-NEXT:    ;;#ASMEND3565; GFX90A-NEXT:    ;;#ASMSTART3566; GFX90A-NEXT:    ; def s[4:5]3567; GFX90A-NEXT:    ;;#ASMEND3568; GFX90A-NEXT:    s_mov_b32 s8, s53569; GFX90A-NEXT:    s_mov_b32 s10, s53570; GFX90A-NEXT:    ;;#ASMSTART3571; GFX90A-NEXT:    ; use s[8:10]3572; GFX90A-NEXT:    ;;#ASMEND3573; GFX90A-NEXT:    s_setpc_b64 s[30:31]3574;3575; GFX942-LABEL: s_shuffle_v3i32_v2i32__3_1_3:3576; GFX942:       ; %bb.0:3577; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3578; GFX942-NEXT:    ;;#ASMSTART3579; GFX942-NEXT:    ; def s[8:9]3580; GFX942-NEXT:    ;;#ASMEND3581; GFX942-NEXT:    ;;#ASMSTART3582; GFX942-NEXT:    ; def s[0:1]3583; GFX942-NEXT:    ;;#ASMEND3584; GFX942-NEXT:    s_mov_b32 s8, s13585; GFX942-NEXT:    s_mov_b32 s10, s13586; GFX942-NEXT:    ;;#ASMSTART3587; GFX942-NEXT:    ; use s[8:10]3588; GFX942-NEXT:    ;;#ASMEND3589; GFX942-NEXT:    s_setpc_b64 s[30:31]3590  %vec0 = call <2 x i32> asm "; def $0", "=s"()3591  %vec1 = call <2 x i32> asm "; def $0", "=s"()3592  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 1, i32 3>3593  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)3594  ret void3595}3596 3597define void @s_shuffle_v3i32_v2i32__3_2_3() {3598; GFX900-LABEL: s_shuffle_v3i32_v2i32__3_2_3:3599; GFX900:       ; %bb.0:3600; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3601; GFX900-NEXT:    ;;#ASMSTART3602; GFX900-NEXT:    ; def s[4:5]3603; GFX900-NEXT:    ;;#ASMEND3604; GFX900-NEXT:    s_mov_b32 s8, s53605; GFX900-NEXT:    s_mov_b32 s9, s43606; GFX900-NEXT:    s_mov_b32 s10, s53607; GFX900-NEXT:    ;;#ASMSTART3608; GFX900-NEXT:    ; use s[8:10]3609; GFX900-NEXT:    ;;#ASMEND3610; GFX900-NEXT:    s_setpc_b64 s[30:31]3611;3612; GFX90A-LABEL: s_shuffle_v3i32_v2i32__3_2_3:3613; GFX90A:       ; %bb.0:3614; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3615; GFX90A-NEXT:    ;;#ASMSTART3616; GFX90A-NEXT:    ; def s[4:5]3617; GFX90A-NEXT:    ;;#ASMEND3618; GFX90A-NEXT:    s_mov_b32 s8, s53619; GFX90A-NEXT:    s_mov_b32 s9, s43620; GFX90A-NEXT:    s_mov_b32 s10, s53621; GFX90A-NEXT:    ;;#ASMSTART3622; GFX90A-NEXT:    ; use s[8:10]3623; GFX90A-NEXT:    ;;#ASMEND3624; GFX90A-NEXT:    s_setpc_b64 s[30:31]3625;3626; GFX942-LABEL: s_shuffle_v3i32_v2i32__3_2_3:3627; GFX942:       ; %bb.0:3628; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3629; GFX942-NEXT:    ;;#ASMSTART3630; GFX942-NEXT:    ; def s[0:1]3631; GFX942-NEXT:    ;;#ASMEND3632; GFX942-NEXT:    s_mov_b32 s8, s13633; GFX942-NEXT:    s_mov_b32 s9, s03634; GFX942-NEXT:    s_mov_b32 s10, s13635; GFX942-NEXT:    ;;#ASMSTART3636; GFX942-NEXT:    ; use s[8:10]3637; GFX942-NEXT:    ;;#ASMEND3638; GFX942-NEXT:    s_setpc_b64 s[30:31]3639  %vec0 = call <2 x i32> asm "; def $0", "=s"()3640  %vec1 = call <2 x i32> asm "; def $0", "=s"()3641  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <3 x i32> <i32 3, i32 2, i32 3>3642  call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x i32> %shuf)3643  ret void3644}3645;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:3646; GFX90APLUS: {{.*}}3647