brintos

brintos / llvm-project-archived public Read only

0
0
Text · 444.5 KiB · 8ab9f38 Raw
12268 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_v4p0_v3p0__u_u_u_u(ptr addrspace(1) inreg %ptr) {8; GFX9-LABEL: v_shuffle_v4p0_v3p0__u_u_u_u:9; GFX9:       ; %bb.0:10; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11; GFX9-NEXT:    s_setpc_b64 s[30:31]12  %vec0 = call <3 x ptr> asm "; def $0", "=v"()13  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> poison14  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 3215  ret void16}17 18define void @v_shuffle_v4p0_v3p0__0_u_u_u(ptr addrspace(1) inreg %ptr) {19; GFX900-LABEL: v_shuffle_v4p0_v3p0__0_u_u_u:20; GFX900:       ; %bb.0:21; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22; GFX900-NEXT:    v_mov_b32_e32 v6, 023; GFX900-NEXT:    ;;#ASMSTART24; GFX900-NEXT:    ; def v[0:5]25; GFX900-NEXT:    ;;#ASMEND26; GFX900-NEXT:    global_store_dwordx4 v6, v[4:7], s[16:17] offset:1627; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]28; GFX900-NEXT:    s_waitcnt vmcnt(0)29; GFX900-NEXT:    s_setpc_b64 s[30:31]30;31; GFX90A-LABEL: v_shuffle_v4p0_v3p0__0_u_u_u:32; GFX90A:       ; %bb.0:33; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)34; GFX90A-NEXT:    v_mov_b32_e32 v6, 035; GFX90A-NEXT:    ;;#ASMSTART36; GFX90A-NEXT:    ; def v[0:5]37; GFX90A-NEXT:    ;;#ASMEND38; GFX90A-NEXT:    global_store_dwordx4 v6, v[4:7], s[16:17] offset:1639; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]40; GFX90A-NEXT:    s_waitcnt vmcnt(0)41; GFX90A-NEXT:    s_setpc_b64 s[30:31]42;43; GFX942-LABEL: v_shuffle_v4p0_v3p0__0_u_u_u:44; GFX942:       ; %bb.0:45; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)46; GFX942-NEXT:    v_mov_b32_e32 v6, 047; GFX942-NEXT:    ;;#ASMSTART48; GFX942-NEXT:    ; def v[0:5]49; GFX942-NEXT:    ;;#ASMEND50; GFX942-NEXT:    global_store_dwordx4 v6, v[4:7], s[0:1] offset:1651; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]52; GFX942-NEXT:    s_waitcnt vmcnt(0)53; GFX942-NEXT:    s_setpc_b64 s[30:31]54  %vec0 = call <3 x ptr> asm "; def $0", "=v"()55  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>56  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 3257  ret void58}59 60define void @v_shuffle_v4p0_v3p0__1_u_u_u(ptr addrspace(1) inreg %ptr) {61; GFX900-LABEL: v_shuffle_v4p0_v3p0__1_u_u_u:62; GFX900:       ; %bb.0:63; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)64; GFX900-NEXT:    v_mov_b32_e32 v6, 065; GFX900-NEXT:    ;;#ASMSTART66; GFX900-NEXT:    ; def v[0:5]67; GFX900-NEXT:    ;;#ASMEND68; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]69; GFX900-NEXT:    s_waitcnt vmcnt(0)70; GFX900-NEXT:    s_setpc_b64 s[30:31]71;72; GFX90A-LABEL: v_shuffle_v4p0_v3p0__1_u_u_u:73; GFX90A:       ; %bb.0:74; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)75; GFX90A-NEXT:    v_mov_b32_e32 v6, 076; GFX90A-NEXT:    ;;#ASMSTART77; GFX90A-NEXT:    ; def v[0:5]78; GFX90A-NEXT:    ;;#ASMEND79; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]80; GFX90A-NEXT:    s_waitcnt vmcnt(0)81; GFX90A-NEXT:    s_setpc_b64 s[30:31]82;83; GFX942-LABEL: v_shuffle_v4p0_v3p0__1_u_u_u:84; GFX942:       ; %bb.0:85; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)86; GFX942-NEXT:    v_mov_b32_e32 v6, 087; GFX942-NEXT:    ;;#ASMSTART88; GFX942-NEXT:    ; def v[0:5]89; GFX942-NEXT:    ;;#ASMEND90; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]91; GFX942-NEXT:    s_waitcnt vmcnt(0)92; GFX942-NEXT:    s_setpc_b64 s[30:31]93  %vec0 = call <3 x ptr> asm "; def $0", "=v"()94  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>95  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 3296  ret void97}98 99define void @v_shuffle_v4p0_v3p0__2_u_u_u(ptr addrspace(1) inreg %ptr) {100; GFX900-LABEL: v_shuffle_v4p0_v3p0__2_u_u_u:101; GFX900:       ; %bb.0:102; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)103; GFX900-NEXT:    v_mov_b32_e32 v6, 0104; GFX900-NEXT:    ;;#ASMSTART105; GFX900-NEXT:    ; def v[0:5]106; GFX900-NEXT:    ;;#ASMEND107; GFX900-NEXT:    global_store_dwordx4 v6, v[4:7], s[16:17]108; GFX900-NEXT:    s_waitcnt vmcnt(0)109; GFX900-NEXT:    s_setpc_b64 s[30:31]110;111; GFX90A-LABEL: v_shuffle_v4p0_v3p0__2_u_u_u:112; GFX90A:       ; %bb.0:113; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)114; GFX90A-NEXT:    v_mov_b32_e32 v6, 0115; GFX90A-NEXT:    ;;#ASMSTART116; GFX90A-NEXT:    ; def v[0:5]117; GFX90A-NEXT:    ;;#ASMEND118; GFX90A-NEXT:    global_store_dwordx4 v6, v[4:7], s[16:17]119; GFX90A-NEXT:    s_waitcnt vmcnt(0)120; GFX90A-NEXT:    s_setpc_b64 s[30:31]121;122; GFX942-LABEL: v_shuffle_v4p0_v3p0__2_u_u_u:123; GFX942:       ; %bb.0:124; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)125; GFX942-NEXT:    v_mov_b32_e32 v6, 0126; GFX942-NEXT:    ;;#ASMSTART127; GFX942-NEXT:    ; def v[0:5]128; GFX942-NEXT:    ;;#ASMEND129; GFX942-NEXT:    global_store_dwordx4 v6, v[4:7], s[0:1]130; GFX942-NEXT:    s_waitcnt vmcnt(0)131; GFX942-NEXT:    s_setpc_b64 s[30:31]132  %vec0 = call <3 x ptr> asm "; def $0", "=v"()133  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison>134  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32135  ret void136}137 138define void @v_shuffle_v4p0_v3p0__3_u_u_u(ptr addrspace(1) inreg %ptr) {139; GFX9-LABEL: v_shuffle_v4p0_v3p0__3_u_u_u:140; GFX9:       ; %bb.0:141; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)142; GFX9-NEXT:    s_setpc_b64 s[30:31]143  %vec0 = call <3 x ptr> asm "; def $0", "=v"()144  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison>145  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32146  ret void147}148 149define void @v_shuffle_v4p0_v3p0__4_u_u_u(ptr addrspace(1) inreg %ptr) {150; GFX900-LABEL: v_shuffle_v4p0_v3p0__4_u_u_u:151; GFX900:       ; %bb.0:152; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)153; GFX900-NEXT:    v_mov_b32_e32 v6, 0154; GFX900-NEXT:    ;;#ASMSTART155; GFX900-NEXT:    ; def v[0:5]156; GFX900-NEXT:    ;;#ASMEND157; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]158; GFX900-NEXT:    s_waitcnt vmcnt(0)159; GFX900-NEXT:    s_setpc_b64 s[30:31]160;161; GFX90A-LABEL: v_shuffle_v4p0_v3p0__4_u_u_u:162; GFX90A:       ; %bb.0:163; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)164; GFX90A-NEXT:    v_mov_b32_e32 v6, 0165; GFX90A-NEXT:    ;;#ASMSTART166; GFX90A-NEXT:    ; def v[0:5]167; GFX90A-NEXT:    ;;#ASMEND168; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]169; GFX90A-NEXT:    s_waitcnt vmcnt(0)170; GFX90A-NEXT:    s_setpc_b64 s[30:31]171;172; GFX942-LABEL: v_shuffle_v4p0_v3p0__4_u_u_u:173; GFX942:       ; %bb.0:174; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)175; GFX942-NEXT:    v_mov_b32_e32 v6, 0176; GFX942-NEXT:    ;;#ASMSTART177; GFX942-NEXT:    ; def v[0:5]178; GFX942-NEXT:    ;;#ASMEND179; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]180; GFX942-NEXT:    s_waitcnt vmcnt(0)181; GFX942-NEXT:    s_setpc_b64 s[30:31]182  %vec0 = call <3 x ptr> asm "; def $0", "=v"()183  %vec1 = call <3 x ptr> asm "; def $0", "=v"()184  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 4, i32 poison, i32 poison, i32 poison>185  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32186  ret void187}188 189define void @v_shuffle_v4p0_v3p0__5_u_u_u(ptr addrspace(1) inreg %ptr) {190; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_u_u_u:191; GFX900:       ; %bb.0:192; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)193; GFX900-NEXT:    v_mov_b32_e32 v6, 0194; GFX900-NEXT:    ;;#ASMSTART195; GFX900-NEXT:    ; def v[0:5]196; GFX900-NEXT:    ;;#ASMEND197; GFX900-NEXT:    global_store_dwordx4 v6, v[4:7], s[16:17]198; GFX900-NEXT:    s_waitcnt vmcnt(0)199; GFX900-NEXT:    s_setpc_b64 s[30:31]200;201; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_u_u_u:202; GFX90A:       ; %bb.0:203; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)204; GFX90A-NEXT:    v_mov_b32_e32 v6, 0205; GFX90A-NEXT:    ;;#ASMSTART206; GFX90A-NEXT:    ; def v[0:5]207; GFX90A-NEXT:    ;;#ASMEND208; GFX90A-NEXT:    global_store_dwordx4 v6, v[4:7], s[16:17]209; GFX90A-NEXT:    s_waitcnt vmcnt(0)210; GFX90A-NEXT:    s_setpc_b64 s[30:31]211;212; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_u_u_u:213; GFX942:       ; %bb.0:214; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)215; GFX942-NEXT:    v_mov_b32_e32 v6, 0216; GFX942-NEXT:    ;;#ASMSTART217; GFX942-NEXT:    ; def v[0:5]218; GFX942-NEXT:    ;;#ASMEND219; GFX942-NEXT:    global_store_dwordx4 v6, v[4:7], s[0:1]220; GFX942-NEXT:    s_waitcnt vmcnt(0)221; GFX942-NEXT:    s_setpc_b64 s[30:31]222  %vec0 = call <3 x ptr> asm "; def $0", "=v"()223  %vec1 = call <3 x ptr> asm "; def $0", "=v"()224  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 poison, i32 poison, i32 poison>225  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32226  ret void227}228 229define void @v_shuffle_v4p0_v3p0__5_0_u_u(ptr addrspace(1) inreg %ptr) {230; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_0_u_u:231; GFX900:       ; %bb.0:232; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)233; GFX900-NEXT:    v_mov_b32_e32 v12, 0234; GFX900-NEXT:    ;;#ASMSTART235; GFX900-NEXT:    ; def v[6:11]236; GFX900-NEXT:    ;;#ASMEND237; GFX900-NEXT:    ;;#ASMSTART238; GFX900-NEXT:    ; def v[0:5]239; GFX900-NEXT:    ;;#ASMEND240; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]241; GFX900-NEXT:    s_waitcnt vmcnt(0)242; GFX900-NEXT:    s_setpc_b64 s[30:31]243;244; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_0_u_u:245; GFX90A:       ; %bb.0:246; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)247; GFX90A-NEXT:    v_mov_b32_e32 v12, 0248; GFX90A-NEXT:    ;;#ASMSTART249; GFX90A-NEXT:    ; def v[6:11]250; GFX90A-NEXT:    ;;#ASMEND251; GFX90A-NEXT:    ;;#ASMSTART252; GFX90A-NEXT:    ; def v[0:5]253; GFX90A-NEXT:    ;;#ASMEND254; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]255; GFX90A-NEXT:    s_waitcnt vmcnt(0)256; GFX90A-NEXT:    s_setpc_b64 s[30:31]257;258; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_0_u_u:259; GFX942:       ; %bb.0:260; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)261; GFX942-NEXT:    v_mov_b32_e32 v12, 0262; GFX942-NEXT:    ;;#ASMSTART263; GFX942-NEXT:    ; def v[6:11]264; GFX942-NEXT:    ;;#ASMEND265; GFX942-NEXT:    ;;#ASMSTART266; GFX942-NEXT:    ; def v[0:5]267; GFX942-NEXT:    ;;#ASMEND268; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1]269; GFX942-NEXT:    s_waitcnt vmcnt(0)270; GFX942-NEXT:    s_setpc_b64 s[30:31]271  %vec0 = call <3 x ptr> asm "; def $0", "=v"()272  %vec1 = call <3 x ptr> asm "; def $0", "=v"()273  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 0, i32 poison, i32 poison>274  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32275  ret void276}277 278define void @v_shuffle_v4p0_v3p0__5_1_u_u(ptr addrspace(1) inreg %ptr) {279; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_1_u_u:280; GFX900:       ; %bb.0:281; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)282; GFX900-NEXT:    v_mov_b32_e32 v10, 0283; GFX900-NEXT:    ;;#ASMSTART284; GFX900-NEXT:    ; def v[4:9]285; GFX900-NEXT:    ;;#ASMEND286; GFX900-NEXT:    ;;#ASMSTART287; GFX900-NEXT:    ; def v[0:5]288; GFX900-NEXT:    ;;#ASMEND289; GFX900-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]290; GFX900-NEXT:    s_waitcnt vmcnt(0)291; GFX900-NEXT:    s_setpc_b64 s[30:31]292;293; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_1_u_u:294; GFX90A:       ; %bb.0:295; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)296; GFX90A-NEXT:    v_mov_b32_e32 v10, 0297; GFX90A-NEXT:    ;;#ASMSTART298; GFX90A-NEXT:    ; def v[4:9]299; GFX90A-NEXT:    ;;#ASMEND300; GFX90A-NEXT:    ;;#ASMSTART301; GFX90A-NEXT:    ; def v[0:5]302; GFX90A-NEXT:    ;;#ASMEND303; GFX90A-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]304; GFX90A-NEXT:    s_waitcnt vmcnt(0)305; GFX90A-NEXT:    s_setpc_b64 s[30:31]306;307; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_1_u_u:308; GFX942:       ; %bb.0:309; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)310; GFX942-NEXT:    v_mov_b32_e32 v10, 0311; GFX942-NEXT:    ;;#ASMSTART312; GFX942-NEXT:    ; def v[4:9]313; GFX942-NEXT:    ;;#ASMEND314; GFX942-NEXT:    s_nop 0315; GFX942-NEXT:    ;;#ASMSTART316; GFX942-NEXT:    ; def v[0:5]317; GFX942-NEXT:    ;;#ASMEND318; GFX942-NEXT:    global_store_dwordx4 v10, v[4:7], s[0:1]319; GFX942-NEXT:    s_waitcnt vmcnt(0)320; GFX942-NEXT:    s_setpc_b64 s[30:31]321  %vec0 = call <3 x ptr> asm "; def $0", "=v"()322  %vec1 = call <3 x ptr> asm "; def $0", "=v"()323  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 1, i32 poison, i32 poison>324  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32325  ret void326}327 328define void @v_shuffle_v4p0_v3p0__5_2_u_u(ptr addrspace(1) inreg %ptr) {329; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_2_u_u:330; GFX900:       ; %bb.0:331; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)332; GFX900-NEXT:    v_mov_b32_e32 v8, 0333; GFX900-NEXT:    ;;#ASMSTART334; GFX900-NEXT:    ; def v[2:7]335; GFX900-NEXT:    ;;#ASMEND336; GFX900-NEXT:    ;;#ASMSTART337; GFX900-NEXT:    ; def v[0:5]338; GFX900-NEXT:    ;;#ASMEND339; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]340; GFX900-NEXT:    s_waitcnt vmcnt(0)341; GFX900-NEXT:    s_setpc_b64 s[30:31]342;343; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_2_u_u:344; GFX90A:       ; %bb.0:345; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)346; GFX90A-NEXT:    v_mov_b32_e32 v8, 0347; GFX90A-NEXT:    ;;#ASMSTART348; GFX90A-NEXT:    ; def v[2:7]349; GFX90A-NEXT:    ;;#ASMEND350; GFX90A-NEXT:    ;;#ASMSTART351; GFX90A-NEXT:    ; def v[0:5]352; GFX90A-NEXT:    ;;#ASMEND353; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]354; GFX90A-NEXT:    s_waitcnt vmcnt(0)355; GFX90A-NEXT:    s_setpc_b64 s[30:31]356;357; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_2_u_u:358; GFX942:       ; %bb.0:359; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)360; GFX942-NEXT:    v_mov_b32_e32 v8, 0361; GFX942-NEXT:    ;;#ASMSTART362; GFX942-NEXT:    ; def v[2:7]363; GFX942-NEXT:    ;;#ASMEND364; GFX942-NEXT:    s_nop 0365; GFX942-NEXT:    ;;#ASMSTART366; GFX942-NEXT:    ; def v[0:5]367; GFX942-NEXT:    ;;#ASMEND368; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]369; GFX942-NEXT:    s_waitcnt vmcnt(0)370; GFX942-NEXT:    s_setpc_b64 s[30:31]371  %vec0 = call <3 x ptr> asm "; def $0", "=v"()372  %vec1 = call <3 x ptr> asm "; def $0", "=v"()373  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 2, i32 poison, i32 poison>374  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32375  ret void376}377 378define void @v_shuffle_v4p0_v3p0__5_3_u_u(ptr addrspace(1) inreg %ptr) {379; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_3_u_u:380; GFX900:       ; %bb.0:381; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)382; GFX900-NEXT:    v_mov_b32_e32 v8, 0383; GFX900-NEXT:    ;;#ASMSTART384; GFX900-NEXT:    ; def v[0:5]385; GFX900-NEXT:    ;;#ASMEND386; GFX900-NEXT:    v_mov_b32_e32 v6, v0387; GFX900-NEXT:    v_mov_b32_e32 v7, v1388; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]389; GFX900-NEXT:    s_waitcnt vmcnt(0)390; GFX900-NEXT:    s_setpc_b64 s[30:31]391;392; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_3_u_u:393; GFX90A:       ; %bb.0:394; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)395; GFX90A-NEXT:    v_mov_b32_e32 v8, 0396; GFX90A-NEXT:    ;;#ASMSTART397; GFX90A-NEXT:    ; def v[0:5]398; GFX90A-NEXT:    ;;#ASMEND399; GFX90A-NEXT:    v_mov_b32_e32 v6, v0400; GFX90A-NEXT:    v_mov_b32_e32 v7, v1401; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]402; GFX90A-NEXT:    s_waitcnt vmcnt(0)403; GFX90A-NEXT:    s_setpc_b64 s[30:31]404;405; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_3_u_u:406; GFX942:       ; %bb.0:407; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)408; GFX942-NEXT:    v_mov_b32_e32 v8, 0409; GFX942-NEXT:    ;;#ASMSTART410; GFX942-NEXT:    ; def v[0:5]411; GFX942-NEXT:    ;;#ASMEND412; GFX942-NEXT:    s_nop 0413; GFX942-NEXT:    v_mov_b32_e32 v6, v0414; GFX942-NEXT:    v_mov_b32_e32 v7, v1415; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]416; GFX942-NEXT:    s_waitcnt vmcnt(0)417; GFX942-NEXT:    s_setpc_b64 s[30:31]418  %vec0 = call <3 x ptr> asm "; def $0", "=v"()419  %vec1 = call <3 x ptr> asm "; def $0", "=v"()420  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 3, i32 poison, i32 poison>421  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32422  ret void423}424 425define void @v_shuffle_v4p0_v3p0__5_4_u_u(ptr addrspace(1) inreg %ptr) {426; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_4_u_u:427; GFX900:       ; %bb.0:428; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)429; GFX900-NEXT:    v_mov_b32_e32 v8, 0430; GFX900-NEXT:    ;;#ASMSTART431; GFX900-NEXT:    ; def v[0:5]432; GFX900-NEXT:    ;;#ASMEND433; GFX900-NEXT:    v_mov_b32_e32 v6, v2434; GFX900-NEXT:    v_mov_b32_e32 v7, v3435; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]436; GFX900-NEXT:    s_waitcnt vmcnt(0)437; GFX900-NEXT:    s_setpc_b64 s[30:31]438;439; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_4_u_u:440; GFX90A:       ; %bb.0:441; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)442; GFX90A-NEXT:    v_mov_b32_e32 v8, 0443; GFX90A-NEXT:    ;;#ASMSTART444; GFX90A-NEXT:    ; def v[0:5]445; GFX90A-NEXT:    ;;#ASMEND446; GFX90A-NEXT:    v_mov_b32_e32 v6, v2447; GFX90A-NEXT:    v_mov_b32_e32 v7, v3448; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]449; GFX90A-NEXT:    s_waitcnt vmcnt(0)450; GFX90A-NEXT:    s_setpc_b64 s[30:31]451;452; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_4_u_u:453; GFX942:       ; %bb.0:454; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)455; GFX942-NEXT:    v_mov_b32_e32 v8, 0456; GFX942-NEXT:    ;;#ASMSTART457; GFX942-NEXT:    ; def v[0:5]458; GFX942-NEXT:    ;;#ASMEND459; GFX942-NEXT:    s_nop 0460; GFX942-NEXT:    v_mov_b32_e32 v6, v2461; GFX942-NEXT:    v_mov_b32_e32 v7, v3462; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]463; GFX942-NEXT:    s_waitcnt vmcnt(0)464; GFX942-NEXT:    s_setpc_b64 s[30:31]465  %vec0 = call <3 x ptr> asm "; def $0", "=v"()466  %vec1 = call <3 x ptr> asm "; def $0", "=v"()467  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 4, i32 poison, i32 poison>468  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32469  ret void470}471 472define void @v_shuffle_v4p0_v3p0__5_5_u_u(ptr addrspace(1) inreg %ptr) {473; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_u_u:474; GFX900:       ; %bb.0:475; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)476; GFX900-NEXT:    v_mov_b32_e32 v8, 0477; GFX900-NEXT:    ;;#ASMSTART478; GFX900-NEXT:    ; def v[0:5]479; GFX900-NEXT:    ;;#ASMEND480; GFX900-NEXT:    v_mov_b32_e32 v6, v4481; GFX900-NEXT:    v_mov_b32_e32 v7, v5482; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]483; GFX900-NEXT:    s_waitcnt vmcnt(0)484; GFX900-NEXT:    s_setpc_b64 s[30:31]485;486; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_u_u:487; GFX90A:       ; %bb.0:488; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)489; GFX90A-NEXT:    v_mov_b32_e32 v8, 0490; GFX90A-NEXT:    ;;#ASMSTART491; GFX90A-NEXT:    ; def v[0:5]492; GFX90A-NEXT:    ;;#ASMEND493; GFX90A-NEXT:    v_mov_b32_e32 v6, v4494; GFX90A-NEXT:    v_mov_b32_e32 v7, v5495; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]496; GFX90A-NEXT:    s_waitcnt vmcnt(0)497; GFX90A-NEXT:    s_setpc_b64 s[30:31]498;499; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_u_u:500; GFX942:       ; %bb.0:501; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)502; GFX942-NEXT:    v_mov_b32_e32 v8, 0503; GFX942-NEXT:    ;;#ASMSTART504; GFX942-NEXT:    ; def v[0:5]505; GFX942-NEXT:    ;;#ASMEND506; GFX942-NEXT:    s_nop 0507; GFX942-NEXT:    v_mov_b32_e32 v6, v4508; GFX942-NEXT:    v_mov_b32_e32 v7, v5509; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]510; GFX942-NEXT:    s_waitcnt vmcnt(0)511; GFX942-NEXT:    s_setpc_b64 s[30:31]512  %vec0 = call <3 x ptr> asm "; def $0", "=v"()513  %vec1 = call <3 x ptr> asm "; def $0", "=v"()514  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 poison>515  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32516  ret void517}518 519define void @v_shuffle_v4p0_v3p0__5_5_0_u(ptr addrspace(1) inreg %ptr) {520; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_0_u:521; GFX900:       ; %bb.0:522; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)523; GFX900-NEXT:    v_mov_b32_e32 v12, 0524; GFX900-NEXT:    ;;#ASMSTART525; GFX900-NEXT:    ; def v[6:11]526; GFX900-NEXT:    ;;#ASMEND527; GFX900-NEXT:    ;;#ASMSTART528; GFX900-NEXT:    ; def v[0:5]529; GFX900-NEXT:    ;;#ASMEND530; GFX900-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17] offset:16531; GFX900-NEXT:    s_nop 0532; GFX900-NEXT:    v_mov_b32_e32 v6, v4533; GFX900-NEXT:    v_mov_b32_e32 v7, v5534; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]535; GFX900-NEXT:    s_waitcnt vmcnt(0)536; GFX900-NEXT:    s_setpc_b64 s[30:31]537;538; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_0_u:539; GFX90A:       ; %bb.0:540; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)541; GFX90A-NEXT:    v_mov_b32_e32 v12, 0542; GFX90A-NEXT:    ;;#ASMSTART543; GFX90A-NEXT:    ; def v[6:11]544; GFX90A-NEXT:    ;;#ASMEND545; GFX90A-NEXT:    ;;#ASMSTART546; GFX90A-NEXT:    ; def v[0:5]547; GFX90A-NEXT:    ;;#ASMEND548; GFX90A-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17] offset:16549; GFX90A-NEXT:    s_nop 0550; GFX90A-NEXT:    v_mov_b32_e32 v6, v4551; GFX90A-NEXT:    v_mov_b32_e32 v7, v5552; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]553; GFX90A-NEXT:    s_waitcnt vmcnt(0)554; GFX90A-NEXT:    s_setpc_b64 s[30:31]555;556; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_0_u:557; GFX942:       ; %bb.0:558; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)559; GFX942-NEXT:    v_mov_b32_e32 v12, 0560; GFX942-NEXT:    ;;#ASMSTART561; GFX942-NEXT:    ; def v[6:11]562; GFX942-NEXT:    ;;#ASMEND563; GFX942-NEXT:    ;;#ASMSTART564; GFX942-NEXT:    ; def v[0:5]565; GFX942-NEXT:    ;;#ASMEND566; GFX942-NEXT:    global_store_dwordx4 v12, v[6:9], s[0:1] offset:16567; GFX942-NEXT:    s_nop 1568; GFX942-NEXT:    v_mov_b32_e32 v6, v4569; GFX942-NEXT:    v_mov_b32_e32 v7, v5570; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1]571; GFX942-NEXT:    s_waitcnt vmcnt(0)572; GFX942-NEXT:    s_setpc_b64 s[30:31]573  %vec0 = call <3 x ptr> asm "; def $0", "=v"()574  %vec1 = call <3 x ptr> asm "; def $0", "=v"()575  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 poison>576  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32577  ret void578}579 580define void @v_shuffle_v4p0_v3p0__5_5_1_u(ptr addrspace(1) inreg %ptr) {581; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_1_u:582; GFX900:       ; %bb.0:583; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)584; GFX900-NEXT:    v_mov_b32_e32 v10, 0585; GFX900-NEXT:    ;;#ASMSTART586; GFX900-NEXT:    ; def v[4:9]587; GFX900-NEXT:    ;;#ASMEND588; GFX900-NEXT:    ;;#ASMSTART589; GFX900-NEXT:    ; def v[0:5]590; GFX900-NEXT:    ;;#ASMEND591; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:16592; GFX900-NEXT:    s_nop 0593; GFX900-NEXT:    v_mov_b32_e32 v6, v4594; GFX900-NEXT:    v_mov_b32_e32 v7, v5595; GFX900-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]596; GFX900-NEXT:    s_waitcnt vmcnt(0)597; GFX900-NEXT:    s_setpc_b64 s[30:31]598;599; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_1_u:600; GFX90A:       ; %bb.0:601; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)602; GFX90A-NEXT:    v_mov_b32_e32 v10, 0603; GFX90A-NEXT:    ;;#ASMSTART604; GFX90A-NEXT:    ; def v[4:9]605; GFX90A-NEXT:    ;;#ASMEND606; GFX90A-NEXT:    ;;#ASMSTART607; GFX90A-NEXT:    ; def v[0:5]608; GFX90A-NEXT:    ;;#ASMEND609; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:16610; GFX90A-NEXT:    s_nop 0611; GFX90A-NEXT:    v_mov_b32_e32 v6, v4612; GFX90A-NEXT:    v_mov_b32_e32 v7, v5613; GFX90A-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]614; GFX90A-NEXT:    s_waitcnt vmcnt(0)615; GFX90A-NEXT:    s_setpc_b64 s[30:31]616;617; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_1_u:618; GFX942:       ; %bb.0:619; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)620; GFX942-NEXT:    v_mov_b32_e32 v10, 0621; GFX942-NEXT:    ;;#ASMSTART622; GFX942-NEXT:    ; def v[4:9]623; GFX942-NEXT:    ;;#ASMEND624; GFX942-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1] offset:16625; GFX942-NEXT:    ;;#ASMSTART626; GFX942-NEXT:    ; def v[0:5]627; GFX942-NEXT:    ;;#ASMEND628; GFX942-NEXT:    s_nop 1629; GFX942-NEXT:    v_mov_b32_e32 v6, v4630; GFX942-NEXT:    v_mov_b32_e32 v7, v5631; GFX942-NEXT:    global_store_dwordx4 v10, v[4:7], s[0:1]632; GFX942-NEXT:    s_waitcnt vmcnt(0)633; GFX942-NEXT:    s_setpc_b64 s[30:31]634  %vec0 = call <3 x ptr> asm "; def $0", "=v"()635  %vec1 = call <3 x ptr> asm "; def $0", "=v"()636  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 poison>637  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32638  ret void639}640 641define void @v_shuffle_v4p0_v3p0__5_5_2_u(ptr addrspace(1) inreg %ptr) {642; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_2_u:643; GFX900:       ; %bb.0:644; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)645; GFX900-NEXT:    v_mov_b32_e32 v14, 0646; GFX900-NEXT:    ;;#ASMSTART647; GFX900-NEXT:    ; def v[6:11]648; GFX900-NEXT:    ;;#ASMEND649; GFX900-NEXT:    v_mov_b32_e32 v12, v10650; GFX900-NEXT:    v_mov_b32_e32 v13, v11651; GFX900-NEXT:    ;;#ASMSTART652; GFX900-NEXT:    ; def v[0:5]653; GFX900-NEXT:    ;;#ASMEND654; GFX900-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17] offset:16655; GFX900-NEXT:    global_store_dwordx4 v14, v[10:13], s[16:17]656; GFX900-NEXT:    s_waitcnt vmcnt(0)657; GFX900-NEXT:    s_setpc_b64 s[30:31]658;659; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_2_u:660; GFX90A:       ; %bb.0:661; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)662; GFX90A-NEXT:    v_mov_b32_e32 v14, 0663; GFX90A-NEXT:    ;;#ASMSTART664; GFX90A-NEXT:    ; def v[6:11]665; GFX90A-NEXT:    ;;#ASMEND666; GFX90A-NEXT:    v_mov_b32_e32 v12, v10667; GFX90A-NEXT:    v_mov_b32_e32 v13, v11668; GFX90A-NEXT:    ;;#ASMSTART669; GFX90A-NEXT:    ; def v[0:5]670; GFX90A-NEXT:    ;;#ASMEND671; GFX90A-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17] offset:16672; GFX90A-NEXT:    global_store_dwordx4 v14, v[10:13], s[16:17]673; GFX90A-NEXT:    s_waitcnt vmcnt(0)674; GFX90A-NEXT:    s_setpc_b64 s[30:31]675;676; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_2_u:677; GFX942:       ; %bb.0:678; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)679; GFX942-NEXT:    v_mov_b32_e32 v14, 0680; GFX942-NEXT:    ;;#ASMSTART681; GFX942-NEXT:    ; def v[6:11]682; GFX942-NEXT:    ;;#ASMEND683; GFX942-NEXT:    ;;#ASMSTART684; GFX942-NEXT:    ; def v[0:5]685; GFX942-NEXT:    ;;#ASMEND686; GFX942-NEXT:    global_store_dwordx4 v14, v[4:7], s[0:1] offset:16687; GFX942-NEXT:    v_mov_b32_e32 v12, v10688; GFX942-NEXT:    v_mov_b32_e32 v13, v11689; GFX942-NEXT:    global_store_dwordx4 v14, v[10:13], s[0:1]690; GFX942-NEXT:    s_waitcnt vmcnt(0)691; GFX942-NEXT:    s_setpc_b64 s[30:31]692  %vec0 = call <3 x ptr> asm "; def $0", "=v"()693  %vec1 = call <3 x ptr> asm "; def $0", "=v"()694  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 poison>695  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32696  ret void697}698 699define void @v_shuffle_v4p0_v3p0__5_5_3_u(ptr addrspace(1) inreg %ptr) {700; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_3_u:701; GFX900:       ; %bb.0:702; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)703; GFX900-NEXT:    v_mov_b32_e32 v8, 0704; GFX900-NEXT:    ;;#ASMSTART705; GFX900-NEXT:    ; def v[0:5]706; GFX900-NEXT:    ;;#ASMEND707; GFX900-NEXT:    v_mov_b32_e32 v6, v4708; GFX900-NEXT:    v_mov_b32_e32 v7, v5709; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:16710; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]711; GFX900-NEXT:    s_waitcnt vmcnt(0)712; GFX900-NEXT:    s_setpc_b64 s[30:31]713;714; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_3_u:715; GFX90A:       ; %bb.0:716; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)717; GFX90A-NEXT:    v_mov_b32_e32 v8, 0718; GFX90A-NEXT:    ;;#ASMSTART719; GFX90A-NEXT:    ; def v[0:5]720; GFX90A-NEXT:    ;;#ASMEND721; GFX90A-NEXT:    v_mov_b32_e32 v6, v4722; GFX90A-NEXT:    v_mov_b32_e32 v7, v5723; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:16724; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]725; GFX90A-NEXT:    s_waitcnt vmcnt(0)726; GFX90A-NEXT:    s_setpc_b64 s[30:31]727;728; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_3_u:729; GFX942:       ; %bb.0:730; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)731; GFX942-NEXT:    v_mov_b32_e32 v8, 0732; GFX942-NEXT:    ;;#ASMSTART733; GFX942-NEXT:    ; def v[0:5]734; GFX942-NEXT:    ;;#ASMEND735; GFX942-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:16736; GFX942-NEXT:    v_mov_b32_e32 v6, v4737; GFX942-NEXT:    v_mov_b32_e32 v7, v5738; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]739; GFX942-NEXT:    s_waitcnt vmcnt(0)740; GFX942-NEXT:    s_setpc_b64 s[30:31]741  %vec0 = call <3 x ptr> asm "; def $0", "=v"()742  %vec1 = call <3 x ptr> asm "; def $0", "=v"()743  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 poison>744  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32745  ret void746}747 748define void @v_shuffle_v4p0_v3p0__5_5_4_u(ptr addrspace(1) inreg %ptr) {749; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_4_u:750; GFX900:       ; %bb.0:751; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)752; GFX900-NEXT:    v_mov_b32_e32 v8, 0753; GFX900-NEXT:    ;;#ASMSTART754; GFX900-NEXT:    ; def v[0:5]755; GFX900-NEXT:    ;;#ASMEND756; GFX900-NEXT:    v_mov_b32_e32 v6, v4757; GFX900-NEXT:    v_mov_b32_e32 v7, v5758; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17] offset:16759; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]760; GFX900-NEXT:    s_waitcnt vmcnt(0)761; GFX900-NEXT:    s_setpc_b64 s[30:31]762;763; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_4_u:764; GFX90A:       ; %bb.0:765; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)766; GFX90A-NEXT:    v_mov_b32_e32 v8, 0767; GFX90A-NEXT:    ;;#ASMSTART768; GFX90A-NEXT:    ; def v[0:5]769; GFX90A-NEXT:    ;;#ASMEND770; GFX90A-NEXT:    v_mov_b32_e32 v6, v4771; GFX90A-NEXT:    v_mov_b32_e32 v7, v5772; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17] offset:16773; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]774; GFX90A-NEXT:    s_waitcnt vmcnt(0)775; GFX90A-NEXT:    s_setpc_b64 s[30:31]776;777; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_4_u:778; GFX942:       ; %bb.0:779; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)780; GFX942-NEXT:    v_mov_b32_e32 v8, 0781; GFX942-NEXT:    ;;#ASMSTART782; GFX942-NEXT:    ; def v[0:5]783; GFX942-NEXT:    ;;#ASMEND784; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] offset:16785; GFX942-NEXT:    v_mov_b32_e32 v6, v4786; GFX942-NEXT:    v_mov_b32_e32 v7, v5787; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]788; GFX942-NEXT:    s_waitcnt vmcnt(0)789; GFX942-NEXT:    s_setpc_b64 s[30:31]790  %vec0 = call <3 x ptr> asm "; def $0", "=v"()791  %vec1 = call <3 x ptr> asm "; def $0", "=v"()792  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 poison>793  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32794  ret void795}796 797define void @v_shuffle_v4p0_v3p0__5_5_5_u(ptr addrspace(1) inreg %ptr) {798; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_5_u:799; GFX900:       ; %bb.0:800; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)801; GFX900-NEXT:    v_mov_b32_e32 v8, 0802; GFX900-NEXT:    ;;#ASMSTART803; GFX900-NEXT:    ; def v[0:5]804; GFX900-NEXT:    ;;#ASMEND805; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:16806; GFX900-NEXT:    s_nop 0807; GFX900-NEXT:    v_mov_b32_e32 v6, v4808; GFX900-NEXT:    v_mov_b32_e32 v7, v5809; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]810; GFX900-NEXT:    s_waitcnt vmcnt(0)811; GFX900-NEXT:    s_setpc_b64 s[30:31]812;813; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_5_u:814; GFX90A:       ; %bb.0:815; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)816; GFX90A-NEXT:    v_mov_b32_e32 v8, 0817; GFX90A-NEXT:    ;;#ASMSTART818; GFX90A-NEXT:    ; def v[0:5]819; GFX90A-NEXT:    ;;#ASMEND820; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:16821; GFX90A-NEXT:    s_nop 0822; GFX90A-NEXT:    v_mov_b32_e32 v6, v4823; GFX90A-NEXT:    v_mov_b32_e32 v7, v5824; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]825; GFX90A-NEXT:    s_waitcnt vmcnt(0)826; GFX90A-NEXT:    s_setpc_b64 s[30:31]827;828; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_5_u:829; GFX942:       ; %bb.0:830; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)831; GFX942-NEXT:    v_mov_b32_e32 v8, 0832; GFX942-NEXT:    ;;#ASMSTART833; GFX942-NEXT:    ; def v[0:5]834; GFX942-NEXT:    ;;#ASMEND835; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:16836; GFX942-NEXT:    s_nop 1837; GFX942-NEXT:    v_mov_b32_e32 v6, v4838; GFX942-NEXT:    v_mov_b32_e32 v7, v5839; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]840; GFX942-NEXT:    s_waitcnt vmcnt(0)841; GFX942-NEXT:    s_setpc_b64 s[30:31]842  %vec0 = call <3 x ptr> asm "; def $0", "=v"()843  %vec1 = call <3 x ptr> asm "; def $0", "=v"()844  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 poison>845  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32846  ret void847}848 849define void @v_shuffle_v4p0_v3p0__5_5_5_0(ptr addrspace(1) inreg %ptr) {850; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_5_0:851; GFX900:       ; %bb.0:852; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)853; GFX900-NEXT:    v_mov_b32_e32 v12, 0854; GFX900-NEXT:    ;;#ASMSTART855; GFX900-NEXT:    ; def v[6:11]856; GFX900-NEXT:    ;;#ASMEND857; GFX900-NEXT:    ;;#ASMSTART858; GFX900-NEXT:    ; def v[0:5]859; GFX900-NEXT:    ;;#ASMEND860; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17] offset:16861; GFX900-NEXT:    s_nop 0862; GFX900-NEXT:    v_mov_b32_e32 v6, v4863; GFX900-NEXT:    v_mov_b32_e32 v7, v5864; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]865; GFX900-NEXT:    s_waitcnt vmcnt(0)866; GFX900-NEXT:    s_setpc_b64 s[30:31]867;868; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_5_0:869; GFX90A:       ; %bb.0:870; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)871; GFX90A-NEXT:    v_mov_b32_e32 v12, 0872; GFX90A-NEXT:    ;;#ASMSTART873; GFX90A-NEXT:    ; def v[6:11]874; GFX90A-NEXT:    ;;#ASMEND875; GFX90A-NEXT:    ;;#ASMSTART876; GFX90A-NEXT:    ; def v[0:5]877; GFX90A-NEXT:    ;;#ASMEND878; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17] offset:16879; GFX90A-NEXT:    s_nop 0880; GFX90A-NEXT:    v_mov_b32_e32 v6, v4881; GFX90A-NEXT:    v_mov_b32_e32 v7, v5882; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]883; GFX90A-NEXT:    s_waitcnt vmcnt(0)884; GFX90A-NEXT:    s_setpc_b64 s[30:31]885;886; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_5_0:887; GFX942:       ; %bb.0:888; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)889; GFX942-NEXT:    v_mov_b32_e32 v12, 0890; GFX942-NEXT:    ;;#ASMSTART891; GFX942-NEXT:    ; def v[6:11]892; GFX942-NEXT:    ;;#ASMEND893; GFX942-NEXT:    ;;#ASMSTART894; GFX942-NEXT:    ; def v[0:5]895; GFX942-NEXT:    ;;#ASMEND896; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1] offset:16897; GFX942-NEXT:    s_nop 1898; GFX942-NEXT:    v_mov_b32_e32 v6, v4899; GFX942-NEXT:    v_mov_b32_e32 v7, v5900; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1]901; GFX942-NEXT:    s_waitcnt vmcnt(0)902; GFX942-NEXT:    s_setpc_b64 s[30:31]903  %vec0 = call <3 x ptr> asm "; def $0", "=v"()904  %vec1 = call <3 x ptr> asm "; def $0", "=v"()905  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 0>906  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32907  ret void908}909 910define void @v_shuffle_v4p0_v3p0__5_5_5_1(ptr addrspace(1) inreg %ptr) {911; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_5_1:912; GFX900:       ; %bb.0:913; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)914; GFX900-NEXT:    v_mov_b32_e32 v10, 0915; GFX900-NEXT:    ;;#ASMSTART916; GFX900-NEXT:    ; def v[4:9]917; GFX900-NEXT:    ;;#ASMEND918; GFX900-NEXT:    ;;#ASMSTART919; GFX900-NEXT:    ; def v[0:5]920; GFX900-NEXT:    ;;#ASMEND921; GFX900-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17] offset:16922; GFX900-NEXT:    s_nop 0923; GFX900-NEXT:    v_mov_b32_e32 v6, v4924; GFX900-NEXT:    v_mov_b32_e32 v7, v5925; GFX900-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]926; GFX900-NEXT:    s_waitcnt vmcnt(0)927; GFX900-NEXT:    s_setpc_b64 s[30:31]928;929; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_5_1:930; GFX90A:       ; %bb.0:931; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)932; GFX90A-NEXT:    v_mov_b32_e32 v10, 0933; GFX90A-NEXT:    ;;#ASMSTART934; GFX90A-NEXT:    ; def v[4:9]935; GFX90A-NEXT:    ;;#ASMEND936; GFX90A-NEXT:    ;;#ASMSTART937; GFX90A-NEXT:    ; def v[0:5]938; GFX90A-NEXT:    ;;#ASMEND939; GFX90A-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17] offset:16940; GFX90A-NEXT:    s_nop 0941; GFX90A-NEXT:    v_mov_b32_e32 v6, v4942; GFX90A-NEXT:    v_mov_b32_e32 v7, v5943; GFX90A-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]944; GFX90A-NEXT:    s_waitcnt vmcnt(0)945; GFX90A-NEXT:    s_setpc_b64 s[30:31]946;947; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_5_1:948; GFX942:       ; %bb.0:949; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)950; GFX942-NEXT:    v_mov_b32_e32 v10, 0951; GFX942-NEXT:    ;;#ASMSTART952; GFX942-NEXT:    ; def v[4:9]953; GFX942-NEXT:    ;;#ASMEND954; GFX942-NEXT:    s_nop 0955; GFX942-NEXT:    ;;#ASMSTART956; GFX942-NEXT:    ; def v[0:5]957; GFX942-NEXT:    ;;#ASMEND958; GFX942-NEXT:    global_store_dwordx4 v10, v[4:7], s[0:1] offset:16959; GFX942-NEXT:    s_nop 1960; GFX942-NEXT:    v_mov_b32_e32 v6, v4961; GFX942-NEXT:    v_mov_b32_e32 v7, v5962; GFX942-NEXT:    global_store_dwordx4 v10, v[4:7], s[0:1]963; GFX942-NEXT:    s_waitcnt vmcnt(0)964; GFX942-NEXT:    s_setpc_b64 s[30:31]965  %vec0 = call <3 x ptr> asm "; def $0", "=v"()966  %vec1 = call <3 x ptr> asm "; def $0", "=v"()967  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 1>968  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32969  ret void970}971 972define void @v_shuffle_v4p0_v3p0__5_5_5_2(ptr addrspace(1) inreg %ptr) {973; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_5_2:974; GFX900:       ; %bb.0:975; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)976; GFX900-NEXT:    v_mov_b32_e32 v8, 0977; GFX900-NEXT:    ;;#ASMSTART978; GFX900-NEXT:    ; def v[2:7]979; GFX900-NEXT:    ;;#ASMEND980; GFX900-NEXT:    ;;#ASMSTART981; GFX900-NEXT:    ; def v[0:5]982; GFX900-NEXT:    ;;#ASMEND983; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:16984; GFX900-NEXT:    s_nop 0985; GFX900-NEXT:    v_mov_b32_e32 v6, v4986; GFX900-NEXT:    v_mov_b32_e32 v7, v5987; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], 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_v4p0_v3p0__5_5_5_2:992; GFX90A:       ; %bb.0:993; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)994; GFX90A-NEXT:    v_mov_b32_e32 v8, 0995; GFX90A-NEXT:    ;;#ASMSTART996; GFX90A-NEXT:    ; def v[2:7]997; GFX90A-NEXT:    ;;#ASMEND998; GFX90A-NEXT:    ;;#ASMSTART999; GFX90A-NEXT:    ; def v[0:5]1000; GFX90A-NEXT:    ;;#ASMEND1001; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:161002; GFX90A-NEXT:    s_nop 01003; GFX90A-NEXT:    v_mov_b32_e32 v6, v41004; GFX90A-NEXT:    v_mov_b32_e32 v7, v51005; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]1006; GFX90A-NEXT:    s_waitcnt vmcnt(0)1007; GFX90A-NEXT:    s_setpc_b64 s[30:31]1008;1009; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_5_2:1010; GFX942:       ; %bb.0:1011; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1012; GFX942-NEXT:    v_mov_b32_e32 v8, 01013; GFX942-NEXT:    ;;#ASMSTART1014; GFX942-NEXT:    ; def v[2:7]1015; GFX942-NEXT:    ;;#ASMEND1016; GFX942-NEXT:    s_nop 01017; GFX942-NEXT:    ;;#ASMSTART1018; GFX942-NEXT:    ; def v[0:5]1019; GFX942-NEXT:    ;;#ASMEND1020; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:161021; GFX942-NEXT:    s_nop 11022; GFX942-NEXT:    v_mov_b32_e32 v6, v41023; GFX942-NEXT:    v_mov_b32_e32 v7, v51024; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]1025; GFX942-NEXT:    s_waitcnt vmcnt(0)1026; GFX942-NEXT:    s_setpc_b64 s[30:31]1027  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1028  %vec1 = call <3 x ptr> asm "; def $0", "=v"()1029  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 2>1030  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321031  ret void1032}1033 1034define void @v_shuffle_v4p0_v3p0__5_5_5_3(ptr addrspace(1) inreg %ptr) {1035; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_5_3:1036; GFX900:       ; %bb.0:1037; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1038; GFX900-NEXT:    v_mov_b32_e32 v8, 01039; GFX900-NEXT:    ;;#ASMSTART1040; GFX900-NEXT:    ; def v[0:5]1041; GFX900-NEXT:    ;;#ASMEND1042; GFX900-NEXT:    v_mov_b32_e32 v6, v01043; GFX900-NEXT:    v_mov_b32_e32 v7, v11044; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:161045; GFX900-NEXT:    s_nop 01046; GFX900-NEXT:    v_mov_b32_e32 v6, v41047; GFX900-NEXT:    v_mov_b32_e32 v7, v51048; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]1049; GFX900-NEXT:    s_waitcnt vmcnt(0)1050; GFX900-NEXT:    s_setpc_b64 s[30:31]1051;1052; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_5_3:1053; GFX90A:       ; %bb.0:1054; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1055; GFX90A-NEXT:    v_mov_b32_e32 v8, 01056; GFX90A-NEXT:    ;;#ASMSTART1057; GFX90A-NEXT:    ; def v[0:5]1058; GFX90A-NEXT:    ;;#ASMEND1059; GFX90A-NEXT:    v_mov_b32_e32 v6, v01060; GFX90A-NEXT:    v_mov_b32_e32 v7, v11061; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:161062; GFX90A-NEXT:    s_nop 01063; GFX90A-NEXT:    v_mov_b32_e32 v6, v41064; GFX90A-NEXT:    v_mov_b32_e32 v7, v51065; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]1066; GFX90A-NEXT:    s_waitcnt vmcnt(0)1067; GFX90A-NEXT:    s_setpc_b64 s[30:31]1068;1069; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_5_3:1070; GFX942:       ; %bb.0:1071; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1072; GFX942-NEXT:    v_mov_b32_e32 v8, 01073; GFX942-NEXT:    ;;#ASMSTART1074; GFX942-NEXT:    ; def v[0:5]1075; GFX942-NEXT:    ;;#ASMEND1076; GFX942-NEXT:    s_nop 01077; GFX942-NEXT:    v_mov_b32_e32 v6, v01078; GFX942-NEXT:    v_mov_b32_e32 v7, v11079; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:161080; GFX942-NEXT:    s_nop 11081; GFX942-NEXT:    v_mov_b32_e32 v6, v41082; GFX942-NEXT:    v_mov_b32_e32 v7, v51083; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]1084; GFX942-NEXT:    s_waitcnt vmcnt(0)1085; GFX942-NEXT:    s_setpc_b64 s[30:31]1086  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1087  %vec1 = call <3 x ptr> asm "; def $0", "=v"()1088  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 3>1089  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321090  ret void1091}1092 1093define void @v_shuffle_v4p0_v3p0__5_5_5_4(ptr addrspace(1) inreg %ptr) {1094; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_5_4:1095; GFX900:       ; %bb.0:1096; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1097; GFX900-NEXT:    v_mov_b32_e32 v8, 01098; GFX900-NEXT:    ;;#ASMSTART1099; GFX900-NEXT:    ; def v[0:5]1100; GFX900-NEXT:    ;;#ASMEND1101; GFX900-NEXT:    v_mov_b32_e32 v6, v21102; GFX900-NEXT:    v_mov_b32_e32 v7, v31103; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:161104; GFX900-NEXT:    s_nop 01105; GFX900-NEXT:    v_mov_b32_e32 v6, v41106; GFX900-NEXT:    v_mov_b32_e32 v7, v51107; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]1108; GFX900-NEXT:    s_waitcnt vmcnt(0)1109; GFX900-NEXT:    s_setpc_b64 s[30:31]1110;1111; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_5_4:1112; GFX90A:       ; %bb.0:1113; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1114; GFX90A-NEXT:    v_mov_b32_e32 v8, 01115; GFX90A-NEXT:    ;;#ASMSTART1116; GFX90A-NEXT:    ; def v[0:5]1117; GFX90A-NEXT:    ;;#ASMEND1118; GFX90A-NEXT:    v_mov_b32_e32 v6, v21119; GFX90A-NEXT:    v_mov_b32_e32 v7, v31120; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:161121; GFX90A-NEXT:    s_nop 01122; GFX90A-NEXT:    v_mov_b32_e32 v6, v41123; GFX90A-NEXT:    v_mov_b32_e32 v7, v51124; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]1125; GFX90A-NEXT:    s_waitcnt vmcnt(0)1126; GFX90A-NEXT:    s_setpc_b64 s[30:31]1127;1128; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_5_4:1129; GFX942:       ; %bb.0:1130; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1131; GFX942-NEXT:    v_mov_b32_e32 v8, 01132; GFX942-NEXT:    ;;#ASMSTART1133; GFX942-NEXT:    ; def v[0:5]1134; GFX942-NEXT:    ;;#ASMEND1135; GFX942-NEXT:    s_nop 01136; GFX942-NEXT:    v_mov_b32_e32 v6, v21137; GFX942-NEXT:    v_mov_b32_e32 v7, v31138; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:161139; GFX942-NEXT:    s_nop 11140; GFX942-NEXT:    v_mov_b32_e32 v6, v41141; GFX942-NEXT:    v_mov_b32_e32 v7, v51142; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]1143; GFX942-NEXT:    s_waitcnt vmcnt(0)1144; GFX942-NEXT:    s_setpc_b64 s[30:31]1145  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1146  %vec1 = call <3 x ptr> asm "; def $0", "=v"()1147  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 4>1148  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321149  ret void1150}1151 1152define void @v_shuffle_v4p0_v3p0__5_5_5_5(ptr addrspace(1) inreg %ptr) {1153; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_5_5:1154; GFX900:       ; %bb.0:1155; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1156; GFX900-NEXT:    v_mov_b32_e32 v8, 01157; GFX900-NEXT:    ;;#ASMSTART1158; GFX900-NEXT:    ; def v[0:5]1159; GFX900-NEXT:    ;;#ASMEND1160; GFX900-NEXT:    v_mov_b32_e32 v6, v41161; GFX900-NEXT:    v_mov_b32_e32 v7, v51162; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:161163; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]1164; GFX900-NEXT:    s_waitcnt vmcnt(0)1165; GFX900-NEXT:    s_setpc_b64 s[30:31]1166;1167; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_5_5:1168; GFX90A:       ; %bb.0:1169; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1170; GFX90A-NEXT:    v_mov_b32_e32 v8, 01171; GFX90A-NEXT:    ;;#ASMSTART1172; GFX90A-NEXT:    ; def v[0:5]1173; GFX90A-NEXT:    ;;#ASMEND1174; GFX90A-NEXT:    v_mov_b32_e32 v6, v41175; GFX90A-NEXT:    v_mov_b32_e32 v7, v51176; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:161177; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]1178; GFX90A-NEXT:    s_waitcnt vmcnt(0)1179; GFX90A-NEXT:    s_setpc_b64 s[30:31]1180;1181; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_5_5:1182; GFX942:       ; %bb.0:1183; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1184; GFX942-NEXT:    v_mov_b32_e32 v8, 01185; GFX942-NEXT:    ;;#ASMSTART1186; GFX942-NEXT:    ; def v[0:5]1187; GFX942-NEXT:    ;;#ASMEND1188; GFX942-NEXT:    s_nop 01189; GFX942-NEXT:    v_mov_b32_e32 v6, v41190; GFX942-NEXT:    v_mov_b32_e32 v7, v51191; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:161192; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]1193; GFX942-NEXT:    s_waitcnt vmcnt(0)1194; GFX942-NEXT:    s_setpc_b64 s[30:31]1195  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1196  %vec1 = call <3 x ptr> asm "; def $0", "=v"()1197  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 5>1198  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321199  ret void1200}1201 1202define void @v_shuffle_v4p0_v3p0__u_0_0_0(ptr addrspace(1) inreg %ptr) {1203; GFX900-LABEL: v_shuffle_v4p0_v3p0__u_0_0_0:1204; GFX900:       ; %bb.0:1205; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1206; GFX900-NEXT:    ;;#ASMSTART1207; GFX900-NEXT:    ; def v[2:7]1208; GFX900-NEXT:    ;;#ASMEND1209; GFX900-NEXT:    v_mov_b32_e32 v0, 01210; GFX900-NEXT:    v_mov_b32_e32 v4, v21211; GFX900-NEXT:    v_mov_b32_e32 v5, v31212; GFX900-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:161213; GFX900-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17]1214; GFX900-NEXT:    s_waitcnt vmcnt(0)1215; GFX900-NEXT:    s_setpc_b64 s[30:31]1216;1217; GFX90A-LABEL: v_shuffle_v4p0_v3p0__u_0_0_0:1218; GFX90A:       ; %bb.0:1219; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1220; GFX90A-NEXT:    ;;#ASMSTART1221; GFX90A-NEXT:    ; def v[2:7]1222; GFX90A-NEXT:    ;;#ASMEND1223; GFX90A-NEXT:    v_mov_b32_e32 v0, 01224; GFX90A-NEXT:    v_mov_b32_e32 v4, v21225; GFX90A-NEXT:    v_mov_b32_e32 v5, v31226; GFX90A-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:161227; GFX90A-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17]1228; GFX90A-NEXT:    s_waitcnt vmcnt(0)1229; GFX90A-NEXT:    s_setpc_b64 s[30:31]1230;1231; GFX942-LABEL: v_shuffle_v4p0_v3p0__u_0_0_0:1232; GFX942:       ; %bb.0:1233; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1234; GFX942-NEXT:    ;;#ASMSTART1235; GFX942-NEXT:    ; def v[2:7]1236; GFX942-NEXT:    ;;#ASMEND1237; GFX942-NEXT:    v_mov_b32_e32 v0, 01238; GFX942-NEXT:    v_mov_b32_e32 v4, v21239; GFX942-NEXT:    v_mov_b32_e32 v5, v31240; GFX942-NEXT:    global_store_dwordx4 v0, v[2:5], s[0:1] offset:161241; GFX942-NEXT:    global_store_dwordx4 v0, v[0:3], s[0:1]1242; GFX942-NEXT:    s_waitcnt vmcnt(0)1243; GFX942-NEXT:    s_setpc_b64 s[30:31]1244  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1245  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0>1246  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321247  ret void1248}1249 1250define void @v_shuffle_v4p0_v3p0__0_0_0_0(ptr addrspace(1) inreg %ptr) {1251; GFX900-LABEL: v_shuffle_v4p0_v3p0__0_0_0_0:1252; GFX900:       ; %bb.0:1253; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1254; GFX900-NEXT:    ;;#ASMSTART1255; GFX900-NEXT:    ; def v[0:5]1256; GFX900-NEXT:    ;;#ASMEND1257; GFX900-NEXT:    v_mov_b32_e32 v6, 01258; GFX900-NEXT:    v_mov_b32_e32 v2, v01259; GFX900-NEXT:    v_mov_b32_e32 v3, v11260; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17] offset:161261; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]1262; GFX900-NEXT:    s_waitcnt vmcnt(0)1263; GFX900-NEXT:    s_setpc_b64 s[30:31]1264;1265; GFX90A-LABEL: v_shuffle_v4p0_v3p0__0_0_0_0:1266; GFX90A:       ; %bb.0:1267; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1268; GFX90A-NEXT:    ;;#ASMSTART1269; GFX90A-NEXT:    ; def v[0:5]1270; GFX90A-NEXT:    ;;#ASMEND1271; GFX90A-NEXT:    v_mov_b32_e32 v6, 01272; GFX90A-NEXT:    v_mov_b32_e32 v2, v01273; GFX90A-NEXT:    v_mov_b32_e32 v3, v11274; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17] offset:161275; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]1276; GFX90A-NEXT:    s_waitcnt vmcnt(0)1277; GFX90A-NEXT:    s_setpc_b64 s[30:31]1278;1279; GFX942-LABEL: v_shuffle_v4p0_v3p0__0_0_0_0:1280; GFX942:       ; %bb.0:1281; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1282; GFX942-NEXT:    ;;#ASMSTART1283; GFX942-NEXT:    ; def v[0:5]1284; GFX942-NEXT:    ;;#ASMEND1285; GFX942-NEXT:    v_mov_b32_e32 v6, 01286; GFX942-NEXT:    v_mov_b32_e32 v2, v01287; GFX942-NEXT:    v_mov_b32_e32 v3, v11288; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] offset:161289; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]1290; GFX942-NEXT:    s_waitcnt vmcnt(0)1291; GFX942-NEXT:    s_setpc_b64 s[30:31]1292  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1293  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> zeroinitializer1294  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321295  ret void1296}1297 1298define void @v_shuffle_v4p0_v3p0__1_0_0_0(ptr addrspace(1) inreg %ptr) {1299; GFX900-LABEL: v_shuffle_v4p0_v3p0__1_0_0_0:1300; GFX900:       ; %bb.0:1301; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1302; GFX900-NEXT:    ;;#ASMSTART1303; GFX900-NEXT:    ; def v[2:7]1304; GFX900-NEXT:    ;;#ASMEND1305; GFX900-NEXT:    v_mov_b32_e32 v8, 01306; GFX900-NEXT:    v_mov_b32_e32 v0, v21307; GFX900-NEXT:    v_mov_b32_e32 v1, v31308; GFX900-NEXT:    v_mov_b32_e32 v6, v21309; GFX900-NEXT:    v_mov_b32_e32 v7, v31310; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:161311; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]1312; GFX900-NEXT:    s_waitcnt vmcnt(0)1313; GFX900-NEXT:    s_setpc_b64 s[30:31]1314;1315; GFX90A-LABEL: v_shuffle_v4p0_v3p0__1_0_0_0:1316; GFX90A:       ; %bb.0:1317; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1318; GFX90A-NEXT:    ;;#ASMSTART1319; GFX90A-NEXT:    ; def v[2:7]1320; GFX90A-NEXT:    ;;#ASMEND1321; GFX90A-NEXT:    v_mov_b32_e32 v8, 01322; GFX90A-NEXT:    v_mov_b32_e32 v0, v21323; GFX90A-NEXT:    v_mov_b32_e32 v1, v31324; GFX90A-NEXT:    v_mov_b32_e32 v6, v21325; GFX90A-NEXT:    v_mov_b32_e32 v7, v31326; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:161327; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]1328; GFX90A-NEXT:    s_waitcnt vmcnt(0)1329; GFX90A-NEXT:    s_setpc_b64 s[30:31]1330;1331; GFX942-LABEL: v_shuffle_v4p0_v3p0__1_0_0_0:1332; GFX942:       ; %bb.0:1333; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1334; GFX942-NEXT:    ;;#ASMSTART1335; GFX942-NEXT:    ; def v[2:7]1336; GFX942-NEXT:    ;;#ASMEND1337; GFX942-NEXT:    v_mov_b32_e32 v8, 01338; GFX942-NEXT:    v_mov_b32_e32 v0, v21339; GFX942-NEXT:    v_mov_b32_e32 v1, v31340; GFX942-NEXT:    v_mov_b32_e32 v6, v21341; GFX942-NEXT:    v_mov_b32_e32 v7, v31342; GFX942-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:161343; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]1344; GFX942-NEXT:    s_waitcnt vmcnt(0)1345; GFX942-NEXT:    s_setpc_b64 s[30:31]1346  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1347  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>1348  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321349  ret void1350}1351 1352define void @v_shuffle_v4p0_v3p0__2_0_0_0(ptr addrspace(1) inreg %ptr) {1353; GFX900-LABEL: v_shuffle_v4p0_v3p0__2_0_0_0:1354; GFX900:       ; %bb.0:1355; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1356; GFX900-NEXT:    ;;#ASMSTART1357; GFX900-NEXT:    ; def v[0:5]1358; GFX900-NEXT:    ;;#ASMEND1359; GFX900-NEXT:    v_mov_b32_e32 v8, 01360; GFX900-NEXT:    v_mov_b32_e32 v2, v01361; GFX900-NEXT:    v_mov_b32_e32 v3, v11362; GFX900-NEXT:    v_mov_b32_e32 v6, v01363; GFX900-NEXT:    v_mov_b32_e32 v7, v11364; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:161365; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]1366; GFX900-NEXT:    s_waitcnt vmcnt(0)1367; GFX900-NEXT:    s_setpc_b64 s[30:31]1368;1369; GFX90A-LABEL: v_shuffle_v4p0_v3p0__2_0_0_0:1370; GFX90A:       ; %bb.0:1371; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1372; GFX90A-NEXT:    ;;#ASMSTART1373; GFX90A-NEXT:    ; def v[0:5]1374; GFX90A-NEXT:    ;;#ASMEND1375; GFX90A-NEXT:    v_mov_b32_e32 v8, 01376; GFX90A-NEXT:    v_mov_b32_e32 v2, v01377; GFX90A-NEXT:    v_mov_b32_e32 v3, v11378; GFX90A-NEXT:    v_mov_b32_e32 v6, v01379; GFX90A-NEXT:    v_mov_b32_e32 v7, v11380; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:161381; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]1382; GFX90A-NEXT:    s_waitcnt vmcnt(0)1383; GFX90A-NEXT:    s_setpc_b64 s[30:31]1384;1385; GFX942-LABEL: v_shuffle_v4p0_v3p0__2_0_0_0:1386; GFX942:       ; %bb.0:1387; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1388; GFX942-NEXT:    ;;#ASMSTART1389; GFX942-NEXT:    ; def v[0:5]1390; GFX942-NEXT:    ;;#ASMEND1391; GFX942-NEXT:    v_mov_b32_e32 v8, 01392; GFX942-NEXT:    v_mov_b32_e32 v2, v01393; GFX942-NEXT:    v_mov_b32_e32 v3, v11394; GFX942-NEXT:    v_mov_b32_e32 v6, v01395; GFX942-NEXT:    v_mov_b32_e32 v7, v11396; GFX942-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:161397; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]1398; GFX942-NEXT:    s_waitcnt vmcnt(0)1399; GFX942-NEXT:    s_setpc_b64 s[30:31]1400  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1401  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0>1402  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321403  ret void1404}1405 1406define void @v_shuffle_v4p0_v3p0__3_0_0_0(ptr addrspace(1) inreg %ptr) {1407; GFX900-LABEL: v_shuffle_v4p0_v3p0__3_0_0_0:1408; GFX900:       ; %bb.0:1409; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1410; GFX900-NEXT:    ;;#ASMSTART1411; GFX900-NEXT:    ; def v[2:7]1412; GFX900-NEXT:    ;;#ASMEND1413; GFX900-NEXT:    v_mov_b32_e32 v0, 01414; GFX900-NEXT:    v_mov_b32_e32 v4, v21415; GFX900-NEXT:    v_mov_b32_e32 v5, v31416; GFX900-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:161417; GFX900-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17]1418; GFX900-NEXT:    s_waitcnt vmcnt(0)1419; GFX900-NEXT:    s_setpc_b64 s[30:31]1420;1421; GFX90A-LABEL: v_shuffle_v4p0_v3p0__3_0_0_0:1422; GFX90A:       ; %bb.0:1423; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1424; GFX90A-NEXT:    ;;#ASMSTART1425; GFX90A-NEXT:    ; def v[2:7]1426; GFX90A-NEXT:    ;;#ASMEND1427; GFX90A-NEXT:    v_mov_b32_e32 v0, 01428; GFX90A-NEXT:    v_mov_b32_e32 v4, v21429; GFX90A-NEXT:    v_mov_b32_e32 v5, v31430; GFX90A-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:161431; GFX90A-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17]1432; GFX90A-NEXT:    s_waitcnt vmcnt(0)1433; GFX90A-NEXT:    s_setpc_b64 s[30:31]1434;1435; GFX942-LABEL: v_shuffle_v4p0_v3p0__3_0_0_0:1436; GFX942:       ; %bb.0:1437; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1438; GFX942-NEXT:    ;;#ASMSTART1439; GFX942-NEXT:    ; def v[2:7]1440; GFX942-NEXT:    ;;#ASMEND1441; GFX942-NEXT:    v_mov_b32_e32 v0, 01442; GFX942-NEXT:    v_mov_b32_e32 v4, v21443; GFX942-NEXT:    v_mov_b32_e32 v5, v31444; GFX942-NEXT:    global_store_dwordx4 v0, v[2:5], s[0:1] offset:161445; GFX942-NEXT:    global_store_dwordx4 v0, v[0:3], s[0:1]1446; GFX942-NEXT:    s_waitcnt vmcnt(0)1447; GFX942-NEXT:    s_setpc_b64 s[30:31]1448  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1449  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 3, i32 0, i32 0, i32 0>1450  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321451  ret void1452}1453 1454define void @v_shuffle_v4p0_v3p0__4_0_0_0(ptr addrspace(1) inreg %ptr) {1455; GFX900-LABEL: v_shuffle_v4p0_v3p0__4_0_0_0:1456; GFX900:       ; %bb.0:1457; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1458; GFX900-NEXT:    ;;#ASMSTART1459; GFX900-NEXT:    ; def v[0:5]1460; GFX900-NEXT:    ;;#ASMEND1461; GFX900-NEXT:    ;;#ASMSTART1462; GFX900-NEXT:    ; def v[2:7]1463; GFX900-NEXT:    ;;#ASMEND1464; GFX900-NEXT:    v_mov_b32_e32 v8, 01465; GFX900-NEXT:    v_mov_b32_e32 v2, v01466; GFX900-NEXT:    v_mov_b32_e32 v3, v11467; GFX900-NEXT:    v_mov_b32_e32 v6, v01468; GFX900-NEXT:    v_mov_b32_e32 v7, v11469; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:161470; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]1471; GFX900-NEXT:    s_waitcnt vmcnt(0)1472; GFX900-NEXT:    s_setpc_b64 s[30:31]1473;1474; GFX90A-LABEL: v_shuffle_v4p0_v3p0__4_0_0_0:1475; GFX90A:       ; %bb.0:1476; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1477; GFX90A-NEXT:    ;;#ASMSTART1478; GFX90A-NEXT:    ; def v[0:5]1479; GFX90A-NEXT:    ;;#ASMEND1480; GFX90A-NEXT:    ;;#ASMSTART1481; GFX90A-NEXT:    ; def v[2:7]1482; GFX90A-NEXT:    ;;#ASMEND1483; GFX90A-NEXT:    v_mov_b32_e32 v8, 01484; GFX90A-NEXT:    v_mov_b32_e32 v2, v01485; GFX90A-NEXT:    v_mov_b32_e32 v3, v11486; GFX90A-NEXT:    v_mov_b32_e32 v6, v01487; GFX90A-NEXT:    v_mov_b32_e32 v7, v11488; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:161489; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]1490; GFX90A-NEXT:    s_waitcnt vmcnt(0)1491; GFX90A-NEXT:    s_setpc_b64 s[30:31]1492;1493; GFX942-LABEL: v_shuffle_v4p0_v3p0__4_0_0_0:1494; GFX942:       ; %bb.0:1495; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1496; GFX942-NEXT:    ;;#ASMSTART1497; GFX942-NEXT:    ; def v[0:5]1498; GFX942-NEXT:    ;;#ASMEND1499; GFX942-NEXT:    v_mov_b32_e32 v8, 01500; GFX942-NEXT:    ;;#ASMSTART1501; GFX942-NEXT:    ; def v[2:7]1502; GFX942-NEXT:    ;;#ASMEND1503; GFX942-NEXT:    s_nop 01504; GFX942-NEXT:    v_mov_b32_e32 v2, v01505; GFX942-NEXT:    v_mov_b32_e32 v3, v11506; GFX942-NEXT:    v_mov_b32_e32 v6, v01507; GFX942-NEXT:    v_mov_b32_e32 v7, v11508; GFX942-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:161509; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]1510; GFX942-NEXT:    s_waitcnt vmcnt(0)1511; GFX942-NEXT:    s_setpc_b64 s[30:31]1512  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1513  %vec1 = call <3 x ptr> asm "; def $0", "=v"()1514  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 4, i32 0, i32 0, i32 0>1515  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321516  ret void1517}1518 1519define void @v_shuffle_v4p0_v3p0__5_0_0_0(ptr addrspace(1) inreg %ptr) {1520; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_0_0_0:1521; GFX900:       ; %bb.0:1522; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1523; GFX900-NEXT:    ;;#ASMSTART1524; GFX900-NEXT:    ; def v[6:11]1525; GFX900-NEXT:    ;;#ASMEND1526; GFX900-NEXT:    v_mov_b32_e32 v12, 01527; GFX900-NEXT:    ;;#ASMSTART1528; GFX900-NEXT:    ; def v[0:5]1529; GFX900-NEXT:    ;;#ASMEND1530; GFX900-NEXT:    v_mov_b32_e32 v8, v61531; GFX900-NEXT:    v_mov_b32_e32 v9, v71532; GFX900-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17] offset:161533; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]1534; GFX900-NEXT:    s_waitcnt vmcnt(0)1535; GFX900-NEXT:    s_setpc_b64 s[30:31]1536;1537; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_0_0_0:1538; GFX90A:       ; %bb.0:1539; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1540; GFX90A-NEXT:    ;;#ASMSTART1541; GFX90A-NEXT:    ; def v[6:11]1542; GFX90A-NEXT:    ;;#ASMEND1543; GFX90A-NEXT:    v_mov_b32_e32 v12, 01544; GFX90A-NEXT:    ;;#ASMSTART1545; GFX90A-NEXT:    ; def v[0:5]1546; GFX90A-NEXT:    ;;#ASMEND1547; GFX90A-NEXT:    v_mov_b32_e32 v8, v61548; GFX90A-NEXT:    v_mov_b32_e32 v9, v71549; GFX90A-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17] offset:161550; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], 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_v4p0_v3p0__5_0_0_0:1555; GFX942:       ; %bb.0:1556; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1557; GFX942-NEXT:    ;;#ASMSTART1558; GFX942-NEXT:    ; def v[6:11]1559; GFX942-NEXT:    ;;#ASMEND1560; GFX942-NEXT:    v_mov_b32_e32 v12, 01561; GFX942-NEXT:    ;;#ASMSTART1562; GFX942-NEXT:    ; def v[0:5]1563; GFX942-NEXT:    ;;#ASMEND1564; GFX942-NEXT:    v_mov_b32_e32 v8, v61565; GFX942-NEXT:    v_mov_b32_e32 v9, v71566; GFX942-NEXT:    global_store_dwordx4 v12, v[6:9], s[0:1] offset:161567; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1]1568; GFX942-NEXT:    s_waitcnt vmcnt(0)1569; GFX942-NEXT:    s_setpc_b64 s[30:31]1570  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1571  %vec1 = call <3 x ptr> asm "; def $0", "=v"()1572  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 0, i32 0, i32 0>1573  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321574  ret void1575}1576 1577define void @v_shuffle_v4p0_v3p0__5_u_0_0(ptr addrspace(1) inreg %ptr) {1578; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_u_0_0:1579; GFX900:       ; %bb.0:1580; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1581; GFX900-NEXT:    ;;#ASMSTART1582; GFX900-NEXT:    ; def v[6:11]1583; GFX900-NEXT:    ;;#ASMEND1584; GFX900-NEXT:    v_mov_b32_e32 v12, 01585; GFX900-NEXT:    ;;#ASMSTART1586; GFX900-NEXT:    ; def v[0:5]1587; GFX900-NEXT:    ;;#ASMEND1588; GFX900-NEXT:    v_mov_b32_e32 v8, v61589; GFX900-NEXT:    v_mov_b32_e32 v9, v71590; GFX900-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17] offset:161591; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]1592; GFX900-NEXT:    s_waitcnt vmcnt(0)1593; GFX900-NEXT:    s_setpc_b64 s[30:31]1594;1595; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_u_0_0:1596; GFX90A:       ; %bb.0:1597; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1598; GFX90A-NEXT:    ;;#ASMSTART1599; GFX90A-NEXT:    ; def v[6:11]1600; GFX90A-NEXT:    ;;#ASMEND1601; GFX90A-NEXT:    v_mov_b32_e32 v12, 01602; GFX90A-NEXT:    ;;#ASMSTART1603; GFX90A-NEXT:    ; def v[0:5]1604; GFX90A-NEXT:    ;;#ASMEND1605; GFX90A-NEXT:    v_mov_b32_e32 v8, v61606; GFX90A-NEXT:    v_mov_b32_e32 v9, v71607; GFX90A-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17] offset:161608; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]1609; GFX90A-NEXT:    s_waitcnt vmcnt(0)1610; GFX90A-NEXT:    s_setpc_b64 s[30:31]1611;1612; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_u_0_0:1613; GFX942:       ; %bb.0:1614; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1615; GFX942-NEXT:    ;;#ASMSTART1616; GFX942-NEXT:    ; def v[6:11]1617; GFX942-NEXT:    ;;#ASMEND1618; GFX942-NEXT:    v_mov_b32_e32 v12, 01619; GFX942-NEXT:    ;;#ASMSTART1620; GFX942-NEXT:    ; def v[0:5]1621; GFX942-NEXT:    ;;#ASMEND1622; GFX942-NEXT:    v_mov_b32_e32 v8, v61623; GFX942-NEXT:    v_mov_b32_e32 v9, v71624; GFX942-NEXT:    global_store_dwordx4 v12, v[6:9], s[0:1] offset:161625; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1]1626; GFX942-NEXT:    s_waitcnt vmcnt(0)1627; GFX942-NEXT:    s_setpc_b64 s[30:31]1628  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1629  %vec1 = call <3 x ptr> asm "; def $0", "=v"()1630  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 poison, i32 0, i32 0>1631  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321632  ret void1633}1634 1635define void @v_shuffle_v4p0_v3p0__5_1_0_0(ptr addrspace(1) inreg %ptr) {1636; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_1_0_0:1637; GFX900:       ; %bb.0:1638; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1639; GFX900-NEXT:    v_mov_b32_e32 v14, 01640; GFX900-NEXT:    ;;#ASMSTART1641; GFX900-NEXT:    ; def v[2:7]1642; GFX900-NEXT:    ;;#ASMEND1643; GFX900-NEXT:    v_mov_b32_e32 v0, v21644; GFX900-NEXT:    v_mov_b32_e32 v1, v31645; GFX900-NEXT:    v_mov_b32_e32 v12, v41646; GFX900-NEXT:    v_mov_b32_e32 v13, v51647; GFX900-NEXT:    ;;#ASMSTART1648; GFX900-NEXT:    ; def v[6:11]1649; GFX900-NEXT:    ;;#ASMEND1650; GFX900-NEXT:    global_store_dwordx4 v14, v[0:3], s[16:17] offset:161651; GFX900-NEXT:    global_store_dwordx4 v14, v[10:13], s[16:17]1652; GFX900-NEXT:    s_waitcnt vmcnt(0)1653; GFX900-NEXT:    s_setpc_b64 s[30:31]1654;1655; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_1_0_0:1656; GFX90A:       ; %bb.0:1657; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1658; GFX90A-NEXT:    v_mov_b32_e32 v14, 01659; GFX90A-NEXT:    ;;#ASMSTART1660; GFX90A-NEXT:    ; def v[2:7]1661; GFX90A-NEXT:    ;;#ASMEND1662; GFX90A-NEXT:    v_mov_b32_e32 v0, v21663; GFX90A-NEXT:    v_mov_b32_e32 v1, v31664; GFX90A-NEXT:    v_mov_b32_e32 v12, v41665; GFX90A-NEXT:    v_mov_b32_e32 v13, v51666; GFX90A-NEXT:    ;;#ASMSTART1667; GFX90A-NEXT:    ; def v[6:11]1668; GFX90A-NEXT:    ;;#ASMEND1669; GFX90A-NEXT:    global_store_dwordx4 v14, v[0:3], s[16:17] offset:161670; GFX90A-NEXT:    global_store_dwordx4 v14, v[10:13], s[16:17]1671; GFX90A-NEXT:    s_waitcnt vmcnt(0)1672; GFX90A-NEXT:    s_setpc_b64 s[30:31]1673;1674; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_1_0_0:1675; GFX942:       ; %bb.0:1676; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1677; GFX942-NEXT:    v_mov_b32_e32 v14, 01678; GFX942-NEXT:    ;;#ASMSTART1679; GFX942-NEXT:    ; def v[2:7]1680; GFX942-NEXT:    ;;#ASMEND1681; GFX942-NEXT:    s_nop 01682; GFX942-NEXT:    v_mov_b32_e32 v0, v21683; GFX942-NEXT:    v_mov_b32_e32 v1, v31684; GFX942-NEXT:    v_mov_b32_e32 v12, v41685; GFX942-NEXT:    v_mov_b32_e32 v13, v51686; GFX942-NEXT:    ;;#ASMSTART1687; GFX942-NEXT:    ; def v[6:11]1688; GFX942-NEXT:    ;;#ASMEND1689; GFX942-NEXT:    global_store_dwordx4 v14, v[0:3], s[0:1] offset:161690; GFX942-NEXT:    global_store_dwordx4 v14, v[10:13], s[0:1]1691; GFX942-NEXT:    s_waitcnt vmcnt(0)1692; GFX942-NEXT:    s_setpc_b64 s[30:31]1693  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1694  %vec1 = call <3 x ptr> asm "; def $0", "=v"()1695  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 1, i32 0, i32 0>1696  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321697  ret void1698}1699 1700define void @v_shuffle_v4p0_v3p0__5_2_0_0(ptr addrspace(1) inreg %ptr) {1701; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_2_0_0:1702; GFX900:       ; %bb.0:1703; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1704; GFX900-NEXT:    ;;#ASMSTART1705; GFX900-NEXT:    ; def v[6:11]1706; GFX900-NEXT:    ;;#ASMEND1707; GFX900-NEXT:    v_mov_b32_e32 v12, 01708; GFX900-NEXT:    v_mov_b32_e32 v8, v61709; GFX900-NEXT:    v_mov_b32_e32 v9, v71710; GFX900-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17] offset:161711; GFX900-NEXT:    ;;#ASMSTART1712; GFX900-NEXT:    ; def v[0:5]1713; GFX900-NEXT:    ;;#ASMEND1714; GFX900-NEXT:    s_nop 01715; GFX900-NEXT:    v_mov_b32_e32 v6, v101716; GFX900-NEXT:    v_mov_b32_e32 v7, v111717; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]1718; GFX900-NEXT:    s_waitcnt vmcnt(0)1719; GFX900-NEXT:    s_setpc_b64 s[30:31]1720;1721; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_2_0_0:1722; GFX90A:       ; %bb.0:1723; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1724; GFX90A-NEXT:    ;;#ASMSTART1725; GFX90A-NEXT:    ; def v[6:11]1726; GFX90A-NEXT:    ;;#ASMEND1727; GFX90A-NEXT:    v_mov_b32_e32 v12, 01728; GFX90A-NEXT:    v_mov_b32_e32 v8, v61729; GFX90A-NEXT:    v_mov_b32_e32 v9, v71730; GFX90A-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17] offset:161731; GFX90A-NEXT:    ;;#ASMSTART1732; GFX90A-NEXT:    ; def v[0:5]1733; GFX90A-NEXT:    ;;#ASMEND1734; GFX90A-NEXT:    s_nop 01735; GFX90A-NEXT:    v_mov_b32_e32 v6, v101736; GFX90A-NEXT:    v_mov_b32_e32 v7, v111737; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]1738; GFX90A-NEXT:    s_waitcnt vmcnt(0)1739; GFX90A-NEXT:    s_setpc_b64 s[30:31]1740;1741; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_2_0_0:1742; GFX942:       ; %bb.0:1743; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1744; GFX942-NEXT:    ;;#ASMSTART1745; GFX942-NEXT:    ; def v[6:11]1746; GFX942-NEXT:    ;;#ASMEND1747; GFX942-NEXT:    v_mov_b32_e32 v12, 01748; GFX942-NEXT:    v_mov_b32_e32 v8, v61749; GFX942-NEXT:    v_mov_b32_e32 v9, v71750; GFX942-NEXT:    global_store_dwordx4 v12, v[6:9], s[0:1] offset:161751; GFX942-NEXT:    ;;#ASMSTART1752; GFX942-NEXT:    ; def v[0:5]1753; GFX942-NEXT:    ;;#ASMEND1754; GFX942-NEXT:    s_nop 11755; GFX942-NEXT:    v_mov_b32_e32 v6, v101756; GFX942-NEXT:    v_mov_b32_e32 v7, v111757; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1]1758; GFX942-NEXT:    s_waitcnt vmcnt(0)1759; GFX942-NEXT:    s_setpc_b64 s[30:31]1760  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1761  %vec1 = call <3 x ptr> asm "; def $0", "=v"()1762  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 2, i32 0, i32 0>1763  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321764  ret void1765}1766 1767define void @v_shuffle_v4p0_v3p0__5_3_0_0(ptr addrspace(1) inreg %ptr) {1768; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_3_0_0:1769; GFX900:       ; %bb.0:1770; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1771; GFX900-NEXT:    ;;#ASMSTART1772; GFX900-NEXT:    ; def v[6:11]1773; GFX900-NEXT:    ;;#ASMEND1774; GFX900-NEXT:    v_mov_b32_e32 v12, 01775; GFX900-NEXT:    v_mov_b32_e32 v8, v61776; GFX900-NEXT:    v_mov_b32_e32 v9, v71777; GFX900-NEXT:    ;;#ASMSTART1778; GFX900-NEXT:    ; def v[0:5]1779; GFX900-NEXT:    ;;#ASMEND1780; GFX900-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17] offset:161781; GFX900-NEXT:    s_nop 01782; GFX900-NEXT:    v_mov_b32_e32 v6, v01783; GFX900-NEXT:    v_mov_b32_e32 v7, v11784; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]1785; GFX900-NEXT:    s_waitcnt vmcnt(0)1786; GFX900-NEXT:    s_setpc_b64 s[30:31]1787;1788; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_3_0_0:1789; GFX90A:       ; %bb.0:1790; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1791; GFX90A-NEXT:    ;;#ASMSTART1792; GFX90A-NEXT:    ; def v[6:11]1793; GFX90A-NEXT:    ;;#ASMEND1794; GFX90A-NEXT:    v_mov_b32_e32 v12, 01795; GFX90A-NEXT:    v_mov_b32_e32 v8, v61796; GFX90A-NEXT:    v_mov_b32_e32 v9, v71797; GFX90A-NEXT:    ;;#ASMSTART1798; GFX90A-NEXT:    ; def v[0:5]1799; GFX90A-NEXT:    ;;#ASMEND1800; GFX90A-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17] offset:161801; GFX90A-NEXT:    s_nop 01802; GFX90A-NEXT:    v_mov_b32_e32 v6, v01803; GFX90A-NEXT:    v_mov_b32_e32 v7, v11804; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]1805; GFX90A-NEXT:    s_waitcnt vmcnt(0)1806; GFX90A-NEXT:    s_setpc_b64 s[30:31]1807;1808; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_3_0_0:1809; GFX942:       ; %bb.0:1810; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1811; GFX942-NEXT:    ;;#ASMSTART1812; GFX942-NEXT:    ; def v[6:11]1813; GFX942-NEXT:    ;;#ASMEND1814; GFX942-NEXT:    v_mov_b32_e32 v12, 01815; GFX942-NEXT:    v_mov_b32_e32 v8, v61816; GFX942-NEXT:    v_mov_b32_e32 v9, v71817; GFX942-NEXT:    ;;#ASMSTART1818; GFX942-NEXT:    ; def v[0:5]1819; GFX942-NEXT:    ;;#ASMEND1820; GFX942-NEXT:    global_store_dwordx4 v12, v[6:9], s[0:1] offset:161821; GFX942-NEXT:    s_nop 11822; GFX942-NEXT:    v_mov_b32_e32 v6, v01823; GFX942-NEXT:    v_mov_b32_e32 v7, v11824; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1]1825; GFX942-NEXT:    s_waitcnt vmcnt(0)1826; GFX942-NEXT:    s_setpc_b64 s[30:31]1827  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1828  %vec1 = call <3 x ptr> asm "; def $0", "=v"()1829  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 3, i32 0, i32 0>1830  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321831  ret void1832}1833 1834define void @v_shuffle_v4p0_v3p0__5_4_0_0(ptr addrspace(1) inreg %ptr) {1835; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_4_0_0:1836; GFX900:       ; %bb.0:1837; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1838; GFX900-NEXT:    ;;#ASMSTART1839; GFX900-NEXT:    ; def v[6:11]1840; GFX900-NEXT:    ;;#ASMEND1841; GFX900-NEXT:    v_mov_b32_e32 v12, 01842; GFX900-NEXT:    v_mov_b32_e32 v8, v61843; GFX900-NEXT:    v_mov_b32_e32 v9, v71844; GFX900-NEXT:    ;;#ASMSTART1845; GFX900-NEXT:    ; def v[0:5]1846; GFX900-NEXT:    ;;#ASMEND1847; GFX900-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17] offset:161848; GFX900-NEXT:    s_nop 01849; GFX900-NEXT:    v_mov_b32_e32 v6, v21850; GFX900-NEXT:    v_mov_b32_e32 v7, v31851; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]1852; GFX900-NEXT:    s_waitcnt vmcnt(0)1853; GFX900-NEXT:    s_setpc_b64 s[30:31]1854;1855; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_4_0_0:1856; GFX90A:       ; %bb.0:1857; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1858; GFX90A-NEXT:    ;;#ASMSTART1859; GFX90A-NEXT:    ; def v[6:11]1860; GFX90A-NEXT:    ;;#ASMEND1861; GFX90A-NEXT:    v_mov_b32_e32 v12, 01862; GFX90A-NEXT:    v_mov_b32_e32 v8, v61863; GFX90A-NEXT:    v_mov_b32_e32 v9, v71864; GFX90A-NEXT:    ;;#ASMSTART1865; GFX90A-NEXT:    ; def v[0:5]1866; GFX90A-NEXT:    ;;#ASMEND1867; GFX90A-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17] offset:161868; GFX90A-NEXT:    s_nop 01869; GFX90A-NEXT:    v_mov_b32_e32 v6, v21870; GFX90A-NEXT:    v_mov_b32_e32 v7, v31871; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]1872; GFX90A-NEXT:    s_waitcnt vmcnt(0)1873; GFX90A-NEXT:    s_setpc_b64 s[30:31]1874;1875; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_4_0_0:1876; GFX942:       ; %bb.0:1877; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1878; GFX942-NEXT:    ;;#ASMSTART1879; GFX942-NEXT:    ; def v[6:11]1880; GFX942-NEXT:    ;;#ASMEND1881; GFX942-NEXT:    v_mov_b32_e32 v12, 01882; GFX942-NEXT:    v_mov_b32_e32 v8, v61883; GFX942-NEXT:    v_mov_b32_e32 v9, v71884; GFX942-NEXT:    ;;#ASMSTART1885; GFX942-NEXT:    ; def v[0:5]1886; GFX942-NEXT:    ;;#ASMEND1887; GFX942-NEXT:    global_store_dwordx4 v12, v[6:9], s[0:1] offset:161888; GFX942-NEXT:    s_nop 11889; GFX942-NEXT:    v_mov_b32_e32 v6, v21890; GFX942-NEXT:    v_mov_b32_e32 v7, v31891; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1]1892; GFX942-NEXT:    s_waitcnt vmcnt(0)1893; GFX942-NEXT:    s_setpc_b64 s[30:31]1894  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1895  %vec1 = call <3 x ptr> asm "; def $0", "=v"()1896  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 4, i32 0, i32 0>1897  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321898  ret void1899}1900 1901define void @v_shuffle_v4p0_v3p0__5_5_0_0(ptr addrspace(1) inreg %ptr) {1902; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_0_0:1903; GFX900:       ; %bb.0:1904; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1905; GFX900-NEXT:    ;;#ASMSTART1906; GFX900-NEXT:    ; def v[6:11]1907; GFX900-NEXT:    ;;#ASMEND1908; GFX900-NEXT:    v_mov_b32_e32 v12, 01909; GFX900-NEXT:    v_mov_b32_e32 v8, v61910; GFX900-NEXT:    v_mov_b32_e32 v9, v71911; GFX900-NEXT:    ;;#ASMSTART1912; GFX900-NEXT:    ; def v[0:5]1913; GFX900-NEXT:    ;;#ASMEND1914; GFX900-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17] offset:161915; GFX900-NEXT:    s_nop 01916; GFX900-NEXT:    v_mov_b32_e32 v6, v41917; GFX900-NEXT:    v_mov_b32_e32 v7, v51918; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]1919; GFX900-NEXT:    s_waitcnt vmcnt(0)1920; GFX900-NEXT:    s_setpc_b64 s[30:31]1921;1922; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_0_0:1923; GFX90A:       ; %bb.0:1924; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1925; GFX90A-NEXT:    ;;#ASMSTART1926; GFX90A-NEXT:    ; def v[6:11]1927; GFX90A-NEXT:    ;;#ASMEND1928; GFX90A-NEXT:    v_mov_b32_e32 v12, 01929; GFX90A-NEXT:    v_mov_b32_e32 v8, v61930; GFX90A-NEXT:    v_mov_b32_e32 v9, v71931; GFX90A-NEXT:    ;;#ASMSTART1932; GFX90A-NEXT:    ; def v[0:5]1933; GFX90A-NEXT:    ;;#ASMEND1934; GFX90A-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17] offset:161935; GFX90A-NEXT:    s_nop 01936; GFX90A-NEXT:    v_mov_b32_e32 v6, v41937; GFX90A-NEXT:    v_mov_b32_e32 v7, v51938; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]1939; GFX90A-NEXT:    s_waitcnt vmcnt(0)1940; GFX90A-NEXT:    s_setpc_b64 s[30:31]1941;1942; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_0_0:1943; GFX942:       ; %bb.0:1944; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1945; GFX942-NEXT:    ;;#ASMSTART1946; GFX942-NEXT:    ; def v[6:11]1947; GFX942-NEXT:    ;;#ASMEND1948; GFX942-NEXT:    v_mov_b32_e32 v12, 01949; GFX942-NEXT:    v_mov_b32_e32 v8, v61950; GFX942-NEXT:    v_mov_b32_e32 v9, v71951; GFX942-NEXT:    ;;#ASMSTART1952; GFX942-NEXT:    ; def v[0:5]1953; GFX942-NEXT:    ;;#ASMEND1954; GFX942-NEXT:    global_store_dwordx4 v12, v[6:9], s[0:1] offset:161955; GFX942-NEXT:    s_nop 11956; GFX942-NEXT:    v_mov_b32_e32 v6, v41957; GFX942-NEXT:    v_mov_b32_e32 v7, v51958; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1]1959; GFX942-NEXT:    s_waitcnt vmcnt(0)1960; GFX942-NEXT:    s_setpc_b64 s[30:31]1961  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1962  %vec1 = call <3 x ptr> asm "; def $0", "=v"()1963  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 0>1964  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321965  ret void1966}1967 1968define void @v_shuffle_v4p0_v3p0__5_5_u_0(ptr addrspace(1) inreg %ptr) {1969; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_u_0:1970; GFX900:       ; %bb.0:1971; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1972; GFX900-NEXT:    ;;#ASMSTART1973; GFX900-NEXT:    ; def v[2:7]1974; GFX900-NEXT:    ;;#ASMEND1975; GFX900-NEXT:    v_mov_b32_e32 v0, 01976; GFX900-NEXT:    ;;#ASMSTART1977; GFX900-NEXT:    ; def v[4:9]1978; GFX900-NEXT:    ;;#ASMEND1979; GFX900-NEXT:    v_mov_b32_e32 v10, v81980; GFX900-NEXT:    v_mov_b32_e32 v11, v91981; GFX900-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17] offset:161982; GFX900-NEXT:    global_store_dwordx4 v0, v[8:11], s[16:17]1983; GFX900-NEXT:    s_waitcnt vmcnt(0)1984; GFX900-NEXT:    s_setpc_b64 s[30:31]1985;1986; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_u_0:1987; GFX90A:       ; %bb.0:1988; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1989; GFX90A-NEXT:    ;;#ASMSTART1990; GFX90A-NEXT:    ; def v[2:7]1991; GFX90A-NEXT:    ;;#ASMEND1992; GFX90A-NEXT:    v_mov_b32_e32 v0, 01993; GFX90A-NEXT:    ;;#ASMSTART1994; GFX90A-NEXT:    ; def v[4:9]1995; GFX90A-NEXT:    ;;#ASMEND1996; GFX90A-NEXT:    v_mov_b32_e32 v10, v81997; GFX90A-NEXT:    v_mov_b32_e32 v11, v91998; GFX90A-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17] offset:161999; GFX90A-NEXT:    global_store_dwordx4 v0, v[8:11], s[16:17]2000; GFX90A-NEXT:    s_waitcnt vmcnt(0)2001; GFX90A-NEXT:    s_setpc_b64 s[30:31]2002;2003; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_u_0:2004; GFX942:       ; %bb.0:2005; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2006; GFX942-NEXT:    ;;#ASMSTART2007; GFX942-NEXT:    ; def v[2:7]2008; GFX942-NEXT:    ;;#ASMEND2009; GFX942-NEXT:    v_mov_b32_e32 v0, 02010; GFX942-NEXT:    ;;#ASMSTART2011; GFX942-NEXT:    ; def v[4:9]2012; GFX942-NEXT:    ;;#ASMEND2013; GFX942-NEXT:    global_store_dwordx4 v0, v[0:3], s[0:1] offset:162014; GFX942-NEXT:    v_mov_b32_e32 v10, v82015; GFX942-NEXT:    v_mov_b32_e32 v11, v92016; GFX942-NEXT:    global_store_dwordx4 v0, v[8:11], s[0:1]2017; GFX942-NEXT:    s_waitcnt vmcnt(0)2018; GFX942-NEXT:    s_setpc_b64 s[30:31]2019  %vec0 = call <3 x ptr> asm "; def $0", "=v"()2020  %vec1 = call <3 x ptr> asm "; def $0", "=v"()2021  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 0>2022  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322023  ret void2024}2025 2026define void @v_shuffle_v4p0_v3p0__5_5_1_0(ptr addrspace(1) inreg %ptr) {2027; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_1_0:2028; GFX900:       ; %bb.0:2029; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2030; GFX900-NEXT:    ;;#ASMSTART2031; GFX900-NEXT:    ; def v[6:11]2032; GFX900-NEXT:    ;;#ASMEND2033; GFX900-NEXT:    v_mov_b32_e32 v12, 02034; GFX900-NEXT:    ;;#ASMSTART2035; GFX900-NEXT:    ; def v[0:5]2036; GFX900-NEXT:    ;;#ASMEND2037; GFX900-NEXT:    v_mov_b32_e32 v10, v62038; GFX900-NEXT:    v_mov_b32_e32 v11, v72039; GFX900-NEXT:    v_mov_b32_e32 v6, v42040; GFX900-NEXT:    v_mov_b32_e32 v7, v52041; GFX900-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17] offset:162042; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]2043; GFX900-NEXT:    s_waitcnt vmcnt(0)2044; GFX900-NEXT:    s_setpc_b64 s[30:31]2045;2046; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_1_0:2047; GFX90A:       ; %bb.0:2048; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2049; GFX90A-NEXT:    ;;#ASMSTART2050; GFX90A-NEXT:    ; def v[6:11]2051; GFX90A-NEXT:    ;;#ASMEND2052; GFX90A-NEXT:    v_mov_b32_e32 v12, 02053; GFX90A-NEXT:    ;;#ASMSTART2054; GFX90A-NEXT:    ; def v[0:5]2055; GFX90A-NEXT:    ;;#ASMEND2056; GFX90A-NEXT:    v_mov_b32_e32 v10, v62057; GFX90A-NEXT:    v_mov_b32_e32 v11, v72058; GFX90A-NEXT:    v_mov_b32_e32 v6, v42059; GFX90A-NEXT:    v_mov_b32_e32 v7, v52060; GFX90A-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17] offset:162061; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]2062; GFX90A-NEXT:    s_waitcnt vmcnt(0)2063; GFX90A-NEXT:    s_setpc_b64 s[30:31]2064;2065; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_1_0:2066; GFX942:       ; %bb.0:2067; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2068; GFX942-NEXT:    ;;#ASMSTART2069; GFX942-NEXT:    ; def v[6:11]2070; GFX942-NEXT:    ;;#ASMEND2071; GFX942-NEXT:    v_mov_b32_e32 v12, 02072; GFX942-NEXT:    ;;#ASMSTART2073; GFX942-NEXT:    ; def v[0:5]2074; GFX942-NEXT:    ;;#ASMEND2075; GFX942-NEXT:    v_mov_b32_e32 v10, v62076; GFX942-NEXT:    v_mov_b32_e32 v11, v72077; GFX942-NEXT:    v_mov_b32_e32 v6, v42078; GFX942-NEXT:    v_mov_b32_e32 v7, v52079; GFX942-NEXT:    global_store_dwordx4 v12, v[8:11], s[0:1] offset:162080; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1]2081; GFX942-NEXT:    s_waitcnt vmcnt(0)2082; GFX942-NEXT:    s_setpc_b64 s[30:31]2083  %vec0 = call <3 x ptr> asm "; def $0", "=v"()2084  %vec1 = call <3 x ptr> asm "; def $0", "=v"()2085  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 0>2086  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322087  ret void2088}2089 2090define void @v_shuffle_v4p0_v3p0__5_5_2_0(ptr addrspace(1) inreg %ptr) {2091; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_2_0:2092; GFX900:       ; %bb.0:2093; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2094; GFX900-NEXT:    ;;#ASMSTART2095; GFX900-NEXT:    ; def v[6:11]2096; GFX900-NEXT:    ;;#ASMEND2097; GFX900-NEXT:    v_mov_b32_e32 v14, 02098; GFX900-NEXT:    ;;#ASMSTART2099; GFX900-NEXT:    ; def v[0:5]2100; GFX900-NEXT:    ;;#ASMEND2101; GFX900-NEXT:    v_mov_b32_e32 v6, v02102; GFX900-NEXT:    v_mov_b32_e32 v7, v12103; GFX900-NEXT:    v_mov_b32_e32 v12, v102104; GFX900-NEXT:    v_mov_b32_e32 v13, v112105; GFX900-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17] offset:162106; GFX900-NEXT:    global_store_dwordx4 v14, v[10:13], s[16:17]2107; GFX900-NEXT:    s_waitcnt vmcnt(0)2108; GFX900-NEXT:    s_setpc_b64 s[30:31]2109;2110; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_2_0:2111; GFX90A:       ; %bb.0:2112; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2113; GFX90A-NEXT:    ;;#ASMSTART2114; GFX90A-NEXT:    ; def v[6:11]2115; GFX90A-NEXT:    ;;#ASMEND2116; GFX90A-NEXT:    v_mov_b32_e32 v14, 02117; GFX90A-NEXT:    ;;#ASMSTART2118; GFX90A-NEXT:    ; def v[0:5]2119; GFX90A-NEXT:    ;;#ASMEND2120; GFX90A-NEXT:    v_mov_b32_e32 v6, v02121; GFX90A-NEXT:    v_mov_b32_e32 v7, v12122; GFX90A-NEXT:    v_mov_b32_e32 v12, v102123; GFX90A-NEXT:    v_mov_b32_e32 v13, v112124; GFX90A-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17] offset:162125; GFX90A-NEXT:    global_store_dwordx4 v14, v[10:13], s[16:17]2126; GFX90A-NEXT:    s_waitcnt vmcnt(0)2127; GFX90A-NEXT:    s_setpc_b64 s[30:31]2128;2129; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_2_0:2130; GFX942:       ; %bb.0:2131; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2132; GFX942-NEXT:    ;;#ASMSTART2133; GFX942-NEXT:    ; def v[6:11]2134; GFX942-NEXT:    ;;#ASMEND2135; GFX942-NEXT:    v_mov_b32_e32 v14, 02136; GFX942-NEXT:    ;;#ASMSTART2137; GFX942-NEXT:    ; def v[0:5]2138; GFX942-NEXT:    ;;#ASMEND2139; GFX942-NEXT:    v_mov_b32_e32 v12, v102140; GFX942-NEXT:    v_mov_b32_e32 v6, v02141; GFX942-NEXT:    v_mov_b32_e32 v7, v12142; GFX942-NEXT:    v_mov_b32_e32 v13, v112143; GFX942-NEXT:    global_store_dwordx4 v14, v[4:7], s[0:1] offset:162144; GFX942-NEXT:    global_store_dwordx4 v14, v[10:13], s[0:1]2145; GFX942-NEXT:    s_waitcnt vmcnt(0)2146; GFX942-NEXT:    s_setpc_b64 s[30:31]2147  %vec0 = call <3 x ptr> asm "; def $0", "=v"()2148  %vec1 = call <3 x ptr> asm "; def $0", "=v"()2149  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 0>2150  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322151  ret void2152}2153 2154define void @v_shuffle_v4p0_v3p0__5_5_3_0(ptr addrspace(1) inreg %ptr) {2155; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_3_0:2156; GFX900:       ; %bb.0:2157; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2158; GFX900-NEXT:    ;;#ASMSTART2159; GFX900-NEXT:    ; def v[6:11]2160; GFX900-NEXT:    ;;#ASMEND2161; GFX900-NEXT:    ;;#ASMSTART2162; GFX900-NEXT:    ; def v[0:5]2163; GFX900-NEXT:    ;;#ASMEND2164; GFX900-NEXT:    v_mov_b32_e32 v12, 02165; GFX900-NEXT:    v_mov_b32_e32 v2, v62166; GFX900-NEXT:    v_mov_b32_e32 v3, v72167; GFX900-NEXT:    v_mov_b32_e32 v6, v42168; GFX900-NEXT:    v_mov_b32_e32 v7, v52169; GFX900-NEXT:    global_store_dwordx4 v12, v[0:3], s[16:17] offset:162170; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]2171; GFX900-NEXT:    s_waitcnt vmcnt(0)2172; GFX900-NEXT:    s_setpc_b64 s[30:31]2173;2174; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_3_0:2175; GFX90A:       ; %bb.0:2176; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2177; GFX90A-NEXT:    ;;#ASMSTART2178; GFX90A-NEXT:    ; def v[6:11]2179; GFX90A-NEXT:    ;;#ASMEND2180; GFX90A-NEXT:    ;;#ASMSTART2181; GFX90A-NEXT:    ; def v[0:5]2182; GFX90A-NEXT:    ;;#ASMEND2183; GFX90A-NEXT:    v_mov_b32_e32 v12, 02184; GFX90A-NEXT:    v_mov_b32_e32 v2, v62185; GFX90A-NEXT:    v_mov_b32_e32 v3, v72186; GFX90A-NEXT:    v_mov_b32_e32 v6, v42187; GFX90A-NEXT:    v_mov_b32_e32 v7, v52188; GFX90A-NEXT:    global_store_dwordx4 v12, v[0:3], s[16:17] offset:162189; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]2190; GFX90A-NEXT:    s_waitcnt vmcnt(0)2191; GFX90A-NEXT:    s_setpc_b64 s[30:31]2192;2193; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_3_0:2194; GFX942:       ; %bb.0:2195; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2196; GFX942-NEXT:    ;;#ASMSTART2197; GFX942-NEXT:    ; def v[6:11]2198; GFX942-NEXT:    ;;#ASMEND2199; GFX942-NEXT:    ;;#ASMSTART2200; GFX942-NEXT:    ; def v[0:5]2201; GFX942-NEXT:    ;;#ASMEND2202; GFX942-NEXT:    v_mov_b32_e32 v12, 02203; GFX942-NEXT:    v_mov_b32_e32 v2, v62204; GFX942-NEXT:    v_mov_b32_e32 v3, v72205; GFX942-NEXT:    v_mov_b32_e32 v6, v42206; GFX942-NEXT:    v_mov_b32_e32 v7, v52207; GFX942-NEXT:    global_store_dwordx4 v12, v[0:3], s[0:1] offset:162208; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1]2209; GFX942-NEXT:    s_waitcnt vmcnt(0)2210; GFX942-NEXT:    s_setpc_b64 s[30:31]2211  %vec0 = call <3 x ptr> asm "; def $0", "=v"()2212  %vec1 = call <3 x ptr> asm "; def $0", "=v"()2213  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 0>2214  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322215  ret void2216}2217 2218define void @v_shuffle_v4p0_v3p0__5_5_4_0(ptr addrspace(1) inreg %ptr) {2219; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_4_0:2220; GFX900:       ; %bb.0:2221; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2222; GFX900-NEXT:    ;;#ASMSTART2223; GFX900-NEXT:    ; def v[2:7]2224; GFX900-NEXT:    ;;#ASMEND2225; GFX900-NEXT:    v_mov_b32_e32 v12, 02226; GFX900-NEXT:    ;;#ASMSTART2227; GFX900-NEXT:    ; def v[4:9]2228; GFX900-NEXT:    ;;#ASMEND2229; GFX900-NEXT:    v_mov_b32_e32 v0, v62230; GFX900-NEXT:    v_mov_b32_e32 v1, v72231; GFX900-NEXT:    v_mov_b32_e32 v10, v82232; GFX900-NEXT:    v_mov_b32_e32 v11, v92233; GFX900-NEXT:    global_store_dwordx4 v12, v[0:3], s[16:17] offset:162234; GFX900-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17]2235; GFX900-NEXT:    s_waitcnt vmcnt(0)2236; GFX900-NEXT:    s_setpc_b64 s[30:31]2237;2238; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_4_0:2239; GFX90A:       ; %bb.0:2240; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2241; GFX90A-NEXT:    ;;#ASMSTART2242; GFX90A-NEXT:    ; def v[2:7]2243; GFX90A-NEXT:    ;;#ASMEND2244; GFX90A-NEXT:    v_mov_b32_e32 v12, 02245; GFX90A-NEXT:    ;;#ASMSTART2246; GFX90A-NEXT:    ; def v[4:9]2247; GFX90A-NEXT:    ;;#ASMEND2248; GFX90A-NEXT:    v_mov_b32_e32 v0, v62249; GFX90A-NEXT:    v_mov_b32_e32 v1, v72250; GFX90A-NEXT:    v_mov_b32_e32 v10, v82251; GFX90A-NEXT:    v_mov_b32_e32 v11, v92252; GFX90A-NEXT:    global_store_dwordx4 v12, v[0:3], s[16:17] offset:162253; GFX90A-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17]2254; GFX90A-NEXT:    s_waitcnt vmcnt(0)2255; GFX90A-NEXT:    s_setpc_b64 s[30:31]2256;2257; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_4_0:2258; GFX942:       ; %bb.0:2259; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2260; GFX942-NEXT:    ;;#ASMSTART2261; GFX942-NEXT:    ; def v[2:7]2262; GFX942-NEXT:    ;;#ASMEND2263; GFX942-NEXT:    v_mov_b32_e32 v12, 02264; GFX942-NEXT:    ;;#ASMSTART2265; GFX942-NEXT:    ; def v[4:9]2266; GFX942-NEXT:    ;;#ASMEND2267; GFX942-NEXT:    s_nop 02268; GFX942-NEXT:    v_mov_b32_e32 v0, v62269; GFX942-NEXT:    v_mov_b32_e32 v1, v72270; GFX942-NEXT:    v_mov_b32_e32 v10, v82271; GFX942-NEXT:    v_mov_b32_e32 v11, v92272; GFX942-NEXT:    global_store_dwordx4 v12, v[0:3], s[0:1] offset:162273; GFX942-NEXT:    global_store_dwordx4 v12, v[8:11], s[0:1]2274; GFX942-NEXT:    s_waitcnt vmcnt(0)2275; GFX942-NEXT:    s_setpc_b64 s[30:31]2276  %vec0 = call <3 x ptr> asm "; def $0", "=v"()2277  %vec1 = call <3 x ptr> asm "; def $0", "=v"()2278  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 0>2279  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322280  ret void2281}2282 2283define void @v_shuffle_v4p0_v3p0__u_1_1_1(ptr addrspace(1) inreg %ptr) {2284; GFX900-LABEL: v_shuffle_v4p0_v3p0__u_1_1_1:2285; GFX900:       ; %bb.0:2286; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2287; GFX900-NEXT:    ;;#ASMSTART2288; GFX900-NEXT:    ; def v[0:5]2289; GFX900-NEXT:    ;;#ASMEND2290; GFX900-NEXT:    v_mov_b32_e32 v6, 02291; GFX900-NEXT:    v_mov_b32_e32 v4, v22292; GFX900-NEXT:    v_mov_b32_e32 v5, v32293; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:162294; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]2295; GFX900-NEXT:    s_waitcnt vmcnt(0)2296; GFX900-NEXT:    s_setpc_b64 s[30:31]2297;2298; GFX90A-LABEL: v_shuffle_v4p0_v3p0__u_1_1_1:2299; GFX90A:       ; %bb.0:2300; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2301; GFX90A-NEXT:    ;;#ASMSTART2302; GFX90A-NEXT:    ; def v[0:5]2303; GFX90A-NEXT:    ;;#ASMEND2304; GFX90A-NEXT:    v_mov_b32_e32 v6, 02305; GFX90A-NEXT:    v_mov_b32_e32 v4, v22306; GFX90A-NEXT:    v_mov_b32_e32 v5, v32307; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:162308; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]2309; GFX90A-NEXT:    s_waitcnt vmcnt(0)2310; GFX90A-NEXT:    s_setpc_b64 s[30:31]2311;2312; GFX942-LABEL: v_shuffle_v4p0_v3p0__u_1_1_1:2313; GFX942:       ; %bb.0:2314; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2315; GFX942-NEXT:    ;;#ASMSTART2316; GFX942-NEXT:    ; def v[0:5]2317; GFX942-NEXT:    ;;#ASMEND2318; GFX942-NEXT:    v_mov_b32_e32 v6, 02319; GFX942-NEXT:    v_mov_b32_e32 v4, v22320; GFX942-NEXT:    v_mov_b32_e32 v5, v32321; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] offset:162322; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]2323; GFX942-NEXT:    s_waitcnt vmcnt(0)2324; GFX942-NEXT:    s_setpc_b64 s[30:31]2325  %vec0 = call <3 x ptr> asm "; def $0", "=v"()2326  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1>2327  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322328  ret void2329}2330 2331define void @v_shuffle_v4p0_v3p0__0_1_1_1(ptr addrspace(1) inreg %ptr) {2332; GFX900-LABEL: v_shuffle_v4p0_v3p0__0_1_1_1:2333; GFX900:       ; %bb.0:2334; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2335; GFX900-NEXT:    ;;#ASMSTART2336; GFX900-NEXT:    ; def v[0:5]2337; GFX900-NEXT:    ;;#ASMEND2338; GFX900-NEXT:    v_mov_b32_e32 v6, 02339; GFX900-NEXT:    v_mov_b32_e32 v4, v22340; GFX900-NEXT:    v_mov_b32_e32 v5, v32341; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:162342; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]2343; GFX900-NEXT:    s_waitcnt vmcnt(0)2344; GFX900-NEXT:    s_setpc_b64 s[30:31]2345;2346; GFX90A-LABEL: v_shuffle_v4p0_v3p0__0_1_1_1:2347; GFX90A:       ; %bb.0:2348; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2349; GFX90A-NEXT:    ;;#ASMSTART2350; GFX90A-NEXT:    ; def v[0:5]2351; GFX90A-NEXT:    ;;#ASMEND2352; GFX90A-NEXT:    v_mov_b32_e32 v6, 02353; GFX90A-NEXT:    v_mov_b32_e32 v4, v22354; GFX90A-NEXT:    v_mov_b32_e32 v5, v32355; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:162356; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]2357; GFX90A-NEXT:    s_waitcnt vmcnt(0)2358; GFX90A-NEXT:    s_setpc_b64 s[30:31]2359;2360; GFX942-LABEL: v_shuffle_v4p0_v3p0__0_1_1_1:2361; GFX942:       ; %bb.0:2362; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2363; GFX942-NEXT:    ;;#ASMSTART2364; GFX942-NEXT:    ; def v[0:5]2365; GFX942-NEXT:    ;;#ASMEND2366; GFX942-NEXT:    v_mov_b32_e32 v6, 02367; GFX942-NEXT:    v_mov_b32_e32 v4, v22368; GFX942-NEXT:    v_mov_b32_e32 v5, v32369; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] offset:162370; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]2371; GFX942-NEXT:    s_waitcnt vmcnt(0)2372; GFX942-NEXT:    s_setpc_b64 s[30:31]2373  %vec0 = call <3 x ptr> asm "; def $0", "=v"()2374  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1>2375  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322376  ret void2377}2378 2379define void @v_shuffle_v4p0_v3p0__1_1_1_1(ptr addrspace(1) inreg %ptr) {2380; GFX900-LABEL: v_shuffle_v4p0_v3p0__1_1_1_1:2381; GFX900:       ; %bb.0:2382; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2383; GFX900-NEXT:    ;;#ASMSTART2384; GFX900-NEXT:    ; def v[0:5]2385; GFX900-NEXT:    ;;#ASMEND2386; GFX900-NEXT:    v_mov_b32_e32 v6, 02387; GFX900-NEXT:    v_mov_b32_e32 v4, v22388; GFX900-NEXT:    v_mov_b32_e32 v5, v32389; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:162390; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]2391; GFX900-NEXT:    s_waitcnt vmcnt(0)2392; GFX900-NEXT:    s_setpc_b64 s[30:31]2393;2394; GFX90A-LABEL: v_shuffle_v4p0_v3p0__1_1_1_1:2395; GFX90A:       ; %bb.0:2396; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2397; GFX90A-NEXT:    ;;#ASMSTART2398; GFX90A-NEXT:    ; def v[0:5]2399; GFX90A-NEXT:    ;;#ASMEND2400; GFX90A-NEXT:    v_mov_b32_e32 v6, 02401; GFX90A-NEXT:    v_mov_b32_e32 v4, v22402; GFX90A-NEXT:    v_mov_b32_e32 v5, v32403; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:162404; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]2405; GFX90A-NEXT:    s_waitcnt vmcnt(0)2406; GFX90A-NEXT:    s_setpc_b64 s[30:31]2407;2408; GFX942-LABEL: v_shuffle_v4p0_v3p0__1_1_1_1:2409; GFX942:       ; %bb.0:2410; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2411; GFX942-NEXT:    ;;#ASMSTART2412; GFX942-NEXT:    ; def v[0:5]2413; GFX942-NEXT:    ;;#ASMEND2414; GFX942-NEXT:    v_mov_b32_e32 v6, 02415; GFX942-NEXT:    v_mov_b32_e32 v4, v22416; GFX942-NEXT:    v_mov_b32_e32 v5, v32417; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] offset:162418; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]2419; GFX942-NEXT:    s_waitcnt vmcnt(0)2420; GFX942-NEXT:    s_setpc_b64 s[30:31]2421  %vec0 = call <3 x ptr> asm "; def $0", "=v"()2422  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>2423  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322424  ret void2425}2426 2427define void @v_shuffle_v4p0_v3p0__2_1_1_1(ptr addrspace(1) inreg %ptr) {2428; GFX900-LABEL: v_shuffle_v4p0_v3p0__2_1_1_1:2429; GFX900:       ; %bb.0:2430; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2431; GFX900-NEXT:    ;;#ASMSTART2432; GFX900-NEXT:    ; def v[0:5]2433; GFX900-NEXT:    ;;#ASMEND2434; GFX900-NEXT:    v_mov_b32_e32 v8, 02435; GFX900-NEXT:    v_mov_b32_e32 v0, v22436; GFX900-NEXT:    v_mov_b32_e32 v1, v32437; GFX900-NEXT:    v_mov_b32_e32 v6, v22438; GFX900-NEXT:    v_mov_b32_e32 v7, v32439; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:162440; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]2441; GFX900-NEXT:    s_waitcnt vmcnt(0)2442; GFX900-NEXT:    s_setpc_b64 s[30:31]2443;2444; GFX90A-LABEL: v_shuffle_v4p0_v3p0__2_1_1_1:2445; GFX90A:       ; %bb.0:2446; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2447; GFX90A-NEXT:    ;;#ASMSTART2448; GFX90A-NEXT:    ; def v[0:5]2449; GFX90A-NEXT:    ;;#ASMEND2450; GFX90A-NEXT:    v_mov_b32_e32 v8, 02451; GFX90A-NEXT:    v_mov_b32_e32 v0, v22452; GFX90A-NEXT:    v_mov_b32_e32 v1, v32453; GFX90A-NEXT:    v_mov_b32_e32 v6, v22454; GFX90A-NEXT:    v_mov_b32_e32 v7, v32455; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:162456; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]2457; GFX90A-NEXT:    s_waitcnt vmcnt(0)2458; GFX90A-NEXT:    s_setpc_b64 s[30:31]2459;2460; GFX942-LABEL: v_shuffle_v4p0_v3p0__2_1_1_1:2461; GFX942:       ; %bb.0:2462; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2463; GFX942-NEXT:    ;;#ASMSTART2464; GFX942-NEXT:    ; def v[0:5]2465; GFX942-NEXT:    ;;#ASMEND2466; GFX942-NEXT:    v_mov_b32_e32 v8, 02467; GFX942-NEXT:    v_mov_b32_e32 v0, v22468; GFX942-NEXT:    v_mov_b32_e32 v1, v32469; GFX942-NEXT:    v_mov_b32_e32 v6, v22470; GFX942-NEXT:    v_mov_b32_e32 v7, v32471; GFX942-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:162472; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]2473; GFX942-NEXT:    s_waitcnt vmcnt(0)2474; GFX942-NEXT:    s_setpc_b64 s[30:31]2475  %vec0 = call <3 x ptr> asm "; def $0", "=v"()2476  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1>2477  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322478  ret void2479}2480 2481define void @v_shuffle_v4p0_v3p0__3_1_1_1(ptr addrspace(1) inreg %ptr) {2482; GFX900-LABEL: v_shuffle_v4p0_v3p0__3_1_1_1:2483; GFX900:       ; %bb.0:2484; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2485; GFX900-NEXT:    ;;#ASMSTART2486; GFX900-NEXT:    ; def v[0:5]2487; GFX900-NEXT:    ;;#ASMEND2488; GFX900-NEXT:    v_mov_b32_e32 v6, 02489; GFX900-NEXT:    v_mov_b32_e32 v4, v22490; GFX900-NEXT:    v_mov_b32_e32 v5, v32491; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:162492; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]2493; GFX900-NEXT:    s_waitcnt vmcnt(0)2494; GFX900-NEXT:    s_setpc_b64 s[30:31]2495;2496; GFX90A-LABEL: v_shuffle_v4p0_v3p0__3_1_1_1:2497; GFX90A:       ; %bb.0:2498; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2499; GFX90A-NEXT:    ;;#ASMSTART2500; GFX90A-NEXT:    ; def v[0:5]2501; GFX90A-NEXT:    ;;#ASMEND2502; GFX90A-NEXT:    v_mov_b32_e32 v6, 02503; GFX90A-NEXT:    v_mov_b32_e32 v4, v22504; GFX90A-NEXT:    v_mov_b32_e32 v5, v32505; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:162506; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]2507; GFX90A-NEXT:    s_waitcnt vmcnt(0)2508; GFX90A-NEXT:    s_setpc_b64 s[30:31]2509;2510; GFX942-LABEL: v_shuffle_v4p0_v3p0__3_1_1_1:2511; GFX942:       ; %bb.0:2512; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2513; GFX942-NEXT:    ;;#ASMSTART2514; GFX942-NEXT:    ; def v[0:5]2515; GFX942-NEXT:    ;;#ASMEND2516; GFX942-NEXT:    v_mov_b32_e32 v6, 02517; GFX942-NEXT:    v_mov_b32_e32 v4, v22518; GFX942-NEXT:    v_mov_b32_e32 v5, v32519; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] offset:162520; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]2521; GFX942-NEXT:    s_waitcnt vmcnt(0)2522; GFX942-NEXT:    s_setpc_b64 s[30:31]2523  %vec0 = call <3 x ptr> asm "; def $0", "=v"()2524  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 3, i32 1, i32 1, i32 1>2525  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322526  ret void2527}2528 2529define void @v_shuffle_v4p0_v3p0__4_1_1_1(ptr addrspace(1) inreg %ptr) {2530; GFX900-LABEL: v_shuffle_v4p0_v3p0__4_1_1_1:2531; GFX900:       ; %bb.0:2532; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2533; GFX900-NEXT:    ;;#ASMSTART2534; GFX900-NEXT:    ; def v[0:5]2535; GFX900-NEXT:    ;;#ASMEND2536; GFX900-NEXT:    ;;#ASMSTART2537; GFX900-NEXT:    ; def v[4:9]2538; GFX900-NEXT:    ;;#ASMEND2539; GFX900-NEXT:    v_mov_b32_e32 v10, 02540; GFX900-NEXT:    v_mov_b32_e32 v4, v22541; GFX900-NEXT:    v_mov_b32_e32 v5, v32542; GFX900-NEXT:    v_mov_b32_e32 v8, v22543; GFX900-NEXT:    v_mov_b32_e32 v9, v32544; GFX900-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17] offset:162545; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17]2546; GFX900-NEXT:    s_waitcnt vmcnt(0)2547; GFX900-NEXT:    s_setpc_b64 s[30:31]2548;2549; GFX90A-LABEL: v_shuffle_v4p0_v3p0__4_1_1_1:2550; GFX90A:       ; %bb.0:2551; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2552; GFX90A-NEXT:    ;;#ASMSTART2553; GFX90A-NEXT:    ; def v[0:5]2554; GFX90A-NEXT:    ;;#ASMEND2555; GFX90A-NEXT:    ;;#ASMSTART2556; GFX90A-NEXT:    ; def v[4:9]2557; GFX90A-NEXT:    ;;#ASMEND2558; GFX90A-NEXT:    v_mov_b32_e32 v10, 02559; GFX90A-NEXT:    v_mov_b32_e32 v4, v22560; GFX90A-NEXT:    v_mov_b32_e32 v5, v32561; GFX90A-NEXT:    v_mov_b32_e32 v8, v22562; GFX90A-NEXT:    v_mov_b32_e32 v9, v32563; GFX90A-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17] offset:162564; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17]2565; GFX90A-NEXT:    s_waitcnt vmcnt(0)2566; GFX90A-NEXT:    s_setpc_b64 s[30:31]2567;2568; GFX942-LABEL: v_shuffle_v4p0_v3p0__4_1_1_1:2569; GFX942:       ; %bb.0:2570; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2571; GFX942-NEXT:    ;;#ASMSTART2572; GFX942-NEXT:    ; def v[0:5]2573; GFX942-NEXT:    ;;#ASMEND2574; GFX942-NEXT:    v_mov_b32_e32 v10, 02575; GFX942-NEXT:    ;;#ASMSTART2576; GFX942-NEXT:    ; def v[4:9]2577; GFX942-NEXT:    ;;#ASMEND2578; GFX942-NEXT:    s_nop 02579; GFX942-NEXT:    v_mov_b32_e32 v4, v22580; GFX942-NEXT:    v_mov_b32_e32 v5, v32581; GFX942-NEXT:    v_mov_b32_e32 v8, v22582; GFX942-NEXT:    v_mov_b32_e32 v9, v32583; GFX942-NEXT:    global_store_dwordx4 v10, v[2:5], s[0:1] offset:162584; GFX942-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1]2585; GFX942-NEXT:    s_waitcnt vmcnt(0)2586; GFX942-NEXT:    s_setpc_b64 s[30:31]2587  %vec0 = call <3 x ptr> asm "; def $0", "=v"()2588  %vec1 = call <3 x ptr> asm "; def $0", "=v"()2589  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 4, i32 1, i32 1, i32 1>2590  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322591  ret void2592}2593 2594define void @v_shuffle_v4p0_v3p0__5_1_1_1(ptr addrspace(1) inreg %ptr) {2595; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_1_1_1:2596; GFX900:       ; %bb.0:2597; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2598; GFX900-NEXT:    ;;#ASMSTART2599; GFX900-NEXT:    ; def v[4:9]2600; GFX900-NEXT:    ;;#ASMEND2601; GFX900-NEXT:    v_mov_b32_e32 v10, 02602; GFX900-NEXT:    ;;#ASMSTART2603; GFX900-NEXT:    ; def v[0:5]2604; GFX900-NEXT:    ;;#ASMEND2605; GFX900-NEXT:    v_mov_b32_e32 v8, v62606; GFX900-NEXT:    v_mov_b32_e32 v9, v72607; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:162608; GFX900-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]2609; GFX900-NEXT:    s_waitcnt vmcnt(0)2610; GFX900-NEXT:    s_setpc_b64 s[30:31]2611;2612; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_1_1_1:2613; GFX90A:       ; %bb.0:2614; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2615; GFX90A-NEXT:    ;;#ASMSTART2616; GFX90A-NEXT:    ; def v[4:9]2617; GFX90A-NEXT:    ;;#ASMEND2618; GFX90A-NEXT:    v_mov_b32_e32 v10, 02619; GFX90A-NEXT:    ;;#ASMSTART2620; GFX90A-NEXT:    ; def v[0:5]2621; GFX90A-NEXT:    ;;#ASMEND2622; GFX90A-NEXT:    v_mov_b32_e32 v8, v62623; GFX90A-NEXT:    v_mov_b32_e32 v9, v72624; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:162625; GFX90A-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]2626; GFX90A-NEXT:    s_waitcnt vmcnt(0)2627; GFX90A-NEXT:    s_setpc_b64 s[30:31]2628;2629; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_1_1_1:2630; GFX942:       ; %bb.0:2631; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2632; GFX942-NEXT:    ;;#ASMSTART2633; GFX942-NEXT:    ; def v[4:9]2634; GFX942-NEXT:    ;;#ASMEND2635; GFX942-NEXT:    v_mov_b32_e32 v10, 02636; GFX942-NEXT:    ;;#ASMSTART2637; GFX942-NEXT:    ; def v[0:5]2638; GFX942-NEXT:    ;;#ASMEND2639; GFX942-NEXT:    v_mov_b32_e32 v8, v62640; GFX942-NEXT:    v_mov_b32_e32 v9, v72641; GFX942-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1] offset:162642; GFX942-NEXT:    global_store_dwordx4 v10, v[4:7], s[0:1]2643; GFX942-NEXT:    s_waitcnt vmcnt(0)2644; GFX942-NEXT:    s_setpc_b64 s[30:31]2645  %vec0 = call <3 x ptr> asm "; def $0", "=v"()2646  %vec1 = call <3 x ptr> asm "; def $0", "=v"()2647  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 1, i32 1, i32 1>2648  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322649  ret void2650}2651 2652define void @v_shuffle_v4p0_v3p0__5_u_1_1(ptr addrspace(1) inreg %ptr) {2653; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_u_1_1:2654; GFX900:       ; %bb.0:2655; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2656; GFX900-NEXT:    ;;#ASMSTART2657; GFX900-NEXT:    ; def v[4:9]2658; GFX900-NEXT:    ;;#ASMEND2659; GFX900-NEXT:    v_mov_b32_e32 v10, 02660; GFX900-NEXT:    ;;#ASMSTART2661; GFX900-NEXT:    ; def v[0:5]2662; GFX900-NEXT:    ;;#ASMEND2663; GFX900-NEXT:    v_mov_b32_e32 v8, v62664; GFX900-NEXT:    v_mov_b32_e32 v9, v72665; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:162666; GFX900-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]2667; GFX900-NEXT:    s_waitcnt vmcnt(0)2668; GFX900-NEXT:    s_setpc_b64 s[30:31]2669;2670; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_u_1_1:2671; GFX90A:       ; %bb.0:2672; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2673; GFX90A-NEXT:    ;;#ASMSTART2674; GFX90A-NEXT:    ; def v[4:9]2675; GFX90A-NEXT:    ;;#ASMEND2676; GFX90A-NEXT:    v_mov_b32_e32 v10, 02677; GFX90A-NEXT:    ;;#ASMSTART2678; GFX90A-NEXT:    ; def v[0:5]2679; GFX90A-NEXT:    ;;#ASMEND2680; GFX90A-NEXT:    v_mov_b32_e32 v8, v62681; GFX90A-NEXT:    v_mov_b32_e32 v9, v72682; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:162683; GFX90A-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]2684; GFX90A-NEXT:    s_waitcnt vmcnt(0)2685; GFX90A-NEXT:    s_setpc_b64 s[30:31]2686;2687; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_u_1_1:2688; GFX942:       ; %bb.0:2689; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2690; GFX942-NEXT:    ;;#ASMSTART2691; GFX942-NEXT:    ; def v[4:9]2692; GFX942-NEXT:    ;;#ASMEND2693; GFX942-NEXT:    v_mov_b32_e32 v10, 02694; GFX942-NEXT:    ;;#ASMSTART2695; GFX942-NEXT:    ; def v[0:5]2696; GFX942-NEXT:    ;;#ASMEND2697; GFX942-NEXT:    v_mov_b32_e32 v8, v62698; GFX942-NEXT:    v_mov_b32_e32 v9, v72699; GFX942-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1] offset:162700; GFX942-NEXT:    global_store_dwordx4 v10, v[4:7], s[0:1]2701; GFX942-NEXT:    s_waitcnt vmcnt(0)2702; GFX942-NEXT:    s_setpc_b64 s[30:31]2703  %vec0 = call <3 x ptr> asm "; def $0", "=v"()2704  %vec1 = call <3 x ptr> asm "; def $0", "=v"()2705  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 poison, i32 1, i32 1>2706  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322707  ret void2708}2709 2710define void @v_shuffle_v4p0_v3p0__5_0_1_1(ptr addrspace(1) inreg %ptr) {2711; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_0_1_1:2712; GFX900:       ; %bb.0:2713; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2714; GFX900-NEXT:    ;;#ASMSTART2715; GFX900-NEXT:    ; def v[6:11]2716; GFX900-NEXT:    ;;#ASMEND2717; GFX900-NEXT:    v_mov_b32_e32 v12, 02718; GFX900-NEXT:    v_mov_b32_e32 v10, v82719; GFX900-NEXT:    v_mov_b32_e32 v11, v92720; GFX900-NEXT:    ;;#ASMSTART2721; GFX900-NEXT:    ; def v[0:5]2722; GFX900-NEXT:    ;;#ASMEND2723; GFX900-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17] offset:162724; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]2725; GFX900-NEXT:    s_waitcnt vmcnt(0)2726; GFX900-NEXT:    s_setpc_b64 s[30:31]2727;2728; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_0_1_1:2729; GFX90A:       ; %bb.0:2730; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2731; GFX90A-NEXT:    ;;#ASMSTART2732; GFX90A-NEXT:    ; def v[6:11]2733; GFX90A-NEXT:    ;;#ASMEND2734; GFX90A-NEXT:    v_mov_b32_e32 v12, 02735; GFX90A-NEXT:    v_mov_b32_e32 v10, v82736; GFX90A-NEXT:    v_mov_b32_e32 v11, v92737; GFX90A-NEXT:    ;;#ASMSTART2738; GFX90A-NEXT:    ; def v[0:5]2739; GFX90A-NEXT:    ;;#ASMEND2740; GFX90A-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17] offset:162741; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]2742; GFX90A-NEXT:    s_waitcnt vmcnt(0)2743; GFX90A-NEXT:    s_setpc_b64 s[30:31]2744;2745; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_0_1_1:2746; GFX942:       ; %bb.0:2747; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2748; GFX942-NEXT:    ;;#ASMSTART2749; GFX942-NEXT:    ; def v[6:11]2750; GFX942-NEXT:    ;;#ASMEND2751; GFX942-NEXT:    v_mov_b32_e32 v12, 02752; GFX942-NEXT:    v_mov_b32_e32 v10, v82753; GFX942-NEXT:    v_mov_b32_e32 v11, v92754; GFX942-NEXT:    ;;#ASMSTART2755; GFX942-NEXT:    ; def v[0:5]2756; GFX942-NEXT:    ;;#ASMEND2757; GFX942-NEXT:    global_store_dwordx4 v12, v[8:11], s[0:1] offset:162758; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1]2759; GFX942-NEXT:    s_waitcnt vmcnt(0)2760; GFX942-NEXT:    s_setpc_b64 s[30:31]2761  %vec0 = call <3 x ptr> asm "; def $0", "=v"()2762  %vec1 = call <3 x ptr> asm "; def $0", "=v"()2763  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 0, i32 1, i32 1>2764  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322765  ret void2766}2767 2768define void @v_shuffle_v4p0_v3p0__5_2_1_1(ptr addrspace(1) inreg %ptr) {2769; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_2_1_1:2770; GFX900:       ; %bb.0:2771; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2772; GFX900-NEXT:    ;;#ASMSTART2773; GFX900-NEXT:    ; def v[6:11]2774; GFX900-NEXT:    ;;#ASMEND2775; GFX900-NEXT:    v_mov_b32_e32 v12, 02776; GFX900-NEXT:    v_mov_b32_e32 v6, v82777; GFX900-NEXT:    v_mov_b32_e32 v7, v92778; GFX900-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17] offset:162779; GFX900-NEXT:    ;;#ASMSTART2780; GFX900-NEXT:    ; def v[0:5]2781; GFX900-NEXT:    ;;#ASMEND2782; GFX900-NEXT:    s_nop 02783; GFX900-NEXT:    v_mov_b32_e32 v6, v102784; GFX900-NEXT:    v_mov_b32_e32 v7, v112785; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]2786; GFX900-NEXT:    s_waitcnt vmcnt(0)2787; GFX900-NEXT:    s_setpc_b64 s[30:31]2788;2789; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_2_1_1:2790; GFX90A:       ; %bb.0:2791; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2792; GFX90A-NEXT:    ;;#ASMSTART2793; GFX90A-NEXT:    ; def v[6:11]2794; GFX90A-NEXT:    ;;#ASMEND2795; GFX90A-NEXT:    v_mov_b32_e32 v12, 02796; GFX90A-NEXT:    v_mov_b32_e32 v6, v82797; GFX90A-NEXT:    v_mov_b32_e32 v7, v92798; GFX90A-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17] offset:162799; GFX90A-NEXT:    ;;#ASMSTART2800; GFX90A-NEXT:    ; def v[0:5]2801; GFX90A-NEXT:    ;;#ASMEND2802; GFX90A-NEXT:    s_nop 02803; GFX90A-NEXT:    v_mov_b32_e32 v6, v102804; GFX90A-NEXT:    v_mov_b32_e32 v7, v112805; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]2806; GFX90A-NEXT:    s_waitcnt vmcnt(0)2807; GFX90A-NEXT:    s_setpc_b64 s[30:31]2808;2809; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_2_1_1:2810; GFX942:       ; %bb.0:2811; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2812; GFX942-NEXT:    ;;#ASMSTART2813; GFX942-NEXT:    ; def v[6:11]2814; GFX942-NEXT:    ;;#ASMEND2815; GFX942-NEXT:    v_mov_b32_e32 v12, 02816; GFX942-NEXT:    v_mov_b32_e32 v6, v82817; GFX942-NEXT:    v_mov_b32_e32 v7, v92818; GFX942-NEXT:    global_store_dwordx4 v12, v[6:9], s[0:1] offset:162819; GFX942-NEXT:    ;;#ASMSTART2820; GFX942-NEXT:    ; def v[0:5]2821; GFX942-NEXT:    ;;#ASMEND2822; GFX942-NEXT:    s_nop 12823; GFX942-NEXT:    v_mov_b32_e32 v6, v102824; GFX942-NEXT:    v_mov_b32_e32 v7, v112825; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1]2826; GFX942-NEXT:    s_waitcnt vmcnt(0)2827; GFX942-NEXT:    s_setpc_b64 s[30:31]2828  %vec0 = call <3 x ptr> asm "; def $0", "=v"()2829  %vec1 = call <3 x ptr> asm "; def $0", "=v"()2830  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 2, i32 1, i32 1>2831  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322832  ret void2833}2834 2835define void @v_shuffle_v4p0_v3p0__5_3_1_1(ptr addrspace(1) inreg %ptr) {2836; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_3_1_1:2837; GFX900:       ; %bb.0:2838; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2839; GFX900-NEXT:    ;;#ASMSTART2840; GFX900-NEXT:    ; def v[4:9]2841; GFX900-NEXT:    ;;#ASMEND2842; GFX900-NEXT:    v_mov_b32_e32 v10, 02843; GFX900-NEXT:    v_mov_b32_e32 v8, v62844; GFX900-NEXT:    v_mov_b32_e32 v9, v72845; GFX900-NEXT:    ;;#ASMSTART2846; GFX900-NEXT:    ; def v[0:5]2847; GFX900-NEXT:    ;;#ASMEND2848; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:162849; GFX900-NEXT:    s_nop 02850; GFX900-NEXT:    v_mov_b32_e32 v6, v02851; GFX900-NEXT:    v_mov_b32_e32 v7, v12852; GFX900-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]2853; GFX900-NEXT:    s_waitcnt vmcnt(0)2854; GFX900-NEXT:    s_setpc_b64 s[30:31]2855;2856; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_3_1_1:2857; GFX90A:       ; %bb.0:2858; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2859; GFX90A-NEXT:    ;;#ASMSTART2860; GFX90A-NEXT:    ; def v[4:9]2861; GFX90A-NEXT:    ;;#ASMEND2862; GFX90A-NEXT:    v_mov_b32_e32 v10, 02863; GFX90A-NEXT:    v_mov_b32_e32 v8, v62864; GFX90A-NEXT:    v_mov_b32_e32 v9, v72865; GFX90A-NEXT:    ;;#ASMSTART2866; GFX90A-NEXT:    ; def v[0:5]2867; GFX90A-NEXT:    ;;#ASMEND2868; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:162869; GFX90A-NEXT:    s_nop 02870; GFX90A-NEXT:    v_mov_b32_e32 v6, v02871; GFX90A-NEXT:    v_mov_b32_e32 v7, v12872; GFX90A-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]2873; GFX90A-NEXT:    s_waitcnt vmcnt(0)2874; GFX90A-NEXT:    s_setpc_b64 s[30:31]2875;2876; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_3_1_1:2877; GFX942:       ; %bb.0:2878; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2879; GFX942-NEXT:    ;;#ASMSTART2880; GFX942-NEXT:    ; def v[4:9]2881; GFX942-NEXT:    ;;#ASMEND2882; GFX942-NEXT:    v_mov_b32_e32 v10, 02883; GFX942-NEXT:    v_mov_b32_e32 v8, v62884; GFX942-NEXT:    v_mov_b32_e32 v9, v72885; GFX942-NEXT:    ;;#ASMSTART2886; GFX942-NEXT:    ; def v[0:5]2887; GFX942-NEXT:    ;;#ASMEND2888; GFX942-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1] offset:162889; GFX942-NEXT:    s_nop 12890; GFX942-NEXT:    v_mov_b32_e32 v6, v02891; GFX942-NEXT:    v_mov_b32_e32 v7, v12892; GFX942-NEXT:    global_store_dwordx4 v10, v[4:7], s[0:1]2893; GFX942-NEXT:    s_waitcnt vmcnt(0)2894; GFX942-NEXT:    s_setpc_b64 s[30:31]2895  %vec0 = call <3 x ptr> asm "; def $0", "=v"()2896  %vec1 = call <3 x ptr> asm "; def $0", "=v"()2897  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 3, i32 1, i32 1>2898  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322899  ret void2900}2901 2902define void @v_shuffle_v4p0_v3p0__5_4_1_1(ptr addrspace(1) inreg %ptr) {2903; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_4_1_1:2904; GFX900:       ; %bb.0:2905; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2906; GFX900-NEXT:    ;;#ASMSTART2907; GFX900-NEXT:    ; def v[4:9]2908; GFX900-NEXT:    ;;#ASMEND2909; GFX900-NEXT:    v_mov_b32_e32 v10, 02910; GFX900-NEXT:    v_mov_b32_e32 v8, v62911; GFX900-NEXT:    v_mov_b32_e32 v9, v72912; GFX900-NEXT:    ;;#ASMSTART2913; GFX900-NEXT:    ; def v[0:5]2914; GFX900-NEXT:    ;;#ASMEND2915; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:162916; GFX900-NEXT:    s_nop 02917; GFX900-NEXT:    v_mov_b32_e32 v6, v22918; GFX900-NEXT:    v_mov_b32_e32 v7, v32919; GFX900-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]2920; GFX900-NEXT:    s_waitcnt vmcnt(0)2921; GFX900-NEXT:    s_setpc_b64 s[30:31]2922;2923; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_4_1_1:2924; GFX90A:       ; %bb.0:2925; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2926; GFX90A-NEXT:    ;;#ASMSTART2927; GFX90A-NEXT:    ; def v[4:9]2928; GFX90A-NEXT:    ;;#ASMEND2929; GFX90A-NEXT:    v_mov_b32_e32 v10, 02930; GFX90A-NEXT:    v_mov_b32_e32 v8, v62931; GFX90A-NEXT:    v_mov_b32_e32 v9, v72932; GFX90A-NEXT:    ;;#ASMSTART2933; GFX90A-NEXT:    ; def v[0:5]2934; GFX90A-NEXT:    ;;#ASMEND2935; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:162936; GFX90A-NEXT:    s_nop 02937; GFX90A-NEXT:    v_mov_b32_e32 v6, v22938; GFX90A-NEXT:    v_mov_b32_e32 v7, v32939; GFX90A-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]2940; GFX90A-NEXT:    s_waitcnt vmcnt(0)2941; GFX90A-NEXT:    s_setpc_b64 s[30:31]2942;2943; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_4_1_1:2944; GFX942:       ; %bb.0:2945; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2946; GFX942-NEXT:    ;;#ASMSTART2947; GFX942-NEXT:    ; def v[4:9]2948; GFX942-NEXT:    ;;#ASMEND2949; GFX942-NEXT:    v_mov_b32_e32 v10, 02950; GFX942-NEXT:    v_mov_b32_e32 v8, v62951; GFX942-NEXT:    v_mov_b32_e32 v9, v72952; GFX942-NEXT:    ;;#ASMSTART2953; GFX942-NEXT:    ; def v[0:5]2954; GFX942-NEXT:    ;;#ASMEND2955; GFX942-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1] offset:162956; GFX942-NEXT:    s_nop 12957; GFX942-NEXT:    v_mov_b32_e32 v6, v22958; GFX942-NEXT:    v_mov_b32_e32 v7, v32959; GFX942-NEXT:    global_store_dwordx4 v10, v[4:7], s[0:1]2960; GFX942-NEXT:    s_waitcnt vmcnt(0)2961; GFX942-NEXT:    s_setpc_b64 s[30:31]2962  %vec0 = call <3 x ptr> asm "; def $0", "=v"()2963  %vec1 = call <3 x ptr> asm "; def $0", "=v"()2964  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 4, i32 1, i32 1>2965  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322966  ret void2967}2968 2969define void @v_shuffle_v4p0_v3p0__5_5_1_1(ptr addrspace(1) inreg %ptr) {2970; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_1_1:2971; GFX900:       ; %bb.0:2972; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2973; GFX900-NEXT:    ;;#ASMSTART2974; GFX900-NEXT:    ; def v[4:9]2975; GFX900-NEXT:    ;;#ASMEND2976; GFX900-NEXT:    v_mov_b32_e32 v10, 02977; GFX900-NEXT:    v_mov_b32_e32 v8, v62978; GFX900-NEXT:    v_mov_b32_e32 v9, v72979; GFX900-NEXT:    ;;#ASMSTART2980; GFX900-NEXT:    ; def v[0:5]2981; GFX900-NEXT:    ;;#ASMEND2982; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:162983; GFX900-NEXT:    s_nop 02984; GFX900-NEXT:    v_mov_b32_e32 v6, v42985; GFX900-NEXT:    v_mov_b32_e32 v7, v52986; GFX900-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]2987; GFX900-NEXT:    s_waitcnt vmcnt(0)2988; GFX900-NEXT:    s_setpc_b64 s[30:31]2989;2990; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_1_1:2991; GFX90A:       ; %bb.0:2992; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2993; GFX90A-NEXT:    ;;#ASMSTART2994; GFX90A-NEXT:    ; def v[4:9]2995; GFX90A-NEXT:    ;;#ASMEND2996; GFX90A-NEXT:    v_mov_b32_e32 v10, 02997; GFX90A-NEXT:    v_mov_b32_e32 v8, v62998; GFX90A-NEXT:    v_mov_b32_e32 v9, v72999; GFX90A-NEXT:    ;;#ASMSTART3000; GFX90A-NEXT:    ; def v[0:5]3001; GFX90A-NEXT:    ;;#ASMEND3002; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:163003; GFX90A-NEXT:    s_nop 03004; GFX90A-NEXT:    v_mov_b32_e32 v6, v43005; GFX90A-NEXT:    v_mov_b32_e32 v7, v53006; GFX90A-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]3007; GFX90A-NEXT:    s_waitcnt vmcnt(0)3008; GFX90A-NEXT:    s_setpc_b64 s[30:31]3009;3010; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_1_1:3011; GFX942:       ; %bb.0:3012; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3013; GFX942-NEXT:    ;;#ASMSTART3014; GFX942-NEXT:    ; def v[4:9]3015; GFX942-NEXT:    ;;#ASMEND3016; GFX942-NEXT:    v_mov_b32_e32 v10, 03017; GFX942-NEXT:    v_mov_b32_e32 v8, v63018; GFX942-NEXT:    v_mov_b32_e32 v9, v73019; GFX942-NEXT:    ;;#ASMSTART3020; GFX942-NEXT:    ; def v[0:5]3021; GFX942-NEXT:    ;;#ASMEND3022; GFX942-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1] offset:163023; GFX942-NEXT:    s_nop 13024; GFX942-NEXT:    v_mov_b32_e32 v6, v43025; GFX942-NEXT:    v_mov_b32_e32 v7, v53026; GFX942-NEXT:    global_store_dwordx4 v10, v[4:7], s[0:1]3027; GFX942-NEXT:    s_waitcnt vmcnt(0)3028; GFX942-NEXT:    s_setpc_b64 s[30:31]3029  %vec0 = call <3 x ptr> asm "; def $0", "=v"()3030  %vec1 = call <3 x ptr> asm "; def $0", "=v"()3031  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 1>3032  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 323033  ret void3034}3035 3036define void @v_shuffle_v4p0_v3p0__5_5_u_1(ptr addrspace(1) inreg %ptr) {3037; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_u_1:3038; GFX900:       ; %bb.0:3039; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3040; GFX900-NEXT:    v_mov_b32_e32 v10, 03041; GFX900-NEXT:    ;;#ASMSTART3042; GFX900-NEXT:    ; def v[4:9]3043; GFX900-NEXT:    ;;#ASMEND3044; GFX900-NEXT:    ;;#ASMSTART3045; GFX900-NEXT:    ; def v[0:5]3046; GFX900-NEXT:    ;;#ASMEND3047; GFX900-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17] offset:163048; GFX900-NEXT:    s_nop 03049; GFX900-NEXT:    v_mov_b32_e32 v6, v43050; GFX900-NEXT:    v_mov_b32_e32 v7, v53051; GFX900-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]3052; GFX900-NEXT:    s_waitcnt vmcnt(0)3053; GFX900-NEXT:    s_setpc_b64 s[30:31]3054;3055; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_u_1:3056; GFX90A:       ; %bb.0:3057; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3058; GFX90A-NEXT:    v_mov_b32_e32 v10, 03059; GFX90A-NEXT:    ;;#ASMSTART3060; GFX90A-NEXT:    ; def v[4:9]3061; GFX90A-NEXT:    ;;#ASMEND3062; GFX90A-NEXT:    ;;#ASMSTART3063; GFX90A-NEXT:    ; def v[0:5]3064; GFX90A-NEXT:    ;;#ASMEND3065; GFX90A-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17] offset:163066; GFX90A-NEXT:    s_nop 03067; GFX90A-NEXT:    v_mov_b32_e32 v6, v43068; GFX90A-NEXT:    v_mov_b32_e32 v7, v53069; GFX90A-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]3070; GFX90A-NEXT:    s_waitcnt vmcnt(0)3071; GFX90A-NEXT:    s_setpc_b64 s[30:31]3072;3073; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_u_1:3074; GFX942:       ; %bb.0:3075; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3076; GFX942-NEXT:    v_mov_b32_e32 v10, 03077; GFX942-NEXT:    ;;#ASMSTART3078; GFX942-NEXT:    ; def v[4:9]3079; GFX942-NEXT:    ;;#ASMEND3080; GFX942-NEXT:    s_nop 03081; GFX942-NEXT:    ;;#ASMSTART3082; GFX942-NEXT:    ; def v[0:5]3083; GFX942-NEXT:    ;;#ASMEND3084; GFX942-NEXT:    global_store_dwordx4 v10, v[4:7], s[0:1] offset:163085; GFX942-NEXT:    s_nop 13086; GFX942-NEXT:    v_mov_b32_e32 v6, v43087; GFX942-NEXT:    v_mov_b32_e32 v7, v53088; GFX942-NEXT:    global_store_dwordx4 v10, v[4:7], s[0:1]3089; GFX942-NEXT:    s_waitcnt vmcnt(0)3090; GFX942-NEXT:    s_setpc_b64 s[30:31]3091  %vec0 = call <3 x ptr> asm "; def $0", "=v"()3092  %vec1 = call <3 x ptr> asm "; def $0", "=v"()3093  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 1>3094  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 323095  ret void3096}3097 3098define void @v_shuffle_v4p0_v3p0__5_5_0_1(ptr addrspace(1) inreg %ptr) {3099; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_0_1:3100; GFX900:       ; %bb.0:3101; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3102; GFX900-NEXT:    v_mov_b32_e32 v12, 03103; GFX900-NEXT:    ;;#ASMSTART3104; GFX900-NEXT:    ; def v[6:11]3105; GFX900-NEXT:    ;;#ASMEND3106; GFX900-NEXT:    ;;#ASMSTART3107; GFX900-NEXT:    ; def v[0:5]3108; GFX900-NEXT:    ;;#ASMEND3109; GFX900-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17] offset:163110; GFX900-NEXT:    s_nop 03111; GFX900-NEXT:    v_mov_b32_e32 v6, v43112; GFX900-NEXT:    v_mov_b32_e32 v7, v53113; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]3114; GFX900-NEXT:    s_waitcnt vmcnt(0)3115; GFX900-NEXT:    s_setpc_b64 s[30:31]3116;3117; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_0_1:3118; GFX90A:       ; %bb.0:3119; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3120; GFX90A-NEXT:    v_mov_b32_e32 v12, 03121; GFX90A-NEXT:    ;;#ASMSTART3122; GFX90A-NEXT:    ; def v[6:11]3123; GFX90A-NEXT:    ;;#ASMEND3124; GFX90A-NEXT:    ;;#ASMSTART3125; GFX90A-NEXT:    ; def v[0:5]3126; GFX90A-NEXT:    ;;#ASMEND3127; GFX90A-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17] offset:163128; GFX90A-NEXT:    s_nop 03129; GFX90A-NEXT:    v_mov_b32_e32 v6, v43130; GFX90A-NEXT:    v_mov_b32_e32 v7, v53131; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]3132; GFX90A-NEXT:    s_waitcnt vmcnt(0)3133; GFX90A-NEXT:    s_setpc_b64 s[30:31]3134;3135; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_0_1:3136; GFX942:       ; %bb.0:3137; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3138; GFX942-NEXT:    v_mov_b32_e32 v12, 03139; GFX942-NEXT:    ;;#ASMSTART3140; GFX942-NEXT:    ; def v[6:11]3141; GFX942-NEXT:    ;;#ASMEND3142; GFX942-NEXT:    ;;#ASMSTART3143; GFX942-NEXT:    ; def v[0:5]3144; GFX942-NEXT:    ;;#ASMEND3145; GFX942-NEXT:    global_store_dwordx4 v12, v[6:9], s[0:1] offset:163146; GFX942-NEXT:    s_nop 13147; GFX942-NEXT:    v_mov_b32_e32 v6, v43148; GFX942-NEXT:    v_mov_b32_e32 v7, v53149; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1]3150; GFX942-NEXT:    s_waitcnt vmcnt(0)3151; GFX942-NEXT:    s_setpc_b64 s[30:31]3152  %vec0 = call <3 x ptr> asm "; def $0", "=v"()3153  %vec1 = call <3 x ptr> asm "; def $0", "=v"()3154  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 1>3155  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 323156  ret void3157}3158 3159define void @v_shuffle_v4p0_v3p0__5_5_2_1(ptr addrspace(1) inreg %ptr) {3160; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_2_1:3161; GFX900:       ; %bb.0:3162; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3163; GFX900-NEXT:    ;;#ASMSTART3164; GFX900-NEXT:    ; def v[6:11]3165; GFX900-NEXT:    ;;#ASMEND3166; GFX900-NEXT:    v_mov_b32_e32 v14, 03167; GFX900-NEXT:    ;;#ASMSTART3168; GFX900-NEXT:    ; def v[0:5]3169; GFX900-NEXT:    ;;#ASMEND3170; GFX900-NEXT:    v_mov_b32_e32 v6, v23171; GFX900-NEXT:    v_mov_b32_e32 v7, v33172; GFX900-NEXT:    v_mov_b32_e32 v12, v103173; GFX900-NEXT:    v_mov_b32_e32 v13, v113174; GFX900-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17] offset:163175; GFX900-NEXT:    global_store_dwordx4 v14, v[10:13], s[16:17]3176; GFX900-NEXT:    s_waitcnt vmcnt(0)3177; GFX900-NEXT:    s_setpc_b64 s[30:31]3178;3179; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_2_1:3180; GFX90A:       ; %bb.0:3181; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3182; GFX90A-NEXT:    ;;#ASMSTART3183; GFX90A-NEXT:    ; def v[6:11]3184; GFX90A-NEXT:    ;;#ASMEND3185; GFX90A-NEXT:    v_mov_b32_e32 v14, 03186; GFX90A-NEXT:    ;;#ASMSTART3187; GFX90A-NEXT:    ; def v[0:5]3188; GFX90A-NEXT:    ;;#ASMEND3189; GFX90A-NEXT:    v_mov_b32_e32 v6, v23190; GFX90A-NEXT:    v_mov_b32_e32 v7, v33191; GFX90A-NEXT:    v_mov_b32_e32 v12, v103192; GFX90A-NEXT:    v_mov_b32_e32 v13, v113193; GFX90A-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17] offset:163194; GFX90A-NEXT:    global_store_dwordx4 v14, v[10:13], s[16:17]3195; GFX90A-NEXT:    s_waitcnt vmcnt(0)3196; GFX90A-NEXT:    s_setpc_b64 s[30:31]3197;3198; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_2_1:3199; GFX942:       ; %bb.0:3200; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3201; GFX942-NEXT:    ;;#ASMSTART3202; GFX942-NEXT:    ; def v[6:11]3203; GFX942-NEXT:    ;;#ASMEND3204; GFX942-NEXT:    v_mov_b32_e32 v14, 03205; GFX942-NEXT:    ;;#ASMSTART3206; GFX942-NEXT:    ; def v[0:5]3207; GFX942-NEXT:    ;;#ASMEND3208; GFX942-NEXT:    v_mov_b32_e32 v12, v103209; GFX942-NEXT:    v_mov_b32_e32 v6, v23210; GFX942-NEXT:    v_mov_b32_e32 v7, v33211; GFX942-NEXT:    v_mov_b32_e32 v13, v113212; GFX942-NEXT:    global_store_dwordx4 v14, v[4:7], s[0:1] offset:163213; GFX942-NEXT:    global_store_dwordx4 v14, v[10:13], s[0:1]3214; GFX942-NEXT:    s_waitcnt vmcnt(0)3215; GFX942-NEXT:    s_setpc_b64 s[30:31]3216  %vec0 = call <3 x ptr> asm "; def $0", "=v"()3217  %vec1 = call <3 x ptr> asm "; def $0", "=v"()3218  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 1>3219  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 323220  ret void3221}3222 3223define void @v_shuffle_v4p0_v3p0__5_5_3_1(ptr addrspace(1) inreg %ptr) {3224; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_3_1:3225; GFX900:       ; %bb.0:3226; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3227; GFX900-NEXT:    ;;#ASMSTART3228; GFX900-NEXT:    ; def v[4:9]3229; GFX900-NEXT:    ;;#ASMEND3230; GFX900-NEXT:    ;;#ASMSTART3231; GFX900-NEXT:    ; def v[0:5]3232; GFX900-NEXT:    ;;#ASMEND3233; GFX900-NEXT:    v_mov_b32_e32 v10, 03234; GFX900-NEXT:    v_mov_b32_e32 v2, v63235; GFX900-NEXT:    v_mov_b32_e32 v3, v73236; GFX900-NEXT:    v_mov_b32_e32 v6, v43237; GFX900-NEXT:    v_mov_b32_e32 v7, v53238; GFX900-NEXT:    global_store_dwordx4 v10, v[0:3], s[16:17] offset:163239; GFX900-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]3240; GFX900-NEXT:    s_waitcnt vmcnt(0)3241; GFX900-NEXT:    s_setpc_b64 s[30:31]3242;3243; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_3_1:3244; GFX90A:       ; %bb.0:3245; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3246; GFX90A-NEXT:    ;;#ASMSTART3247; GFX90A-NEXT:    ; def v[4:9]3248; GFX90A-NEXT:    ;;#ASMEND3249; GFX90A-NEXT:    ;;#ASMSTART3250; GFX90A-NEXT:    ; def v[0:5]3251; GFX90A-NEXT:    ;;#ASMEND3252; GFX90A-NEXT:    v_mov_b32_e32 v10, 03253; GFX90A-NEXT:    v_mov_b32_e32 v2, v63254; GFX90A-NEXT:    v_mov_b32_e32 v3, v73255; GFX90A-NEXT:    v_mov_b32_e32 v6, v43256; GFX90A-NEXT:    v_mov_b32_e32 v7, v53257; GFX90A-NEXT:    global_store_dwordx4 v10, v[0:3], s[16:17] offset:163258; GFX90A-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]3259; GFX90A-NEXT:    s_waitcnt vmcnt(0)3260; GFX90A-NEXT:    s_setpc_b64 s[30:31]3261;3262; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_3_1:3263; GFX942:       ; %bb.0:3264; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3265; GFX942-NEXT:    ;;#ASMSTART3266; GFX942-NEXT:    ; def v[4:9]3267; GFX942-NEXT:    ;;#ASMEND3268; GFX942-NEXT:    v_mov_b32_e32 v10, 03269; GFX942-NEXT:    ;;#ASMSTART3270; GFX942-NEXT:    ; def v[0:5]3271; GFX942-NEXT:    ;;#ASMEND3272; GFX942-NEXT:    s_nop 03273; GFX942-NEXT:    v_mov_b32_e32 v2, v63274; GFX942-NEXT:    v_mov_b32_e32 v3, v73275; GFX942-NEXT:    v_mov_b32_e32 v6, v43276; GFX942-NEXT:    v_mov_b32_e32 v7, v53277; GFX942-NEXT:    global_store_dwordx4 v10, v[0:3], s[0:1] offset:163278; GFX942-NEXT:    global_store_dwordx4 v10, v[4:7], s[0:1]3279; GFX942-NEXT:    s_waitcnt vmcnt(0)3280; GFX942-NEXT:    s_setpc_b64 s[30:31]3281  %vec0 = call <3 x ptr> asm "; def $0", "=v"()3282  %vec1 = call <3 x ptr> asm "; def $0", "=v"()3283  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 1>3284  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 323285  ret void3286}3287 3288define void @v_shuffle_v4p0_v3p0__5_5_4_1(ptr addrspace(1) inreg %ptr) {3289; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_4_1:3290; GFX900:       ; %bb.0:3291; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3292; GFX900-NEXT:    ;;#ASMSTART3293; GFX900-NEXT:    ; def v[6:11]3294; GFX900-NEXT:    ;;#ASMEND3295; GFX900-NEXT:    v_mov_b32_e32 v12, 03296; GFX900-NEXT:    ;;#ASMSTART3297; GFX900-NEXT:    ; def v[0:5]3298; GFX900-NEXT:    ;;#ASMEND3299; GFX900-NEXT:    v_mov_b32_e32 v6, v23300; GFX900-NEXT:    v_mov_b32_e32 v7, v33301; GFX900-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17] offset:163302; GFX900-NEXT:    s_nop 03303; GFX900-NEXT:    v_mov_b32_e32 v6, v43304; GFX900-NEXT:    v_mov_b32_e32 v7, v53305; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]3306; GFX900-NEXT:    s_waitcnt vmcnt(0)3307; GFX900-NEXT:    s_setpc_b64 s[30:31]3308;3309; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_4_1:3310; GFX90A:       ; %bb.0:3311; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3312; GFX90A-NEXT:    ;;#ASMSTART3313; GFX90A-NEXT:    ; def v[6:11]3314; GFX90A-NEXT:    ;;#ASMEND3315; GFX90A-NEXT:    v_mov_b32_e32 v12, 03316; GFX90A-NEXT:    ;;#ASMSTART3317; GFX90A-NEXT:    ; def v[0:5]3318; GFX90A-NEXT:    ;;#ASMEND3319; GFX90A-NEXT:    v_mov_b32_e32 v6, v23320; GFX90A-NEXT:    v_mov_b32_e32 v7, v33321; GFX90A-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17] offset:163322; GFX90A-NEXT:    s_nop 03323; GFX90A-NEXT:    v_mov_b32_e32 v6, v43324; GFX90A-NEXT:    v_mov_b32_e32 v7, v53325; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]3326; GFX90A-NEXT:    s_waitcnt vmcnt(0)3327; GFX90A-NEXT:    s_setpc_b64 s[30:31]3328;3329; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_4_1:3330; GFX942:       ; %bb.0:3331; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3332; GFX942-NEXT:    ;;#ASMSTART3333; GFX942-NEXT:    ; def v[6:11]3334; GFX942-NEXT:    ;;#ASMEND3335; GFX942-NEXT:    v_mov_b32_e32 v12, 03336; GFX942-NEXT:    ;;#ASMSTART3337; GFX942-NEXT:    ; def v[0:5]3338; GFX942-NEXT:    ;;#ASMEND3339; GFX942-NEXT:    s_nop 03340; GFX942-NEXT:    v_mov_b32_e32 v6, v23341; GFX942-NEXT:    v_mov_b32_e32 v7, v33342; GFX942-NEXT:    global_store_dwordx4 v12, v[6:9], s[0:1] offset:163343; GFX942-NEXT:    s_nop 13344; GFX942-NEXT:    v_mov_b32_e32 v6, v43345; GFX942-NEXT:    v_mov_b32_e32 v7, v53346; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1]3347; GFX942-NEXT:    s_waitcnt vmcnt(0)3348; GFX942-NEXT:    s_setpc_b64 s[30:31]3349  %vec0 = call <3 x ptr> asm "; def $0", "=v"()3350  %vec1 = call <3 x ptr> asm "; def $0", "=v"()3351  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 1>3352  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 323353  ret void3354}3355 3356define void @v_shuffle_v4p0_v3p0__u_2_2_2(ptr addrspace(1) inreg %ptr) {3357; GFX900-LABEL: v_shuffle_v4p0_v3p0__u_2_2_2:3358; GFX900:       ; %bb.0:3359; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3360; GFX900-NEXT:    v_mov_b32_e32 v8, 03361; GFX900-NEXT:    ;;#ASMSTART3362; GFX900-NEXT:    ; def v[0:5]3363; GFX900-NEXT:    ;;#ASMEND3364; GFX900-NEXT:    v_mov_b32_e32 v6, v43365; GFX900-NEXT:    v_mov_b32_e32 v7, v53366; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:163367; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]3368; GFX900-NEXT:    s_waitcnt vmcnt(0)3369; GFX900-NEXT:    s_setpc_b64 s[30:31]3370;3371; GFX90A-LABEL: v_shuffle_v4p0_v3p0__u_2_2_2:3372; GFX90A:       ; %bb.0:3373; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3374; GFX90A-NEXT:    v_mov_b32_e32 v8, 03375; GFX90A-NEXT:    ;;#ASMSTART3376; GFX90A-NEXT:    ; def v[0:5]3377; GFX90A-NEXT:    ;;#ASMEND3378; GFX90A-NEXT:    v_mov_b32_e32 v6, v43379; GFX90A-NEXT:    v_mov_b32_e32 v7, v53380; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:163381; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]3382; GFX90A-NEXT:    s_waitcnt vmcnt(0)3383; GFX90A-NEXT:    s_setpc_b64 s[30:31]3384;3385; GFX942-LABEL: v_shuffle_v4p0_v3p0__u_2_2_2:3386; GFX942:       ; %bb.0:3387; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3388; GFX942-NEXT:    v_mov_b32_e32 v8, 03389; GFX942-NEXT:    ;;#ASMSTART3390; GFX942-NEXT:    ; def v[0:5]3391; GFX942-NEXT:    ;;#ASMEND3392; GFX942-NEXT:    s_nop 03393; GFX942-NEXT:    v_mov_b32_e32 v6, v43394; GFX942-NEXT:    v_mov_b32_e32 v7, v53395; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:163396; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1]3397; GFX942-NEXT:    s_waitcnt vmcnt(0)3398; GFX942-NEXT:    s_setpc_b64 s[30:31]3399  %vec0 = call <3 x ptr> asm "; def $0", "=v"()3400  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2>3401  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 323402  ret void3403}3404 3405define void @v_shuffle_v4p0_v3p0__0_2_2_2(ptr addrspace(1) inreg %ptr) {3406; GFX900-LABEL: v_shuffle_v4p0_v3p0__0_2_2_2:3407; GFX900:       ; %bb.0:3408; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3409; GFX900-NEXT:    ;;#ASMSTART3410; GFX900-NEXT:    ; def v[0:5]3411; GFX900-NEXT:    ;;#ASMEND3412; GFX900-NEXT:    v_mov_b32_e32 v8, 03413; GFX900-NEXT:    v_mov_b32_e32 v6, v43414; GFX900-NEXT:    v_mov_b32_e32 v7, v53415; GFX900-NEXT:    v_mov_b32_e32 v2, v43416; GFX900-NEXT:    v_mov_b32_e32 v3, v53417; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:163418; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]3419; GFX900-NEXT:    s_waitcnt vmcnt(0)3420; GFX900-NEXT:    s_setpc_b64 s[30:31]3421;3422; GFX90A-LABEL: v_shuffle_v4p0_v3p0__0_2_2_2:3423; GFX90A:       ; %bb.0:3424; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3425; GFX90A-NEXT:    ;;#ASMSTART3426; GFX90A-NEXT:    ; def v[0:5]3427; GFX90A-NEXT:    ;;#ASMEND3428; GFX90A-NEXT:    v_mov_b32_e32 v8, 03429; GFX90A-NEXT:    v_mov_b32_e32 v6, v43430; GFX90A-NEXT:    v_mov_b32_e32 v7, v53431; GFX90A-NEXT:    v_mov_b32_e32 v2, v43432; GFX90A-NEXT:    v_mov_b32_e32 v3, v53433; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:163434; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]3435; GFX90A-NEXT:    s_waitcnt vmcnt(0)3436; GFX90A-NEXT:    s_setpc_b64 s[30:31]3437;3438; GFX942-LABEL: v_shuffle_v4p0_v3p0__0_2_2_2:3439; GFX942:       ; %bb.0:3440; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3441; GFX942-NEXT:    ;;#ASMSTART3442; GFX942-NEXT:    ; def v[0:5]3443; GFX942-NEXT:    ;;#ASMEND3444; GFX942-NEXT:    v_mov_b32_e32 v8, 03445; GFX942-NEXT:    v_mov_b32_e32 v6, v43446; GFX942-NEXT:    v_mov_b32_e32 v7, v53447; GFX942-NEXT:    v_mov_b32_e32 v2, v43448; GFX942-NEXT:    v_mov_b32_e32 v3, v53449; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:163450; GFX942-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1]3451; GFX942-NEXT:    s_waitcnt vmcnt(0)3452; GFX942-NEXT:    s_setpc_b64 s[30:31]3453  %vec0 = call <3 x ptr> asm "; def $0", "=v"()3454  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2>3455  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 323456  ret void3457}3458 3459define void @v_shuffle_v4p0_v3p0__1_2_2_2(ptr addrspace(1) inreg %ptr) {3460; GFX900-LABEL: v_shuffle_v4p0_v3p0__1_2_2_2:3461; GFX900:       ; %bb.0:3462; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3463; GFX900-NEXT:    v_mov_b32_e32 v8, 03464; GFX900-NEXT:    ;;#ASMSTART3465; GFX900-NEXT:    ; def v[0:5]3466; GFX900-NEXT:    ;;#ASMEND3467; GFX900-NEXT:    v_mov_b32_e32 v6, v43468; GFX900-NEXT:    v_mov_b32_e32 v7, v53469; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:163470; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]3471; GFX900-NEXT:    s_waitcnt vmcnt(0)3472; GFX900-NEXT:    s_setpc_b64 s[30:31]3473;3474; GFX90A-LABEL: v_shuffle_v4p0_v3p0__1_2_2_2:3475; GFX90A:       ; %bb.0:3476; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3477; GFX90A-NEXT:    v_mov_b32_e32 v8, 03478; GFX90A-NEXT:    ;;#ASMSTART3479; GFX90A-NEXT:    ; def v[0:5]3480; GFX90A-NEXT:    ;;#ASMEND3481; GFX90A-NEXT:    v_mov_b32_e32 v6, v43482; GFX90A-NEXT:    v_mov_b32_e32 v7, v53483; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:163484; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]3485; GFX90A-NEXT:    s_waitcnt vmcnt(0)3486; GFX90A-NEXT:    s_setpc_b64 s[30:31]3487;3488; GFX942-LABEL: v_shuffle_v4p0_v3p0__1_2_2_2:3489; GFX942:       ; %bb.0:3490; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3491; GFX942-NEXT:    v_mov_b32_e32 v8, 03492; GFX942-NEXT:    ;;#ASMSTART3493; GFX942-NEXT:    ; def v[0:5]3494; GFX942-NEXT:    ;;#ASMEND3495; GFX942-NEXT:    s_nop 03496; GFX942-NEXT:    v_mov_b32_e32 v6, v43497; GFX942-NEXT:    v_mov_b32_e32 v7, v53498; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:163499; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1]3500; GFX942-NEXT:    s_waitcnt vmcnt(0)3501; GFX942-NEXT:    s_setpc_b64 s[30:31]3502  %vec0 = call <3 x ptr> asm "; def $0", "=v"()3503  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2>3504  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 323505  ret void3506}3507 3508define void @v_shuffle_v4p0_v3p0__2_2_2_2(ptr addrspace(1) inreg %ptr) {3509; GFX900-LABEL: v_shuffle_v4p0_v3p0__2_2_2_2:3510; GFX900:       ; %bb.0:3511; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3512; GFX900-NEXT:    v_mov_b32_e32 v8, 03513; GFX900-NEXT:    ;;#ASMSTART3514; GFX900-NEXT:    ; def v[0:5]3515; GFX900-NEXT:    ;;#ASMEND3516; GFX900-NEXT:    v_mov_b32_e32 v6, v43517; GFX900-NEXT:    v_mov_b32_e32 v7, v53518; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:163519; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]3520; GFX900-NEXT:    s_waitcnt vmcnt(0)3521; GFX900-NEXT:    s_setpc_b64 s[30:31]3522;3523; GFX90A-LABEL: v_shuffle_v4p0_v3p0__2_2_2_2:3524; GFX90A:       ; %bb.0:3525; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3526; GFX90A-NEXT:    v_mov_b32_e32 v8, 03527; GFX90A-NEXT:    ;;#ASMSTART3528; GFX90A-NEXT:    ; def v[0:5]3529; GFX90A-NEXT:    ;;#ASMEND3530; GFX90A-NEXT:    v_mov_b32_e32 v6, v43531; GFX90A-NEXT:    v_mov_b32_e32 v7, v53532; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:163533; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]3534; GFX90A-NEXT:    s_waitcnt vmcnt(0)3535; GFX90A-NEXT:    s_setpc_b64 s[30:31]3536;3537; GFX942-LABEL: v_shuffle_v4p0_v3p0__2_2_2_2:3538; GFX942:       ; %bb.0:3539; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3540; GFX942-NEXT:    v_mov_b32_e32 v8, 03541; GFX942-NEXT:    ;;#ASMSTART3542; GFX942-NEXT:    ; def v[0:5]3543; GFX942-NEXT:    ;;#ASMEND3544; GFX942-NEXT:    s_nop 03545; GFX942-NEXT:    v_mov_b32_e32 v6, v43546; GFX942-NEXT:    v_mov_b32_e32 v7, v53547; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:163548; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]3549; GFX942-NEXT:    s_waitcnt vmcnt(0)3550; GFX942-NEXT:    s_setpc_b64 s[30:31]3551  %vec0 = call <3 x ptr> asm "; def $0", "=v"()3552  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2>3553  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 323554  ret void3555}3556 3557define void @v_shuffle_v4p0_v3p0__3_2_2_2(ptr addrspace(1) inreg %ptr) {3558; GFX900-LABEL: v_shuffle_v4p0_v3p0__3_2_2_2:3559; GFX900:       ; %bb.0:3560; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3561; GFX900-NEXT:    v_mov_b32_e32 v8, 03562; GFX900-NEXT:    ;;#ASMSTART3563; GFX900-NEXT:    ; def v[0:5]3564; GFX900-NEXT:    ;;#ASMEND3565; GFX900-NEXT:    v_mov_b32_e32 v6, v43566; GFX900-NEXT:    v_mov_b32_e32 v7, v53567; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:163568; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]3569; GFX900-NEXT:    s_waitcnt vmcnt(0)3570; GFX900-NEXT:    s_setpc_b64 s[30:31]3571;3572; GFX90A-LABEL: v_shuffle_v4p0_v3p0__3_2_2_2:3573; GFX90A:       ; %bb.0:3574; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3575; GFX90A-NEXT:    v_mov_b32_e32 v8, 03576; GFX90A-NEXT:    ;;#ASMSTART3577; GFX90A-NEXT:    ; def v[0:5]3578; GFX90A-NEXT:    ;;#ASMEND3579; GFX90A-NEXT:    v_mov_b32_e32 v6, v43580; GFX90A-NEXT:    v_mov_b32_e32 v7, v53581; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:163582; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]3583; GFX90A-NEXT:    s_waitcnt vmcnt(0)3584; GFX90A-NEXT:    s_setpc_b64 s[30:31]3585;3586; GFX942-LABEL: v_shuffle_v4p0_v3p0__3_2_2_2:3587; GFX942:       ; %bb.0:3588; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3589; GFX942-NEXT:    v_mov_b32_e32 v8, 03590; GFX942-NEXT:    ;;#ASMSTART3591; GFX942-NEXT:    ; def v[0:5]3592; GFX942-NEXT:    ;;#ASMEND3593; GFX942-NEXT:    s_nop 03594; GFX942-NEXT:    v_mov_b32_e32 v6, v43595; GFX942-NEXT:    v_mov_b32_e32 v7, v53596; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:163597; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1]3598; GFX942-NEXT:    s_waitcnt vmcnt(0)3599; GFX942-NEXT:    s_setpc_b64 s[30:31]3600  %vec0 = call <3 x ptr> asm "; def $0", "=v"()3601  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 3, i32 2, i32 2, i32 2>3602  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 323603  ret void3604}3605 3606define void @v_shuffle_v4p0_v3p0__4_2_2_2(ptr addrspace(1) inreg %ptr) {3607; GFX900-LABEL: v_shuffle_v4p0_v3p0__4_2_2_2:3608; GFX900:       ; %bb.0:3609; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3610; GFX900-NEXT:    ;;#ASMSTART3611; GFX900-NEXT:    ; def v[6:11]3612; GFX900-NEXT:    ;;#ASMEND3613; GFX900-NEXT:    v_mov_b32_e32 v12, 03614; GFX900-NEXT:    ;;#ASMSTART3615; GFX900-NEXT:    ; def v[0:5]3616; GFX900-NEXT:    ;;#ASMEND3617; GFX900-NEXT:    v_mov_b32_e32 v6, v43618; GFX900-NEXT:    v_mov_b32_e32 v7, v53619; GFX900-NEXT:    v_mov_b32_e32 v10, v43620; GFX900-NEXT:    v_mov_b32_e32 v11, v53621; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17] offset:163622; GFX900-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17]3623; GFX900-NEXT:    s_waitcnt vmcnt(0)3624; GFX900-NEXT:    s_setpc_b64 s[30:31]3625;3626; GFX90A-LABEL: v_shuffle_v4p0_v3p0__4_2_2_2:3627; GFX90A:       ; %bb.0:3628; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3629; GFX90A-NEXT:    ;;#ASMSTART3630; GFX90A-NEXT:    ; def v[6:11]3631; GFX90A-NEXT:    ;;#ASMEND3632; GFX90A-NEXT:    v_mov_b32_e32 v12, 03633; GFX90A-NEXT:    ;;#ASMSTART3634; GFX90A-NEXT:    ; def v[0:5]3635; GFX90A-NEXT:    ;;#ASMEND3636; GFX90A-NEXT:    v_mov_b32_e32 v6, v43637; GFX90A-NEXT:    v_mov_b32_e32 v7, v53638; GFX90A-NEXT:    v_mov_b32_e32 v10, v43639; GFX90A-NEXT:    v_mov_b32_e32 v11, v53640; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17] offset:163641; GFX90A-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17]3642; GFX90A-NEXT:    s_waitcnt vmcnt(0)3643; GFX90A-NEXT:    s_setpc_b64 s[30:31]3644;3645; GFX942-LABEL: v_shuffle_v4p0_v3p0__4_2_2_2:3646; GFX942:       ; %bb.0:3647; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3648; GFX942-NEXT:    ;;#ASMSTART3649; GFX942-NEXT:    ; def v[6:11]3650; GFX942-NEXT:    ;;#ASMEND3651; GFX942-NEXT:    v_mov_b32_e32 v12, 03652; GFX942-NEXT:    ;;#ASMSTART3653; GFX942-NEXT:    ; def v[0:5]3654; GFX942-NEXT:    ;;#ASMEND3655; GFX942-NEXT:    s_nop 03656; GFX942-NEXT:    v_mov_b32_e32 v6, v43657; GFX942-NEXT:    v_mov_b32_e32 v7, v53658; GFX942-NEXT:    v_mov_b32_e32 v10, v43659; GFX942-NEXT:    v_mov_b32_e32 v11, v53660; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1] offset:163661; GFX942-NEXT:    global_store_dwordx4 v12, v[8:11], s[0:1]3662; GFX942-NEXT:    s_waitcnt vmcnt(0)3663; GFX942-NEXT:    s_setpc_b64 s[30:31]3664  %vec0 = call <3 x ptr> asm "; def $0", "=v"()3665  %vec1 = call <3 x ptr> asm "; def $0", "=v"()3666  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 4, i32 2, i32 2, i32 2>3667  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 323668  ret void3669}3670 3671define void @v_shuffle_v4p0_v3p0__5_2_2_2(ptr addrspace(1) inreg %ptr) {3672; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_2_2_2:3673; GFX900:       ; %bb.0:3674; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3675; GFX900-NEXT:    ;;#ASMSTART3676; GFX900-NEXT:    ; def v[2:7]3677; GFX900-NEXT:    ;;#ASMEND3678; GFX900-NEXT:    v_mov_b32_e32 v10, 03679; GFX900-NEXT:    ;;#ASMSTART3680; GFX900-NEXT:    ; def v[0:5]3681; GFX900-NEXT:    ;;#ASMEND3682; GFX900-NEXT:    v_mov_b32_e32 v8, v63683; GFX900-NEXT:    v_mov_b32_e32 v9, v73684; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:163685; GFX900-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]3686; GFX900-NEXT:    s_waitcnt vmcnt(0)3687; GFX900-NEXT:    s_setpc_b64 s[30:31]3688;3689; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_2_2_2:3690; GFX90A:       ; %bb.0:3691; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3692; GFX90A-NEXT:    ;;#ASMSTART3693; GFX90A-NEXT:    ; def v[2:7]3694; GFX90A-NEXT:    ;;#ASMEND3695; GFX90A-NEXT:    v_mov_b32_e32 v10, 03696; GFX90A-NEXT:    ;;#ASMSTART3697; GFX90A-NEXT:    ; def v[0:5]3698; GFX90A-NEXT:    ;;#ASMEND3699; GFX90A-NEXT:    v_mov_b32_e32 v8, v63700; GFX90A-NEXT:    v_mov_b32_e32 v9, v73701; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:163702; GFX90A-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]3703; GFX90A-NEXT:    s_waitcnt vmcnt(0)3704; GFX90A-NEXT:    s_setpc_b64 s[30:31]3705;3706; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_2_2_2:3707; GFX942:       ; %bb.0:3708; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3709; GFX942-NEXT:    ;;#ASMSTART3710; GFX942-NEXT:    ; def v[2:7]3711; GFX942-NEXT:    ;;#ASMEND3712; GFX942-NEXT:    v_mov_b32_e32 v10, 03713; GFX942-NEXT:    ;;#ASMSTART3714; GFX942-NEXT:    ; def v[0:5]3715; GFX942-NEXT:    ;;#ASMEND3716; GFX942-NEXT:    v_mov_b32_e32 v8, v63717; GFX942-NEXT:    v_mov_b32_e32 v9, v73718; GFX942-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1] offset:163719; GFX942-NEXT:    global_store_dwordx4 v10, v[4:7], s[0:1]3720; GFX942-NEXT:    s_waitcnt vmcnt(0)3721; GFX942-NEXT:    s_setpc_b64 s[30:31]3722  %vec0 = call <3 x ptr> asm "; def $0", "=v"()3723  %vec1 = call <3 x ptr> asm "; def $0", "=v"()3724  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 2, i32 2, i32 2>3725  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 323726  ret void3727}3728 3729define void @v_shuffle_v4p0_v3p0__5_u_2_2(ptr addrspace(1) inreg %ptr) {3730; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_u_2_2:3731; GFX900:       ; %bb.0:3732; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3733; GFX900-NEXT:    ;;#ASMSTART3734; GFX900-NEXT:    ; def v[6:11]3735; GFX900-NEXT:    ;;#ASMEND3736; GFX900-NEXT:    v_mov_b32_e32 v12, 03737; GFX900-NEXT:    ;;#ASMSTART3738; GFX900-NEXT:    ; def v[0:5]3739; GFX900-NEXT:    ;;#ASMEND3740; GFX900-NEXT:    v_mov_b32_e32 v6, v43741; GFX900-NEXT:    v_mov_b32_e32 v7, v53742; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17] offset:163743; GFX900-NEXT:    global_store_dwordx4 v12, v[10:13], s[16:17]3744; GFX900-NEXT:    s_waitcnt vmcnt(0)3745; GFX900-NEXT:    s_setpc_b64 s[30:31]3746;3747; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_u_2_2:3748; GFX90A:       ; %bb.0:3749; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3750; GFX90A-NEXT:    ;;#ASMSTART3751; GFX90A-NEXT:    ; def v[6:11]3752; GFX90A-NEXT:    ;;#ASMEND3753; GFX90A-NEXT:    v_mov_b32_e32 v12, 03754; GFX90A-NEXT:    ;;#ASMSTART3755; GFX90A-NEXT:    ; def v[0:5]3756; GFX90A-NEXT:    ;;#ASMEND3757; GFX90A-NEXT:    v_mov_b32_e32 v6, v43758; GFX90A-NEXT:    v_mov_b32_e32 v7, v53759; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17] offset:163760; GFX90A-NEXT:    global_store_dwordx4 v12, v[10:13], s[16:17]3761; GFX90A-NEXT:    s_waitcnt vmcnt(0)3762; GFX90A-NEXT:    s_setpc_b64 s[30:31]3763;3764; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_u_2_2:3765; GFX942:       ; %bb.0:3766; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3767; GFX942-NEXT:    ;;#ASMSTART3768; GFX942-NEXT:    ; def v[6:11]3769; GFX942-NEXT:    ;;#ASMEND3770; GFX942-NEXT:    v_mov_b32_e32 v12, 03771; GFX942-NEXT:    ;;#ASMSTART3772; GFX942-NEXT:    ; def v[0:5]3773; GFX942-NEXT:    ;;#ASMEND3774; GFX942-NEXT:    s_nop 03775; GFX942-NEXT:    v_mov_b32_e32 v6, v43776; GFX942-NEXT:    v_mov_b32_e32 v7, v53777; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1] offset:163778; GFX942-NEXT:    global_store_dwordx4 v12, v[10:13], s[0:1]3779; GFX942-NEXT:    s_waitcnt vmcnt(0)3780; GFX942-NEXT:    s_setpc_b64 s[30:31]3781  %vec0 = call <3 x ptr> asm "; def $0", "=v"()3782  %vec1 = call <3 x ptr> asm "; def $0", "=v"()3783  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 poison, i32 2, i32 2>3784  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 323785  ret void3786}3787 3788define void @v_shuffle_v4p0_v3p0__5_0_2_2(ptr addrspace(1) inreg %ptr) {3789; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_0_2_2:3790; GFX900:       ; %bb.0:3791; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3792; GFX900-NEXT:    v_mov_b32_e32 v14, 03793; GFX900-NEXT:    ;;#ASMSTART3794; GFX900-NEXT:    ; def v[6:11]3795; GFX900-NEXT:    ;;#ASMEND3796; GFX900-NEXT:    v_mov_b32_e32 v12, v103797; GFX900-NEXT:    v_mov_b32_e32 v13, v113798; GFX900-NEXT:    ;;#ASMSTART3799; GFX900-NEXT:    ; def v[0:5]3800; GFX900-NEXT:    ;;#ASMEND3801; GFX900-NEXT:    global_store_dwordx4 v14, v[10:13], s[16:17] offset:163802; GFX900-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17]3803; GFX900-NEXT:    s_waitcnt vmcnt(0)3804; GFX900-NEXT:    s_setpc_b64 s[30:31]3805;3806; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_0_2_2:3807; GFX90A:       ; %bb.0:3808; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3809; GFX90A-NEXT:    v_mov_b32_e32 v14, 03810; GFX90A-NEXT:    ;;#ASMSTART3811; GFX90A-NEXT:    ; def v[6:11]3812; GFX90A-NEXT:    ;;#ASMEND3813; GFX90A-NEXT:    v_mov_b32_e32 v12, v103814; GFX90A-NEXT:    v_mov_b32_e32 v13, v113815; GFX90A-NEXT:    ;;#ASMSTART3816; GFX90A-NEXT:    ; def v[0:5]3817; GFX90A-NEXT:    ;;#ASMEND3818; GFX90A-NEXT:    global_store_dwordx4 v14, v[10:13], s[16:17] offset:163819; GFX90A-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17]3820; GFX90A-NEXT:    s_waitcnt vmcnt(0)3821; GFX90A-NEXT:    s_setpc_b64 s[30:31]3822;3823; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_0_2_2:3824; GFX942:       ; %bb.0:3825; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3826; GFX942-NEXT:    v_mov_b32_e32 v14, 03827; GFX942-NEXT:    ;;#ASMSTART3828; GFX942-NEXT:    ; def v[6:11]3829; GFX942-NEXT:    ;;#ASMEND3830; GFX942-NEXT:    ;;#ASMSTART3831; GFX942-NEXT:    ; def v[0:5]3832; GFX942-NEXT:    ;;#ASMEND3833; GFX942-NEXT:    s_nop 03834; GFX942-NEXT:    v_mov_b32_e32 v12, v103835; GFX942-NEXT:    v_mov_b32_e32 v13, v113836; GFX942-NEXT:    global_store_dwordx4 v14, v[10:13], s[0:1] offset:163837; GFX942-NEXT:    global_store_dwordx4 v14, v[4:7], s[0:1]3838; GFX942-NEXT:    s_waitcnt vmcnt(0)3839; GFX942-NEXT:    s_setpc_b64 s[30:31]3840  %vec0 = call <3 x ptr> asm "; def $0", "=v"()3841  %vec1 = call <3 x ptr> asm "; def $0", "=v"()3842  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 0, i32 2, i32 2>3843  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 323844  ret void3845}3846 3847define void @v_shuffle_v4p0_v3p0__5_1_2_2(ptr addrspace(1) inreg %ptr) {3848; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_1_2_2:3849; GFX900:       ; %bb.0:3850; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3851; GFX900-NEXT:    v_mov_b32_e32 v12, 03852; GFX900-NEXT:    ;;#ASMSTART3853; GFX900-NEXT:    ; def v[4:9]3854; GFX900-NEXT:    ;;#ASMEND3855; GFX900-NEXT:    v_mov_b32_e32 v10, v83856; GFX900-NEXT:    v_mov_b32_e32 v11, v93857; GFX900-NEXT:    ;;#ASMSTART3858; GFX900-NEXT:    ; def v[0:5]3859; GFX900-NEXT:    ;;#ASMEND3860; GFX900-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17] offset:163861; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]3862; GFX900-NEXT:    s_waitcnt vmcnt(0)3863; GFX900-NEXT:    s_setpc_b64 s[30:31]3864;3865; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_1_2_2:3866; GFX90A:       ; %bb.0:3867; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3868; GFX90A-NEXT:    v_mov_b32_e32 v12, 03869; GFX90A-NEXT:    ;;#ASMSTART3870; GFX90A-NEXT:    ; def v[4:9]3871; GFX90A-NEXT:    ;;#ASMEND3872; GFX90A-NEXT:    v_mov_b32_e32 v10, v83873; GFX90A-NEXT:    v_mov_b32_e32 v11, v93874; GFX90A-NEXT:    ;;#ASMSTART3875; GFX90A-NEXT:    ; def v[0:5]3876; GFX90A-NEXT:    ;;#ASMEND3877; GFX90A-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17] offset:163878; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]3879; GFX90A-NEXT:    s_waitcnt vmcnt(0)3880; GFX90A-NEXT:    s_setpc_b64 s[30:31]3881;3882; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_1_2_2:3883; GFX942:       ; %bb.0:3884; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3885; GFX942-NEXT:    v_mov_b32_e32 v12, 03886; GFX942-NEXT:    ;;#ASMSTART3887; GFX942-NEXT:    ; def v[4:9]3888; GFX942-NEXT:    ;;#ASMEND3889; GFX942-NEXT:    s_nop 03890; GFX942-NEXT:    v_mov_b32_e32 v10, v83891; GFX942-NEXT:    v_mov_b32_e32 v11, v93892; GFX942-NEXT:    ;;#ASMSTART3893; GFX942-NEXT:    ; def v[0:5]3894; GFX942-NEXT:    ;;#ASMEND3895; GFX942-NEXT:    global_store_dwordx4 v12, v[8:11], s[0:1] offset:163896; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1]3897; GFX942-NEXT:    s_waitcnt vmcnt(0)3898; GFX942-NEXT:    s_setpc_b64 s[30:31]3899  %vec0 = call <3 x ptr> asm "; def $0", "=v"()3900  %vec1 = call <3 x ptr> asm "; def $0", "=v"()3901  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 1, i32 2, i32 2>3902  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 323903  ret void3904}3905 3906define void @v_shuffle_v4p0_v3p0__5_3_2_2(ptr addrspace(1) inreg %ptr) {3907; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_3_2_2:3908; GFX900:       ; %bb.0:3909; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3910; GFX900-NEXT:    v_mov_b32_e32 v16, 03911; GFX900-NEXT:    ;;#ASMSTART3912; GFX900-NEXT:    ; def v[0:5]3913; GFX900-NEXT:    ;;#ASMEND3914; GFX900-NEXT:    ;;#ASMSTART3915; GFX900-NEXT:    ; def v[8:13]3916; GFX900-NEXT:    ;;#ASMEND3917; GFX900-NEXT:    v_mov_b32_e32 v6, v43918; GFX900-NEXT:    v_mov_b32_e32 v7, v53919; GFX900-NEXT:    v_mov_b32_e32 v14, v83920; GFX900-NEXT:    v_mov_b32_e32 v15, v93921; GFX900-NEXT:    global_store_dwordx4 v16, v[4:7], s[16:17] offset:163922; GFX900-NEXT:    global_store_dwordx4 v16, v[12:15], s[16:17]3923; GFX900-NEXT:    s_waitcnt vmcnt(0)3924; GFX900-NEXT:    s_setpc_b64 s[30:31]3925;3926; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_3_2_2:3927; GFX90A:       ; %bb.0:3928; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3929; GFX90A-NEXT:    v_mov_b32_e32 v16, 03930; GFX90A-NEXT:    ;;#ASMSTART3931; GFX90A-NEXT:    ; def v[0:5]3932; GFX90A-NEXT:    ;;#ASMEND3933; GFX90A-NEXT:    ;;#ASMSTART3934; GFX90A-NEXT:    ; def v[8:13]3935; GFX90A-NEXT:    ;;#ASMEND3936; GFX90A-NEXT:    v_mov_b32_e32 v6, v43937; GFX90A-NEXT:    v_mov_b32_e32 v7, v53938; GFX90A-NEXT:    v_mov_b32_e32 v14, v83939; GFX90A-NEXT:    v_mov_b32_e32 v15, v93940; GFX90A-NEXT:    global_store_dwordx4 v16, v[4:7], s[16:17] offset:163941; GFX90A-NEXT:    global_store_dwordx4 v16, v[12:15], s[16:17]3942; GFX90A-NEXT:    s_waitcnt vmcnt(0)3943; GFX90A-NEXT:    s_setpc_b64 s[30:31]3944;3945; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_3_2_2:3946; GFX942:       ; %bb.0:3947; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3948; GFX942-NEXT:    v_mov_b32_e32 v16, 03949; GFX942-NEXT:    ;;#ASMSTART3950; GFX942-NEXT:    ; def v[0:5]3951; GFX942-NEXT:    ;;#ASMEND3952; GFX942-NEXT:    ;;#ASMSTART3953; GFX942-NEXT:    ; def v[8:13]3954; GFX942-NEXT:    ;;#ASMEND3955; GFX942-NEXT:    s_nop 03956; GFX942-NEXT:    v_mov_b32_e32 v6, v43957; GFX942-NEXT:    v_mov_b32_e32 v7, v53958; GFX942-NEXT:    v_mov_b32_e32 v14, v83959; GFX942-NEXT:    v_mov_b32_e32 v15, v93960; GFX942-NEXT:    global_store_dwordx4 v16, v[4:7], s[0:1] offset:163961; GFX942-NEXT:    global_store_dwordx4 v16, v[12:15], s[0:1]3962; GFX942-NEXT:    s_waitcnt vmcnt(0)3963; GFX942-NEXT:    s_setpc_b64 s[30:31]3964  %vec0 = call <3 x ptr> asm "; def $0", "=v"()3965  %vec1 = call <3 x ptr> asm "; def $0", "=v"()3966  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 3, i32 2, i32 2>3967  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 323968  ret void3969}3970 3971define void @v_shuffle_v4p0_v3p0__5_4_2_2(ptr addrspace(1) inreg %ptr) {3972; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_4_2_2:3973; GFX900:       ; %bb.0:3974; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3975; GFX900-NEXT:    ;;#ASMSTART3976; GFX900-NEXT:    ; def v[6:11]3977; GFX900-NEXT:    ;;#ASMEND3978; GFX900-NEXT:    v_mov_b32_e32 v14, 03979; GFX900-NEXT:    ;;#ASMSTART3980; GFX900-NEXT:    ; def v[0:5]3981; GFX900-NEXT:    ;;#ASMEND3982; GFX900-NEXT:    v_mov_b32_e32 v6, v43983; GFX900-NEXT:    v_mov_b32_e32 v7, v53984; GFX900-NEXT:    v_mov_b32_e32 v12, v83985; GFX900-NEXT:    v_mov_b32_e32 v13, v93986; GFX900-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17] offset:163987; GFX900-NEXT:    global_store_dwordx4 v14, v[10:13], s[16:17]3988; GFX900-NEXT:    s_waitcnt vmcnt(0)3989; GFX900-NEXT:    s_setpc_b64 s[30:31]3990;3991; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_4_2_2:3992; GFX90A:       ; %bb.0:3993; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3994; GFX90A-NEXT:    ;;#ASMSTART3995; GFX90A-NEXT:    ; def v[6:11]3996; GFX90A-NEXT:    ;;#ASMEND3997; GFX90A-NEXT:    v_mov_b32_e32 v14, 03998; GFX90A-NEXT:    ;;#ASMSTART3999; GFX90A-NEXT:    ; def v[0:5]4000; GFX90A-NEXT:    ;;#ASMEND4001; GFX90A-NEXT:    v_mov_b32_e32 v6, v44002; GFX90A-NEXT:    v_mov_b32_e32 v7, v54003; GFX90A-NEXT:    v_mov_b32_e32 v12, v84004; GFX90A-NEXT:    v_mov_b32_e32 v13, v94005; GFX90A-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17] offset:164006; GFX90A-NEXT:    global_store_dwordx4 v14, v[10:13], s[16:17]4007; GFX90A-NEXT:    s_waitcnt vmcnt(0)4008; GFX90A-NEXT:    s_setpc_b64 s[30:31]4009;4010; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_4_2_2:4011; GFX942:       ; %bb.0:4012; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4013; GFX942-NEXT:    ;;#ASMSTART4014; GFX942-NEXT:    ; def v[6:11]4015; GFX942-NEXT:    ;;#ASMEND4016; GFX942-NEXT:    v_mov_b32_e32 v14, 04017; GFX942-NEXT:    ;;#ASMSTART4018; GFX942-NEXT:    ; def v[0:5]4019; GFX942-NEXT:    ;;#ASMEND4020; GFX942-NEXT:    v_mov_b32_e32 v12, v84021; GFX942-NEXT:    v_mov_b32_e32 v6, v44022; GFX942-NEXT:    v_mov_b32_e32 v7, v54023; GFX942-NEXT:    v_mov_b32_e32 v13, v94024; GFX942-NEXT:    global_store_dwordx4 v14, v[4:7], s[0:1] offset:164025; GFX942-NEXT:    global_store_dwordx4 v14, v[10:13], s[0:1]4026; GFX942-NEXT:    s_waitcnt vmcnt(0)4027; GFX942-NEXT:    s_setpc_b64 s[30:31]4028  %vec0 = call <3 x ptr> asm "; def $0", "=v"()4029  %vec1 = call <3 x ptr> asm "; def $0", "=v"()4030  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 4, i32 2, i32 2>4031  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 324032  ret void4033}4034 4035define void @v_shuffle_v4p0_v3p0__5_5_2_2(ptr addrspace(1) inreg %ptr) {4036; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_2_2:4037; GFX900:       ; %bb.0:4038; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4039; GFX900-NEXT:    ;;#ASMSTART4040; GFX900-NEXT:    ; def v[6:11]4041; GFX900-NEXT:    ;;#ASMEND4042; GFX900-NEXT:    v_mov_b32_e32 v14, 04043; GFX900-NEXT:    ;;#ASMSTART4044; GFX900-NEXT:    ; def v[0:5]4045; GFX900-NEXT:    ;;#ASMEND4046; GFX900-NEXT:    v_mov_b32_e32 v6, v44047; GFX900-NEXT:    v_mov_b32_e32 v7, v54048; GFX900-NEXT:    v_mov_b32_e32 v12, v104049; GFX900-NEXT:    v_mov_b32_e32 v13, v114050; GFX900-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17] offset:164051; GFX900-NEXT:    global_store_dwordx4 v14, v[10:13], s[16:17]4052; GFX900-NEXT:    s_waitcnt vmcnt(0)4053; GFX900-NEXT:    s_setpc_b64 s[30:31]4054;4055; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_2_2:4056; GFX90A:       ; %bb.0:4057; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4058; GFX90A-NEXT:    ;;#ASMSTART4059; GFX90A-NEXT:    ; def v[6:11]4060; GFX90A-NEXT:    ;;#ASMEND4061; GFX90A-NEXT:    v_mov_b32_e32 v14, 04062; GFX90A-NEXT:    ;;#ASMSTART4063; GFX90A-NEXT:    ; def v[0:5]4064; GFX90A-NEXT:    ;;#ASMEND4065; GFX90A-NEXT:    v_mov_b32_e32 v6, v44066; GFX90A-NEXT:    v_mov_b32_e32 v7, v54067; GFX90A-NEXT:    v_mov_b32_e32 v12, v104068; GFX90A-NEXT:    v_mov_b32_e32 v13, v114069; GFX90A-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17] offset:164070; GFX90A-NEXT:    global_store_dwordx4 v14, v[10:13], s[16:17]4071; GFX90A-NEXT:    s_waitcnt vmcnt(0)4072; GFX90A-NEXT:    s_setpc_b64 s[30:31]4073;4074; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_2_2:4075; GFX942:       ; %bb.0:4076; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4077; GFX942-NEXT:    ;;#ASMSTART4078; GFX942-NEXT:    ; def v[6:11]4079; GFX942-NEXT:    ;;#ASMEND4080; GFX942-NEXT:    v_mov_b32_e32 v14, 04081; GFX942-NEXT:    ;;#ASMSTART4082; GFX942-NEXT:    ; def v[0:5]4083; GFX942-NEXT:    ;;#ASMEND4084; GFX942-NEXT:    v_mov_b32_e32 v12, v104085; GFX942-NEXT:    v_mov_b32_e32 v6, v44086; GFX942-NEXT:    v_mov_b32_e32 v7, v54087; GFX942-NEXT:    v_mov_b32_e32 v13, v114088; GFX942-NEXT:    global_store_dwordx4 v14, v[4:7], s[0:1] offset:164089; GFX942-NEXT:    global_store_dwordx4 v14, v[10:13], s[0:1]4090; GFX942-NEXT:    s_waitcnt vmcnt(0)4091; GFX942-NEXT:    s_setpc_b64 s[30:31]4092  %vec0 = call <3 x ptr> asm "; def $0", "=v"()4093  %vec1 = call <3 x ptr> asm "; def $0", "=v"()4094  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 2>4095  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 324096  ret void4097}4098 4099define void @v_shuffle_v4p0_v3p0__5_5_u_2(ptr addrspace(1) inreg %ptr) {4100; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_u_2:4101; GFX900:       ; %bb.0:4102; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4103; GFX900-NEXT:    v_mov_b32_e32 v8, 04104; GFX900-NEXT:    ;;#ASMSTART4105; GFX900-NEXT:    ; def v[2:7]4106; GFX900-NEXT:    ;;#ASMEND4107; GFX900-NEXT:    ;;#ASMSTART4108; GFX900-NEXT:    ; def v[0:5]4109; GFX900-NEXT:    ;;#ASMEND4110; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:164111; GFX900-NEXT:    s_nop 04112; GFX900-NEXT:    v_mov_b32_e32 v6, v44113; GFX900-NEXT:    v_mov_b32_e32 v7, v54114; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]4115; GFX900-NEXT:    s_waitcnt vmcnt(0)4116; GFX900-NEXT:    s_setpc_b64 s[30:31]4117;4118; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_u_2:4119; GFX90A:       ; %bb.0:4120; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4121; GFX90A-NEXT:    v_mov_b32_e32 v8, 04122; GFX90A-NEXT:    ;;#ASMSTART4123; GFX90A-NEXT:    ; def v[2:7]4124; GFX90A-NEXT:    ;;#ASMEND4125; GFX90A-NEXT:    ;;#ASMSTART4126; GFX90A-NEXT:    ; def v[0:5]4127; GFX90A-NEXT:    ;;#ASMEND4128; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:164129; GFX90A-NEXT:    s_nop 04130; GFX90A-NEXT:    v_mov_b32_e32 v6, v44131; GFX90A-NEXT:    v_mov_b32_e32 v7, v54132; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]4133; GFX90A-NEXT:    s_waitcnt vmcnt(0)4134; GFX90A-NEXT:    s_setpc_b64 s[30:31]4135;4136; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_u_2:4137; GFX942:       ; %bb.0:4138; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4139; GFX942-NEXT:    v_mov_b32_e32 v8, 04140; GFX942-NEXT:    ;;#ASMSTART4141; GFX942-NEXT:    ; def v[2:7]4142; GFX942-NEXT:    ;;#ASMEND4143; GFX942-NEXT:    s_nop 04144; GFX942-NEXT:    ;;#ASMSTART4145; GFX942-NEXT:    ; def v[0:5]4146; GFX942-NEXT:    ;;#ASMEND4147; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:164148; GFX942-NEXT:    s_nop 14149; GFX942-NEXT:    v_mov_b32_e32 v6, v44150; GFX942-NEXT:    v_mov_b32_e32 v7, v54151; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]4152; GFX942-NEXT:    s_waitcnt vmcnt(0)4153; GFX942-NEXT:    s_setpc_b64 s[30:31]4154  %vec0 = call <3 x ptr> asm "; def $0", "=v"()4155  %vec1 = call <3 x ptr> asm "; def $0", "=v"()4156  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 2>4157  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 324158  ret void4159}4160 4161define void @v_shuffle_v4p0_v3p0__5_5_0_2(ptr addrspace(1) inreg %ptr) {4162; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_0_2:4163; GFX900:       ; %bb.0:4164; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4165; GFX900-NEXT:    ;;#ASMSTART4166; GFX900-NEXT:    ; def v[6:11]4167; GFX900-NEXT:    ;;#ASMEND4168; GFX900-NEXT:    v_mov_b32_e32 v12, 04169; GFX900-NEXT:    v_mov_b32_e32 v8, v104170; GFX900-NEXT:    v_mov_b32_e32 v9, v114171; GFX900-NEXT:    ;;#ASMSTART4172; GFX900-NEXT:    ; def v[0:5]4173; GFX900-NEXT:    ;;#ASMEND4174; GFX900-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17] offset:164175; GFX900-NEXT:    s_nop 04176; GFX900-NEXT:    v_mov_b32_e32 v6, v44177; GFX900-NEXT:    v_mov_b32_e32 v7, v54178; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]4179; GFX900-NEXT:    s_waitcnt vmcnt(0)4180; GFX900-NEXT:    s_setpc_b64 s[30:31]4181;4182; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_0_2:4183; GFX90A:       ; %bb.0:4184; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4185; GFX90A-NEXT:    ;;#ASMSTART4186; GFX90A-NEXT:    ; def v[6:11]4187; GFX90A-NEXT:    ;;#ASMEND4188; GFX90A-NEXT:    v_mov_b32_e32 v12, 04189; GFX90A-NEXT:    v_mov_b32_e32 v8, v104190; GFX90A-NEXT:    v_mov_b32_e32 v9, v114191; GFX90A-NEXT:    ;;#ASMSTART4192; GFX90A-NEXT:    ; def v[0:5]4193; GFX90A-NEXT:    ;;#ASMEND4194; GFX90A-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17] offset:164195; GFX90A-NEXT:    s_nop 04196; GFX90A-NEXT:    v_mov_b32_e32 v6, v44197; GFX90A-NEXT:    v_mov_b32_e32 v7, v54198; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]4199; GFX90A-NEXT:    s_waitcnt vmcnt(0)4200; GFX90A-NEXT:    s_setpc_b64 s[30:31]4201;4202; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_0_2:4203; GFX942:       ; %bb.0:4204; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4205; GFX942-NEXT:    ;;#ASMSTART4206; GFX942-NEXT:    ; def v[6:11]4207; GFX942-NEXT:    ;;#ASMEND4208; GFX942-NEXT:    v_mov_b32_e32 v12, 04209; GFX942-NEXT:    v_mov_b32_e32 v8, v104210; GFX942-NEXT:    v_mov_b32_e32 v9, v114211; GFX942-NEXT:    ;;#ASMSTART4212; GFX942-NEXT:    ; def v[0:5]4213; GFX942-NEXT:    ;;#ASMEND4214; GFX942-NEXT:    global_store_dwordx4 v12, v[6:9], s[0:1] offset:164215; GFX942-NEXT:    s_nop 14216; GFX942-NEXT:    v_mov_b32_e32 v6, v44217; GFX942-NEXT:    v_mov_b32_e32 v7, v54218; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1]4219; GFX942-NEXT:    s_waitcnt vmcnt(0)4220; GFX942-NEXT:    s_setpc_b64 s[30:31]4221  %vec0 = call <3 x ptr> asm "; def $0", "=v"()4222  %vec1 = call <3 x ptr> asm "; def $0", "=v"()4223  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 2>4224  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 324225  ret void4226}4227 4228define void @v_shuffle_v4p0_v3p0__5_5_1_2(ptr addrspace(1) inreg %ptr) {4229; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_1_2:4230; GFX900:       ; %bb.0:4231; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4232; GFX900-NEXT:    v_mov_b32_e32 v10, 04233; GFX900-NEXT:    ;;#ASMSTART4234; GFX900-NEXT:    ; def v[4:9]4235; GFX900-NEXT:    ;;#ASMEND4236; GFX900-NEXT:    ;;#ASMSTART4237; GFX900-NEXT:    ; def v[0:5]4238; GFX900-NEXT:    ;;#ASMEND4239; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:164240; GFX900-NEXT:    s_nop 04241; GFX900-NEXT:    v_mov_b32_e32 v6, v44242; GFX900-NEXT:    v_mov_b32_e32 v7, v54243; GFX900-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]4244; GFX900-NEXT:    s_waitcnt vmcnt(0)4245; GFX900-NEXT:    s_setpc_b64 s[30:31]4246;4247; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_1_2:4248; GFX90A:       ; %bb.0:4249; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4250; GFX90A-NEXT:    v_mov_b32_e32 v10, 04251; GFX90A-NEXT:    ;;#ASMSTART4252; GFX90A-NEXT:    ; def v[4:9]4253; GFX90A-NEXT:    ;;#ASMEND4254; GFX90A-NEXT:    ;;#ASMSTART4255; GFX90A-NEXT:    ; def v[0:5]4256; GFX90A-NEXT:    ;;#ASMEND4257; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:164258; GFX90A-NEXT:    s_nop 04259; GFX90A-NEXT:    v_mov_b32_e32 v6, v44260; GFX90A-NEXT:    v_mov_b32_e32 v7, v54261; GFX90A-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]4262; GFX90A-NEXT:    s_waitcnt vmcnt(0)4263; GFX90A-NEXT:    s_setpc_b64 s[30:31]4264;4265; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_1_2:4266; GFX942:       ; %bb.0:4267; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4268; GFX942-NEXT:    v_mov_b32_e32 v10, 04269; GFX942-NEXT:    ;;#ASMSTART4270; GFX942-NEXT:    ; def v[4:9]4271; GFX942-NEXT:    ;;#ASMEND4272; GFX942-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1] offset:164273; GFX942-NEXT:    ;;#ASMSTART4274; GFX942-NEXT:    ; def v[0:5]4275; GFX942-NEXT:    ;;#ASMEND4276; GFX942-NEXT:    s_nop 14277; GFX942-NEXT:    v_mov_b32_e32 v6, v44278; GFX942-NEXT:    v_mov_b32_e32 v7, v54279; GFX942-NEXT:    global_store_dwordx4 v10, v[4:7], s[0:1]4280; GFX942-NEXT:    s_waitcnt vmcnt(0)4281; GFX942-NEXT:    s_setpc_b64 s[30:31]4282  %vec0 = call <3 x ptr> asm "; def $0", "=v"()4283  %vec1 = call <3 x ptr> asm "; def $0", "=v"()4284  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 2>4285  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 324286  ret void4287}4288 4289define void @v_shuffle_v4p0_v3p0__5_5_3_2(ptr addrspace(1) inreg %ptr) {4290; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_3_2:4291; GFX900:       ; %bb.0:4292; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4293; GFX900-NEXT:    ;;#ASMSTART4294; GFX900-NEXT:    ; def v[2:7]4295; GFX900-NEXT:    ;;#ASMEND4296; GFX900-NEXT:    ;;#ASMSTART4297; GFX900-NEXT:    ; def v[0:5]4298; GFX900-NEXT:    ;;#ASMEND4299; GFX900-NEXT:    v_mov_b32_e32 v8, 04300; GFX900-NEXT:    v_mov_b32_e32 v2, v64301; GFX900-NEXT:    v_mov_b32_e32 v3, v74302; GFX900-NEXT:    v_mov_b32_e32 v6, v44303; GFX900-NEXT:    v_mov_b32_e32 v7, v54304; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:164305; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]4306; GFX900-NEXT:    s_waitcnt vmcnt(0)4307; GFX900-NEXT:    s_setpc_b64 s[30:31]4308;4309; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_3_2:4310; GFX90A:       ; %bb.0:4311; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4312; GFX90A-NEXT:    ;;#ASMSTART4313; GFX90A-NEXT:    ; def v[2:7]4314; GFX90A-NEXT:    ;;#ASMEND4315; GFX90A-NEXT:    ;;#ASMSTART4316; GFX90A-NEXT:    ; def v[0:5]4317; GFX90A-NEXT:    ;;#ASMEND4318; GFX90A-NEXT:    v_mov_b32_e32 v8, 04319; GFX90A-NEXT:    v_mov_b32_e32 v2, v64320; GFX90A-NEXT:    v_mov_b32_e32 v3, v74321; GFX90A-NEXT:    v_mov_b32_e32 v6, v44322; GFX90A-NEXT:    v_mov_b32_e32 v7, v54323; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:164324; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]4325; GFX90A-NEXT:    s_waitcnt vmcnt(0)4326; GFX90A-NEXT:    s_setpc_b64 s[30:31]4327;4328; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_3_2:4329; GFX942:       ; %bb.0:4330; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4331; GFX942-NEXT:    ;;#ASMSTART4332; GFX942-NEXT:    ; def v[2:7]4333; GFX942-NEXT:    ;;#ASMEND4334; GFX942-NEXT:    v_mov_b32_e32 v8, 04335; GFX942-NEXT:    ;;#ASMSTART4336; GFX942-NEXT:    ; def v[0:5]4337; GFX942-NEXT:    ;;#ASMEND4338; GFX942-NEXT:    s_nop 04339; GFX942-NEXT:    v_mov_b32_e32 v2, v64340; GFX942-NEXT:    v_mov_b32_e32 v3, v74341; GFX942-NEXT:    v_mov_b32_e32 v6, v44342; GFX942-NEXT:    v_mov_b32_e32 v7, v54343; GFX942-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:164344; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]4345; GFX942-NEXT:    s_waitcnt vmcnt(0)4346; GFX942-NEXT:    s_setpc_b64 s[30:31]4347  %vec0 = call <3 x ptr> asm "; def $0", "=v"()4348  %vec1 = call <3 x ptr> asm "; def $0", "=v"()4349  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 2>4350  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 324351  ret void4352}4353 4354define void @v_shuffle_v4p0_v3p0__5_5_4_2(ptr addrspace(1) inreg %ptr) {4355; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_4_2:4356; GFX900:       ; %bb.0:4357; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4358; GFX900-NEXT:    ;;#ASMSTART4359; GFX900-NEXT:    ; def v[4:9]4360; GFX900-NEXT:    ;;#ASMEND4361; GFX900-NEXT:    v_mov_b32_e32 v10, 04362; GFX900-NEXT:    ;;#ASMSTART4363; GFX900-NEXT:    ; def v[0:5]4364; GFX900-NEXT:    ;;#ASMEND4365; GFX900-NEXT:    v_mov_b32_e32 v6, v24366; GFX900-NEXT:    v_mov_b32_e32 v7, v34367; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:164368; GFX900-NEXT:    s_nop 04369; GFX900-NEXT:    v_mov_b32_e32 v6, v44370; GFX900-NEXT:    v_mov_b32_e32 v7, v54371; GFX900-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]4372; GFX900-NEXT:    s_waitcnt vmcnt(0)4373; GFX900-NEXT:    s_setpc_b64 s[30:31]4374;4375; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_4_2:4376; GFX90A:       ; %bb.0:4377; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4378; GFX90A-NEXT:    ;;#ASMSTART4379; GFX90A-NEXT:    ; def v[4:9]4380; GFX90A-NEXT:    ;;#ASMEND4381; GFX90A-NEXT:    v_mov_b32_e32 v10, 04382; GFX90A-NEXT:    ;;#ASMSTART4383; GFX90A-NEXT:    ; def v[0:5]4384; GFX90A-NEXT:    ;;#ASMEND4385; GFX90A-NEXT:    v_mov_b32_e32 v6, v24386; GFX90A-NEXT:    v_mov_b32_e32 v7, v34387; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:164388; GFX90A-NEXT:    s_nop 04389; GFX90A-NEXT:    v_mov_b32_e32 v6, v44390; GFX90A-NEXT:    v_mov_b32_e32 v7, v54391; GFX90A-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]4392; GFX90A-NEXT:    s_waitcnt vmcnt(0)4393; GFX90A-NEXT:    s_setpc_b64 s[30:31]4394;4395; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_4_2:4396; GFX942:       ; %bb.0:4397; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4398; GFX942-NEXT:    ;;#ASMSTART4399; GFX942-NEXT:    ; def v[4:9]4400; GFX942-NEXT:    ;;#ASMEND4401; GFX942-NEXT:    v_mov_b32_e32 v10, 04402; GFX942-NEXT:    ;;#ASMSTART4403; GFX942-NEXT:    ; def v[0:5]4404; GFX942-NEXT:    ;;#ASMEND4405; GFX942-NEXT:    s_nop 04406; GFX942-NEXT:    v_mov_b32_e32 v6, v24407; GFX942-NEXT:    v_mov_b32_e32 v7, v34408; GFX942-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1] offset:164409; GFX942-NEXT:    s_nop 14410; GFX942-NEXT:    v_mov_b32_e32 v6, v44411; GFX942-NEXT:    v_mov_b32_e32 v7, v54412; GFX942-NEXT:    global_store_dwordx4 v10, v[4:7], s[0:1]4413; GFX942-NEXT:    s_waitcnt vmcnt(0)4414; GFX942-NEXT:    s_setpc_b64 s[30:31]4415  %vec0 = call <3 x ptr> asm "; def $0", "=v"()4416  %vec1 = call <3 x ptr> asm "; def $0", "=v"()4417  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 2>4418  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 324419  ret void4420}4421 4422define void @v_shuffle_v4p0_v3p0__u_3_3_3(ptr addrspace(1) inreg %ptr) {4423; GFX9-LABEL: v_shuffle_v4p0_v3p0__u_3_3_3:4424; GFX9:       ; %bb.0:4425; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4426; GFX9-NEXT:    s_setpc_b64 s[30:31]4427  %vec0 = call <3 x ptr> asm "; def $0", "=v"()4428  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 poison, i32 3, i32 3, i32 3>4429  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 324430  ret void4431}4432 4433define void @v_shuffle_v4p0_v3p0__0_3_3_3(ptr addrspace(1) inreg %ptr) {4434; GFX900-LABEL: v_shuffle_v4p0_v3p0__0_3_3_3:4435; GFX900:       ; %bb.0:4436; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4437; GFX900-NEXT:    v_mov_b32_e32 v6, 04438; GFX900-NEXT:    ;;#ASMSTART4439; GFX900-NEXT:    ; def v[0:5]4440; GFX900-NEXT:    ;;#ASMEND4441; GFX900-NEXT:    global_store_dwordx4 v6, v[4:7], s[16:17] offset:164442; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]4443; GFX900-NEXT:    s_waitcnt vmcnt(0)4444; GFX900-NEXT:    s_setpc_b64 s[30:31]4445;4446; GFX90A-LABEL: v_shuffle_v4p0_v3p0__0_3_3_3:4447; GFX90A:       ; %bb.0:4448; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4449; GFX90A-NEXT:    v_mov_b32_e32 v6, 04450; GFX90A-NEXT:    ;;#ASMSTART4451; GFX90A-NEXT:    ; def v[0:5]4452; GFX90A-NEXT:    ;;#ASMEND4453; GFX90A-NEXT:    global_store_dwordx4 v6, v[4:7], s[16:17] offset:164454; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]4455; GFX90A-NEXT:    s_waitcnt vmcnt(0)4456; GFX90A-NEXT:    s_setpc_b64 s[30:31]4457;4458; GFX942-LABEL: v_shuffle_v4p0_v3p0__0_3_3_3:4459; GFX942:       ; %bb.0:4460; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4461; GFX942-NEXT:    v_mov_b32_e32 v6, 04462; GFX942-NEXT:    ;;#ASMSTART4463; GFX942-NEXT:    ; def v[0:5]4464; GFX942-NEXT:    ;;#ASMEND4465; GFX942-NEXT:    global_store_dwordx4 v6, v[4:7], s[0:1] offset:164466; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]4467; GFX942-NEXT:    s_waitcnt vmcnt(0)4468; GFX942-NEXT:    s_setpc_b64 s[30:31]4469  %vec0 = call <3 x ptr> asm "; def $0", "=v"()4470  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 0, i32 3, i32 3, i32 3>4471  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 324472  ret void4473}4474 4475define void @v_shuffle_v4p0_v3p0__1_3_3_3(ptr addrspace(1) inreg %ptr) {4476; GFX900-LABEL: v_shuffle_v4p0_v3p0__1_3_3_3:4477; GFX900:       ; %bb.0:4478; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4479; GFX900-NEXT:    v_mov_b32_e32 v6, 04480; GFX900-NEXT:    ;;#ASMSTART4481; GFX900-NEXT:    ; def v[0:5]4482; GFX900-NEXT:    ;;#ASMEND4483; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]4484; GFX900-NEXT:    s_waitcnt vmcnt(0)4485; GFX900-NEXT:    s_setpc_b64 s[30:31]4486;4487; GFX90A-LABEL: v_shuffle_v4p0_v3p0__1_3_3_3:4488; GFX90A:       ; %bb.0:4489; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4490; GFX90A-NEXT:    v_mov_b32_e32 v6, 04491; GFX90A-NEXT:    ;;#ASMSTART4492; GFX90A-NEXT:    ; def v[0:5]4493; GFX90A-NEXT:    ;;#ASMEND4494; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]4495; GFX90A-NEXT:    s_waitcnt vmcnt(0)4496; GFX90A-NEXT:    s_setpc_b64 s[30:31]4497;4498; GFX942-LABEL: v_shuffle_v4p0_v3p0__1_3_3_3:4499; GFX942:       ; %bb.0:4500; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4501; GFX942-NEXT:    v_mov_b32_e32 v6, 04502; GFX942-NEXT:    ;;#ASMSTART4503; GFX942-NEXT:    ; def v[0:5]4504; GFX942-NEXT:    ;;#ASMEND4505; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]4506; GFX942-NEXT:    s_waitcnt vmcnt(0)4507; GFX942-NEXT:    s_setpc_b64 s[30:31]4508  %vec0 = call <3 x ptr> asm "; def $0", "=v"()4509  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 1, i32 3, i32 3, i32 3>4510  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 324511  ret void4512}4513 4514define void @v_shuffle_v4p0_v3p0__2_3_3_3(ptr addrspace(1) inreg %ptr) {4515; GFX900-LABEL: v_shuffle_v4p0_v3p0__2_3_3_3:4516; GFX900:       ; %bb.0:4517; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4518; GFX900-NEXT:    v_mov_b32_e32 v6, 04519; GFX900-NEXT:    ;;#ASMSTART4520; GFX900-NEXT:    ; def v[0:5]4521; GFX900-NEXT:    ;;#ASMEND4522; GFX900-NEXT:    global_store_dwordx4 v6, v[4:7], s[16:17]4523; GFX900-NEXT:    s_waitcnt vmcnt(0)4524; GFX900-NEXT:    s_setpc_b64 s[30:31]4525;4526; GFX90A-LABEL: v_shuffle_v4p0_v3p0__2_3_3_3:4527; GFX90A:       ; %bb.0:4528; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4529; GFX90A-NEXT:    v_mov_b32_e32 v6, 04530; GFX90A-NEXT:    ;;#ASMSTART4531; GFX90A-NEXT:    ; def v[0:5]4532; GFX90A-NEXT:    ;;#ASMEND4533; GFX90A-NEXT:    global_store_dwordx4 v6, v[4:7], s[16:17]4534; GFX90A-NEXT:    s_waitcnt vmcnt(0)4535; GFX90A-NEXT:    s_setpc_b64 s[30:31]4536;4537; GFX942-LABEL: v_shuffle_v4p0_v3p0__2_3_3_3:4538; GFX942:       ; %bb.0:4539; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4540; GFX942-NEXT:    v_mov_b32_e32 v6, 04541; GFX942-NEXT:    ;;#ASMSTART4542; GFX942-NEXT:    ; def v[0:5]4543; GFX942-NEXT:    ;;#ASMEND4544; GFX942-NEXT:    global_store_dwordx4 v6, v[4:7], s[0:1]4545; GFX942-NEXT:    s_waitcnt vmcnt(0)4546; GFX942-NEXT:    s_setpc_b64 s[30:31]4547  %vec0 = call <3 x ptr> asm "; def $0", "=v"()4548  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 2, i32 3, i32 3, i32 3>4549  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 324550  ret void4551}4552 4553define void @v_shuffle_v4p0_v3p0__3_3_3_3(ptr addrspace(1) inreg %ptr) {4554; GFX9-LABEL: v_shuffle_v4p0_v3p0__3_3_3_3:4555; GFX9:       ; %bb.0:4556; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4557; GFX9-NEXT:    s_setpc_b64 s[30:31]4558  %vec0 = call <3 x ptr> asm "; def $0", "=v"()4559  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 3, i32 3, i32 3, i32 3>4560  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 324561  ret void4562}4563 4564define void @v_shuffle_v4p0_v3p0__4_3_3_3(ptr addrspace(1) inreg %ptr) {4565; GFX900-LABEL: v_shuffle_v4p0_v3p0__4_3_3_3:4566; GFX900:       ; %bb.0:4567; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4568; GFX900-NEXT:    ;;#ASMSTART4569; GFX900-NEXT:    ; def v[2:7]4570; GFX900-NEXT:    ;;#ASMEND4571; GFX900-NEXT:    v_mov_b32_e32 v8, 04572; GFX900-NEXT:    v_mov_b32_e32 v0, v24573; GFX900-NEXT:    v_mov_b32_e32 v1, v34574; GFX900-NEXT:    v_mov_b32_e32 v6, v24575; GFX900-NEXT:    v_mov_b32_e32 v7, v34576; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:164577; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]4578; GFX900-NEXT:    s_waitcnt vmcnt(0)4579; GFX900-NEXT:    s_setpc_b64 s[30:31]4580;4581; GFX90A-LABEL: v_shuffle_v4p0_v3p0__4_3_3_3:4582; GFX90A:       ; %bb.0:4583; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4584; GFX90A-NEXT:    ;;#ASMSTART4585; GFX90A-NEXT:    ; def v[2:7]4586; GFX90A-NEXT:    ;;#ASMEND4587; GFX90A-NEXT:    v_mov_b32_e32 v8, 04588; GFX90A-NEXT:    v_mov_b32_e32 v0, v24589; GFX90A-NEXT:    v_mov_b32_e32 v1, v34590; GFX90A-NEXT:    v_mov_b32_e32 v6, v24591; GFX90A-NEXT:    v_mov_b32_e32 v7, v34592; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:164593; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]4594; GFX90A-NEXT:    s_waitcnt vmcnt(0)4595; GFX90A-NEXT:    s_setpc_b64 s[30:31]4596;4597; GFX942-LABEL: v_shuffle_v4p0_v3p0__4_3_3_3:4598; GFX942:       ; %bb.0:4599; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4600; GFX942-NEXT:    ;;#ASMSTART4601; GFX942-NEXT:    ; def v[2:7]4602; GFX942-NEXT:    ;;#ASMEND4603; GFX942-NEXT:    v_mov_b32_e32 v8, 04604; GFX942-NEXT:    v_mov_b32_e32 v0, v24605; GFX942-NEXT:    v_mov_b32_e32 v1, v34606; GFX942-NEXT:    v_mov_b32_e32 v6, v24607; GFX942-NEXT:    v_mov_b32_e32 v7, v34608; GFX942-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:164609; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]4610; GFX942-NEXT:    s_waitcnt vmcnt(0)4611; GFX942-NEXT:    s_setpc_b64 s[30:31]4612  %vec0 = call <3 x ptr> asm "; def $0", "=v"()4613  %vec1 = call <3 x ptr> asm "; def $0", "=v"()4614  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 4, i32 3, i32 3, i32 3>4615  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 324616  ret void4617}4618 4619define void @v_shuffle_v4p0_v3p0__5_3_3_3(ptr addrspace(1) inreg %ptr) {4620; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_3_3_3:4621; GFX900:       ; %bb.0:4622; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4623; GFX900-NEXT:    ;;#ASMSTART4624; GFX900-NEXT:    ; def v[0:5]4625; GFX900-NEXT:    ;;#ASMEND4626; GFX900-NEXT:    v_mov_b32_e32 v8, 04627; GFX900-NEXT:    v_mov_b32_e32 v2, v04628; GFX900-NEXT:    v_mov_b32_e32 v3, v14629; GFX900-NEXT:    v_mov_b32_e32 v6, v04630; GFX900-NEXT:    v_mov_b32_e32 v7, v14631; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:164632; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]4633; GFX900-NEXT:    s_waitcnt vmcnt(0)4634; GFX900-NEXT:    s_setpc_b64 s[30:31]4635;4636; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_3_3_3:4637; GFX90A:       ; %bb.0:4638; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4639; GFX90A-NEXT:    ;;#ASMSTART4640; GFX90A-NEXT:    ; def v[0:5]4641; GFX90A-NEXT:    ;;#ASMEND4642; GFX90A-NEXT:    v_mov_b32_e32 v8, 04643; GFX90A-NEXT:    v_mov_b32_e32 v2, v04644; GFX90A-NEXT:    v_mov_b32_e32 v3, v14645; GFX90A-NEXT:    v_mov_b32_e32 v6, v04646; GFX90A-NEXT:    v_mov_b32_e32 v7, v14647; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:164648; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]4649; GFX90A-NEXT:    s_waitcnt vmcnt(0)4650; GFX90A-NEXT:    s_setpc_b64 s[30:31]4651;4652; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_3_3_3:4653; GFX942:       ; %bb.0:4654; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4655; GFX942-NEXT:    ;;#ASMSTART4656; GFX942-NEXT:    ; def v[0:5]4657; GFX942-NEXT:    ;;#ASMEND4658; GFX942-NEXT:    v_mov_b32_e32 v8, 04659; GFX942-NEXT:    v_mov_b32_e32 v2, v04660; GFX942-NEXT:    v_mov_b32_e32 v3, v14661; GFX942-NEXT:    v_mov_b32_e32 v6, v04662; GFX942-NEXT:    v_mov_b32_e32 v7, v14663; GFX942-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:164664; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]4665; GFX942-NEXT:    s_waitcnt vmcnt(0)4666; GFX942-NEXT:    s_setpc_b64 s[30:31]4667  %vec0 = call <3 x ptr> asm "; def $0", "=v"()4668  %vec1 = call <3 x ptr> asm "; def $0", "=v"()4669  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 3, i32 3, i32 3>4670  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 324671  ret void4672}4673 4674define void @v_shuffle_v4p0_v3p0__5_u_3_3(ptr addrspace(1) inreg %ptr) {4675; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_u_3_3:4676; GFX900:       ; %bb.0:4677; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4678; GFX900-NEXT:    ;;#ASMSTART4679; GFX900-NEXT:    ; def v[0:5]4680; GFX900-NEXT:    ;;#ASMEND4681; GFX900-NEXT:    v_mov_b32_e32 v6, 04682; GFX900-NEXT:    v_mov_b32_e32 v2, v04683; GFX900-NEXT:    v_mov_b32_e32 v3, v14684; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17] offset:164685; GFX900-NEXT:    global_store_dwordx4 v6, v[4:7], s[16:17]4686; GFX900-NEXT:    s_waitcnt vmcnt(0)4687; GFX900-NEXT:    s_setpc_b64 s[30:31]4688;4689; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_u_3_3:4690; GFX90A:       ; %bb.0:4691; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4692; GFX90A-NEXT:    ;;#ASMSTART4693; GFX90A-NEXT:    ; def v[0:5]4694; GFX90A-NEXT:    ;;#ASMEND4695; GFX90A-NEXT:    v_mov_b32_e32 v6, 04696; GFX90A-NEXT:    v_mov_b32_e32 v2, v04697; GFX90A-NEXT:    v_mov_b32_e32 v3, v14698; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17] offset:164699; GFX90A-NEXT:    global_store_dwordx4 v6, v[4:7], s[16:17]4700; GFX90A-NEXT:    s_waitcnt vmcnt(0)4701; GFX90A-NEXT:    s_setpc_b64 s[30:31]4702;4703; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_u_3_3:4704; GFX942:       ; %bb.0:4705; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4706; GFX942-NEXT:    ;;#ASMSTART4707; GFX942-NEXT:    ; def v[0:5]4708; GFX942-NEXT:    ;;#ASMEND4709; GFX942-NEXT:    v_mov_b32_e32 v6, 04710; GFX942-NEXT:    v_mov_b32_e32 v2, v04711; GFX942-NEXT:    v_mov_b32_e32 v3, v14712; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] offset:164713; GFX942-NEXT:    global_store_dwordx4 v6, v[4:7], s[0:1]4714; GFX942-NEXT:    s_waitcnt vmcnt(0)4715; GFX942-NEXT:    s_setpc_b64 s[30:31]4716  %vec0 = call <3 x ptr> asm "; def $0", "=v"()4717  %vec1 = call <3 x ptr> asm "; def $0", "=v"()4718  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 poison, i32 3, i32 3>4719  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 324720  ret void4721}4722 4723define void @v_shuffle_v4p0_v3p0__5_0_3_3(ptr addrspace(1) inreg %ptr) {4724; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_0_3_3:4725; GFX900:       ; %bb.0:4726; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4727; GFX900-NEXT:    ;;#ASMSTART4728; GFX900-NEXT:    ; def v[0:5]4729; GFX900-NEXT:    ;;#ASMEND4730; GFX900-NEXT:    v_mov_b32_e32 v12, 04731; GFX900-NEXT:    v_mov_b32_e32 v2, v04732; GFX900-NEXT:    v_mov_b32_e32 v3, v14733; GFX900-NEXT:    ;;#ASMSTART4734; GFX900-NEXT:    ; def v[6:11]4735; GFX900-NEXT:    ;;#ASMEND4736; GFX900-NEXT:    global_store_dwordx4 v12, v[0:3], s[16:17] offset:164737; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]4738; GFX900-NEXT:    s_waitcnt vmcnt(0)4739; GFX900-NEXT:    s_setpc_b64 s[30:31]4740;4741; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_0_3_3:4742; GFX90A:       ; %bb.0:4743; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4744; GFX90A-NEXT:    ;;#ASMSTART4745; GFX90A-NEXT:    ; def v[0:5]4746; GFX90A-NEXT:    ;;#ASMEND4747; GFX90A-NEXT:    v_mov_b32_e32 v12, 04748; GFX90A-NEXT:    v_mov_b32_e32 v2, v04749; GFX90A-NEXT:    v_mov_b32_e32 v3, v14750; GFX90A-NEXT:    ;;#ASMSTART4751; GFX90A-NEXT:    ; def v[6:11]4752; GFX90A-NEXT:    ;;#ASMEND4753; GFX90A-NEXT:    global_store_dwordx4 v12, v[0:3], s[16:17] offset:164754; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]4755; GFX90A-NEXT:    s_waitcnt vmcnt(0)4756; GFX90A-NEXT:    s_setpc_b64 s[30:31]4757;4758; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_0_3_3:4759; GFX942:       ; %bb.0:4760; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4761; GFX942-NEXT:    ;;#ASMSTART4762; GFX942-NEXT:    ; def v[0:5]4763; GFX942-NEXT:    ;;#ASMEND4764; GFX942-NEXT:    v_mov_b32_e32 v12, 04765; GFX942-NEXT:    v_mov_b32_e32 v2, v04766; GFX942-NEXT:    v_mov_b32_e32 v3, v14767; GFX942-NEXT:    ;;#ASMSTART4768; GFX942-NEXT:    ; def v[6:11]4769; GFX942-NEXT:    ;;#ASMEND4770; GFX942-NEXT:    global_store_dwordx4 v12, v[0:3], s[0:1] offset:164771; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1]4772; GFX942-NEXT:    s_waitcnt vmcnt(0)4773; GFX942-NEXT:    s_setpc_b64 s[30:31]4774  %vec0 = call <3 x ptr> asm "; def $0", "=v"()4775  %vec1 = call <3 x ptr> asm "; def $0", "=v"()4776  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 0, i32 3, i32 3>4777  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 324778  ret void4779}4780 4781define void @v_shuffle_v4p0_v3p0__5_1_3_3(ptr addrspace(1) inreg %ptr) {4782; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_1_3_3:4783; GFX900:       ; %bb.0:4784; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4785; GFX900-NEXT:    ;;#ASMSTART4786; GFX900-NEXT:    ; def v[4:9]4787; GFX900-NEXT:    ;;#ASMEND4788; GFX900-NEXT:    ;;#ASMSTART4789; GFX900-NEXT:    ; def v[0:5]4790; GFX900-NEXT:    ;;#ASMEND4791; GFX900-NEXT:    v_mov_b32_e32 v10, 04792; GFX900-NEXT:    v_mov_b32_e32 v2, v04793; GFX900-NEXT:    v_mov_b32_e32 v3, v14794; GFX900-NEXT:    global_store_dwordx4 v10, v[0:3], s[16:17] offset:164795; GFX900-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]4796; GFX900-NEXT:    s_waitcnt vmcnt(0)4797; GFX900-NEXT:    s_setpc_b64 s[30:31]4798;4799; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_1_3_3:4800; GFX90A:       ; %bb.0:4801; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4802; GFX90A-NEXT:    ;;#ASMSTART4803; GFX90A-NEXT:    ; def v[4:9]4804; GFX90A-NEXT:    ;;#ASMEND4805; GFX90A-NEXT:    ;;#ASMSTART4806; GFX90A-NEXT:    ; def v[0:5]4807; GFX90A-NEXT:    ;;#ASMEND4808; GFX90A-NEXT:    v_mov_b32_e32 v10, 04809; GFX90A-NEXT:    v_mov_b32_e32 v2, v04810; GFX90A-NEXT:    v_mov_b32_e32 v3, v14811; GFX90A-NEXT:    global_store_dwordx4 v10, v[0:3], s[16:17] offset:164812; GFX90A-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]4813; GFX90A-NEXT:    s_waitcnt vmcnt(0)4814; GFX90A-NEXT:    s_setpc_b64 s[30:31]4815;4816; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_1_3_3:4817; GFX942:       ; %bb.0:4818; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4819; GFX942-NEXT:    ;;#ASMSTART4820; GFX942-NEXT:    ; def v[4:9]4821; GFX942-NEXT:    ;;#ASMEND4822; GFX942-NEXT:    v_mov_b32_e32 v10, 04823; GFX942-NEXT:    ;;#ASMSTART4824; GFX942-NEXT:    ; def v[0:5]4825; GFX942-NEXT:    ;;#ASMEND4826; GFX942-NEXT:    s_nop 04827; GFX942-NEXT:    v_mov_b32_e32 v2, v04828; GFX942-NEXT:    v_mov_b32_e32 v3, v14829; GFX942-NEXT:    global_store_dwordx4 v10, v[0:3], s[0:1] offset:164830; GFX942-NEXT:    global_store_dwordx4 v10, v[4:7], s[0:1]4831; GFX942-NEXT:    s_waitcnt vmcnt(0)4832; GFX942-NEXT:    s_setpc_b64 s[30:31]4833  %vec0 = call <3 x ptr> asm "; def $0", "=v"()4834  %vec1 = call <3 x ptr> asm "; def $0", "=v"()4835  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 1, i32 3, i32 3>4836  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 324837  ret void4838}4839 4840define void @v_shuffle_v4p0_v3p0__5_2_3_3(ptr addrspace(1) inreg %ptr) {4841; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_2_3_3:4842; GFX900:       ; %bb.0:4843; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4844; GFX900-NEXT:    ;;#ASMSTART4845; GFX900-NEXT:    ; def v[2:7]4846; GFX900-NEXT:    ;;#ASMEND4847; GFX900-NEXT:    ;;#ASMSTART4848; GFX900-NEXT:    ; def v[0:5]4849; GFX900-NEXT:    ;;#ASMEND4850; GFX900-NEXT:    v_mov_b32_e32 v8, 04851; GFX900-NEXT:    v_mov_b32_e32 v2, v04852; GFX900-NEXT:    v_mov_b32_e32 v3, v14853; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:164854; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]4855; GFX900-NEXT:    s_waitcnt vmcnt(0)4856; GFX900-NEXT:    s_setpc_b64 s[30:31]4857;4858; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_2_3_3:4859; GFX90A:       ; %bb.0:4860; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4861; GFX90A-NEXT:    ;;#ASMSTART4862; GFX90A-NEXT:    ; def v[2:7]4863; GFX90A-NEXT:    ;;#ASMEND4864; GFX90A-NEXT:    ;;#ASMSTART4865; GFX90A-NEXT:    ; def v[0:5]4866; GFX90A-NEXT:    ;;#ASMEND4867; GFX90A-NEXT:    v_mov_b32_e32 v8, 04868; GFX90A-NEXT:    v_mov_b32_e32 v2, v04869; GFX90A-NEXT:    v_mov_b32_e32 v3, v14870; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:164871; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]4872; GFX90A-NEXT:    s_waitcnt vmcnt(0)4873; GFX90A-NEXT:    s_setpc_b64 s[30:31]4874;4875; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_2_3_3:4876; GFX942:       ; %bb.0:4877; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4878; GFX942-NEXT:    ;;#ASMSTART4879; GFX942-NEXT:    ; def v[2:7]4880; GFX942-NEXT:    ;;#ASMEND4881; GFX942-NEXT:    v_mov_b32_e32 v8, 04882; GFX942-NEXT:    ;;#ASMSTART4883; GFX942-NEXT:    ; def v[0:5]4884; GFX942-NEXT:    ;;#ASMEND4885; GFX942-NEXT:    s_nop 04886; GFX942-NEXT:    v_mov_b32_e32 v2, v04887; GFX942-NEXT:    v_mov_b32_e32 v3, v14888; GFX942-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:164889; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]4890; GFX942-NEXT:    s_waitcnt vmcnt(0)4891; GFX942-NEXT:    s_setpc_b64 s[30:31]4892  %vec0 = call <3 x ptr> asm "; def $0", "=v"()4893  %vec1 = call <3 x ptr> asm "; def $0", "=v"()4894  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 2, i32 3, i32 3>4895  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 324896  ret void4897}4898 4899define void @v_shuffle_v4p0_v3p0__5_4_3_3(ptr addrspace(1) inreg %ptr) {4900; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_4_3_3:4901; GFX900:       ; %bb.0:4902; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4903; GFX900-NEXT:    v_mov_b32_e32 v10, 04904; GFX900-NEXT:    ;;#ASMSTART4905; GFX900-NEXT:    ; def v[2:7]4906; GFX900-NEXT:    ;;#ASMEND4907; GFX900-NEXT:    v_mov_b32_e32 v0, v24908; GFX900-NEXT:    v_mov_b32_e32 v1, v34909; GFX900-NEXT:    v_mov_b32_e32 v8, v44910; GFX900-NEXT:    v_mov_b32_e32 v9, v54911; GFX900-NEXT:    global_store_dwordx4 v10, v[0:3], s[16:17] offset:164912; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17]4913; GFX900-NEXT:    s_waitcnt vmcnt(0)4914; GFX900-NEXT:    s_setpc_b64 s[30:31]4915;4916; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_4_3_3:4917; GFX90A:       ; %bb.0:4918; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4919; GFX90A-NEXT:    v_mov_b32_e32 v10, 04920; GFX90A-NEXT:    ;;#ASMSTART4921; GFX90A-NEXT:    ; def v[2:7]4922; GFX90A-NEXT:    ;;#ASMEND4923; GFX90A-NEXT:    v_mov_b32_e32 v0, v24924; GFX90A-NEXT:    v_mov_b32_e32 v1, v34925; GFX90A-NEXT:    v_mov_b32_e32 v8, v44926; GFX90A-NEXT:    v_mov_b32_e32 v9, v54927; GFX90A-NEXT:    global_store_dwordx4 v10, v[0:3], s[16:17] offset:164928; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17]4929; GFX90A-NEXT:    s_waitcnt vmcnt(0)4930; GFX90A-NEXT:    s_setpc_b64 s[30:31]4931;4932; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_4_3_3:4933; GFX942:       ; %bb.0:4934; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4935; GFX942-NEXT:    v_mov_b32_e32 v10, 04936; GFX942-NEXT:    ;;#ASMSTART4937; GFX942-NEXT:    ; def v[2:7]4938; GFX942-NEXT:    ;;#ASMEND4939; GFX942-NEXT:    s_nop 04940; GFX942-NEXT:    v_mov_b32_e32 v0, v24941; GFX942-NEXT:    v_mov_b32_e32 v1, v34942; GFX942-NEXT:    v_mov_b32_e32 v8, v44943; GFX942-NEXT:    v_mov_b32_e32 v9, v54944; GFX942-NEXT:    global_store_dwordx4 v10, v[0:3], s[0:1] offset:164945; GFX942-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1]4946; GFX942-NEXT:    s_waitcnt vmcnt(0)4947; GFX942-NEXT:    s_setpc_b64 s[30:31]4948  %vec0 = call <3 x ptr> asm "; def $0", "=v"()4949  %vec1 = call <3 x ptr> asm "; def $0", "=v"()4950  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 4, i32 3, i32 3>4951  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 324952  ret void4953}4954 4955define void @v_shuffle_v4p0_v3p0__5_5_3_3(ptr addrspace(1) inreg %ptr) {4956; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_3_3:4957; GFX900:       ; %bb.0:4958; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4959; GFX900-NEXT:    ;;#ASMSTART4960; GFX900-NEXT:    ; def v[0:5]4961; GFX900-NEXT:    ;;#ASMEND4962; GFX900-NEXT:    v_mov_b32_e32 v8, 04963; GFX900-NEXT:    v_mov_b32_e32 v2, v04964; GFX900-NEXT:    v_mov_b32_e32 v3, v14965; GFX900-NEXT:    v_mov_b32_e32 v6, v44966; GFX900-NEXT:    v_mov_b32_e32 v7, v54967; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:164968; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]4969; GFX900-NEXT:    s_waitcnt vmcnt(0)4970; GFX900-NEXT:    s_setpc_b64 s[30:31]4971;4972; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_3_3:4973; GFX90A:       ; %bb.0:4974; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4975; GFX90A-NEXT:    ;;#ASMSTART4976; GFX90A-NEXT:    ; def v[0:5]4977; GFX90A-NEXT:    ;;#ASMEND4978; GFX90A-NEXT:    v_mov_b32_e32 v8, 04979; GFX90A-NEXT:    v_mov_b32_e32 v2, v04980; GFX90A-NEXT:    v_mov_b32_e32 v3, v14981; GFX90A-NEXT:    v_mov_b32_e32 v6, v44982; GFX90A-NEXT:    v_mov_b32_e32 v7, v54983; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:164984; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]4985; GFX90A-NEXT:    s_waitcnt vmcnt(0)4986; GFX90A-NEXT:    s_setpc_b64 s[30:31]4987;4988; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_3_3:4989; GFX942:       ; %bb.0:4990; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4991; GFX942-NEXT:    ;;#ASMSTART4992; GFX942-NEXT:    ; def v[0:5]4993; GFX942-NEXT:    ;;#ASMEND4994; GFX942-NEXT:    v_mov_b32_e32 v8, 04995; GFX942-NEXT:    v_mov_b32_e32 v2, v04996; GFX942-NEXT:    v_mov_b32_e32 v3, v14997; GFX942-NEXT:    v_mov_b32_e32 v6, v44998; GFX942-NEXT:    v_mov_b32_e32 v7, v54999; GFX942-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:165000; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]5001; GFX942-NEXT:    s_waitcnt vmcnt(0)5002; GFX942-NEXT:    s_setpc_b64 s[30:31]5003  %vec0 = call <3 x ptr> asm "; def $0", "=v"()5004  %vec1 = call <3 x ptr> asm "; def $0", "=v"()5005  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 3>5006  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 325007  ret void5008}5009 5010define void @v_shuffle_v4p0_v3p0__5_5_u_3(ptr addrspace(1) inreg %ptr) {5011; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_u_3:5012; GFX900:       ; %bb.0:5013; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5014; GFX900-NEXT:    v_mov_b32_e32 v0, 05015; GFX900-NEXT:    ;;#ASMSTART5016; GFX900-NEXT:    ; def v[2:7]5017; GFX900-NEXT:    ;;#ASMEND5018; GFX900-NEXT:    v_mov_b32_e32 v8, v65019; GFX900-NEXT:    v_mov_b32_e32 v9, v75020; GFX900-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17] offset:165021; GFX900-NEXT:    global_store_dwordx4 v0, v[6:9], s[16:17]5022; GFX900-NEXT:    s_waitcnt vmcnt(0)5023; GFX900-NEXT:    s_setpc_b64 s[30:31]5024;5025; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_u_3:5026; GFX90A:       ; %bb.0:5027; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5028; GFX90A-NEXT:    v_mov_b32_e32 v0, 05029; GFX90A-NEXT:    ;;#ASMSTART5030; GFX90A-NEXT:    ; def v[2:7]5031; GFX90A-NEXT:    ;;#ASMEND5032; GFX90A-NEXT:    v_mov_b32_e32 v8, v65033; GFX90A-NEXT:    v_mov_b32_e32 v9, v75034; GFX90A-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17] offset:165035; GFX90A-NEXT:    global_store_dwordx4 v0, v[6:9], s[16:17]5036; GFX90A-NEXT:    s_waitcnt vmcnt(0)5037; GFX90A-NEXT:    s_setpc_b64 s[30:31]5038;5039; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_u_3:5040; GFX942:       ; %bb.0:5041; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5042; GFX942-NEXT:    v_mov_b32_e32 v0, 05043; GFX942-NEXT:    ;;#ASMSTART5044; GFX942-NEXT:    ; def v[2:7]5045; GFX942-NEXT:    ;;#ASMEND5046; GFX942-NEXT:    global_store_dwordx4 v0, v[0:3], s[0:1] offset:165047; GFX942-NEXT:    v_mov_b32_e32 v8, v65048; GFX942-NEXT:    v_mov_b32_e32 v9, v75049; GFX942-NEXT:    global_store_dwordx4 v0, v[6:9], s[0:1]5050; GFX942-NEXT:    s_waitcnt vmcnt(0)5051; GFX942-NEXT:    s_setpc_b64 s[30:31]5052  %vec0 = call <3 x ptr> asm "; def $0", "=v"()5053  %vec1 = call <3 x ptr> asm "; def $0", "=v"()5054  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 3>5055  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 325056  ret void5057}5058 5059define void @v_shuffle_v4p0_v3p0__5_5_0_3(ptr addrspace(1) inreg %ptr) {5060; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_0_3:5061; GFX900:       ; %bb.0:5062; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5063; GFX900-NEXT:    ;;#ASMSTART5064; GFX900-NEXT:    ; def v[0:5]5065; GFX900-NEXT:    ;;#ASMEND5066; GFX900-NEXT:    v_mov_b32_e32 v10, 05067; GFX900-NEXT:    ;;#ASMSTART5068; GFX900-NEXT:    ; def v[2:7]5069; GFX900-NEXT:    ;;#ASMEND5070; GFX900-NEXT:    v_mov_b32_e32 v8, v65071; GFX900-NEXT:    v_mov_b32_e32 v9, v75072; GFX900-NEXT:    global_store_dwordx4 v10, v[0:3], s[16:17] offset:165073; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17]5074; GFX900-NEXT:    s_waitcnt vmcnt(0)5075; GFX900-NEXT:    s_setpc_b64 s[30:31]5076;5077; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_0_3:5078; GFX90A:       ; %bb.0:5079; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5080; GFX90A-NEXT:    ;;#ASMSTART5081; GFX90A-NEXT:    ; def v[0:5]5082; GFX90A-NEXT:    ;;#ASMEND5083; GFX90A-NEXT:    v_mov_b32_e32 v10, 05084; GFX90A-NEXT:    ;;#ASMSTART5085; GFX90A-NEXT:    ; def v[2:7]5086; GFX90A-NEXT:    ;;#ASMEND5087; GFX90A-NEXT:    v_mov_b32_e32 v8, v65088; GFX90A-NEXT:    v_mov_b32_e32 v9, v75089; GFX90A-NEXT:    global_store_dwordx4 v10, v[0:3], s[16:17] offset:165090; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17]5091; GFX90A-NEXT:    s_waitcnt vmcnt(0)5092; GFX90A-NEXT:    s_setpc_b64 s[30:31]5093;5094; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_0_3:5095; GFX942:       ; %bb.0:5096; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5097; GFX942-NEXT:    ;;#ASMSTART5098; GFX942-NEXT:    ; def v[0:5]5099; GFX942-NEXT:    ;;#ASMEND5100; GFX942-NEXT:    v_mov_b32_e32 v10, 05101; GFX942-NEXT:    ;;#ASMSTART5102; GFX942-NEXT:    ; def v[2:7]5103; GFX942-NEXT:    ;;#ASMEND5104; GFX942-NEXT:    global_store_dwordx4 v10, v[0:3], s[0:1] offset:165105; GFX942-NEXT:    v_mov_b32_e32 v8, v65106; GFX942-NEXT:    v_mov_b32_e32 v9, v75107; GFX942-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1]5108; GFX942-NEXT:    s_waitcnt vmcnt(0)5109; GFX942-NEXT:    s_setpc_b64 s[30:31]5110  %vec0 = call <3 x ptr> asm "; def $0", "=v"()5111  %vec1 = call <3 x ptr> asm "; def $0", "=v"()5112  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 3>5113  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 325114  ret void5115}5116 5117define void @v_shuffle_v4p0_v3p0__5_5_1_3(ptr addrspace(1) inreg %ptr) {5118; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_1_3:5119; GFX900:       ; %bb.0:5120; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5121; GFX900-NEXT:    ;;#ASMSTART5122; GFX900-NEXT:    ; def v[0:5]5123; GFX900-NEXT:    ;;#ASMEND5124; GFX900-NEXT:    v_mov_b32_e32 v12, 05125; GFX900-NEXT:    ;;#ASMSTART5126; GFX900-NEXT:    ; def v[4:9]5127; GFX900-NEXT:    ;;#ASMEND5128; GFX900-NEXT:    v_mov_b32_e32 v10, v85129; GFX900-NEXT:    v_mov_b32_e32 v11, v95130; GFX900-NEXT:    global_store_dwordx4 v12, v[2:5], s[16:17] offset:165131; GFX900-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17]5132; GFX900-NEXT:    s_waitcnt vmcnt(0)5133; GFX900-NEXT:    s_setpc_b64 s[30:31]5134;5135; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_1_3:5136; GFX90A:       ; %bb.0:5137; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5138; GFX90A-NEXT:    ;;#ASMSTART5139; GFX90A-NEXT:    ; def v[0:5]5140; GFX90A-NEXT:    ;;#ASMEND5141; GFX90A-NEXT:    v_mov_b32_e32 v12, 05142; GFX90A-NEXT:    ;;#ASMSTART5143; GFX90A-NEXT:    ; def v[4:9]5144; GFX90A-NEXT:    ;;#ASMEND5145; GFX90A-NEXT:    v_mov_b32_e32 v10, v85146; GFX90A-NEXT:    v_mov_b32_e32 v11, v95147; GFX90A-NEXT:    global_store_dwordx4 v12, v[2:5], s[16:17] offset:165148; GFX90A-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17]5149; GFX90A-NEXT:    s_waitcnt vmcnt(0)5150; GFX90A-NEXT:    s_setpc_b64 s[30:31]5151;5152; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_1_3:5153; GFX942:       ; %bb.0:5154; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5155; GFX942-NEXT:    ;;#ASMSTART5156; GFX942-NEXT:    ; def v[0:5]5157; GFX942-NEXT:    ;;#ASMEND5158; GFX942-NEXT:    v_mov_b32_e32 v12, 05159; GFX942-NEXT:    ;;#ASMSTART5160; GFX942-NEXT:    ; def v[4:9]5161; GFX942-NEXT:    ;;#ASMEND5162; GFX942-NEXT:    global_store_dwordx4 v12, v[2:5], s[0:1] offset:165163; GFX942-NEXT:    v_mov_b32_e32 v10, v85164; GFX942-NEXT:    v_mov_b32_e32 v11, v95165; GFX942-NEXT:    global_store_dwordx4 v12, v[8:11], s[0:1]5166; GFX942-NEXT:    s_waitcnt vmcnt(0)5167; GFX942-NEXT:    s_setpc_b64 s[30:31]5168  %vec0 = call <3 x ptr> asm "; def $0", "=v"()5169  %vec1 = call <3 x ptr> asm "; def $0", "=v"()5170  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 3>5171  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 325172  ret void5173}5174 5175define void @v_shuffle_v4p0_v3p0__5_5_2_3(ptr addrspace(1) inreg %ptr) {5176; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_2_3:5177; GFX900:       ; %bb.0:5178; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5179; GFX900-NEXT:    v_mov_b32_e32 v14, 05180; GFX900-NEXT:    ;;#ASMSTART5181; GFX900-NEXT:    ; def v[6:11]5182; GFX900-NEXT:    ;;#ASMEND5183; GFX900-NEXT:    v_mov_b32_e32 v12, v105184; GFX900-NEXT:    v_mov_b32_e32 v13, v115185; GFX900-NEXT:    ;;#ASMSTART5186; GFX900-NEXT:    ; def v[0:5]5187; GFX900-NEXT:    ;;#ASMEND5188; GFX900-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17] offset:165189; GFX900-NEXT:    global_store_dwordx4 v14, v[10:13], s[16:17]5190; GFX900-NEXT:    s_waitcnt vmcnt(0)5191; GFX900-NEXT:    s_setpc_b64 s[30:31]5192;5193; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_2_3:5194; GFX90A:       ; %bb.0:5195; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5196; GFX90A-NEXT:    v_mov_b32_e32 v14, 05197; GFX90A-NEXT:    ;;#ASMSTART5198; GFX90A-NEXT:    ; def v[6:11]5199; GFX90A-NEXT:    ;;#ASMEND5200; GFX90A-NEXT:    v_mov_b32_e32 v12, v105201; GFX90A-NEXT:    v_mov_b32_e32 v13, v115202; GFX90A-NEXT:    ;;#ASMSTART5203; GFX90A-NEXT:    ; def v[0:5]5204; GFX90A-NEXT:    ;;#ASMEND5205; GFX90A-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17] offset:165206; GFX90A-NEXT:    global_store_dwordx4 v14, v[10:13], s[16:17]5207; GFX90A-NEXT:    s_waitcnt vmcnt(0)5208; GFX90A-NEXT:    s_setpc_b64 s[30:31]5209;5210; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_2_3:5211; GFX942:       ; %bb.0:5212; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5213; GFX942-NEXT:    v_mov_b32_e32 v14, 05214; GFX942-NEXT:    ;;#ASMSTART5215; GFX942-NEXT:    ; def v[6:11]5216; GFX942-NEXT:    ;;#ASMEND5217; GFX942-NEXT:    ;;#ASMSTART5218; GFX942-NEXT:    ; def v[0:5]5219; GFX942-NEXT:    ;;#ASMEND5220; GFX942-NEXT:    global_store_dwordx4 v14, v[4:7], s[0:1] offset:165221; GFX942-NEXT:    v_mov_b32_e32 v12, v105222; GFX942-NEXT:    v_mov_b32_e32 v13, v115223; GFX942-NEXT:    global_store_dwordx4 v14, v[10:13], s[0:1]5224; GFX942-NEXT:    s_waitcnt vmcnt(0)5225; GFX942-NEXT:    s_setpc_b64 s[30:31]5226  %vec0 = call <3 x ptr> asm "; def $0", "=v"()5227  %vec1 = call <3 x ptr> asm "; def $0", "=v"()5228  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 3>5229  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 325230  ret void5231}5232 5233define void @v_shuffle_v4p0_v3p0__5_5_4_3(ptr addrspace(1) inreg %ptr) {5234; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_4_3:5235; GFX900:       ; %bb.0:5236; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5237; GFX900-NEXT:    v_mov_b32_e32 v10, 05238; GFX900-NEXT:    ;;#ASMSTART5239; GFX900-NEXT:    ; def v[2:7]5240; GFX900-NEXT:    ;;#ASMEND5241; GFX900-NEXT:    v_mov_b32_e32 v0, v45242; GFX900-NEXT:    v_mov_b32_e32 v1, v55243; GFX900-NEXT:    v_mov_b32_e32 v8, v65244; GFX900-NEXT:    v_mov_b32_e32 v9, v75245; GFX900-NEXT:    global_store_dwordx4 v10, v[0:3], s[16:17] offset:165246; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17]5247; GFX900-NEXT:    s_waitcnt vmcnt(0)5248; GFX900-NEXT:    s_setpc_b64 s[30:31]5249;5250; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_4_3:5251; GFX90A:       ; %bb.0:5252; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5253; GFX90A-NEXT:    v_mov_b32_e32 v10, 05254; GFX90A-NEXT:    ;;#ASMSTART5255; GFX90A-NEXT:    ; def v[2:7]5256; GFX90A-NEXT:    ;;#ASMEND5257; GFX90A-NEXT:    v_mov_b32_e32 v0, v45258; GFX90A-NEXT:    v_mov_b32_e32 v1, v55259; GFX90A-NEXT:    v_mov_b32_e32 v8, v65260; GFX90A-NEXT:    v_mov_b32_e32 v9, v75261; GFX90A-NEXT:    global_store_dwordx4 v10, v[0:3], s[16:17] offset:165262; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17]5263; GFX90A-NEXT:    s_waitcnt vmcnt(0)5264; GFX90A-NEXT:    s_setpc_b64 s[30:31]5265;5266; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_4_3:5267; GFX942:       ; %bb.0:5268; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5269; GFX942-NEXT:    v_mov_b32_e32 v10, 05270; GFX942-NEXT:    ;;#ASMSTART5271; GFX942-NEXT:    ; def v[2:7]5272; GFX942-NEXT:    ;;#ASMEND5273; GFX942-NEXT:    s_nop 05274; GFX942-NEXT:    v_mov_b32_e32 v0, v45275; GFX942-NEXT:    v_mov_b32_e32 v1, v55276; GFX942-NEXT:    v_mov_b32_e32 v8, v65277; GFX942-NEXT:    v_mov_b32_e32 v9, v75278; GFX942-NEXT:    global_store_dwordx4 v10, v[0:3], s[0:1] offset:165279; GFX942-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1]5280; GFX942-NEXT:    s_waitcnt vmcnt(0)5281; GFX942-NEXT:    s_setpc_b64 s[30:31]5282  %vec0 = call <3 x ptr> asm "; def $0", "=v"()5283  %vec1 = call <3 x ptr> asm "; def $0", "=v"()5284  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 3>5285  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 325286  ret void5287}5288 5289define void @v_shuffle_v4p0_v3p0__u_4_4_4(ptr addrspace(1) inreg %ptr) {5290; GFX900-LABEL: v_shuffle_v4p0_v3p0__u_4_4_4:5291; GFX900:       ; %bb.0:5292; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5293; GFX900-NEXT:    ;;#ASMSTART5294; GFX900-NEXT:    ; def v[0:5]5295; GFX900-NEXT:    ;;#ASMEND5296; GFX900-NEXT:    v_mov_b32_e32 v6, 05297; GFX900-NEXT:    v_mov_b32_e32 v4, v25298; GFX900-NEXT:    v_mov_b32_e32 v5, v35299; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:165300; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]5301; GFX900-NEXT:    s_waitcnt vmcnt(0)5302; GFX900-NEXT:    s_setpc_b64 s[30:31]5303;5304; GFX90A-LABEL: v_shuffle_v4p0_v3p0__u_4_4_4:5305; GFX90A:       ; %bb.0:5306; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5307; GFX90A-NEXT:    ;;#ASMSTART5308; GFX90A-NEXT:    ; def v[0:5]5309; GFX90A-NEXT:    ;;#ASMEND5310; GFX90A-NEXT:    v_mov_b32_e32 v6, 05311; GFX90A-NEXT:    v_mov_b32_e32 v4, v25312; GFX90A-NEXT:    v_mov_b32_e32 v5, v35313; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:165314; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]5315; GFX90A-NEXT:    s_waitcnt vmcnt(0)5316; GFX90A-NEXT:    s_setpc_b64 s[30:31]5317;5318; GFX942-LABEL: v_shuffle_v4p0_v3p0__u_4_4_4:5319; GFX942:       ; %bb.0:5320; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5321; GFX942-NEXT:    ;;#ASMSTART5322; GFX942-NEXT:    ; def v[0:5]5323; GFX942-NEXT:    ;;#ASMEND5324; GFX942-NEXT:    v_mov_b32_e32 v6, 05325; GFX942-NEXT:    v_mov_b32_e32 v4, v25326; GFX942-NEXT:    v_mov_b32_e32 v5, v35327; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] offset:165328; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]5329; GFX942-NEXT:    s_waitcnt vmcnt(0)5330; GFX942-NEXT:    s_setpc_b64 s[30:31]5331  %vec0 = call <3 x ptr> asm "; def $0", "=v"()5332  %vec1 = call <3 x ptr> asm "; def $0", "=v"()5333  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 poison, i32 4, i32 4, i32 4>5334  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 325335  ret void5336}5337 5338define void @v_shuffle_v4p0_v3p0__0_4_4_4(ptr addrspace(1) inreg %ptr) {5339; GFX900-LABEL: v_shuffle_v4p0_v3p0__0_4_4_4:5340; GFX900:       ; %bb.0:5341; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5342; GFX900-NEXT:    ;;#ASMSTART5343; GFX900-NEXT:    ; def v[0:5]5344; GFX900-NEXT:    ;;#ASMEND5345; GFX900-NEXT:    ;;#ASMSTART5346; GFX900-NEXT:    ; def v[2:7]5347; GFX900-NEXT:    ;;#ASMEND5348; GFX900-NEXT:    v_mov_b32_e32 v8, 05349; GFX900-NEXT:    v_mov_b32_e32 v6, v45350; GFX900-NEXT:    v_mov_b32_e32 v7, v55351; GFX900-NEXT:    v_mov_b32_e32 v2, v45352; GFX900-NEXT:    v_mov_b32_e32 v3, v55353; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:165354; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]5355; GFX900-NEXT:    s_waitcnt vmcnt(0)5356; GFX900-NEXT:    s_setpc_b64 s[30:31]5357;5358; GFX90A-LABEL: v_shuffle_v4p0_v3p0__0_4_4_4:5359; GFX90A:       ; %bb.0:5360; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5361; GFX90A-NEXT:    ;;#ASMSTART5362; GFX90A-NEXT:    ; def v[0:5]5363; GFX90A-NEXT:    ;;#ASMEND5364; GFX90A-NEXT:    ;;#ASMSTART5365; GFX90A-NEXT:    ; def v[2:7]5366; GFX90A-NEXT:    ;;#ASMEND5367; GFX90A-NEXT:    v_mov_b32_e32 v8, 05368; GFX90A-NEXT:    v_mov_b32_e32 v6, v45369; GFX90A-NEXT:    v_mov_b32_e32 v7, v55370; GFX90A-NEXT:    v_mov_b32_e32 v2, v45371; GFX90A-NEXT:    v_mov_b32_e32 v3, v55372; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:165373; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]5374; GFX90A-NEXT:    s_waitcnt vmcnt(0)5375; GFX90A-NEXT:    s_setpc_b64 s[30:31]5376;5377; GFX942-LABEL: v_shuffle_v4p0_v3p0__0_4_4_4:5378; GFX942:       ; %bb.0:5379; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5380; GFX942-NEXT:    ;;#ASMSTART5381; GFX942-NEXT:    ; def v[0:5]5382; GFX942-NEXT:    ;;#ASMEND5383; GFX942-NEXT:    v_mov_b32_e32 v8, 05384; GFX942-NEXT:    ;;#ASMSTART5385; GFX942-NEXT:    ; def v[2:7]5386; GFX942-NEXT:    ;;#ASMEND5387; GFX942-NEXT:    s_nop 05388; GFX942-NEXT:    v_mov_b32_e32 v6, v45389; GFX942-NEXT:    v_mov_b32_e32 v7, v55390; GFX942-NEXT:    v_mov_b32_e32 v2, v45391; GFX942-NEXT:    v_mov_b32_e32 v3, v55392; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:165393; GFX942-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1]5394; GFX942-NEXT:    s_waitcnt vmcnt(0)5395; GFX942-NEXT:    s_setpc_b64 s[30:31]5396  %vec0 = call <3 x ptr> asm "; def $0", "=v"()5397  %vec1 = call <3 x ptr> asm "; def $0", "=v"()5398  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 0, i32 4, i32 4, i32 4>5399  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 325400  ret void5401}5402 5403define void @v_shuffle_v4p0_v3p0__1_4_4_4(ptr addrspace(1) inreg %ptr) {5404; GFX900-LABEL: v_shuffle_v4p0_v3p0__1_4_4_4:5405; GFX900:       ; %bb.0:5406; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5407; GFX900-NEXT:    ;;#ASMSTART5408; GFX900-NEXT:    ; def v[0:5]5409; GFX900-NEXT:    ;;#ASMEND5410; GFX900-NEXT:    ;;#ASMSTART5411; GFX900-NEXT:    ; def v[4:9]5412; GFX900-NEXT:    ;;#ASMEND5413; GFX900-NEXT:    v_mov_b32_e32 v10, 05414; GFX900-NEXT:    v_mov_b32_e32 v8, v65415; GFX900-NEXT:    v_mov_b32_e32 v9, v75416; GFX900-NEXT:    v_mov_b32_e32 v4, v65417; GFX900-NEXT:    v_mov_b32_e32 v5, v75418; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:165419; GFX900-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17]5420; GFX900-NEXT:    s_waitcnt vmcnt(0)5421; GFX900-NEXT:    s_setpc_b64 s[30:31]5422;5423; GFX90A-LABEL: v_shuffle_v4p0_v3p0__1_4_4_4:5424; GFX90A:       ; %bb.0:5425; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5426; GFX90A-NEXT:    ;;#ASMSTART5427; GFX90A-NEXT:    ; def v[0:5]5428; GFX90A-NEXT:    ;;#ASMEND5429; GFX90A-NEXT:    ;;#ASMSTART5430; GFX90A-NEXT:    ; def v[4:9]5431; GFX90A-NEXT:    ;;#ASMEND5432; GFX90A-NEXT:    v_mov_b32_e32 v10, 05433; GFX90A-NEXT:    v_mov_b32_e32 v8, v65434; GFX90A-NEXT:    v_mov_b32_e32 v9, v75435; GFX90A-NEXT:    v_mov_b32_e32 v4, v65436; GFX90A-NEXT:    v_mov_b32_e32 v5, v75437; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:165438; GFX90A-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17]5439; GFX90A-NEXT:    s_waitcnt vmcnt(0)5440; GFX90A-NEXT:    s_setpc_b64 s[30:31]5441;5442; GFX942-LABEL: v_shuffle_v4p0_v3p0__1_4_4_4:5443; GFX942:       ; %bb.0:5444; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5445; GFX942-NEXT:    ;;#ASMSTART5446; GFX942-NEXT:    ; def v[0:5]5447; GFX942-NEXT:    ;;#ASMEND5448; GFX942-NEXT:    v_mov_b32_e32 v10, 05449; GFX942-NEXT:    ;;#ASMSTART5450; GFX942-NEXT:    ; def v[4:9]5451; GFX942-NEXT:    ;;#ASMEND5452; GFX942-NEXT:    s_nop 05453; GFX942-NEXT:    v_mov_b32_e32 v8, v65454; GFX942-NEXT:    v_mov_b32_e32 v9, v75455; GFX942-NEXT:    v_mov_b32_e32 v4, v65456; GFX942-NEXT:    v_mov_b32_e32 v5, v75457; GFX942-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1] offset:165458; GFX942-NEXT:    global_store_dwordx4 v10, v[2:5], s[0:1]5459; GFX942-NEXT:    s_waitcnt vmcnt(0)5460; GFX942-NEXT:    s_setpc_b64 s[30:31]5461  %vec0 = call <3 x ptr> asm "; def $0", "=v"()5462  %vec1 = call <3 x ptr> asm "; def $0", "=v"()5463  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 1, i32 4, i32 4, i32 4>5464  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 325465  ret void5466}5467 5468define void @v_shuffle_v4p0_v3p0__2_4_4_4(ptr addrspace(1) inreg %ptr) {5469; GFX900-LABEL: v_shuffle_v4p0_v3p0__2_4_4_4:5470; GFX900:       ; %bb.0:5471; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5472; GFX900-NEXT:    ;;#ASMSTART5473; GFX900-NEXT:    ; def v[6:11]5474; GFX900-NEXT:    ;;#ASMEND5475; GFX900-NEXT:    v_mov_b32_e32 v12, 05476; GFX900-NEXT:    v_mov_b32_e32 v10, v85477; GFX900-NEXT:    v_mov_b32_e32 v11, v95478; GFX900-NEXT:    v_mov_b32_e32 v6, v85479; GFX900-NEXT:    v_mov_b32_e32 v7, v95480; GFX900-NEXT:    ;;#ASMSTART5481; GFX900-NEXT:    ; def v[0:5]5482; GFX900-NEXT:    ;;#ASMEND5483; GFX900-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17] offset:165484; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]5485; GFX900-NEXT:    s_waitcnt vmcnt(0)5486; GFX900-NEXT:    s_setpc_b64 s[30:31]5487;5488; GFX90A-LABEL: v_shuffle_v4p0_v3p0__2_4_4_4:5489; GFX90A:       ; %bb.0:5490; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5491; GFX90A-NEXT:    ;;#ASMSTART5492; GFX90A-NEXT:    ; def v[6:11]5493; GFX90A-NEXT:    ;;#ASMEND5494; GFX90A-NEXT:    v_mov_b32_e32 v12, 05495; GFX90A-NEXT:    v_mov_b32_e32 v10, v85496; GFX90A-NEXT:    v_mov_b32_e32 v11, v95497; GFX90A-NEXT:    v_mov_b32_e32 v6, v85498; GFX90A-NEXT:    v_mov_b32_e32 v7, v95499; GFX90A-NEXT:    ;;#ASMSTART5500; GFX90A-NEXT:    ; def v[0:5]5501; GFX90A-NEXT:    ;;#ASMEND5502; GFX90A-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17] offset:165503; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]5504; GFX90A-NEXT:    s_waitcnt vmcnt(0)5505; GFX90A-NEXT:    s_setpc_b64 s[30:31]5506;5507; GFX942-LABEL: v_shuffle_v4p0_v3p0__2_4_4_4:5508; GFX942:       ; %bb.0:5509; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5510; GFX942-NEXT:    ;;#ASMSTART5511; GFX942-NEXT:    ; def v[6:11]5512; GFX942-NEXT:    ;;#ASMEND5513; GFX942-NEXT:    v_mov_b32_e32 v12, 05514; GFX942-NEXT:    v_mov_b32_e32 v10, v85515; GFX942-NEXT:    v_mov_b32_e32 v11, v95516; GFX942-NEXT:    v_mov_b32_e32 v6, v85517; GFX942-NEXT:    v_mov_b32_e32 v7, v95518; GFX942-NEXT:    ;;#ASMSTART5519; GFX942-NEXT:    ; def v[0:5]5520; GFX942-NEXT:    ;;#ASMEND5521; GFX942-NEXT:    global_store_dwordx4 v12, v[8:11], s[0:1] offset:165522; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1]5523; GFX942-NEXT:    s_waitcnt vmcnt(0)5524; GFX942-NEXT:    s_setpc_b64 s[30:31]5525  %vec0 = call <3 x ptr> asm "; def $0", "=v"()5526  %vec1 = call <3 x ptr> asm "; def $0", "=v"()5527  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 2, i32 4, i32 4, i32 4>5528  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 325529  ret void5530}5531 5532define void @v_shuffle_v4p0_v3p0__3_4_4_4(ptr addrspace(1) inreg %ptr) {5533; GFX900-LABEL: v_shuffle_v4p0_v3p0__3_4_4_4:5534; GFX900:       ; %bb.0:5535; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5536; GFX900-NEXT:    ;;#ASMSTART5537; GFX900-NEXT:    ; def v[0:5]5538; GFX900-NEXT:    ;;#ASMEND5539; GFX900-NEXT:    v_mov_b32_e32 v6, 05540; GFX900-NEXT:    v_mov_b32_e32 v4, v25541; GFX900-NEXT:    v_mov_b32_e32 v5, v35542; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:165543; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]5544; GFX900-NEXT:    s_waitcnt vmcnt(0)5545; GFX900-NEXT:    s_setpc_b64 s[30:31]5546;5547; GFX90A-LABEL: v_shuffle_v4p0_v3p0__3_4_4_4:5548; GFX90A:       ; %bb.0:5549; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5550; GFX90A-NEXT:    ;;#ASMSTART5551; GFX90A-NEXT:    ; def v[0:5]5552; GFX90A-NEXT:    ;;#ASMEND5553; GFX90A-NEXT:    v_mov_b32_e32 v6, 05554; GFX90A-NEXT:    v_mov_b32_e32 v4, v25555; GFX90A-NEXT:    v_mov_b32_e32 v5, v35556; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:165557; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]5558; GFX90A-NEXT:    s_waitcnt vmcnt(0)5559; GFX90A-NEXT:    s_setpc_b64 s[30:31]5560;5561; GFX942-LABEL: v_shuffle_v4p0_v3p0__3_4_4_4:5562; GFX942:       ; %bb.0:5563; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5564; GFX942-NEXT:    ;;#ASMSTART5565; GFX942-NEXT:    ; def v[0:5]5566; GFX942-NEXT:    ;;#ASMEND5567; GFX942-NEXT:    v_mov_b32_e32 v6, 05568; GFX942-NEXT:    v_mov_b32_e32 v4, v25569; GFX942-NEXT:    v_mov_b32_e32 v5, v35570; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] offset:165571; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]5572; GFX942-NEXT:    s_waitcnt vmcnt(0)5573; GFX942-NEXT:    s_setpc_b64 s[30:31]5574  %vec0 = call <3 x ptr> asm "; def $0", "=v"()5575  %vec1 = call <3 x ptr> asm "; def $0", "=v"()5576  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 3, i32 4, i32 4, i32 4>5577  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 325578  ret void5579}5580 5581define void @v_shuffle_v4p0_v3p0__4_4_4_4(ptr addrspace(1) inreg %ptr) {5582; GFX900-LABEL: v_shuffle_v4p0_v3p0__4_4_4_4:5583; GFX900:       ; %bb.0:5584; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5585; GFX900-NEXT:    ;;#ASMSTART5586; GFX900-NEXT:    ; def v[0:5]5587; GFX900-NEXT:    ;;#ASMEND5588; GFX900-NEXT:    v_mov_b32_e32 v6, 05589; GFX900-NEXT:    v_mov_b32_e32 v4, v25590; GFX900-NEXT:    v_mov_b32_e32 v5, v35591; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:165592; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]5593; GFX900-NEXT:    s_waitcnt vmcnt(0)5594; GFX900-NEXT:    s_setpc_b64 s[30:31]5595;5596; GFX90A-LABEL: v_shuffle_v4p0_v3p0__4_4_4_4:5597; GFX90A:       ; %bb.0:5598; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5599; GFX90A-NEXT:    ;;#ASMSTART5600; GFX90A-NEXT:    ; def v[0:5]5601; GFX90A-NEXT:    ;;#ASMEND5602; GFX90A-NEXT:    v_mov_b32_e32 v6, 05603; GFX90A-NEXT:    v_mov_b32_e32 v4, v25604; GFX90A-NEXT:    v_mov_b32_e32 v5, v35605; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:165606; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]5607; GFX90A-NEXT:    s_waitcnt vmcnt(0)5608; GFX90A-NEXT:    s_setpc_b64 s[30:31]5609;5610; GFX942-LABEL: v_shuffle_v4p0_v3p0__4_4_4_4:5611; GFX942:       ; %bb.0:5612; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5613; GFX942-NEXT:    ;;#ASMSTART5614; GFX942-NEXT:    ; def v[0:5]5615; GFX942-NEXT:    ;;#ASMEND5616; GFX942-NEXT:    v_mov_b32_e32 v6, 05617; GFX942-NEXT:    v_mov_b32_e32 v4, v25618; GFX942-NEXT:    v_mov_b32_e32 v5, v35619; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] offset:165620; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]5621; GFX942-NEXT:    s_waitcnt vmcnt(0)5622; GFX942-NEXT:    s_setpc_b64 s[30:31]5623  %vec0 = call <3 x ptr> asm "; def $0", "=v"()5624  %vec1 = call <3 x ptr> asm "; def $0", "=v"()5625  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 4, i32 4, i32 4, i32 4>5626  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 325627  ret void5628}5629 5630define void @v_shuffle_v4p0_v3p0__5_4_4_4(ptr addrspace(1) inreg %ptr) {5631; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_4_4_4:5632; GFX900:       ; %bb.0:5633; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5634; GFX900-NEXT:    ;;#ASMSTART5635; GFX900-NEXT:    ; def v[0:5]5636; GFX900-NEXT:    ;;#ASMEND5637; GFX900-NEXT:    v_mov_b32_e32 v8, 05638; GFX900-NEXT:    v_mov_b32_e32 v0, v25639; GFX900-NEXT:    v_mov_b32_e32 v1, v35640; GFX900-NEXT:    v_mov_b32_e32 v6, v25641; GFX900-NEXT:    v_mov_b32_e32 v7, v35642; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:165643; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]5644; GFX900-NEXT:    s_waitcnt vmcnt(0)5645; GFX900-NEXT:    s_setpc_b64 s[30:31]5646;5647; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_4_4_4:5648; GFX90A:       ; %bb.0:5649; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5650; GFX90A-NEXT:    ;;#ASMSTART5651; GFX90A-NEXT:    ; def v[0:5]5652; GFX90A-NEXT:    ;;#ASMEND5653; GFX90A-NEXT:    v_mov_b32_e32 v8, 05654; GFX90A-NEXT:    v_mov_b32_e32 v0, v25655; GFX90A-NEXT:    v_mov_b32_e32 v1, v35656; GFX90A-NEXT:    v_mov_b32_e32 v6, v25657; GFX90A-NEXT:    v_mov_b32_e32 v7, v35658; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:165659; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]5660; GFX90A-NEXT:    s_waitcnt vmcnt(0)5661; GFX90A-NEXT:    s_setpc_b64 s[30:31]5662;5663; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_4_4_4:5664; GFX942:       ; %bb.0:5665; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5666; GFX942-NEXT:    ;;#ASMSTART5667; GFX942-NEXT:    ; def v[0:5]5668; GFX942-NEXT:    ;;#ASMEND5669; GFX942-NEXT:    v_mov_b32_e32 v8, 05670; GFX942-NEXT:    v_mov_b32_e32 v0, v25671; GFX942-NEXT:    v_mov_b32_e32 v1, v35672; GFX942-NEXT:    v_mov_b32_e32 v6, v25673; GFX942-NEXT:    v_mov_b32_e32 v7, v35674; GFX942-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:165675; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]5676; GFX942-NEXT:    s_waitcnt vmcnt(0)5677; GFX942-NEXT:    s_setpc_b64 s[30:31]5678  %vec0 = call <3 x ptr> asm "; def $0", "=v"()5679  %vec1 = call <3 x ptr> asm "; def $0", "=v"()5680  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 4, i32 4, i32 4>5681  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 325682  ret void5683}5684 5685define void @v_shuffle_v4p0_v3p0__5_u_4_4(ptr addrspace(1) inreg %ptr) {5686; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_u_4_4:5687; GFX900:       ; %bb.0:5688; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5689; GFX900-NEXT:    ;;#ASMSTART5690; GFX900-NEXT:    ; def v[0:5]5691; GFX900-NEXT:    ;;#ASMEND5692; GFX900-NEXT:    v_mov_b32_e32 v6, 05693; GFX900-NEXT:    v_mov_b32_e32 v0, v25694; GFX900-NEXT:    v_mov_b32_e32 v1, v35695; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17] offset:165696; GFX900-NEXT:    global_store_dwordx4 v6, v[4:7], s[16:17]5697; GFX900-NEXT:    s_waitcnt vmcnt(0)5698; GFX900-NEXT:    s_setpc_b64 s[30:31]5699;5700; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_u_4_4:5701; GFX90A:       ; %bb.0:5702; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5703; GFX90A-NEXT:    ;;#ASMSTART5704; GFX90A-NEXT:    ; def v[0:5]5705; GFX90A-NEXT:    ;;#ASMEND5706; GFX90A-NEXT:    v_mov_b32_e32 v6, 05707; GFX90A-NEXT:    v_mov_b32_e32 v0, v25708; GFX90A-NEXT:    v_mov_b32_e32 v1, v35709; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17] offset:165710; GFX90A-NEXT:    global_store_dwordx4 v6, v[4:7], s[16:17]5711; GFX90A-NEXT:    s_waitcnt vmcnt(0)5712; GFX90A-NEXT:    s_setpc_b64 s[30:31]5713;5714; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_u_4_4:5715; GFX942:       ; %bb.0:5716; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5717; GFX942-NEXT:    ;;#ASMSTART5718; GFX942-NEXT:    ; def v[0:5]5719; GFX942-NEXT:    ;;#ASMEND5720; GFX942-NEXT:    v_mov_b32_e32 v6, 05721; GFX942-NEXT:    v_mov_b32_e32 v0, v25722; GFX942-NEXT:    v_mov_b32_e32 v1, v35723; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] offset:165724; GFX942-NEXT:    global_store_dwordx4 v6, v[4:7], s[0:1]5725; GFX942-NEXT:    s_waitcnt vmcnt(0)5726; GFX942-NEXT:    s_setpc_b64 s[30:31]5727  %vec0 = call <3 x ptr> asm "; def $0", "=v"()5728  %vec1 = call <3 x ptr> asm "; def $0", "=v"()5729  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 poison, i32 4, i32 4>5730  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 325731  ret void5732}5733 5734define void @v_shuffle_v4p0_v3p0__5_0_4_4(ptr addrspace(1) inreg %ptr) {5735; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_0_4_4:5736; GFX900:       ; %bb.0:5737; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5738; GFX900-NEXT:    ;;#ASMSTART5739; GFX900-NEXT:    ; def v[0:5]5740; GFX900-NEXT:    ;;#ASMEND5741; GFX900-NEXT:    v_mov_b32_e32 v12, 05742; GFX900-NEXT:    v_mov_b32_e32 v0, v25743; GFX900-NEXT:    v_mov_b32_e32 v1, v35744; GFX900-NEXT:    ;;#ASMSTART5745; GFX900-NEXT:    ; def v[6:11]5746; GFX900-NEXT:    ;;#ASMEND5747; GFX900-NEXT:    global_store_dwordx4 v12, v[0:3], s[16:17] offset:165748; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]5749; GFX900-NEXT:    s_waitcnt vmcnt(0)5750; GFX900-NEXT:    s_setpc_b64 s[30:31]5751;5752; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_0_4_4:5753; GFX90A:       ; %bb.0:5754; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5755; GFX90A-NEXT:    ;;#ASMSTART5756; GFX90A-NEXT:    ; def v[0:5]5757; GFX90A-NEXT:    ;;#ASMEND5758; GFX90A-NEXT:    v_mov_b32_e32 v12, 05759; GFX90A-NEXT:    v_mov_b32_e32 v0, v25760; GFX90A-NEXT:    v_mov_b32_e32 v1, v35761; GFX90A-NEXT:    ;;#ASMSTART5762; GFX90A-NEXT:    ; def v[6:11]5763; GFX90A-NEXT:    ;;#ASMEND5764; GFX90A-NEXT:    global_store_dwordx4 v12, v[0:3], s[16:17] offset:165765; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]5766; GFX90A-NEXT:    s_waitcnt vmcnt(0)5767; GFX90A-NEXT:    s_setpc_b64 s[30:31]5768;5769; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_0_4_4:5770; GFX942:       ; %bb.0:5771; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5772; GFX942-NEXT:    ;;#ASMSTART5773; GFX942-NEXT:    ; def v[0:5]5774; GFX942-NEXT:    ;;#ASMEND5775; GFX942-NEXT:    v_mov_b32_e32 v12, 05776; GFX942-NEXT:    v_mov_b32_e32 v0, v25777; GFX942-NEXT:    v_mov_b32_e32 v1, v35778; GFX942-NEXT:    ;;#ASMSTART5779; GFX942-NEXT:    ; def v[6:11]5780; GFX942-NEXT:    ;;#ASMEND5781; GFX942-NEXT:    global_store_dwordx4 v12, v[0:3], s[0:1] offset:165782; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1]5783; GFX942-NEXT:    s_waitcnt vmcnt(0)5784; GFX942-NEXT:    s_setpc_b64 s[30:31]5785  %vec0 = call <3 x ptr> asm "; def $0", "=v"()5786  %vec1 = call <3 x ptr> asm "; def $0", "=v"()5787  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 0, i32 4, i32 4>5788  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 325789  ret void5790}5791 5792define void @v_shuffle_v4p0_v3p0__5_1_4_4(ptr addrspace(1) inreg %ptr) {5793; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_1_4_4:5794; GFX900:       ; %bb.0:5795; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5796; GFX900-NEXT:    ;;#ASMSTART5797; GFX900-NEXT:    ; def v[4:9]5798; GFX900-NEXT:    ;;#ASMEND5799; GFX900-NEXT:    ;;#ASMSTART5800; GFX900-NEXT:    ; def v[0:5]5801; GFX900-NEXT:    ;;#ASMEND5802; GFX900-NEXT:    v_mov_b32_e32 v10, 05803; GFX900-NEXT:    v_mov_b32_e32 v0, v25804; GFX900-NEXT:    v_mov_b32_e32 v1, v35805; GFX900-NEXT:    global_store_dwordx4 v10, v[0:3], s[16:17] offset:165806; GFX900-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]5807; GFX900-NEXT:    s_waitcnt vmcnt(0)5808; GFX900-NEXT:    s_setpc_b64 s[30:31]5809;5810; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_1_4_4:5811; GFX90A:       ; %bb.0:5812; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5813; GFX90A-NEXT:    ;;#ASMSTART5814; GFX90A-NEXT:    ; def v[4:9]5815; GFX90A-NEXT:    ;;#ASMEND5816; GFX90A-NEXT:    ;;#ASMSTART5817; GFX90A-NEXT:    ; def v[0:5]5818; GFX90A-NEXT:    ;;#ASMEND5819; GFX90A-NEXT:    v_mov_b32_e32 v10, 05820; GFX90A-NEXT:    v_mov_b32_e32 v0, v25821; GFX90A-NEXT:    v_mov_b32_e32 v1, v35822; GFX90A-NEXT:    global_store_dwordx4 v10, v[0:3], s[16:17] offset:165823; GFX90A-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]5824; GFX90A-NEXT:    s_waitcnt vmcnt(0)5825; GFX90A-NEXT:    s_setpc_b64 s[30:31]5826;5827; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_1_4_4:5828; GFX942:       ; %bb.0:5829; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5830; GFX942-NEXT:    ;;#ASMSTART5831; GFX942-NEXT:    ; def v[4:9]5832; GFX942-NEXT:    ;;#ASMEND5833; GFX942-NEXT:    v_mov_b32_e32 v10, 05834; GFX942-NEXT:    ;;#ASMSTART5835; GFX942-NEXT:    ; def v[0:5]5836; GFX942-NEXT:    ;;#ASMEND5837; GFX942-NEXT:    s_nop 05838; GFX942-NEXT:    v_mov_b32_e32 v0, v25839; GFX942-NEXT:    v_mov_b32_e32 v1, v35840; GFX942-NEXT:    global_store_dwordx4 v10, v[0:3], s[0:1] offset:165841; GFX942-NEXT:    global_store_dwordx4 v10, v[4:7], s[0:1]5842; GFX942-NEXT:    s_waitcnt vmcnt(0)5843; GFX942-NEXT:    s_setpc_b64 s[30:31]5844  %vec0 = call <3 x ptr> asm "; def $0", "=v"()5845  %vec1 = call <3 x ptr> asm "; def $0", "=v"()5846  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 1, i32 4, i32 4>5847  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 325848  ret void5849}5850 5851define void @v_shuffle_v4p0_v3p0__5_2_4_4(ptr addrspace(1) inreg %ptr) {5852; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_2_4_4:5853; GFX900:       ; %bb.0:5854; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5855; GFX900-NEXT:    ;;#ASMSTART5856; GFX900-NEXT:    ; def v[2:7]5857; GFX900-NEXT:    ;;#ASMEND5858; GFX900-NEXT:    ;;#ASMSTART5859; GFX900-NEXT:    ; def v[0:5]5860; GFX900-NEXT:    ;;#ASMEND5861; GFX900-NEXT:    v_mov_b32_e32 v8, 05862; GFX900-NEXT:    v_mov_b32_e32 v0, v25863; GFX900-NEXT:    v_mov_b32_e32 v1, v35864; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:165865; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]5866; GFX900-NEXT:    s_waitcnt vmcnt(0)5867; GFX900-NEXT:    s_setpc_b64 s[30:31]5868;5869; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_2_4_4:5870; GFX90A:       ; %bb.0:5871; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5872; GFX90A-NEXT:    ;;#ASMSTART5873; GFX90A-NEXT:    ; def v[2:7]5874; GFX90A-NEXT:    ;;#ASMEND5875; GFX90A-NEXT:    ;;#ASMSTART5876; GFX90A-NEXT:    ; def v[0:5]5877; GFX90A-NEXT:    ;;#ASMEND5878; GFX90A-NEXT:    v_mov_b32_e32 v8, 05879; GFX90A-NEXT:    v_mov_b32_e32 v0, v25880; GFX90A-NEXT:    v_mov_b32_e32 v1, v35881; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:165882; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]5883; GFX90A-NEXT:    s_waitcnt vmcnt(0)5884; GFX90A-NEXT:    s_setpc_b64 s[30:31]5885;5886; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_2_4_4:5887; GFX942:       ; %bb.0:5888; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5889; GFX942-NEXT:    ;;#ASMSTART5890; GFX942-NEXT:    ; def v[2:7]5891; GFX942-NEXT:    ;;#ASMEND5892; GFX942-NEXT:    v_mov_b32_e32 v8, 05893; GFX942-NEXT:    ;;#ASMSTART5894; GFX942-NEXT:    ; def v[0:5]5895; GFX942-NEXT:    ;;#ASMEND5896; GFX942-NEXT:    s_nop 05897; GFX942-NEXT:    v_mov_b32_e32 v0, v25898; GFX942-NEXT:    v_mov_b32_e32 v1, v35899; GFX942-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:165900; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]5901; GFX942-NEXT:    s_waitcnt vmcnt(0)5902; GFX942-NEXT:    s_setpc_b64 s[30:31]5903  %vec0 = call <3 x ptr> asm "; def $0", "=v"()5904  %vec1 = call <3 x ptr> asm "; def $0", "=v"()5905  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 2, i32 4, i32 4>5906  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 325907  ret void5908}5909 5910define void @v_shuffle_v4p0_v3p0__5_3_4_4(ptr addrspace(1) inreg %ptr) {5911; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_3_4_4:5912; GFX900:       ; %bb.0:5913; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5914; GFX900-NEXT:    v_mov_b32_e32 v10, 05915; GFX900-NEXT:    ;;#ASMSTART5916; GFX900-NEXT:    ; def v[0:5]5917; GFX900-NEXT:    ;;#ASMEND5918; GFX900-NEXT:    v_mov_b32_e32 v6, v25919; GFX900-NEXT:    v_mov_b32_e32 v7, v35920; GFX900-NEXT:    v_mov_b32_e32 v8, v25921; GFX900-NEXT:    v_mov_b32_e32 v9, v35922; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:165923; GFX900-NEXT:    s_nop 05924; GFX900-NEXT:    v_mov_b32_e32 v6, v05925; GFX900-NEXT:    v_mov_b32_e32 v7, v15926; GFX900-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]5927; GFX900-NEXT:    s_waitcnt vmcnt(0)5928; GFX900-NEXT:    s_setpc_b64 s[30:31]5929;5930; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_3_4_4:5931; GFX90A:       ; %bb.0:5932; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5933; GFX90A-NEXT:    v_mov_b32_e32 v8, 05934; GFX90A-NEXT:    ;;#ASMSTART5935; GFX90A-NEXT:    ; def v[0:5]5936; GFX90A-NEXT:    ;;#ASMEND5937; GFX90A-NEXT:    v_mov_b32_e32 v10, v25938; GFX90A-NEXT:    v_mov_b32_e32 v11, v35939; GFX90A-NEXT:    v_mov_b32_e32 v12, v25940; GFX90A-NEXT:    v_mov_b32_e32 v13, v35941; GFX90A-NEXT:    v_mov_b32_e32 v6, v05942; GFX90A-NEXT:    v_mov_b32_e32 v7, v15943; GFX90A-NEXT:    global_store_dwordx4 v8, v[10:13], s[16:17] offset:165944; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]5945; GFX90A-NEXT:    s_waitcnt vmcnt(0)5946; GFX90A-NEXT:    s_setpc_b64 s[30:31]5947;5948; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_3_4_4:5949; GFX942:       ; %bb.0:5950; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5951; GFX942-NEXT:    v_mov_b32_e32 v8, 05952; GFX942-NEXT:    ;;#ASMSTART5953; GFX942-NEXT:    ; def v[0:5]5954; GFX942-NEXT:    ;;#ASMEND5955; GFX942-NEXT:    s_nop 05956; GFX942-NEXT:    v_mov_b32_e32 v10, v25957; GFX942-NEXT:    v_mov_b32_e32 v11, v35958; GFX942-NEXT:    v_mov_b32_e32 v12, v25959; GFX942-NEXT:    v_mov_b32_e32 v13, v35960; GFX942-NEXT:    v_mov_b32_e32 v6, v05961; GFX942-NEXT:    v_mov_b32_e32 v7, v15962; GFX942-NEXT:    global_store_dwordx4 v8, v[10:13], s[0:1] offset:165963; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]5964; GFX942-NEXT:    s_waitcnt vmcnt(0)5965; GFX942-NEXT:    s_setpc_b64 s[30:31]5966  %vec0 = call <3 x ptr> asm "; def $0", "=v"()5967  %vec1 = call <3 x ptr> asm "; def $0", "=v"()5968  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 3, i32 4, i32 4>5969  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 325970  ret void5971}5972 5973define void @v_shuffle_v4p0_v3p0__5_5_4_4(ptr addrspace(1) inreg %ptr) {5974; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_4_4:5975; GFX900:       ; %bb.0:5976; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5977; GFX900-NEXT:    ;;#ASMSTART5978; GFX900-NEXT:    ; def v[0:5]5979; GFX900-NEXT:    ;;#ASMEND5980; GFX900-NEXT:    v_mov_b32_e32 v8, 05981; GFX900-NEXT:    v_mov_b32_e32 v0, v25982; GFX900-NEXT:    v_mov_b32_e32 v1, v35983; GFX900-NEXT:    v_mov_b32_e32 v6, v45984; GFX900-NEXT:    v_mov_b32_e32 v7, v55985; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:165986; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]5987; GFX900-NEXT:    s_waitcnt vmcnt(0)5988; GFX900-NEXT:    s_setpc_b64 s[30:31]5989;5990; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_4_4:5991; GFX90A:       ; %bb.0:5992; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5993; GFX90A-NEXT:    ;;#ASMSTART5994; GFX90A-NEXT:    ; def v[0:5]5995; GFX90A-NEXT:    ;;#ASMEND5996; GFX90A-NEXT:    v_mov_b32_e32 v8, 05997; GFX90A-NEXT:    v_mov_b32_e32 v0, v25998; GFX90A-NEXT:    v_mov_b32_e32 v1, v35999; GFX90A-NEXT:    v_mov_b32_e32 v6, v46000; GFX90A-NEXT:    v_mov_b32_e32 v7, v56001; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:166002; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]6003; GFX90A-NEXT:    s_waitcnt vmcnt(0)6004; GFX90A-NEXT:    s_setpc_b64 s[30:31]6005;6006; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_4_4:6007; GFX942:       ; %bb.0:6008; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6009; GFX942-NEXT:    ;;#ASMSTART6010; GFX942-NEXT:    ; def v[0:5]6011; GFX942-NEXT:    ;;#ASMEND6012; GFX942-NEXT:    v_mov_b32_e32 v8, 06013; GFX942-NEXT:    v_mov_b32_e32 v0, v26014; GFX942-NEXT:    v_mov_b32_e32 v1, v36015; GFX942-NEXT:    v_mov_b32_e32 v6, v46016; GFX942-NEXT:    v_mov_b32_e32 v7, v56017; GFX942-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:166018; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]6019; GFX942-NEXT:    s_waitcnt vmcnt(0)6020; GFX942-NEXT:    s_setpc_b64 s[30:31]6021  %vec0 = call <3 x ptr> asm "; def $0", "=v"()6022  %vec1 = call <3 x ptr> asm "; def $0", "=v"()6023  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 4>6024  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 326025  ret void6026}6027 6028define void @v_shuffle_v4p0_v3p0__5_5_u_4(ptr addrspace(1) inreg %ptr) {6029; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_u_4:6030; GFX900:       ; %bb.0:6031; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6032; GFX900-NEXT:    v_mov_b32_e32 v8, 06033; GFX900-NEXT:    ;;#ASMSTART6034; GFX900-NEXT:    ; def v[0:5]6035; GFX900-NEXT:    ;;#ASMEND6036; GFX900-NEXT:    v_mov_b32_e32 v6, v46037; GFX900-NEXT:    v_mov_b32_e32 v7, v56038; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:166039; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]6040; GFX900-NEXT:    s_waitcnt vmcnt(0)6041; GFX900-NEXT:    s_setpc_b64 s[30:31]6042;6043; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_u_4:6044; GFX90A:       ; %bb.0:6045; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6046; GFX90A-NEXT:    v_mov_b32_e32 v8, 06047; GFX90A-NEXT:    ;;#ASMSTART6048; GFX90A-NEXT:    ; def v[0:5]6049; GFX90A-NEXT:    ;;#ASMEND6050; GFX90A-NEXT:    v_mov_b32_e32 v6, v46051; GFX90A-NEXT:    v_mov_b32_e32 v7, v56052; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:166053; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]6054; GFX90A-NEXT:    s_waitcnt vmcnt(0)6055; GFX90A-NEXT:    s_setpc_b64 s[30:31]6056;6057; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_u_4:6058; GFX942:       ; %bb.0:6059; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6060; GFX942-NEXT:    v_mov_b32_e32 v8, 06061; GFX942-NEXT:    ;;#ASMSTART6062; GFX942-NEXT:    ; def v[0:5]6063; GFX942-NEXT:    ;;#ASMEND6064; GFX942-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:166065; GFX942-NEXT:    v_mov_b32_e32 v6, v46066; GFX942-NEXT:    v_mov_b32_e32 v7, v56067; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]6068; GFX942-NEXT:    s_waitcnt vmcnt(0)6069; GFX942-NEXT:    s_setpc_b64 s[30:31]6070  %vec0 = call <3 x ptr> asm "; def $0", "=v"()6071  %vec1 = call <3 x ptr> asm "; def $0", "=v"()6072  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 4>6073  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 326074  ret void6075}6076 6077define void @v_shuffle_v4p0_v3p0__5_5_0_4(ptr addrspace(1) inreg %ptr) {6078; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_0_4:6079; GFX900:       ; %bb.0:6080; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6081; GFX900-NEXT:    ;;#ASMSTART6082; GFX900-NEXT:    ; def v[6:11]6083; GFX900-NEXT:    ;;#ASMEND6084; GFX900-NEXT:    v_mov_b32_e32 v12, 06085; GFX900-NEXT:    ;;#ASMSTART6086; GFX900-NEXT:    ; def v[0:5]6087; GFX900-NEXT:    ;;#ASMEND6088; GFX900-NEXT:    v_mov_b32_e32 v8, v26089; GFX900-NEXT:    v_mov_b32_e32 v9, v36090; GFX900-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17] offset:166091; GFX900-NEXT:    s_nop 06092; GFX900-NEXT:    v_mov_b32_e32 v6, v46093; GFX900-NEXT:    v_mov_b32_e32 v7, v56094; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]6095; GFX900-NEXT:    s_waitcnt vmcnt(0)6096; GFX900-NEXT:    s_setpc_b64 s[30:31]6097;6098; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_0_4:6099; GFX90A:       ; %bb.0:6100; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6101; GFX90A-NEXT:    ;;#ASMSTART6102; GFX90A-NEXT:    ; def v[6:11]6103; GFX90A-NEXT:    ;;#ASMEND6104; GFX90A-NEXT:    v_mov_b32_e32 v12, 06105; GFX90A-NEXT:    ;;#ASMSTART6106; GFX90A-NEXT:    ; def v[0:5]6107; GFX90A-NEXT:    ;;#ASMEND6108; GFX90A-NEXT:    v_mov_b32_e32 v8, v26109; GFX90A-NEXT:    v_mov_b32_e32 v9, v36110; GFX90A-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17] offset:166111; GFX90A-NEXT:    s_nop 06112; GFX90A-NEXT:    v_mov_b32_e32 v6, v46113; GFX90A-NEXT:    v_mov_b32_e32 v7, v56114; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]6115; GFX90A-NEXT:    s_waitcnt vmcnt(0)6116; GFX90A-NEXT:    s_setpc_b64 s[30:31]6117;6118; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_0_4:6119; GFX942:       ; %bb.0:6120; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6121; GFX942-NEXT:    ;;#ASMSTART6122; GFX942-NEXT:    ; def v[6:11]6123; GFX942-NEXT:    ;;#ASMEND6124; GFX942-NEXT:    v_mov_b32_e32 v12, 06125; GFX942-NEXT:    ;;#ASMSTART6126; GFX942-NEXT:    ; def v[0:5]6127; GFX942-NEXT:    ;;#ASMEND6128; GFX942-NEXT:    s_nop 06129; GFX942-NEXT:    v_mov_b32_e32 v8, v26130; GFX942-NEXT:    v_mov_b32_e32 v9, v36131; GFX942-NEXT:    global_store_dwordx4 v12, v[6:9], s[0:1] offset:166132; GFX942-NEXT:    s_nop 16133; GFX942-NEXT:    v_mov_b32_e32 v6, v46134; GFX942-NEXT:    v_mov_b32_e32 v7, v56135; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1]6136; GFX942-NEXT:    s_waitcnt vmcnt(0)6137; GFX942-NEXT:    s_setpc_b64 s[30:31]6138  %vec0 = call <3 x ptr> asm "; def $0", "=v"()6139  %vec1 = call <3 x ptr> asm "; def $0", "=v"()6140  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 4>6141  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 326142  ret void6143}6144 6145define void @v_shuffle_v4p0_v3p0__5_5_1_4(ptr addrspace(1) inreg %ptr) {6146; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_1_4:6147; GFX900:       ; %bb.0:6148; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6149; GFX900-NEXT:    ;;#ASMSTART6150; GFX900-NEXT:    ; def v[4:9]6151; GFX900-NEXT:    ;;#ASMEND6152; GFX900-NEXT:    v_mov_b32_e32 v10, 06153; GFX900-NEXT:    ;;#ASMSTART6154; GFX900-NEXT:    ; def v[0:5]6155; GFX900-NEXT:    ;;#ASMEND6156; GFX900-NEXT:    v_mov_b32_e32 v8, v26157; GFX900-NEXT:    v_mov_b32_e32 v9, v36158; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:166159; GFX900-NEXT:    s_nop 06160; GFX900-NEXT:    v_mov_b32_e32 v6, v46161; GFX900-NEXT:    v_mov_b32_e32 v7, v56162; GFX900-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]6163; GFX900-NEXT:    s_waitcnt vmcnt(0)6164; GFX900-NEXT:    s_setpc_b64 s[30:31]6165;6166; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_1_4:6167; GFX90A:       ; %bb.0:6168; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6169; GFX90A-NEXT:    ;;#ASMSTART6170; GFX90A-NEXT:    ; def v[4:9]6171; GFX90A-NEXT:    ;;#ASMEND6172; GFX90A-NEXT:    v_mov_b32_e32 v10, 06173; GFX90A-NEXT:    ;;#ASMSTART6174; GFX90A-NEXT:    ; def v[0:5]6175; GFX90A-NEXT:    ;;#ASMEND6176; GFX90A-NEXT:    v_mov_b32_e32 v8, v26177; GFX90A-NEXT:    v_mov_b32_e32 v9, v36178; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:166179; GFX90A-NEXT:    s_nop 06180; GFX90A-NEXT:    v_mov_b32_e32 v6, v46181; GFX90A-NEXT:    v_mov_b32_e32 v7, v56182; GFX90A-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]6183; GFX90A-NEXT:    s_waitcnt vmcnt(0)6184; GFX90A-NEXT:    s_setpc_b64 s[30:31]6185;6186; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_1_4:6187; GFX942:       ; %bb.0:6188; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6189; GFX942-NEXT:    ;;#ASMSTART6190; GFX942-NEXT:    ; def v[4:9]6191; GFX942-NEXT:    ;;#ASMEND6192; GFX942-NEXT:    v_mov_b32_e32 v10, 06193; GFX942-NEXT:    ;;#ASMSTART6194; GFX942-NEXT:    ; def v[0:5]6195; GFX942-NEXT:    ;;#ASMEND6196; GFX942-NEXT:    s_nop 06197; GFX942-NEXT:    v_mov_b32_e32 v8, v26198; GFX942-NEXT:    v_mov_b32_e32 v9, v36199; GFX942-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1] offset:166200; GFX942-NEXT:    s_nop 16201; GFX942-NEXT:    v_mov_b32_e32 v6, v46202; GFX942-NEXT:    v_mov_b32_e32 v7, v56203; GFX942-NEXT:    global_store_dwordx4 v10, v[4:7], s[0:1]6204; GFX942-NEXT:    s_waitcnt vmcnt(0)6205; GFX942-NEXT:    s_setpc_b64 s[30:31]6206  %vec0 = call <3 x ptr> asm "; def $0", "=v"()6207  %vec1 = call <3 x ptr> asm "; def $0", "=v"()6208  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 4>6209  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 326210  ret void6211}6212 6213define void @v_shuffle_v4p0_v3p0__5_5_2_4(ptr addrspace(1) inreg %ptr) {6214; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_2_4:6215; GFX900:       ; %bb.0:6216; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6217; GFX900-NEXT:    ;;#ASMSTART6218; GFX900-NEXT:    ; def v[6:11]6219; GFX900-NEXT:    ;;#ASMEND6220; GFX900-NEXT:    v_mov_b32_e32 v14, 06221; GFX900-NEXT:    v_mov_b32_e32 v6, v86222; GFX900-NEXT:    v_mov_b32_e32 v7, v96223; GFX900-NEXT:    v_mov_b32_e32 v12, v106224; GFX900-NEXT:    v_mov_b32_e32 v13, v116225; GFX900-NEXT:    ;;#ASMSTART6226; GFX900-NEXT:    ; def v[0:5]6227; GFX900-NEXT:    ;;#ASMEND6228; GFX900-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17] offset:166229; GFX900-NEXT:    global_store_dwordx4 v14, v[10:13], s[16:17]6230; GFX900-NEXT:    s_waitcnt vmcnt(0)6231; GFX900-NEXT:    s_setpc_b64 s[30:31]6232;6233; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_2_4:6234; GFX90A:       ; %bb.0:6235; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6236; GFX90A-NEXT:    ;;#ASMSTART6237; GFX90A-NEXT:    ; def v[6:11]6238; GFX90A-NEXT:    ;;#ASMEND6239; GFX90A-NEXT:    v_mov_b32_e32 v14, 06240; GFX90A-NEXT:    v_mov_b32_e32 v6, v86241; GFX90A-NEXT:    v_mov_b32_e32 v7, v96242; GFX90A-NEXT:    v_mov_b32_e32 v12, v106243; GFX90A-NEXT:    v_mov_b32_e32 v13, v116244; GFX90A-NEXT:    ;;#ASMSTART6245; GFX90A-NEXT:    ; def v[0:5]6246; GFX90A-NEXT:    ;;#ASMEND6247; GFX90A-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17] offset:166248; GFX90A-NEXT:    global_store_dwordx4 v14, v[10:13], s[16:17]6249; GFX90A-NEXT:    s_waitcnt vmcnt(0)6250; GFX90A-NEXT:    s_setpc_b64 s[30:31]6251;6252; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_2_4:6253; GFX942:       ; %bb.0:6254; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6255; GFX942-NEXT:    ;;#ASMSTART6256; GFX942-NEXT:    ; def v[6:11]6257; GFX942-NEXT:    ;;#ASMEND6258; GFX942-NEXT:    v_mov_b32_e32 v14, 06259; GFX942-NEXT:    v_mov_b32_e32 v6, v86260; GFX942-NEXT:    v_mov_b32_e32 v7, v96261; GFX942-NEXT:    v_mov_b32_e32 v12, v106262; GFX942-NEXT:    v_mov_b32_e32 v13, v116263; GFX942-NEXT:    ;;#ASMSTART6264; GFX942-NEXT:    ; def v[0:5]6265; GFX942-NEXT:    ;;#ASMEND6266; GFX942-NEXT:    global_store_dwordx4 v14, v[4:7], s[0:1] offset:166267; GFX942-NEXT:    global_store_dwordx4 v14, v[10:13], s[0:1]6268; GFX942-NEXT:    s_waitcnt vmcnt(0)6269; GFX942-NEXT:    s_setpc_b64 s[30:31]6270  %vec0 = call <3 x ptr> asm "; def $0", "=v"()6271  %vec1 = call <3 x ptr> asm "; def $0", "=v"()6272  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 4>6273  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 326274  ret void6275}6276 6277define void @v_shuffle_v4p0_v3p0__5_5_3_4(ptr addrspace(1) inreg %ptr) {6278; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_3_4:6279; GFX900:       ; %bb.0:6280; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6281; GFX900-NEXT:    v_mov_b32_e32 v8, 06282; GFX900-NEXT:    ;;#ASMSTART6283; GFX900-NEXT:    ; def v[0:5]6284; GFX900-NEXT:    ;;#ASMEND6285; GFX900-NEXT:    v_mov_b32_e32 v6, v46286; GFX900-NEXT:    v_mov_b32_e32 v7, v56287; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:166288; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]6289; GFX900-NEXT:    s_waitcnt vmcnt(0)6290; GFX900-NEXT:    s_setpc_b64 s[30:31]6291;6292; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_3_4:6293; GFX90A:       ; %bb.0:6294; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6295; GFX90A-NEXT:    v_mov_b32_e32 v8, 06296; GFX90A-NEXT:    ;;#ASMSTART6297; GFX90A-NEXT:    ; def v[0:5]6298; GFX90A-NEXT:    ;;#ASMEND6299; GFX90A-NEXT:    v_mov_b32_e32 v6, v46300; GFX90A-NEXT:    v_mov_b32_e32 v7, v56301; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:166302; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]6303; GFX90A-NEXT:    s_waitcnt vmcnt(0)6304; GFX90A-NEXT:    s_setpc_b64 s[30:31]6305;6306; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_3_4:6307; GFX942:       ; %bb.0:6308; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6309; GFX942-NEXT:    v_mov_b32_e32 v8, 06310; GFX942-NEXT:    ;;#ASMSTART6311; GFX942-NEXT:    ; def v[0:5]6312; GFX942-NEXT:    ;;#ASMEND6313; GFX942-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:166314; GFX942-NEXT:    v_mov_b32_e32 v6, v46315; GFX942-NEXT:    v_mov_b32_e32 v7, v56316; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]6317; GFX942-NEXT:    s_waitcnt vmcnt(0)6318; GFX942-NEXT:    s_setpc_b64 s[30:31]6319  %vec0 = call <3 x ptr> asm "; def $0", "=v"()6320  %vec1 = call <3 x ptr> asm "; def $0", "=v"()6321  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 4>6322  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 326323  ret void6324}6325 6326define void @v_shuffle_v4p0_v3p0__u_5_5_5(ptr addrspace(1) inreg %ptr) {6327; GFX900-LABEL: v_shuffle_v4p0_v3p0__u_5_5_5:6328; GFX900:       ; %bb.0:6329; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6330; GFX900-NEXT:    v_mov_b32_e32 v8, 06331; GFX900-NEXT:    ;;#ASMSTART6332; GFX900-NEXT:    ; def v[0:5]6333; GFX900-NEXT:    ;;#ASMEND6334; GFX900-NEXT:    v_mov_b32_e32 v6, v46335; GFX900-NEXT:    v_mov_b32_e32 v7, v56336; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:166337; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]6338; GFX900-NEXT:    s_waitcnt vmcnt(0)6339; GFX900-NEXT:    s_setpc_b64 s[30:31]6340;6341; GFX90A-LABEL: v_shuffle_v4p0_v3p0__u_5_5_5:6342; GFX90A:       ; %bb.0:6343; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6344; GFX90A-NEXT:    v_mov_b32_e32 v8, 06345; GFX90A-NEXT:    ;;#ASMSTART6346; GFX90A-NEXT:    ; def v[0:5]6347; GFX90A-NEXT:    ;;#ASMEND6348; GFX90A-NEXT:    v_mov_b32_e32 v6, v46349; GFX90A-NEXT:    v_mov_b32_e32 v7, v56350; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:166351; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]6352; GFX90A-NEXT:    s_waitcnt vmcnt(0)6353; GFX90A-NEXT:    s_setpc_b64 s[30:31]6354;6355; GFX942-LABEL: v_shuffle_v4p0_v3p0__u_5_5_5:6356; GFX942:       ; %bb.0:6357; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6358; GFX942-NEXT:    v_mov_b32_e32 v8, 06359; GFX942-NEXT:    ;;#ASMSTART6360; GFX942-NEXT:    ; def v[0:5]6361; GFX942-NEXT:    ;;#ASMEND6362; GFX942-NEXT:    s_nop 06363; GFX942-NEXT:    v_mov_b32_e32 v6, v46364; GFX942-NEXT:    v_mov_b32_e32 v7, v56365; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:166366; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1]6367; GFX942-NEXT:    s_waitcnt vmcnt(0)6368; GFX942-NEXT:    s_setpc_b64 s[30:31]6369  %vec0 = call <3 x ptr> asm "; def $0", "=v"()6370  %vec1 = call <3 x ptr> asm "; def $0", "=v"()6371  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 poison, i32 5, i32 5, i32 5>6372  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 326373  ret void6374}6375 6376define void @v_shuffle_v4p0_v3p0__0_5_5_5(ptr addrspace(1) inreg %ptr) {6377; GFX900-LABEL: v_shuffle_v4p0_v3p0__0_5_5_5:6378; GFX900:       ; %bb.0:6379; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6380; GFX900-NEXT:    ;;#ASMSTART6381; GFX900-NEXT:    ; def v[8:13]6382; GFX900-NEXT:    ;;#ASMEND6383; GFX900-NEXT:    v_mov_b32_e32 v14, 06384; GFX900-NEXT:    ;;#ASMSTART6385; GFX900-NEXT:    ; def v[0:5]6386; GFX900-NEXT:    ;;#ASMEND6387; GFX900-NEXT:    v_mov_b32_e32 v6, v46388; GFX900-NEXT:    v_mov_b32_e32 v7, v56389; GFX900-NEXT:    v_mov_b32_e32 v10, v46390; GFX900-NEXT:    v_mov_b32_e32 v11, v56391; GFX900-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17] offset:166392; GFX900-NEXT:    global_store_dwordx4 v14, v[8:11], s[16:17]6393; GFX900-NEXT:    s_waitcnt vmcnt(0)6394; GFX900-NEXT:    s_setpc_b64 s[30:31]6395;6396; GFX90A-LABEL: v_shuffle_v4p0_v3p0__0_5_5_5:6397; GFX90A:       ; %bb.0:6398; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6399; GFX90A-NEXT:    ;;#ASMSTART6400; GFX90A-NEXT:    ; def v[8:13]6401; GFX90A-NEXT:    ;;#ASMEND6402; GFX90A-NEXT:    v_mov_b32_e32 v14, 06403; GFX90A-NEXT:    ;;#ASMSTART6404; GFX90A-NEXT:    ; def v[0:5]6405; GFX90A-NEXT:    ;;#ASMEND6406; GFX90A-NEXT:    v_mov_b32_e32 v6, v46407; GFX90A-NEXT:    v_mov_b32_e32 v7, v56408; GFX90A-NEXT:    v_mov_b32_e32 v10, v46409; GFX90A-NEXT:    v_mov_b32_e32 v11, v56410; GFX90A-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17] offset:166411; GFX90A-NEXT:    global_store_dwordx4 v14, v[8:11], s[16:17]6412; GFX90A-NEXT:    s_waitcnt vmcnt(0)6413; GFX90A-NEXT:    s_setpc_b64 s[30:31]6414;6415; GFX942-LABEL: v_shuffle_v4p0_v3p0__0_5_5_5:6416; GFX942:       ; %bb.0:6417; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6418; GFX942-NEXT:    ;;#ASMSTART6419; GFX942-NEXT:    ; def v[8:13]6420; GFX942-NEXT:    ;;#ASMEND6421; GFX942-NEXT:    v_mov_b32_e32 v14, 06422; GFX942-NEXT:    ;;#ASMSTART6423; GFX942-NEXT:    ; def v[0:5]6424; GFX942-NEXT:    ;;#ASMEND6425; GFX942-NEXT:    s_nop 06426; GFX942-NEXT:    v_mov_b32_e32 v6, v46427; GFX942-NEXT:    v_mov_b32_e32 v7, v56428; GFX942-NEXT:    v_mov_b32_e32 v10, v46429; GFX942-NEXT:    v_mov_b32_e32 v11, v56430; GFX942-NEXT:    global_store_dwordx4 v14, v[4:7], s[0:1] offset:166431; GFX942-NEXT:    global_store_dwordx4 v14, v[8:11], s[0:1]6432; GFX942-NEXT:    s_waitcnt vmcnt(0)6433; GFX942-NEXT:    s_setpc_b64 s[30:31]6434  %vec0 = call <3 x ptr> asm "; def $0", "=v"()6435  %vec1 = call <3 x ptr> asm "; def $0", "=v"()6436  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 0, i32 5, i32 5, i32 5>6437  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 326438  ret void6439}6440 6441define void @v_shuffle_v4p0_v3p0__1_5_5_5(ptr addrspace(1) inreg %ptr) {6442; GFX900-LABEL: v_shuffle_v4p0_v3p0__1_5_5_5:6443; GFX900:       ; %bb.0:6444; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6445; GFX900-NEXT:    ;;#ASMSTART6446; GFX900-NEXT:    ; def v[6:11]6447; GFX900-NEXT:    ;;#ASMEND6448; GFX900-NEXT:    v_mov_b32_e32 v12, 06449; GFX900-NEXT:    ;;#ASMSTART6450; GFX900-NEXT:    ; def v[0:5]6451; GFX900-NEXT:    ;;#ASMEND6452; GFX900-NEXT:    v_mov_b32_e32 v6, v46453; GFX900-NEXT:    v_mov_b32_e32 v7, v56454; GFX900-NEXT:    v_mov_b32_e32 v10, v46455; GFX900-NEXT:    v_mov_b32_e32 v11, v56456; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17] offset:166457; GFX900-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17]6458; GFX900-NEXT:    s_waitcnt vmcnt(0)6459; GFX900-NEXT:    s_setpc_b64 s[30:31]6460;6461; GFX90A-LABEL: v_shuffle_v4p0_v3p0__1_5_5_5:6462; GFX90A:       ; %bb.0:6463; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6464; GFX90A-NEXT:    ;;#ASMSTART6465; GFX90A-NEXT:    ; def v[6:11]6466; GFX90A-NEXT:    ;;#ASMEND6467; GFX90A-NEXT:    v_mov_b32_e32 v12, 06468; GFX90A-NEXT:    ;;#ASMSTART6469; GFX90A-NEXT:    ; def v[0:5]6470; GFX90A-NEXT:    ;;#ASMEND6471; GFX90A-NEXT:    v_mov_b32_e32 v6, v46472; GFX90A-NEXT:    v_mov_b32_e32 v7, v56473; GFX90A-NEXT:    v_mov_b32_e32 v10, v46474; GFX90A-NEXT:    v_mov_b32_e32 v11, v56475; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17] offset:166476; GFX90A-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17]6477; GFX90A-NEXT:    s_waitcnt vmcnt(0)6478; GFX90A-NEXT:    s_setpc_b64 s[30:31]6479;6480; GFX942-LABEL: v_shuffle_v4p0_v3p0__1_5_5_5:6481; GFX942:       ; %bb.0:6482; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6483; GFX942-NEXT:    ;;#ASMSTART6484; GFX942-NEXT:    ; def v[6:11]6485; GFX942-NEXT:    ;;#ASMEND6486; GFX942-NEXT:    v_mov_b32_e32 v12, 06487; GFX942-NEXT:    ;;#ASMSTART6488; GFX942-NEXT:    ; def v[0:5]6489; GFX942-NEXT:    ;;#ASMEND6490; GFX942-NEXT:    s_nop 06491; GFX942-NEXT:    v_mov_b32_e32 v6, v46492; GFX942-NEXT:    v_mov_b32_e32 v7, v56493; GFX942-NEXT:    v_mov_b32_e32 v10, v46494; GFX942-NEXT:    v_mov_b32_e32 v11, v56495; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1] offset:166496; GFX942-NEXT:    global_store_dwordx4 v12, v[8:11], s[0:1]6497; GFX942-NEXT:    s_waitcnt vmcnt(0)6498; GFX942-NEXT:    s_setpc_b64 s[30:31]6499  %vec0 = call <3 x ptr> asm "; def $0", "=v"()6500  %vec1 = call <3 x ptr> asm "; def $0", "=v"()6501  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 1, i32 5, i32 5, i32 5>6502  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 326503  ret void6504}6505 6506define void @v_shuffle_v4p0_v3p0__2_5_5_5(ptr addrspace(1) inreg %ptr) {6507; GFX900-LABEL: v_shuffle_v4p0_v3p0__2_5_5_5:6508; GFX900:       ; %bb.0:6509; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6510; GFX900-NEXT:    ;;#ASMSTART6511; GFX900-NEXT:    ; def v[6:11]6512; GFX900-NEXT:    ;;#ASMEND6513; GFX900-NEXT:    v_mov_b32_e32 v14, 06514; GFX900-NEXT:    v_mov_b32_e32 v12, v106515; GFX900-NEXT:    v_mov_b32_e32 v13, v116516; GFX900-NEXT:    v_mov_b32_e32 v6, v106517; GFX900-NEXT:    v_mov_b32_e32 v7, v116518; GFX900-NEXT:    ;;#ASMSTART6519; GFX900-NEXT:    ; def v[0:5]6520; GFX900-NEXT:    ;;#ASMEND6521; GFX900-NEXT:    global_store_dwordx4 v14, v[10:13], s[16:17] offset:166522; GFX900-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17]6523; GFX900-NEXT:    s_waitcnt vmcnt(0)6524; GFX900-NEXT:    s_setpc_b64 s[30:31]6525;6526; GFX90A-LABEL: v_shuffle_v4p0_v3p0__2_5_5_5:6527; GFX90A:       ; %bb.0:6528; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6529; GFX90A-NEXT:    ;;#ASMSTART6530; GFX90A-NEXT:    ; def v[6:11]6531; GFX90A-NEXT:    ;;#ASMEND6532; GFX90A-NEXT:    v_mov_b32_e32 v14, 06533; GFX90A-NEXT:    v_mov_b32_e32 v12, v106534; GFX90A-NEXT:    v_mov_b32_e32 v13, v116535; GFX90A-NEXT:    v_mov_b32_e32 v6, v106536; GFX90A-NEXT:    v_mov_b32_e32 v7, v116537; GFX90A-NEXT:    ;;#ASMSTART6538; GFX90A-NEXT:    ; def v[0:5]6539; GFX90A-NEXT:    ;;#ASMEND6540; GFX90A-NEXT:    global_store_dwordx4 v14, v[10:13], s[16:17] offset:166541; GFX90A-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17]6542; GFX90A-NEXT:    s_waitcnt vmcnt(0)6543; GFX90A-NEXT:    s_setpc_b64 s[30:31]6544;6545; GFX942-LABEL: v_shuffle_v4p0_v3p0__2_5_5_5:6546; GFX942:       ; %bb.0:6547; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6548; GFX942-NEXT:    ;;#ASMSTART6549; GFX942-NEXT:    ; def v[6:11]6550; GFX942-NEXT:    ;;#ASMEND6551; GFX942-NEXT:    v_mov_b32_e32 v14, 06552; GFX942-NEXT:    v_mov_b32_e32 v12, v106553; GFX942-NEXT:    v_mov_b32_e32 v13, v116554; GFX942-NEXT:    v_mov_b32_e32 v6, v106555; GFX942-NEXT:    v_mov_b32_e32 v7, v116556; GFX942-NEXT:    ;;#ASMSTART6557; GFX942-NEXT:    ; def v[0:5]6558; GFX942-NEXT:    ;;#ASMEND6559; GFX942-NEXT:    global_store_dwordx4 v14, v[10:13], s[0:1] offset:166560; GFX942-NEXT:    global_store_dwordx4 v14, v[4:7], s[0:1]6561; GFX942-NEXT:    s_waitcnt vmcnt(0)6562; GFX942-NEXT:    s_setpc_b64 s[30:31]6563  %vec0 = call <3 x ptr> asm "; def $0", "=v"()6564  %vec1 = call <3 x ptr> asm "; def $0", "=v"()6565  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 2, i32 5, i32 5, i32 5>6566  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 326567  ret void6568}6569 6570define void @v_shuffle_v4p0_v3p0__3_5_5_5(ptr addrspace(1) inreg %ptr) {6571; GFX900-LABEL: v_shuffle_v4p0_v3p0__3_5_5_5:6572; GFX900:       ; %bb.0:6573; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6574; GFX900-NEXT:    ;;#ASMSTART6575; GFX900-NEXT:    ; def v[0:5]6576; GFX900-NEXT:    ;;#ASMEND6577; GFX900-NEXT:    v_mov_b32_e32 v8, 06578; GFX900-NEXT:    v_mov_b32_e32 v6, v46579; GFX900-NEXT:    v_mov_b32_e32 v7, v56580; GFX900-NEXT:    v_mov_b32_e32 v2, v46581; GFX900-NEXT:    v_mov_b32_e32 v3, v56582; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:166583; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]6584; GFX900-NEXT:    s_waitcnt vmcnt(0)6585; GFX900-NEXT:    s_setpc_b64 s[30:31]6586;6587; GFX90A-LABEL: v_shuffle_v4p0_v3p0__3_5_5_5:6588; GFX90A:       ; %bb.0:6589; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6590; GFX90A-NEXT:    ;;#ASMSTART6591; GFX90A-NEXT:    ; def v[0:5]6592; GFX90A-NEXT:    ;;#ASMEND6593; GFX90A-NEXT:    v_mov_b32_e32 v8, 06594; GFX90A-NEXT:    v_mov_b32_e32 v6, v46595; GFX90A-NEXT:    v_mov_b32_e32 v7, v56596; GFX90A-NEXT:    v_mov_b32_e32 v2, v46597; GFX90A-NEXT:    v_mov_b32_e32 v3, v56598; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:166599; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]6600; GFX90A-NEXT:    s_waitcnt vmcnt(0)6601; GFX90A-NEXT:    s_setpc_b64 s[30:31]6602;6603; GFX942-LABEL: v_shuffle_v4p0_v3p0__3_5_5_5:6604; GFX942:       ; %bb.0:6605; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6606; GFX942-NEXT:    ;;#ASMSTART6607; GFX942-NEXT:    ; def v[0:5]6608; GFX942-NEXT:    ;;#ASMEND6609; GFX942-NEXT:    v_mov_b32_e32 v8, 06610; GFX942-NEXT:    v_mov_b32_e32 v6, v46611; GFX942-NEXT:    v_mov_b32_e32 v7, v56612; GFX942-NEXT:    v_mov_b32_e32 v2, v46613; GFX942-NEXT:    v_mov_b32_e32 v3, v56614; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:166615; GFX942-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1]6616; GFX942-NEXT:    s_waitcnt vmcnt(0)6617; GFX942-NEXT:    s_setpc_b64 s[30:31]6618  %vec0 = call <3 x ptr> asm "; def $0", "=v"()6619  %vec1 = call <3 x ptr> asm "; def $0", "=v"()6620  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 3, i32 5, i32 5, i32 5>6621  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 326622  ret void6623}6624 6625define void @v_shuffle_v4p0_v3p0__4_5_5_5(ptr addrspace(1) inreg %ptr) {6626; GFX900-LABEL: v_shuffle_v4p0_v3p0__4_5_5_5:6627; GFX900:       ; %bb.0:6628; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6629; GFX900-NEXT:    v_mov_b32_e32 v8, 06630; GFX900-NEXT:    ;;#ASMSTART6631; GFX900-NEXT:    ; def v[0:5]6632; GFX900-NEXT:    ;;#ASMEND6633; GFX900-NEXT:    v_mov_b32_e32 v6, v46634; GFX900-NEXT:    v_mov_b32_e32 v7, v56635; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:166636; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]6637; GFX900-NEXT:    s_waitcnt vmcnt(0)6638; GFX900-NEXT:    s_setpc_b64 s[30:31]6639;6640; GFX90A-LABEL: v_shuffle_v4p0_v3p0__4_5_5_5:6641; GFX90A:       ; %bb.0:6642; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6643; GFX90A-NEXT:    v_mov_b32_e32 v8, 06644; GFX90A-NEXT:    ;;#ASMSTART6645; GFX90A-NEXT:    ; def v[0:5]6646; GFX90A-NEXT:    ;;#ASMEND6647; GFX90A-NEXT:    v_mov_b32_e32 v6, v46648; GFX90A-NEXT:    v_mov_b32_e32 v7, v56649; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:166650; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]6651; GFX90A-NEXT:    s_waitcnt vmcnt(0)6652; GFX90A-NEXT:    s_setpc_b64 s[30:31]6653;6654; GFX942-LABEL: v_shuffle_v4p0_v3p0__4_5_5_5:6655; GFX942:       ; %bb.0:6656; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6657; GFX942-NEXT:    v_mov_b32_e32 v8, 06658; GFX942-NEXT:    ;;#ASMSTART6659; GFX942-NEXT:    ; def v[0:5]6660; GFX942-NEXT:    ;;#ASMEND6661; GFX942-NEXT:    s_nop 06662; GFX942-NEXT:    v_mov_b32_e32 v6, v46663; GFX942-NEXT:    v_mov_b32_e32 v7, v56664; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:166665; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1]6666; GFX942-NEXT:    s_waitcnt vmcnt(0)6667; GFX942-NEXT:    s_setpc_b64 s[30:31]6668  %vec0 = call <3 x ptr> asm "; def $0", "=v"()6669  %vec1 = call <3 x ptr> asm "; def $0", "=v"()6670  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 4, i32 5, i32 5, i32 5>6671  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 326672  ret void6673}6674 6675define void @v_shuffle_v4p0_v3p0__5_u_5_5(ptr addrspace(1) inreg %ptr) {6676; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_u_5_5:6677; GFX900:       ; %bb.0:6678; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6679; GFX900-NEXT:    v_mov_b32_e32 v8, 06680; GFX900-NEXT:    ;;#ASMSTART6681; GFX900-NEXT:    ; def v[0:5]6682; GFX900-NEXT:    ;;#ASMEND6683; GFX900-NEXT:    v_mov_b32_e32 v6, v46684; GFX900-NEXT:    v_mov_b32_e32 v7, v56685; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:166686; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]6687; GFX900-NEXT:    s_waitcnt vmcnt(0)6688; GFX900-NEXT:    s_setpc_b64 s[30:31]6689;6690; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_u_5_5:6691; GFX90A:       ; %bb.0:6692; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6693; GFX90A-NEXT:    v_mov_b32_e32 v8, 06694; GFX90A-NEXT:    ;;#ASMSTART6695; GFX90A-NEXT:    ; def v[0:5]6696; GFX90A-NEXT:    ;;#ASMEND6697; GFX90A-NEXT:    v_mov_b32_e32 v6, v46698; GFX90A-NEXT:    v_mov_b32_e32 v7, v56699; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:166700; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]6701; GFX90A-NEXT:    s_waitcnt vmcnt(0)6702; GFX90A-NEXT:    s_setpc_b64 s[30:31]6703;6704; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_u_5_5:6705; GFX942:       ; %bb.0:6706; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6707; GFX942-NEXT:    v_mov_b32_e32 v8, 06708; GFX942-NEXT:    ;;#ASMSTART6709; GFX942-NEXT:    ; def v[0:5]6710; GFX942-NEXT:    ;;#ASMEND6711; GFX942-NEXT:    s_nop 06712; GFX942-NEXT:    v_mov_b32_e32 v6, v46713; GFX942-NEXT:    v_mov_b32_e32 v7, v56714; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:166715; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]6716; GFX942-NEXT:    s_waitcnt vmcnt(0)6717; GFX942-NEXT:    s_setpc_b64 s[30:31]6718  %vec0 = call <3 x ptr> asm "; def $0", "=v"()6719  %vec1 = call <3 x ptr> asm "; def $0", "=v"()6720  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 poison, i32 5, i32 5>6721  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 326722  ret void6723}6724 6725define void @v_shuffle_v4p0_v3p0__5_0_5_5(ptr addrspace(1) inreg %ptr) {6726; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_0_5_5:6727; GFX900:       ; %bb.0:6728; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6729; GFX900-NEXT:    v_mov_b32_e32 v14, 06730; GFX900-NEXT:    ;;#ASMSTART6731; GFX900-NEXT:    ; def v[0:5]6732; GFX900-NEXT:    ;;#ASMEND6733; GFX900-NEXT:    v_mov_b32_e32 v6, v46734; GFX900-NEXT:    v_mov_b32_e32 v7, v56735; GFX900-NEXT:    ;;#ASMSTART6736; GFX900-NEXT:    ; def v[8:13]6737; GFX900-NEXT:    ;;#ASMEND6738; GFX900-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17] offset:166739; GFX900-NEXT:    s_nop 06740; GFX900-NEXT:    v_mov_b32_e32 v6, v86741; GFX900-NEXT:    v_mov_b32_e32 v7, v96742; GFX900-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17]6743; GFX900-NEXT:    s_waitcnt vmcnt(0)6744; GFX900-NEXT:    s_setpc_b64 s[30:31]6745;6746; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_0_5_5:6747; GFX90A:       ; %bb.0:6748; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6749; GFX90A-NEXT:    v_mov_b32_e32 v14, 06750; GFX90A-NEXT:    ;;#ASMSTART6751; GFX90A-NEXT:    ; def v[0:5]6752; GFX90A-NEXT:    ;;#ASMEND6753; GFX90A-NEXT:    v_mov_b32_e32 v6, v46754; GFX90A-NEXT:    v_mov_b32_e32 v7, v56755; GFX90A-NEXT:    ;;#ASMSTART6756; GFX90A-NEXT:    ; def v[8:13]6757; GFX90A-NEXT:    ;;#ASMEND6758; GFX90A-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17] offset:166759; GFX90A-NEXT:    s_nop 06760; GFX90A-NEXT:    v_mov_b32_e32 v6, v86761; GFX90A-NEXT:    v_mov_b32_e32 v7, v96762; GFX90A-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17]6763; GFX90A-NEXT:    s_waitcnt vmcnt(0)6764; GFX90A-NEXT:    s_setpc_b64 s[30:31]6765;6766; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_0_5_5:6767; GFX942:       ; %bb.0:6768; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6769; GFX942-NEXT:    v_mov_b32_e32 v14, 06770; GFX942-NEXT:    ;;#ASMSTART6771; GFX942-NEXT:    ; def v[0:5]6772; GFX942-NEXT:    ;;#ASMEND6773; GFX942-NEXT:    ;;#ASMSTART6774; GFX942-NEXT:    ; def v[8:13]6775; GFX942-NEXT:    ;;#ASMEND6776; GFX942-NEXT:    s_nop 06777; GFX942-NEXT:    v_mov_b32_e32 v6, v46778; GFX942-NEXT:    v_mov_b32_e32 v7, v56779; GFX942-NEXT:    global_store_dwordx4 v14, v[4:7], s[0:1] offset:166780; GFX942-NEXT:    s_nop 16781; GFX942-NEXT:    v_mov_b32_e32 v6, v86782; GFX942-NEXT:    v_mov_b32_e32 v7, v96783; GFX942-NEXT:    global_store_dwordx4 v14, v[4:7], s[0:1]6784; GFX942-NEXT:    s_waitcnt vmcnt(0)6785; GFX942-NEXT:    s_setpc_b64 s[30:31]6786  %vec0 = call <3 x ptr> asm "; def $0", "=v"()6787  %vec1 = call <3 x ptr> asm "; def $0", "=v"()6788  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 0, i32 5, i32 5>6789  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 326790  ret void6791}6792 6793define void @v_shuffle_v4p0_v3p0__5_1_5_5(ptr addrspace(1) inreg %ptr) {6794; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_1_5_5:6795; GFX900:       ; %bb.0:6796; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6797; GFX900-NEXT:    ;;#ASMSTART6798; GFX900-NEXT:    ; def v[6:11]6799; GFX900-NEXT:    ;;#ASMEND6800; GFX900-NEXT:    v_mov_b32_e32 v12, 06801; GFX900-NEXT:    ;;#ASMSTART6802; GFX900-NEXT:    ; def v[0:5]6803; GFX900-NEXT:    ;;#ASMEND6804; GFX900-NEXT:    v_mov_b32_e32 v6, v46805; GFX900-NEXT:    v_mov_b32_e32 v7, v56806; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17] offset:166807; GFX900-NEXT:    s_nop 06808; GFX900-NEXT:    v_mov_b32_e32 v6, v86809; GFX900-NEXT:    v_mov_b32_e32 v7, v96810; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]6811; GFX900-NEXT:    s_waitcnt vmcnt(0)6812; GFX900-NEXT:    s_setpc_b64 s[30:31]6813;6814; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_1_5_5:6815; GFX90A:       ; %bb.0:6816; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6817; GFX90A-NEXT:    ;;#ASMSTART6818; GFX90A-NEXT:    ; def v[6:11]6819; GFX90A-NEXT:    ;;#ASMEND6820; GFX90A-NEXT:    v_mov_b32_e32 v12, 06821; GFX90A-NEXT:    ;;#ASMSTART6822; GFX90A-NEXT:    ; def v[0:5]6823; GFX90A-NEXT:    ;;#ASMEND6824; GFX90A-NEXT:    v_mov_b32_e32 v6, v46825; GFX90A-NEXT:    v_mov_b32_e32 v7, v56826; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17] offset:166827; GFX90A-NEXT:    s_nop 06828; GFX90A-NEXT:    v_mov_b32_e32 v6, v86829; GFX90A-NEXT:    v_mov_b32_e32 v7, v96830; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]6831; GFX90A-NEXT:    s_waitcnt vmcnt(0)6832; GFX90A-NEXT:    s_setpc_b64 s[30:31]6833;6834; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_1_5_5:6835; GFX942:       ; %bb.0:6836; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6837; GFX942-NEXT:    ;;#ASMSTART6838; GFX942-NEXT:    ; def v[6:11]6839; GFX942-NEXT:    ;;#ASMEND6840; GFX942-NEXT:    v_mov_b32_e32 v12, 06841; GFX942-NEXT:    ;;#ASMSTART6842; GFX942-NEXT:    ; def v[0:5]6843; GFX942-NEXT:    ;;#ASMEND6844; GFX942-NEXT:    s_nop 06845; GFX942-NEXT:    v_mov_b32_e32 v6, v46846; GFX942-NEXT:    v_mov_b32_e32 v7, v56847; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1] offset:166848; GFX942-NEXT:    s_nop 16849; GFX942-NEXT:    v_mov_b32_e32 v6, v86850; GFX942-NEXT:    v_mov_b32_e32 v7, v96851; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1]6852; GFX942-NEXT:    s_waitcnt vmcnt(0)6853; GFX942-NEXT:    s_setpc_b64 s[30:31]6854  %vec0 = call <3 x ptr> asm "; def $0", "=v"()6855  %vec1 = call <3 x ptr> asm "; def $0", "=v"()6856  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 1, i32 5, i32 5>6857  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 326858  ret void6859}6860 6861define void @v_shuffle_v4p0_v3p0__5_2_5_5(ptr addrspace(1) inreg %ptr) {6862; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_2_5_5:6863; GFX900:       ; %bb.0:6864; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6865; GFX900-NEXT:    ;;#ASMSTART6866; GFX900-NEXT:    ; def v[4:9]6867; GFX900-NEXT:    ;;#ASMEND6868; GFX900-NEXT:    v_mov_b32_e32 v10, 06869; GFX900-NEXT:    ;;#ASMSTART6870; GFX900-NEXT:    ; def v[0:5]6871; GFX900-NEXT:    ;;#ASMEND6872; GFX900-NEXT:    v_mov_b32_e32 v6, v46873; GFX900-NEXT:    v_mov_b32_e32 v7, v56874; GFX900-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17] offset:166875; GFX900-NEXT:    s_nop 06876; GFX900-NEXT:    v_mov_b32_e32 v6, v86877; GFX900-NEXT:    v_mov_b32_e32 v7, v96878; GFX900-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]6879; GFX900-NEXT:    s_waitcnt vmcnt(0)6880; GFX900-NEXT:    s_setpc_b64 s[30:31]6881;6882; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_2_5_5:6883; GFX90A:       ; %bb.0:6884; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6885; GFX90A-NEXT:    ;;#ASMSTART6886; GFX90A-NEXT:    ; def v[4:9]6887; GFX90A-NEXT:    ;;#ASMEND6888; GFX90A-NEXT:    v_mov_b32_e32 v10, 06889; GFX90A-NEXT:    ;;#ASMSTART6890; GFX90A-NEXT:    ; def v[0:5]6891; GFX90A-NEXT:    ;;#ASMEND6892; GFX90A-NEXT:    v_mov_b32_e32 v6, v46893; GFX90A-NEXT:    v_mov_b32_e32 v7, v56894; GFX90A-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17] offset:166895; GFX90A-NEXT:    s_nop 06896; GFX90A-NEXT:    v_mov_b32_e32 v6, v86897; GFX90A-NEXT:    v_mov_b32_e32 v7, v96898; GFX90A-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]6899; GFX90A-NEXT:    s_waitcnt vmcnt(0)6900; GFX90A-NEXT:    s_setpc_b64 s[30:31]6901;6902; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_2_5_5:6903; GFX942:       ; %bb.0:6904; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6905; GFX942-NEXT:    ;;#ASMSTART6906; GFX942-NEXT:    ; def v[4:9]6907; GFX942-NEXT:    ;;#ASMEND6908; GFX942-NEXT:    v_mov_b32_e32 v10, 06909; GFX942-NEXT:    ;;#ASMSTART6910; GFX942-NEXT:    ; def v[0:5]6911; GFX942-NEXT:    ;;#ASMEND6912; GFX942-NEXT:    s_nop 06913; GFX942-NEXT:    v_mov_b32_e32 v6, v46914; GFX942-NEXT:    v_mov_b32_e32 v7, v56915; GFX942-NEXT:    global_store_dwordx4 v10, v[4:7], s[0:1] offset:166916; GFX942-NEXT:    s_nop 16917; GFX942-NEXT:    v_mov_b32_e32 v6, v86918; GFX942-NEXT:    v_mov_b32_e32 v7, v96919; GFX942-NEXT:    global_store_dwordx4 v10, v[4:7], s[0:1]6920; GFX942-NEXT:    s_waitcnt vmcnt(0)6921; GFX942-NEXT:    s_setpc_b64 s[30:31]6922  %vec0 = call <3 x ptr> asm "; def $0", "=v"()6923  %vec1 = call <3 x ptr> asm "; def $0", "=v"()6924  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 2, i32 5, i32 5>6925  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 326926  ret void6927}6928 6929define void @v_shuffle_v4p0_v3p0__5_3_5_5(ptr addrspace(1) inreg %ptr) {6930; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_3_5_5:6931; GFX900:       ; %bb.0:6932; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6933; GFX900-NEXT:    v_mov_b32_e32 v8, 06934; GFX900-NEXT:    ;;#ASMSTART6935; GFX900-NEXT:    ; def v[0:5]6936; GFX900-NEXT:    ;;#ASMEND6937; GFX900-NEXT:    v_mov_b32_e32 v6, v46938; GFX900-NEXT:    v_mov_b32_e32 v7, v56939; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:166940; GFX900-NEXT:    s_nop 06941; GFX900-NEXT:    v_mov_b32_e32 v6, v06942; GFX900-NEXT:    v_mov_b32_e32 v7, v16943; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]6944; GFX900-NEXT:    s_waitcnt vmcnt(0)6945; GFX900-NEXT:    s_setpc_b64 s[30:31]6946;6947; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_3_5_5:6948; GFX90A:       ; %bb.0:6949; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6950; GFX90A-NEXT:    v_mov_b32_e32 v8, 06951; GFX90A-NEXT:    ;;#ASMSTART6952; GFX90A-NEXT:    ; def v[0:5]6953; GFX90A-NEXT:    ;;#ASMEND6954; GFX90A-NEXT:    v_mov_b32_e32 v6, v46955; GFX90A-NEXT:    v_mov_b32_e32 v7, v56956; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:166957; GFX90A-NEXT:    s_nop 06958; GFX90A-NEXT:    v_mov_b32_e32 v6, v06959; GFX90A-NEXT:    v_mov_b32_e32 v7, v16960; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]6961; GFX90A-NEXT:    s_waitcnt vmcnt(0)6962; GFX90A-NEXT:    s_setpc_b64 s[30:31]6963;6964; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_3_5_5:6965; GFX942:       ; %bb.0:6966; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6967; GFX942-NEXT:    v_mov_b32_e32 v8, 06968; GFX942-NEXT:    ;;#ASMSTART6969; GFX942-NEXT:    ; def v[0:5]6970; GFX942-NEXT:    ;;#ASMEND6971; GFX942-NEXT:    s_nop 06972; GFX942-NEXT:    v_mov_b32_e32 v6, v46973; GFX942-NEXT:    v_mov_b32_e32 v7, v56974; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:166975; GFX942-NEXT:    s_nop 16976; GFX942-NEXT:    v_mov_b32_e32 v6, v06977; GFX942-NEXT:    v_mov_b32_e32 v7, v16978; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]6979; GFX942-NEXT:    s_waitcnt vmcnt(0)6980; GFX942-NEXT:    s_setpc_b64 s[30:31]6981  %vec0 = call <3 x ptr> asm "; def $0", "=v"()6982  %vec1 = call <3 x ptr> asm "; def $0", "=v"()6983  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 3, i32 5, i32 5>6984  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 326985  ret void6986}6987 6988define void @v_shuffle_v4p0_v3p0__5_4_5_5(ptr addrspace(1) inreg %ptr) {6989; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_4_5_5:6990; GFX900:       ; %bb.0:6991; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6992; GFX900-NEXT:    v_mov_b32_e32 v8, 06993; GFX900-NEXT:    ;;#ASMSTART6994; GFX900-NEXT:    ; def v[0:5]6995; GFX900-NEXT:    ;;#ASMEND6996; GFX900-NEXT:    v_mov_b32_e32 v6, v46997; GFX900-NEXT:    v_mov_b32_e32 v7, v56998; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:166999; GFX900-NEXT:    s_nop 07000; GFX900-NEXT:    v_mov_b32_e32 v6, v27001; GFX900-NEXT:    v_mov_b32_e32 v7, v37002; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]7003; GFX900-NEXT:    s_waitcnt vmcnt(0)7004; GFX900-NEXT:    s_setpc_b64 s[30:31]7005;7006; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_4_5_5:7007; GFX90A:       ; %bb.0:7008; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7009; GFX90A-NEXT:    v_mov_b32_e32 v8, 07010; GFX90A-NEXT:    ;;#ASMSTART7011; GFX90A-NEXT:    ; def v[0:5]7012; GFX90A-NEXT:    ;;#ASMEND7013; GFX90A-NEXT:    v_mov_b32_e32 v6, v47014; GFX90A-NEXT:    v_mov_b32_e32 v7, v57015; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:167016; GFX90A-NEXT:    s_nop 07017; GFX90A-NEXT:    v_mov_b32_e32 v6, v27018; GFX90A-NEXT:    v_mov_b32_e32 v7, v37019; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]7020; GFX90A-NEXT:    s_waitcnt vmcnt(0)7021; GFX90A-NEXT:    s_setpc_b64 s[30:31]7022;7023; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_4_5_5:7024; GFX942:       ; %bb.0:7025; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7026; GFX942-NEXT:    v_mov_b32_e32 v8, 07027; GFX942-NEXT:    ;;#ASMSTART7028; GFX942-NEXT:    ; def v[0:5]7029; GFX942-NEXT:    ;;#ASMEND7030; GFX942-NEXT:    s_nop 07031; GFX942-NEXT:    v_mov_b32_e32 v6, v47032; GFX942-NEXT:    v_mov_b32_e32 v7, v57033; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:167034; GFX942-NEXT:    s_nop 17035; GFX942-NEXT:    v_mov_b32_e32 v6, v27036; GFX942-NEXT:    v_mov_b32_e32 v7, v37037; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]7038; GFX942-NEXT:    s_waitcnt vmcnt(0)7039; GFX942-NEXT:    s_setpc_b64 s[30:31]7040  %vec0 = call <3 x ptr> asm "; def $0", "=v"()7041  %vec1 = call <3 x ptr> asm "; def $0", "=v"()7042  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 4, i32 5, i32 5>7043  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 327044  ret void7045}7046 7047define void @v_shuffle_v4p0_v3p0__5_5_u_5(ptr addrspace(1) inreg %ptr) {7048; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_u_5:7049; GFX900:       ; %bb.0:7050; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7051; GFX900-NEXT:    v_mov_b32_e32 v8, 07052; GFX900-NEXT:    ;;#ASMSTART7053; GFX900-NEXT:    ; def v[0:5]7054; GFX900-NEXT:    ;;#ASMEND7055; GFX900-NEXT:    v_mov_b32_e32 v6, v47056; GFX900-NEXT:    v_mov_b32_e32 v7, v57057; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17] offset:167058; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]7059; GFX900-NEXT:    s_waitcnt vmcnt(0)7060; GFX900-NEXT:    s_setpc_b64 s[30:31]7061;7062; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_u_5:7063; GFX90A:       ; %bb.0:7064; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7065; GFX90A-NEXT:    v_mov_b32_e32 v8, 07066; GFX90A-NEXT:    ;;#ASMSTART7067; GFX90A-NEXT:    ; def v[0:5]7068; GFX90A-NEXT:    ;;#ASMEND7069; GFX90A-NEXT:    v_mov_b32_e32 v6, v47070; GFX90A-NEXT:    v_mov_b32_e32 v7, v57071; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17] offset:167072; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]7073; GFX90A-NEXT:    s_waitcnt vmcnt(0)7074; GFX90A-NEXT:    s_setpc_b64 s[30:31]7075;7076; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_u_5:7077; GFX942:       ; %bb.0:7078; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7079; GFX942-NEXT:    v_mov_b32_e32 v8, 07080; GFX942-NEXT:    ;;#ASMSTART7081; GFX942-NEXT:    ; def v[0:5]7082; GFX942-NEXT:    ;;#ASMEND7083; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] offset:167084; GFX942-NEXT:    v_mov_b32_e32 v6, v47085; GFX942-NEXT:    v_mov_b32_e32 v7, v57086; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]7087; GFX942-NEXT:    s_waitcnt vmcnt(0)7088; GFX942-NEXT:    s_setpc_b64 s[30:31]7089  %vec0 = call <3 x ptr> asm "; def $0", "=v"()7090  %vec1 = call <3 x ptr> asm "; def $0", "=v"()7091  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 5>7092  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 327093  ret void7094}7095 7096define void @v_shuffle_v4p0_v3p0__5_5_0_5(ptr addrspace(1) inreg %ptr) {7097; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_0_5:7098; GFX900:       ; %bb.0:7099; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7100; GFX900-NEXT:    ;;#ASMSTART7101; GFX900-NEXT:    ; def v[6:11]7102; GFX900-NEXT:    ;;#ASMEND7103; GFX900-NEXT:    v_mov_b32_e32 v12, 07104; GFX900-NEXT:    ;;#ASMSTART7105; GFX900-NEXT:    ; def v[0:5]7106; GFX900-NEXT:    ;;#ASMEND7107; GFX900-NEXT:    v_mov_b32_e32 v8, v47108; GFX900-NEXT:    v_mov_b32_e32 v9, v57109; GFX900-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17] offset:167110; GFX900-NEXT:    s_nop 07111; GFX900-NEXT:    v_mov_b32_e32 v6, v47112; GFX900-NEXT:    v_mov_b32_e32 v7, v57113; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]7114; GFX900-NEXT:    s_waitcnt vmcnt(0)7115; GFX900-NEXT:    s_setpc_b64 s[30:31]7116;7117; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_0_5:7118; GFX90A:       ; %bb.0:7119; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7120; GFX90A-NEXT:    ;;#ASMSTART7121; GFX90A-NEXT:    ; def v[6:11]7122; GFX90A-NEXT:    ;;#ASMEND7123; GFX90A-NEXT:    v_mov_b32_e32 v12, 07124; GFX90A-NEXT:    ;;#ASMSTART7125; GFX90A-NEXT:    ; def v[0:5]7126; GFX90A-NEXT:    ;;#ASMEND7127; GFX90A-NEXT:    v_mov_b32_e32 v8, v47128; GFX90A-NEXT:    v_mov_b32_e32 v9, v57129; GFX90A-NEXT:    global_store_dwordx4 v12, v[6:9], s[16:17] offset:167130; GFX90A-NEXT:    s_nop 07131; GFX90A-NEXT:    v_mov_b32_e32 v6, v47132; GFX90A-NEXT:    v_mov_b32_e32 v7, v57133; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]7134; GFX90A-NEXT:    s_waitcnt vmcnt(0)7135; GFX90A-NEXT:    s_setpc_b64 s[30:31]7136;7137; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_0_5:7138; GFX942:       ; %bb.0:7139; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7140; GFX942-NEXT:    ;;#ASMSTART7141; GFX942-NEXT:    ; def v[6:11]7142; GFX942-NEXT:    ;;#ASMEND7143; GFX942-NEXT:    v_mov_b32_e32 v12, 07144; GFX942-NEXT:    ;;#ASMSTART7145; GFX942-NEXT:    ; def v[0:5]7146; GFX942-NEXT:    ;;#ASMEND7147; GFX942-NEXT:    s_nop 07148; GFX942-NEXT:    v_mov_b32_e32 v8, v47149; GFX942-NEXT:    v_mov_b32_e32 v9, v57150; GFX942-NEXT:    global_store_dwordx4 v12, v[6:9], s[0:1] offset:167151; GFX942-NEXT:    s_nop 17152; GFX942-NEXT:    v_mov_b32_e32 v6, v47153; GFX942-NEXT:    v_mov_b32_e32 v7, v57154; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1]7155; GFX942-NEXT:    s_waitcnt vmcnt(0)7156; GFX942-NEXT:    s_setpc_b64 s[30:31]7157  %vec0 = call <3 x ptr> asm "; def $0", "=v"()7158  %vec1 = call <3 x ptr> asm "; def $0", "=v"()7159  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 5>7160  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 327161  ret void7162}7163 7164define void @v_shuffle_v4p0_v3p0__5_5_1_5(ptr addrspace(1) inreg %ptr) {7165; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_1_5:7166; GFX900:       ; %bb.0:7167; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7168; GFX900-NEXT:    ;;#ASMSTART7169; GFX900-NEXT:    ; def v[4:9]7170; GFX900-NEXT:    ;;#ASMEND7171; GFX900-NEXT:    v_mov_b32_e32 v10, 07172; GFX900-NEXT:    ;;#ASMSTART7173; GFX900-NEXT:    ; def v[0:5]7174; GFX900-NEXT:    ;;#ASMEND7175; GFX900-NEXT:    v_mov_b32_e32 v8, v47176; GFX900-NEXT:    v_mov_b32_e32 v9, v57177; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:167178; GFX900-NEXT:    s_nop 07179; GFX900-NEXT:    v_mov_b32_e32 v6, v47180; GFX900-NEXT:    v_mov_b32_e32 v7, v57181; GFX900-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]7182; GFX900-NEXT:    s_waitcnt vmcnt(0)7183; GFX900-NEXT:    s_setpc_b64 s[30:31]7184;7185; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_1_5:7186; GFX90A:       ; %bb.0:7187; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7188; GFX90A-NEXT:    ;;#ASMSTART7189; GFX90A-NEXT:    ; def v[4:9]7190; GFX90A-NEXT:    ;;#ASMEND7191; GFX90A-NEXT:    v_mov_b32_e32 v10, 07192; GFX90A-NEXT:    ;;#ASMSTART7193; GFX90A-NEXT:    ; def v[0:5]7194; GFX90A-NEXT:    ;;#ASMEND7195; GFX90A-NEXT:    v_mov_b32_e32 v8, v47196; GFX90A-NEXT:    v_mov_b32_e32 v9, v57197; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:167198; GFX90A-NEXT:    s_nop 07199; GFX90A-NEXT:    v_mov_b32_e32 v6, v47200; GFX90A-NEXT:    v_mov_b32_e32 v7, v57201; GFX90A-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]7202; GFX90A-NEXT:    s_waitcnt vmcnt(0)7203; GFX90A-NEXT:    s_setpc_b64 s[30:31]7204;7205; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_1_5:7206; GFX942:       ; %bb.0:7207; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7208; GFX942-NEXT:    ;;#ASMSTART7209; GFX942-NEXT:    ; def v[4:9]7210; GFX942-NEXT:    ;;#ASMEND7211; GFX942-NEXT:    v_mov_b32_e32 v10, 07212; GFX942-NEXT:    ;;#ASMSTART7213; GFX942-NEXT:    ; def v[0:5]7214; GFX942-NEXT:    ;;#ASMEND7215; GFX942-NEXT:    s_nop 07216; GFX942-NEXT:    v_mov_b32_e32 v8, v47217; GFX942-NEXT:    v_mov_b32_e32 v9, v57218; GFX942-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1] offset:167219; GFX942-NEXT:    s_nop 17220; GFX942-NEXT:    v_mov_b32_e32 v6, v47221; GFX942-NEXT:    v_mov_b32_e32 v7, v57222; GFX942-NEXT:    global_store_dwordx4 v10, v[4:7], s[0:1]7223; GFX942-NEXT:    s_waitcnt vmcnt(0)7224; GFX942-NEXT:    s_setpc_b64 s[30:31]7225  %vec0 = call <3 x ptr> asm "; def $0", "=v"()7226  %vec1 = call <3 x ptr> asm "; def $0", "=v"()7227  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 5>7228  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 327229  ret void7230}7231 7232define void @v_shuffle_v4p0_v3p0__5_5_2_5(ptr addrspace(1) inreg %ptr) {7233; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_2_5:7234; GFX900:       ; %bb.0:7235; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7236; GFX900-NEXT:    ;;#ASMSTART7237; GFX900-NEXT:    ; def v[6:11]7238; GFX900-NEXT:    ;;#ASMEND7239; GFX900-NEXT:    v_mov_b32_e32 v14, 07240; GFX900-NEXT:    v_mov_b32_e32 v6, v107241; GFX900-NEXT:    v_mov_b32_e32 v7, v117242; GFX900-NEXT:    v_mov_b32_e32 v12, v107243; GFX900-NEXT:    v_mov_b32_e32 v13, v117244; GFX900-NEXT:    ;;#ASMSTART7245; GFX900-NEXT:    ; def v[0:5]7246; GFX900-NEXT:    ;;#ASMEND7247; GFX900-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17] offset:167248; GFX900-NEXT:    global_store_dwordx4 v14, v[10:13], s[16:17]7249; GFX900-NEXT:    s_waitcnt vmcnt(0)7250; GFX900-NEXT:    s_setpc_b64 s[30:31]7251;7252; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_2_5:7253; GFX90A:       ; %bb.0:7254; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7255; GFX90A-NEXT:    ;;#ASMSTART7256; GFX90A-NEXT:    ; def v[6:11]7257; GFX90A-NEXT:    ;;#ASMEND7258; GFX90A-NEXT:    v_mov_b32_e32 v14, 07259; GFX90A-NEXT:    v_mov_b32_e32 v6, v107260; GFX90A-NEXT:    v_mov_b32_e32 v7, v117261; GFX90A-NEXT:    v_mov_b32_e32 v12, v107262; GFX90A-NEXT:    v_mov_b32_e32 v13, v117263; GFX90A-NEXT:    ;;#ASMSTART7264; GFX90A-NEXT:    ; def v[0:5]7265; GFX90A-NEXT:    ;;#ASMEND7266; GFX90A-NEXT:    global_store_dwordx4 v14, v[4:7], s[16:17] offset:167267; GFX90A-NEXT:    global_store_dwordx4 v14, v[10:13], s[16:17]7268; GFX90A-NEXT:    s_waitcnt vmcnt(0)7269; GFX90A-NEXT:    s_setpc_b64 s[30:31]7270;7271; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_2_5:7272; GFX942:       ; %bb.0:7273; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7274; GFX942-NEXT:    ;;#ASMSTART7275; GFX942-NEXT:    ; def v[6:11]7276; GFX942-NEXT:    ;;#ASMEND7277; GFX942-NEXT:    v_mov_b32_e32 v14, 07278; GFX942-NEXT:    v_mov_b32_e32 v6, v107279; GFX942-NEXT:    v_mov_b32_e32 v7, v117280; GFX942-NEXT:    v_mov_b32_e32 v12, v107281; GFX942-NEXT:    v_mov_b32_e32 v13, v117282; GFX942-NEXT:    ;;#ASMSTART7283; GFX942-NEXT:    ; def v[0:5]7284; GFX942-NEXT:    ;;#ASMEND7285; GFX942-NEXT:    global_store_dwordx4 v14, v[4:7], s[0:1] offset:167286; GFX942-NEXT:    global_store_dwordx4 v14, v[10:13], s[0:1]7287; GFX942-NEXT:    s_waitcnt vmcnt(0)7288; GFX942-NEXT:    s_setpc_b64 s[30:31]7289  %vec0 = call <3 x ptr> asm "; def $0", "=v"()7290  %vec1 = call <3 x ptr> asm "; def $0", "=v"()7291  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 5>7292  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 327293  ret void7294}7295 7296define void @v_shuffle_v4p0_v3p0__5_5_3_5(ptr addrspace(1) inreg %ptr) {7297; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_3_5:7298; GFX900:       ; %bb.0:7299; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7300; GFX900-NEXT:    ;;#ASMSTART7301; GFX900-NEXT:    ; def v[0:5]7302; GFX900-NEXT:    ;;#ASMEND7303; GFX900-NEXT:    v_mov_b32_e32 v8, 07304; GFX900-NEXT:    v_mov_b32_e32 v2, v47305; GFX900-NEXT:    v_mov_b32_e32 v3, v57306; GFX900-NEXT:    v_mov_b32_e32 v6, v47307; GFX900-NEXT:    v_mov_b32_e32 v7, v57308; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:167309; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]7310; GFX900-NEXT:    s_waitcnt vmcnt(0)7311; GFX900-NEXT:    s_setpc_b64 s[30:31]7312;7313; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_3_5:7314; GFX90A:       ; %bb.0:7315; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7316; GFX90A-NEXT:    ;;#ASMSTART7317; GFX90A-NEXT:    ; def v[0:5]7318; GFX90A-NEXT:    ;;#ASMEND7319; GFX90A-NEXT:    v_mov_b32_e32 v8, 07320; GFX90A-NEXT:    v_mov_b32_e32 v2, v47321; GFX90A-NEXT:    v_mov_b32_e32 v3, v57322; GFX90A-NEXT:    v_mov_b32_e32 v6, v47323; GFX90A-NEXT:    v_mov_b32_e32 v7, v57324; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:167325; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]7326; GFX90A-NEXT:    s_waitcnt vmcnt(0)7327; GFX90A-NEXT:    s_setpc_b64 s[30:31]7328;7329; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_3_5:7330; GFX942:       ; %bb.0:7331; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7332; GFX942-NEXT:    ;;#ASMSTART7333; GFX942-NEXT:    ; def v[0:5]7334; GFX942-NEXT:    ;;#ASMEND7335; GFX942-NEXT:    v_mov_b32_e32 v8, 07336; GFX942-NEXT:    v_mov_b32_e32 v2, v47337; GFX942-NEXT:    v_mov_b32_e32 v3, v57338; GFX942-NEXT:    v_mov_b32_e32 v6, v47339; GFX942-NEXT:    v_mov_b32_e32 v7, v57340; GFX942-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:167341; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]7342; GFX942-NEXT:    s_waitcnt vmcnt(0)7343; GFX942-NEXT:    s_setpc_b64 s[30:31]7344  %vec0 = call <3 x ptr> asm "; def $0", "=v"()7345  %vec1 = call <3 x ptr> asm "; def $0", "=v"()7346  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 5>7347  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 327348  ret void7349}7350 7351define void @v_shuffle_v4p0_v3p0__5_5_4_5(ptr addrspace(1) inreg %ptr) {7352; GFX900-LABEL: v_shuffle_v4p0_v3p0__5_5_4_5:7353; GFX900:       ; %bb.0:7354; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7355; GFX900-NEXT:    v_mov_b32_e32 v8, 07356; GFX900-NEXT:    ;;#ASMSTART7357; GFX900-NEXT:    ; def v[0:5]7358; GFX900-NEXT:    ;;#ASMEND7359; GFX900-NEXT:    v_mov_b32_e32 v6, v47360; GFX900-NEXT:    v_mov_b32_e32 v7, v57361; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17] offset:167362; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]7363; GFX900-NEXT:    s_waitcnt vmcnt(0)7364; GFX900-NEXT:    s_setpc_b64 s[30:31]7365;7366; GFX90A-LABEL: v_shuffle_v4p0_v3p0__5_5_4_5:7367; GFX90A:       ; %bb.0:7368; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7369; GFX90A-NEXT:    v_mov_b32_e32 v8, 07370; GFX90A-NEXT:    ;;#ASMSTART7371; GFX90A-NEXT:    ; def v[0:5]7372; GFX90A-NEXT:    ;;#ASMEND7373; GFX90A-NEXT:    v_mov_b32_e32 v6, v47374; GFX90A-NEXT:    v_mov_b32_e32 v7, v57375; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17] offset:167376; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]7377; GFX90A-NEXT:    s_waitcnt vmcnt(0)7378; GFX90A-NEXT:    s_setpc_b64 s[30:31]7379;7380; GFX942-LABEL: v_shuffle_v4p0_v3p0__5_5_4_5:7381; GFX942:       ; %bb.0:7382; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7383; GFX942-NEXT:    v_mov_b32_e32 v8, 07384; GFX942-NEXT:    ;;#ASMSTART7385; GFX942-NEXT:    ; def v[0:5]7386; GFX942-NEXT:    ;;#ASMEND7387; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] offset:167388; GFX942-NEXT:    v_mov_b32_e32 v6, v47389; GFX942-NEXT:    v_mov_b32_e32 v7, v57390; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]7391; GFX942-NEXT:    s_waitcnt vmcnt(0)7392; GFX942-NEXT:    s_setpc_b64 s[30:31]7393  %vec0 = call <3 x ptr> asm "; def $0", "=v"()7394  %vec1 = call <3 x ptr> asm "; def $0", "=v"()7395  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 5>7396  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 327397  ret void7398}7399 7400define void @s_shuffle_v4p0_v3p0__u_u_u_u() {7401; GFX9-LABEL: s_shuffle_v4p0_v3p0__u_u_u_u:7402; GFX9:       ; %bb.0:7403; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7404; GFX9-NEXT:    ;;#ASMSTART7405; GFX9-NEXT:    ; use s[8:15]7406; GFX9-NEXT:    ;;#ASMEND7407; GFX9-NEXT:    s_setpc_b64 s[30:31]7408  %vec0 = call <3 x ptr> asm "; def $0", "=s"()7409  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> poison7410  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)7411  ret void7412}7413 7414define void @s_shuffle_v4p0_v3p0__0_u_u_u() {7415; GFX900-LABEL: s_shuffle_v4p0_v3p0__0_u_u_u:7416; GFX900:       ; %bb.0:7417; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7418; GFX900-NEXT:    ;;#ASMSTART7419; GFX900-NEXT:    ; def s[8:13]7420; GFX900-NEXT:    ;;#ASMEND7421; GFX900-NEXT:    ;;#ASMSTART7422; GFX900-NEXT:    ; use s[8:15]7423; GFX900-NEXT:    ;;#ASMEND7424; GFX900-NEXT:    s_setpc_b64 s[30:31]7425;7426; GFX90A-LABEL: s_shuffle_v4p0_v3p0__0_u_u_u:7427; GFX90A:       ; %bb.0:7428; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7429; GFX90A-NEXT:    ;;#ASMSTART7430; GFX90A-NEXT:    ; def s[8:13]7431; GFX90A-NEXT:    ;;#ASMEND7432; GFX90A-NEXT:    ;;#ASMSTART7433; GFX90A-NEXT:    ; use s[8:15]7434; GFX90A-NEXT:    ;;#ASMEND7435; GFX90A-NEXT:    s_setpc_b64 s[30:31]7436;7437; GFX942-LABEL: s_shuffle_v4p0_v3p0__0_u_u_u:7438; GFX942:       ; %bb.0:7439; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7440; GFX942-NEXT:    ;;#ASMSTART7441; GFX942-NEXT:    ; def s[8:13]7442; GFX942-NEXT:    ;;#ASMEND7443; GFX942-NEXT:    s_nop 07444; GFX942-NEXT:    ;;#ASMSTART7445; GFX942-NEXT:    ; use s[8:15]7446; GFX942-NEXT:    ;;#ASMEND7447; GFX942-NEXT:    s_setpc_b64 s[30:31]7448  %vec0 = call <3 x ptr> asm "; def $0", "=s"()7449  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>7450  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)7451  ret void7452}7453 7454define void @s_shuffle_v4p0_v3p0__1_u_u_u() {7455; GFX900-LABEL: s_shuffle_v4p0_v3p0__1_u_u_u:7456; GFX900:       ; %bb.0:7457; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7458; GFX900-NEXT:    ;;#ASMSTART7459; GFX900-NEXT:    ; def s[4:9]7460; GFX900-NEXT:    ;;#ASMEND7461; GFX900-NEXT:    s_mov_b32 s8, s67462; GFX900-NEXT:    s_mov_b32 s9, s77463; GFX900-NEXT:    ;;#ASMSTART7464; GFX900-NEXT:    ; use s[8:15]7465; GFX900-NEXT:    ;;#ASMEND7466; GFX900-NEXT:    s_setpc_b64 s[30:31]7467;7468; GFX90A-LABEL: s_shuffle_v4p0_v3p0__1_u_u_u:7469; GFX90A:       ; %bb.0:7470; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7471; GFX90A-NEXT:    ;;#ASMSTART7472; GFX90A-NEXT:    ; def s[4:9]7473; GFX90A-NEXT:    ;;#ASMEND7474; GFX90A-NEXT:    s_mov_b32 s8, s67475; GFX90A-NEXT:    s_mov_b32 s9, s77476; GFX90A-NEXT:    ;;#ASMSTART7477; GFX90A-NEXT:    ; use s[8:15]7478; GFX90A-NEXT:    ;;#ASMEND7479; GFX90A-NEXT:    s_setpc_b64 s[30:31]7480;7481; GFX942-LABEL: s_shuffle_v4p0_v3p0__1_u_u_u:7482; GFX942:       ; %bb.0:7483; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7484; GFX942-NEXT:    ;;#ASMSTART7485; GFX942-NEXT:    ; def s[0:5]7486; GFX942-NEXT:    ;;#ASMEND7487; GFX942-NEXT:    s_mov_b32 s8, s27488; GFX942-NEXT:    s_mov_b32 s9, s37489; GFX942-NEXT:    ;;#ASMSTART7490; GFX942-NEXT:    ; use s[8:15]7491; GFX942-NEXT:    ;;#ASMEND7492; GFX942-NEXT:    s_setpc_b64 s[30:31]7493  %vec0 = call <3 x ptr> asm "; def $0", "=s"()7494  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>7495  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)7496  ret void7497}7498 7499define void @s_shuffle_v4p0_v3p0__2_u_u_u() {7500; GFX900-LABEL: s_shuffle_v4p0_v3p0__2_u_u_u:7501; GFX900:       ; %bb.0:7502; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7503; GFX900-NEXT:    ;;#ASMSTART7504; GFX900-NEXT:    ; def s[4:9]7505; GFX900-NEXT:    ;;#ASMEND7506; GFX900-NEXT:    ;;#ASMSTART7507; GFX900-NEXT:    ; use s[8:15]7508; GFX900-NEXT:    ;;#ASMEND7509; GFX900-NEXT:    s_setpc_b64 s[30:31]7510;7511; GFX90A-LABEL: s_shuffle_v4p0_v3p0__2_u_u_u:7512; GFX90A:       ; %bb.0:7513; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7514; GFX90A-NEXT:    ;;#ASMSTART7515; GFX90A-NEXT:    ; def s[4:9]7516; GFX90A-NEXT:    ;;#ASMEND7517; GFX90A-NEXT:    ;;#ASMSTART7518; GFX90A-NEXT:    ; use s[8:15]7519; GFX90A-NEXT:    ;;#ASMEND7520; GFX90A-NEXT:    s_setpc_b64 s[30:31]7521;7522; GFX942-LABEL: s_shuffle_v4p0_v3p0__2_u_u_u:7523; GFX942:       ; %bb.0:7524; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7525; GFX942-NEXT:    ;;#ASMSTART7526; GFX942-NEXT:    ; def s[4:9]7527; GFX942-NEXT:    ;;#ASMEND7528; GFX942-NEXT:    s_nop 07529; GFX942-NEXT:    ;;#ASMSTART7530; GFX942-NEXT:    ; use s[8:15]7531; GFX942-NEXT:    ;;#ASMEND7532; GFX942-NEXT:    s_setpc_b64 s[30:31]7533  %vec0 = call <3 x ptr> asm "; def $0", "=s"()7534  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison>7535  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)7536  ret void7537}7538 7539define void @s_shuffle_v4p0_v3p0__3_u_u_u() {7540; GFX9-LABEL: s_shuffle_v4p0_v3p0__3_u_u_u:7541; GFX9:       ; %bb.0:7542; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7543; GFX9-NEXT:    ;;#ASMSTART7544; GFX9-NEXT:    ; use s[8:15]7545; GFX9-NEXT:    ;;#ASMEND7546; GFX9-NEXT:    s_setpc_b64 s[30:31]7547  %vec0 = call <3 x ptr> asm "; def $0", "=s"()7548  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison>7549  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)7550  ret void7551}7552 7553define void @s_shuffle_v4p0_v3p0__4_u_u_u() {7554; GFX900-LABEL: s_shuffle_v4p0_v3p0__4_u_u_u:7555; GFX900:       ; %bb.0:7556; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7557; GFX900-NEXT:    ;;#ASMSTART7558; GFX900-NEXT:    ; def s[4:9]7559; GFX900-NEXT:    ;;#ASMEND7560; GFX900-NEXT:    s_mov_b32 s8, s67561; GFX900-NEXT:    s_mov_b32 s9, s77562; GFX900-NEXT:    ;;#ASMSTART7563; GFX900-NEXT:    ; use s[8:15]7564; GFX900-NEXT:    ;;#ASMEND7565; GFX900-NEXT:    s_setpc_b64 s[30:31]7566;7567; GFX90A-LABEL: s_shuffle_v4p0_v3p0__4_u_u_u:7568; GFX90A:       ; %bb.0:7569; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7570; GFX90A-NEXT:    ;;#ASMSTART7571; GFX90A-NEXT:    ; def s[4:9]7572; GFX90A-NEXT:    ;;#ASMEND7573; GFX90A-NEXT:    s_mov_b32 s8, s67574; GFX90A-NEXT:    s_mov_b32 s9, s77575; GFX90A-NEXT:    ;;#ASMSTART7576; GFX90A-NEXT:    ; use s[8:15]7577; GFX90A-NEXT:    ;;#ASMEND7578; GFX90A-NEXT:    s_setpc_b64 s[30:31]7579;7580; GFX942-LABEL: s_shuffle_v4p0_v3p0__4_u_u_u:7581; GFX942:       ; %bb.0:7582; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7583; GFX942-NEXT:    ;;#ASMSTART7584; GFX942-NEXT:    ; def s[0:5]7585; GFX942-NEXT:    ;;#ASMEND7586; GFX942-NEXT:    s_mov_b32 s8, s27587; GFX942-NEXT:    s_mov_b32 s9, s37588; GFX942-NEXT:    ;;#ASMSTART7589; GFX942-NEXT:    ; use s[8:15]7590; GFX942-NEXT:    ;;#ASMEND7591; GFX942-NEXT:    s_setpc_b64 s[30:31]7592  %vec0 = call <3 x ptr> asm "; def $0", "=s"()7593  %vec1 = call <3 x ptr> asm "; def $0", "=s"()7594  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 4, i32 poison, i32 poison, i32 poison>7595  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)7596  ret void7597}7598 7599define void @s_shuffle_v4p0_v3p0__5_u_u_u() {7600; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_u_u_u:7601; GFX900:       ; %bb.0:7602; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7603; GFX900-NEXT:    ;;#ASMSTART7604; GFX900-NEXT:    ; def s[4:9]7605; GFX900-NEXT:    ;;#ASMEND7606; GFX900-NEXT:    ;;#ASMSTART7607; GFX900-NEXT:    ; use s[8:15]7608; GFX900-NEXT:    ;;#ASMEND7609; GFX900-NEXT:    s_setpc_b64 s[30:31]7610;7611; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_u_u_u:7612; GFX90A:       ; %bb.0:7613; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7614; GFX90A-NEXT:    ;;#ASMSTART7615; GFX90A-NEXT:    ; def s[4:9]7616; GFX90A-NEXT:    ;;#ASMEND7617; GFX90A-NEXT:    ;;#ASMSTART7618; GFX90A-NEXT:    ; use s[8:15]7619; GFX90A-NEXT:    ;;#ASMEND7620; GFX90A-NEXT:    s_setpc_b64 s[30:31]7621;7622; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_u_u_u:7623; GFX942:       ; %bb.0:7624; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7625; GFX942-NEXT:    ;;#ASMSTART7626; GFX942-NEXT:    ; def s[4:9]7627; GFX942-NEXT:    ;;#ASMEND7628; GFX942-NEXT:    s_nop 07629; GFX942-NEXT:    ;;#ASMSTART7630; GFX942-NEXT:    ; use s[8:15]7631; GFX942-NEXT:    ;;#ASMEND7632; GFX942-NEXT:    s_setpc_b64 s[30:31]7633  %vec0 = call <3 x ptr> asm "; def $0", "=s"()7634  %vec1 = call <3 x ptr> asm "; def $0", "=s"()7635  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 poison, i32 poison, i32 poison>7636  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)7637  ret void7638}7639 7640define void @s_shuffle_v4p0_v3p0__5_0_u_u() {7641; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_0_u_u:7642; GFX900:       ; %bb.0:7643; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7644; GFX900-NEXT:    ;;#ASMSTART7645; GFX900-NEXT:    ; def s[12:17]7646; GFX900-NEXT:    ;;#ASMEND7647; GFX900-NEXT:    ;;#ASMSTART7648; GFX900-NEXT:    ; def s[4:9]7649; GFX900-NEXT:    ;;#ASMEND7650; GFX900-NEXT:    s_mov_b32 s10, s127651; GFX900-NEXT:    s_mov_b32 s11, s137652; GFX900-NEXT:    ;;#ASMSTART7653; GFX900-NEXT:    ; use s[8:15]7654; GFX900-NEXT:    ;;#ASMEND7655; GFX900-NEXT:    s_setpc_b64 s[30:31]7656;7657; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_0_u_u:7658; GFX90A:       ; %bb.0:7659; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7660; GFX90A-NEXT:    ;;#ASMSTART7661; GFX90A-NEXT:    ; def s[12:17]7662; GFX90A-NEXT:    ;;#ASMEND7663; GFX90A-NEXT:    ;;#ASMSTART7664; GFX90A-NEXT:    ; def s[4:9]7665; GFX90A-NEXT:    ;;#ASMEND7666; GFX90A-NEXT:    s_mov_b32 s10, s127667; GFX90A-NEXT:    s_mov_b32 s11, s137668; GFX90A-NEXT:    ;;#ASMSTART7669; GFX90A-NEXT:    ; use s[8:15]7670; GFX90A-NEXT:    ;;#ASMEND7671; GFX90A-NEXT:    s_setpc_b64 s[30:31]7672;7673; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_0_u_u:7674; GFX942:       ; %bb.0:7675; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7676; GFX942-NEXT:    ;;#ASMSTART7677; GFX942-NEXT:    ; def s[0:5]7678; GFX942-NEXT:    ;;#ASMEND7679; GFX942-NEXT:    s_mov_b32 s10, s07680; GFX942-NEXT:    ;;#ASMSTART7681; GFX942-NEXT:    ; def s[4:9]7682; GFX942-NEXT:    ;;#ASMEND7683; GFX942-NEXT:    s_mov_b32 s11, s17684; GFX942-NEXT:    ;;#ASMSTART7685; GFX942-NEXT:    ; use s[8:15]7686; GFX942-NEXT:    ;;#ASMEND7687; GFX942-NEXT:    s_setpc_b64 s[30:31]7688  %vec0 = call <3 x ptr> asm "; def $0", "=s"()7689  %vec1 = call <3 x ptr> asm "; def $0", "=s"()7690  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 0, i32 poison, i32 poison>7691  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)7692  ret void7693}7694 7695define void @s_shuffle_v4p0_v3p0__5_1_u_u() {7696; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_1_u_u:7697; GFX900:       ; %bb.0:7698; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7699; GFX900-NEXT:    ;;#ASMSTART7700; GFX900-NEXT:    ; def s[8:13]7701; GFX900-NEXT:    ;;#ASMEND7702; GFX900-NEXT:    ;;#ASMSTART7703; GFX900-NEXT:    ; def s[4:9]7704; GFX900-NEXT:    ;;#ASMEND7705; GFX900-NEXT:    ;;#ASMSTART7706; GFX900-NEXT:    ; use s[8:15]7707; GFX900-NEXT:    ;;#ASMEND7708; GFX900-NEXT:    s_setpc_b64 s[30:31]7709;7710; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_1_u_u:7711; GFX90A:       ; %bb.0:7712; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7713; GFX90A-NEXT:    ;;#ASMSTART7714; GFX90A-NEXT:    ; def s[8:13]7715; GFX90A-NEXT:    ;;#ASMEND7716; GFX90A-NEXT:    ;;#ASMSTART7717; GFX90A-NEXT:    ; def s[4:9]7718; GFX90A-NEXT:    ;;#ASMEND7719; GFX90A-NEXT:    ;;#ASMSTART7720; GFX90A-NEXT:    ; use s[8:15]7721; GFX90A-NEXT:    ;;#ASMEND7722; GFX90A-NEXT:    s_setpc_b64 s[30:31]7723;7724; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_1_u_u:7725; GFX942:       ; %bb.0:7726; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7727; GFX942-NEXT:    ;;#ASMSTART7728; GFX942-NEXT:    ; def s[8:13]7729; GFX942-NEXT:    ;;#ASMEND7730; GFX942-NEXT:    s_nop 07731; GFX942-NEXT:    ;;#ASMSTART7732; GFX942-NEXT:    ; def s[4:9]7733; GFX942-NEXT:    ;;#ASMEND7734; GFX942-NEXT:    s_nop 07735; GFX942-NEXT:    ;;#ASMSTART7736; GFX942-NEXT:    ; use s[8:15]7737; GFX942-NEXT:    ;;#ASMEND7738; GFX942-NEXT:    s_setpc_b64 s[30:31]7739  %vec0 = call <3 x ptr> asm "; def $0", "=s"()7740  %vec1 = call <3 x ptr> asm "; def $0", "=s"()7741  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 1, i32 poison, i32 poison>7742  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)7743  ret void7744}7745 7746define void @s_shuffle_v4p0_v3p0__5_2_u_u() {7747; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_2_u_u:7748; GFX900:       ; %bb.0:7749; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7750; GFX900-NEXT:    ;;#ASMSTART7751; GFX900-NEXT:    ; def s[8:13]7752; GFX900-NEXT:    ;;#ASMEND7753; GFX900-NEXT:    ;;#ASMSTART7754; GFX900-NEXT:    ; def s[4:9]7755; GFX900-NEXT:    ;;#ASMEND7756; GFX900-NEXT:    s_mov_b32 s10, s127757; GFX900-NEXT:    s_mov_b32 s11, s137758; GFX900-NEXT:    ;;#ASMSTART7759; GFX900-NEXT:    ; use s[8:15]7760; GFX900-NEXT:    ;;#ASMEND7761; GFX900-NEXT:    s_setpc_b64 s[30:31]7762;7763; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_2_u_u:7764; GFX90A:       ; %bb.0:7765; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7766; GFX90A-NEXT:    ;;#ASMSTART7767; GFX90A-NEXT:    ; def s[8:13]7768; GFX90A-NEXT:    ;;#ASMEND7769; GFX90A-NEXT:    ;;#ASMSTART7770; GFX90A-NEXT:    ; def s[4:9]7771; GFX90A-NEXT:    ;;#ASMEND7772; GFX90A-NEXT:    s_mov_b32 s10, s127773; GFX90A-NEXT:    s_mov_b32 s11, s137774; GFX90A-NEXT:    ;;#ASMSTART7775; GFX90A-NEXT:    ; use s[8:15]7776; GFX90A-NEXT:    ;;#ASMEND7777; GFX90A-NEXT:    s_setpc_b64 s[30:31]7778;7779; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_2_u_u:7780; GFX942:       ; %bb.0:7781; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7782; GFX942-NEXT:    ;;#ASMSTART7783; GFX942-NEXT:    ; def s[8:13]7784; GFX942-NEXT:    ;;#ASMEND7785; GFX942-NEXT:    s_mov_b32 s10, s127786; GFX942-NEXT:    ;;#ASMSTART7787; GFX942-NEXT:    ; def s[4:9]7788; GFX942-NEXT:    ;;#ASMEND7789; GFX942-NEXT:    s_mov_b32 s11, s137790; GFX942-NEXT:    ;;#ASMSTART7791; GFX942-NEXT:    ; use s[8:15]7792; GFX942-NEXT:    ;;#ASMEND7793; GFX942-NEXT:    s_setpc_b64 s[30:31]7794  %vec0 = call <3 x ptr> asm "; def $0", "=s"()7795  %vec1 = call <3 x ptr> asm "; def $0", "=s"()7796  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 2, i32 poison, i32 poison>7797  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)7798  ret void7799}7800 7801define void @s_shuffle_v4p0_v3p0__5_3_u_u() {7802; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_3_u_u:7803; GFX9:       ; %bb.0:7804; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7805; GFX9-NEXT:    ;;#ASMSTART7806; GFX9-NEXT:    ; def s[4:9]7807; GFX9-NEXT:    ;;#ASMEND7808; GFX9-NEXT:    s_mov_b32 s10, s47809; GFX9-NEXT:    s_mov_b32 s11, s57810; GFX9-NEXT:    ;;#ASMSTART7811; GFX9-NEXT:    ; use s[8:15]7812; GFX9-NEXT:    ;;#ASMEND7813; GFX9-NEXT:    s_setpc_b64 s[30:31]7814  %vec0 = call <3 x ptr> asm "; def $0", "=s"()7815  %vec1 = call <3 x ptr> asm "; def $0", "=s"()7816  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 3, i32 poison, i32 poison>7817  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)7818  ret void7819}7820 7821define void @s_shuffle_v4p0_v3p0__5_4_u_u() {7822; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_4_u_u:7823; GFX9:       ; %bb.0:7824; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7825; GFX9-NEXT:    ;;#ASMSTART7826; GFX9-NEXT:    ; def s[4:9]7827; GFX9-NEXT:    ;;#ASMEND7828; GFX9-NEXT:    s_mov_b32 s10, s67829; GFX9-NEXT:    s_mov_b32 s11, s77830; GFX9-NEXT:    ;;#ASMSTART7831; GFX9-NEXT:    ; use s[8:15]7832; GFX9-NEXT:    ;;#ASMEND7833; GFX9-NEXT:    s_setpc_b64 s[30:31]7834  %vec0 = call <3 x ptr> asm "; def $0", "=s"()7835  %vec1 = call <3 x ptr> asm "; def $0", "=s"()7836  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 4, i32 poison, i32 poison>7837  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)7838  ret void7839}7840 7841define void @s_shuffle_v4p0_v3p0__5_5_u_u() {7842; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_u_u:7843; GFX9:       ; %bb.0:7844; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7845; GFX9-NEXT:    ;;#ASMSTART7846; GFX9-NEXT:    ; def s[4:9]7847; GFX9-NEXT:    ;;#ASMEND7848; GFX9-NEXT:    s_mov_b32 s10, s87849; GFX9-NEXT:    s_mov_b32 s11, s97850; GFX9-NEXT:    ;;#ASMSTART7851; GFX9-NEXT:    ; use s[8:15]7852; GFX9-NEXT:    ;;#ASMEND7853; GFX9-NEXT:    s_setpc_b64 s[30:31]7854  %vec0 = call <3 x ptr> asm "; def $0", "=s"()7855  %vec1 = call <3 x ptr> asm "; def $0", "=s"()7856  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 poison>7857  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)7858  ret void7859}7860 7861define void @s_shuffle_v4p0_v3p0__5_5_0_u() {7862; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_0_u:7863; GFX9:       ; %bb.0:7864; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7865; GFX9-NEXT:    ;;#ASMSTART7866; GFX9-NEXT:    ; def s[12:17]7867; GFX9-NEXT:    ;;#ASMEND7868; GFX9-NEXT:    ;;#ASMSTART7869; GFX9-NEXT:    ; def s[4:9]7870; GFX9-NEXT:    ;;#ASMEND7871; GFX9-NEXT:    s_mov_b32 s10, s87872; GFX9-NEXT:    s_mov_b32 s11, s97873; GFX9-NEXT:    ;;#ASMSTART7874; GFX9-NEXT:    ; use s[8:15]7875; GFX9-NEXT:    ;;#ASMEND7876; GFX9-NEXT:    s_setpc_b64 s[30:31]7877  %vec0 = call <3 x ptr> asm "; def $0", "=s"()7878  %vec1 = call <3 x ptr> asm "; def $0", "=s"()7879  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 poison>7880  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)7881  ret void7882}7883 7884define void @s_shuffle_v4p0_v3p0__5_5_1_u() {7885; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_5_1_u:7886; GFX900:       ; %bb.0:7887; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7888; GFX900-NEXT:    ;;#ASMSTART7889; GFX900-NEXT:    ; def s[12:17]7890; GFX900-NEXT:    ;;#ASMEND7891; GFX900-NEXT:    ;;#ASMSTART7892; GFX900-NEXT:    ; def s[4:9]7893; GFX900-NEXT:    ;;#ASMEND7894; GFX900-NEXT:    s_mov_b32 s10, s87895; GFX900-NEXT:    s_mov_b32 s11, s97896; GFX900-NEXT:    s_mov_b32 s12, s147897; GFX900-NEXT:    s_mov_b32 s13, s157898; GFX900-NEXT:    ;;#ASMSTART7899; GFX900-NEXT:    ; use s[8:15]7900; GFX900-NEXT:    ;;#ASMEND7901; GFX900-NEXT:    s_setpc_b64 s[30:31]7902;7903; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_5_1_u:7904; GFX90A:       ; %bb.0:7905; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7906; GFX90A-NEXT:    ;;#ASMSTART7907; GFX90A-NEXT:    ; def s[12:17]7908; GFX90A-NEXT:    ;;#ASMEND7909; GFX90A-NEXT:    ;;#ASMSTART7910; GFX90A-NEXT:    ; def s[4:9]7911; GFX90A-NEXT:    ;;#ASMEND7912; GFX90A-NEXT:    s_mov_b32 s10, s87913; GFX90A-NEXT:    s_mov_b32 s11, s97914; GFX90A-NEXT:    s_mov_b32 s12, s147915; GFX90A-NEXT:    s_mov_b32 s13, s157916; GFX90A-NEXT:    ;;#ASMSTART7917; GFX90A-NEXT:    ; use s[8:15]7918; GFX90A-NEXT:    ;;#ASMEND7919; GFX90A-NEXT:    s_setpc_b64 s[30:31]7920;7921; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_5_1_u:7922; GFX942:       ; %bb.0:7923; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7924; GFX942-NEXT:    ;;#ASMSTART7925; GFX942-NEXT:    ; def s[0:5]7926; GFX942-NEXT:    ;;#ASMEND7927; GFX942-NEXT:    s_mov_b32 s12, s27928; GFX942-NEXT:    ;;#ASMSTART7929; GFX942-NEXT:    ; def s[4:9]7930; GFX942-NEXT:    ;;#ASMEND7931; GFX942-NEXT:    s_mov_b32 s10, s87932; GFX942-NEXT:    s_mov_b32 s11, s97933; GFX942-NEXT:    s_mov_b32 s13, s37934; GFX942-NEXT:    ;;#ASMSTART7935; GFX942-NEXT:    ; use s[8:15]7936; GFX942-NEXT:    ;;#ASMEND7937; GFX942-NEXT:    s_setpc_b64 s[30:31]7938  %vec0 = call <3 x ptr> asm "; def $0", "=s"()7939  %vec1 = call <3 x ptr> asm "; def $0", "=s"()7940  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 poison>7941  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)7942  ret void7943}7944 7945define void @s_shuffle_v4p0_v3p0__5_5_2_u() {7946; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_5_2_u:7947; GFX900:       ; %bb.0:7948; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7949; GFX900-NEXT:    ;;#ASMSTART7950; GFX900-NEXT:    ; def s[8:13]7951; GFX900-NEXT:    ;;#ASMEND7952; GFX900-NEXT:    ;;#ASMSTART7953; GFX900-NEXT:    ; def s[4:9]7954; GFX900-NEXT:    ;;#ASMEND7955; GFX900-NEXT:    s_mov_b32 s10, s87956; GFX900-NEXT:    s_mov_b32 s11, s97957; GFX900-NEXT:    ;;#ASMSTART7958; GFX900-NEXT:    ; use s[8:15]7959; GFX900-NEXT:    ;;#ASMEND7960; GFX900-NEXT:    s_setpc_b64 s[30:31]7961;7962; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_5_2_u:7963; GFX90A:       ; %bb.0:7964; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7965; GFX90A-NEXT:    ;;#ASMSTART7966; GFX90A-NEXT:    ; def s[8:13]7967; GFX90A-NEXT:    ;;#ASMEND7968; GFX90A-NEXT:    ;;#ASMSTART7969; GFX90A-NEXT:    ; def s[4:9]7970; GFX90A-NEXT:    ;;#ASMEND7971; GFX90A-NEXT:    s_mov_b32 s10, s87972; GFX90A-NEXT:    s_mov_b32 s11, s97973; GFX90A-NEXT:    ;;#ASMSTART7974; GFX90A-NEXT:    ; use s[8:15]7975; GFX90A-NEXT:    ;;#ASMEND7976; GFX90A-NEXT:    s_setpc_b64 s[30:31]7977;7978; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_5_2_u:7979; GFX942:       ; %bb.0:7980; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7981; GFX942-NEXT:    ;;#ASMSTART7982; GFX942-NEXT:    ; def s[8:13]7983; GFX942-NEXT:    ;;#ASMEND7984; GFX942-NEXT:    s_nop 07985; GFX942-NEXT:    ;;#ASMSTART7986; GFX942-NEXT:    ; def s[4:9]7987; GFX942-NEXT:    ;;#ASMEND7988; GFX942-NEXT:    s_mov_b32 s10, s87989; GFX942-NEXT:    s_mov_b32 s11, s97990; GFX942-NEXT:    ;;#ASMSTART7991; GFX942-NEXT:    ; use s[8:15]7992; GFX942-NEXT:    ;;#ASMEND7993; GFX942-NEXT:    s_setpc_b64 s[30:31]7994  %vec0 = call <3 x ptr> asm "; def $0", "=s"()7995  %vec1 = call <3 x ptr> asm "; def $0", "=s"()7996  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 poison>7997  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)7998  ret void7999}8000 8001define void @s_shuffle_v4p0_v3p0__5_5_3_u() {8002; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_3_u:8003; GFX9:       ; %bb.0:8004; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8005; GFX9-NEXT:    ;;#ASMSTART8006; GFX9-NEXT:    ; def s[4:9]8007; GFX9-NEXT:    ;;#ASMEND8008; GFX9-NEXT:    s_mov_b32 s10, s88009; GFX9-NEXT:    s_mov_b32 s11, s98010; GFX9-NEXT:    s_mov_b32 s12, s48011; GFX9-NEXT:    s_mov_b32 s13, s58012; GFX9-NEXT:    ;;#ASMSTART8013; GFX9-NEXT:    ; use s[8:15]8014; GFX9-NEXT:    ;;#ASMEND8015; GFX9-NEXT:    s_setpc_b64 s[30:31]8016  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8017  %vec1 = call <3 x ptr> asm "; def $0", "=s"()8018  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 poison>8019  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8020  ret void8021}8022 8023define void @s_shuffle_v4p0_v3p0__5_5_4_u() {8024; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_4_u:8025; GFX9:       ; %bb.0:8026; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8027; GFX9-NEXT:    ;;#ASMSTART8028; GFX9-NEXT:    ; def s[4:9]8029; GFX9-NEXT:    ;;#ASMEND8030; GFX9-NEXT:    s_mov_b32 s10, s88031; GFX9-NEXT:    s_mov_b32 s11, s98032; GFX9-NEXT:    s_mov_b32 s12, s68033; GFX9-NEXT:    s_mov_b32 s13, s78034; GFX9-NEXT:    ;;#ASMSTART8035; GFX9-NEXT:    ; use s[8:15]8036; GFX9-NEXT:    ;;#ASMEND8037; GFX9-NEXT:    s_setpc_b64 s[30:31]8038  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8039  %vec1 = call <3 x ptr> asm "; def $0", "=s"()8040  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 poison>8041  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8042  ret void8043}8044 8045define void @s_shuffle_v4p0_v3p0__5_5_5_u() {8046; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_5_u:8047; GFX9:       ; %bb.0:8048; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8049; GFX9-NEXT:    ;;#ASMSTART8050; GFX9-NEXT:    ; def s[4:9]8051; GFX9-NEXT:    ;;#ASMEND8052; GFX9-NEXT:    s_mov_b32 s10, s88053; GFX9-NEXT:    s_mov_b32 s11, s98054; GFX9-NEXT:    s_mov_b32 s12, s88055; GFX9-NEXT:    s_mov_b32 s13, s98056; GFX9-NEXT:    ;;#ASMSTART8057; GFX9-NEXT:    ; use s[8:15]8058; GFX9-NEXT:    ;;#ASMEND8059; GFX9-NEXT:    s_setpc_b64 s[30:31]8060  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8061  %vec1 = call <3 x ptr> asm "; def $0", "=s"()8062  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 poison>8063  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8064  ret void8065}8066 8067define void @s_shuffle_v4p0_v3p0__5_5_5_0() {8068; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_5_5_0:8069; GFX900:       ; %bb.0:8070; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8071; GFX900-NEXT:    ;;#ASMSTART8072; GFX900-NEXT:    ; def s[16:21]8073; GFX900-NEXT:    ;;#ASMEND8074; GFX900-NEXT:    ;;#ASMSTART8075; GFX900-NEXT:    ; def s[4:9]8076; GFX900-NEXT:    ;;#ASMEND8077; GFX900-NEXT:    s_mov_b32 s10, s88078; GFX900-NEXT:    s_mov_b32 s11, s98079; GFX900-NEXT:    s_mov_b32 s12, s88080; GFX900-NEXT:    s_mov_b32 s13, s98081; GFX900-NEXT:    s_mov_b32 s14, s168082; GFX900-NEXT:    s_mov_b32 s15, s178083; GFX900-NEXT:    ;;#ASMSTART8084; GFX900-NEXT:    ; use s[8:15]8085; GFX900-NEXT:    ;;#ASMEND8086; GFX900-NEXT:    s_setpc_b64 s[30:31]8087;8088; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_5_5_0:8089; GFX90A:       ; %bb.0:8090; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8091; GFX90A-NEXT:    ;;#ASMSTART8092; GFX90A-NEXT:    ; def s[16:21]8093; GFX90A-NEXT:    ;;#ASMEND8094; GFX90A-NEXT:    ;;#ASMSTART8095; GFX90A-NEXT:    ; def s[4:9]8096; GFX90A-NEXT:    ;;#ASMEND8097; GFX90A-NEXT:    s_mov_b32 s10, s88098; GFX90A-NEXT:    s_mov_b32 s11, s98099; GFX90A-NEXT:    s_mov_b32 s12, s88100; GFX90A-NEXT:    s_mov_b32 s13, s98101; GFX90A-NEXT:    s_mov_b32 s14, s168102; GFX90A-NEXT:    s_mov_b32 s15, s178103; GFX90A-NEXT:    ;;#ASMSTART8104; GFX90A-NEXT:    ; use s[8:15]8105; GFX90A-NEXT:    ;;#ASMEND8106; GFX90A-NEXT:    s_setpc_b64 s[30:31]8107;8108; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_5_5_0:8109; GFX942:       ; %bb.0:8110; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8111; GFX942-NEXT:    ;;#ASMSTART8112; GFX942-NEXT:    ; def s[0:5]8113; GFX942-NEXT:    ;;#ASMEND8114; GFX942-NEXT:    s_mov_b32 s14, s08115; GFX942-NEXT:    ;;#ASMSTART8116; GFX942-NEXT:    ; def s[4:9]8117; GFX942-NEXT:    ;;#ASMEND8118; GFX942-NEXT:    s_mov_b32 s10, s88119; GFX942-NEXT:    s_mov_b32 s11, s98120; GFX942-NEXT:    s_mov_b32 s12, s88121; GFX942-NEXT:    s_mov_b32 s13, s98122; GFX942-NEXT:    s_mov_b32 s15, s18123; GFX942-NEXT:    ;;#ASMSTART8124; GFX942-NEXT:    ; use s[8:15]8125; GFX942-NEXT:    ;;#ASMEND8126; GFX942-NEXT:    s_setpc_b64 s[30:31]8127  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8128  %vec1 = call <3 x ptr> asm "; def $0", "=s"()8129  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 0>8130  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8131  ret void8132}8133 8134define void @s_shuffle_v4p0_v3p0__5_5_5_1() {8135; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_5_1:8136; GFX9:       ; %bb.0:8137; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8138; GFX9-NEXT:    ;;#ASMSTART8139; GFX9-NEXT:    ; def s[12:17]8140; GFX9-NEXT:    ;;#ASMEND8141; GFX9-NEXT:    ;;#ASMSTART8142; GFX9-NEXT:    ; def s[4:9]8143; GFX9-NEXT:    ;;#ASMEND8144; GFX9-NEXT:    s_mov_b32 s10, s88145; GFX9-NEXT:    s_mov_b32 s11, s98146; GFX9-NEXT:    s_mov_b32 s12, s88147; GFX9-NEXT:    s_mov_b32 s13, s98148; GFX9-NEXT:    ;;#ASMSTART8149; GFX9-NEXT:    ; use s[8:15]8150; GFX9-NEXT:    ;;#ASMEND8151; GFX9-NEXT:    s_setpc_b64 s[30:31]8152  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8153  %vec1 = call <3 x ptr> asm "; def $0", "=s"()8154  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 1>8155  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8156  ret void8157}8158 8159define void @s_shuffle_v4p0_v3p0__5_5_5_2() {8160; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_5_2:8161; GFX9:       ; %bb.0:8162; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8163; GFX9-NEXT:    ;;#ASMSTART8164; GFX9-NEXT:    ; def s[12:17]8165; GFX9-NEXT:    ;;#ASMEND8166; GFX9-NEXT:    ;;#ASMSTART8167; GFX9-NEXT:    ; def s[4:9]8168; GFX9-NEXT:    ;;#ASMEND8169; GFX9-NEXT:    s_mov_b32 s10, s88170; GFX9-NEXT:    s_mov_b32 s11, s98171; GFX9-NEXT:    s_mov_b32 s12, s88172; GFX9-NEXT:    s_mov_b32 s13, s98173; GFX9-NEXT:    s_mov_b32 s14, s168174; GFX9-NEXT:    s_mov_b32 s15, s178175; GFX9-NEXT:    ;;#ASMSTART8176; GFX9-NEXT:    ; use s[8:15]8177; GFX9-NEXT:    ;;#ASMEND8178; GFX9-NEXT:    s_setpc_b64 s[30:31]8179  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8180  %vec1 = call <3 x ptr> asm "; def $0", "=s"()8181  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 2>8182  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8183  ret void8184}8185 8186define void @s_shuffle_v4p0_v3p0__5_5_5_3() {8187; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_5_3:8188; GFX9:       ; %bb.0:8189; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8190; GFX9-NEXT:    ;;#ASMSTART8191; GFX9-NEXT:    ; def s[4:9]8192; GFX9-NEXT:    ;;#ASMEND8193; GFX9-NEXT:    s_mov_b32 s10, s88194; GFX9-NEXT:    s_mov_b32 s11, s98195; GFX9-NEXT:    s_mov_b32 s12, s88196; GFX9-NEXT:    s_mov_b32 s13, s98197; GFX9-NEXT:    s_mov_b32 s14, s48198; GFX9-NEXT:    s_mov_b32 s15, s58199; GFX9-NEXT:    ;;#ASMSTART8200; GFX9-NEXT:    ; use s[8:15]8201; GFX9-NEXT:    ;;#ASMEND8202; GFX9-NEXT:    s_setpc_b64 s[30:31]8203  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8204  %vec1 = call <3 x ptr> asm "; def $0", "=s"()8205  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 3>8206  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8207  ret void8208}8209 8210define void @s_shuffle_v4p0_v3p0__5_5_5_4() {8211; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_5_4:8212; GFX9:       ; %bb.0:8213; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8214; GFX9-NEXT:    ;;#ASMSTART8215; GFX9-NEXT:    ; def s[4:9]8216; GFX9-NEXT:    ;;#ASMEND8217; GFX9-NEXT:    s_mov_b32 s10, s88218; GFX9-NEXT:    s_mov_b32 s11, s98219; GFX9-NEXT:    s_mov_b32 s12, s88220; GFX9-NEXT:    s_mov_b32 s13, s98221; GFX9-NEXT:    s_mov_b32 s14, s68222; GFX9-NEXT:    s_mov_b32 s15, s78223; GFX9-NEXT:    ;;#ASMSTART8224; GFX9-NEXT:    ; use s[8:15]8225; GFX9-NEXT:    ;;#ASMEND8226; GFX9-NEXT:    s_setpc_b64 s[30:31]8227  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8228  %vec1 = call <3 x ptr> asm "; def $0", "=s"()8229  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 4>8230  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8231  ret void8232}8233 8234define void @s_shuffle_v4p0_v3p0__5_5_5_5() {8235; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_5_5:8236; GFX9:       ; %bb.0:8237; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8238; GFX9-NEXT:    ;;#ASMSTART8239; GFX9-NEXT:    ; def s[4:9]8240; GFX9-NEXT:    ;;#ASMEND8241; GFX9-NEXT:    s_mov_b32 s10, s88242; GFX9-NEXT:    s_mov_b32 s11, s98243; GFX9-NEXT:    s_mov_b32 s12, s88244; GFX9-NEXT:    s_mov_b32 s13, s98245; GFX9-NEXT:    s_mov_b32 s14, s88246; GFX9-NEXT:    s_mov_b32 s15, s98247; GFX9-NEXT:    ;;#ASMSTART8248; GFX9-NEXT:    ; use s[8:15]8249; GFX9-NEXT:    ;;#ASMEND8250; GFX9-NEXT:    s_setpc_b64 s[30:31]8251  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8252  %vec1 = call <3 x ptr> asm "; def $0", "=s"()8253  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 5>8254  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8255  ret void8256}8257 8258define void @s_shuffle_v4p0_v3p0__u_0_0_0() {8259; GFX9-LABEL: s_shuffle_v4p0_v3p0__u_0_0_0:8260; GFX9:       ; %bb.0:8261; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8262; GFX9-NEXT:    ;;#ASMSTART8263; GFX9-NEXT:    ; def s[12:17]8264; GFX9-NEXT:    ;;#ASMEND8265; GFX9-NEXT:    s_mov_b32 s10, s128266; GFX9-NEXT:    s_mov_b32 s11, s138267; GFX9-NEXT:    s_mov_b32 s14, s128268; GFX9-NEXT:    s_mov_b32 s15, s138269; GFX9-NEXT:    ;;#ASMSTART8270; GFX9-NEXT:    ; use s[8:15]8271; GFX9-NEXT:    ;;#ASMEND8272; GFX9-NEXT:    s_setpc_b64 s[30:31]8273  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8274  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0>8275  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8276  ret void8277}8278 8279define void @s_shuffle_v4p0_v3p0__0_0_0_0() {8280; GFX9-LABEL: s_shuffle_v4p0_v3p0__0_0_0_0:8281; GFX9:       ; %bb.0:8282; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8283; GFX9-NEXT:    ;;#ASMSTART8284; GFX9-NEXT:    ; def s[8:13]8285; GFX9-NEXT:    ;;#ASMEND8286; GFX9-NEXT:    s_mov_b32 s10, s88287; GFX9-NEXT:    s_mov_b32 s11, s98288; GFX9-NEXT:    s_mov_b32 s12, s88289; GFX9-NEXT:    s_mov_b32 s13, s98290; GFX9-NEXT:    s_mov_b32 s14, s88291; GFX9-NEXT:    s_mov_b32 s15, s98292; GFX9-NEXT:    ;;#ASMSTART8293; GFX9-NEXT:    ; use s[8:15]8294; GFX9-NEXT:    ;;#ASMEND8295; GFX9-NEXT:    s_setpc_b64 s[30:31]8296  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8297  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> zeroinitializer8298  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8299  ret void8300}8301 8302define void @s_shuffle_v4p0_v3p0__1_0_0_0() {8303; GFX9-LABEL: s_shuffle_v4p0_v3p0__1_0_0_0:8304; GFX9:       ; %bb.0:8305; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8306; GFX9-NEXT:    ;;#ASMSTART8307; GFX9-NEXT:    ; def s[12:17]8308; GFX9-NEXT:    ;;#ASMEND8309; GFX9-NEXT:    s_mov_b32 s8, s148310; GFX9-NEXT:    s_mov_b32 s9, s158311; GFX9-NEXT:    s_mov_b32 s10, s128312; GFX9-NEXT:    s_mov_b32 s11, s138313; GFX9-NEXT:    s_mov_b32 s14, s128314; GFX9-NEXT:    s_mov_b32 s15, s138315; GFX9-NEXT:    ;;#ASMSTART8316; GFX9-NEXT:    ; use s[8:15]8317; GFX9-NEXT:    ;;#ASMEND8318; GFX9-NEXT:    s_setpc_b64 s[30:31]8319  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8320  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>8321  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8322  ret void8323}8324 8325define void @s_shuffle_v4p0_v3p0__2_0_0_0() {8326; GFX9-LABEL: s_shuffle_v4p0_v3p0__2_0_0_0:8327; GFX9:       ; %bb.0:8328; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8329; GFX9-NEXT:    ;;#ASMSTART8330; GFX9-NEXT:    ; def s[4:9]8331; GFX9-NEXT:    ;;#ASMEND8332; GFX9-NEXT:    s_mov_b32 s10, s48333; GFX9-NEXT:    s_mov_b32 s11, s58334; GFX9-NEXT:    s_mov_b32 s12, s48335; GFX9-NEXT:    s_mov_b32 s13, s58336; GFX9-NEXT:    s_mov_b32 s14, s48337; GFX9-NEXT:    s_mov_b32 s15, s58338; GFX9-NEXT:    ;;#ASMSTART8339; GFX9-NEXT:    ; use s[8:15]8340; GFX9-NEXT:    ;;#ASMEND8341; GFX9-NEXT:    s_setpc_b64 s[30:31]8342  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8343  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0>8344  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8345  ret void8346}8347 8348define void @s_shuffle_v4p0_v3p0__3_0_0_0() {8349; GFX9-LABEL: s_shuffle_v4p0_v3p0__3_0_0_0:8350; GFX9:       ; %bb.0:8351; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8352; GFX9-NEXT:    ;;#ASMSTART8353; GFX9-NEXT:    ; def s[12:17]8354; GFX9-NEXT:    ;;#ASMEND8355; GFX9-NEXT:    s_mov_b32 s10, s128356; GFX9-NEXT:    s_mov_b32 s11, s138357; GFX9-NEXT:    s_mov_b32 s14, s128358; GFX9-NEXT:    s_mov_b32 s15, s138359; GFX9-NEXT:    ;;#ASMSTART8360; GFX9-NEXT:    ; use s[8:15]8361; GFX9-NEXT:    ;;#ASMEND8362; GFX9-NEXT:    s_setpc_b64 s[30:31]8363  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8364  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 3, i32 0, i32 0, i32 0>8365  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8366  ret void8367}8368 8369define void @s_shuffle_v4p0_v3p0__4_0_0_0() {8370; GFX900-LABEL: s_shuffle_v4p0_v3p0__4_0_0_0:8371; GFX900:       ; %bb.0:8372; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8373; GFX900-NEXT:    ;;#ASMSTART8374; GFX900-NEXT:    ; def s[12:17]8375; GFX900-NEXT:    ;;#ASMEND8376; GFX900-NEXT:    ;;#ASMSTART8377; GFX900-NEXT:    ; def s[4:9]8378; GFX900-NEXT:    ;;#ASMEND8379; GFX900-NEXT:    s_mov_b32 s8, s68380; GFX900-NEXT:    s_mov_b32 s9, s78381; GFX900-NEXT:    s_mov_b32 s10, s128382; GFX900-NEXT:    s_mov_b32 s11, s138383; GFX900-NEXT:    s_mov_b32 s14, s128384; GFX900-NEXT:    s_mov_b32 s15, s138385; GFX900-NEXT:    ;;#ASMSTART8386; GFX900-NEXT:    ; use s[8:15]8387; GFX900-NEXT:    ;;#ASMEND8388; GFX900-NEXT:    s_setpc_b64 s[30:31]8389;8390; GFX90A-LABEL: s_shuffle_v4p0_v3p0__4_0_0_0:8391; GFX90A:       ; %bb.0:8392; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8393; GFX90A-NEXT:    ;;#ASMSTART8394; GFX90A-NEXT:    ; def s[12:17]8395; GFX90A-NEXT:    ;;#ASMEND8396; GFX90A-NEXT:    ;;#ASMSTART8397; GFX90A-NEXT:    ; def s[4:9]8398; GFX90A-NEXT:    ;;#ASMEND8399; GFX90A-NEXT:    s_mov_b32 s8, s68400; GFX90A-NEXT:    s_mov_b32 s9, s78401; GFX90A-NEXT:    s_mov_b32 s10, s128402; GFX90A-NEXT:    s_mov_b32 s11, s138403; GFX90A-NEXT:    s_mov_b32 s14, s128404; GFX90A-NEXT:    s_mov_b32 s15, s138405; GFX90A-NEXT:    ;;#ASMSTART8406; GFX90A-NEXT:    ; use s[8:15]8407; GFX90A-NEXT:    ;;#ASMEND8408; GFX90A-NEXT:    s_setpc_b64 s[30:31]8409;8410; GFX942-LABEL: s_shuffle_v4p0_v3p0__4_0_0_0:8411; GFX942:       ; %bb.0:8412; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8413; GFX942-NEXT:    ;;#ASMSTART8414; GFX942-NEXT:    ; def s[12:17]8415; GFX942-NEXT:    ;;#ASMEND8416; GFX942-NEXT:    ;;#ASMSTART8417; GFX942-NEXT:    ; def s[0:5]8418; GFX942-NEXT:    ;;#ASMEND8419; GFX942-NEXT:    s_mov_b32 s8, s28420; GFX942-NEXT:    s_mov_b32 s9, s38421; GFX942-NEXT:    s_mov_b32 s10, s128422; GFX942-NEXT:    s_mov_b32 s11, s138423; GFX942-NEXT:    s_mov_b32 s14, s128424; GFX942-NEXT:    s_mov_b32 s15, s138425; GFX942-NEXT:    ;;#ASMSTART8426; GFX942-NEXT:    ; use s[8:15]8427; GFX942-NEXT:    ;;#ASMEND8428; GFX942-NEXT:    s_setpc_b64 s[30:31]8429  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8430  %vec1 = call <3 x ptr> asm "; def $0", "=s"()8431  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 4, i32 0, i32 0, i32 0>8432  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8433  ret void8434}8435 8436define void @s_shuffle_v4p0_v3p0__5_0_0_0() {8437; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_0_0_0:8438; GFX9:       ; %bb.0:8439; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8440; GFX9-NEXT:    ;;#ASMSTART8441; GFX9-NEXT:    ; def s[12:17]8442; GFX9-NEXT:    ;;#ASMEND8443; GFX9-NEXT:    ;;#ASMSTART8444; GFX9-NEXT:    ; def s[4:9]8445; GFX9-NEXT:    ;;#ASMEND8446; GFX9-NEXT:    s_mov_b32 s10, s128447; GFX9-NEXT:    s_mov_b32 s11, s138448; GFX9-NEXT:    s_mov_b32 s14, s128449; GFX9-NEXT:    s_mov_b32 s15, s138450; GFX9-NEXT:    ;;#ASMSTART8451; GFX9-NEXT:    ; use s[8:15]8452; GFX9-NEXT:    ;;#ASMEND8453; GFX9-NEXT:    s_setpc_b64 s[30:31]8454  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8455  %vec1 = call <3 x ptr> asm "; def $0", "=s"()8456  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 0, i32 0, i32 0>8457  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8458  ret void8459}8460 8461define void @s_shuffle_v4p0_v3p0__5_u_0_0() {8462; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_u_0_0:8463; GFX9:       ; %bb.0:8464; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8465; GFX9-NEXT:    ;;#ASMSTART8466; GFX9-NEXT:    ; def s[12:17]8467; GFX9-NEXT:    ;;#ASMEND8468; GFX9-NEXT:    ;;#ASMSTART8469; GFX9-NEXT:    ; def s[4:9]8470; GFX9-NEXT:    ;;#ASMEND8471; GFX9-NEXT:    s_mov_b32 s14, s128472; GFX9-NEXT:    s_mov_b32 s15, s138473; GFX9-NEXT:    ;;#ASMSTART8474; GFX9-NEXT:    ; use s[8:15]8475; GFX9-NEXT:    ;;#ASMEND8476; GFX9-NEXT:    s_setpc_b64 s[30:31]8477  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8478  %vec1 = call <3 x ptr> asm "; def $0", "=s"()8479  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 poison, i32 0, i32 0>8480  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8481  ret void8482}8483 8484define void @s_shuffle_v4p0_v3p0__5_1_0_0() {8485; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_1_0_0:8486; GFX9:       ; %bb.0:8487; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8488; GFX9-NEXT:    ;;#ASMSTART8489; GFX9-NEXT:    ; def s[12:17]8490; GFX9-NEXT:    ;;#ASMEND8491; GFX9-NEXT:    ;;#ASMSTART8492; GFX9-NEXT:    ; def s[4:9]8493; GFX9-NEXT:    ;;#ASMEND8494; GFX9-NEXT:    s_mov_b32 s10, s148495; GFX9-NEXT:    s_mov_b32 s11, s158496; GFX9-NEXT:    s_mov_b32 s14, s128497; GFX9-NEXT:    s_mov_b32 s15, s138498; GFX9-NEXT:    ;;#ASMSTART8499; GFX9-NEXT:    ; use s[8:15]8500; GFX9-NEXT:    ;;#ASMEND8501; GFX9-NEXT:    s_setpc_b64 s[30:31]8502  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8503  %vec1 = call <3 x ptr> asm "; def $0", "=s"()8504  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 1, i32 0, i32 0>8505  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8506  ret void8507}8508 8509define void @s_shuffle_v4p0_v3p0__5_2_0_0() {8510; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_2_0_0:8511; GFX9:       ; %bb.0:8512; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8513; GFX9-NEXT:    ;;#ASMSTART8514; GFX9-NEXT:    ; def s[12:17]8515; GFX9-NEXT:    ;;#ASMEND8516; GFX9-NEXT:    ;;#ASMSTART8517; GFX9-NEXT:    ; def s[4:9]8518; GFX9-NEXT:    ;;#ASMEND8519; GFX9-NEXT:    s_mov_b32 s10, s168520; GFX9-NEXT:    s_mov_b32 s11, s178521; GFX9-NEXT:    s_mov_b32 s14, s128522; GFX9-NEXT:    s_mov_b32 s15, s138523; GFX9-NEXT:    ;;#ASMSTART8524; GFX9-NEXT:    ; use s[8:15]8525; GFX9-NEXT:    ;;#ASMEND8526; GFX9-NEXT:    s_setpc_b64 s[30:31]8527  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8528  %vec1 = call <3 x ptr> asm "; def $0", "=s"()8529  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 2, i32 0, i32 0>8530  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8531  ret void8532}8533 8534define void @s_shuffle_v4p0_v3p0__5_3_0_0() {8535; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_3_0_0:8536; GFX9:       ; %bb.0:8537; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8538; GFX9-NEXT:    ;;#ASMSTART8539; GFX9-NEXT:    ; def s[12:17]8540; GFX9-NEXT:    ;;#ASMEND8541; GFX9-NEXT:    ;;#ASMSTART8542; GFX9-NEXT:    ; def s[4:9]8543; GFX9-NEXT:    ;;#ASMEND8544; GFX9-NEXT:    s_mov_b32 s10, s48545; GFX9-NEXT:    s_mov_b32 s11, s58546; GFX9-NEXT:    s_mov_b32 s14, s128547; GFX9-NEXT:    s_mov_b32 s15, s138548; GFX9-NEXT:    ;;#ASMSTART8549; GFX9-NEXT:    ; use s[8:15]8550; GFX9-NEXT:    ;;#ASMEND8551; GFX9-NEXT:    s_setpc_b64 s[30:31]8552  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8553  %vec1 = call <3 x ptr> asm "; def $0", "=s"()8554  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 3, i32 0, i32 0>8555  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8556  ret void8557}8558 8559define void @s_shuffle_v4p0_v3p0__5_4_0_0() {8560; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_4_0_0:8561; GFX9:       ; %bb.0:8562; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8563; GFX9-NEXT:    ;;#ASMSTART8564; GFX9-NEXT:    ; def s[12:17]8565; GFX9-NEXT:    ;;#ASMEND8566; GFX9-NEXT:    ;;#ASMSTART8567; GFX9-NEXT:    ; def s[4:9]8568; GFX9-NEXT:    ;;#ASMEND8569; GFX9-NEXT:    s_mov_b32 s10, s68570; GFX9-NEXT:    s_mov_b32 s11, s78571; GFX9-NEXT:    s_mov_b32 s14, s128572; GFX9-NEXT:    s_mov_b32 s15, s138573; GFX9-NEXT:    ;;#ASMSTART8574; GFX9-NEXT:    ; use s[8:15]8575; GFX9-NEXT:    ;;#ASMEND8576; GFX9-NEXT:    s_setpc_b64 s[30:31]8577  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8578  %vec1 = call <3 x ptr> asm "; def $0", "=s"()8579  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 4, i32 0, i32 0>8580  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8581  ret void8582}8583 8584define void @s_shuffle_v4p0_v3p0__5_5_0_0() {8585; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_0_0:8586; GFX9:       ; %bb.0:8587; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8588; GFX9-NEXT:    ;;#ASMSTART8589; GFX9-NEXT:    ; def s[12:17]8590; GFX9-NEXT:    ;;#ASMEND8591; GFX9-NEXT:    ;;#ASMSTART8592; GFX9-NEXT:    ; def s[4:9]8593; GFX9-NEXT:    ;;#ASMEND8594; GFX9-NEXT:    s_mov_b32 s10, s88595; GFX9-NEXT:    s_mov_b32 s11, s98596; GFX9-NEXT:    s_mov_b32 s14, s128597; GFX9-NEXT:    s_mov_b32 s15, s138598; GFX9-NEXT:    ;;#ASMSTART8599; GFX9-NEXT:    ; use s[8:15]8600; GFX9-NEXT:    ;;#ASMEND8601; GFX9-NEXT:    s_setpc_b64 s[30:31]8602  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8603  %vec1 = call <3 x ptr> asm "; def $0", "=s"()8604  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 0>8605  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8606  ret void8607}8608 8609define void @s_shuffle_v4p0_v3p0__5_5_u_0() {8610; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_5_u_0:8611; GFX900:       ; %bb.0:8612; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8613; GFX900-NEXT:    ;;#ASMSTART8614; GFX900-NEXT:    ; def s[12:17]8615; GFX900-NEXT:    ;;#ASMEND8616; GFX900-NEXT:    ;;#ASMSTART8617; GFX900-NEXT:    ; def s[4:9]8618; GFX900-NEXT:    ;;#ASMEND8619; GFX900-NEXT:    s_mov_b32 s10, s88620; GFX900-NEXT:    s_mov_b32 s11, s98621; GFX900-NEXT:    s_mov_b32 s14, s128622; GFX900-NEXT:    s_mov_b32 s15, s138623; GFX900-NEXT:    ;;#ASMSTART8624; GFX900-NEXT:    ; use s[8:15]8625; GFX900-NEXT:    ;;#ASMEND8626; GFX900-NEXT:    s_setpc_b64 s[30:31]8627;8628; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_5_u_0:8629; GFX90A:       ; %bb.0:8630; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8631; GFX90A-NEXT:    ;;#ASMSTART8632; GFX90A-NEXT:    ; def s[12:17]8633; GFX90A-NEXT:    ;;#ASMEND8634; GFX90A-NEXT:    ;;#ASMSTART8635; GFX90A-NEXT:    ; def s[4:9]8636; GFX90A-NEXT:    ;;#ASMEND8637; GFX90A-NEXT:    s_mov_b32 s10, s88638; GFX90A-NEXT:    s_mov_b32 s11, s98639; GFX90A-NEXT:    s_mov_b32 s14, s128640; GFX90A-NEXT:    s_mov_b32 s15, s138641; GFX90A-NEXT:    ;;#ASMSTART8642; GFX90A-NEXT:    ; use s[8:15]8643; GFX90A-NEXT:    ;;#ASMEND8644; GFX90A-NEXT:    s_setpc_b64 s[30:31]8645;8646; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_5_u_0:8647; GFX942:       ; %bb.0:8648; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8649; GFX942-NEXT:    ;;#ASMSTART8650; GFX942-NEXT:    ; def s[0:5]8651; GFX942-NEXT:    ;;#ASMEND8652; GFX942-NEXT:    s_mov_b32 s14, s08653; GFX942-NEXT:    ;;#ASMSTART8654; GFX942-NEXT:    ; def s[4:9]8655; GFX942-NEXT:    ;;#ASMEND8656; GFX942-NEXT:    s_mov_b32 s10, s88657; GFX942-NEXT:    s_mov_b32 s11, s98658; GFX942-NEXT:    s_mov_b32 s15, s18659; GFX942-NEXT:    ;;#ASMSTART8660; GFX942-NEXT:    ; use s[8:15]8661; GFX942-NEXT:    ;;#ASMEND8662; GFX942-NEXT:    s_setpc_b64 s[30:31]8663  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8664  %vec1 = call <3 x ptr> asm "; def $0", "=s"()8665  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 0>8666  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8667  ret void8668}8669 8670define void @s_shuffle_v4p0_v3p0__5_5_1_0() {8671; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_5_1_0:8672; GFX900:       ; %bb.0:8673; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8674; GFX900-NEXT:    ;;#ASMSTART8675; GFX900-NEXT:    ; def s[16:21]8676; GFX900-NEXT:    ;;#ASMEND8677; GFX900-NEXT:    ;;#ASMSTART8678; GFX900-NEXT:    ; def s[4:9]8679; GFX900-NEXT:    ;;#ASMEND8680; GFX900-NEXT:    s_mov_b32 s10, s88681; GFX900-NEXT:    s_mov_b32 s11, s98682; GFX900-NEXT:    s_mov_b32 s12, s188683; GFX900-NEXT:    s_mov_b32 s13, s198684; GFX900-NEXT:    s_mov_b32 s14, s168685; GFX900-NEXT:    s_mov_b32 s15, s178686; GFX900-NEXT:    ;;#ASMSTART8687; GFX900-NEXT:    ; use s[8:15]8688; GFX900-NEXT:    ;;#ASMEND8689; GFX900-NEXT:    s_setpc_b64 s[30:31]8690;8691; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_5_1_0:8692; GFX90A:       ; %bb.0:8693; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8694; GFX90A-NEXT:    ;;#ASMSTART8695; GFX90A-NEXT:    ; def s[16:21]8696; GFX90A-NEXT:    ;;#ASMEND8697; GFX90A-NEXT:    ;;#ASMSTART8698; GFX90A-NEXT:    ; def s[4:9]8699; GFX90A-NEXT:    ;;#ASMEND8700; GFX90A-NEXT:    s_mov_b32 s10, s88701; GFX90A-NEXT:    s_mov_b32 s11, s98702; GFX90A-NEXT:    s_mov_b32 s12, s188703; GFX90A-NEXT:    s_mov_b32 s13, s198704; GFX90A-NEXT:    s_mov_b32 s14, s168705; GFX90A-NEXT:    s_mov_b32 s15, s178706; GFX90A-NEXT:    ;;#ASMSTART8707; GFX90A-NEXT:    ; use s[8:15]8708; GFX90A-NEXT:    ;;#ASMEND8709; GFX90A-NEXT:    s_setpc_b64 s[30:31]8710;8711; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_5_1_0:8712; GFX942:       ; %bb.0:8713; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8714; GFX942-NEXT:    ;;#ASMSTART8715; GFX942-NEXT:    ; def s[0:5]8716; GFX942-NEXT:    ;;#ASMEND8717; GFX942-NEXT:    s_mov_b32 s12, s28718; GFX942-NEXT:    ;;#ASMSTART8719; GFX942-NEXT:    ; def s[4:9]8720; GFX942-NEXT:    ;;#ASMEND8721; GFX942-NEXT:    s_mov_b32 s10, s88722; GFX942-NEXT:    s_mov_b32 s11, s98723; GFX942-NEXT:    s_mov_b32 s13, s38724; GFX942-NEXT:    s_mov_b32 s14, s08725; GFX942-NEXT:    s_mov_b32 s15, s18726; GFX942-NEXT:    ;;#ASMSTART8727; GFX942-NEXT:    ; use s[8:15]8728; GFX942-NEXT:    ;;#ASMEND8729; GFX942-NEXT:    s_setpc_b64 s[30:31]8730  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8731  %vec1 = call <3 x ptr> asm "; def $0", "=s"()8732  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 0>8733  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8734  ret void8735}8736 8737define void @s_shuffle_v4p0_v3p0__5_5_2_0() {8738; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_2_0:8739; GFX9:       ; %bb.0:8740; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8741; GFX9-NEXT:    ;;#ASMSTART8742; GFX9-NEXT:    ; def s[16:21]8743; GFX9-NEXT:    ;;#ASMEND8744; GFX9-NEXT:    ;;#ASMSTART8745; GFX9-NEXT:    ; def s[4:9]8746; GFX9-NEXT:    ;;#ASMEND8747; GFX9-NEXT:    s_mov_b32 s10, s88748; GFX9-NEXT:    s_mov_b32 s11, s98749; GFX9-NEXT:    s_mov_b32 s12, s208750; GFX9-NEXT:    s_mov_b32 s13, s218751; GFX9-NEXT:    s_mov_b32 s14, s168752; GFX9-NEXT:    s_mov_b32 s15, s178753; GFX9-NEXT:    ;;#ASMSTART8754; GFX9-NEXT:    ; use s[8:15]8755; GFX9-NEXT:    ;;#ASMEND8756; GFX9-NEXT:    s_setpc_b64 s[30:31]8757  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8758  %vec1 = call <3 x ptr> asm "; def $0", "=s"()8759  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 0>8760  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8761  ret void8762}8763 8764define void @s_shuffle_v4p0_v3p0__5_5_3_0() {8765; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_5_3_0:8766; GFX900:       ; %bb.0:8767; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8768; GFX900-NEXT:    ;;#ASMSTART8769; GFX900-NEXT:    ; def s[16:21]8770; GFX900-NEXT:    ;;#ASMEND8771; GFX900-NEXT:    ;;#ASMSTART8772; GFX900-NEXT:    ; def s[4:9]8773; GFX900-NEXT:    ;;#ASMEND8774; GFX900-NEXT:    s_mov_b32 s10, s88775; GFX900-NEXT:    s_mov_b32 s11, s98776; GFX900-NEXT:    s_mov_b32 s12, s48777; GFX900-NEXT:    s_mov_b32 s13, s58778; GFX900-NEXT:    s_mov_b32 s14, s168779; GFX900-NEXT:    s_mov_b32 s15, s178780; GFX900-NEXT:    ;;#ASMSTART8781; GFX900-NEXT:    ; use s[8:15]8782; GFX900-NEXT:    ;;#ASMEND8783; GFX900-NEXT:    s_setpc_b64 s[30:31]8784;8785; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_5_3_0:8786; GFX90A:       ; %bb.0:8787; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8788; GFX90A-NEXT:    ;;#ASMSTART8789; GFX90A-NEXT:    ; def s[16:21]8790; GFX90A-NEXT:    ;;#ASMEND8791; GFX90A-NEXT:    ;;#ASMSTART8792; GFX90A-NEXT:    ; def s[4:9]8793; GFX90A-NEXT:    ;;#ASMEND8794; GFX90A-NEXT:    s_mov_b32 s10, s88795; GFX90A-NEXT:    s_mov_b32 s11, s98796; GFX90A-NEXT:    s_mov_b32 s12, s48797; GFX90A-NEXT:    s_mov_b32 s13, s58798; GFX90A-NEXT:    s_mov_b32 s14, s168799; GFX90A-NEXT:    s_mov_b32 s15, s178800; GFX90A-NEXT:    ;;#ASMSTART8801; GFX90A-NEXT:    ; use s[8:15]8802; GFX90A-NEXT:    ;;#ASMEND8803; GFX90A-NEXT:    s_setpc_b64 s[30:31]8804;8805; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_5_3_0:8806; GFX942:       ; %bb.0:8807; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8808; GFX942-NEXT:    ;;#ASMSTART8809; GFX942-NEXT:    ; def s[0:5]8810; GFX942-NEXT:    ;;#ASMEND8811; GFX942-NEXT:    s_mov_b32 s14, s08812; GFX942-NEXT:    ;;#ASMSTART8813; GFX942-NEXT:    ; def s[4:9]8814; GFX942-NEXT:    ;;#ASMEND8815; GFX942-NEXT:    s_mov_b32 s10, s88816; GFX942-NEXT:    s_mov_b32 s11, s98817; GFX942-NEXT:    s_mov_b32 s12, s48818; GFX942-NEXT:    s_mov_b32 s13, s58819; GFX942-NEXT:    s_mov_b32 s15, s18820; GFX942-NEXT:    ;;#ASMSTART8821; GFX942-NEXT:    ; use s[8:15]8822; GFX942-NEXT:    ;;#ASMEND8823; GFX942-NEXT:    s_setpc_b64 s[30:31]8824  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8825  %vec1 = call <3 x ptr> asm "; def $0", "=s"()8826  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 0>8827  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8828  ret void8829}8830 8831define void @s_shuffle_v4p0_v3p0__5_5_4_0() {8832; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_5_4_0:8833; GFX900:       ; %bb.0:8834; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8835; GFX900-NEXT:    ;;#ASMSTART8836; GFX900-NEXT:    ; def s[16:21]8837; GFX900-NEXT:    ;;#ASMEND8838; GFX900-NEXT:    ;;#ASMSTART8839; GFX900-NEXT:    ; def s[4:9]8840; GFX900-NEXT:    ;;#ASMEND8841; GFX900-NEXT:    s_mov_b32 s10, s88842; GFX900-NEXT:    s_mov_b32 s11, s98843; GFX900-NEXT:    s_mov_b32 s12, s68844; GFX900-NEXT:    s_mov_b32 s13, s78845; GFX900-NEXT:    s_mov_b32 s14, s168846; GFX900-NEXT:    s_mov_b32 s15, s178847; GFX900-NEXT:    ;;#ASMSTART8848; GFX900-NEXT:    ; use s[8:15]8849; GFX900-NEXT:    ;;#ASMEND8850; GFX900-NEXT:    s_setpc_b64 s[30:31]8851;8852; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_5_4_0:8853; GFX90A:       ; %bb.0:8854; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8855; GFX90A-NEXT:    ;;#ASMSTART8856; GFX90A-NEXT:    ; def s[16:21]8857; GFX90A-NEXT:    ;;#ASMEND8858; GFX90A-NEXT:    ;;#ASMSTART8859; GFX90A-NEXT:    ; def s[4:9]8860; GFX90A-NEXT:    ;;#ASMEND8861; GFX90A-NEXT:    s_mov_b32 s10, s88862; GFX90A-NEXT:    s_mov_b32 s11, s98863; GFX90A-NEXT:    s_mov_b32 s12, s68864; GFX90A-NEXT:    s_mov_b32 s13, s78865; GFX90A-NEXT:    s_mov_b32 s14, s168866; GFX90A-NEXT:    s_mov_b32 s15, s178867; GFX90A-NEXT:    ;;#ASMSTART8868; GFX90A-NEXT:    ; use s[8:15]8869; GFX90A-NEXT:    ;;#ASMEND8870; GFX90A-NEXT:    s_setpc_b64 s[30:31]8871;8872; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_5_4_0:8873; GFX942:       ; %bb.0:8874; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8875; GFX942-NEXT:    ;;#ASMSTART8876; GFX942-NEXT:    ; def s[0:5]8877; GFX942-NEXT:    ;;#ASMEND8878; GFX942-NEXT:    s_mov_b32 s14, s08879; GFX942-NEXT:    ;;#ASMSTART8880; GFX942-NEXT:    ; def s[4:9]8881; GFX942-NEXT:    ;;#ASMEND8882; GFX942-NEXT:    s_mov_b32 s10, s88883; GFX942-NEXT:    s_mov_b32 s11, s98884; GFX942-NEXT:    s_mov_b32 s12, s68885; GFX942-NEXT:    s_mov_b32 s13, s78886; GFX942-NEXT:    s_mov_b32 s15, s18887; GFX942-NEXT:    ;;#ASMSTART8888; GFX942-NEXT:    ; use s[8:15]8889; GFX942-NEXT:    ;;#ASMEND8890; GFX942-NEXT:    s_setpc_b64 s[30:31]8891  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8892  %vec1 = call <3 x ptr> asm "; def $0", "=s"()8893  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 0>8894  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8895  ret void8896}8897 8898define void @s_shuffle_v4p0_v3p0__u_1_1_1() {8899; GFX9-LABEL: s_shuffle_v4p0_v3p0__u_1_1_1:8900; GFX9:       ; %bb.0:8901; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8902; GFX9-NEXT:    ;;#ASMSTART8903; GFX9-NEXT:    ; def s[8:13]8904; GFX9-NEXT:    ;;#ASMEND8905; GFX9-NEXT:    s_mov_b32 s12, s108906; GFX9-NEXT:    s_mov_b32 s13, s118907; GFX9-NEXT:    s_mov_b32 s14, s108908; GFX9-NEXT:    s_mov_b32 s15, s118909; GFX9-NEXT:    ;;#ASMSTART8910; GFX9-NEXT:    ; use s[8:15]8911; GFX9-NEXT:    ;;#ASMEND8912; GFX9-NEXT:    s_setpc_b64 s[30:31]8913  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8914  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1>8915  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8916  ret void8917}8918 8919define void @s_shuffle_v4p0_v3p0__0_1_1_1() {8920; GFX9-LABEL: s_shuffle_v4p0_v3p0__0_1_1_1:8921; GFX9:       ; %bb.0:8922; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8923; GFX9-NEXT:    ;;#ASMSTART8924; GFX9-NEXT:    ; def s[8:13]8925; GFX9-NEXT:    ;;#ASMEND8926; GFX9-NEXT:    s_mov_b32 s12, s108927; GFX9-NEXT:    s_mov_b32 s13, s118928; GFX9-NEXT:    s_mov_b32 s14, s108929; GFX9-NEXT:    s_mov_b32 s15, s118930; GFX9-NEXT:    ;;#ASMSTART8931; GFX9-NEXT:    ; use s[8:15]8932; GFX9-NEXT:    ;;#ASMEND8933; GFX9-NEXT:    s_setpc_b64 s[30:31]8934  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8935  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1>8936  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8937  ret void8938}8939 8940define void @s_shuffle_v4p0_v3p0__1_1_1_1() {8941; GFX9-LABEL: s_shuffle_v4p0_v3p0__1_1_1_1:8942; GFX9:       ; %bb.0:8943; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8944; GFX9-NEXT:    ;;#ASMSTART8945; GFX9-NEXT:    ; def s[8:13]8946; GFX9-NEXT:    ;;#ASMEND8947; GFX9-NEXT:    s_mov_b32 s8, s108948; GFX9-NEXT:    s_mov_b32 s9, s118949; GFX9-NEXT:    s_mov_b32 s12, s108950; GFX9-NEXT:    s_mov_b32 s13, s118951; GFX9-NEXT:    s_mov_b32 s14, s108952; GFX9-NEXT:    s_mov_b32 s15, s118953; GFX9-NEXT:    ;;#ASMSTART8954; GFX9-NEXT:    ; use s[8:15]8955; GFX9-NEXT:    ;;#ASMEND8956; GFX9-NEXT:    s_setpc_b64 s[30:31]8957  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8958  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>8959  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8960  ret void8961}8962 8963define void @s_shuffle_v4p0_v3p0__2_1_1_1() {8964; GFX9-LABEL: s_shuffle_v4p0_v3p0__2_1_1_1:8965; GFX9:       ; %bb.0:8966; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8967; GFX9-NEXT:    ;;#ASMSTART8968; GFX9-NEXT:    ; def s[4:9]8969; GFX9-NEXT:    ;;#ASMEND8970; GFX9-NEXT:    s_mov_b32 s10, s68971; GFX9-NEXT:    s_mov_b32 s11, s78972; GFX9-NEXT:    s_mov_b32 s12, s68973; GFX9-NEXT:    s_mov_b32 s13, s78974; GFX9-NEXT:    s_mov_b32 s14, s68975; GFX9-NEXT:    s_mov_b32 s15, s78976; GFX9-NEXT:    ;;#ASMSTART8977; GFX9-NEXT:    ; use s[8:15]8978; GFX9-NEXT:    ;;#ASMEND8979; GFX9-NEXT:    s_setpc_b64 s[30:31]8980  %vec0 = call <3 x ptr> asm "; def $0", "=s"()8981  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1>8982  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)8983  ret void8984}8985 8986define void @s_shuffle_v4p0_v3p0__3_1_1_1() {8987; GFX9-LABEL: s_shuffle_v4p0_v3p0__3_1_1_1:8988; GFX9:       ; %bb.0:8989; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8990; GFX9-NEXT:    ;;#ASMSTART8991; GFX9-NEXT:    ; def s[8:13]8992; GFX9-NEXT:    ;;#ASMEND8993; GFX9-NEXT:    s_mov_b32 s12, s108994; GFX9-NEXT:    s_mov_b32 s13, s118995; GFX9-NEXT:    s_mov_b32 s14, s108996; GFX9-NEXT:    s_mov_b32 s15, s118997; GFX9-NEXT:    ;;#ASMSTART8998; GFX9-NEXT:    ; use s[8:15]8999; GFX9-NEXT:    ;;#ASMEND9000; GFX9-NEXT:    s_setpc_b64 s[30:31]9001  %vec0 = call <3 x ptr> asm "; def $0", "=s"()9002  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 3, i32 1, i32 1, i32 1>9003  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)9004  ret void9005}9006 9007define void @s_shuffle_v4p0_v3p0__4_1_1_1() {9008; GFX900-LABEL: s_shuffle_v4p0_v3p0__4_1_1_1:9009; GFX900:       ; %bb.0:9010; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9011; GFX900-NEXT:    ;;#ASMSTART9012; GFX900-NEXT:    ; def s[8:13]9013; GFX900-NEXT:    ;;#ASMEND9014; GFX900-NEXT:    ;;#ASMSTART9015; GFX900-NEXT:    ; def s[4:9]9016; GFX900-NEXT:    ;;#ASMEND9017; GFX900-NEXT:    s_mov_b32 s8, s69018; GFX900-NEXT:    s_mov_b32 s9, s79019; GFX900-NEXT:    s_mov_b32 s12, s109020; GFX900-NEXT:    s_mov_b32 s13, s119021; GFX900-NEXT:    s_mov_b32 s14, s109022; GFX900-NEXT:    s_mov_b32 s15, s119023; GFX900-NEXT:    ;;#ASMSTART9024; GFX900-NEXT:    ; use s[8:15]9025; GFX900-NEXT:    ;;#ASMEND9026; GFX900-NEXT:    s_setpc_b64 s[30:31]9027;9028; GFX90A-LABEL: s_shuffle_v4p0_v3p0__4_1_1_1:9029; GFX90A:       ; %bb.0:9030; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9031; GFX90A-NEXT:    ;;#ASMSTART9032; GFX90A-NEXT:    ; def s[8:13]9033; GFX90A-NEXT:    ;;#ASMEND9034; GFX90A-NEXT:    ;;#ASMSTART9035; GFX90A-NEXT:    ; def s[4:9]9036; GFX90A-NEXT:    ;;#ASMEND9037; GFX90A-NEXT:    s_mov_b32 s8, s69038; GFX90A-NEXT:    s_mov_b32 s9, s79039; GFX90A-NEXT:    s_mov_b32 s12, s109040; GFX90A-NEXT:    s_mov_b32 s13, s119041; GFX90A-NEXT:    s_mov_b32 s14, s109042; GFX90A-NEXT:    s_mov_b32 s15, s119043; GFX90A-NEXT:    ;;#ASMSTART9044; GFX90A-NEXT:    ; use s[8:15]9045; GFX90A-NEXT:    ;;#ASMEND9046; GFX90A-NEXT:    s_setpc_b64 s[30:31]9047;9048; GFX942-LABEL: s_shuffle_v4p0_v3p0__4_1_1_1:9049; GFX942:       ; %bb.0:9050; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9051; GFX942-NEXT:    ;;#ASMSTART9052; GFX942-NEXT:    ; def s[8:13]9053; GFX942-NEXT:    ;;#ASMEND9054; GFX942-NEXT:    ;;#ASMSTART9055; GFX942-NEXT:    ; def s[0:5]9056; GFX942-NEXT:    ;;#ASMEND9057; GFX942-NEXT:    s_mov_b32 s8, s29058; GFX942-NEXT:    s_mov_b32 s9, s39059; GFX942-NEXT:    s_mov_b32 s12, s109060; GFX942-NEXT:    s_mov_b32 s13, s119061; GFX942-NEXT:    s_mov_b32 s14, s109062; GFX942-NEXT:    s_mov_b32 s15, s119063; GFX942-NEXT:    ;;#ASMSTART9064; GFX942-NEXT:    ; use s[8:15]9065; GFX942-NEXT:    ;;#ASMEND9066; GFX942-NEXT:    s_setpc_b64 s[30:31]9067  %vec0 = call <3 x ptr> asm "; def $0", "=s"()9068  %vec1 = call <3 x ptr> asm "; def $0", "=s"()9069  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 4, i32 1, i32 1, i32 1>9070  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)9071  ret void9072}9073 9074define void @s_shuffle_v4p0_v3p0__5_1_1_1() {9075; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_1_1_1:9076; GFX900:       ; %bb.0:9077; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9078; GFX900-NEXT:    ;;#ASMSTART9079; GFX900-NEXT:    ; def s[8:13]9080; GFX900-NEXT:    ;;#ASMEND9081; GFX900-NEXT:    ;;#ASMSTART9082; GFX900-NEXT:    ; def s[4:9]9083; GFX900-NEXT:    ;;#ASMEND9084; GFX900-NEXT:    s_mov_b32 s12, s109085; GFX900-NEXT:    s_mov_b32 s13, s119086; GFX900-NEXT:    s_mov_b32 s14, s109087; GFX900-NEXT:    s_mov_b32 s15, s119088; GFX900-NEXT:    ;;#ASMSTART9089; GFX900-NEXT:    ; use s[8:15]9090; GFX900-NEXT:    ;;#ASMEND9091; GFX900-NEXT:    s_setpc_b64 s[30:31]9092;9093; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_1_1_1:9094; GFX90A:       ; %bb.0:9095; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9096; GFX90A-NEXT:    ;;#ASMSTART9097; GFX90A-NEXT:    ; def s[8:13]9098; GFX90A-NEXT:    ;;#ASMEND9099; GFX90A-NEXT:    ;;#ASMSTART9100; GFX90A-NEXT:    ; def s[4:9]9101; GFX90A-NEXT:    ;;#ASMEND9102; GFX90A-NEXT:    s_mov_b32 s12, s109103; GFX90A-NEXT:    s_mov_b32 s13, s119104; GFX90A-NEXT:    s_mov_b32 s14, s109105; GFX90A-NEXT:    s_mov_b32 s15, s119106; GFX90A-NEXT:    ;;#ASMSTART9107; GFX90A-NEXT:    ; use s[8:15]9108; GFX90A-NEXT:    ;;#ASMEND9109; GFX90A-NEXT:    s_setpc_b64 s[30:31]9110;9111; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_1_1_1:9112; GFX942:       ; %bb.0:9113; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9114; GFX942-NEXT:    ;;#ASMSTART9115; GFX942-NEXT:    ; def s[8:13]9116; GFX942-NEXT:    ;;#ASMEND9117; GFX942-NEXT:    s_mov_b32 s12, s109118; GFX942-NEXT:    ;;#ASMSTART9119; GFX942-NEXT:    ; def s[4:9]9120; GFX942-NEXT:    ;;#ASMEND9121; GFX942-NEXT:    s_mov_b32 s13, s119122; GFX942-NEXT:    s_mov_b32 s14, s109123; GFX942-NEXT:    s_mov_b32 s15, s119124; GFX942-NEXT:    ;;#ASMSTART9125; GFX942-NEXT:    ; use s[8:15]9126; GFX942-NEXT:    ;;#ASMEND9127; GFX942-NEXT:    s_setpc_b64 s[30:31]9128  %vec0 = call <3 x ptr> asm "; def $0", "=s"()9129  %vec1 = call <3 x ptr> asm "; def $0", "=s"()9130  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 1, i32 1, i32 1>9131  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)9132  ret void9133}9134 9135define void @s_shuffle_v4p0_v3p0__5_u_1_1() {9136; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_u_1_1:9137; GFX9:       ; %bb.0:9138; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9139; GFX9-NEXT:    ;;#ASMSTART9140; GFX9-NEXT:    ; def s[12:17]9141; GFX9-NEXT:    ;;#ASMEND9142; GFX9-NEXT:    ;;#ASMSTART9143; GFX9-NEXT:    ; def s[4:9]9144; GFX9-NEXT:    ;;#ASMEND9145; GFX9-NEXT:    s_mov_b32 s12, s149146; GFX9-NEXT:    s_mov_b32 s13, s159147; GFX9-NEXT:    ;;#ASMSTART9148; GFX9-NEXT:    ; use s[8:15]9149; GFX9-NEXT:    ;;#ASMEND9150; GFX9-NEXT:    s_setpc_b64 s[30:31]9151  %vec0 = call <3 x ptr> asm "; def $0", "=s"()9152  %vec1 = call <3 x ptr> asm "; def $0", "=s"()9153  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 poison, i32 1, i32 1>9154  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)9155  ret void9156}9157 9158define void @s_shuffle_v4p0_v3p0__5_0_1_1() {9159; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_0_1_1:9160; GFX9:       ; %bb.0:9161; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9162; GFX9-NEXT:    ;;#ASMSTART9163; GFX9-NEXT:    ; def s[12:17]9164; GFX9-NEXT:    ;;#ASMEND9165; GFX9-NEXT:    ;;#ASMSTART9166; GFX9-NEXT:    ; def s[4:9]9167; GFX9-NEXT:    ;;#ASMEND9168; GFX9-NEXT:    s_mov_b32 s10, s129169; GFX9-NEXT:    s_mov_b32 s11, s139170; GFX9-NEXT:    s_mov_b32 s12, s149171; GFX9-NEXT:    s_mov_b32 s13, s159172; GFX9-NEXT:    ;;#ASMSTART9173; GFX9-NEXT:    ; use s[8:15]9174; GFX9-NEXT:    ;;#ASMEND9175; GFX9-NEXT:    s_setpc_b64 s[30:31]9176  %vec0 = call <3 x ptr> asm "; def $0", "=s"()9177  %vec1 = call <3 x ptr> asm "; def $0", "=s"()9178  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 0, i32 1, i32 1>9179  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)9180  ret void9181}9182 9183define void @s_shuffle_v4p0_v3p0__5_2_1_1() {9184; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_2_1_1:9185; GFX9:       ; %bb.0:9186; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9187; GFX9-NEXT:    ;;#ASMSTART9188; GFX9-NEXT:    ; def s[12:17]9189; GFX9-NEXT:    ;;#ASMEND9190; GFX9-NEXT:    ;;#ASMSTART9191; GFX9-NEXT:    ; def s[4:9]9192; GFX9-NEXT:    ;;#ASMEND9193; GFX9-NEXT:    s_mov_b32 s10, s169194; GFX9-NEXT:    s_mov_b32 s11, s179195; GFX9-NEXT:    s_mov_b32 s12, s149196; GFX9-NEXT:    s_mov_b32 s13, s159197; GFX9-NEXT:    ;;#ASMSTART9198; GFX9-NEXT:    ; use s[8:15]9199; GFX9-NEXT:    ;;#ASMEND9200; GFX9-NEXT:    s_setpc_b64 s[30:31]9201  %vec0 = call <3 x ptr> asm "; def $0", "=s"()9202  %vec1 = call <3 x ptr> asm "; def $0", "=s"()9203  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 2, i32 1, i32 1>9204  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)9205  ret void9206}9207 9208define void @s_shuffle_v4p0_v3p0__5_3_1_1() {9209; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_3_1_1:9210; GFX9:       ; %bb.0:9211; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9212; GFX9-NEXT:    ;;#ASMSTART9213; GFX9-NEXT:    ; def s[12:17]9214; GFX9-NEXT:    ;;#ASMEND9215; GFX9-NEXT:    ;;#ASMSTART9216; GFX9-NEXT:    ; def s[4:9]9217; GFX9-NEXT:    ;;#ASMEND9218; GFX9-NEXT:    s_mov_b32 s10, s49219; GFX9-NEXT:    s_mov_b32 s11, s59220; GFX9-NEXT:    s_mov_b32 s12, s149221; GFX9-NEXT:    s_mov_b32 s13, s159222; GFX9-NEXT:    ;;#ASMSTART9223; GFX9-NEXT:    ; use s[8:15]9224; GFX9-NEXT:    ;;#ASMEND9225; GFX9-NEXT:    s_setpc_b64 s[30:31]9226  %vec0 = call <3 x ptr> asm "; def $0", "=s"()9227  %vec1 = call <3 x ptr> asm "; def $0", "=s"()9228  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 3, i32 1, i32 1>9229  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)9230  ret void9231}9232 9233define void @s_shuffle_v4p0_v3p0__5_4_1_1() {9234; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_4_1_1:9235; GFX9:       ; %bb.0:9236; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9237; GFX9-NEXT:    ;;#ASMSTART9238; GFX9-NEXT:    ; def s[12:17]9239; GFX9-NEXT:    ;;#ASMEND9240; GFX9-NEXT:    ;;#ASMSTART9241; GFX9-NEXT:    ; def s[4:9]9242; GFX9-NEXT:    ;;#ASMEND9243; GFX9-NEXT:    s_mov_b32 s10, s69244; GFX9-NEXT:    s_mov_b32 s11, s79245; GFX9-NEXT:    s_mov_b32 s12, s149246; GFX9-NEXT:    s_mov_b32 s13, s159247; GFX9-NEXT:    ;;#ASMSTART9248; GFX9-NEXT:    ; use s[8:15]9249; GFX9-NEXT:    ;;#ASMEND9250; GFX9-NEXT:    s_setpc_b64 s[30:31]9251  %vec0 = call <3 x ptr> asm "; def $0", "=s"()9252  %vec1 = call <3 x ptr> asm "; def $0", "=s"()9253  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 4, i32 1, i32 1>9254  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)9255  ret void9256}9257 9258define void @s_shuffle_v4p0_v3p0__5_5_1_1() {9259; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_1_1:9260; GFX9:       ; %bb.0:9261; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9262; GFX9-NEXT:    ;;#ASMSTART9263; GFX9-NEXT:    ; def s[12:17]9264; GFX9-NEXT:    ;;#ASMEND9265; GFX9-NEXT:    ;;#ASMSTART9266; GFX9-NEXT:    ; def s[4:9]9267; GFX9-NEXT:    ;;#ASMEND9268; GFX9-NEXT:    s_mov_b32 s10, s89269; GFX9-NEXT:    s_mov_b32 s11, s99270; GFX9-NEXT:    s_mov_b32 s12, s149271; GFX9-NEXT:    s_mov_b32 s13, s159272; GFX9-NEXT:    ;;#ASMSTART9273; GFX9-NEXT:    ; use s[8:15]9274; GFX9-NEXT:    ;;#ASMEND9275; GFX9-NEXT:    s_setpc_b64 s[30:31]9276  %vec0 = call <3 x ptr> asm "; def $0", "=s"()9277  %vec1 = call <3 x ptr> asm "; def $0", "=s"()9278  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 1>9279  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)9280  ret void9281}9282 9283define void @s_shuffle_v4p0_v3p0__5_5_u_1() {9284; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_u_1:9285; GFX9:       ; %bb.0:9286; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9287; GFX9-NEXT:    ;;#ASMSTART9288; GFX9-NEXT:    ; def s[12:17]9289; GFX9-NEXT:    ;;#ASMEND9290; GFX9-NEXT:    ;;#ASMSTART9291; GFX9-NEXT:    ; def s[4:9]9292; GFX9-NEXT:    ;;#ASMEND9293; GFX9-NEXT:    s_mov_b32 s10, s89294; GFX9-NEXT:    s_mov_b32 s11, s99295; GFX9-NEXT:    ;;#ASMSTART9296; GFX9-NEXT:    ; use s[8:15]9297; GFX9-NEXT:    ;;#ASMEND9298; GFX9-NEXT:    s_setpc_b64 s[30:31]9299  %vec0 = call <3 x ptr> asm "; def $0", "=s"()9300  %vec1 = call <3 x ptr> asm "; def $0", "=s"()9301  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 1>9302  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)9303  ret void9304}9305 9306define void @s_shuffle_v4p0_v3p0__5_5_0_1() {9307; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_0_1:9308; GFX9:       ; %bb.0:9309; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9310; GFX9-NEXT:    ;;#ASMSTART9311; GFX9-NEXT:    ; def s[12:17]9312; GFX9-NEXT:    ;;#ASMEND9313; GFX9-NEXT:    ;;#ASMSTART9314; GFX9-NEXT:    ; def s[4:9]9315; GFX9-NEXT:    ;;#ASMEND9316; GFX9-NEXT:    s_mov_b32 s10, s89317; GFX9-NEXT:    s_mov_b32 s11, s99318; GFX9-NEXT:    ;;#ASMSTART9319; GFX9-NEXT:    ; use s[8:15]9320; GFX9-NEXT:    ;;#ASMEND9321; GFX9-NEXT:    s_setpc_b64 s[30:31]9322  %vec0 = call <3 x ptr> asm "; def $0", "=s"()9323  %vec1 = call <3 x ptr> asm "; def $0", "=s"()9324  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 1>9325  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)9326  ret void9327}9328 9329define void @s_shuffle_v4p0_v3p0__5_5_2_1() {9330; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_2_1:9331; GFX9:       ; %bb.0:9332; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9333; GFX9-NEXT:    ;;#ASMSTART9334; GFX9-NEXT:    ; def s[12:17]9335; GFX9-NEXT:    ;;#ASMEND9336; GFX9-NEXT:    ;;#ASMSTART9337; GFX9-NEXT:    ; def s[4:9]9338; GFX9-NEXT:    ;;#ASMEND9339; GFX9-NEXT:    s_mov_b32 s10, s89340; GFX9-NEXT:    s_mov_b32 s11, s99341; GFX9-NEXT:    s_mov_b32 s12, s169342; GFX9-NEXT:    s_mov_b32 s13, s179343; GFX9-NEXT:    ;;#ASMSTART9344; GFX9-NEXT:    ; use s[8:15]9345; GFX9-NEXT:    ;;#ASMEND9346; GFX9-NEXT:    s_setpc_b64 s[30:31]9347  %vec0 = call <3 x ptr> asm "; def $0", "=s"()9348  %vec1 = call <3 x ptr> asm "; def $0", "=s"()9349  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 1>9350  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)9351  ret void9352}9353 9354define void @s_shuffle_v4p0_v3p0__5_5_3_1() {9355; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_3_1:9356; GFX9:       ; %bb.0:9357; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9358; GFX9-NEXT:    ;;#ASMSTART9359; GFX9-NEXT:    ; def s[12:17]9360; GFX9-NEXT:    ;;#ASMEND9361; GFX9-NEXT:    ;;#ASMSTART9362; GFX9-NEXT:    ; def s[4:9]9363; GFX9-NEXT:    ;;#ASMEND9364; GFX9-NEXT:    s_mov_b32 s10, s89365; GFX9-NEXT:    s_mov_b32 s11, s99366; GFX9-NEXT:    s_mov_b32 s12, s49367; GFX9-NEXT:    s_mov_b32 s13, s59368; GFX9-NEXT:    ;;#ASMSTART9369; GFX9-NEXT:    ; use s[8:15]9370; GFX9-NEXT:    ;;#ASMEND9371; GFX9-NEXT:    s_setpc_b64 s[30:31]9372  %vec0 = call <3 x ptr> asm "; def $0", "=s"()9373  %vec1 = call <3 x ptr> asm "; def $0", "=s"()9374  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 1>9375  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)9376  ret void9377}9378 9379define void @s_shuffle_v4p0_v3p0__5_5_4_1() {9380; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_4_1:9381; GFX9:       ; %bb.0:9382; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9383; GFX9-NEXT:    ;;#ASMSTART9384; GFX9-NEXT:    ; def s[12:17]9385; GFX9-NEXT:    ;;#ASMEND9386; GFX9-NEXT:    ;;#ASMSTART9387; GFX9-NEXT:    ; def s[4:9]9388; GFX9-NEXT:    ;;#ASMEND9389; GFX9-NEXT:    s_mov_b32 s10, s89390; GFX9-NEXT:    s_mov_b32 s11, s99391; GFX9-NEXT:    s_mov_b32 s12, s69392; GFX9-NEXT:    s_mov_b32 s13, s79393; GFX9-NEXT:    ;;#ASMSTART9394; GFX9-NEXT:    ; use s[8:15]9395; GFX9-NEXT:    ;;#ASMEND9396; GFX9-NEXT:    s_setpc_b64 s[30:31]9397  %vec0 = call <3 x ptr> asm "; def $0", "=s"()9398  %vec1 = call <3 x ptr> asm "; def $0", "=s"()9399  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 1>9400  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)9401  ret void9402}9403 9404define void @s_shuffle_v4p0_v3p0__u_2_2_2() {9405; GFX9-LABEL: s_shuffle_v4p0_v3p0__u_2_2_2:9406; GFX9:       ; %bb.0:9407; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9408; GFX9-NEXT:    ;;#ASMSTART9409; GFX9-NEXT:    ; def s[8:13]9410; GFX9-NEXT:    ;;#ASMEND9411; GFX9-NEXT:    s_mov_b32 s10, s129412; GFX9-NEXT:    s_mov_b32 s11, s139413; GFX9-NEXT:    s_mov_b32 s14, s129414; GFX9-NEXT:    s_mov_b32 s15, s139415; GFX9-NEXT:    ;;#ASMSTART9416; GFX9-NEXT:    ; use s[8:15]9417; GFX9-NEXT:    ;;#ASMEND9418; GFX9-NEXT:    s_setpc_b64 s[30:31]9419  %vec0 = call <3 x ptr> asm "; def $0", "=s"()9420  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2>9421  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)9422  ret void9423}9424 9425define void @s_shuffle_v4p0_v3p0__0_2_2_2() {9426; GFX9-LABEL: s_shuffle_v4p0_v3p0__0_2_2_2:9427; GFX9:       ; %bb.0:9428; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9429; GFX9-NEXT:    ;;#ASMSTART9430; GFX9-NEXT:    ; def s[8:13]9431; GFX9-NEXT:    ;;#ASMEND9432; GFX9-NEXT:    s_mov_b32 s10, s129433; GFX9-NEXT:    s_mov_b32 s11, s139434; GFX9-NEXT:    s_mov_b32 s14, s129435; GFX9-NEXT:    s_mov_b32 s15, s139436; GFX9-NEXT:    ;;#ASMSTART9437; GFX9-NEXT:    ; use s[8:15]9438; GFX9-NEXT:    ;;#ASMEND9439; GFX9-NEXT:    s_setpc_b64 s[30:31]9440  %vec0 = call <3 x ptr> asm "; def $0", "=s"()9441  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2>9442  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)9443  ret void9444}9445 9446define void @s_shuffle_v4p0_v3p0__1_2_2_2() {9447; GFX9-LABEL: s_shuffle_v4p0_v3p0__1_2_2_2:9448; GFX9:       ; %bb.0:9449; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9450; GFX9-NEXT:    ;;#ASMSTART9451; GFX9-NEXT:    ; def s[8:13]9452; GFX9-NEXT:    ;;#ASMEND9453; GFX9-NEXT:    s_mov_b32 s8, s109454; GFX9-NEXT:    s_mov_b32 s9, s119455; GFX9-NEXT:    s_mov_b32 s10, s129456; GFX9-NEXT:    s_mov_b32 s11, s139457; GFX9-NEXT:    s_mov_b32 s14, s129458; GFX9-NEXT:    s_mov_b32 s15, s139459; GFX9-NEXT:    ;;#ASMSTART9460; GFX9-NEXT:    ; use s[8:15]9461; GFX9-NEXT:    ;;#ASMEND9462; GFX9-NEXT:    s_setpc_b64 s[30:31]9463  %vec0 = call <3 x ptr> asm "; def $0", "=s"()9464  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2>9465  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)9466  ret void9467}9468 9469define void @s_shuffle_v4p0_v3p0__2_2_2_2() {9470; GFX9-LABEL: s_shuffle_v4p0_v3p0__2_2_2_2:9471; GFX9:       ; %bb.0:9472; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9473; GFX9-NEXT:    ;;#ASMSTART9474; GFX9-NEXT:    ; def s[4:9]9475; GFX9-NEXT:    ;;#ASMEND9476; GFX9-NEXT:    s_mov_b32 s10, s89477; GFX9-NEXT:    s_mov_b32 s11, s99478; GFX9-NEXT:    s_mov_b32 s12, s89479; GFX9-NEXT:    s_mov_b32 s13, s99480; GFX9-NEXT:    s_mov_b32 s14, s89481; GFX9-NEXT:    s_mov_b32 s15, s99482; GFX9-NEXT:    ;;#ASMSTART9483; GFX9-NEXT:    ; use s[8:15]9484; GFX9-NEXT:    ;;#ASMEND9485; GFX9-NEXT:    s_setpc_b64 s[30:31]9486  %vec0 = call <3 x ptr> asm "; def $0", "=s"()9487  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2>9488  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)9489  ret void9490}9491 9492define void @s_shuffle_v4p0_v3p0__3_2_2_2() {9493; GFX9-LABEL: s_shuffle_v4p0_v3p0__3_2_2_2:9494; GFX9:       ; %bb.0:9495; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9496; GFX9-NEXT:    ;;#ASMSTART9497; GFX9-NEXT:    ; def s[8:13]9498; GFX9-NEXT:    ;;#ASMEND9499; GFX9-NEXT:    s_mov_b32 s10, s129500; GFX9-NEXT:    s_mov_b32 s11, s139501; GFX9-NEXT:    s_mov_b32 s14, s129502; GFX9-NEXT:    s_mov_b32 s15, s139503; GFX9-NEXT:    ;;#ASMSTART9504; GFX9-NEXT:    ; use s[8:15]9505; GFX9-NEXT:    ;;#ASMEND9506; GFX9-NEXT:    s_setpc_b64 s[30:31]9507  %vec0 = call <3 x ptr> asm "; def $0", "=s"()9508  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 3, i32 2, i32 2, i32 2>9509  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)9510  ret void9511}9512 9513define void @s_shuffle_v4p0_v3p0__4_2_2_2() {9514; GFX900-LABEL: s_shuffle_v4p0_v3p0__4_2_2_2:9515; GFX900:       ; %bb.0:9516; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9517; GFX900-NEXT:    ;;#ASMSTART9518; GFX900-NEXT:    ; def s[8:13]9519; GFX900-NEXT:    ;;#ASMEND9520; GFX900-NEXT:    ;;#ASMSTART9521; GFX900-NEXT:    ; def s[4:9]9522; GFX900-NEXT:    ;;#ASMEND9523; GFX900-NEXT:    s_mov_b32 s8, s69524; GFX900-NEXT:    s_mov_b32 s9, s79525; GFX900-NEXT:    s_mov_b32 s10, s129526; GFX900-NEXT:    s_mov_b32 s11, s139527; GFX900-NEXT:    s_mov_b32 s14, s129528; GFX900-NEXT:    s_mov_b32 s15, s139529; GFX900-NEXT:    ;;#ASMSTART9530; GFX900-NEXT:    ; use s[8:15]9531; GFX900-NEXT:    ;;#ASMEND9532; GFX900-NEXT:    s_setpc_b64 s[30:31]9533;9534; GFX90A-LABEL: s_shuffle_v4p0_v3p0__4_2_2_2:9535; GFX90A:       ; %bb.0:9536; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9537; GFX90A-NEXT:    ;;#ASMSTART9538; GFX90A-NEXT:    ; def s[8:13]9539; GFX90A-NEXT:    ;;#ASMEND9540; GFX90A-NEXT:    ;;#ASMSTART9541; GFX90A-NEXT:    ; def s[4:9]9542; GFX90A-NEXT:    ;;#ASMEND9543; GFX90A-NEXT:    s_mov_b32 s8, s69544; GFX90A-NEXT:    s_mov_b32 s9, s79545; GFX90A-NEXT:    s_mov_b32 s10, s129546; GFX90A-NEXT:    s_mov_b32 s11, s139547; GFX90A-NEXT:    s_mov_b32 s14, s129548; GFX90A-NEXT:    s_mov_b32 s15, s139549; GFX90A-NEXT:    ;;#ASMSTART9550; GFX90A-NEXT:    ; use s[8:15]9551; GFX90A-NEXT:    ;;#ASMEND9552; GFX90A-NEXT:    s_setpc_b64 s[30:31]9553;9554; GFX942-LABEL: s_shuffle_v4p0_v3p0__4_2_2_2:9555; GFX942:       ; %bb.0:9556; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9557; GFX942-NEXT:    ;;#ASMSTART9558; GFX942-NEXT:    ; def s[8:13]9559; GFX942-NEXT:    ;;#ASMEND9560; GFX942-NEXT:    ;;#ASMSTART9561; GFX942-NEXT:    ; def s[0:5]9562; GFX942-NEXT:    ;;#ASMEND9563; GFX942-NEXT:    s_mov_b32 s8, s29564; GFX942-NEXT:    s_mov_b32 s9, s39565; GFX942-NEXT:    s_mov_b32 s10, s129566; GFX942-NEXT:    s_mov_b32 s11, s139567; GFX942-NEXT:    s_mov_b32 s14, s129568; GFX942-NEXT:    s_mov_b32 s15, s139569; GFX942-NEXT:    ;;#ASMSTART9570; GFX942-NEXT:    ; use s[8:15]9571; GFX942-NEXT:    ;;#ASMEND9572; GFX942-NEXT:    s_setpc_b64 s[30:31]9573  %vec0 = call <3 x ptr> asm "; def $0", "=s"()9574  %vec1 = call <3 x ptr> asm "; def $0", "=s"()9575  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 4, i32 2, i32 2, i32 2>9576  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)9577  ret void9578}9579 9580define void @s_shuffle_v4p0_v3p0__5_2_2_2() {9581; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_2_2_2:9582; GFX900:       ; %bb.0:9583; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9584; GFX900-NEXT:    ;;#ASMSTART9585; GFX900-NEXT:    ; def s[8:13]9586; GFX900-NEXT:    ;;#ASMEND9587; GFX900-NEXT:    ;;#ASMSTART9588; GFX900-NEXT:    ; def s[4:9]9589; GFX900-NEXT:    ;;#ASMEND9590; GFX900-NEXT:    s_mov_b32 s10, s129591; GFX900-NEXT:    s_mov_b32 s11, s139592; GFX900-NEXT:    s_mov_b32 s14, s129593; GFX900-NEXT:    s_mov_b32 s15, s139594; GFX900-NEXT:    ;;#ASMSTART9595; GFX900-NEXT:    ; use s[8:15]9596; GFX900-NEXT:    ;;#ASMEND9597; GFX900-NEXT:    s_setpc_b64 s[30:31]9598;9599; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_2_2_2:9600; GFX90A:       ; %bb.0:9601; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9602; GFX90A-NEXT:    ;;#ASMSTART9603; GFX90A-NEXT:    ; def s[8:13]9604; GFX90A-NEXT:    ;;#ASMEND9605; GFX90A-NEXT:    ;;#ASMSTART9606; GFX90A-NEXT:    ; def s[4:9]9607; GFX90A-NEXT:    ;;#ASMEND9608; GFX90A-NEXT:    s_mov_b32 s10, s129609; GFX90A-NEXT:    s_mov_b32 s11, s139610; GFX90A-NEXT:    s_mov_b32 s14, s129611; GFX90A-NEXT:    s_mov_b32 s15, s139612; GFX90A-NEXT:    ;;#ASMSTART9613; GFX90A-NEXT:    ; use s[8:15]9614; GFX90A-NEXT:    ;;#ASMEND9615; GFX90A-NEXT:    s_setpc_b64 s[30:31]9616;9617; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_2_2_2:9618; GFX942:       ; %bb.0:9619; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9620; GFX942-NEXT:    ;;#ASMSTART9621; GFX942-NEXT:    ; def s[8:13]9622; GFX942-NEXT:    ;;#ASMEND9623; GFX942-NEXT:    s_mov_b32 s10, s129624; GFX942-NEXT:    ;;#ASMSTART9625; GFX942-NEXT:    ; def s[4:9]9626; GFX942-NEXT:    ;;#ASMEND9627; GFX942-NEXT:    s_mov_b32 s11, s139628; GFX942-NEXT:    s_mov_b32 s14, s129629; GFX942-NEXT:    s_mov_b32 s15, s139630; GFX942-NEXT:    ;;#ASMSTART9631; GFX942-NEXT:    ; use s[8:15]9632; GFX942-NEXT:    ;;#ASMEND9633; GFX942-NEXT:    s_setpc_b64 s[30:31]9634  %vec0 = call <3 x ptr> asm "; def $0", "=s"()9635  %vec1 = call <3 x ptr> asm "; def $0", "=s"()9636  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 2, i32 2, i32 2>9637  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)9638  ret void9639}9640 9641define void @s_shuffle_v4p0_v3p0__5_u_2_2() {9642; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_u_2_2:9643; GFX900:       ; %bb.0:9644; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9645; GFX900-NEXT:    ;;#ASMSTART9646; GFX900-NEXT:    ; def s[8:13]9647; GFX900-NEXT:    ;;#ASMEND9648; GFX900-NEXT:    ;;#ASMSTART9649; GFX900-NEXT:    ; def s[4:9]9650; GFX900-NEXT:    ;;#ASMEND9651; GFX900-NEXT:    s_mov_b32 s14, s129652; GFX900-NEXT:    s_mov_b32 s15, s139653; GFX900-NEXT:    ;;#ASMSTART9654; GFX900-NEXT:    ; use s[8:15]9655; GFX900-NEXT:    ;;#ASMEND9656; GFX900-NEXT:    s_setpc_b64 s[30:31]9657;9658; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_u_2_2:9659; GFX90A:       ; %bb.0:9660; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9661; GFX90A-NEXT:    ;;#ASMSTART9662; GFX90A-NEXT:    ; def s[8:13]9663; GFX90A-NEXT:    ;;#ASMEND9664; GFX90A-NEXT:    ;;#ASMSTART9665; GFX90A-NEXT:    ; def s[4:9]9666; GFX90A-NEXT:    ;;#ASMEND9667; GFX90A-NEXT:    s_mov_b32 s14, s129668; GFX90A-NEXT:    s_mov_b32 s15, s139669; GFX90A-NEXT:    ;;#ASMSTART9670; GFX90A-NEXT:    ; use s[8:15]9671; GFX90A-NEXT:    ;;#ASMEND9672; GFX90A-NEXT:    s_setpc_b64 s[30:31]9673;9674; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_u_2_2:9675; GFX942:       ; %bb.0:9676; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9677; GFX942-NEXT:    ;;#ASMSTART9678; GFX942-NEXT:    ; def s[8:13]9679; GFX942-NEXT:    ;;#ASMEND9680; GFX942-NEXT:    s_mov_b32 s14, s129681; GFX942-NEXT:    ;;#ASMSTART9682; GFX942-NEXT:    ; def s[4:9]9683; GFX942-NEXT:    ;;#ASMEND9684; GFX942-NEXT:    s_mov_b32 s15, s139685; GFX942-NEXT:    ;;#ASMSTART9686; GFX942-NEXT:    ; use s[8:15]9687; GFX942-NEXT:    ;;#ASMEND9688; GFX942-NEXT:    s_setpc_b64 s[30:31]9689  %vec0 = call <3 x ptr> asm "; def $0", "=s"()9690  %vec1 = call <3 x ptr> asm "; def $0", "=s"()9691  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 poison, i32 2, i32 2>9692  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)9693  ret void9694}9695 9696define void @s_shuffle_v4p0_v3p0__5_0_2_2() {9697; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_0_2_2:9698; GFX9:       ; %bb.0:9699; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9700; GFX9-NEXT:    ;;#ASMSTART9701; GFX9-NEXT:    ; def s[12:17]9702; GFX9-NEXT:    ;;#ASMEND9703; GFX9-NEXT:    ;;#ASMSTART9704; GFX9-NEXT:    ; def s[4:9]9705; GFX9-NEXT:    ;;#ASMEND9706; GFX9-NEXT:    s_mov_b32 s10, s129707; GFX9-NEXT:    s_mov_b32 s11, s139708; GFX9-NEXT:    s_mov_b32 s12, s169709; GFX9-NEXT:    s_mov_b32 s13, s179710; GFX9-NEXT:    s_mov_b32 s14, s169711; GFX9-NEXT:    s_mov_b32 s15, s179712; GFX9-NEXT:    ;;#ASMSTART9713; GFX9-NEXT:    ; use s[8:15]9714; GFX9-NEXT:    ;;#ASMEND9715; GFX9-NEXT:    s_setpc_b64 s[30:31]9716  %vec0 = call <3 x ptr> asm "; def $0", "=s"()9717  %vec1 = call <3 x ptr> asm "; def $0", "=s"()9718  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 0, i32 2, i32 2>9719  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)9720  ret void9721}9722 9723define void @s_shuffle_v4p0_v3p0__5_1_2_2() {9724; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_1_2_2:9725; GFX900:       ; %bb.0:9726; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9727; GFX900-NEXT:    ;;#ASMSTART9728; GFX900-NEXT:    ; def s[8:13]9729; GFX900-NEXT:    ;;#ASMEND9730; GFX900-NEXT:    ;;#ASMSTART9731; GFX900-NEXT:    ; def s[4:9]9732; GFX900-NEXT:    ;;#ASMEND9733; GFX900-NEXT:    s_mov_b32 s14, s129734; GFX900-NEXT:    s_mov_b32 s15, s139735; GFX900-NEXT:    ;;#ASMSTART9736; GFX900-NEXT:    ; use s[8:15]9737; GFX900-NEXT:    ;;#ASMEND9738; GFX900-NEXT:    s_setpc_b64 s[30:31]9739;9740; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_1_2_2:9741; GFX90A:       ; %bb.0:9742; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9743; GFX90A-NEXT:    ;;#ASMSTART9744; GFX90A-NEXT:    ; def s[8:13]9745; GFX90A-NEXT:    ;;#ASMEND9746; GFX90A-NEXT:    ;;#ASMSTART9747; GFX90A-NEXT:    ; def s[4:9]9748; GFX90A-NEXT:    ;;#ASMEND9749; GFX90A-NEXT:    s_mov_b32 s14, s129750; GFX90A-NEXT:    s_mov_b32 s15, s139751; GFX90A-NEXT:    ;;#ASMSTART9752; GFX90A-NEXT:    ; use s[8:15]9753; GFX90A-NEXT:    ;;#ASMEND9754; GFX90A-NEXT:    s_setpc_b64 s[30:31]9755;9756; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_1_2_2:9757; GFX942:       ; %bb.0:9758; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9759; GFX942-NEXT:    ;;#ASMSTART9760; GFX942-NEXT:    ; def s[8:13]9761; GFX942-NEXT:    ;;#ASMEND9762; GFX942-NEXT:    s_mov_b32 s14, s129763; GFX942-NEXT:    ;;#ASMSTART9764; GFX942-NEXT:    ; def s[4:9]9765; GFX942-NEXT:    ;;#ASMEND9766; GFX942-NEXT:    s_mov_b32 s15, s139767; GFX942-NEXT:    ;;#ASMSTART9768; GFX942-NEXT:    ; use s[8:15]9769; GFX942-NEXT:    ;;#ASMEND9770; GFX942-NEXT:    s_setpc_b64 s[30:31]9771  %vec0 = call <3 x ptr> asm "; def $0", "=s"()9772  %vec1 = call <3 x ptr> asm "; def $0", "=s"()9773  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 1, i32 2, i32 2>9774  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)9775  ret void9776}9777 9778define void @s_shuffle_v4p0_v3p0__5_3_2_2() {9779; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_3_2_2:9780; GFX900:       ; %bb.0:9781; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9782; GFX900-NEXT:    ;;#ASMSTART9783; GFX900-NEXT:    ; def s[8:13]9784; GFX900-NEXT:    ;;#ASMEND9785; GFX900-NEXT:    ;;#ASMSTART9786; GFX900-NEXT:    ; def s[4:9]9787; GFX900-NEXT:    ;;#ASMEND9788; GFX900-NEXT:    s_mov_b32 s10, s49789; GFX900-NEXT:    s_mov_b32 s11, s59790; GFX900-NEXT:    s_mov_b32 s14, s129791; GFX900-NEXT:    s_mov_b32 s15, s139792; GFX900-NEXT:    ;;#ASMSTART9793; GFX900-NEXT:    ; use s[8:15]9794; GFX900-NEXT:    ;;#ASMEND9795; GFX900-NEXT:    s_setpc_b64 s[30:31]9796;9797; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_3_2_2:9798; GFX90A:       ; %bb.0:9799; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9800; GFX90A-NEXT:    ;;#ASMSTART9801; GFX90A-NEXT:    ; def s[8:13]9802; GFX90A-NEXT:    ;;#ASMEND9803; GFX90A-NEXT:    ;;#ASMSTART9804; GFX90A-NEXT:    ; def s[4:9]9805; GFX90A-NEXT:    ;;#ASMEND9806; GFX90A-NEXT:    s_mov_b32 s10, s49807; GFX90A-NEXT:    s_mov_b32 s11, s59808; GFX90A-NEXT:    s_mov_b32 s14, s129809; GFX90A-NEXT:    s_mov_b32 s15, s139810; GFX90A-NEXT:    ;;#ASMSTART9811; GFX90A-NEXT:    ; use s[8:15]9812; GFX90A-NEXT:    ;;#ASMEND9813; GFX90A-NEXT:    s_setpc_b64 s[30:31]9814;9815; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_3_2_2:9816; GFX942:       ; %bb.0:9817; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9818; GFX942-NEXT:    ;;#ASMSTART9819; GFX942-NEXT:    ; def s[8:13]9820; GFX942-NEXT:    ;;#ASMEND9821; GFX942-NEXT:    s_mov_b32 s14, s129822; GFX942-NEXT:    ;;#ASMSTART9823; GFX942-NEXT:    ; def s[4:9]9824; GFX942-NEXT:    ;;#ASMEND9825; GFX942-NEXT:    s_mov_b32 s10, s49826; GFX942-NEXT:    s_mov_b32 s11, s59827; GFX942-NEXT:    s_mov_b32 s15, s139828; GFX942-NEXT:    ;;#ASMSTART9829; GFX942-NEXT:    ; use s[8:15]9830; GFX942-NEXT:    ;;#ASMEND9831; GFX942-NEXT:    s_setpc_b64 s[30:31]9832  %vec0 = call <3 x ptr> asm "; def $0", "=s"()9833  %vec1 = call <3 x ptr> asm "; def $0", "=s"()9834  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 3, i32 2, i32 2>9835  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)9836  ret void9837}9838 9839define void @s_shuffle_v4p0_v3p0__5_4_2_2() {9840; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_4_2_2:9841; GFX900:       ; %bb.0:9842; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9843; GFX900-NEXT:    ;;#ASMSTART9844; GFX900-NEXT:    ; def s[8:13]9845; GFX900-NEXT:    ;;#ASMEND9846; GFX900-NEXT:    ;;#ASMSTART9847; GFX900-NEXT:    ; def s[4:9]9848; GFX900-NEXT:    ;;#ASMEND9849; GFX900-NEXT:    s_mov_b32 s10, s69850; GFX900-NEXT:    s_mov_b32 s11, s79851; GFX900-NEXT:    s_mov_b32 s14, s129852; GFX900-NEXT:    s_mov_b32 s15, s139853; GFX900-NEXT:    ;;#ASMSTART9854; GFX900-NEXT:    ; use s[8:15]9855; GFX900-NEXT:    ;;#ASMEND9856; GFX900-NEXT:    s_setpc_b64 s[30:31]9857;9858; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_4_2_2:9859; GFX90A:       ; %bb.0:9860; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9861; GFX90A-NEXT:    ;;#ASMSTART9862; GFX90A-NEXT:    ; def s[8:13]9863; GFX90A-NEXT:    ;;#ASMEND9864; GFX90A-NEXT:    ;;#ASMSTART9865; GFX90A-NEXT:    ; def s[4:9]9866; GFX90A-NEXT:    ;;#ASMEND9867; GFX90A-NEXT:    s_mov_b32 s10, s69868; GFX90A-NEXT:    s_mov_b32 s11, s79869; GFX90A-NEXT:    s_mov_b32 s14, s129870; GFX90A-NEXT:    s_mov_b32 s15, s139871; GFX90A-NEXT:    ;;#ASMSTART9872; GFX90A-NEXT:    ; use s[8:15]9873; GFX90A-NEXT:    ;;#ASMEND9874; GFX90A-NEXT:    s_setpc_b64 s[30:31]9875;9876; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_4_2_2:9877; GFX942:       ; %bb.0:9878; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9879; GFX942-NEXT:    ;;#ASMSTART9880; GFX942-NEXT:    ; def s[8:13]9881; GFX942-NEXT:    ;;#ASMEND9882; GFX942-NEXT:    s_mov_b32 s14, s129883; GFX942-NEXT:    ;;#ASMSTART9884; GFX942-NEXT:    ; def s[4:9]9885; GFX942-NEXT:    ;;#ASMEND9886; GFX942-NEXT:    s_mov_b32 s10, s69887; GFX942-NEXT:    s_mov_b32 s11, s79888; GFX942-NEXT:    s_mov_b32 s15, s139889; GFX942-NEXT:    ;;#ASMSTART9890; GFX942-NEXT:    ; use s[8:15]9891; GFX942-NEXT:    ;;#ASMEND9892; GFX942-NEXT:    s_setpc_b64 s[30:31]9893  %vec0 = call <3 x ptr> asm "; def $0", "=s"()9894  %vec1 = call <3 x ptr> asm "; def $0", "=s"()9895  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 4, i32 2, i32 2>9896  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)9897  ret void9898}9899 9900define void @s_shuffle_v4p0_v3p0__5_5_2_2() {9901; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_5_2_2:9902; GFX900:       ; %bb.0:9903; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9904; GFX900-NEXT:    ;;#ASMSTART9905; GFX900-NEXT:    ; def s[8:13]9906; GFX900-NEXT:    ;;#ASMEND9907; GFX900-NEXT:    ;;#ASMSTART9908; GFX900-NEXT:    ; def s[4:9]9909; GFX900-NEXT:    ;;#ASMEND9910; GFX900-NEXT:    s_mov_b32 s10, s89911; GFX900-NEXT:    s_mov_b32 s11, s99912; GFX900-NEXT:    s_mov_b32 s14, s129913; GFX900-NEXT:    s_mov_b32 s15, s139914; GFX900-NEXT:    ;;#ASMSTART9915; GFX900-NEXT:    ; use s[8:15]9916; GFX900-NEXT:    ;;#ASMEND9917; GFX900-NEXT:    s_setpc_b64 s[30:31]9918;9919; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_5_2_2:9920; GFX90A:       ; %bb.0:9921; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9922; GFX90A-NEXT:    ;;#ASMSTART9923; GFX90A-NEXT:    ; def s[8:13]9924; GFX90A-NEXT:    ;;#ASMEND9925; GFX90A-NEXT:    ;;#ASMSTART9926; GFX90A-NEXT:    ; def s[4:9]9927; GFX90A-NEXT:    ;;#ASMEND9928; GFX90A-NEXT:    s_mov_b32 s10, s89929; GFX90A-NEXT:    s_mov_b32 s11, s99930; GFX90A-NEXT:    s_mov_b32 s14, s129931; GFX90A-NEXT:    s_mov_b32 s15, s139932; GFX90A-NEXT:    ;;#ASMSTART9933; GFX90A-NEXT:    ; use s[8:15]9934; GFX90A-NEXT:    ;;#ASMEND9935; GFX90A-NEXT:    s_setpc_b64 s[30:31]9936;9937; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_5_2_2:9938; GFX942:       ; %bb.0:9939; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9940; GFX942-NEXT:    ;;#ASMSTART9941; GFX942-NEXT:    ; def s[8:13]9942; GFX942-NEXT:    ;;#ASMEND9943; GFX942-NEXT:    s_mov_b32 s14, s129944; GFX942-NEXT:    ;;#ASMSTART9945; GFX942-NEXT:    ; def s[4:9]9946; GFX942-NEXT:    ;;#ASMEND9947; GFX942-NEXT:    s_mov_b32 s10, s89948; GFX942-NEXT:    s_mov_b32 s11, s99949; GFX942-NEXT:    s_mov_b32 s15, s139950; GFX942-NEXT:    ;;#ASMSTART9951; GFX942-NEXT:    ; use s[8:15]9952; GFX942-NEXT:    ;;#ASMEND9953; GFX942-NEXT:    s_setpc_b64 s[30:31]9954  %vec0 = call <3 x ptr> asm "; def $0", "=s"()9955  %vec1 = call <3 x ptr> asm "; def $0", "=s"()9956  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 2>9957  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)9958  ret void9959}9960 9961define void @s_shuffle_v4p0_v3p0__5_5_u_2() {9962; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_5_u_2:9963; GFX900:       ; %bb.0:9964; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9965; GFX900-NEXT:    ;;#ASMSTART9966; GFX900-NEXT:    ; def s[8:13]9967; GFX900-NEXT:    ;;#ASMEND9968; GFX900-NEXT:    ;;#ASMSTART9969; GFX900-NEXT:    ; def s[4:9]9970; GFX900-NEXT:    ;;#ASMEND9971; GFX900-NEXT:    s_mov_b32 s10, s89972; GFX900-NEXT:    s_mov_b32 s11, s99973; GFX900-NEXT:    s_mov_b32 s14, s129974; GFX900-NEXT:    s_mov_b32 s15, s139975; GFX900-NEXT:    ;;#ASMSTART9976; GFX900-NEXT:    ; use s[8:15]9977; GFX900-NEXT:    ;;#ASMEND9978; GFX900-NEXT:    s_setpc_b64 s[30:31]9979;9980; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_5_u_2:9981; GFX90A:       ; %bb.0:9982; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9983; GFX90A-NEXT:    ;;#ASMSTART9984; GFX90A-NEXT:    ; def s[8:13]9985; GFX90A-NEXT:    ;;#ASMEND9986; GFX90A-NEXT:    ;;#ASMSTART9987; GFX90A-NEXT:    ; def s[4:9]9988; GFX90A-NEXT:    ;;#ASMEND9989; GFX90A-NEXT:    s_mov_b32 s10, s89990; GFX90A-NEXT:    s_mov_b32 s11, s99991; GFX90A-NEXT:    s_mov_b32 s14, s129992; GFX90A-NEXT:    s_mov_b32 s15, s139993; GFX90A-NEXT:    ;;#ASMSTART9994; GFX90A-NEXT:    ; use s[8:15]9995; GFX90A-NEXT:    ;;#ASMEND9996; GFX90A-NEXT:    s_setpc_b64 s[30:31]9997;9998; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_5_u_2:9999; GFX942:       ; %bb.0:10000; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10001; GFX942-NEXT:    ;;#ASMSTART10002; GFX942-NEXT:    ; def s[8:13]10003; GFX942-NEXT:    ;;#ASMEND10004; GFX942-NEXT:    s_mov_b32 s14, s1210005; GFX942-NEXT:    ;;#ASMSTART10006; GFX942-NEXT:    ; def s[4:9]10007; GFX942-NEXT:    ;;#ASMEND10008; GFX942-NEXT:    s_mov_b32 s10, s810009; GFX942-NEXT:    s_mov_b32 s11, s910010; GFX942-NEXT:    s_mov_b32 s15, s1310011; GFX942-NEXT:    ;;#ASMSTART10012; GFX942-NEXT:    ; use s[8:15]10013; GFX942-NEXT:    ;;#ASMEND10014; GFX942-NEXT:    s_setpc_b64 s[30:31]10015  %vec0 = call <3 x ptr> asm "; def $0", "=s"()10016  %vec1 = call <3 x ptr> asm "; def $0", "=s"()10017  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 2>10018  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)10019  ret void10020}10021 10022define void @s_shuffle_v4p0_v3p0__5_5_0_2() {10023; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_0_2:10024; GFX9:       ; %bb.0:10025; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10026; GFX9-NEXT:    ;;#ASMSTART10027; GFX9-NEXT:    ; def s[12:17]10028; GFX9-NEXT:    ;;#ASMEND10029; GFX9-NEXT:    ;;#ASMSTART10030; GFX9-NEXT:    ; def s[4:9]10031; GFX9-NEXT:    ;;#ASMEND10032; GFX9-NEXT:    s_mov_b32 s10, s810033; GFX9-NEXT:    s_mov_b32 s11, s910034; GFX9-NEXT:    s_mov_b32 s14, s1610035; GFX9-NEXT:    s_mov_b32 s15, s1710036; GFX9-NEXT:    ;;#ASMSTART10037; GFX9-NEXT:    ; use s[8:15]10038; GFX9-NEXT:    ;;#ASMEND10039; GFX9-NEXT:    s_setpc_b64 s[30:31]10040  %vec0 = call <3 x ptr> asm "; def $0", "=s"()10041  %vec1 = call <3 x ptr> asm "; def $0", "=s"()10042  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 2>10043  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)10044  ret void10045}10046 10047define void @s_shuffle_v4p0_v3p0__5_5_1_2() {10048; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_1_2:10049; GFX9:       ; %bb.0:10050; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10051; GFX9-NEXT:    ;;#ASMSTART10052; GFX9-NEXT:    ; def s[12:17]10053; GFX9-NEXT:    ;;#ASMEND10054; GFX9-NEXT:    ;;#ASMSTART10055; GFX9-NEXT:    ; def s[4:9]10056; GFX9-NEXT:    ;;#ASMEND10057; GFX9-NEXT:    s_mov_b32 s10, s810058; GFX9-NEXT:    s_mov_b32 s11, s910059; GFX9-NEXT:    s_mov_b32 s12, s1410060; GFX9-NEXT:    s_mov_b32 s13, s1510061; GFX9-NEXT:    s_mov_b32 s14, s1610062; GFX9-NEXT:    s_mov_b32 s15, s1710063; GFX9-NEXT:    ;;#ASMSTART10064; GFX9-NEXT:    ; use s[8:15]10065; GFX9-NEXT:    ;;#ASMEND10066; GFX9-NEXT:    s_setpc_b64 s[30:31]10067  %vec0 = call <3 x ptr> asm "; def $0", "=s"()10068  %vec1 = call <3 x ptr> asm "; def $0", "=s"()10069  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 2>10070  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)10071  ret void10072}10073 10074define void @s_shuffle_v4p0_v3p0__5_5_3_2() {10075; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_3_2:10076; GFX9:       ; %bb.0:10077; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10078; GFX9-NEXT:    ;;#ASMSTART10079; GFX9-NEXT:    ; def s[12:17]10080; GFX9-NEXT:    ;;#ASMEND10081; GFX9-NEXT:    ;;#ASMSTART10082; GFX9-NEXT:    ; def s[4:9]10083; GFX9-NEXT:    ;;#ASMEND10084; GFX9-NEXT:    s_mov_b32 s10, s810085; GFX9-NEXT:    s_mov_b32 s11, s910086; GFX9-NEXT:    s_mov_b32 s12, s410087; GFX9-NEXT:    s_mov_b32 s13, s510088; GFX9-NEXT:    s_mov_b32 s14, s1610089; GFX9-NEXT:    s_mov_b32 s15, s1710090; GFX9-NEXT:    ;;#ASMSTART10091; GFX9-NEXT:    ; use s[8:15]10092; GFX9-NEXT:    ;;#ASMEND10093; GFX9-NEXT:    s_setpc_b64 s[30:31]10094  %vec0 = call <3 x ptr> asm "; def $0", "=s"()10095  %vec1 = call <3 x ptr> asm "; def $0", "=s"()10096  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 2>10097  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)10098  ret void10099}10100 10101define void @s_shuffle_v4p0_v3p0__5_5_4_2() {10102; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_4_2:10103; GFX9:       ; %bb.0:10104; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10105; GFX9-NEXT:    ;;#ASMSTART10106; GFX9-NEXT:    ; def s[12:17]10107; GFX9-NEXT:    ;;#ASMEND10108; GFX9-NEXT:    ;;#ASMSTART10109; GFX9-NEXT:    ; def s[4:9]10110; GFX9-NEXT:    ;;#ASMEND10111; GFX9-NEXT:    s_mov_b32 s10, s810112; GFX9-NEXT:    s_mov_b32 s11, s910113; GFX9-NEXT:    s_mov_b32 s12, s610114; GFX9-NEXT:    s_mov_b32 s13, s710115; GFX9-NEXT:    s_mov_b32 s14, s1610116; GFX9-NEXT:    s_mov_b32 s15, s1710117; GFX9-NEXT:    ;;#ASMSTART10118; GFX9-NEXT:    ; use s[8:15]10119; GFX9-NEXT:    ;;#ASMEND10120; GFX9-NEXT:    s_setpc_b64 s[30:31]10121  %vec0 = call <3 x ptr> asm "; def $0", "=s"()10122  %vec1 = call <3 x ptr> asm "; def $0", "=s"()10123  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 2>10124  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)10125  ret void10126}10127 10128define void @s_shuffle_v4p0_v3p0__u_3_3_3() {10129; GFX9-LABEL: s_shuffle_v4p0_v3p0__u_3_3_3:10130; GFX9:       ; %bb.0:10131; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10132; GFX9-NEXT:    ;;#ASMSTART10133; GFX9-NEXT:    ; use s[8:15]10134; GFX9-NEXT:    ;;#ASMEND10135; GFX9-NEXT:    s_setpc_b64 s[30:31]10136  %vec0 = call <3 x ptr> asm "; def $0", "=s"()10137  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 poison, i32 3, i32 3, i32 3>10138  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)10139  ret void10140}10141 10142define void @s_shuffle_v4p0_v3p0__0_3_3_3() {10143; GFX900-LABEL: s_shuffle_v4p0_v3p0__0_3_3_3:10144; GFX900:       ; %bb.0:10145; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10146; GFX900-NEXT:    ;;#ASMSTART10147; GFX900-NEXT:    ; def s[8:13]10148; GFX900-NEXT:    ;;#ASMEND10149; GFX900-NEXT:    ;;#ASMSTART10150; GFX900-NEXT:    ; use s[8:15]10151; GFX900-NEXT:    ;;#ASMEND10152; GFX900-NEXT:    s_setpc_b64 s[30:31]10153;10154; GFX90A-LABEL: s_shuffle_v4p0_v3p0__0_3_3_3:10155; GFX90A:       ; %bb.0:10156; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10157; GFX90A-NEXT:    ;;#ASMSTART10158; GFX90A-NEXT:    ; def s[8:13]10159; GFX90A-NEXT:    ;;#ASMEND10160; GFX90A-NEXT:    ;;#ASMSTART10161; GFX90A-NEXT:    ; use s[8:15]10162; GFX90A-NEXT:    ;;#ASMEND10163; GFX90A-NEXT:    s_setpc_b64 s[30:31]10164;10165; GFX942-LABEL: s_shuffle_v4p0_v3p0__0_3_3_3:10166; GFX942:       ; %bb.0:10167; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10168; GFX942-NEXT:    ;;#ASMSTART10169; GFX942-NEXT:    ; def s[8:13]10170; GFX942-NEXT:    ;;#ASMEND10171; GFX942-NEXT:    s_nop 010172; GFX942-NEXT:    ;;#ASMSTART10173; GFX942-NEXT:    ; use s[8:15]10174; GFX942-NEXT:    ;;#ASMEND10175; GFX942-NEXT:    s_setpc_b64 s[30:31]10176  %vec0 = call <3 x ptr> asm "; def $0", "=s"()10177  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 0, i32 3, i32 3, i32 3>10178  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)10179  ret void10180}10181 10182define void @s_shuffle_v4p0_v3p0__1_3_3_3() {10183; GFX900-LABEL: s_shuffle_v4p0_v3p0__1_3_3_3:10184; GFX900:       ; %bb.0:10185; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10186; GFX900-NEXT:    ;;#ASMSTART10187; GFX900-NEXT:    ; def s[4:9]10188; GFX900-NEXT:    ;;#ASMEND10189; GFX900-NEXT:    s_mov_b32 s8, s610190; GFX900-NEXT:    s_mov_b32 s9, s710191; GFX900-NEXT:    ;;#ASMSTART10192; GFX900-NEXT:    ; use s[8:15]10193; GFX900-NEXT:    ;;#ASMEND10194; GFX900-NEXT:    s_setpc_b64 s[30:31]10195;10196; GFX90A-LABEL: s_shuffle_v4p0_v3p0__1_3_3_3:10197; GFX90A:       ; %bb.0:10198; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10199; GFX90A-NEXT:    ;;#ASMSTART10200; GFX90A-NEXT:    ; def s[4:9]10201; GFX90A-NEXT:    ;;#ASMEND10202; GFX90A-NEXT:    s_mov_b32 s8, s610203; GFX90A-NEXT:    s_mov_b32 s9, s710204; GFX90A-NEXT:    ;;#ASMSTART10205; GFX90A-NEXT:    ; use s[8:15]10206; GFX90A-NEXT:    ;;#ASMEND10207; GFX90A-NEXT:    s_setpc_b64 s[30:31]10208;10209; GFX942-LABEL: s_shuffle_v4p0_v3p0__1_3_3_3:10210; GFX942:       ; %bb.0:10211; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10212; GFX942-NEXT:    ;;#ASMSTART10213; GFX942-NEXT:    ; def s[0:5]10214; GFX942-NEXT:    ;;#ASMEND10215; GFX942-NEXT:    s_mov_b32 s8, s210216; GFX942-NEXT:    s_mov_b32 s9, s310217; GFX942-NEXT:    ;;#ASMSTART10218; GFX942-NEXT:    ; use s[8:15]10219; GFX942-NEXT:    ;;#ASMEND10220; GFX942-NEXT:    s_setpc_b64 s[30:31]10221  %vec0 = call <3 x ptr> asm "; def $0", "=s"()10222  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 1, i32 3, i32 3, i32 3>10223  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)10224  ret void10225}10226 10227define void @s_shuffle_v4p0_v3p0__2_3_3_3() {10228; GFX900-LABEL: s_shuffle_v4p0_v3p0__2_3_3_3:10229; GFX900:       ; %bb.0:10230; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10231; GFX900-NEXT:    ;;#ASMSTART10232; GFX900-NEXT:    ; def s[4:9]10233; GFX900-NEXT:    ;;#ASMEND10234; GFX900-NEXT:    ;;#ASMSTART10235; GFX900-NEXT:    ; use s[8:15]10236; GFX900-NEXT:    ;;#ASMEND10237; GFX900-NEXT:    s_setpc_b64 s[30:31]10238;10239; GFX90A-LABEL: s_shuffle_v4p0_v3p0__2_3_3_3:10240; GFX90A:       ; %bb.0:10241; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10242; GFX90A-NEXT:    ;;#ASMSTART10243; GFX90A-NEXT:    ; def s[4:9]10244; GFX90A-NEXT:    ;;#ASMEND10245; GFX90A-NEXT:    ;;#ASMSTART10246; GFX90A-NEXT:    ; use s[8:15]10247; GFX90A-NEXT:    ;;#ASMEND10248; GFX90A-NEXT:    s_setpc_b64 s[30:31]10249;10250; GFX942-LABEL: s_shuffle_v4p0_v3p0__2_3_3_3:10251; GFX942:       ; %bb.0:10252; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10253; GFX942-NEXT:    ;;#ASMSTART10254; GFX942-NEXT:    ; def s[4:9]10255; GFX942-NEXT:    ;;#ASMEND10256; GFX942-NEXT:    s_nop 010257; GFX942-NEXT:    ;;#ASMSTART10258; GFX942-NEXT:    ; use s[8:15]10259; GFX942-NEXT:    ;;#ASMEND10260; GFX942-NEXT:    s_setpc_b64 s[30:31]10261  %vec0 = call <3 x ptr> asm "; def $0", "=s"()10262  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 2, i32 3, i32 3, i32 3>10263  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)10264  ret void10265}10266 10267define void @s_shuffle_v4p0_v3p0__3_3_3_3() {10268; GFX9-LABEL: s_shuffle_v4p0_v3p0__3_3_3_3:10269; GFX9:       ; %bb.0:10270; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10271; GFX9-NEXT:    ;;#ASMSTART10272; GFX9-NEXT:    ; use s[8:15]10273; GFX9-NEXT:    ;;#ASMEND10274; GFX9-NEXT:    s_setpc_b64 s[30:31]10275  %vec0 = call <3 x ptr> asm "; def $0", "=s"()10276  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <4 x i32> <i32 3, i32 3, i32 3, i32 3>10277  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)10278  ret void10279}10280 10281define void @s_shuffle_v4p0_v3p0__4_3_3_3() {10282; GFX9-LABEL: s_shuffle_v4p0_v3p0__4_3_3_3:10283; GFX9:       ; %bb.0:10284; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10285; GFX9-NEXT:    ;;#ASMSTART10286; GFX9-NEXT:    ; def s[12:17]10287; GFX9-NEXT:    ;;#ASMEND10288; GFX9-NEXT:    s_mov_b32 s8, s1410289; GFX9-NEXT:    s_mov_b32 s9, s1510290; GFX9-NEXT:    s_mov_b32 s10, s1210291; GFX9-NEXT:    s_mov_b32 s11, s1310292; GFX9-NEXT:    s_mov_b32 s14, s1210293; GFX9-NEXT:    s_mov_b32 s15, s1310294; GFX9-NEXT:    ;;#ASMSTART10295; GFX9-NEXT:    ; use s[8:15]10296; GFX9-NEXT:    ;;#ASMEND10297; GFX9-NEXT:    s_setpc_b64 s[30:31]10298  %vec0 = call <3 x ptr> asm "; def $0", "=s"()10299  %vec1 = call <3 x ptr> asm "; def $0", "=s"()10300  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 4, i32 3, i32 3, i32 3>10301  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)10302  ret void10303}10304 10305define void @s_shuffle_v4p0_v3p0__5_3_3_3() {10306; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_3_3_3:10307; GFX9:       ; %bb.0:10308; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10309; GFX9-NEXT:    ;;#ASMSTART10310; GFX9-NEXT:    ; def s[4:9]10311; GFX9-NEXT:    ;;#ASMEND10312; GFX9-NEXT:    s_mov_b32 s10, s410313; GFX9-NEXT:    s_mov_b32 s11, s510314; GFX9-NEXT:    s_mov_b32 s12, s410315; GFX9-NEXT:    s_mov_b32 s13, s510316; GFX9-NEXT:    s_mov_b32 s14, s410317; GFX9-NEXT:    s_mov_b32 s15, s510318; GFX9-NEXT:    ;;#ASMSTART10319; GFX9-NEXT:    ; use s[8:15]10320; GFX9-NEXT:    ;;#ASMEND10321; GFX9-NEXT:    s_setpc_b64 s[30:31]10322  %vec0 = call <3 x ptr> asm "; def $0", "=s"()10323  %vec1 = call <3 x ptr> asm "; def $0", "=s"()10324  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 3, i32 3, i32 3>10325  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)10326  ret void10327}10328 10329define void @s_shuffle_v4p0_v3p0__5_u_3_3() {10330; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_u_3_3:10331; GFX9:       ; %bb.0:10332; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10333; GFX9-NEXT:    ;;#ASMSTART10334; GFX9-NEXT:    ; def s[4:9]10335; GFX9-NEXT:    ;;#ASMEND10336; GFX9-NEXT:    s_mov_b32 s12, s410337; GFX9-NEXT:    s_mov_b32 s13, s510338; GFX9-NEXT:    s_mov_b32 s14, s410339; GFX9-NEXT:    s_mov_b32 s15, s510340; GFX9-NEXT:    ;;#ASMSTART10341; GFX9-NEXT:    ; use s[8:15]10342; GFX9-NEXT:    ;;#ASMEND10343; GFX9-NEXT:    s_setpc_b64 s[30:31]10344  %vec0 = call <3 x ptr> asm "; def $0", "=s"()10345  %vec1 = call <3 x ptr> asm "; def $0", "=s"()10346  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 poison, i32 3, i32 3>10347  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)10348  ret void10349}10350 10351define void @s_shuffle_v4p0_v3p0__5_0_3_3() {10352; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_0_3_3:10353; GFX900:       ; %bb.0:10354; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10355; GFX900-NEXT:    ;;#ASMSTART10356; GFX900-NEXT:    ; def s[12:17]10357; GFX900-NEXT:    ;;#ASMEND10358; GFX900-NEXT:    ;;#ASMSTART10359; GFX900-NEXT:    ; def s[4:9]10360; GFX900-NEXT:    ;;#ASMEND10361; GFX900-NEXT:    s_mov_b32 s10, s1210362; GFX900-NEXT:    s_mov_b32 s11, s1310363; GFX900-NEXT:    s_mov_b32 s12, s410364; GFX900-NEXT:    s_mov_b32 s13, s510365; GFX900-NEXT:    s_mov_b32 s14, s410366; GFX900-NEXT:    s_mov_b32 s15, s510367; GFX900-NEXT:    ;;#ASMSTART10368; GFX900-NEXT:    ; use s[8:15]10369; GFX900-NEXT:    ;;#ASMEND10370; GFX900-NEXT:    s_setpc_b64 s[30:31]10371;10372; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_0_3_3:10373; GFX90A:       ; %bb.0:10374; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10375; GFX90A-NEXT:    ;;#ASMSTART10376; GFX90A-NEXT:    ; def s[12:17]10377; GFX90A-NEXT:    ;;#ASMEND10378; GFX90A-NEXT:    ;;#ASMSTART10379; GFX90A-NEXT:    ; def s[4:9]10380; GFX90A-NEXT:    ;;#ASMEND10381; GFX90A-NEXT:    s_mov_b32 s10, s1210382; GFX90A-NEXT:    s_mov_b32 s11, s1310383; GFX90A-NEXT:    s_mov_b32 s12, s410384; GFX90A-NEXT:    s_mov_b32 s13, s510385; GFX90A-NEXT:    s_mov_b32 s14, s410386; GFX90A-NEXT:    s_mov_b32 s15, s510387; GFX90A-NEXT:    ;;#ASMSTART10388; GFX90A-NEXT:    ; use s[8:15]10389; GFX90A-NEXT:    ;;#ASMEND10390; GFX90A-NEXT:    s_setpc_b64 s[30:31]10391;10392; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_0_3_3:10393; GFX942:       ; %bb.0:10394; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10395; GFX942-NEXT:    ;;#ASMSTART10396; GFX942-NEXT:    ; def s[0:5]10397; GFX942-NEXT:    ;;#ASMEND10398; GFX942-NEXT:    s_mov_b32 s10, s010399; GFX942-NEXT:    ;;#ASMSTART10400; GFX942-NEXT:    ; def s[4:9]10401; GFX942-NEXT:    ;;#ASMEND10402; GFX942-NEXT:    s_mov_b32 s11, s110403; GFX942-NEXT:    s_mov_b32 s12, s410404; GFX942-NEXT:    s_mov_b32 s13, s510405; GFX942-NEXT:    s_mov_b32 s14, s410406; GFX942-NEXT:    s_mov_b32 s15, s510407; GFX942-NEXT:    ;;#ASMSTART10408; GFX942-NEXT:    ; use s[8:15]10409; GFX942-NEXT:    ;;#ASMEND10410; GFX942-NEXT:    s_setpc_b64 s[30:31]10411  %vec0 = call <3 x ptr> asm "; def $0", "=s"()10412  %vec1 = call <3 x ptr> asm "; def $0", "=s"()10413  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 0, i32 3, i32 3>10414  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)10415  ret void10416}10417 10418define void @s_shuffle_v4p0_v3p0__5_1_3_3() {10419; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_1_3_3:10420; GFX900:       ; %bb.0:10421; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10422; GFX900-NEXT:    ;;#ASMSTART10423; GFX900-NEXT:    ; def s[8:13]10424; GFX900-NEXT:    ;;#ASMEND10425; GFX900-NEXT:    ;;#ASMSTART10426; GFX900-NEXT:    ; def s[4:9]10427; GFX900-NEXT:    ;;#ASMEND10428; GFX900-NEXT:    s_mov_b32 s12, s410429; GFX900-NEXT:    s_mov_b32 s13, s510430; GFX900-NEXT:    s_mov_b32 s14, s410431; GFX900-NEXT:    s_mov_b32 s15, s510432; GFX900-NEXT:    ;;#ASMSTART10433; GFX900-NEXT:    ; use s[8:15]10434; GFX900-NEXT:    ;;#ASMEND10435; GFX900-NEXT:    s_setpc_b64 s[30:31]10436;10437; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_1_3_3:10438; GFX90A:       ; %bb.0:10439; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10440; GFX90A-NEXT:    ;;#ASMSTART10441; GFX90A-NEXT:    ; def s[8:13]10442; GFX90A-NEXT:    ;;#ASMEND10443; GFX90A-NEXT:    ;;#ASMSTART10444; GFX90A-NEXT:    ; def s[4:9]10445; GFX90A-NEXT:    ;;#ASMEND10446; GFX90A-NEXT:    s_mov_b32 s12, s410447; GFX90A-NEXT:    s_mov_b32 s13, s510448; GFX90A-NEXT:    s_mov_b32 s14, s410449; GFX90A-NEXT:    s_mov_b32 s15, s510450; GFX90A-NEXT:    ;;#ASMSTART10451; GFX90A-NEXT:    ; use s[8:15]10452; GFX90A-NEXT:    ;;#ASMEND10453; GFX90A-NEXT:    s_setpc_b64 s[30:31]10454;10455; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_1_3_3:10456; GFX942:       ; %bb.0:10457; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10458; GFX942-NEXT:    ;;#ASMSTART10459; GFX942-NEXT:    ; def s[8:13]10460; GFX942-NEXT:    ;;#ASMEND10461; GFX942-NEXT:    s_nop 010462; GFX942-NEXT:    ;;#ASMSTART10463; GFX942-NEXT:    ; def s[4:9]10464; GFX942-NEXT:    ;;#ASMEND10465; GFX942-NEXT:    s_mov_b32 s12, s410466; GFX942-NEXT:    s_mov_b32 s13, s510467; GFX942-NEXT:    s_mov_b32 s14, s410468; GFX942-NEXT:    s_mov_b32 s15, s510469; GFX942-NEXT:    ;;#ASMSTART10470; GFX942-NEXT:    ; use s[8:15]10471; GFX942-NEXT:    ;;#ASMEND10472; GFX942-NEXT:    s_setpc_b64 s[30:31]10473  %vec0 = call <3 x ptr> asm "; def $0", "=s"()10474  %vec1 = call <3 x ptr> asm "; def $0", "=s"()10475  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 1, i32 3, i32 3>10476  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)10477  ret void10478}10479 10480define void @s_shuffle_v4p0_v3p0__5_2_3_3() {10481; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_2_3_3:10482; GFX900:       ; %bb.0:10483; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10484; GFX900-NEXT:    ;;#ASMSTART10485; GFX900-NEXT:    ; def s[8:13]10486; GFX900-NEXT:    ;;#ASMEND10487; GFX900-NEXT:    ;;#ASMSTART10488; GFX900-NEXT:    ; def s[4:9]10489; GFX900-NEXT:    ;;#ASMEND10490; GFX900-NEXT:    s_mov_b32 s10, s1210491; GFX900-NEXT:    s_mov_b32 s11, s1310492; GFX900-NEXT:    s_mov_b32 s12, s410493; GFX900-NEXT:    s_mov_b32 s13, s510494; GFX900-NEXT:    s_mov_b32 s14, s410495; GFX900-NEXT:    s_mov_b32 s15, s510496; GFX900-NEXT:    ;;#ASMSTART10497; GFX900-NEXT:    ; use s[8:15]10498; GFX900-NEXT:    ;;#ASMEND10499; GFX900-NEXT:    s_setpc_b64 s[30:31]10500;10501; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_2_3_3:10502; GFX90A:       ; %bb.0:10503; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10504; GFX90A-NEXT:    ;;#ASMSTART10505; GFX90A-NEXT:    ; def s[8:13]10506; GFX90A-NEXT:    ;;#ASMEND10507; GFX90A-NEXT:    ;;#ASMSTART10508; GFX90A-NEXT:    ; def s[4:9]10509; GFX90A-NEXT:    ;;#ASMEND10510; GFX90A-NEXT:    s_mov_b32 s10, s1210511; GFX90A-NEXT:    s_mov_b32 s11, s1310512; GFX90A-NEXT:    s_mov_b32 s12, s410513; GFX90A-NEXT:    s_mov_b32 s13, s510514; GFX90A-NEXT:    s_mov_b32 s14, s410515; GFX90A-NEXT:    s_mov_b32 s15, s510516; GFX90A-NEXT:    ;;#ASMSTART10517; GFX90A-NEXT:    ; use s[8:15]10518; GFX90A-NEXT:    ;;#ASMEND10519; GFX90A-NEXT:    s_setpc_b64 s[30:31]10520;10521; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_2_3_3:10522; GFX942:       ; %bb.0:10523; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10524; GFX942-NEXT:    ;;#ASMSTART10525; GFX942-NEXT:    ; def s[8:13]10526; GFX942-NEXT:    ;;#ASMEND10527; GFX942-NEXT:    s_mov_b32 s10, s1210528; GFX942-NEXT:    ;;#ASMSTART10529; GFX942-NEXT:    ; def s[4:9]10530; GFX942-NEXT:    ;;#ASMEND10531; GFX942-NEXT:    s_mov_b32 s11, s1310532; GFX942-NEXT:    s_mov_b32 s12, s410533; GFX942-NEXT:    s_mov_b32 s13, s510534; GFX942-NEXT:    s_mov_b32 s14, s410535; GFX942-NEXT:    s_mov_b32 s15, s510536; GFX942-NEXT:    ;;#ASMSTART10537; GFX942-NEXT:    ; use s[8:15]10538; GFX942-NEXT:    ;;#ASMEND10539; GFX942-NEXT:    s_setpc_b64 s[30:31]10540  %vec0 = call <3 x ptr> asm "; def $0", "=s"()10541  %vec1 = call <3 x ptr> asm "; def $0", "=s"()10542  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 2, i32 3, i32 3>10543  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)10544  ret void10545}10546 10547define void @s_shuffle_v4p0_v3p0__5_4_3_3() {10548; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_4_3_3:10549; GFX9:       ; %bb.0:10550; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10551; GFX9-NEXT:    ;;#ASMSTART10552; GFX9-NEXT:    ; def s[4:9]10553; GFX9-NEXT:    ;;#ASMEND10554; GFX9-NEXT:    s_mov_b32 s10, s610555; GFX9-NEXT:    s_mov_b32 s11, s710556; GFX9-NEXT:    s_mov_b32 s12, s410557; GFX9-NEXT:    s_mov_b32 s13, s510558; GFX9-NEXT:    s_mov_b32 s14, s410559; GFX9-NEXT:    s_mov_b32 s15, s510560; GFX9-NEXT:    ;;#ASMSTART10561; GFX9-NEXT:    ; use s[8:15]10562; GFX9-NEXT:    ;;#ASMEND10563; GFX9-NEXT:    s_setpc_b64 s[30:31]10564  %vec0 = call <3 x ptr> asm "; def $0", "=s"()10565  %vec1 = call <3 x ptr> asm "; def $0", "=s"()10566  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 4, i32 3, i32 3>10567  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)10568  ret void10569}10570 10571define void @s_shuffle_v4p0_v3p0__5_5_3_3() {10572; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_3_3:10573; GFX9:       ; %bb.0:10574; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10575; GFX9-NEXT:    ;;#ASMSTART10576; GFX9-NEXT:    ; def s[4:9]10577; GFX9-NEXT:    ;;#ASMEND10578; GFX9-NEXT:    s_mov_b32 s10, s810579; GFX9-NEXT:    s_mov_b32 s11, s910580; GFX9-NEXT:    s_mov_b32 s12, s410581; GFX9-NEXT:    s_mov_b32 s13, s510582; GFX9-NEXT:    s_mov_b32 s14, s410583; GFX9-NEXT:    s_mov_b32 s15, s510584; GFX9-NEXT:    ;;#ASMSTART10585; GFX9-NEXT:    ; use s[8:15]10586; GFX9-NEXT:    ;;#ASMEND10587; GFX9-NEXT:    s_setpc_b64 s[30:31]10588  %vec0 = call <3 x ptr> asm "; def $0", "=s"()10589  %vec1 = call <3 x ptr> asm "; def $0", "=s"()10590  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 3>10591  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)10592  ret void10593}10594 10595define void @s_shuffle_v4p0_v3p0__5_5_u_3() {10596; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_u_3:10597; GFX9:       ; %bb.0:10598; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10599; GFX9-NEXT:    ;;#ASMSTART10600; GFX9-NEXT:    ; def s[4:9]10601; GFX9-NEXT:    ;;#ASMEND10602; GFX9-NEXT:    s_mov_b32 s10, s810603; GFX9-NEXT:    s_mov_b32 s11, s910604; GFX9-NEXT:    s_mov_b32 s14, s410605; GFX9-NEXT:    s_mov_b32 s15, s510606; GFX9-NEXT:    ;;#ASMSTART10607; GFX9-NEXT:    ; use s[8:15]10608; GFX9-NEXT:    ;;#ASMEND10609; GFX9-NEXT:    s_setpc_b64 s[30:31]10610  %vec0 = call <3 x ptr> asm "; def $0", "=s"()10611  %vec1 = call <3 x ptr> asm "; def $0", "=s"()10612  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 3>10613  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)10614  ret void10615}10616 10617define void @s_shuffle_v4p0_v3p0__5_5_0_3() {10618; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_0_3:10619; GFX9:       ; %bb.0:10620; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10621; GFX9-NEXT:    ;;#ASMSTART10622; GFX9-NEXT:    ; def s[12:17]10623; GFX9-NEXT:    ;;#ASMEND10624; GFX9-NEXT:    ;;#ASMSTART10625; GFX9-NEXT:    ; def s[4:9]10626; GFX9-NEXT:    ;;#ASMEND10627; GFX9-NEXT:    s_mov_b32 s10, s810628; GFX9-NEXT:    s_mov_b32 s11, s910629; GFX9-NEXT:    s_mov_b32 s14, s410630; GFX9-NEXT:    s_mov_b32 s15, s510631; GFX9-NEXT:    ;;#ASMSTART10632; GFX9-NEXT:    ; use s[8:15]10633; GFX9-NEXT:    ;;#ASMEND10634; GFX9-NEXT:    s_setpc_b64 s[30:31]10635  %vec0 = call <3 x ptr> asm "; def $0", "=s"()10636  %vec1 = call <3 x ptr> asm "; def $0", "=s"()10637  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 3>10638  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)10639  ret void10640}10641 10642define void @s_shuffle_v4p0_v3p0__5_5_1_3() {10643; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_5_1_3:10644; GFX900:       ; %bb.0:10645; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10646; GFX900-NEXT:    ;;#ASMSTART10647; GFX900-NEXT:    ; def s[12:17]10648; GFX900-NEXT:    ;;#ASMEND10649; GFX900-NEXT:    ;;#ASMSTART10650; GFX900-NEXT:    ; def s[4:9]10651; GFX900-NEXT:    ;;#ASMEND10652; GFX900-NEXT:    s_mov_b32 s10, s810653; GFX900-NEXT:    s_mov_b32 s11, s910654; GFX900-NEXT:    s_mov_b32 s12, s1410655; GFX900-NEXT:    s_mov_b32 s13, s1510656; GFX900-NEXT:    s_mov_b32 s14, s410657; GFX900-NEXT:    s_mov_b32 s15, s510658; GFX900-NEXT:    ;;#ASMSTART10659; GFX900-NEXT:    ; use s[8:15]10660; GFX900-NEXT:    ;;#ASMEND10661; GFX900-NEXT:    s_setpc_b64 s[30:31]10662;10663; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_5_1_3:10664; GFX90A:       ; %bb.0:10665; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10666; GFX90A-NEXT:    ;;#ASMSTART10667; GFX90A-NEXT:    ; def s[12:17]10668; GFX90A-NEXT:    ;;#ASMEND10669; GFX90A-NEXT:    ;;#ASMSTART10670; GFX90A-NEXT:    ; def s[4:9]10671; GFX90A-NEXT:    ;;#ASMEND10672; GFX90A-NEXT:    s_mov_b32 s10, s810673; GFX90A-NEXT:    s_mov_b32 s11, s910674; GFX90A-NEXT:    s_mov_b32 s12, s1410675; GFX90A-NEXT:    s_mov_b32 s13, s1510676; GFX90A-NEXT:    s_mov_b32 s14, s410677; GFX90A-NEXT:    s_mov_b32 s15, s510678; GFX90A-NEXT:    ;;#ASMSTART10679; GFX90A-NEXT:    ; use s[8:15]10680; GFX90A-NEXT:    ;;#ASMEND10681; GFX90A-NEXT:    s_setpc_b64 s[30:31]10682;10683; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_5_1_3:10684; GFX942:       ; %bb.0:10685; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10686; GFX942-NEXT:    ;;#ASMSTART10687; GFX942-NEXT:    ; def s[0:5]10688; GFX942-NEXT:    ;;#ASMEND10689; GFX942-NEXT:    s_mov_b32 s12, s210690; GFX942-NEXT:    ;;#ASMSTART10691; GFX942-NEXT:    ; def s[4:9]10692; GFX942-NEXT:    ;;#ASMEND10693; GFX942-NEXT:    s_mov_b32 s10, s810694; GFX942-NEXT:    s_mov_b32 s11, s910695; GFX942-NEXT:    s_mov_b32 s13, s310696; GFX942-NEXT:    s_mov_b32 s14, s410697; GFX942-NEXT:    s_mov_b32 s15, s510698; GFX942-NEXT:    ;;#ASMSTART10699; GFX942-NEXT:    ; use s[8:15]10700; GFX942-NEXT:    ;;#ASMEND10701; GFX942-NEXT:    s_setpc_b64 s[30:31]10702  %vec0 = call <3 x ptr> asm "; def $0", "=s"()10703  %vec1 = call <3 x ptr> asm "; def $0", "=s"()10704  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 3>10705  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)10706  ret void10707}10708 10709define void @s_shuffle_v4p0_v3p0__5_5_2_3() {10710; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_5_2_3:10711; GFX900:       ; %bb.0:10712; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10713; GFX900-NEXT:    ;;#ASMSTART10714; GFX900-NEXT:    ; def s[8:13]10715; GFX900-NEXT:    ;;#ASMEND10716; GFX900-NEXT:    ;;#ASMSTART10717; GFX900-NEXT:    ; def s[4:9]10718; GFX900-NEXT:    ;;#ASMEND10719; GFX900-NEXT:    s_mov_b32 s10, s810720; GFX900-NEXT:    s_mov_b32 s11, s910721; GFX900-NEXT:    s_mov_b32 s14, s410722; GFX900-NEXT:    s_mov_b32 s15, s510723; GFX900-NEXT:    ;;#ASMSTART10724; GFX900-NEXT:    ; use s[8:15]10725; GFX900-NEXT:    ;;#ASMEND10726; GFX900-NEXT:    s_setpc_b64 s[30:31]10727;10728; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_5_2_3:10729; GFX90A:       ; %bb.0:10730; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10731; GFX90A-NEXT:    ;;#ASMSTART10732; GFX90A-NEXT:    ; def s[8:13]10733; GFX90A-NEXT:    ;;#ASMEND10734; GFX90A-NEXT:    ;;#ASMSTART10735; GFX90A-NEXT:    ; def s[4:9]10736; GFX90A-NEXT:    ;;#ASMEND10737; GFX90A-NEXT:    s_mov_b32 s10, s810738; GFX90A-NEXT:    s_mov_b32 s11, s910739; GFX90A-NEXT:    s_mov_b32 s14, s410740; GFX90A-NEXT:    s_mov_b32 s15, s510741; GFX90A-NEXT:    ;;#ASMSTART10742; GFX90A-NEXT:    ; use s[8:15]10743; GFX90A-NEXT:    ;;#ASMEND10744; GFX90A-NEXT:    s_setpc_b64 s[30:31]10745;10746; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_5_2_3:10747; GFX942:       ; %bb.0:10748; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10749; GFX942-NEXT:    ;;#ASMSTART10750; GFX942-NEXT:    ; def s[8:13]10751; GFX942-NEXT:    ;;#ASMEND10752; GFX942-NEXT:    s_nop 010753; GFX942-NEXT:    ;;#ASMSTART10754; GFX942-NEXT:    ; def s[4:9]10755; GFX942-NEXT:    ;;#ASMEND10756; GFX942-NEXT:    s_mov_b32 s10, s810757; GFX942-NEXT:    s_mov_b32 s11, s910758; GFX942-NEXT:    s_mov_b32 s14, s410759; GFX942-NEXT:    s_mov_b32 s15, s510760; GFX942-NEXT:    ;;#ASMSTART10761; GFX942-NEXT:    ; use s[8:15]10762; GFX942-NEXT:    ;;#ASMEND10763; GFX942-NEXT:    s_setpc_b64 s[30:31]10764  %vec0 = call <3 x ptr> asm "; def $0", "=s"()10765  %vec1 = call <3 x ptr> asm "; def $0", "=s"()10766  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 3>10767  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)10768  ret void10769}10770 10771define void @s_shuffle_v4p0_v3p0__5_5_4_3() {10772; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_4_3:10773; GFX9:       ; %bb.0:10774; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10775; GFX9-NEXT:    ;;#ASMSTART10776; GFX9-NEXT:    ; def s[4:9]10777; GFX9-NEXT:    ;;#ASMEND10778; GFX9-NEXT:    s_mov_b32 s10, s810779; GFX9-NEXT:    s_mov_b32 s11, s910780; GFX9-NEXT:    s_mov_b32 s12, s610781; GFX9-NEXT:    s_mov_b32 s13, s710782; GFX9-NEXT:    s_mov_b32 s14, s410783; GFX9-NEXT:    s_mov_b32 s15, s510784; GFX9-NEXT:    ;;#ASMSTART10785; GFX9-NEXT:    ; use s[8:15]10786; GFX9-NEXT:    ;;#ASMEND10787; GFX9-NEXT:    s_setpc_b64 s[30:31]10788  %vec0 = call <3 x ptr> asm "; def $0", "=s"()10789  %vec1 = call <3 x ptr> asm "; def $0", "=s"()10790  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 3>10791  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)10792  ret void10793}10794 10795define void @s_shuffle_v4p0_v3p0__u_4_4_4() {10796; GFX9-LABEL: s_shuffle_v4p0_v3p0__u_4_4_4:10797; GFX9:       ; %bb.0:10798; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10799; GFX9-NEXT:    ;;#ASMSTART10800; GFX9-NEXT:    ; def s[8:13]10801; GFX9-NEXT:    ;;#ASMEND10802; GFX9-NEXT:    s_mov_b32 s12, s1010803; GFX9-NEXT:    s_mov_b32 s13, s1110804; GFX9-NEXT:    s_mov_b32 s14, s1010805; GFX9-NEXT:    s_mov_b32 s15, s1110806; GFX9-NEXT:    ;;#ASMSTART10807; GFX9-NEXT:    ; use s[8:15]10808; GFX9-NEXT:    ;;#ASMEND10809; GFX9-NEXT:    s_setpc_b64 s[30:31]10810  %vec0 = call <3 x ptr> asm "; def $0", "=s"()10811  %vec1 = call <3 x ptr> asm "; def $0", "=s"()10812  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 poison, i32 4, i32 4, i32 4>10813  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)10814  ret void10815}10816 10817define void @s_shuffle_v4p0_v3p0__0_4_4_4() {10818; GFX900-LABEL: s_shuffle_v4p0_v3p0__0_4_4_4:10819; GFX900:       ; %bb.0:10820; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10821; GFX900-NEXT:    ;;#ASMSTART10822; GFX900-NEXT:    ; def s[8:13]10823; GFX900-NEXT:    ;;#ASMEND10824; GFX900-NEXT:    ;;#ASMSTART10825; GFX900-NEXT:    ; def s[12:17]10826; GFX900-NEXT:    ;;#ASMEND10827; GFX900-NEXT:    s_mov_b32 s10, s1410828; GFX900-NEXT:    s_mov_b32 s11, s1510829; GFX900-NEXT:    s_mov_b32 s12, s1410830; GFX900-NEXT:    s_mov_b32 s13, s1510831; GFX900-NEXT:    ;;#ASMSTART10832; GFX900-NEXT:    ; use s[8:15]10833; GFX900-NEXT:    ;;#ASMEND10834; GFX900-NEXT:    s_setpc_b64 s[30:31]10835;10836; GFX90A-LABEL: s_shuffle_v4p0_v3p0__0_4_4_4:10837; GFX90A:       ; %bb.0:10838; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10839; GFX90A-NEXT:    ;;#ASMSTART10840; GFX90A-NEXT:    ; def s[8:13]10841; GFX90A-NEXT:    ;;#ASMEND10842; GFX90A-NEXT:    ;;#ASMSTART10843; GFX90A-NEXT:    ; def s[12:17]10844; GFX90A-NEXT:    ;;#ASMEND10845; GFX90A-NEXT:    s_mov_b32 s10, s1410846; GFX90A-NEXT:    s_mov_b32 s11, s1510847; GFX90A-NEXT:    s_mov_b32 s12, s1410848; GFX90A-NEXT:    s_mov_b32 s13, s1510849; GFX90A-NEXT:    ;;#ASMSTART10850; GFX90A-NEXT:    ; use s[8:15]10851; GFX90A-NEXT:    ;;#ASMEND10852; GFX90A-NEXT:    s_setpc_b64 s[30:31]10853;10854; GFX942-LABEL: s_shuffle_v4p0_v3p0__0_4_4_4:10855; GFX942:       ; %bb.0:10856; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10857; GFX942-NEXT:    ;;#ASMSTART10858; GFX942-NEXT:    ; def s[8:13]10859; GFX942-NEXT:    ;;#ASMEND10860; GFX942-NEXT:    s_nop 010861; GFX942-NEXT:    ;;#ASMSTART10862; GFX942-NEXT:    ; def s[12:17]10863; GFX942-NEXT:    ;;#ASMEND10864; GFX942-NEXT:    s_mov_b32 s10, s1410865; GFX942-NEXT:    s_mov_b32 s11, s1510866; GFX942-NEXT:    s_mov_b32 s12, s1410867; GFX942-NEXT:    s_mov_b32 s13, s1510868; GFX942-NEXT:    ;;#ASMSTART10869; GFX942-NEXT:    ; use s[8:15]10870; GFX942-NEXT:    ;;#ASMEND10871; GFX942-NEXT:    s_setpc_b64 s[30:31]10872  %vec0 = call <3 x ptr> asm "; def $0", "=s"()10873  %vec1 = call <3 x ptr> asm "; def $0", "=s"()10874  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 0, i32 4, i32 4, i32 4>10875  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)10876  ret void10877}10878 10879define void @s_shuffle_v4p0_v3p0__1_4_4_4() {10880; GFX900-LABEL: s_shuffle_v4p0_v3p0__1_4_4_4:10881; GFX900:       ; %bb.0:10882; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10883; GFX900-NEXT:    ;;#ASMSTART10884; GFX900-NEXT:    ; def s[4:9]10885; GFX900-NEXT:    ;;#ASMEND10886; GFX900-NEXT:    ;;#ASMSTART10887; GFX900-NEXT:    ; def s[8:13]10888; GFX900-NEXT:    ;;#ASMEND10889; GFX900-NEXT:    s_mov_b32 s8, s610890; GFX900-NEXT:    s_mov_b32 s9, s710891; GFX900-NEXT:    s_mov_b32 s12, s1010892; GFX900-NEXT:    s_mov_b32 s13, s1110893; GFX900-NEXT:    s_mov_b32 s14, s1010894; GFX900-NEXT:    s_mov_b32 s15, s1110895; GFX900-NEXT:    ;;#ASMSTART10896; GFX900-NEXT:    ; use s[8:15]10897; GFX900-NEXT:    ;;#ASMEND10898; GFX900-NEXT:    s_setpc_b64 s[30:31]10899;10900; GFX90A-LABEL: s_shuffle_v4p0_v3p0__1_4_4_4:10901; GFX90A:       ; %bb.0:10902; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10903; GFX90A-NEXT:    ;;#ASMSTART10904; GFX90A-NEXT:    ; def s[4:9]10905; GFX90A-NEXT:    ;;#ASMEND10906; GFX90A-NEXT:    ;;#ASMSTART10907; GFX90A-NEXT:    ; def s[8:13]10908; GFX90A-NEXT:    ;;#ASMEND10909; GFX90A-NEXT:    s_mov_b32 s8, s610910; GFX90A-NEXT:    s_mov_b32 s9, s710911; GFX90A-NEXT:    s_mov_b32 s12, s1010912; GFX90A-NEXT:    s_mov_b32 s13, s1110913; GFX90A-NEXT:    s_mov_b32 s14, s1010914; GFX90A-NEXT:    s_mov_b32 s15, s1110915; GFX90A-NEXT:    ;;#ASMSTART10916; GFX90A-NEXT:    ; use s[8:15]10917; GFX90A-NEXT:    ;;#ASMEND10918; GFX90A-NEXT:    s_setpc_b64 s[30:31]10919;10920; GFX942-LABEL: s_shuffle_v4p0_v3p0__1_4_4_4:10921; GFX942:       ; %bb.0:10922; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10923; GFX942-NEXT:    ;;#ASMSTART10924; GFX942-NEXT:    ; def s[8:13]10925; GFX942-NEXT:    ;;#ASMEND10926; GFX942-NEXT:    ;;#ASMSTART10927; GFX942-NEXT:    ; def s[0:5]10928; GFX942-NEXT:    ;;#ASMEND10929; GFX942-NEXT:    s_mov_b32 s8, s210930; GFX942-NEXT:    s_mov_b32 s9, s310931; GFX942-NEXT:    s_mov_b32 s12, s1010932; GFX942-NEXT:    s_mov_b32 s13, s1110933; GFX942-NEXT:    s_mov_b32 s14, s1010934; GFX942-NEXT:    s_mov_b32 s15, s1110935; GFX942-NEXT:    ;;#ASMSTART10936; GFX942-NEXT:    ; use s[8:15]10937; GFX942-NEXT:    ;;#ASMEND10938; GFX942-NEXT:    s_setpc_b64 s[30:31]10939  %vec0 = call <3 x ptr> asm "; def $0", "=s"()10940  %vec1 = call <3 x ptr> asm "; def $0", "=s"()10941  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 1, i32 4, i32 4, i32 4>10942  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)10943  ret void10944}10945 10946define void @s_shuffle_v4p0_v3p0__2_4_4_4() {10947; GFX9-LABEL: s_shuffle_v4p0_v3p0__2_4_4_4:10948; GFX9:       ; %bb.0:10949; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10950; GFX9-NEXT:    ;;#ASMSTART10951; GFX9-NEXT:    ; def s[12:17]10952; GFX9-NEXT:    ;;#ASMEND10953; GFX9-NEXT:    ;;#ASMSTART10954; GFX9-NEXT:    ; def s[4:9]10955; GFX9-NEXT:    ;;#ASMEND10956; GFX9-NEXT:    s_mov_b32 s10, s1410957; GFX9-NEXT:    s_mov_b32 s11, s1510958; GFX9-NEXT:    s_mov_b32 s12, s1410959; GFX9-NEXT:    s_mov_b32 s13, s1510960; GFX9-NEXT:    ;;#ASMSTART10961; GFX9-NEXT:    ; use s[8:15]10962; GFX9-NEXT:    ;;#ASMEND10963; GFX9-NEXT:    s_setpc_b64 s[30:31]10964  %vec0 = call <3 x ptr> asm "; def $0", "=s"()10965  %vec1 = call <3 x ptr> asm "; def $0", "=s"()10966  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 2, i32 4, i32 4, i32 4>10967  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)10968  ret void10969}10970 10971define void @s_shuffle_v4p0_v3p0__3_4_4_4() {10972; GFX9-LABEL: s_shuffle_v4p0_v3p0__3_4_4_4:10973; GFX9:       ; %bb.0:10974; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10975; GFX9-NEXT:    ;;#ASMSTART10976; GFX9-NEXT:    ; def s[8:13]10977; GFX9-NEXT:    ;;#ASMEND10978; GFX9-NEXT:    s_mov_b32 s12, s1010979; GFX9-NEXT:    s_mov_b32 s13, s1110980; GFX9-NEXT:    s_mov_b32 s14, s1010981; GFX9-NEXT:    s_mov_b32 s15, s1110982; GFX9-NEXT:    ;;#ASMSTART10983; GFX9-NEXT:    ; use s[8:15]10984; GFX9-NEXT:    ;;#ASMEND10985; GFX9-NEXT:    s_setpc_b64 s[30:31]10986  %vec0 = call <3 x ptr> asm "; def $0", "=s"()10987  %vec1 = call <3 x ptr> asm "; def $0", "=s"()10988  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 3, i32 4, i32 4, i32 4>10989  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)10990  ret void10991}10992 10993define void @s_shuffle_v4p0_v3p0__4_4_4_4() {10994; GFX9-LABEL: s_shuffle_v4p0_v3p0__4_4_4_4:10995; GFX9:       ; %bb.0:10996; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10997; GFX9-NEXT:    ;;#ASMSTART10998; GFX9-NEXT:    ; def s[8:13]10999; GFX9-NEXT:    ;;#ASMEND11000; GFX9-NEXT:    s_mov_b32 s8, s1011001; GFX9-NEXT:    s_mov_b32 s9, s1111002; GFX9-NEXT:    s_mov_b32 s12, s1011003; GFX9-NEXT:    s_mov_b32 s13, s1111004; GFX9-NEXT:    s_mov_b32 s14, s1011005; GFX9-NEXT:    s_mov_b32 s15, s1111006; GFX9-NEXT:    ;;#ASMSTART11007; GFX9-NEXT:    ; use s[8:15]11008; GFX9-NEXT:    ;;#ASMEND11009; GFX9-NEXT:    s_setpc_b64 s[30:31]11010  %vec0 = call <3 x ptr> asm "; def $0", "=s"()11011  %vec1 = call <3 x ptr> asm "; def $0", "=s"()11012  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 4, i32 4, i32 4, i32 4>11013  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)11014  ret void11015}11016 11017define void @s_shuffle_v4p0_v3p0__5_4_4_4() {11018; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_4_4_4:11019; GFX9:       ; %bb.0:11020; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11021; GFX9-NEXT:    ;;#ASMSTART11022; GFX9-NEXT:    ; def s[4:9]11023; GFX9-NEXT:    ;;#ASMEND11024; GFX9-NEXT:    s_mov_b32 s10, s611025; GFX9-NEXT:    s_mov_b32 s11, s711026; GFX9-NEXT:    s_mov_b32 s12, s611027; GFX9-NEXT:    s_mov_b32 s13, s711028; GFX9-NEXT:    s_mov_b32 s14, s611029; GFX9-NEXT:    s_mov_b32 s15, s711030; GFX9-NEXT:    ;;#ASMSTART11031; GFX9-NEXT:    ; use s[8:15]11032; GFX9-NEXT:    ;;#ASMEND11033; GFX9-NEXT:    s_setpc_b64 s[30:31]11034  %vec0 = call <3 x ptr> asm "; def $0", "=s"()11035  %vec1 = call <3 x ptr> asm "; def $0", "=s"()11036  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 4, i32 4, i32 4>11037  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)11038  ret void11039}11040 11041define void @s_shuffle_v4p0_v3p0__5_u_4_4() {11042; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_u_4_4:11043; GFX9:       ; %bb.0:11044; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11045; GFX9-NEXT:    ;;#ASMSTART11046; GFX9-NEXT:    ; def s[4:9]11047; GFX9-NEXT:    ;;#ASMEND11048; GFX9-NEXT:    s_mov_b32 s12, s611049; GFX9-NEXT:    s_mov_b32 s13, s711050; GFX9-NEXT:    s_mov_b32 s14, s611051; GFX9-NEXT:    s_mov_b32 s15, s711052; GFX9-NEXT:    ;;#ASMSTART11053; GFX9-NEXT:    ; use s[8:15]11054; GFX9-NEXT:    ;;#ASMEND11055; GFX9-NEXT:    s_setpc_b64 s[30:31]11056  %vec0 = call <3 x ptr> asm "; def $0", "=s"()11057  %vec1 = call <3 x ptr> asm "; def $0", "=s"()11058  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 poison, i32 4, i32 4>11059  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)11060  ret void11061}11062 11063define void @s_shuffle_v4p0_v3p0__5_0_4_4() {11064; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_0_4_4:11065; GFX900:       ; %bb.0:11066; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11067; GFX900-NEXT:    ;;#ASMSTART11068; GFX900-NEXT:    ; def s[12:17]11069; GFX900-NEXT:    ;;#ASMEND11070; GFX900-NEXT:    ;;#ASMSTART11071; GFX900-NEXT:    ; def s[4:9]11072; GFX900-NEXT:    ;;#ASMEND11073; GFX900-NEXT:    s_mov_b32 s10, s1211074; GFX900-NEXT:    s_mov_b32 s11, s1311075; GFX900-NEXT:    s_mov_b32 s12, s611076; GFX900-NEXT:    s_mov_b32 s13, s711077; GFX900-NEXT:    s_mov_b32 s14, s611078; GFX900-NEXT:    s_mov_b32 s15, s711079; GFX900-NEXT:    ;;#ASMSTART11080; GFX900-NEXT:    ; use s[8:15]11081; GFX900-NEXT:    ;;#ASMEND11082; GFX900-NEXT:    s_setpc_b64 s[30:31]11083;11084; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_0_4_4:11085; GFX90A:       ; %bb.0:11086; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11087; GFX90A-NEXT:    ;;#ASMSTART11088; GFX90A-NEXT:    ; def s[12:17]11089; GFX90A-NEXT:    ;;#ASMEND11090; GFX90A-NEXT:    ;;#ASMSTART11091; GFX90A-NEXT:    ; def s[4:9]11092; GFX90A-NEXT:    ;;#ASMEND11093; GFX90A-NEXT:    s_mov_b32 s10, s1211094; GFX90A-NEXT:    s_mov_b32 s11, s1311095; GFX90A-NEXT:    s_mov_b32 s12, s611096; GFX90A-NEXT:    s_mov_b32 s13, s711097; GFX90A-NEXT:    s_mov_b32 s14, s611098; GFX90A-NEXT:    s_mov_b32 s15, s711099; GFX90A-NEXT:    ;;#ASMSTART11100; GFX90A-NEXT:    ; use s[8:15]11101; GFX90A-NEXT:    ;;#ASMEND11102; GFX90A-NEXT:    s_setpc_b64 s[30:31]11103;11104; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_0_4_4:11105; GFX942:       ; %bb.0:11106; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11107; GFX942-NEXT:    ;;#ASMSTART11108; GFX942-NEXT:    ; def s[0:5]11109; GFX942-NEXT:    ;;#ASMEND11110; GFX942-NEXT:    s_mov_b32 s10, s011111; GFX942-NEXT:    ;;#ASMSTART11112; GFX942-NEXT:    ; def s[4:9]11113; GFX942-NEXT:    ;;#ASMEND11114; GFX942-NEXT:    s_mov_b32 s11, s111115; GFX942-NEXT:    s_mov_b32 s12, s611116; GFX942-NEXT:    s_mov_b32 s13, s711117; GFX942-NEXT:    s_mov_b32 s14, s611118; GFX942-NEXT:    s_mov_b32 s15, s711119; GFX942-NEXT:    ;;#ASMSTART11120; GFX942-NEXT:    ; use s[8:15]11121; GFX942-NEXT:    ;;#ASMEND11122; GFX942-NEXT:    s_setpc_b64 s[30:31]11123  %vec0 = call <3 x ptr> asm "; def $0", "=s"()11124  %vec1 = call <3 x ptr> asm "; def $0", "=s"()11125  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 0, i32 4, i32 4>11126  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)11127  ret void11128}11129 11130define void @s_shuffle_v4p0_v3p0__5_1_4_4() {11131; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_1_4_4:11132; GFX900:       ; %bb.0:11133; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11134; GFX900-NEXT:    ;;#ASMSTART11135; GFX900-NEXT:    ; def s[8:13]11136; GFX900-NEXT:    ;;#ASMEND11137; GFX900-NEXT:    ;;#ASMSTART11138; GFX900-NEXT:    ; def s[4:9]11139; GFX900-NEXT:    ;;#ASMEND11140; GFX900-NEXT:    s_mov_b32 s12, s611141; GFX900-NEXT:    s_mov_b32 s13, s711142; GFX900-NEXT:    s_mov_b32 s14, s611143; GFX900-NEXT:    s_mov_b32 s15, s711144; GFX900-NEXT:    ;;#ASMSTART11145; GFX900-NEXT:    ; use s[8:15]11146; GFX900-NEXT:    ;;#ASMEND11147; GFX900-NEXT:    s_setpc_b64 s[30:31]11148;11149; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_1_4_4:11150; GFX90A:       ; %bb.0:11151; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11152; GFX90A-NEXT:    ;;#ASMSTART11153; GFX90A-NEXT:    ; def s[8:13]11154; GFX90A-NEXT:    ;;#ASMEND11155; GFX90A-NEXT:    ;;#ASMSTART11156; GFX90A-NEXT:    ; def s[4:9]11157; GFX90A-NEXT:    ;;#ASMEND11158; GFX90A-NEXT:    s_mov_b32 s12, s611159; GFX90A-NEXT:    s_mov_b32 s13, s711160; GFX90A-NEXT:    s_mov_b32 s14, s611161; GFX90A-NEXT:    s_mov_b32 s15, s711162; GFX90A-NEXT:    ;;#ASMSTART11163; GFX90A-NEXT:    ; use s[8:15]11164; GFX90A-NEXT:    ;;#ASMEND11165; GFX90A-NEXT:    s_setpc_b64 s[30:31]11166;11167; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_1_4_4:11168; GFX942:       ; %bb.0:11169; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11170; GFX942-NEXT:    ;;#ASMSTART11171; GFX942-NEXT:    ; def s[8:13]11172; GFX942-NEXT:    ;;#ASMEND11173; GFX942-NEXT:    s_nop 011174; GFX942-NEXT:    ;;#ASMSTART11175; GFX942-NEXT:    ; def s[4:9]11176; GFX942-NEXT:    ;;#ASMEND11177; GFX942-NEXT:    s_mov_b32 s12, s611178; GFX942-NEXT:    s_mov_b32 s13, s711179; GFX942-NEXT:    s_mov_b32 s14, s611180; GFX942-NEXT:    s_mov_b32 s15, s711181; GFX942-NEXT:    ;;#ASMSTART11182; GFX942-NEXT:    ; use s[8:15]11183; GFX942-NEXT:    ;;#ASMEND11184; GFX942-NEXT:    s_setpc_b64 s[30:31]11185  %vec0 = call <3 x ptr> asm "; def $0", "=s"()11186  %vec1 = call <3 x ptr> asm "; def $0", "=s"()11187  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 1, i32 4, i32 4>11188  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)11189  ret void11190}11191 11192define void @s_shuffle_v4p0_v3p0__5_2_4_4() {11193; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_2_4_4:11194; GFX900:       ; %bb.0:11195; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11196; GFX900-NEXT:    ;;#ASMSTART11197; GFX900-NEXT:    ; def s[8:13]11198; GFX900-NEXT:    ;;#ASMEND11199; GFX900-NEXT:    ;;#ASMSTART11200; GFX900-NEXT:    ; def s[4:9]11201; GFX900-NEXT:    ;;#ASMEND11202; GFX900-NEXT:    s_mov_b32 s10, s1211203; GFX900-NEXT:    s_mov_b32 s11, s1311204; GFX900-NEXT:    s_mov_b32 s12, s611205; GFX900-NEXT:    s_mov_b32 s13, s711206; GFX900-NEXT:    s_mov_b32 s14, s611207; GFX900-NEXT:    s_mov_b32 s15, s711208; GFX900-NEXT:    ;;#ASMSTART11209; GFX900-NEXT:    ; use s[8:15]11210; GFX900-NEXT:    ;;#ASMEND11211; GFX900-NEXT:    s_setpc_b64 s[30:31]11212;11213; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_2_4_4:11214; GFX90A:       ; %bb.0:11215; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11216; GFX90A-NEXT:    ;;#ASMSTART11217; GFX90A-NEXT:    ; def s[8:13]11218; GFX90A-NEXT:    ;;#ASMEND11219; GFX90A-NEXT:    ;;#ASMSTART11220; GFX90A-NEXT:    ; def s[4:9]11221; GFX90A-NEXT:    ;;#ASMEND11222; GFX90A-NEXT:    s_mov_b32 s10, s1211223; GFX90A-NEXT:    s_mov_b32 s11, s1311224; GFX90A-NEXT:    s_mov_b32 s12, s611225; GFX90A-NEXT:    s_mov_b32 s13, s711226; GFX90A-NEXT:    s_mov_b32 s14, s611227; GFX90A-NEXT:    s_mov_b32 s15, s711228; GFX90A-NEXT:    ;;#ASMSTART11229; GFX90A-NEXT:    ; use s[8:15]11230; GFX90A-NEXT:    ;;#ASMEND11231; GFX90A-NEXT:    s_setpc_b64 s[30:31]11232;11233; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_2_4_4:11234; GFX942:       ; %bb.0:11235; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11236; GFX942-NEXT:    ;;#ASMSTART11237; GFX942-NEXT:    ; def s[8:13]11238; GFX942-NEXT:    ;;#ASMEND11239; GFX942-NEXT:    s_mov_b32 s10, s1211240; GFX942-NEXT:    ;;#ASMSTART11241; GFX942-NEXT:    ; def s[4:9]11242; GFX942-NEXT:    ;;#ASMEND11243; GFX942-NEXT:    s_mov_b32 s11, s1311244; GFX942-NEXT:    s_mov_b32 s12, s611245; GFX942-NEXT:    s_mov_b32 s13, s711246; GFX942-NEXT:    s_mov_b32 s14, s611247; GFX942-NEXT:    s_mov_b32 s15, s711248; GFX942-NEXT:    ;;#ASMSTART11249; GFX942-NEXT:    ; use s[8:15]11250; GFX942-NEXT:    ;;#ASMEND11251; GFX942-NEXT:    s_setpc_b64 s[30:31]11252  %vec0 = call <3 x ptr> asm "; def $0", "=s"()11253  %vec1 = call <3 x ptr> asm "; def $0", "=s"()11254  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 2, i32 4, i32 4>11255  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)11256  ret void11257}11258 11259define void @s_shuffle_v4p0_v3p0__5_3_4_4() {11260; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_3_4_4:11261; GFX9:       ; %bb.0:11262; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11263; GFX9-NEXT:    ;;#ASMSTART11264; GFX9-NEXT:    ; def s[4:9]11265; GFX9-NEXT:    ;;#ASMEND11266; GFX9-NEXT:    s_mov_b32 s10, s411267; GFX9-NEXT:    s_mov_b32 s11, s511268; GFX9-NEXT:    s_mov_b32 s12, s611269; GFX9-NEXT:    s_mov_b32 s13, s711270; GFX9-NEXT:    s_mov_b32 s14, s611271; GFX9-NEXT:    s_mov_b32 s15, s711272; GFX9-NEXT:    ;;#ASMSTART11273; GFX9-NEXT:    ; use s[8:15]11274; GFX9-NEXT:    ;;#ASMEND11275; GFX9-NEXT:    s_setpc_b64 s[30:31]11276  %vec0 = call <3 x ptr> asm "; def $0", "=s"()11277  %vec1 = call <3 x ptr> asm "; def $0", "=s"()11278  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 3, i32 4, i32 4>11279  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)11280  ret void11281}11282 11283define void @s_shuffle_v4p0_v3p0__5_5_4_4() {11284; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_4_4:11285; GFX9:       ; %bb.0:11286; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11287; GFX9-NEXT:    ;;#ASMSTART11288; GFX9-NEXT:    ; def s[4:9]11289; GFX9-NEXT:    ;;#ASMEND11290; GFX9-NEXT:    s_mov_b32 s10, s811291; GFX9-NEXT:    s_mov_b32 s11, s911292; GFX9-NEXT:    s_mov_b32 s12, s611293; GFX9-NEXT:    s_mov_b32 s13, s711294; GFX9-NEXT:    s_mov_b32 s14, s611295; GFX9-NEXT:    s_mov_b32 s15, s711296; GFX9-NEXT:    ;;#ASMSTART11297; GFX9-NEXT:    ; use s[8:15]11298; GFX9-NEXT:    ;;#ASMEND11299; GFX9-NEXT:    s_setpc_b64 s[30:31]11300  %vec0 = call <3 x ptr> asm "; def $0", "=s"()11301  %vec1 = call <3 x ptr> asm "; def $0", "=s"()11302  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 4>11303  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)11304  ret void11305}11306 11307define void @s_shuffle_v4p0_v3p0__5_5_u_4() {11308; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_u_4:11309; GFX9:       ; %bb.0:11310; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11311; GFX9-NEXT:    ;;#ASMSTART11312; GFX9-NEXT:    ; def s[4:9]11313; GFX9-NEXT:    ;;#ASMEND11314; GFX9-NEXT:    s_mov_b32 s10, s811315; GFX9-NEXT:    s_mov_b32 s11, s911316; GFX9-NEXT:    s_mov_b32 s14, s611317; GFX9-NEXT:    s_mov_b32 s15, s711318; GFX9-NEXT:    ;;#ASMSTART11319; GFX9-NEXT:    ; use s[8:15]11320; GFX9-NEXT:    ;;#ASMEND11321; GFX9-NEXT:    s_setpc_b64 s[30:31]11322  %vec0 = call <3 x ptr> asm "; def $0", "=s"()11323  %vec1 = call <3 x ptr> asm "; def $0", "=s"()11324  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 4>11325  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)11326  ret void11327}11328 11329define void @s_shuffle_v4p0_v3p0__5_5_0_4() {11330; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_0_4:11331; GFX9:       ; %bb.0:11332; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11333; GFX9-NEXT:    ;;#ASMSTART11334; GFX9-NEXT:    ; def s[12:17]11335; GFX9-NEXT:    ;;#ASMEND11336; GFX9-NEXT:    ;;#ASMSTART11337; GFX9-NEXT:    ; def s[4:9]11338; GFX9-NEXT:    ;;#ASMEND11339; GFX9-NEXT:    s_mov_b32 s10, s811340; GFX9-NEXT:    s_mov_b32 s11, s911341; GFX9-NEXT:    s_mov_b32 s14, s611342; GFX9-NEXT:    s_mov_b32 s15, s711343; GFX9-NEXT:    ;;#ASMSTART11344; GFX9-NEXT:    ; use s[8:15]11345; GFX9-NEXT:    ;;#ASMEND11346; GFX9-NEXT:    s_setpc_b64 s[30:31]11347  %vec0 = call <3 x ptr> asm "; def $0", "=s"()11348  %vec1 = call <3 x ptr> asm "; def $0", "=s"()11349  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 4>11350  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)11351  ret void11352}11353 11354define void @s_shuffle_v4p0_v3p0__5_5_1_4() {11355; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_5_1_4:11356; GFX900:       ; %bb.0:11357; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11358; GFX900-NEXT:    ;;#ASMSTART11359; GFX900-NEXT:    ; def s[12:17]11360; GFX900-NEXT:    ;;#ASMEND11361; GFX900-NEXT:    ;;#ASMSTART11362; GFX900-NEXT:    ; def s[4:9]11363; GFX900-NEXT:    ;;#ASMEND11364; GFX900-NEXT:    s_mov_b32 s10, s811365; GFX900-NEXT:    s_mov_b32 s11, s911366; GFX900-NEXT:    s_mov_b32 s12, s1411367; GFX900-NEXT:    s_mov_b32 s13, s1511368; GFX900-NEXT:    s_mov_b32 s14, s611369; GFX900-NEXT:    s_mov_b32 s15, s711370; GFX900-NEXT:    ;;#ASMSTART11371; GFX900-NEXT:    ; use s[8:15]11372; GFX900-NEXT:    ;;#ASMEND11373; GFX900-NEXT:    s_setpc_b64 s[30:31]11374;11375; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_5_1_4:11376; GFX90A:       ; %bb.0:11377; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11378; GFX90A-NEXT:    ;;#ASMSTART11379; GFX90A-NEXT:    ; def s[12:17]11380; GFX90A-NEXT:    ;;#ASMEND11381; GFX90A-NEXT:    ;;#ASMSTART11382; GFX90A-NEXT:    ; def s[4:9]11383; GFX90A-NEXT:    ;;#ASMEND11384; GFX90A-NEXT:    s_mov_b32 s10, s811385; GFX90A-NEXT:    s_mov_b32 s11, s911386; GFX90A-NEXT:    s_mov_b32 s12, s1411387; GFX90A-NEXT:    s_mov_b32 s13, s1511388; GFX90A-NEXT:    s_mov_b32 s14, s611389; GFX90A-NEXT:    s_mov_b32 s15, s711390; GFX90A-NEXT:    ;;#ASMSTART11391; GFX90A-NEXT:    ; use s[8:15]11392; GFX90A-NEXT:    ;;#ASMEND11393; GFX90A-NEXT:    s_setpc_b64 s[30:31]11394;11395; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_5_1_4:11396; GFX942:       ; %bb.0:11397; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11398; GFX942-NEXT:    ;;#ASMSTART11399; GFX942-NEXT:    ; def s[0:5]11400; GFX942-NEXT:    ;;#ASMEND11401; GFX942-NEXT:    s_mov_b32 s12, s211402; GFX942-NEXT:    ;;#ASMSTART11403; GFX942-NEXT:    ; def s[4:9]11404; GFX942-NEXT:    ;;#ASMEND11405; GFX942-NEXT:    s_mov_b32 s10, s811406; GFX942-NEXT:    s_mov_b32 s11, s911407; GFX942-NEXT:    s_mov_b32 s13, s311408; GFX942-NEXT:    s_mov_b32 s14, s611409; GFX942-NEXT:    s_mov_b32 s15, s711410; GFX942-NEXT:    ;;#ASMSTART11411; GFX942-NEXT:    ; use s[8:15]11412; GFX942-NEXT:    ;;#ASMEND11413; GFX942-NEXT:    s_setpc_b64 s[30:31]11414  %vec0 = call <3 x ptr> asm "; def $0", "=s"()11415  %vec1 = call <3 x ptr> asm "; def $0", "=s"()11416  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 4>11417  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)11418  ret void11419}11420 11421define void @s_shuffle_v4p0_v3p0__5_5_2_4() {11422; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_5_2_4:11423; GFX900:       ; %bb.0:11424; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11425; GFX900-NEXT:    ;;#ASMSTART11426; GFX900-NEXT:    ; def s[8:13]11427; GFX900-NEXT:    ;;#ASMEND11428; GFX900-NEXT:    ;;#ASMSTART11429; GFX900-NEXT:    ; def s[4:9]11430; GFX900-NEXT:    ;;#ASMEND11431; GFX900-NEXT:    s_mov_b32 s10, s811432; GFX900-NEXT:    s_mov_b32 s11, s911433; GFX900-NEXT:    s_mov_b32 s14, s611434; GFX900-NEXT:    s_mov_b32 s15, s711435; GFX900-NEXT:    ;;#ASMSTART11436; GFX900-NEXT:    ; use s[8:15]11437; GFX900-NEXT:    ;;#ASMEND11438; GFX900-NEXT:    s_setpc_b64 s[30:31]11439;11440; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_5_2_4:11441; GFX90A:       ; %bb.0:11442; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11443; GFX90A-NEXT:    ;;#ASMSTART11444; GFX90A-NEXT:    ; def s[8:13]11445; GFX90A-NEXT:    ;;#ASMEND11446; GFX90A-NEXT:    ;;#ASMSTART11447; GFX90A-NEXT:    ; def s[4:9]11448; GFX90A-NEXT:    ;;#ASMEND11449; GFX90A-NEXT:    s_mov_b32 s10, s811450; GFX90A-NEXT:    s_mov_b32 s11, s911451; GFX90A-NEXT:    s_mov_b32 s14, s611452; GFX90A-NEXT:    s_mov_b32 s15, s711453; GFX90A-NEXT:    ;;#ASMSTART11454; GFX90A-NEXT:    ; use s[8:15]11455; GFX90A-NEXT:    ;;#ASMEND11456; GFX90A-NEXT:    s_setpc_b64 s[30:31]11457;11458; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_5_2_4:11459; GFX942:       ; %bb.0:11460; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11461; GFX942-NEXT:    ;;#ASMSTART11462; GFX942-NEXT:    ; def s[8:13]11463; GFX942-NEXT:    ;;#ASMEND11464; GFX942-NEXT:    s_nop 011465; GFX942-NEXT:    ;;#ASMSTART11466; GFX942-NEXT:    ; def s[4:9]11467; GFX942-NEXT:    ;;#ASMEND11468; GFX942-NEXT:    s_mov_b32 s10, s811469; GFX942-NEXT:    s_mov_b32 s11, s911470; GFX942-NEXT:    s_mov_b32 s14, s611471; GFX942-NEXT:    s_mov_b32 s15, s711472; GFX942-NEXT:    ;;#ASMSTART11473; GFX942-NEXT:    ; use s[8:15]11474; GFX942-NEXT:    ;;#ASMEND11475; GFX942-NEXT:    s_setpc_b64 s[30:31]11476  %vec0 = call <3 x ptr> asm "; def $0", "=s"()11477  %vec1 = call <3 x ptr> asm "; def $0", "=s"()11478  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 4>11479  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)11480  ret void11481}11482 11483define void @s_shuffle_v4p0_v3p0__5_5_3_4() {11484; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_3_4:11485; GFX9:       ; %bb.0:11486; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11487; GFX9-NEXT:    ;;#ASMSTART11488; GFX9-NEXT:    ; def s[4:9]11489; GFX9-NEXT:    ;;#ASMEND11490; GFX9-NEXT:    s_mov_b32 s10, s811491; GFX9-NEXT:    s_mov_b32 s11, s911492; GFX9-NEXT:    s_mov_b32 s12, s411493; GFX9-NEXT:    s_mov_b32 s13, s511494; GFX9-NEXT:    s_mov_b32 s14, s611495; GFX9-NEXT:    s_mov_b32 s15, s711496; GFX9-NEXT:    ;;#ASMSTART11497; GFX9-NEXT:    ; use s[8:15]11498; GFX9-NEXT:    ;;#ASMEND11499; GFX9-NEXT:    s_setpc_b64 s[30:31]11500  %vec0 = call <3 x ptr> asm "; def $0", "=s"()11501  %vec1 = call <3 x ptr> asm "; def $0", "=s"()11502  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 4>11503  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)11504  ret void11505}11506 11507define void @s_shuffle_v4p0_v3p0__u_5_5_5() {11508; GFX9-LABEL: s_shuffle_v4p0_v3p0__u_5_5_5:11509; GFX9:       ; %bb.0:11510; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11511; GFX9-NEXT:    ;;#ASMSTART11512; GFX9-NEXT:    ; def s[8:13]11513; GFX9-NEXT:    ;;#ASMEND11514; GFX9-NEXT:    s_mov_b32 s10, s1211515; GFX9-NEXT:    s_mov_b32 s11, s1311516; GFX9-NEXT:    s_mov_b32 s14, s1211517; GFX9-NEXT:    s_mov_b32 s15, s1311518; GFX9-NEXT:    ;;#ASMSTART11519; GFX9-NEXT:    ; use s[8:15]11520; GFX9-NEXT:    ;;#ASMEND11521; GFX9-NEXT:    s_setpc_b64 s[30:31]11522  %vec0 = call <3 x ptr> asm "; def $0", "=s"()11523  %vec1 = call <3 x ptr> asm "; def $0", "=s"()11524  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 poison, i32 5, i32 5, i32 5>11525  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)11526  ret void11527}11528 11529define void @s_shuffle_v4p0_v3p0__0_5_5_5() {11530; GFX900-LABEL: s_shuffle_v4p0_v3p0__0_5_5_5:11531; GFX900:       ; %bb.0:11532; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11533; GFX900-NEXT:    ;;#ASMSTART11534; GFX900-NEXT:    ; def s[8:13]11535; GFX900-NEXT:    ;;#ASMEND11536; GFX900-NEXT:    ;;#ASMSTART11537; GFX900-NEXT:    ; def s[12:17]11538; GFX900-NEXT:    ;;#ASMEND11539; GFX900-NEXT:    s_mov_b32 s10, s1611540; GFX900-NEXT:    s_mov_b32 s11, s1711541; GFX900-NEXT:    s_mov_b32 s12, s1611542; GFX900-NEXT:    s_mov_b32 s13, s1711543; GFX900-NEXT:    s_mov_b32 s14, s1611544; GFX900-NEXT:    s_mov_b32 s15, s1711545; GFX900-NEXT:    ;;#ASMSTART11546; GFX900-NEXT:    ; use s[8:15]11547; GFX900-NEXT:    ;;#ASMEND11548; GFX900-NEXT:    s_setpc_b64 s[30:31]11549;11550; GFX90A-LABEL: s_shuffle_v4p0_v3p0__0_5_5_5:11551; GFX90A:       ; %bb.0:11552; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11553; GFX90A-NEXT:    ;;#ASMSTART11554; GFX90A-NEXT:    ; def s[8:13]11555; GFX90A-NEXT:    ;;#ASMEND11556; GFX90A-NEXT:    ;;#ASMSTART11557; GFX90A-NEXT:    ; def s[12:17]11558; GFX90A-NEXT:    ;;#ASMEND11559; GFX90A-NEXT:    s_mov_b32 s10, s1611560; GFX90A-NEXT:    s_mov_b32 s11, s1711561; GFX90A-NEXT:    s_mov_b32 s12, s1611562; GFX90A-NEXT:    s_mov_b32 s13, s1711563; GFX90A-NEXT:    s_mov_b32 s14, s1611564; GFX90A-NEXT:    s_mov_b32 s15, s1711565; GFX90A-NEXT:    ;;#ASMSTART11566; GFX90A-NEXT:    ; use s[8:15]11567; GFX90A-NEXT:    ;;#ASMEND11568; GFX90A-NEXT:    s_setpc_b64 s[30:31]11569;11570; GFX942-LABEL: s_shuffle_v4p0_v3p0__0_5_5_5:11571; GFX942:       ; %bb.0:11572; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11573; GFX942-NEXT:    ;;#ASMSTART11574; GFX942-NEXT:    ; def s[8:13]11575; GFX942-NEXT:    ;;#ASMEND11576; GFX942-NEXT:    ;;#ASMSTART11577; GFX942-NEXT:    ; def s[0:5]11578; GFX942-NEXT:    ;;#ASMEND11579; GFX942-NEXT:    s_mov_b32 s10, s411580; GFX942-NEXT:    s_mov_b32 s11, s511581; GFX942-NEXT:    s_mov_b32 s12, s411582; GFX942-NEXT:    s_mov_b32 s13, s511583; GFX942-NEXT:    s_mov_b32 s14, s411584; GFX942-NEXT:    s_mov_b32 s15, s511585; GFX942-NEXT:    ;;#ASMSTART11586; GFX942-NEXT:    ; use s[8:15]11587; GFX942-NEXT:    ;;#ASMEND11588; GFX942-NEXT:    s_setpc_b64 s[30:31]11589  %vec0 = call <3 x ptr> asm "; def $0", "=s"()11590  %vec1 = call <3 x ptr> asm "; def $0", "=s"()11591  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 0, i32 5, i32 5, i32 5>11592  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)11593  ret void11594}11595 11596define void @s_shuffle_v4p0_v3p0__1_5_5_5() {11597; GFX900-LABEL: s_shuffle_v4p0_v3p0__1_5_5_5:11598; GFX900:       ; %bb.0:11599; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11600; GFX900-NEXT:    ;;#ASMSTART11601; GFX900-NEXT:    ; def s[4:9]11602; GFX900-NEXT:    ;;#ASMEND11603; GFX900-NEXT:    ;;#ASMSTART11604; GFX900-NEXT:    ; def s[8:13]11605; GFX900-NEXT:    ;;#ASMEND11606; GFX900-NEXT:    s_mov_b32 s8, s611607; GFX900-NEXT:    s_mov_b32 s9, s711608; GFX900-NEXT:    s_mov_b32 s10, s1211609; GFX900-NEXT:    s_mov_b32 s11, s1311610; GFX900-NEXT:    s_mov_b32 s14, s1211611; GFX900-NEXT:    s_mov_b32 s15, s1311612; GFX900-NEXT:    ;;#ASMSTART11613; GFX900-NEXT:    ; use s[8:15]11614; GFX900-NEXT:    ;;#ASMEND11615; GFX900-NEXT:    s_setpc_b64 s[30:31]11616;11617; GFX90A-LABEL: s_shuffle_v4p0_v3p0__1_5_5_5:11618; GFX90A:       ; %bb.0:11619; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11620; GFX90A-NEXT:    ;;#ASMSTART11621; GFX90A-NEXT:    ; def s[4:9]11622; GFX90A-NEXT:    ;;#ASMEND11623; GFX90A-NEXT:    ;;#ASMSTART11624; GFX90A-NEXT:    ; def s[8:13]11625; GFX90A-NEXT:    ;;#ASMEND11626; GFX90A-NEXT:    s_mov_b32 s8, s611627; GFX90A-NEXT:    s_mov_b32 s9, s711628; GFX90A-NEXT:    s_mov_b32 s10, s1211629; GFX90A-NEXT:    s_mov_b32 s11, s1311630; GFX90A-NEXT:    s_mov_b32 s14, s1211631; GFX90A-NEXT:    s_mov_b32 s15, s1311632; GFX90A-NEXT:    ;;#ASMSTART11633; GFX90A-NEXT:    ; use s[8:15]11634; GFX90A-NEXT:    ;;#ASMEND11635; GFX90A-NEXT:    s_setpc_b64 s[30:31]11636;11637; GFX942-LABEL: s_shuffle_v4p0_v3p0__1_5_5_5:11638; GFX942:       ; %bb.0:11639; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11640; GFX942-NEXT:    ;;#ASMSTART11641; GFX942-NEXT:    ; def s[8:13]11642; GFX942-NEXT:    ;;#ASMEND11643; GFX942-NEXT:    ;;#ASMSTART11644; GFX942-NEXT:    ; def s[0:5]11645; GFX942-NEXT:    ;;#ASMEND11646; GFX942-NEXT:    s_mov_b32 s8, s211647; GFX942-NEXT:    s_mov_b32 s9, s311648; GFX942-NEXT:    s_mov_b32 s10, s1211649; GFX942-NEXT:    s_mov_b32 s11, s1311650; GFX942-NEXT:    s_mov_b32 s14, s1211651; GFX942-NEXT:    s_mov_b32 s15, s1311652; GFX942-NEXT:    ;;#ASMSTART11653; GFX942-NEXT:    ; use s[8:15]11654; GFX942-NEXT:    ;;#ASMEND11655; GFX942-NEXT:    s_setpc_b64 s[30:31]11656  %vec0 = call <3 x ptr> asm "; def $0", "=s"()11657  %vec1 = call <3 x ptr> asm "; def $0", "=s"()11658  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 1, i32 5, i32 5, i32 5>11659  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)11660  ret void11661}11662 11663define void @s_shuffle_v4p0_v3p0__2_5_5_5() {11664; GFX900-LABEL: s_shuffle_v4p0_v3p0__2_5_5_5:11665; GFX900:       ; %bb.0:11666; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11667; GFX900-NEXT:    ;;#ASMSTART11668; GFX900-NEXT:    ; def s[12:17]11669; GFX900-NEXT:    ;;#ASMEND11670; GFX900-NEXT:    ;;#ASMSTART11671; GFX900-NEXT:    ; def s[4:9]11672; GFX900-NEXT:    ;;#ASMEND11673; GFX900-NEXT:    s_mov_b32 s10, s1611674; GFX900-NEXT:    s_mov_b32 s11, s1711675; GFX900-NEXT:    s_mov_b32 s12, s1611676; GFX900-NEXT:    s_mov_b32 s13, s1711677; GFX900-NEXT:    s_mov_b32 s14, s1611678; GFX900-NEXT:    s_mov_b32 s15, s1711679; GFX900-NEXT:    ;;#ASMSTART11680; GFX900-NEXT:    ; use s[8:15]11681; GFX900-NEXT:    ;;#ASMEND11682; GFX900-NEXT:    s_setpc_b64 s[30:31]11683;11684; GFX90A-LABEL: s_shuffle_v4p0_v3p0__2_5_5_5:11685; GFX90A:       ; %bb.0:11686; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11687; GFX90A-NEXT:    ;;#ASMSTART11688; GFX90A-NEXT:    ; def s[12:17]11689; GFX90A-NEXT:    ;;#ASMEND11690; GFX90A-NEXT:    ;;#ASMSTART11691; GFX90A-NEXT:    ; def s[4:9]11692; GFX90A-NEXT:    ;;#ASMEND11693; GFX90A-NEXT:    s_mov_b32 s10, s1611694; GFX90A-NEXT:    s_mov_b32 s11, s1711695; GFX90A-NEXT:    s_mov_b32 s12, s1611696; GFX90A-NEXT:    s_mov_b32 s13, s1711697; GFX90A-NEXT:    s_mov_b32 s14, s1611698; GFX90A-NEXT:    s_mov_b32 s15, s1711699; GFX90A-NEXT:    ;;#ASMSTART11700; GFX90A-NEXT:    ; use s[8:15]11701; GFX90A-NEXT:    ;;#ASMEND11702; GFX90A-NEXT:    s_setpc_b64 s[30:31]11703;11704; GFX942-LABEL: s_shuffle_v4p0_v3p0__2_5_5_5:11705; GFX942:       ; %bb.0:11706; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11707; GFX942-NEXT:    ;;#ASMSTART11708; GFX942-NEXT:    ; def s[4:9]11709; GFX942-NEXT:    ;;#ASMEND11710; GFX942-NEXT:    s_nop 011711; GFX942-NEXT:    ;;#ASMSTART11712; GFX942-NEXT:    ; def s[0:5]11713; GFX942-NEXT:    ;;#ASMEND11714; GFX942-NEXT:    s_mov_b32 s10, s411715; GFX942-NEXT:    s_mov_b32 s11, s511716; GFX942-NEXT:    s_mov_b32 s12, s411717; GFX942-NEXT:    s_mov_b32 s13, s511718; GFX942-NEXT:    s_mov_b32 s14, s411719; GFX942-NEXT:    s_mov_b32 s15, s511720; GFX942-NEXT:    ;;#ASMSTART11721; GFX942-NEXT:    ; use s[8:15]11722; GFX942-NEXT:    ;;#ASMEND11723; GFX942-NEXT:    s_setpc_b64 s[30:31]11724  %vec0 = call <3 x ptr> asm "; def $0", "=s"()11725  %vec1 = call <3 x ptr> asm "; def $0", "=s"()11726  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 2, i32 5, i32 5, i32 5>11727  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)11728  ret void11729}11730 11731define void @s_shuffle_v4p0_v3p0__3_5_5_5() {11732; GFX9-LABEL: s_shuffle_v4p0_v3p0__3_5_5_5:11733; GFX9:       ; %bb.0:11734; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11735; GFX9-NEXT:    ;;#ASMSTART11736; GFX9-NEXT:    ; def s[8:13]11737; GFX9-NEXT:    ;;#ASMEND11738; GFX9-NEXT:    s_mov_b32 s10, s1211739; GFX9-NEXT:    s_mov_b32 s11, s1311740; GFX9-NEXT:    s_mov_b32 s14, s1211741; GFX9-NEXT:    s_mov_b32 s15, s1311742; GFX9-NEXT:    ;;#ASMSTART11743; GFX9-NEXT:    ; use s[8:15]11744; GFX9-NEXT:    ;;#ASMEND11745; GFX9-NEXT:    s_setpc_b64 s[30:31]11746  %vec0 = call <3 x ptr> asm "; def $0", "=s"()11747  %vec1 = call <3 x ptr> asm "; def $0", "=s"()11748  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 3, i32 5, i32 5, i32 5>11749  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)11750  ret void11751}11752 11753define void @s_shuffle_v4p0_v3p0__4_5_5_5() {11754; GFX9-LABEL: s_shuffle_v4p0_v3p0__4_5_5_5:11755; GFX9:       ; %bb.0:11756; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11757; GFX9-NEXT:    ;;#ASMSTART11758; GFX9-NEXT:    ; def s[8:13]11759; GFX9-NEXT:    ;;#ASMEND11760; GFX9-NEXT:    s_mov_b32 s8, s1011761; GFX9-NEXT:    s_mov_b32 s9, s1111762; GFX9-NEXT:    s_mov_b32 s10, s1211763; GFX9-NEXT:    s_mov_b32 s11, s1311764; GFX9-NEXT:    s_mov_b32 s14, s1211765; GFX9-NEXT:    s_mov_b32 s15, s1311766; GFX9-NEXT:    ;;#ASMSTART11767; GFX9-NEXT:    ; use s[8:15]11768; GFX9-NEXT:    ;;#ASMEND11769; GFX9-NEXT:    s_setpc_b64 s[30:31]11770  %vec0 = call <3 x ptr> asm "; def $0", "=s"()11771  %vec1 = call <3 x ptr> asm "; def $0", "=s"()11772  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 4, i32 5, i32 5, i32 5>11773  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)11774  ret void11775}11776 11777define void @s_shuffle_v4p0_v3p0__5_u_5_5() {11778; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_u_5_5:11779; GFX9:       ; %bb.0:11780; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11781; GFX9-NEXT:    ;;#ASMSTART11782; GFX9-NEXT:    ; def s[4:9]11783; GFX9-NEXT:    ;;#ASMEND11784; GFX9-NEXT:    s_mov_b32 s12, s811785; GFX9-NEXT:    s_mov_b32 s13, s911786; GFX9-NEXT:    s_mov_b32 s14, s811787; GFX9-NEXT:    s_mov_b32 s15, s911788; GFX9-NEXT:    ;;#ASMSTART11789; GFX9-NEXT:    ; use s[8:15]11790; GFX9-NEXT:    ;;#ASMEND11791; GFX9-NEXT:    s_setpc_b64 s[30:31]11792  %vec0 = call <3 x ptr> asm "; def $0", "=s"()11793  %vec1 = call <3 x ptr> asm "; def $0", "=s"()11794  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 poison, i32 5, i32 5>11795  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)11796  ret void11797}11798 11799define void @s_shuffle_v4p0_v3p0__5_0_5_5() {11800; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_0_5_5:11801; GFX900:       ; %bb.0:11802; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11803; GFX900-NEXT:    ;;#ASMSTART11804; GFX900-NEXT:    ; def s[12:17]11805; GFX900-NEXT:    ;;#ASMEND11806; GFX900-NEXT:    ;;#ASMSTART11807; GFX900-NEXT:    ; def s[4:9]11808; GFX900-NEXT:    ;;#ASMEND11809; GFX900-NEXT:    s_mov_b32 s10, s1211810; GFX900-NEXT:    s_mov_b32 s11, s1311811; GFX900-NEXT:    s_mov_b32 s12, s811812; GFX900-NEXT:    s_mov_b32 s13, s911813; GFX900-NEXT:    s_mov_b32 s14, s811814; GFX900-NEXT:    s_mov_b32 s15, s911815; GFX900-NEXT:    ;;#ASMSTART11816; GFX900-NEXT:    ; use s[8:15]11817; GFX900-NEXT:    ;;#ASMEND11818; GFX900-NEXT:    s_setpc_b64 s[30:31]11819;11820; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_0_5_5:11821; GFX90A:       ; %bb.0:11822; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11823; GFX90A-NEXT:    ;;#ASMSTART11824; GFX90A-NEXT:    ; def s[12:17]11825; GFX90A-NEXT:    ;;#ASMEND11826; GFX90A-NEXT:    ;;#ASMSTART11827; GFX90A-NEXT:    ; def s[4:9]11828; GFX90A-NEXT:    ;;#ASMEND11829; GFX90A-NEXT:    s_mov_b32 s10, s1211830; GFX90A-NEXT:    s_mov_b32 s11, s1311831; GFX90A-NEXT:    s_mov_b32 s12, s811832; GFX90A-NEXT:    s_mov_b32 s13, s911833; GFX90A-NEXT:    s_mov_b32 s14, s811834; GFX90A-NEXT:    s_mov_b32 s15, s911835; GFX90A-NEXT:    ;;#ASMSTART11836; GFX90A-NEXT:    ; use s[8:15]11837; GFX90A-NEXT:    ;;#ASMEND11838; GFX90A-NEXT:    s_setpc_b64 s[30:31]11839;11840; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_0_5_5:11841; GFX942:       ; %bb.0:11842; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11843; GFX942-NEXT:    ;;#ASMSTART11844; GFX942-NEXT:    ; def s[0:5]11845; GFX942-NEXT:    ;;#ASMEND11846; GFX942-NEXT:    s_mov_b32 s10, s011847; GFX942-NEXT:    ;;#ASMSTART11848; GFX942-NEXT:    ; def s[4:9]11849; GFX942-NEXT:    ;;#ASMEND11850; GFX942-NEXT:    s_mov_b32 s11, s111851; GFX942-NEXT:    s_mov_b32 s12, s811852; GFX942-NEXT:    s_mov_b32 s13, s911853; GFX942-NEXT:    s_mov_b32 s14, s811854; GFX942-NEXT:    s_mov_b32 s15, s911855; GFX942-NEXT:    ;;#ASMSTART11856; GFX942-NEXT:    ; use s[8:15]11857; GFX942-NEXT:    ;;#ASMEND11858; GFX942-NEXT:    s_setpc_b64 s[30:31]11859  %vec0 = call <3 x ptr> asm "; def $0", "=s"()11860  %vec1 = call <3 x ptr> asm "; def $0", "=s"()11861  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 0, i32 5, i32 5>11862  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)11863  ret void11864}11865 11866define void @s_shuffle_v4p0_v3p0__5_1_5_5() {11867; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_1_5_5:11868; GFX900:       ; %bb.0:11869; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11870; GFX900-NEXT:    ;;#ASMSTART11871; GFX900-NEXT:    ; def s[8:13]11872; GFX900-NEXT:    ;;#ASMEND11873; GFX900-NEXT:    ;;#ASMSTART11874; GFX900-NEXT:    ; def s[4:9]11875; GFX900-NEXT:    ;;#ASMEND11876; GFX900-NEXT:    s_mov_b32 s12, s811877; GFX900-NEXT:    s_mov_b32 s13, s911878; GFX900-NEXT:    s_mov_b32 s14, s811879; GFX900-NEXT:    s_mov_b32 s15, s911880; GFX900-NEXT:    ;;#ASMSTART11881; GFX900-NEXT:    ; use s[8:15]11882; GFX900-NEXT:    ;;#ASMEND11883; GFX900-NEXT:    s_setpc_b64 s[30:31]11884;11885; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_1_5_5:11886; GFX90A:       ; %bb.0:11887; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11888; GFX90A-NEXT:    ;;#ASMSTART11889; GFX90A-NEXT:    ; def s[8:13]11890; GFX90A-NEXT:    ;;#ASMEND11891; GFX90A-NEXT:    ;;#ASMSTART11892; GFX90A-NEXT:    ; def s[4:9]11893; GFX90A-NEXT:    ;;#ASMEND11894; GFX90A-NEXT:    s_mov_b32 s12, s811895; GFX90A-NEXT:    s_mov_b32 s13, s911896; GFX90A-NEXT:    s_mov_b32 s14, s811897; GFX90A-NEXT:    s_mov_b32 s15, s911898; GFX90A-NEXT:    ;;#ASMSTART11899; GFX90A-NEXT:    ; use s[8:15]11900; GFX90A-NEXT:    ;;#ASMEND11901; GFX90A-NEXT:    s_setpc_b64 s[30:31]11902;11903; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_1_5_5:11904; GFX942:       ; %bb.0:11905; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11906; GFX942-NEXT:    ;;#ASMSTART11907; GFX942-NEXT:    ; def s[8:13]11908; GFX942-NEXT:    ;;#ASMEND11909; GFX942-NEXT:    s_nop 011910; GFX942-NEXT:    ;;#ASMSTART11911; GFX942-NEXT:    ; def s[4:9]11912; GFX942-NEXT:    ;;#ASMEND11913; GFX942-NEXT:    s_mov_b32 s12, s811914; GFX942-NEXT:    s_mov_b32 s13, s911915; GFX942-NEXT:    s_mov_b32 s14, s811916; GFX942-NEXT:    s_mov_b32 s15, s911917; GFX942-NEXT:    ;;#ASMSTART11918; GFX942-NEXT:    ; use s[8:15]11919; GFX942-NEXT:    ;;#ASMEND11920; GFX942-NEXT:    s_setpc_b64 s[30:31]11921  %vec0 = call <3 x ptr> asm "; def $0", "=s"()11922  %vec1 = call <3 x ptr> asm "; def $0", "=s"()11923  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 1, i32 5, i32 5>11924  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)11925  ret void11926}11927 11928define void @s_shuffle_v4p0_v3p0__5_2_5_5() {11929; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_2_5_5:11930; GFX900:       ; %bb.0:11931; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11932; GFX900-NEXT:    ;;#ASMSTART11933; GFX900-NEXT:    ; def s[8:13]11934; GFX900-NEXT:    ;;#ASMEND11935; GFX900-NEXT:    ;;#ASMSTART11936; GFX900-NEXT:    ; def s[4:9]11937; GFX900-NEXT:    ;;#ASMEND11938; GFX900-NEXT:    s_mov_b32 s10, s1211939; GFX900-NEXT:    s_mov_b32 s11, s1311940; GFX900-NEXT:    s_mov_b32 s12, s811941; GFX900-NEXT:    s_mov_b32 s13, s911942; GFX900-NEXT:    s_mov_b32 s14, s811943; GFX900-NEXT:    s_mov_b32 s15, s911944; GFX900-NEXT:    ;;#ASMSTART11945; GFX900-NEXT:    ; use s[8:15]11946; GFX900-NEXT:    ;;#ASMEND11947; GFX900-NEXT:    s_setpc_b64 s[30:31]11948;11949; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_2_5_5:11950; GFX90A:       ; %bb.0:11951; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11952; GFX90A-NEXT:    ;;#ASMSTART11953; GFX90A-NEXT:    ; def s[8:13]11954; GFX90A-NEXT:    ;;#ASMEND11955; GFX90A-NEXT:    ;;#ASMSTART11956; GFX90A-NEXT:    ; def s[4:9]11957; GFX90A-NEXT:    ;;#ASMEND11958; GFX90A-NEXT:    s_mov_b32 s10, s1211959; GFX90A-NEXT:    s_mov_b32 s11, s1311960; GFX90A-NEXT:    s_mov_b32 s12, s811961; GFX90A-NEXT:    s_mov_b32 s13, s911962; GFX90A-NEXT:    s_mov_b32 s14, s811963; GFX90A-NEXT:    s_mov_b32 s15, s911964; GFX90A-NEXT:    ;;#ASMSTART11965; GFX90A-NEXT:    ; use s[8:15]11966; GFX90A-NEXT:    ;;#ASMEND11967; GFX90A-NEXT:    s_setpc_b64 s[30:31]11968;11969; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_2_5_5:11970; GFX942:       ; %bb.0:11971; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11972; GFX942-NEXT:    ;;#ASMSTART11973; GFX942-NEXT:    ; def s[8:13]11974; GFX942-NEXT:    ;;#ASMEND11975; GFX942-NEXT:    s_mov_b32 s10, s1211976; GFX942-NEXT:    ;;#ASMSTART11977; GFX942-NEXT:    ; def s[4:9]11978; GFX942-NEXT:    ;;#ASMEND11979; GFX942-NEXT:    s_mov_b32 s11, s1311980; GFX942-NEXT:    s_mov_b32 s12, s811981; GFX942-NEXT:    s_mov_b32 s13, s911982; GFX942-NEXT:    s_mov_b32 s14, s811983; GFX942-NEXT:    s_mov_b32 s15, s911984; GFX942-NEXT:    ;;#ASMSTART11985; GFX942-NEXT:    ; use s[8:15]11986; GFX942-NEXT:    ;;#ASMEND11987; GFX942-NEXT:    s_setpc_b64 s[30:31]11988  %vec0 = call <3 x ptr> asm "; def $0", "=s"()11989  %vec1 = call <3 x ptr> asm "; def $0", "=s"()11990  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 2, i32 5, i32 5>11991  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)11992  ret void11993}11994 11995define void @s_shuffle_v4p0_v3p0__5_3_5_5() {11996; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_3_5_5:11997; GFX9:       ; %bb.0:11998; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11999; GFX9-NEXT:    ;;#ASMSTART12000; GFX9-NEXT:    ; def s[4:9]12001; GFX9-NEXT:    ;;#ASMEND12002; GFX9-NEXT:    s_mov_b32 s10, s412003; GFX9-NEXT:    s_mov_b32 s11, s512004; GFX9-NEXT:    s_mov_b32 s12, s812005; GFX9-NEXT:    s_mov_b32 s13, s912006; GFX9-NEXT:    s_mov_b32 s14, s812007; GFX9-NEXT:    s_mov_b32 s15, s912008; GFX9-NEXT:    ;;#ASMSTART12009; GFX9-NEXT:    ; use s[8:15]12010; GFX9-NEXT:    ;;#ASMEND12011; GFX9-NEXT:    s_setpc_b64 s[30:31]12012  %vec0 = call <3 x ptr> asm "; def $0", "=s"()12013  %vec1 = call <3 x ptr> asm "; def $0", "=s"()12014  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 3, i32 5, i32 5>12015  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)12016  ret void12017}12018 12019define void @s_shuffle_v4p0_v3p0__5_4_5_5() {12020; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_4_5_5:12021; GFX9:       ; %bb.0:12022; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12023; GFX9-NEXT:    ;;#ASMSTART12024; GFX9-NEXT:    ; def s[4:9]12025; GFX9-NEXT:    ;;#ASMEND12026; GFX9-NEXT:    s_mov_b32 s10, s612027; GFX9-NEXT:    s_mov_b32 s11, s712028; GFX9-NEXT:    s_mov_b32 s12, s812029; GFX9-NEXT:    s_mov_b32 s13, s912030; GFX9-NEXT:    s_mov_b32 s14, s812031; GFX9-NEXT:    s_mov_b32 s15, s912032; GFX9-NEXT:    ;;#ASMSTART12033; GFX9-NEXT:    ; use s[8:15]12034; GFX9-NEXT:    ;;#ASMEND12035; GFX9-NEXT:    s_setpc_b64 s[30:31]12036  %vec0 = call <3 x ptr> asm "; def $0", "=s"()12037  %vec1 = call <3 x ptr> asm "; def $0", "=s"()12038  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 4, i32 5, i32 5>12039  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)12040  ret void12041}12042 12043define void @s_shuffle_v4p0_v3p0__5_5_u_5() {12044; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_u_5:12045; GFX9:       ; %bb.0:12046; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12047; GFX9-NEXT:    ;;#ASMSTART12048; GFX9-NEXT:    ; def s[4:9]12049; GFX9-NEXT:    ;;#ASMEND12050; GFX9-NEXT:    s_mov_b32 s10, s812051; GFX9-NEXT:    s_mov_b32 s11, s912052; GFX9-NEXT:    s_mov_b32 s14, s812053; GFX9-NEXT:    s_mov_b32 s15, s912054; GFX9-NEXT:    ;;#ASMSTART12055; GFX9-NEXT:    ; use s[8:15]12056; GFX9-NEXT:    ;;#ASMEND12057; GFX9-NEXT:    s_setpc_b64 s[30:31]12058  %vec0 = call <3 x ptr> asm "; def $0", "=s"()12059  %vec1 = call <3 x ptr> asm "; def $0", "=s"()12060  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 5>12061  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)12062  ret void12063}12064 12065define void @s_shuffle_v4p0_v3p0__5_5_0_5() {12066; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_0_5:12067; GFX9:       ; %bb.0:12068; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12069; GFX9-NEXT:    ;;#ASMSTART12070; GFX9-NEXT:    ; def s[12:17]12071; GFX9-NEXT:    ;;#ASMEND12072; GFX9-NEXT:    ;;#ASMSTART12073; GFX9-NEXT:    ; def s[4:9]12074; GFX9-NEXT:    ;;#ASMEND12075; GFX9-NEXT:    s_mov_b32 s10, s812076; GFX9-NEXT:    s_mov_b32 s11, s912077; GFX9-NEXT:    s_mov_b32 s14, s812078; GFX9-NEXT:    s_mov_b32 s15, s912079; GFX9-NEXT:    ;;#ASMSTART12080; GFX9-NEXT:    ; use s[8:15]12081; GFX9-NEXT:    ;;#ASMEND12082; GFX9-NEXT:    s_setpc_b64 s[30:31]12083  %vec0 = call <3 x ptr> asm "; def $0", "=s"()12084  %vec1 = call <3 x ptr> asm "; def $0", "=s"()12085  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 5>12086  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)12087  ret void12088}12089 12090define void @s_shuffle_v4p0_v3p0__5_5_1_5() {12091; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_5_1_5:12092; GFX900:       ; %bb.0:12093; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12094; GFX900-NEXT:    ;;#ASMSTART12095; GFX900-NEXT:    ; def s[12:17]12096; GFX900-NEXT:    ;;#ASMEND12097; GFX900-NEXT:    ;;#ASMSTART12098; GFX900-NEXT:    ; def s[4:9]12099; GFX900-NEXT:    ;;#ASMEND12100; GFX900-NEXT:    s_mov_b32 s10, s812101; GFX900-NEXT:    s_mov_b32 s11, s912102; GFX900-NEXT:    s_mov_b32 s12, s1412103; GFX900-NEXT:    s_mov_b32 s13, s1512104; GFX900-NEXT:    s_mov_b32 s14, s812105; GFX900-NEXT:    s_mov_b32 s15, s912106; GFX900-NEXT:    ;;#ASMSTART12107; GFX900-NEXT:    ; use s[8:15]12108; GFX900-NEXT:    ;;#ASMEND12109; GFX900-NEXT:    s_setpc_b64 s[30:31]12110;12111; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_5_1_5:12112; GFX90A:       ; %bb.0:12113; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12114; GFX90A-NEXT:    ;;#ASMSTART12115; GFX90A-NEXT:    ; def s[12:17]12116; GFX90A-NEXT:    ;;#ASMEND12117; GFX90A-NEXT:    ;;#ASMSTART12118; GFX90A-NEXT:    ; def s[4:9]12119; GFX90A-NEXT:    ;;#ASMEND12120; GFX90A-NEXT:    s_mov_b32 s10, s812121; GFX90A-NEXT:    s_mov_b32 s11, s912122; GFX90A-NEXT:    s_mov_b32 s12, s1412123; GFX90A-NEXT:    s_mov_b32 s13, s1512124; GFX90A-NEXT:    s_mov_b32 s14, s812125; GFX90A-NEXT:    s_mov_b32 s15, s912126; GFX90A-NEXT:    ;;#ASMSTART12127; GFX90A-NEXT:    ; use s[8:15]12128; GFX90A-NEXT:    ;;#ASMEND12129; GFX90A-NEXT:    s_setpc_b64 s[30:31]12130;12131; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_5_1_5:12132; GFX942:       ; %bb.0:12133; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12134; GFX942-NEXT:    ;;#ASMSTART12135; GFX942-NEXT:    ; def s[0:5]12136; GFX942-NEXT:    ;;#ASMEND12137; GFX942-NEXT:    s_mov_b32 s12, s212138; GFX942-NEXT:    ;;#ASMSTART12139; GFX942-NEXT:    ; def s[4:9]12140; GFX942-NEXT:    ;;#ASMEND12141; GFX942-NEXT:    s_mov_b32 s10, s812142; GFX942-NEXT:    s_mov_b32 s11, s912143; GFX942-NEXT:    s_mov_b32 s13, s312144; GFX942-NEXT:    s_mov_b32 s14, s812145; GFX942-NEXT:    s_mov_b32 s15, s912146; GFX942-NEXT:    ;;#ASMSTART12147; GFX942-NEXT:    ; use s[8:15]12148; GFX942-NEXT:    ;;#ASMEND12149; GFX942-NEXT:    s_setpc_b64 s[30:31]12150  %vec0 = call <3 x ptr> asm "; def $0", "=s"()12151  %vec1 = call <3 x ptr> asm "; def $0", "=s"()12152  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 5>12153  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)12154  ret void12155}12156 12157define void @s_shuffle_v4p0_v3p0__5_5_2_5() {12158; GFX900-LABEL: s_shuffle_v4p0_v3p0__5_5_2_5:12159; GFX900:       ; %bb.0:12160; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12161; GFX900-NEXT:    ;;#ASMSTART12162; GFX900-NEXT:    ; def s[8:13]12163; GFX900-NEXT:    ;;#ASMEND12164; GFX900-NEXT:    ;;#ASMSTART12165; GFX900-NEXT:    ; def s[4:9]12166; GFX900-NEXT:    ;;#ASMEND12167; GFX900-NEXT:    s_mov_b32 s10, s812168; GFX900-NEXT:    s_mov_b32 s11, s912169; GFX900-NEXT:    s_mov_b32 s14, s812170; GFX900-NEXT:    s_mov_b32 s15, s912171; GFX900-NEXT:    ;;#ASMSTART12172; GFX900-NEXT:    ; use s[8:15]12173; GFX900-NEXT:    ;;#ASMEND12174; GFX900-NEXT:    s_setpc_b64 s[30:31]12175;12176; GFX90A-LABEL: s_shuffle_v4p0_v3p0__5_5_2_5:12177; GFX90A:       ; %bb.0:12178; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12179; GFX90A-NEXT:    ;;#ASMSTART12180; GFX90A-NEXT:    ; def s[8:13]12181; GFX90A-NEXT:    ;;#ASMEND12182; GFX90A-NEXT:    ;;#ASMSTART12183; GFX90A-NEXT:    ; def s[4:9]12184; GFX90A-NEXT:    ;;#ASMEND12185; GFX90A-NEXT:    s_mov_b32 s10, s812186; GFX90A-NEXT:    s_mov_b32 s11, s912187; GFX90A-NEXT:    s_mov_b32 s14, s812188; GFX90A-NEXT:    s_mov_b32 s15, s912189; GFX90A-NEXT:    ;;#ASMSTART12190; GFX90A-NEXT:    ; use s[8:15]12191; GFX90A-NEXT:    ;;#ASMEND12192; GFX90A-NEXT:    s_setpc_b64 s[30:31]12193;12194; GFX942-LABEL: s_shuffle_v4p0_v3p0__5_5_2_5:12195; GFX942:       ; %bb.0:12196; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12197; GFX942-NEXT:    ;;#ASMSTART12198; GFX942-NEXT:    ; def s[8:13]12199; GFX942-NEXT:    ;;#ASMEND12200; GFX942-NEXT:    s_nop 012201; GFX942-NEXT:    ;;#ASMSTART12202; GFX942-NEXT:    ; def s[4:9]12203; GFX942-NEXT:    ;;#ASMEND12204; GFX942-NEXT:    s_mov_b32 s10, s812205; GFX942-NEXT:    s_mov_b32 s11, s912206; GFX942-NEXT:    s_mov_b32 s14, s812207; GFX942-NEXT:    s_mov_b32 s15, s912208; GFX942-NEXT:    ;;#ASMSTART12209; GFX942-NEXT:    ; use s[8:15]12210; GFX942-NEXT:    ;;#ASMEND12211; GFX942-NEXT:    s_setpc_b64 s[30:31]12212  %vec0 = call <3 x ptr> asm "; def $0", "=s"()12213  %vec1 = call <3 x ptr> asm "; def $0", "=s"()12214  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 5>12215  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)12216  ret void12217}12218 12219define void @s_shuffle_v4p0_v3p0__5_5_3_5() {12220; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_3_5:12221; GFX9:       ; %bb.0:12222; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12223; GFX9-NEXT:    ;;#ASMSTART12224; GFX9-NEXT:    ; def s[4:9]12225; GFX9-NEXT:    ;;#ASMEND12226; GFX9-NEXT:    s_mov_b32 s10, s812227; GFX9-NEXT:    s_mov_b32 s11, s912228; GFX9-NEXT:    s_mov_b32 s12, s412229; GFX9-NEXT:    s_mov_b32 s13, s512230; GFX9-NEXT:    s_mov_b32 s14, s812231; GFX9-NEXT:    s_mov_b32 s15, s912232; GFX9-NEXT:    ;;#ASMSTART12233; GFX9-NEXT:    ; use s[8:15]12234; GFX9-NEXT:    ;;#ASMEND12235; GFX9-NEXT:    s_setpc_b64 s[30:31]12236  %vec0 = call <3 x ptr> asm "; def $0", "=s"()12237  %vec1 = call <3 x ptr> asm "; def $0", "=s"()12238  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 5>12239  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)12240  ret void12241}12242 12243define void @s_shuffle_v4p0_v3p0__5_5_4_5() {12244; GFX9-LABEL: s_shuffle_v4p0_v3p0__5_5_4_5:12245; GFX9:       ; %bb.0:12246; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12247; GFX9-NEXT:    ;;#ASMSTART12248; GFX9-NEXT:    ; def s[4:9]12249; GFX9-NEXT:    ;;#ASMEND12250; GFX9-NEXT:    s_mov_b32 s10, s812251; GFX9-NEXT:    s_mov_b32 s11, s912252; GFX9-NEXT:    s_mov_b32 s12, s612253; GFX9-NEXT:    s_mov_b32 s13, s712254; GFX9-NEXT:    s_mov_b32 s14, s812255; GFX9-NEXT:    s_mov_b32 s15, s912256; GFX9-NEXT:    ;;#ASMSTART12257; GFX9-NEXT:    ; use s[8:15]12258; GFX9-NEXT:    ;;#ASMEND12259; GFX9-NEXT:    s_setpc_b64 s[30:31]12260  %vec0 = call <3 x ptr> asm "; def $0", "=s"()12261  %vec1 = call <3 x ptr> asm "; def $0", "=s"()12262  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 5>12263  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)12264  ret void12265}12266;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:12267; GFX90APLUS: {{.*}}12268