brintos

brintos / llvm-project-archived public Read only

0
0
Text · 64.5 KiB · a86ca0a Raw
1861 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9,GFX900 %s3; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX90A %s4; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx942 < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX942 %s5 6 7define void @v_shuffle_v2i32_v2i32__u_u(ptr addrspace(1) inreg %ptr) {8; GFX9-LABEL: v_shuffle_v2i32_v2i32__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, <2 x i32> poison14  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 815  ret void16}17 18define void @v_shuffle_v2i32_v2i32__0_u(ptr addrspace(1) inreg %ptr) {19; GFX900-LABEL: v_shuffle_v2i32_v2i32__0_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_dwordx2 v2, v[0:1], s[16:17]27; GFX900-NEXT:    s_waitcnt vmcnt(0)28; GFX900-NEXT:    s_setpc_b64 s[30:31]29;30; GFX90A-LABEL: v_shuffle_v2i32_v2i32__0_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_dwordx2 v2, v[0:1], s[16:17]38; GFX90A-NEXT:    s_waitcnt vmcnt(0)39; GFX90A-NEXT:    s_setpc_b64 s[30:31]40;41; GFX942-LABEL: v_shuffle_v2i32_v2i32__0_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_dwordx2 v2, v[0:1], s[0:1]49; GFX942-NEXT:    s_waitcnt vmcnt(0)50; GFX942-NEXT:    s_setpc_b64 s[30:31]51  %vec0 = call <2 x i32> asm "; def $0", "=v"()52  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <2 x i32> <i32 0, i32 poison>53  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 854  ret void55}56 57define void @v_shuffle_v2i32_v2i32__1_u(ptr addrspace(1) inreg %ptr) {58; GFX900-LABEL: v_shuffle_v2i32_v2i32__1_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_dwordx2 v2, v[1:2], s[16:17]66; GFX900-NEXT:    s_waitcnt vmcnt(0)67; GFX900-NEXT:    s_setpc_b64 s[30:31]68;69; GFX90A-LABEL: v_shuffle_v2i32_v2i32__1_u:70; GFX90A:       ; %bb.0:71; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)72; GFX90A-NEXT:    ;;#ASMSTART73; GFX90A-NEXT:    ; def v[0: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_dwordx2 v2, v[0:1], s[16:17]78; GFX90A-NEXT:    s_waitcnt vmcnt(0)79; GFX90A-NEXT:    s_setpc_b64 s[30:31]80;81; GFX942-LABEL: v_shuffle_v2i32_v2i32__1_u:82; GFX942:       ; %bb.0:83; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)84; GFX942-NEXT:    ;;#ASMSTART85; GFX942-NEXT:    ; def v[0: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_dwordx2 v2, v[0:1], s[0:1]90; GFX942-NEXT:    s_waitcnt vmcnt(0)91; GFX942-NEXT:    s_setpc_b64 s[30:31]92  %vec0 = call <2 x i32> asm "; def $0", "=v"()93  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <2 x i32> <i32 1, i32 poison>94  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 895  ret void96}97 98define void @v_shuffle_v2i32_v2i32__2_u(ptr addrspace(1) inreg %ptr) {99; GFX9-LABEL: v_shuffle_v2i32_v2i32__2_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, <2 x i32> <i32 2, i32 poison>105  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8106  ret void107}108 109define void @v_shuffle_v2i32_v2i32__3_u(ptr addrspace(1) inreg %ptr) {110; GFX900-LABEL: v_shuffle_v2i32_v2i32__3_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_dwordx2 v2, v[1:2], 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_v2i32_v2i32__3_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_dwordx2 v2, v[0:1], 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_v2i32_v2i32__3_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_dwordx2 v2, v[0:1], 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, <2 x i32> <i32 3, i32 poison>147  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8148  ret void149}150 151define void @v_shuffle_v2i32_v2i32__3_0(ptr addrspace(1) inreg %ptr) {152; GFX900-LABEL: v_shuffle_v2i32_v2i32__3_0: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_dwordx2 v4, v[1:2], 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_v2i32_v2i32__3_0:167; GFX90A:       ; %bb.0:168; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)169; GFX90A-NEXT:    ;;#ASMSTART170; GFX90A-NEXT:    ; def v[0:1]171; GFX90A-NEXT:    ;;#ASMEND172; GFX90A-NEXT:    v_mov_b32_e32 v4, 0173; GFX90A-NEXT:    ;;#ASMSTART174; GFX90A-NEXT:    ; def v[2:3]175; GFX90A-NEXT:    ;;#ASMEND176; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]177; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]178; GFX90A-NEXT:    s_waitcnt vmcnt(0)179; GFX90A-NEXT:    s_setpc_b64 s[30:31]180;181; GFX942-LABEL: v_shuffle_v2i32_v2i32__3_0:182; GFX942:       ; %bb.0:183; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)184; GFX942-NEXT:    ;;#ASMSTART185; GFX942-NEXT:    ; def v[0:1]186; GFX942-NEXT:    ;;#ASMEND187; GFX942-NEXT:    v_mov_b32_e32 v4, 0188; GFX942-NEXT:    ;;#ASMSTART189; GFX942-NEXT:    ; def v[2:3]190; GFX942-NEXT:    ;;#ASMEND191; GFX942-NEXT:    s_nop 0192; GFX942-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]193; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]194; GFX942-NEXT:    s_waitcnt vmcnt(0)195; GFX942-NEXT:    s_setpc_b64 s[30:31]196  %vec0 = call <2 x i32> asm "; def $0", "=v"()197  %vec1 = call <2 x i32> asm "; def $0", "=v"()198  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <2 x i32> <i32 3, i32 0>199  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8200  ret void201}202 203define void @v_shuffle_v2i32_v2i32__3_1(ptr addrspace(1) inreg %ptr) {204; GFX900-LABEL: v_shuffle_v2i32_v2i32__3_1:205; GFX900:       ; %bb.0:206; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)207; GFX900-NEXT:    v_mov_b32_e32 v3, 0208; GFX900-NEXT:    ;;#ASMSTART209; GFX900-NEXT:    ; def v[1:2]210; GFX900-NEXT:    ;;#ASMEND211; GFX900-NEXT:    ;;#ASMSTART212; GFX900-NEXT:    ; def v[0:1]213; GFX900-NEXT:    ;;#ASMEND214; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]215; GFX900-NEXT:    s_waitcnt vmcnt(0)216; GFX900-NEXT:    s_setpc_b64 s[30:31]217;218; GFX90A-LABEL: v_shuffle_v2i32_v2i32__3_1:219; GFX90A:       ; %bb.0:220; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)221; GFX90A-NEXT:    ;;#ASMSTART222; GFX90A-NEXT:    ; def v[0:1]223; GFX90A-NEXT:    ;;#ASMEND224; GFX90A-NEXT:    v_mov_b32_e32 v4, 0225; GFX90A-NEXT:    ;;#ASMSTART226; GFX90A-NEXT:    ; def v[2:3]227; GFX90A-NEXT:    ;;#ASMEND228; GFX90A-NEXT:    v_mov_b32_e32 v0, v3229; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]230; GFX90A-NEXT:    s_waitcnt vmcnt(0)231; GFX90A-NEXT:    s_setpc_b64 s[30:31]232;233; GFX942-LABEL: v_shuffle_v2i32_v2i32__3_1:234; GFX942:       ; %bb.0:235; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)236; GFX942-NEXT:    ;;#ASMSTART237; GFX942-NEXT:    ; def v[0:1]238; GFX942-NEXT:    ;;#ASMEND239; GFX942-NEXT:    v_mov_b32_e32 v4, 0240; GFX942-NEXT:    ;;#ASMSTART241; GFX942-NEXT:    ; def v[2:3]242; GFX942-NEXT:    ;;#ASMEND243; GFX942-NEXT:    s_nop 0244; GFX942-NEXT:    v_mov_b32_e32 v0, v3245; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]246; GFX942-NEXT:    s_waitcnt vmcnt(0)247; GFX942-NEXT:    s_setpc_b64 s[30:31]248  %vec0 = call <2 x i32> asm "; def $0", "=v"()249  %vec1 = call <2 x i32> asm "; def $0", "=v"()250  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <2 x i32> <i32 3, i32 1>251  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8252  ret void253}254 255define void @v_shuffle_v2i32_v2i32__3_2(ptr addrspace(1) inreg %ptr) {256; GFX900-LABEL: v_shuffle_v2i32_v2i32__3_2:257; GFX900:       ; %bb.0:258; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)259; GFX900-NEXT:    v_mov_b32_e32 v3, 0260; GFX900-NEXT:    ;;#ASMSTART261; GFX900-NEXT:    ; def v[0:1]262; GFX900-NEXT:    ;;#ASMEND263; GFX900-NEXT:    v_mov_b32_e32 v2, v0264; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]265; GFX900-NEXT:    s_waitcnt vmcnt(0)266; GFX900-NEXT:    s_setpc_b64 s[30:31]267;268; GFX90A-LABEL: v_shuffle_v2i32_v2i32__3_2:269; GFX90A:       ; %bb.0:270; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)271; GFX90A-NEXT:    ;;#ASMSTART272; GFX90A-NEXT:    ; def v[0:1]273; GFX90A-NEXT:    ;;#ASMEND274; GFX90A-NEXT:    v_mov_b32_e32 v2, 0275; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]276; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]277; GFX90A-NEXT:    s_waitcnt vmcnt(0)278; GFX90A-NEXT:    s_setpc_b64 s[30:31]279;280; GFX942-LABEL: v_shuffle_v2i32_v2i32__3_2:281; GFX942:       ; %bb.0:282; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)283; GFX942-NEXT:    ;;#ASMSTART284; GFX942-NEXT:    ; def v[0:1]285; GFX942-NEXT:    ;;#ASMEND286; GFX942-NEXT:    v_mov_b32_e32 v2, 0287; GFX942-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]288; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]289; GFX942-NEXT:    s_waitcnt vmcnt(0)290; GFX942-NEXT:    s_setpc_b64 s[30:31]291  %vec0 = call <2 x i32> asm "; def $0", "=v"()292  %vec1 = call <2 x i32> asm "; def $0", "=v"()293  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <2 x i32> <i32 3, i32 2>294  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8295  ret void296}297 298define void @v_shuffle_v2i32_v2i32__3_3(ptr addrspace(1) inreg %ptr) {299; GFX900-LABEL: v_shuffle_v2i32_v2i32__3_3:300; GFX900:       ; %bb.0:301; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)302; GFX900-NEXT:    v_mov_b32_e32 v3, 0303; GFX900-NEXT:    ;;#ASMSTART304; GFX900-NEXT:    ; def v[0:1]305; GFX900-NEXT:    ;;#ASMEND306; GFX900-NEXT:    v_mov_b32_e32 v2, v1307; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]308; GFX900-NEXT:    s_waitcnt vmcnt(0)309; GFX900-NEXT:    s_setpc_b64 s[30:31]310;311; GFX90A-LABEL: v_shuffle_v2i32_v2i32__3_3:312; GFX90A:       ; %bb.0:313; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)314; GFX90A-NEXT:    ;;#ASMSTART315; GFX90A-NEXT:    ; def v[0:1]316; GFX90A-NEXT:    ;;#ASMEND317; GFX90A-NEXT:    v_mov_b32_e32 v2, 0318; GFX90A-NEXT:    v_mov_b32_e32 v0, v1319; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]320; GFX90A-NEXT:    s_waitcnt vmcnt(0)321; GFX90A-NEXT:    s_setpc_b64 s[30:31]322;323; GFX942-LABEL: v_shuffle_v2i32_v2i32__3_3:324; GFX942:       ; %bb.0:325; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)326; GFX942-NEXT:    ;;#ASMSTART327; GFX942-NEXT:    ; def v[0:1]328; GFX942-NEXT:    ;;#ASMEND329; GFX942-NEXT:    v_mov_b32_e32 v2, 0330; GFX942-NEXT:    v_mov_b32_e32 v0, v1331; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]332; GFX942-NEXT:    s_waitcnt vmcnt(0)333; GFX942-NEXT:    s_setpc_b64 s[30:31]334  %vec0 = call <2 x i32> asm "; def $0", "=v"()335  %vec1 = call <2 x i32> asm "; def $0", "=v"()336  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <2 x i32> <i32 3, i32 3>337  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8338  ret void339}340 341define void @v_shuffle_v2i32_v2i32__u_0(ptr addrspace(1) inreg %ptr) {342; GFX900-LABEL: v_shuffle_v2i32_v2i32__u_0:343; GFX900:       ; %bb.0:344; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)345; GFX900-NEXT:    v_mov_b32_e32 v0, 0346; GFX900-NEXT:    ;;#ASMSTART347; GFX900-NEXT:    ; def v[1:2]348; GFX900-NEXT:    ;;#ASMEND349; GFX900-NEXT:    global_store_dwordx2 v0, v[0:1], s[16:17]350; GFX900-NEXT:    s_waitcnt vmcnt(0)351; GFX900-NEXT:    s_setpc_b64 s[30:31]352;353; GFX90A-LABEL: v_shuffle_v2i32_v2i32__u_0:354; GFX90A:       ; %bb.0:355; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)356; GFX90A-NEXT:    ;;#ASMSTART357; GFX90A-NEXT:    ; def v[0:1]358; GFX90A-NEXT:    ;;#ASMEND359; GFX90A-NEXT:    v_mov_b32_e32 v2, 0360; GFX90A-NEXT:    v_mov_b32_e32 v1, v0361; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]362; GFX90A-NEXT:    s_waitcnt vmcnt(0)363; GFX90A-NEXT:    s_setpc_b64 s[30:31]364;365; GFX942-LABEL: v_shuffle_v2i32_v2i32__u_0:366; GFX942:       ; %bb.0:367; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)368; GFX942-NEXT:    ;;#ASMSTART369; GFX942-NEXT:    ; def v[0:1]370; GFX942-NEXT:    ;;#ASMEND371; GFX942-NEXT:    v_mov_b32_e32 v2, 0372; GFX942-NEXT:    v_mov_b32_e32 v1, v0373; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]374; GFX942-NEXT:    s_waitcnt vmcnt(0)375; GFX942-NEXT:    s_setpc_b64 s[30:31]376  %vec0 = call <2 x i32> asm "; def $0", "=v"()377  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <2 x i32> <i32 poison, i32 0>378  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8379  ret void380}381 382define void @v_shuffle_v2i32_v2i32__0_0(ptr addrspace(1) inreg %ptr) {383; GFX900-LABEL: v_shuffle_v2i32_v2i32__0_0:384; GFX900:       ; %bb.0:385; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)386; GFX900-NEXT:    ;;#ASMSTART387; GFX900-NEXT:    ; def v[0:1]388; GFX900-NEXT:    ;;#ASMEND389; GFX900-NEXT:    v_mov_b32_e32 v2, 0390; GFX900-NEXT:    v_mov_b32_e32 v1, v0391; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]392; GFX900-NEXT:    s_waitcnt vmcnt(0)393; GFX900-NEXT:    s_setpc_b64 s[30:31]394;395; GFX90A-LABEL: v_shuffle_v2i32_v2i32__0_0:396; GFX90A:       ; %bb.0:397; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)398; GFX90A-NEXT:    ;;#ASMSTART399; GFX90A-NEXT:    ; def v[0:1]400; GFX90A-NEXT:    ;;#ASMEND401; GFX90A-NEXT:    v_mov_b32_e32 v2, 0402; GFX90A-NEXT:    v_mov_b32_e32 v1, v0403; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]404; GFX90A-NEXT:    s_waitcnt vmcnt(0)405; GFX90A-NEXT:    s_setpc_b64 s[30:31]406;407; GFX942-LABEL: v_shuffle_v2i32_v2i32__0_0:408; GFX942:       ; %bb.0:409; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)410; GFX942-NEXT:    ;;#ASMSTART411; GFX942-NEXT:    ; def v[0:1]412; GFX942-NEXT:    ;;#ASMEND413; GFX942-NEXT:    v_mov_b32_e32 v2, 0414; GFX942-NEXT:    v_mov_b32_e32 v1, v0415; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]416; GFX942-NEXT:    s_waitcnt vmcnt(0)417; GFX942-NEXT:    s_setpc_b64 s[30:31]418  %vec0 = call <2 x i32> asm "; def $0", "=v"()419  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <2 x i32> zeroinitializer420  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8421  ret void422}423 424define void @v_shuffle_v2i32_v2i32__1_0(ptr addrspace(1) inreg %ptr) {425; GFX900-LABEL: v_shuffle_v2i32_v2i32__1_0:426; GFX900:       ; %bb.0:427; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)428; GFX900-NEXT:    v_mov_b32_e32 v3, 0429; GFX900-NEXT:    ;;#ASMSTART430; GFX900-NEXT:    ; def v[0:1]431; GFX900-NEXT:    ;;#ASMEND432; GFX900-NEXT:    v_mov_b32_e32 v2, v0433; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]434; GFX900-NEXT:    s_waitcnt vmcnt(0)435; GFX900-NEXT:    s_setpc_b64 s[30:31]436;437; GFX90A-LABEL: v_shuffle_v2i32_v2i32__1_0:438; GFX90A:       ; %bb.0:439; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)440; GFX90A-NEXT:    ;;#ASMSTART441; GFX90A-NEXT:    ; def v[0:1]442; GFX90A-NEXT:    ;;#ASMEND443; GFX90A-NEXT:    v_mov_b32_e32 v2, 0444; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]445; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]446; GFX90A-NEXT:    s_waitcnt vmcnt(0)447; GFX90A-NEXT:    s_setpc_b64 s[30:31]448;449; GFX942-LABEL: v_shuffle_v2i32_v2i32__1_0:450; GFX942:       ; %bb.0:451; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)452; GFX942-NEXT:    ;;#ASMSTART453; GFX942-NEXT:    ; def v[0:1]454; GFX942-NEXT:    ;;#ASMEND455; GFX942-NEXT:    v_mov_b32_e32 v2, 0456; GFX942-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]457; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]458; GFX942-NEXT:    s_waitcnt vmcnt(0)459; GFX942-NEXT:    s_setpc_b64 s[30:31]460  %vec0 = call <2 x i32> asm "; def $0", "=v"()461  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <2 x i32> <i32 1, i32 0>462  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8463  ret void464}465 466define void @v_shuffle_v2i32_v2i32__2_0(ptr addrspace(1) inreg %ptr) {467; GFX900-LABEL: v_shuffle_v2i32_v2i32__2_0:468; GFX900:       ; %bb.0:469; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)470; GFX900-NEXT:    v_mov_b32_e32 v0, 0471; GFX900-NEXT:    ;;#ASMSTART472; GFX900-NEXT:    ; def v[1:2]473; GFX900-NEXT:    ;;#ASMEND474; GFX900-NEXT:    global_store_dwordx2 v0, v[0:1], s[16:17]475; GFX900-NEXT:    s_waitcnt vmcnt(0)476; GFX900-NEXT:    s_setpc_b64 s[30:31]477;478; GFX90A-LABEL: v_shuffle_v2i32_v2i32__2_0:479; GFX90A:       ; %bb.0:480; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)481; GFX90A-NEXT:    ;;#ASMSTART482; GFX90A-NEXT:    ; def v[0:1]483; GFX90A-NEXT:    ;;#ASMEND484; GFX90A-NEXT:    v_mov_b32_e32 v2, 0485; GFX90A-NEXT:    v_mov_b32_e32 v1, v0486; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]487; GFX90A-NEXT:    s_waitcnt vmcnt(0)488; GFX90A-NEXT:    s_setpc_b64 s[30:31]489;490; GFX942-LABEL: v_shuffle_v2i32_v2i32__2_0:491; GFX942:       ; %bb.0:492; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)493; GFX942-NEXT:    ;;#ASMSTART494; GFX942-NEXT:    ; def v[0:1]495; GFX942-NEXT:    ;;#ASMEND496; GFX942-NEXT:    v_mov_b32_e32 v2, 0497; GFX942-NEXT:    v_mov_b32_e32 v1, v0498; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]499; GFX942-NEXT:    s_waitcnt vmcnt(0)500; GFX942-NEXT:    s_setpc_b64 s[30:31]501  %vec0 = call <2 x i32> asm "; def $0", "=v"()502  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <2 x i32> <i32 2, i32 0>503  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8504  ret void505}506 507define void @v_shuffle_v2i32_v2i32__u_1(ptr addrspace(1) inreg %ptr) {508; GFX900-LABEL: v_shuffle_v2i32_v2i32__u_1:509; GFX900:       ; %bb.0:510; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)511; GFX900-NEXT:    v_mov_b32_e32 v2, 0512; GFX900-NEXT:    ;;#ASMSTART513; GFX900-NEXT:    ; def v[0:1]514; GFX900-NEXT:    ;;#ASMEND515; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]516; GFX900-NEXT:    s_waitcnt vmcnt(0)517; GFX900-NEXT:    s_setpc_b64 s[30:31]518;519; GFX90A-LABEL: v_shuffle_v2i32_v2i32__u_1:520; GFX90A:       ; %bb.0:521; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)522; GFX90A-NEXT:    v_mov_b32_e32 v2, 0523; GFX90A-NEXT:    ;;#ASMSTART524; GFX90A-NEXT:    ; def v[0:1]525; GFX90A-NEXT:    ;;#ASMEND526; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]527; GFX90A-NEXT:    s_waitcnt vmcnt(0)528; GFX90A-NEXT:    s_setpc_b64 s[30:31]529;530; GFX942-LABEL: v_shuffle_v2i32_v2i32__u_1:531; GFX942:       ; %bb.0:532; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)533; GFX942-NEXT:    v_mov_b32_e32 v2, 0534; GFX942-NEXT:    ;;#ASMSTART535; GFX942-NEXT:    ; def v[0:1]536; GFX942-NEXT:    ;;#ASMEND537; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]538; GFX942-NEXT:    s_waitcnt vmcnt(0)539; GFX942-NEXT:    s_setpc_b64 s[30:31]540  %vec0 = call <2 x i32> asm "; def $0", "=v"()541  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <2 x i32> <i32 poison, i32 1>542  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8543  ret void544}545 546define void @v_shuffle_v2i32_v2i32__0_1(ptr addrspace(1) inreg %ptr) {547; GFX900-LABEL: v_shuffle_v2i32_v2i32__0_1:548; GFX900:       ; %bb.0:549; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)550; GFX900-NEXT:    v_mov_b32_e32 v2, 0551; GFX900-NEXT:    ;;#ASMSTART552; GFX900-NEXT:    ; def v[0:1]553; GFX900-NEXT:    ;;#ASMEND554; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]555; GFX900-NEXT:    s_waitcnt vmcnt(0)556; GFX900-NEXT:    s_setpc_b64 s[30:31]557;558; GFX90A-LABEL: v_shuffle_v2i32_v2i32__0_1:559; GFX90A:       ; %bb.0:560; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)561; GFX90A-NEXT:    v_mov_b32_e32 v2, 0562; GFX90A-NEXT:    ;;#ASMSTART563; GFX90A-NEXT:    ; def v[0:1]564; GFX90A-NEXT:    ;;#ASMEND565; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], 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_v2i32_v2i32__0_1:570; GFX942:       ; %bb.0:571; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)572; GFX942-NEXT:    v_mov_b32_e32 v2, 0573; GFX942-NEXT:    ;;#ASMSTART574; GFX942-NEXT:    ; def v[0:1]575; GFX942-NEXT:    ;;#ASMEND576; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]577; GFX942-NEXT:    s_waitcnt vmcnt(0)578; GFX942-NEXT:    s_setpc_b64 s[30:31]579  %vec0 = call <2 x i32> asm "; def $0", "=v"()580  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <2 x i32> <i32 0, i32 1>581  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8582  ret void583}584 585define void @v_shuffle_v2i32_v2i32__1_1(ptr addrspace(1) inreg %ptr) {586; GFX900-LABEL: v_shuffle_v2i32_v2i32__1_1:587; GFX900:       ; %bb.0:588; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)589; GFX900-NEXT:    v_mov_b32_e32 v3, 0590; GFX900-NEXT:    ;;#ASMSTART591; GFX900-NEXT:    ; def v[0:1]592; GFX900-NEXT:    ;;#ASMEND593; GFX900-NEXT:    v_mov_b32_e32 v2, v1594; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]595; GFX900-NEXT:    s_waitcnt vmcnt(0)596; GFX900-NEXT:    s_setpc_b64 s[30:31]597;598; GFX90A-LABEL: v_shuffle_v2i32_v2i32__1_1:599; GFX90A:       ; %bb.0:600; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)601; GFX90A-NEXT:    ;;#ASMSTART602; GFX90A-NEXT:    ; def v[0:1]603; GFX90A-NEXT:    ;;#ASMEND604; GFX90A-NEXT:    v_mov_b32_e32 v2, 0605; GFX90A-NEXT:    v_mov_b32_e32 v0, v1606; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]607; GFX90A-NEXT:    s_waitcnt vmcnt(0)608; GFX90A-NEXT:    s_setpc_b64 s[30:31]609;610; GFX942-LABEL: v_shuffle_v2i32_v2i32__1_1:611; GFX942:       ; %bb.0:612; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)613; GFX942-NEXT:    ;;#ASMSTART614; GFX942-NEXT:    ; def v[0:1]615; GFX942-NEXT:    ;;#ASMEND616; GFX942-NEXT:    v_mov_b32_e32 v2, 0617; GFX942-NEXT:    v_mov_b32_e32 v0, v1618; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]619; GFX942-NEXT:    s_waitcnt vmcnt(0)620; GFX942-NEXT:    s_setpc_b64 s[30:31]621  %vec0 = call <2 x i32> asm "; def $0", "=v"()622  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <2 x i32> <i32 1, i32 1>623  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8624  ret void625}626 627define void @v_shuffle_v2i32_v2i32__2_1(ptr addrspace(1) inreg %ptr) {628; GFX900-LABEL: v_shuffle_v2i32_v2i32__2_1:629; GFX900:       ; %bb.0:630; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)631; GFX900-NEXT:    v_mov_b32_e32 v2, 0632; GFX900-NEXT:    ;;#ASMSTART633; GFX900-NEXT:    ; def v[0:1]634; GFX900-NEXT:    ;;#ASMEND635; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]636; GFX900-NEXT:    s_waitcnt vmcnt(0)637; GFX900-NEXT:    s_setpc_b64 s[30:31]638;639; GFX90A-LABEL: v_shuffle_v2i32_v2i32__2_1:640; GFX90A:       ; %bb.0:641; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)642; GFX90A-NEXT:    v_mov_b32_e32 v2, 0643; GFX90A-NEXT:    ;;#ASMSTART644; GFX90A-NEXT:    ; def v[0:1]645; GFX90A-NEXT:    ;;#ASMEND646; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]647; GFX90A-NEXT:    s_waitcnt vmcnt(0)648; GFX90A-NEXT:    s_setpc_b64 s[30:31]649;650; GFX942-LABEL: v_shuffle_v2i32_v2i32__2_1:651; GFX942:       ; %bb.0:652; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)653; GFX942-NEXT:    v_mov_b32_e32 v2, 0654; GFX942-NEXT:    ;;#ASMSTART655; GFX942-NEXT:    ; def v[0:1]656; GFX942-NEXT:    ;;#ASMEND657; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]658; GFX942-NEXT:    s_waitcnt vmcnt(0)659; GFX942-NEXT:    s_setpc_b64 s[30:31]660  %vec0 = call <2 x i32> asm "; def $0", "=v"()661  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <2 x i32> <i32 2, i32 1>662  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8663  ret void664}665 666define void @v_shuffle_v2i32_v2i32__u_2(ptr addrspace(1) inreg %ptr) {667; GFX9-LABEL: v_shuffle_v2i32_v2i32__u_2:668; GFX9:       ; %bb.0:669; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)670; GFX9-NEXT:    s_setpc_b64 s[30:31]671  %vec0 = call <2 x i32> asm "; def $0", "=v"()672  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <2 x i32> <i32 poison, i32 2>673  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8674  ret void675}676 677define void @v_shuffle_v2i32_v2i32__0_2(ptr addrspace(1) inreg %ptr) {678; GFX900-LABEL: v_shuffle_v2i32_v2i32__0_2:679; GFX900:       ; %bb.0:680; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)681; GFX900-NEXT:    v_mov_b32_e32 v2, 0682; GFX900-NEXT:    ;;#ASMSTART683; GFX900-NEXT:    ; def v[0:1]684; GFX900-NEXT:    ;;#ASMEND685; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]686; GFX900-NEXT:    s_waitcnt vmcnt(0)687; GFX900-NEXT:    s_setpc_b64 s[30:31]688;689; GFX90A-LABEL: v_shuffle_v2i32_v2i32__0_2:690; GFX90A:       ; %bb.0:691; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)692; GFX90A-NEXT:    v_mov_b32_e32 v2, 0693; GFX90A-NEXT:    ;;#ASMSTART694; GFX90A-NEXT:    ; def v[0:1]695; GFX90A-NEXT:    ;;#ASMEND696; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]697; GFX90A-NEXT:    s_waitcnt vmcnt(0)698; GFX90A-NEXT:    s_setpc_b64 s[30:31]699;700; GFX942-LABEL: v_shuffle_v2i32_v2i32__0_2:701; GFX942:       ; %bb.0:702; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)703; GFX942-NEXT:    v_mov_b32_e32 v2, 0704; GFX942-NEXT:    ;;#ASMSTART705; GFX942-NEXT:    ; def v[0:1]706; GFX942-NEXT:    ;;#ASMEND707; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]708; GFX942-NEXT:    s_waitcnt vmcnt(0)709; GFX942-NEXT:    s_setpc_b64 s[30:31]710  %vec0 = call <2 x i32> asm "; def $0", "=v"()711  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <2 x i32> <i32 0, i32 2>712  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8713  ret void714}715 716define void @v_shuffle_v2i32_v2i32__1_2(ptr addrspace(1) inreg %ptr) {717; GFX900-LABEL: v_shuffle_v2i32_v2i32__1_2:718; GFX900:       ; %bb.0:719; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)720; GFX900-NEXT:    v_mov_b32_e32 v2, 0721; GFX900-NEXT:    ;;#ASMSTART722; GFX900-NEXT:    ; def v[0:1]723; GFX900-NEXT:    ;;#ASMEND724; GFX900-NEXT:    global_store_dwordx2 v2, v[1:2], s[16:17]725; GFX900-NEXT:    s_waitcnt vmcnt(0)726; GFX900-NEXT:    s_setpc_b64 s[30:31]727;728; GFX90A-LABEL: v_shuffle_v2i32_v2i32__1_2:729; GFX90A:       ; %bb.0:730; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)731; GFX90A-NEXT:    ;;#ASMSTART732; GFX90A-NEXT:    ; def v[0:1]733; GFX90A-NEXT:    ;;#ASMEND734; GFX90A-NEXT:    v_mov_b32_e32 v2, 0735; GFX90A-NEXT:    v_mov_b32_e32 v0, v1736; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]737; GFX90A-NEXT:    s_waitcnt vmcnt(0)738; GFX90A-NEXT:    s_setpc_b64 s[30:31]739;740; GFX942-LABEL: v_shuffle_v2i32_v2i32__1_2:741; GFX942:       ; %bb.0:742; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)743; GFX942-NEXT:    ;;#ASMSTART744; GFX942-NEXT:    ; def v[0:1]745; GFX942-NEXT:    ;;#ASMEND746; GFX942-NEXT:    v_mov_b32_e32 v2, 0747; GFX942-NEXT:    v_mov_b32_e32 v0, v1748; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]749; GFX942-NEXT:    s_waitcnt vmcnt(0)750; GFX942-NEXT:    s_setpc_b64 s[30:31]751  %vec0 = call <2 x i32> asm "; def $0", "=v"()752  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <2 x i32> <i32 1, i32 2>753  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8754  ret void755}756 757define void @v_shuffle_v2i32_v2i32__2_2(ptr addrspace(1) inreg %ptr) {758; GFX9-LABEL: v_shuffle_v2i32_v2i32__2_2:759; GFX9:       ; %bb.0:760; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)761; GFX9-NEXT:    s_setpc_b64 s[30:31]762  %vec0 = call <2 x i32> asm "; def $0", "=v"()763  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <2 x i32> <i32 2, i32 2>764  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8765  ret void766}767 768define void @v_shuffle_v2i32_v2i32__u_3(ptr addrspace(1) inreg %ptr) {769; GFX900-LABEL: v_shuffle_v2i32_v2i32__u_3:770; GFX900:       ; %bb.0:771; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)772; GFX900-NEXT:    v_mov_b32_e32 v2, 0773; GFX900-NEXT:    ;;#ASMSTART774; GFX900-NEXT:    ; def v[0:1]775; GFX900-NEXT:    ;;#ASMEND776; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]777; GFX900-NEXT:    s_waitcnt vmcnt(0)778; GFX900-NEXT:    s_setpc_b64 s[30:31]779;780; GFX90A-LABEL: v_shuffle_v2i32_v2i32__u_3:781; GFX90A:       ; %bb.0:782; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)783; GFX90A-NEXT:    v_mov_b32_e32 v2, 0784; GFX90A-NEXT:    ;;#ASMSTART785; GFX90A-NEXT:    ; def v[0:1]786; GFX90A-NEXT:    ;;#ASMEND787; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]788; GFX90A-NEXT:    s_waitcnt vmcnt(0)789; GFX90A-NEXT:    s_setpc_b64 s[30:31]790;791; GFX942-LABEL: v_shuffle_v2i32_v2i32__u_3:792; GFX942:       ; %bb.0:793; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)794; GFX942-NEXT:    v_mov_b32_e32 v2, 0795; GFX942-NEXT:    ;;#ASMSTART796; GFX942-NEXT:    ; def v[0:1]797; GFX942-NEXT:    ;;#ASMEND798; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]799; GFX942-NEXT:    s_waitcnt vmcnt(0)800; GFX942-NEXT:    s_setpc_b64 s[30:31]801  %vec0 = call <2 x i32> asm "; def $0", "=v"()802  %vec1 = call <2 x i32> asm "; def $0", "=v"()803  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <2 x i32> <i32 poison, i32 3>804  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8805  ret void806}807 808define void @v_shuffle_v2i32_v2i32__0_3(ptr addrspace(1) inreg %ptr) {809; GFX900-LABEL: v_shuffle_v2i32_v2i32__0_3:810; GFX900:       ; %bb.0:811; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)812; GFX900-NEXT:    ;;#ASMSTART813; GFX900-NEXT:    ; def v[0:1]814; GFX900-NEXT:    ;;#ASMEND815; GFX900-NEXT:    ;;#ASMSTART816; GFX900-NEXT:    ; def v[1:2]817; GFX900-NEXT:    ;;#ASMEND818; GFX900-NEXT:    v_mov_b32_e32 v3, 0819; GFX900-NEXT:    v_mov_b32_e32 v1, v2820; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]821; GFX900-NEXT:    s_waitcnt vmcnt(0)822; GFX900-NEXT:    s_setpc_b64 s[30:31]823;824; GFX90A-LABEL: v_shuffle_v2i32_v2i32__0_3:825; GFX90A:       ; %bb.0:826; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)827; GFX90A-NEXT:    ;;#ASMSTART828; GFX90A-NEXT:    ; def v[0:1]829; GFX90A-NEXT:    ;;#ASMEND830; GFX90A-NEXT:    v_mov_b32_e32 v4, 0831; GFX90A-NEXT:    ;;#ASMSTART832; GFX90A-NEXT:    ; def v[2:3]833; GFX90A-NEXT:    ;;#ASMEND834; GFX90A-NEXT:    v_mov_b32_e32 v1, v3835; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]836; GFX90A-NEXT:    s_waitcnt vmcnt(0)837; GFX90A-NEXT:    s_setpc_b64 s[30:31]838;839; GFX942-LABEL: v_shuffle_v2i32_v2i32__0_3:840; GFX942:       ; %bb.0:841; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)842; GFX942-NEXT:    ;;#ASMSTART843; GFX942-NEXT:    ; def v[0:1]844; GFX942-NEXT:    ;;#ASMEND845; GFX942-NEXT:    v_mov_b32_e32 v4, 0846; GFX942-NEXT:    ;;#ASMSTART847; GFX942-NEXT:    ; def v[2:3]848; GFX942-NEXT:    ;;#ASMEND849; GFX942-NEXT:    s_nop 0850; GFX942-NEXT:    v_mov_b32_e32 v1, v3851; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]852; GFX942-NEXT:    s_waitcnt vmcnt(0)853; GFX942-NEXT:    s_setpc_b64 s[30:31]854  %vec0 = call <2 x i32> asm "; def $0", "=v"()855  %vec1 = call <2 x i32> asm "; def $0", "=v"()856  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <2 x i32> <i32 0, i32 3>857  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8858  ret void859}860 861define void @v_shuffle_v2i32_v2i32__1_3(ptr addrspace(1) inreg %ptr) {862; GFX900-LABEL: v_shuffle_v2i32_v2i32__1_3:863; GFX900:       ; %bb.0:864; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)865; GFX900-NEXT:    ;;#ASMSTART866; GFX900-NEXT:    ; def v[2:3]867; GFX900-NEXT:    ;;#ASMEND868; GFX900-NEXT:    v_mov_b32_e32 v4, 0869; GFX900-NEXT:    v_mov_b32_e32 v2, v3870; GFX900-NEXT:    ;;#ASMSTART871; GFX900-NEXT:    ; def v[0:1]872; GFX900-NEXT:    ;;#ASMEND873; GFX900-NEXT:    global_store_dwordx2 v4, v[1:2], s[16:17]874; GFX900-NEXT:    s_waitcnt vmcnt(0)875; GFX900-NEXT:    s_setpc_b64 s[30:31]876;877; GFX90A-LABEL: v_shuffle_v2i32_v2i32__1_3:878; GFX90A:       ; %bb.0:879; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)880; GFX90A-NEXT:    ;;#ASMSTART881; GFX90A-NEXT:    ; def v[2:3]882; GFX90A-NEXT:    ;;#ASMEND883; GFX90A-NEXT:    v_mov_b32_e32 v4, 0884; GFX90A-NEXT:    ;;#ASMSTART885; GFX90A-NEXT:    ; def v[0:1]886; GFX90A-NEXT:    ;;#ASMEND887; GFX90A-NEXT:    v_mov_b32_e32 v2, v1888; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]889; GFX90A-NEXT:    s_waitcnt vmcnt(0)890; GFX90A-NEXT:    s_setpc_b64 s[30:31]891;892; GFX942-LABEL: v_shuffle_v2i32_v2i32__1_3:893; GFX942:       ; %bb.0:894; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)895; GFX942-NEXT:    ;;#ASMSTART896; GFX942-NEXT:    ; def v[2:3]897; GFX942-NEXT:    ;;#ASMEND898; GFX942-NEXT:    v_mov_b32_e32 v4, 0899; GFX942-NEXT:    ;;#ASMSTART900; GFX942-NEXT:    ; def v[0:1]901; GFX942-NEXT:    ;;#ASMEND902; GFX942-NEXT:    s_nop 0903; GFX942-NEXT:    v_mov_b32_e32 v2, v1904; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]905; GFX942-NEXT:    s_waitcnt vmcnt(0)906; GFX942-NEXT:    s_setpc_b64 s[30:31]907  %vec0 = call <2 x i32> asm "; def $0", "=v"()908  %vec1 = call <2 x i32> asm "; def $0", "=v"()909  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <2 x i32> <i32 1, i32 3>910  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8911  ret void912}913 914define void @v_shuffle_v2i32_v2i32__2_3(ptr addrspace(1) inreg %ptr) {915; GFX900-LABEL: v_shuffle_v2i32_v2i32__2_3:916; GFX900:       ; %bb.0:917; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)918; GFX900-NEXT:    v_mov_b32_e32 v2, 0919; GFX900-NEXT:    ;;#ASMSTART920; GFX900-NEXT:    ; def v[0:1]921; GFX900-NEXT:    ;;#ASMEND922; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]923; GFX900-NEXT:    s_waitcnt vmcnt(0)924; GFX900-NEXT:    s_setpc_b64 s[30:31]925;926; GFX90A-LABEL: v_shuffle_v2i32_v2i32__2_3:927; GFX90A:       ; %bb.0:928; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)929; GFX90A-NEXT:    v_mov_b32_e32 v2, 0930; GFX90A-NEXT:    ;;#ASMSTART931; GFX90A-NEXT:    ; def v[0:1]932; GFX90A-NEXT:    ;;#ASMEND933; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]934; GFX90A-NEXT:    s_waitcnt vmcnt(0)935; GFX90A-NEXT:    s_setpc_b64 s[30:31]936;937; GFX942-LABEL: v_shuffle_v2i32_v2i32__2_3:938; GFX942:       ; %bb.0:939; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)940; GFX942-NEXT:    v_mov_b32_e32 v2, 0941; GFX942-NEXT:    ;;#ASMSTART942; GFX942-NEXT:    ; def v[0:1]943; GFX942-NEXT:    ;;#ASMEND944; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]945; GFX942-NEXT:    s_waitcnt vmcnt(0)946; GFX942-NEXT:    s_setpc_b64 s[30:31]947  %vec0 = call <2 x i32> asm "; def $0", "=v"()948  %vec1 = call <2 x i32> asm "; def $0", "=v"()949  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <2 x i32> <i32 2, i32 3>950  store <2 x i32> %shuf, ptr addrspace(1) %ptr, align 8951  ret void952}953 954define void @s_shuffle_v2i32_v2i32__u_u() {955; GFX9-LABEL: s_shuffle_v2i32_v2i32__u_u:956; GFX9:       ; %bb.0:957; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)958; GFX9-NEXT:    ;;#ASMSTART959; GFX9-NEXT:    ; use s[8:9]960; GFX9-NEXT:    ;;#ASMEND961; GFX9-NEXT:    s_setpc_b64 s[30:31]962  %vec0 = call <2 x i32> asm "; def $0", "=s"()963  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <2 x i32> poison964  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)965  ret void966}967 968define void @s_shuffle_v2i32_v2i32__0_u() {969; GFX900-LABEL: s_shuffle_v2i32_v2i32__0_u:970; GFX900:       ; %bb.0:971; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)972; GFX900-NEXT:    ;;#ASMSTART973; GFX900-NEXT:    ; def s[8:9]974; GFX900-NEXT:    ;;#ASMEND975; GFX900-NEXT:    ;;#ASMSTART976; GFX900-NEXT:    ; use s[8:9]977; GFX900-NEXT:    ;;#ASMEND978; GFX900-NEXT:    s_setpc_b64 s[30:31]979;980; GFX90A-LABEL: s_shuffle_v2i32_v2i32__0_u:981; GFX90A:       ; %bb.0:982; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)983; GFX90A-NEXT:    ;;#ASMSTART984; GFX90A-NEXT:    ; def s[8:9]985; GFX90A-NEXT:    ;;#ASMEND986; GFX90A-NEXT:    ;;#ASMSTART987; GFX90A-NEXT:    ; use s[8:9]988; GFX90A-NEXT:    ;;#ASMEND989; GFX90A-NEXT:    s_setpc_b64 s[30:31]990;991; GFX942-LABEL: s_shuffle_v2i32_v2i32__0_u:992; GFX942:       ; %bb.0:993; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)994; GFX942-NEXT:    ;;#ASMSTART995; GFX942-NEXT:    ; def s[8:9]996; GFX942-NEXT:    ;;#ASMEND997; GFX942-NEXT:    s_nop 0998; GFX942-NEXT:    ;;#ASMSTART999; GFX942-NEXT:    ; use s[8:9]1000; GFX942-NEXT:    ;;#ASMEND1001; GFX942-NEXT:    s_setpc_b64 s[30:31]1002  %vec0 = call <2 x i32> asm "; def $0", "=s"()1003  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <2 x i32> <i32 0, i32 poison>1004  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)1005  ret void1006}1007 1008define void @s_shuffle_v2i32_v2i32__1_u() {1009; GFX900-LABEL: s_shuffle_v2i32_v2i32__1_u:1010; GFX900:       ; %bb.0:1011; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1012; GFX900-NEXT:    ;;#ASMSTART1013; GFX900-NEXT:    ; def s[4:5]1014; GFX900-NEXT:    ;;#ASMEND1015; GFX900-NEXT:    s_mov_b32 s8, s51016; GFX900-NEXT:    ;;#ASMSTART1017; GFX900-NEXT:    ; use s[8:9]1018; GFX900-NEXT:    ;;#ASMEND1019; GFX900-NEXT:    s_setpc_b64 s[30:31]1020;1021; GFX90A-LABEL: s_shuffle_v2i32_v2i32__1_u:1022; GFX90A:       ; %bb.0:1023; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1024; GFX90A-NEXT:    ;;#ASMSTART1025; GFX90A-NEXT:    ; def s[4:5]1026; GFX90A-NEXT:    ;;#ASMEND1027; GFX90A-NEXT:    s_mov_b32 s8, s51028; GFX90A-NEXT:    ;;#ASMSTART1029; GFX90A-NEXT:    ; use s[8:9]1030; GFX90A-NEXT:    ;;#ASMEND1031; GFX90A-NEXT:    s_setpc_b64 s[30:31]1032;1033; GFX942-LABEL: s_shuffle_v2i32_v2i32__1_u:1034; GFX942:       ; %bb.0:1035; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1036; GFX942-NEXT:    ;;#ASMSTART1037; GFX942-NEXT:    ; def s[0:1]1038; GFX942-NEXT:    ;;#ASMEND1039; GFX942-NEXT:    s_mov_b32 s8, s11040; GFX942-NEXT:    ;;#ASMSTART1041; GFX942-NEXT:    ; use s[8:9]1042; GFX942-NEXT:    ;;#ASMEND1043; GFX942-NEXT:    s_setpc_b64 s[30:31]1044  %vec0 = call <2 x i32> asm "; def $0", "=s"()1045  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <2 x i32> <i32 1, i32 poison>1046  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)1047  ret void1048}1049 1050define void @s_shuffle_v2i32_v2i32__2_u() {1051; GFX9-LABEL: s_shuffle_v2i32_v2i32__2_u:1052; GFX9:       ; %bb.0:1053; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1054; GFX9-NEXT:    ;;#ASMSTART1055; GFX9-NEXT:    ; use s[8:9]1056; GFX9-NEXT:    ;;#ASMEND1057; GFX9-NEXT:    s_setpc_b64 s[30:31]1058  %vec0 = call <2 x i32> asm "; def $0", "=s"()1059  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <2 x i32> <i32 2, i32 poison>1060  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)1061  ret void1062}1063 1064define void @s_shuffle_v2i32_v2i32__3_u() {1065; GFX900-LABEL: s_shuffle_v2i32_v2i32__3_u:1066; GFX900:       ; %bb.0:1067; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1068; GFX900-NEXT:    ;;#ASMSTART1069; GFX900-NEXT:    ; def s[4:5]1070; GFX900-NEXT:    ;;#ASMEND1071; GFX900-NEXT:    s_mov_b32 s8, s51072; GFX900-NEXT:    ;;#ASMSTART1073; GFX900-NEXT:    ; use s[8:9]1074; GFX900-NEXT:    ;;#ASMEND1075; GFX900-NEXT:    s_setpc_b64 s[30:31]1076;1077; GFX90A-LABEL: s_shuffle_v2i32_v2i32__3_u:1078; GFX90A:       ; %bb.0:1079; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1080; GFX90A-NEXT:    ;;#ASMSTART1081; GFX90A-NEXT:    ; def s[4:5]1082; GFX90A-NEXT:    ;;#ASMEND1083; GFX90A-NEXT:    s_mov_b32 s8, s51084; GFX90A-NEXT:    ;;#ASMSTART1085; GFX90A-NEXT:    ; use s[8:9]1086; GFX90A-NEXT:    ;;#ASMEND1087; GFX90A-NEXT:    s_setpc_b64 s[30:31]1088;1089; GFX942-LABEL: s_shuffle_v2i32_v2i32__3_u:1090; GFX942:       ; %bb.0:1091; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1092; GFX942-NEXT:    ;;#ASMSTART1093; GFX942-NEXT:    ; def s[0:1]1094; GFX942-NEXT:    ;;#ASMEND1095; GFX942-NEXT:    s_mov_b32 s8, s11096; GFX942-NEXT:    ;;#ASMSTART1097; GFX942-NEXT:    ; use s[8:9]1098; GFX942-NEXT:    ;;#ASMEND1099; GFX942-NEXT:    s_setpc_b64 s[30:31]1100  %vec0 = call <2 x i32> asm "; def $0", "=s"()1101  %vec1 = call <2 x i32> asm "; def $0", "=s"()1102  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <2 x i32> <i32 3, i32 poison>1103  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)1104  ret void1105}1106 1107define void @s_shuffle_v2i32_v2i32__3_0() {1108; GFX900-LABEL: s_shuffle_v2i32_v2i32__3_0:1109; GFX900:       ; %bb.0:1110; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1111; GFX900-NEXT:    ;;#ASMSTART1112; GFX900-NEXT:    ; def s[4:5]1113; GFX900-NEXT:    ;;#ASMEND1114; GFX900-NEXT:    ;;#ASMSTART1115; GFX900-NEXT:    ; def s[6:7]1116; GFX900-NEXT:    ;;#ASMEND1117; GFX900-NEXT:    s_mov_b32 s8, s71118; GFX900-NEXT:    s_mov_b32 s9, s41119; GFX900-NEXT:    ;;#ASMSTART1120; GFX900-NEXT:    ; use s[8:9]1121; GFX900-NEXT:    ;;#ASMEND1122; GFX900-NEXT:    s_setpc_b64 s[30:31]1123;1124; GFX90A-LABEL: s_shuffle_v2i32_v2i32__3_0:1125; GFX90A:       ; %bb.0:1126; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1127; GFX90A-NEXT:    ;;#ASMSTART1128; GFX90A-NEXT:    ; def s[4:5]1129; GFX90A-NEXT:    ;;#ASMEND1130; GFX90A-NEXT:    ;;#ASMSTART1131; GFX90A-NEXT:    ; def s[6:7]1132; GFX90A-NEXT:    ;;#ASMEND1133; GFX90A-NEXT:    s_mov_b32 s8, s71134; GFX90A-NEXT:    s_mov_b32 s9, s41135; GFX90A-NEXT:    ;;#ASMSTART1136; GFX90A-NEXT:    ; use s[8:9]1137; GFX90A-NEXT:    ;;#ASMEND1138; GFX90A-NEXT:    s_setpc_b64 s[30:31]1139;1140; GFX942-LABEL: s_shuffle_v2i32_v2i32__3_0:1141; GFX942:       ; %bb.0:1142; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1143; GFX942-NEXT:    ;;#ASMSTART1144; GFX942-NEXT:    ; def s[0:1]1145; GFX942-NEXT:    ;;#ASMEND1146; GFX942-NEXT:    ;;#ASMSTART1147; GFX942-NEXT:    ; def s[2:3]1148; GFX942-NEXT:    ;;#ASMEND1149; GFX942-NEXT:    s_mov_b32 s8, s31150; GFX942-NEXT:    s_mov_b32 s9, s01151; GFX942-NEXT:    ;;#ASMSTART1152; GFX942-NEXT:    ; use s[8:9]1153; GFX942-NEXT:    ;;#ASMEND1154; GFX942-NEXT:    s_setpc_b64 s[30:31]1155  %vec0 = call <2 x i32> asm "; def $0", "=s"()1156  %vec1 = call <2 x i32> asm "; def $0", "=s"()1157  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <2 x i32> <i32 3, i32 0>1158  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)1159  ret void1160}1161 1162define void @s_shuffle_v2i32_v2i32__3_1() {1163; GFX900-LABEL: s_shuffle_v2i32_v2i32__3_1:1164; GFX900:       ; %bb.0:1165; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1166; GFX900-NEXT:    ;;#ASMSTART1167; GFX900-NEXT:    ; def s[8:9]1168; GFX900-NEXT:    ;;#ASMEND1169; GFX900-NEXT:    ;;#ASMSTART1170; GFX900-NEXT:    ; def s[4:5]1171; GFX900-NEXT:    ;;#ASMEND1172; GFX900-NEXT:    s_mov_b32 s8, s51173; GFX900-NEXT:    ;;#ASMSTART1174; GFX900-NEXT:    ; use s[8:9]1175; GFX900-NEXT:    ;;#ASMEND1176; GFX900-NEXT:    s_setpc_b64 s[30:31]1177;1178; GFX90A-LABEL: s_shuffle_v2i32_v2i32__3_1:1179; GFX90A:       ; %bb.0:1180; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1181; GFX90A-NEXT:    ;;#ASMSTART1182; GFX90A-NEXT:    ; def s[8:9]1183; GFX90A-NEXT:    ;;#ASMEND1184; GFX90A-NEXT:    ;;#ASMSTART1185; GFX90A-NEXT:    ; def s[4:5]1186; GFX90A-NEXT:    ;;#ASMEND1187; GFX90A-NEXT:    s_mov_b32 s8, s51188; GFX90A-NEXT:    ;;#ASMSTART1189; GFX90A-NEXT:    ; use s[8:9]1190; GFX90A-NEXT:    ;;#ASMEND1191; GFX90A-NEXT:    s_setpc_b64 s[30:31]1192;1193; GFX942-LABEL: s_shuffle_v2i32_v2i32__3_1:1194; GFX942:       ; %bb.0:1195; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1196; GFX942-NEXT:    ;;#ASMSTART1197; GFX942-NEXT:    ; def s[8:9]1198; GFX942-NEXT:    ;;#ASMEND1199; GFX942-NEXT:    ;;#ASMSTART1200; GFX942-NEXT:    ; def s[0:1]1201; GFX942-NEXT:    ;;#ASMEND1202; GFX942-NEXT:    s_mov_b32 s8, s11203; GFX942-NEXT:    ;;#ASMSTART1204; GFX942-NEXT:    ; use s[8:9]1205; GFX942-NEXT:    ;;#ASMEND1206; GFX942-NEXT:    s_setpc_b64 s[30:31]1207  %vec0 = call <2 x i32> asm "; def $0", "=s"()1208  %vec1 = call <2 x i32> asm "; def $0", "=s"()1209  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <2 x i32> <i32 3, i32 1>1210  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)1211  ret void1212}1213 1214define void @s_shuffle_v2i32_v2i32__3_2() {1215; GFX900-LABEL: s_shuffle_v2i32_v2i32__3_2:1216; GFX900:       ; %bb.0:1217; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1218; GFX900-NEXT:    ;;#ASMSTART1219; GFX900-NEXT:    ; def s[4:5]1220; GFX900-NEXT:    ;;#ASMEND1221; GFX900-NEXT:    s_mov_b32 s8, s51222; GFX900-NEXT:    s_mov_b32 s9, s41223; GFX900-NEXT:    ;;#ASMSTART1224; GFX900-NEXT:    ; use s[8:9]1225; GFX900-NEXT:    ;;#ASMEND1226; GFX900-NEXT:    s_setpc_b64 s[30:31]1227;1228; GFX90A-LABEL: s_shuffle_v2i32_v2i32__3_2:1229; GFX90A:       ; %bb.0:1230; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1231; GFX90A-NEXT:    ;;#ASMSTART1232; GFX90A-NEXT:    ; def s[4:5]1233; GFX90A-NEXT:    ;;#ASMEND1234; GFX90A-NEXT:    s_mov_b32 s8, s51235; GFX90A-NEXT:    s_mov_b32 s9, s41236; GFX90A-NEXT:    ;;#ASMSTART1237; GFX90A-NEXT:    ; use s[8:9]1238; GFX90A-NEXT:    ;;#ASMEND1239; GFX90A-NEXT:    s_setpc_b64 s[30:31]1240;1241; GFX942-LABEL: s_shuffle_v2i32_v2i32__3_2:1242; GFX942:       ; %bb.0:1243; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1244; GFX942-NEXT:    ;;#ASMSTART1245; GFX942-NEXT:    ; def s[0:1]1246; GFX942-NEXT:    ;;#ASMEND1247; GFX942-NEXT:    s_mov_b32 s8, s11248; GFX942-NEXT:    s_mov_b32 s9, s01249; GFX942-NEXT:    ;;#ASMSTART1250; GFX942-NEXT:    ; use s[8:9]1251; GFX942-NEXT:    ;;#ASMEND1252; GFX942-NEXT:    s_setpc_b64 s[30:31]1253  %vec0 = call <2 x i32> asm "; def $0", "=s"()1254  %vec1 = call <2 x i32> asm "; def $0", "=s"()1255  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <2 x i32> <i32 3, i32 2>1256  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)1257  ret void1258}1259 1260define void @s_shuffle_v2i32_v2i32__3_3() {1261; GFX9-LABEL: s_shuffle_v2i32_v2i32__3_3:1262; GFX9:       ; %bb.0:1263; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1264; GFX9-NEXT:    ;;#ASMSTART1265; GFX9-NEXT:    ; def s[8:9]1266; GFX9-NEXT:    ;;#ASMEND1267; GFX9-NEXT:    s_mov_b32 s8, s91268; GFX9-NEXT:    ;;#ASMSTART1269; GFX9-NEXT:    ; use s[8:9]1270; GFX9-NEXT:    ;;#ASMEND1271; GFX9-NEXT:    s_setpc_b64 s[30:31]1272  %vec0 = call <2 x i32> asm "; def $0", "=s"()1273  %vec1 = call <2 x i32> asm "; def $0", "=s"()1274  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <2 x i32> <i32 3, i32 3>1275  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)1276  ret void1277}1278 1279define void @s_shuffle_v2i32_v2i32__u_0() {1280; GFX900-LABEL: s_shuffle_v2i32_v2i32__u_0:1281; GFX900:       ; %bb.0:1282; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1283; GFX900-NEXT:    ;;#ASMSTART1284; GFX900-NEXT:    ; def s[4:5]1285; GFX900-NEXT:    ;;#ASMEND1286; GFX900-NEXT:    s_mov_b32 s9, s41287; GFX900-NEXT:    ;;#ASMSTART1288; GFX900-NEXT:    ; use s[8:9]1289; GFX900-NEXT:    ;;#ASMEND1290; GFX900-NEXT:    s_setpc_b64 s[30:31]1291;1292; GFX90A-LABEL: s_shuffle_v2i32_v2i32__u_0:1293; GFX90A:       ; %bb.0:1294; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1295; GFX90A-NEXT:    ;;#ASMSTART1296; GFX90A-NEXT:    ; def s[4:5]1297; GFX90A-NEXT:    ;;#ASMEND1298; GFX90A-NEXT:    s_mov_b32 s9, s41299; GFX90A-NEXT:    ;;#ASMSTART1300; GFX90A-NEXT:    ; use s[8:9]1301; GFX90A-NEXT:    ;;#ASMEND1302; GFX90A-NEXT:    s_setpc_b64 s[30:31]1303;1304; GFX942-LABEL: s_shuffle_v2i32_v2i32__u_0:1305; GFX942:       ; %bb.0:1306; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1307; GFX942-NEXT:    ;;#ASMSTART1308; GFX942-NEXT:    ; def s[0:1]1309; GFX942-NEXT:    ;;#ASMEND1310; GFX942-NEXT:    s_mov_b32 s9, s01311; GFX942-NEXT:    ;;#ASMSTART1312; GFX942-NEXT:    ; use s[8:9]1313; GFX942-NEXT:    ;;#ASMEND1314; GFX942-NEXT:    s_setpc_b64 s[30:31]1315  %vec0 = call <2 x i32> asm "; def $0", "=s"()1316  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <2 x i32> <i32 poison, i32 0>1317  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)1318  ret void1319}1320 1321define void @s_shuffle_v2i32_v2i32__0_0() {1322; GFX9-LABEL: s_shuffle_v2i32_v2i32__0_0:1323; GFX9:       ; %bb.0:1324; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1325; GFX9-NEXT:    ;;#ASMSTART1326; GFX9-NEXT:    ; def s[8:9]1327; GFX9-NEXT:    ;;#ASMEND1328; GFX9-NEXT:    s_mov_b32 s9, s81329; GFX9-NEXT:    ;;#ASMSTART1330; GFX9-NEXT:    ; use s[8:9]1331; GFX9-NEXT:    ;;#ASMEND1332; GFX9-NEXT:    s_setpc_b64 s[30:31]1333  %vec0 = call <2 x i32> asm "; def $0", "=s"()1334  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <2 x i32> zeroinitializer1335  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)1336  ret void1337}1338 1339define void @s_shuffle_v2i32_v2i32__1_0() {1340; GFX900-LABEL: s_shuffle_v2i32_v2i32__1_0:1341; GFX900:       ; %bb.0:1342; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1343; GFX900-NEXT:    ;;#ASMSTART1344; GFX900-NEXT:    ; def s[4:5]1345; GFX900-NEXT:    ;;#ASMEND1346; GFX900-NEXT:    s_mov_b32 s8, s51347; GFX900-NEXT:    s_mov_b32 s9, s41348; GFX900-NEXT:    ;;#ASMSTART1349; GFX900-NEXT:    ; use s[8:9]1350; GFX900-NEXT:    ;;#ASMEND1351; GFX900-NEXT:    s_setpc_b64 s[30:31]1352;1353; GFX90A-LABEL: s_shuffle_v2i32_v2i32__1_0:1354; GFX90A:       ; %bb.0:1355; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1356; GFX90A-NEXT:    ;;#ASMSTART1357; GFX90A-NEXT:    ; def s[4:5]1358; GFX90A-NEXT:    ;;#ASMEND1359; GFX90A-NEXT:    s_mov_b32 s8, s51360; GFX90A-NEXT:    s_mov_b32 s9, s41361; GFX90A-NEXT:    ;;#ASMSTART1362; GFX90A-NEXT:    ; use s[8:9]1363; GFX90A-NEXT:    ;;#ASMEND1364; GFX90A-NEXT:    s_setpc_b64 s[30:31]1365;1366; GFX942-LABEL: s_shuffle_v2i32_v2i32__1_0:1367; GFX942:       ; %bb.0:1368; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1369; GFX942-NEXT:    ;;#ASMSTART1370; GFX942-NEXT:    ; def s[0:1]1371; GFX942-NEXT:    ;;#ASMEND1372; GFX942-NEXT:    s_mov_b32 s8, s11373; GFX942-NEXT:    s_mov_b32 s9, s01374; GFX942-NEXT:    ;;#ASMSTART1375; GFX942-NEXT:    ; use s[8:9]1376; GFX942-NEXT:    ;;#ASMEND1377; GFX942-NEXT:    s_setpc_b64 s[30:31]1378  %vec0 = call <2 x i32> asm "; def $0", "=s"()1379  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <2 x i32> <i32 1, i32 0>1380  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)1381  ret void1382}1383 1384define void @s_shuffle_v2i32_v2i32__2_0() {1385; GFX900-LABEL: s_shuffle_v2i32_v2i32__2_0:1386; GFX900:       ; %bb.0:1387; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1388; GFX900-NEXT:    ;;#ASMSTART1389; GFX900-NEXT:    ; def s[4:5]1390; GFX900-NEXT:    ;;#ASMEND1391; GFX900-NEXT:    s_mov_b32 s9, s41392; GFX900-NEXT:    ;;#ASMSTART1393; GFX900-NEXT:    ; use s[8:9]1394; GFX900-NEXT:    ;;#ASMEND1395; GFX900-NEXT:    s_setpc_b64 s[30:31]1396;1397; GFX90A-LABEL: s_shuffle_v2i32_v2i32__2_0:1398; GFX90A:       ; %bb.0:1399; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1400; GFX90A-NEXT:    ;;#ASMSTART1401; GFX90A-NEXT:    ; def s[4:5]1402; GFX90A-NEXT:    ;;#ASMEND1403; GFX90A-NEXT:    s_mov_b32 s9, s41404; GFX90A-NEXT:    ;;#ASMSTART1405; GFX90A-NEXT:    ; use s[8:9]1406; GFX90A-NEXT:    ;;#ASMEND1407; GFX90A-NEXT:    s_setpc_b64 s[30:31]1408;1409; GFX942-LABEL: s_shuffle_v2i32_v2i32__2_0:1410; GFX942:       ; %bb.0:1411; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1412; GFX942-NEXT:    ;;#ASMSTART1413; GFX942-NEXT:    ; def s[0:1]1414; GFX942-NEXT:    ;;#ASMEND1415; GFX942-NEXT:    s_mov_b32 s9, s01416; GFX942-NEXT:    ;;#ASMSTART1417; GFX942-NEXT:    ; use s[8:9]1418; GFX942-NEXT:    ;;#ASMEND1419; GFX942-NEXT:    s_setpc_b64 s[30:31]1420  %vec0 = call <2 x i32> asm "; def $0", "=s"()1421  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <2 x i32> <i32 2, i32 0>1422  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)1423  ret void1424}1425 1426define void @s_shuffle_v2i32_v2i32__u_1() {1427; GFX900-LABEL: s_shuffle_v2i32_v2i32__u_1:1428; GFX900:       ; %bb.0:1429; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1430; GFX900-NEXT:    ;;#ASMSTART1431; GFX900-NEXT:    ; def s[8:9]1432; GFX900-NEXT:    ;;#ASMEND1433; GFX900-NEXT:    ;;#ASMSTART1434; GFX900-NEXT:    ; use s[8:9]1435; GFX900-NEXT:    ;;#ASMEND1436; GFX900-NEXT:    s_setpc_b64 s[30:31]1437;1438; GFX90A-LABEL: s_shuffle_v2i32_v2i32__u_1:1439; GFX90A:       ; %bb.0:1440; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1441; GFX90A-NEXT:    ;;#ASMSTART1442; GFX90A-NEXT:    ; def s[8:9]1443; GFX90A-NEXT:    ;;#ASMEND1444; GFX90A-NEXT:    ;;#ASMSTART1445; GFX90A-NEXT:    ; use s[8:9]1446; GFX90A-NEXT:    ;;#ASMEND1447; GFX90A-NEXT:    s_setpc_b64 s[30:31]1448;1449; GFX942-LABEL: s_shuffle_v2i32_v2i32__u_1:1450; GFX942:       ; %bb.0:1451; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1452; GFX942-NEXT:    ;;#ASMSTART1453; GFX942-NEXT:    ; def s[8:9]1454; GFX942-NEXT:    ;;#ASMEND1455; GFX942-NEXT:    s_nop 01456; GFX942-NEXT:    ;;#ASMSTART1457; GFX942-NEXT:    ; use s[8:9]1458; GFX942-NEXT:    ;;#ASMEND1459; GFX942-NEXT:    s_setpc_b64 s[30:31]1460  %vec0 = call <2 x i32> asm "; def $0", "=s"()1461  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <2 x i32> <i32 poison, i32 1>1462  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)1463  ret void1464}1465 1466define void @s_shuffle_v2i32_v2i32__0_1() {1467; GFX900-LABEL: s_shuffle_v2i32_v2i32__0_1:1468; GFX900:       ; %bb.0:1469; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1470; GFX900-NEXT:    ;;#ASMSTART1471; GFX900-NEXT:    ; def s[8:9]1472; GFX900-NEXT:    ;;#ASMEND1473; GFX900-NEXT:    ;;#ASMSTART1474; GFX900-NEXT:    ; use s[8:9]1475; GFX900-NEXT:    ;;#ASMEND1476; GFX900-NEXT:    s_setpc_b64 s[30:31]1477;1478; GFX90A-LABEL: s_shuffle_v2i32_v2i32__0_1:1479; GFX90A:       ; %bb.0:1480; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1481; GFX90A-NEXT:    ;;#ASMSTART1482; GFX90A-NEXT:    ; def s[8:9]1483; GFX90A-NEXT:    ;;#ASMEND1484; GFX90A-NEXT:    ;;#ASMSTART1485; GFX90A-NEXT:    ; use s[8:9]1486; GFX90A-NEXT:    ;;#ASMEND1487; GFX90A-NEXT:    s_setpc_b64 s[30:31]1488;1489; GFX942-LABEL: s_shuffle_v2i32_v2i32__0_1:1490; GFX942:       ; %bb.0:1491; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1492; GFX942-NEXT:    ;;#ASMSTART1493; GFX942-NEXT:    ; def s[8:9]1494; GFX942-NEXT:    ;;#ASMEND1495; GFX942-NEXT:    s_nop 01496; GFX942-NEXT:    ;;#ASMSTART1497; GFX942-NEXT:    ; use s[8:9]1498; GFX942-NEXT:    ;;#ASMEND1499; GFX942-NEXT:    s_setpc_b64 s[30:31]1500  %vec0 = call <2 x i32> asm "; def $0", "=s"()1501  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <2 x i32> <i32 0, i32 1>1502  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)1503  ret void1504}1505 1506define void @s_shuffle_v2i32_v2i32__1_1() {1507; GFX9-LABEL: s_shuffle_v2i32_v2i32__1_1:1508; GFX9:       ; %bb.0:1509; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1510; GFX9-NEXT:    ;;#ASMSTART1511; GFX9-NEXT:    ; def s[8:9]1512; GFX9-NEXT:    ;;#ASMEND1513; GFX9-NEXT:    s_mov_b32 s8, s91514; GFX9-NEXT:    ;;#ASMSTART1515; GFX9-NEXT:    ; use s[8:9]1516; GFX9-NEXT:    ;;#ASMEND1517; GFX9-NEXT:    s_setpc_b64 s[30:31]1518  %vec0 = call <2 x i32> asm "; def $0", "=s"()1519  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <2 x i32> <i32 1, i32 1>1520  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)1521  ret void1522}1523 1524define void @s_shuffle_v2i32_v2i32__2_1() {1525; GFX900-LABEL: s_shuffle_v2i32_v2i32__2_1:1526; GFX900:       ; %bb.0:1527; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1528; GFX900-NEXT:    ;;#ASMSTART1529; GFX900-NEXT:    ; def s[8:9]1530; GFX900-NEXT:    ;;#ASMEND1531; GFX900-NEXT:    ;;#ASMSTART1532; GFX900-NEXT:    ; use s[8:9]1533; GFX900-NEXT:    ;;#ASMEND1534; GFX900-NEXT:    s_setpc_b64 s[30:31]1535;1536; GFX90A-LABEL: s_shuffle_v2i32_v2i32__2_1:1537; GFX90A:       ; %bb.0:1538; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1539; GFX90A-NEXT:    ;;#ASMSTART1540; GFX90A-NEXT:    ; def s[8:9]1541; GFX90A-NEXT:    ;;#ASMEND1542; GFX90A-NEXT:    ;;#ASMSTART1543; GFX90A-NEXT:    ; use s[8:9]1544; GFX90A-NEXT:    ;;#ASMEND1545; GFX90A-NEXT:    s_setpc_b64 s[30:31]1546;1547; GFX942-LABEL: s_shuffle_v2i32_v2i32__2_1:1548; GFX942:       ; %bb.0:1549; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1550; GFX942-NEXT:    ;;#ASMSTART1551; GFX942-NEXT:    ; def s[8:9]1552; GFX942-NEXT:    ;;#ASMEND1553; GFX942-NEXT:    s_nop 01554; GFX942-NEXT:    ;;#ASMSTART1555; GFX942-NEXT:    ; use s[8:9]1556; GFX942-NEXT:    ;;#ASMEND1557; GFX942-NEXT:    s_setpc_b64 s[30:31]1558  %vec0 = call <2 x i32> asm "; def $0", "=s"()1559  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <2 x i32> <i32 2, i32 1>1560  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)1561  ret void1562}1563 1564define void @s_shuffle_v2i32_v2i32__u_2() {1565; GFX9-LABEL: s_shuffle_v2i32_v2i32__u_2:1566; GFX9:       ; %bb.0:1567; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1568; GFX9-NEXT:    ;;#ASMSTART1569; GFX9-NEXT:    ; use s[8:9]1570; GFX9-NEXT:    ;;#ASMEND1571; GFX9-NEXT:    s_setpc_b64 s[30:31]1572  %vec0 = call <2 x i32> asm "; def $0", "=s"()1573  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <2 x i32> <i32 poison, i32 2>1574  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)1575  ret void1576}1577 1578define void @s_shuffle_v2i32_v2i32__0_2() {1579; GFX900-LABEL: s_shuffle_v2i32_v2i32__0_2:1580; GFX900:       ; %bb.0:1581; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1582; GFX900-NEXT:    ;;#ASMSTART1583; GFX900-NEXT:    ; def s[8:9]1584; GFX900-NEXT:    ;;#ASMEND1585; GFX900-NEXT:    ;;#ASMSTART1586; GFX900-NEXT:    ; use s[8:9]1587; GFX900-NEXT:    ;;#ASMEND1588; GFX900-NEXT:    s_setpc_b64 s[30:31]1589;1590; GFX90A-LABEL: s_shuffle_v2i32_v2i32__0_2:1591; GFX90A:       ; %bb.0:1592; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1593; GFX90A-NEXT:    ;;#ASMSTART1594; GFX90A-NEXT:    ; def s[8:9]1595; GFX90A-NEXT:    ;;#ASMEND1596; GFX90A-NEXT:    ;;#ASMSTART1597; GFX90A-NEXT:    ; use s[8:9]1598; GFX90A-NEXT:    ;;#ASMEND1599; GFX90A-NEXT:    s_setpc_b64 s[30:31]1600;1601; GFX942-LABEL: s_shuffle_v2i32_v2i32__0_2:1602; GFX942:       ; %bb.0:1603; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1604; GFX942-NEXT:    ;;#ASMSTART1605; GFX942-NEXT:    ; def s[8:9]1606; GFX942-NEXT:    ;;#ASMEND1607; GFX942-NEXT:    s_nop 01608; GFX942-NEXT:    ;;#ASMSTART1609; GFX942-NEXT:    ; use s[8:9]1610; GFX942-NEXT:    ;;#ASMEND1611; GFX942-NEXT:    s_setpc_b64 s[30:31]1612  %vec0 = call <2 x i32> asm "; def $0", "=s"()1613  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <2 x i32> <i32 0, i32 2>1614  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)1615  ret void1616}1617 1618define void @s_shuffle_v2i32_v2i32__1_2() {1619; GFX900-LABEL: s_shuffle_v2i32_v2i32__1_2:1620; GFX900:       ; %bb.0:1621; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1622; GFX900-NEXT:    ;;#ASMSTART1623; GFX900-NEXT:    ; def s[4:5]1624; GFX900-NEXT:    ;;#ASMEND1625; GFX900-NEXT:    s_mov_b32 s8, s51626; GFX900-NEXT:    ;;#ASMSTART1627; GFX900-NEXT:    ; use s[8:9]1628; GFX900-NEXT:    ;;#ASMEND1629; GFX900-NEXT:    s_setpc_b64 s[30:31]1630;1631; GFX90A-LABEL: s_shuffle_v2i32_v2i32__1_2:1632; GFX90A:       ; %bb.0:1633; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1634; GFX90A-NEXT:    ;;#ASMSTART1635; GFX90A-NEXT:    ; def s[4:5]1636; GFX90A-NEXT:    ;;#ASMEND1637; GFX90A-NEXT:    s_mov_b32 s8, s51638; GFX90A-NEXT:    ;;#ASMSTART1639; GFX90A-NEXT:    ; use s[8:9]1640; GFX90A-NEXT:    ;;#ASMEND1641; GFX90A-NEXT:    s_setpc_b64 s[30:31]1642;1643; GFX942-LABEL: s_shuffle_v2i32_v2i32__1_2:1644; GFX942:       ; %bb.0:1645; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1646; GFX942-NEXT:    ;;#ASMSTART1647; GFX942-NEXT:    ; def s[0:1]1648; GFX942-NEXT:    ;;#ASMEND1649; GFX942-NEXT:    s_mov_b32 s8, s11650; GFX942-NEXT:    ;;#ASMSTART1651; GFX942-NEXT:    ; use s[8:9]1652; GFX942-NEXT:    ;;#ASMEND1653; GFX942-NEXT:    s_setpc_b64 s[30:31]1654  %vec0 = call <2 x i32> asm "; def $0", "=s"()1655  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <2 x i32> <i32 1, i32 2>1656  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)1657  ret void1658}1659 1660define void @s_shuffle_v2i32_v2i32__2_2() {1661; GFX9-LABEL: s_shuffle_v2i32_v2i32__2_2:1662; GFX9:       ; %bb.0:1663; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1664; GFX9-NEXT:    ;;#ASMSTART1665; GFX9-NEXT:    ; use s[8:9]1666; GFX9-NEXT:    ;;#ASMEND1667; GFX9-NEXT:    s_setpc_b64 s[30:31]1668  %vec0 = call <2 x i32> asm "; def $0", "=s"()1669  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> poison, <2 x i32> <i32 2, i32 2>1670  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)1671  ret void1672}1673 1674define void @s_shuffle_v2i32_v2i32__u_3() {1675; GFX900-LABEL: s_shuffle_v2i32_v2i32__u_3:1676; GFX900:       ; %bb.0:1677; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1678; GFX900-NEXT:    ;;#ASMSTART1679; GFX900-NEXT:    ; def s[8:9]1680; GFX900-NEXT:    ;;#ASMEND1681; GFX900-NEXT:    ;;#ASMSTART1682; GFX900-NEXT:    ; use s[8:9]1683; GFX900-NEXT:    ;;#ASMEND1684; GFX900-NEXT:    s_setpc_b64 s[30:31]1685;1686; GFX90A-LABEL: s_shuffle_v2i32_v2i32__u_3:1687; GFX90A:       ; %bb.0:1688; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1689; GFX90A-NEXT:    ;;#ASMSTART1690; GFX90A-NEXT:    ; def s[8:9]1691; GFX90A-NEXT:    ;;#ASMEND1692; GFX90A-NEXT:    ;;#ASMSTART1693; GFX90A-NEXT:    ; use s[8:9]1694; GFX90A-NEXT:    ;;#ASMEND1695; GFX90A-NEXT:    s_setpc_b64 s[30:31]1696;1697; GFX942-LABEL: s_shuffle_v2i32_v2i32__u_3:1698; GFX942:       ; %bb.0:1699; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1700; GFX942-NEXT:    ;;#ASMSTART1701; GFX942-NEXT:    ; def s[8:9]1702; GFX942-NEXT:    ;;#ASMEND1703; GFX942-NEXT:    s_nop 01704; GFX942-NEXT:    ;;#ASMSTART1705; GFX942-NEXT:    ; use s[8:9]1706; GFX942-NEXT:    ;;#ASMEND1707; GFX942-NEXT:    s_setpc_b64 s[30:31]1708  %vec0 = call <2 x i32> asm "; def $0", "=s"()1709  %vec1 = call <2 x i32> asm "; def $0", "=s"()1710  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <2 x i32> <i32 poison, i32 3>1711  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)1712  ret void1713}1714 1715define void @s_shuffle_v2i32_v2i32__0_3() {1716; GFX900-LABEL: s_shuffle_v2i32_v2i32__0_3:1717; GFX900:       ; %bb.0:1718; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1719; GFX900-NEXT:    ;;#ASMSTART1720; GFX900-NEXT:    ; def s[8:9]1721; GFX900-NEXT:    ;;#ASMEND1722; GFX900-NEXT:    ;;#ASMSTART1723; GFX900-NEXT:    ; def s[4:5]1724; GFX900-NEXT:    ;;#ASMEND1725; GFX900-NEXT:    s_mov_b32 s9, s51726; GFX900-NEXT:    ;;#ASMSTART1727; GFX900-NEXT:    ; use s[8:9]1728; GFX900-NEXT:    ;;#ASMEND1729; GFX900-NEXT:    s_setpc_b64 s[30:31]1730;1731; GFX90A-LABEL: s_shuffle_v2i32_v2i32__0_3:1732; GFX90A:       ; %bb.0:1733; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1734; GFX90A-NEXT:    ;;#ASMSTART1735; GFX90A-NEXT:    ; def s[8:9]1736; GFX90A-NEXT:    ;;#ASMEND1737; GFX90A-NEXT:    ;;#ASMSTART1738; GFX90A-NEXT:    ; def s[4:5]1739; GFX90A-NEXT:    ;;#ASMEND1740; GFX90A-NEXT:    s_mov_b32 s9, s51741; GFX90A-NEXT:    ;;#ASMSTART1742; GFX90A-NEXT:    ; use s[8:9]1743; GFX90A-NEXT:    ;;#ASMEND1744; GFX90A-NEXT:    s_setpc_b64 s[30:31]1745;1746; GFX942-LABEL: s_shuffle_v2i32_v2i32__0_3:1747; GFX942:       ; %bb.0:1748; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1749; GFX942-NEXT:    ;;#ASMSTART1750; GFX942-NEXT:    ; def s[8:9]1751; GFX942-NEXT:    ;;#ASMEND1752; GFX942-NEXT:    ;;#ASMSTART1753; GFX942-NEXT:    ; def s[0:1]1754; GFX942-NEXT:    ;;#ASMEND1755; GFX942-NEXT:    s_mov_b32 s9, s11756; GFX942-NEXT:    ;;#ASMSTART1757; GFX942-NEXT:    ; use s[8:9]1758; GFX942-NEXT:    ;;#ASMEND1759; GFX942-NEXT:    s_setpc_b64 s[30:31]1760  %vec0 = call <2 x i32> asm "; def $0", "=s"()1761  %vec1 = call <2 x i32> asm "; def $0", "=s"()1762  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <2 x i32> <i32 0, i32 3>1763  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)1764  ret void1765}1766 1767define void @s_shuffle_v2i32_v2i32__1_3() {1768; GFX900-LABEL: s_shuffle_v2i32_v2i32__1_3:1769; GFX900:       ; %bb.0:1770; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1771; GFX900-NEXT:    ;;#ASMSTART1772; GFX900-NEXT:    ; def s[8:9]1773; GFX900-NEXT:    ;;#ASMEND1774; GFX900-NEXT:    ;;#ASMSTART1775; GFX900-NEXT:    ; def s[4:5]1776; GFX900-NEXT:    ;;#ASMEND1777; GFX900-NEXT:    s_mov_b32 s8, s51778; GFX900-NEXT:    ;;#ASMSTART1779; GFX900-NEXT:    ; use s[8:9]1780; GFX900-NEXT:    ;;#ASMEND1781; GFX900-NEXT:    s_setpc_b64 s[30:31]1782;1783; GFX90A-LABEL: s_shuffle_v2i32_v2i32__1_3:1784; GFX90A:       ; %bb.0:1785; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1786; GFX90A-NEXT:    ;;#ASMSTART1787; GFX90A-NEXT:    ; def s[8:9]1788; GFX90A-NEXT:    ;;#ASMEND1789; GFX90A-NEXT:    ;;#ASMSTART1790; GFX90A-NEXT:    ; def s[4:5]1791; GFX90A-NEXT:    ;;#ASMEND1792; GFX90A-NEXT:    s_mov_b32 s8, s51793; GFX90A-NEXT:    ;;#ASMSTART1794; GFX90A-NEXT:    ; use s[8:9]1795; GFX90A-NEXT:    ;;#ASMEND1796; GFX90A-NEXT:    s_setpc_b64 s[30:31]1797;1798; GFX942-LABEL: s_shuffle_v2i32_v2i32__1_3:1799; GFX942:       ; %bb.0:1800; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1801; GFX942-NEXT:    ;;#ASMSTART1802; GFX942-NEXT:    ; def s[8:9]1803; GFX942-NEXT:    ;;#ASMEND1804; GFX942-NEXT:    ;;#ASMSTART1805; GFX942-NEXT:    ; def s[0:1]1806; GFX942-NEXT:    ;;#ASMEND1807; GFX942-NEXT:    s_mov_b32 s8, s11808; GFX942-NEXT:    ;;#ASMSTART1809; GFX942-NEXT:    ; use s[8:9]1810; GFX942-NEXT:    ;;#ASMEND1811; GFX942-NEXT:    s_setpc_b64 s[30:31]1812  %vec0 = call <2 x i32> asm "; def $0", "=s"()1813  %vec1 = call <2 x i32> asm "; def $0", "=s"()1814  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <2 x i32> <i32 1, i32 3>1815  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)1816  ret void1817}1818 1819define void @s_shuffle_v2i32_v2i32__2_3() {1820; GFX900-LABEL: s_shuffle_v2i32_v2i32__2_3:1821; GFX900:       ; %bb.0:1822; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1823; GFX900-NEXT:    ;;#ASMSTART1824; GFX900-NEXT:    ; def s[8:9]1825; GFX900-NEXT:    ;;#ASMEND1826; GFX900-NEXT:    ;;#ASMSTART1827; GFX900-NEXT:    ; use s[8:9]1828; GFX900-NEXT:    ;;#ASMEND1829; GFX900-NEXT:    s_setpc_b64 s[30:31]1830;1831; GFX90A-LABEL: s_shuffle_v2i32_v2i32__2_3:1832; GFX90A:       ; %bb.0:1833; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1834; GFX90A-NEXT:    ;;#ASMSTART1835; GFX90A-NEXT:    ; def s[8:9]1836; GFX90A-NEXT:    ;;#ASMEND1837; GFX90A-NEXT:    ;;#ASMSTART1838; GFX90A-NEXT:    ; use s[8:9]1839; GFX90A-NEXT:    ;;#ASMEND1840; GFX90A-NEXT:    s_setpc_b64 s[30:31]1841;1842; GFX942-LABEL: s_shuffle_v2i32_v2i32__2_3:1843; GFX942:       ; %bb.0:1844; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1845; GFX942-NEXT:    ;;#ASMSTART1846; GFX942-NEXT:    ; def s[8:9]1847; GFX942-NEXT:    ;;#ASMEND1848; GFX942-NEXT:    s_nop 01849; GFX942-NEXT:    ;;#ASMSTART1850; GFX942-NEXT:    ; use s[8:9]1851; GFX942-NEXT:    ;;#ASMEND1852; GFX942-NEXT:    s_setpc_b64 s[30:31]1853  %vec0 = call <2 x i32> asm "; def $0", "=s"()1854  %vec1 = call <2 x i32> asm "; def $0", "=s"()1855  %shuf = shufflevector <2 x i32> %vec0, <2 x i32> %vec1, <2 x i32> <i32 2, i32 3>1856  call void asm sideeffect "; use $0", "{s[8:9]}"(<2 x i32> %shuf)1857  ret void1858}1859;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:1860; GFX90APLUS: {{.*}}1861