brintos

brintos / llvm-project-archived public Read only

0
0
Text · 200.6 KiB · 1cf5c6c Raw
5450 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_v4p3_v2p3__u_u_u_u(ptr addrspace(1) inreg %ptr) {8; GFX9-LABEL: v_shuffle_v4p3_v2p3__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 <2 x ptr addrspace(3)> asm "; def $0", "=v"()13  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> poison14  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 1615  ret void16}17 18define void @v_shuffle_v4p3_v2p3__0_u_u_u(ptr addrspace(1) inreg %ptr) {19; GFX900-LABEL: v_shuffle_v4p3_v2p3__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 v2, 023; GFX900-NEXT:    ;;#ASMSTART24; GFX900-NEXT:    ; def v[0:1]25; GFX900-NEXT:    ;;#ASMEND26; GFX900-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]27; GFX900-NEXT:    s_waitcnt vmcnt(0)28; GFX900-NEXT:    s_setpc_b64 s[30:31]29;30; GFX90A-LABEL: v_shuffle_v4p3_v2p3__0_u_u_u:31; GFX90A:       ; %bb.0:32; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)33; GFX90A-NEXT:    v_mov_b32_e32 v2, 034; GFX90A-NEXT:    ;;#ASMSTART35; GFX90A-NEXT:    ; def v[0:1]36; GFX90A-NEXT:    ;;#ASMEND37; GFX90A-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]38; GFX90A-NEXT:    s_waitcnt vmcnt(0)39; GFX90A-NEXT:    s_setpc_b64 s[30:31]40;41; GFX942-LABEL: v_shuffle_v4p3_v2p3__0_u_u_u:42; GFX942:       ; %bb.0:43; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)44; GFX942-NEXT:    v_mov_b32_e32 v2, 045; GFX942-NEXT:    ;;#ASMSTART46; GFX942-NEXT:    ; def v[0:1]47; GFX942-NEXT:    ;;#ASMEND48; GFX942-NEXT:    global_store_dwordx4 v2, v[0:3], s[0:1]49; GFX942-NEXT:    s_waitcnt vmcnt(0)50; GFX942-NEXT:    s_setpc_b64 s[30:31]51  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()52  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>53  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 1654  ret void55}56 57define void @v_shuffle_v4p3_v2p3__1_u_u_u(ptr addrspace(1) inreg %ptr) {58; GFX900-LABEL: v_shuffle_v4p3_v2p3__1_u_u_u:59; GFX900:       ; %bb.0:60; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)61; GFX900-NEXT:    v_mov_b32_e32 v2, 062; GFX900-NEXT:    ;;#ASMSTART63; GFX900-NEXT:    ; def v[0:1]64; GFX900-NEXT:    ;;#ASMEND65; GFX900-NEXT:    global_store_dwordx4 v2, v[1:4], s[16:17]66; GFX900-NEXT:    s_waitcnt vmcnt(0)67; GFX900-NEXT:    s_setpc_b64 s[30:31]68;69; GFX90A-LABEL: v_shuffle_v4p3_v2p3__1_u_u_u:70; GFX90A:       ; %bb.0:71; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)72; GFX90A-NEXT:    ;;#ASMSTART73; GFX90A-NEXT:    ; def v[0:1]74; GFX90A-NEXT:    ;;#ASMEND75; GFX90A-NEXT:    v_mov_b32_e32 v2, 076; GFX90A-NEXT:    v_mov_b32_e32 v0, v177; GFX90A-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]78; GFX90A-NEXT:    s_waitcnt vmcnt(0)79; GFX90A-NEXT:    s_setpc_b64 s[30:31]80;81; GFX942-LABEL: v_shuffle_v4p3_v2p3__1_u_u_u:82; GFX942:       ; %bb.0:83; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)84; GFX942-NEXT:    ;;#ASMSTART85; GFX942-NEXT:    ; def v[0:1]86; GFX942-NEXT:    ;;#ASMEND87; GFX942-NEXT:    v_mov_b32_e32 v2, 088; GFX942-NEXT:    v_mov_b32_e32 v0, v189; GFX942-NEXT:    global_store_dwordx4 v2, v[0:3], s[0:1]90; GFX942-NEXT:    s_waitcnt vmcnt(0)91; GFX942-NEXT:    s_setpc_b64 s[30:31]92  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()93  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>94  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 1695  ret void96}97 98define void @v_shuffle_v4p3_v2p3__2_u_u_u(ptr addrspace(1) inreg %ptr) {99; GFX9-LABEL: v_shuffle_v4p3_v2p3__2_u_u_u:100; GFX9:       ; %bb.0:101; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)102; GFX9-NEXT:    s_setpc_b64 s[30:31]103  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()104  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison>105  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16106  ret void107}108 109define void @v_shuffle_v4p3_v2p3__3_u_u_u(ptr addrspace(1) inreg %ptr) {110; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_u_u_u:111; GFX900:       ; %bb.0:112; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)113; GFX900-NEXT:    v_mov_b32_e32 v2, 0114; GFX900-NEXT:    ;;#ASMSTART115; GFX900-NEXT:    ; def v[0:1]116; GFX900-NEXT:    ;;#ASMEND117; GFX900-NEXT:    global_store_dwordx4 v2, v[1:4], s[16:17]118; GFX900-NEXT:    s_waitcnt vmcnt(0)119; GFX900-NEXT:    s_setpc_b64 s[30:31]120;121; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_u_u_u:122; GFX90A:       ; %bb.0:123; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)124; GFX90A-NEXT:    ;;#ASMSTART125; GFX90A-NEXT:    ; def v[0:1]126; GFX90A-NEXT:    ;;#ASMEND127; GFX90A-NEXT:    v_mov_b32_e32 v2, 0128; GFX90A-NEXT:    v_mov_b32_e32 v0, v1129; GFX90A-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]130; GFX90A-NEXT:    s_waitcnt vmcnt(0)131; GFX90A-NEXT:    s_setpc_b64 s[30:31]132;133; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_u_u_u:134; GFX942:       ; %bb.0:135; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)136; GFX942-NEXT:    ;;#ASMSTART137; GFX942-NEXT:    ; def v[0:1]138; GFX942-NEXT:    ;;#ASMEND139; GFX942-NEXT:    v_mov_b32_e32 v2, 0140; GFX942-NEXT:    v_mov_b32_e32 v0, v1141; GFX942-NEXT:    global_store_dwordx4 v2, v[0:3], s[0:1]142; GFX942-NEXT:    s_waitcnt vmcnt(0)143; GFX942-NEXT:    s_setpc_b64 s[30:31]144  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()145  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()146  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison>147  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16148  ret void149}150 151define void @v_shuffle_v4p3_v2p3__3_0_u_u(ptr addrspace(1) inreg %ptr) {152; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_0_u_u:153; GFX900:       ; %bb.0:154; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)155; GFX900-NEXT:    v_mov_b32_e32 v4, 0156; GFX900-NEXT:    ;;#ASMSTART157; GFX900-NEXT:    ; def v[2:3]158; GFX900-NEXT:    ;;#ASMEND159; GFX900-NEXT:    ;;#ASMSTART160; GFX900-NEXT:    ; def v[0:1]161; GFX900-NEXT:    ;;#ASMEND162; GFX900-NEXT:    global_store_dwordx4 v4, v[1:4], s[16:17]163; GFX900-NEXT:    s_waitcnt vmcnt(0)164; GFX900-NEXT:    s_setpc_b64 s[30:31]165;166; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_0_u_u:167; GFX90A:       ; %bb.0:168; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)169; GFX90A-NEXT:    ;;#ASMSTART170; GFX90A-NEXT:    ; def v[0:1]171; GFX90A-NEXT:    ;;#ASMEND172; GFX90A-NEXT:    v_mov_b32_e32 v4, 0173; GFX90A-NEXT:    ;;#ASMSTART174; GFX90A-NEXT:    ; def v[2:3]175; GFX90A-NEXT:    ;;#ASMEND176; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]177; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]178; GFX90A-NEXT:    s_waitcnt vmcnt(0)179; GFX90A-NEXT:    s_setpc_b64 s[30:31]180;181; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_0_u_u:182; GFX942:       ; %bb.0:183; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)184; GFX942-NEXT:    ;;#ASMSTART185; GFX942-NEXT:    ; def v[0:1]186; GFX942-NEXT:    ;;#ASMEND187; GFX942-NEXT:    v_mov_b32_e32 v4, 0188; GFX942-NEXT:    ;;#ASMSTART189; GFX942-NEXT:    ; def v[2:3]190; GFX942-NEXT:    ;;#ASMEND191; GFX942-NEXT:    s_nop 0192; GFX942-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]193; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]194; GFX942-NEXT:    s_waitcnt vmcnt(0)195; GFX942-NEXT:    s_setpc_b64 s[30:31]196  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()197  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()198  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 0, i32 poison, i32 poison>199  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16200  ret void201}202 203define void @v_shuffle_v4p3_v2p3__3_1_u_u(ptr addrspace(1) inreg %ptr) {204; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_1_u_u:205; GFX900:       ; %bb.0:206; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)207; GFX900-NEXT:    v_mov_b32_e32 v3, 0208; GFX900-NEXT:    ;;#ASMSTART209; GFX900-NEXT:    ; def v[1:2]210; GFX900-NEXT:    ;;#ASMEND211; GFX900-NEXT:    ;;#ASMSTART212; GFX900-NEXT:    ; def v[0:1]213; GFX900-NEXT:    ;;#ASMEND214; GFX900-NEXT:    global_store_dwordx4 v3, v[1:4], s[16:17]215; GFX900-NEXT:    s_waitcnt vmcnt(0)216; GFX900-NEXT:    s_setpc_b64 s[30:31]217;218; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_1_u_u:219; GFX90A:       ; %bb.0:220; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)221; GFX90A-NEXT:    ;;#ASMSTART222; GFX90A-NEXT:    ; def v[0:1]223; GFX90A-NEXT:    ;;#ASMEND224; GFX90A-NEXT:    v_mov_b32_e32 v4, 0225; GFX90A-NEXT:    ;;#ASMSTART226; GFX90A-NEXT:    ; def v[2:3]227; GFX90A-NEXT:    ;;#ASMEND228; GFX90A-NEXT:    v_mov_b32_e32 v0, v3229; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]230; GFX90A-NEXT:    s_waitcnt vmcnt(0)231; GFX90A-NEXT:    s_setpc_b64 s[30:31]232;233; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_1_u_u:234; GFX942:       ; %bb.0:235; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)236; GFX942-NEXT:    ;;#ASMSTART237; GFX942-NEXT:    ; def v[0:1]238; GFX942-NEXT:    ;;#ASMEND239; GFX942-NEXT:    v_mov_b32_e32 v4, 0240; GFX942-NEXT:    ;;#ASMSTART241; GFX942-NEXT:    ; def v[2:3]242; GFX942-NEXT:    ;;#ASMEND243; GFX942-NEXT:    s_nop 0244; GFX942-NEXT:    v_mov_b32_e32 v0, v3245; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]246; GFX942-NEXT:    s_waitcnt vmcnt(0)247; GFX942-NEXT:    s_setpc_b64 s[30:31]248  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()249  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()250  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 1, i32 poison, i32 poison>251  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16252  ret void253}254 255define void @v_shuffle_v4p3_v2p3__3_2_u_u(ptr addrspace(1) inreg %ptr) {256; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_2_u_u:257; GFX900:       ; %bb.0:258; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)259; GFX900-NEXT:    v_mov_b32_e32 v3, 0260; GFX900-NEXT:    ;;#ASMSTART261; GFX900-NEXT:    ; def v[0:1]262; GFX900-NEXT:    ;;#ASMEND263; GFX900-NEXT:    v_mov_b32_e32 v2, v0264; GFX900-NEXT:    global_store_dwordx4 v3, v[1:4], s[16:17]265; GFX900-NEXT:    s_waitcnt vmcnt(0)266; GFX900-NEXT:    s_setpc_b64 s[30:31]267;268; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_2_u_u:269; GFX90A:       ; %bb.0:270; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)271; GFX90A-NEXT:    v_mov_b32_e32 v2, 0272; GFX90A-NEXT:    ;;#ASMSTART273; GFX90A-NEXT:    ; def v[0:1]274; GFX90A-NEXT:    ;;#ASMEND275; GFX90A-NEXT:    v_mov_b32_e32 v4, v1276; GFX90A-NEXT:    v_mov_b32_e32 v5, v0277; GFX90A-NEXT:    global_store_dwordx4 v2, v[4:7], s[16:17]278; GFX90A-NEXT:    s_waitcnt vmcnt(0)279; GFX90A-NEXT:    s_setpc_b64 s[30:31]280;281; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_2_u_u:282; GFX942:       ; %bb.0:283; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)284; GFX942-NEXT:    v_mov_b32_e32 v2, 0285; GFX942-NEXT:    ;;#ASMSTART286; GFX942-NEXT:    ; def v[0:1]287; GFX942-NEXT:    ;;#ASMEND288; GFX942-NEXT:    s_nop 0289; GFX942-NEXT:    v_mov_b32_e32 v4, v1290; GFX942-NEXT:    v_mov_b32_e32 v5, v0291; GFX942-NEXT:    global_store_dwordx4 v2, v[4:7], s[0:1]292; GFX942-NEXT:    s_waitcnt vmcnt(0)293; GFX942-NEXT:    s_setpc_b64 s[30:31]294  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()295  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()296  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 2, i32 poison, i32 poison>297  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16298  ret void299}300 301define void @v_shuffle_v4p3_v2p3__3_3_u_u(ptr addrspace(1) inreg %ptr) {302; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_u_u:303; GFX900:       ; %bb.0:304; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)305; GFX900-NEXT:    v_mov_b32_e32 v3, 0306; GFX900-NEXT:    ;;#ASMSTART307; GFX900-NEXT:    ; def v[0:1]308; GFX900-NEXT:    ;;#ASMEND309; GFX900-NEXT:    v_mov_b32_e32 v2, v1310; GFX900-NEXT:    global_store_dwordx4 v3, v[1:4], s[16:17]311; GFX900-NEXT:    s_waitcnt vmcnt(0)312; GFX900-NEXT:    s_setpc_b64 s[30:31]313;314; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_u_u:315; GFX90A:       ; %bb.0:316; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)317; GFX90A-NEXT:    ;;#ASMSTART318; GFX90A-NEXT:    ; def v[0:1]319; GFX90A-NEXT:    ;;#ASMEND320; GFX90A-NEXT:    v_mov_b32_e32 v2, 0321; GFX90A-NEXT:    v_mov_b32_e32 v0, v1322; GFX90A-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]323; GFX90A-NEXT:    s_waitcnt vmcnt(0)324; GFX90A-NEXT:    s_setpc_b64 s[30:31]325;326; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_u_u:327; GFX942:       ; %bb.0:328; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)329; GFX942-NEXT:    ;;#ASMSTART330; GFX942-NEXT:    ; def v[0:1]331; GFX942-NEXT:    ;;#ASMEND332; GFX942-NEXT:    v_mov_b32_e32 v2, 0333; GFX942-NEXT:    v_mov_b32_e32 v0, v1334; GFX942-NEXT:    global_store_dwordx4 v2, v[0:3], s[0:1]335; GFX942-NEXT:    s_waitcnt vmcnt(0)336; GFX942-NEXT:    s_setpc_b64 s[30:31]337  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()338  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()339  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 poison>340  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16341  ret void342}343 344define void @v_shuffle_v4p3_v2p3__3_3_0_u(ptr addrspace(1) inreg %ptr) {345; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_0_u:346; GFX900:       ; %bb.0:347; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)348; GFX900-NEXT:    v_mov_b32_e32 v5, 0349; GFX900-NEXT:    ;;#ASMSTART350; GFX900-NEXT:    ; def v[0:1]351; GFX900-NEXT:    ;;#ASMEND352; GFX900-NEXT:    v_mov_b32_e32 v2, v1353; GFX900-NEXT:    ;;#ASMSTART354; GFX900-NEXT:    ; def v[3:4]355; GFX900-NEXT:    ;;#ASMEND356; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]357; GFX900-NEXT:    s_waitcnt vmcnt(0)358; GFX900-NEXT:    s_setpc_b64 s[30:31]359;360; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_0_u:361; GFX90A:       ; %bb.0:362; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)363; GFX90A-NEXT:    ;;#ASMSTART364; GFX90A-NEXT:    ; def v[0:1]365; GFX90A-NEXT:    ;;#ASMEND366; GFX90A-NEXT:    v_mov_b32_e32 v4, 0367; GFX90A-NEXT:    v_mov_b32_e32 v0, v1368; GFX90A-NEXT:    ;;#ASMSTART369; GFX90A-NEXT:    ; def v[2:3]370; GFX90A-NEXT:    ;;#ASMEND371; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]372; GFX90A-NEXT:    s_waitcnt vmcnt(0)373; GFX90A-NEXT:    s_setpc_b64 s[30:31]374;375; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_0_u:376; GFX942:       ; %bb.0:377; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)378; GFX942-NEXT:    ;;#ASMSTART379; GFX942-NEXT:    ; def v[0:1]380; GFX942-NEXT:    ;;#ASMEND381; GFX942-NEXT:    v_mov_b32_e32 v4, 0382; GFX942-NEXT:    v_mov_b32_e32 v0, v1383; GFX942-NEXT:    ;;#ASMSTART384; GFX942-NEXT:    ; def v[2:3]385; GFX942-NEXT:    ;;#ASMEND386; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]387; GFX942-NEXT:    s_waitcnt vmcnt(0)388; GFX942-NEXT:    s_setpc_b64 s[30:31]389  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()390  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()391  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 poison>392  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16393  ret void394}395 396define void @v_shuffle_v4p3_v2p3__3_3_1_u(ptr addrspace(1) inreg %ptr) {397; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_1_u:398; GFX900:       ; %bb.0:399; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)400; GFX900-NEXT:    ;;#ASMSTART401; GFX900-NEXT:    ; def v[2:3]402; GFX900-NEXT:    ;;#ASMEND403; GFX900-NEXT:    v_mov_b32_e32 v4, 0404; GFX900-NEXT:    ;;#ASMSTART405; GFX900-NEXT:    ; def v[0:1]406; GFX900-NEXT:    ;;#ASMEND407; GFX900-NEXT:    v_mov_b32_e32 v2, v1408; GFX900-NEXT:    global_store_dwordx4 v4, v[1:4], s[16:17]409; GFX900-NEXT:    s_waitcnt vmcnt(0)410; GFX900-NEXT:    s_setpc_b64 s[30:31]411;412; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_1_u:413; GFX90A:       ; %bb.0:414; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)415; GFX90A-NEXT:    ;;#ASMSTART416; GFX90A-NEXT:    ; def v[2:3]417; GFX90A-NEXT:    ;;#ASMEND418; GFX90A-NEXT:    ;;#ASMSTART419; GFX90A-NEXT:    ; def v[0:1]420; GFX90A-NEXT:    ;;#ASMEND421; GFX90A-NEXT:    v_mov_b32_e32 v4, 0422; GFX90A-NEXT:    v_mov_b32_e32 v0, v1423; GFX90A-NEXT:    v_mov_b32_e32 v2, v3424; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]425; GFX90A-NEXT:    s_waitcnt vmcnt(0)426; GFX90A-NEXT:    s_setpc_b64 s[30:31]427;428; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_1_u:429; GFX942:       ; %bb.0:430; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)431; GFX942-NEXT:    ;;#ASMSTART432; GFX942-NEXT:    ; def v[2:3]433; GFX942-NEXT:    ;;#ASMEND434; GFX942-NEXT:    ;;#ASMSTART435; GFX942-NEXT:    ; def v[0:1]436; GFX942-NEXT:    ;;#ASMEND437; GFX942-NEXT:    v_mov_b32_e32 v4, 0438; GFX942-NEXT:    v_mov_b32_e32 v0, v1439; GFX942-NEXT:    v_mov_b32_e32 v2, v3440; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]441; GFX942-NEXT:    s_waitcnt vmcnt(0)442; GFX942-NEXT:    s_setpc_b64 s[30:31]443  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()444  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()445  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 poison>446  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16447  ret void448}449 450define void @v_shuffle_v4p3_v2p3__3_3_2_u(ptr addrspace(1) inreg %ptr) {451; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_2_u:452; GFX900:       ; %bb.0:453; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)454; GFX900-NEXT:    v_mov_b32_e32 v4, 0455; GFX900-NEXT:    ;;#ASMSTART456; GFX900-NEXT:    ; def v[0:1]457; GFX900-NEXT:    ;;#ASMEND458; GFX900-NEXT:    v_mov_b32_e32 v2, v1459; GFX900-NEXT:    v_mov_b32_e32 v3, v0460; GFX900-NEXT:    global_store_dwordx4 v4, v[1:4], s[16:17]461; GFX900-NEXT:    s_waitcnt vmcnt(0)462; GFX900-NEXT:    s_setpc_b64 s[30:31]463;464; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_2_u:465; GFX90A:       ; %bb.0:466; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)467; GFX90A-NEXT:    v_mov_b32_e32 v4, 0468; GFX90A-NEXT:    ;;#ASMSTART469; GFX90A-NEXT:    ; def v[2:3]470; GFX90A-NEXT:    ;;#ASMEND471; GFX90A-NEXT:    v_mov_b32_e32 v0, v3472; GFX90A-NEXT:    v_mov_b32_e32 v1, v3473; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]474; GFX90A-NEXT:    s_waitcnt vmcnt(0)475; GFX90A-NEXT:    s_setpc_b64 s[30:31]476;477; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_2_u:478; GFX942:       ; %bb.0:479; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)480; GFX942-NEXT:    v_mov_b32_e32 v4, 0481; GFX942-NEXT:    ;;#ASMSTART482; GFX942-NEXT:    ; def v[2:3]483; GFX942-NEXT:    ;;#ASMEND484; GFX942-NEXT:    s_nop 0485; GFX942-NEXT:    v_mov_b32_e32 v0, v3486; GFX942-NEXT:    v_mov_b32_e32 v1, v3487; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]488; GFX942-NEXT:    s_waitcnt vmcnt(0)489; GFX942-NEXT:    s_setpc_b64 s[30:31]490  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()491  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()492  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 poison>493  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16494  ret void495}496 497define void @v_shuffle_v4p3_v2p3__3_3_3_u(ptr addrspace(1) inreg %ptr) {498; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_3_u:499; GFX900:       ; %bb.0:500; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)501; GFX900-NEXT:    v_mov_b32_e32 v4, 0502; GFX900-NEXT:    ;;#ASMSTART503; GFX900-NEXT:    ; def v[0:1]504; GFX900-NEXT:    ;;#ASMEND505; GFX900-NEXT:    v_mov_b32_e32 v2, v1506; GFX900-NEXT:    v_mov_b32_e32 v3, v1507; GFX900-NEXT:    global_store_dwordx4 v4, v[1:4], s[16:17]508; GFX900-NEXT:    s_waitcnt vmcnt(0)509; GFX900-NEXT:    s_setpc_b64 s[30:31]510;511; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_3_u:512; GFX90A:       ; %bb.0:513; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)514; GFX90A-NEXT:    ;;#ASMSTART515; GFX90A-NEXT:    ; def v[0:1]516; GFX90A-NEXT:    ;;#ASMEND517; GFX90A-NEXT:    v_mov_b32_e32 v3, 0518; GFX90A-NEXT:    v_mov_b32_e32 v0, v1519; GFX90A-NEXT:    v_mov_b32_e32 v2, v1520; GFX90A-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]521; GFX90A-NEXT:    s_waitcnt vmcnt(0)522; GFX90A-NEXT:    s_setpc_b64 s[30:31]523;524; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_3_u:525; GFX942:       ; %bb.0:526; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)527; GFX942-NEXT:    ;;#ASMSTART528; GFX942-NEXT:    ; def v[0:1]529; GFX942-NEXT:    ;;#ASMEND530; GFX942-NEXT:    v_mov_b32_e32 v3, 0531; GFX942-NEXT:    v_mov_b32_e32 v0, v1532; GFX942-NEXT:    v_mov_b32_e32 v2, v1533; GFX942-NEXT:    global_store_dwordx4 v3, v[0:3], s[0:1]534; GFX942-NEXT:    s_waitcnt vmcnt(0)535; GFX942-NEXT:    s_setpc_b64 s[30:31]536  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()537  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()538  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 poison>539  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16540  ret void541}542 543define void @v_shuffle_v4p3_v2p3__3_3_3_0(ptr addrspace(1) inreg %ptr) {544; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_3_0:545; GFX900:       ; %bb.0:546; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)547; GFX900-NEXT:    v_mov_b32_e32 v6, 0548; GFX900-NEXT:    ;;#ASMSTART549; GFX900-NEXT:    ; def v[0:1]550; GFX900-NEXT:    ;;#ASMEND551; GFX900-NEXT:    v_mov_b32_e32 v2, v1552; GFX900-NEXT:    v_mov_b32_e32 v3, v1553; GFX900-NEXT:    ;;#ASMSTART554; GFX900-NEXT:    ; def v[4:5]555; GFX900-NEXT:    ;;#ASMEND556; GFX900-NEXT:    global_store_dwordx4 v6, v[1:4], s[16:17]557; GFX900-NEXT:    s_waitcnt vmcnt(0)558; GFX900-NEXT:    s_setpc_b64 s[30:31]559;560; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_3_0:561; GFX90A:       ; %bb.0:562; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)563; GFX90A-NEXT:    ;;#ASMSTART564; GFX90A-NEXT:    ; def v[2:3]565; GFX90A-NEXT:    ;;#ASMEND566; GFX90A-NEXT:    ;;#ASMSTART567; GFX90A-NEXT:    ; def v[0:1]568; GFX90A-NEXT:    ;;#ASMEND569; GFX90A-NEXT:    v_mov_b32_e32 v4, 0570; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], v[0:1], v[2:3] op_sel:[1,0]571; GFX90A-NEXT:    v_mov_b32_e32 v0, v1572; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]573; GFX90A-NEXT:    s_waitcnt vmcnt(0)574; GFX90A-NEXT:    s_setpc_b64 s[30:31]575;576; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_3_0:577; GFX942:       ; %bb.0:578; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)579; GFX942-NEXT:    ;;#ASMSTART580; GFX942-NEXT:    ; def v[2:3]581; GFX942-NEXT:    ;;#ASMEND582; GFX942-NEXT:    ;;#ASMSTART583; GFX942-NEXT:    ; def v[0:1]584; GFX942-NEXT:    ;;#ASMEND585; GFX942-NEXT:    v_mov_b32_e32 v4, 0586; GFX942-NEXT:    v_pk_mov_b32 v[2:3], v[0:1], v[2:3] op_sel:[1,0]587; GFX942-NEXT:    v_mov_b32_e32 v0, v1588; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]589; GFX942-NEXT:    s_waitcnt vmcnt(0)590; GFX942-NEXT:    s_setpc_b64 s[30:31]591  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()592  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()593  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 0>594  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16595  ret void596}597 598define void @v_shuffle_v4p3_v2p3__3_3_3_1(ptr addrspace(1) inreg %ptr) {599; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_3_1:600; GFX900:       ; %bb.0:601; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)602; GFX900-NEXT:    ;;#ASMSTART603; GFX900-NEXT:    ; def v[3:4]604; GFX900-NEXT:    ;;#ASMEND605; GFX900-NEXT:    v_mov_b32_e32 v5, 0606; GFX900-NEXT:    ;;#ASMSTART607; GFX900-NEXT:    ; def v[0:1]608; GFX900-NEXT:    ;;#ASMEND609; GFX900-NEXT:    v_mov_b32_e32 v2, v1610; GFX900-NEXT:    v_mov_b32_e32 v3, v1611; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]612; GFX900-NEXT:    s_waitcnt vmcnt(0)613; GFX900-NEXT:    s_setpc_b64 s[30:31]614;615; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_3_1:616; GFX90A:       ; %bb.0:617; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)618; GFX90A-NEXT:    ;;#ASMSTART619; GFX90A-NEXT:    ; def v[2:3]620; GFX90A-NEXT:    ;;#ASMEND621; GFX90A-NEXT:    ;;#ASMSTART622; GFX90A-NEXT:    ; def v[0:1]623; GFX90A-NEXT:    ;;#ASMEND624; GFX90A-NEXT:    v_mov_b32_e32 v4, 0625; GFX90A-NEXT:    v_mov_b32_e32 v0, v1626; GFX90A-NEXT:    v_mov_b32_e32 v2, v1627; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]628; GFX90A-NEXT:    s_waitcnt vmcnt(0)629; GFX90A-NEXT:    s_setpc_b64 s[30:31]630;631; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_3_1:632; GFX942:       ; %bb.0:633; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)634; GFX942-NEXT:    ;;#ASMSTART635; GFX942-NEXT:    ; def v[2:3]636; GFX942-NEXT:    ;;#ASMEND637; GFX942-NEXT:    ;;#ASMSTART638; GFX942-NEXT:    ; def v[0:1]639; GFX942-NEXT:    ;;#ASMEND640; GFX942-NEXT:    v_mov_b32_e32 v4, 0641; GFX942-NEXT:    v_mov_b32_e32 v0, v1642; GFX942-NEXT:    v_mov_b32_e32 v2, v1643; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]644; GFX942-NEXT:    s_waitcnt vmcnt(0)645; GFX942-NEXT:    s_setpc_b64 s[30:31]646  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()647  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()648  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 1>649  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16650  ret void651}652 653define void @v_shuffle_v4p3_v2p3__3_3_3_2(ptr addrspace(1) inreg %ptr) {654; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_3_2:655; GFX900:       ; %bb.0:656; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)657; GFX900-NEXT:    v_mov_b32_e32 v5, 0658; GFX900-NEXT:    ;;#ASMSTART659; GFX900-NEXT:    ; def v[0:1]660; GFX900-NEXT:    ;;#ASMEND661; GFX900-NEXT:    v_mov_b32_e32 v2, v1662; GFX900-NEXT:    v_mov_b32_e32 v3, v1663; GFX900-NEXT:    v_mov_b32_e32 v4, v0664; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]665; GFX900-NEXT:    s_waitcnt vmcnt(0)666; GFX900-NEXT:    s_setpc_b64 s[30:31]667;668; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_3_2:669; GFX90A:       ; %bb.0:670; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)671; GFX90A-NEXT:    ;;#ASMSTART672; GFX90A-NEXT:    ; def v[0:1]673; GFX90A-NEXT:    ;;#ASMEND674; GFX90A-NEXT:    v_mov_b32_e32 v4, 0675; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], v[0:1], v[0:1] op_sel:[1,0]676; GFX90A-NEXT:    v_mov_b32_e32 v0, v1677; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]678; GFX90A-NEXT:    s_waitcnt vmcnt(0)679; GFX90A-NEXT:    s_setpc_b64 s[30:31]680;681; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_3_2:682; GFX942:       ; %bb.0:683; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)684; GFX942-NEXT:    ;;#ASMSTART685; GFX942-NEXT:    ; def v[0:1]686; GFX942-NEXT:    ;;#ASMEND687; GFX942-NEXT:    v_mov_b32_e32 v4, 0688; GFX942-NEXT:    v_pk_mov_b32 v[2:3], v[0:1], v[0:1] op_sel:[1,0]689; GFX942-NEXT:    v_mov_b32_e32 v0, v1690; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]691; GFX942-NEXT:    s_waitcnt vmcnt(0)692; GFX942-NEXT:    s_setpc_b64 s[30:31]693  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()694  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()695  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 2>696  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16697  ret void698}699 700define void @v_shuffle_v4p3_v2p3__3_3_3_3(ptr addrspace(1) inreg %ptr) {701; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_3_3:702; GFX900:       ; %bb.0:703; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)704; GFX900-NEXT:    v_mov_b32_e32 v5, 0705; GFX900-NEXT:    ;;#ASMSTART706; GFX900-NEXT:    ; def v[0:1]707; GFX900-NEXT:    ;;#ASMEND708; GFX900-NEXT:    v_mov_b32_e32 v2, v1709; GFX900-NEXT:    v_mov_b32_e32 v3, v1710; GFX900-NEXT:    v_mov_b32_e32 v4, v1711; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]712; GFX900-NEXT:    s_waitcnt vmcnt(0)713; GFX900-NEXT:    s_setpc_b64 s[30:31]714;715; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_3_3:716; GFX90A:       ; %bb.0:717; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)718; GFX90A-NEXT:    ;;#ASMSTART719; GFX90A-NEXT:    ; def v[0:1]720; GFX90A-NEXT:    ;;#ASMEND721; GFX90A-NEXT:    v_mov_b32_e32 v4, 0722; GFX90A-NEXT:    v_mov_b32_e32 v0, v1723; GFX90A-NEXT:    v_mov_b32_e32 v2, v1724; GFX90A-NEXT:    v_mov_b32_e32 v3, v1725; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]726; GFX90A-NEXT:    s_waitcnt vmcnt(0)727; GFX90A-NEXT:    s_setpc_b64 s[30:31]728;729; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_3_3:730; GFX942:       ; %bb.0:731; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)732; GFX942-NEXT:    ;;#ASMSTART733; GFX942-NEXT:    ; def v[0:1]734; GFX942-NEXT:    ;;#ASMEND735; GFX942-NEXT:    v_mov_b32_e32 v4, 0736; GFX942-NEXT:    v_mov_b32_e32 v0, v1737; GFX942-NEXT:    v_mov_b32_e32 v2, v1738; GFX942-NEXT:    v_mov_b32_e32 v3, v1739; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]740; GFX942-NEXT:    s_waitcnt vmcnt(0)741; GFX942-NEXT:    s_setpc_b64 s[30:31]742  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()743  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()744  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 3>745  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16746  ret void747}748 749define void @v_shuffle_v4p3_v2p3__u_0_0_0(ptr addrspace(1) inreg %ptr) {750; GFX900-LABEL: v_shuffle_v4p3_v2p3__u_0_0_0:751; GFX900:       ; %bb.0:752; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)753; GFX900-NEXT:    ;;#ASMSTART754; GFX900-NEXT:    ; def v[0:1]755; GFX900-NEXT:    ;;#ASMEND756; GFX900-NEXT:    v_mov_b32_e32 v4, 0757; GFX900-NEXT:    v_mov_b32_e32 v1, v0758; GFX900-NEXT:    v_mov_b32_e32 v2, v0759; GFX900-NEXT:    v_mov_b32_e32 v3, v0760; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]761; GFX900-NEXT:    s_waitcnt vmcnt(0)762; GFX900-NEXT:    s_setpc_b64 s[30:31]763;764; GFX90A-LABEL: v_shuffle_v4p3_v2p3__u_0_0_0:765; GFX90A:       ; %bb.0:766; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)767; GFX90A-NEXT:    ;;#ASMSTART768; GFX90A-NEXT:    ; def v[0:1]769; GFX90A-NEXT:    ;;#ASMEND770; GFX90A-NEXT:    v_mov_b32_e32 v4, 0771; GFX90A-NEXT:    v_mov_b32_e32 v1, v0772; GFX90A-NEXT:    v_mov_b32_e32 v2, v0773; GFX90A-NEXT:    v_mov_b32_e32 v3, v0774; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]775; GFX90A-NEXT:    s_waitcnt vmcnt(0)776; GFX90A-NEXT:    s_setpc_b64 s[30:31]777;778; GFX942-LABEL: v_shuffle_v4p3_v2p3__u_0_0_0:779; GFX942:       ; %bb.0:780; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)781; GFX942-NEXT:    ;;#ASMSTART782; GFX942-NEXT:    ; def v[0:1]783; GFX942-NEXT:    ;;#ASMEND784; GFX942-NEXT:    v_mov_b32_e32 v4, 0785; GFX942-NEXT:    v_mov_b32_e32 v1, v0786; GFX942-NEXT:    v_mov_b32_e32 v2, v0787; GFX942-NEXT:    v_mov_b32_e32 v3, v0788; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]789; GFX942-NEXT:    s_waitcnt vmcnt(0)790; GFX942-NEXT:    s_setpc_b64 s[30:31]791  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()792  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0>793  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16794  ret void795}796 797define void @v_shuffle_v4p3_v2p3__0_0_0_0(ptr addrspace(1) inreg %ptr) {798; GFX900-LABEL: v_shuffle_v4p3_v2p3__0_0_0_0:799; GFX900:       ; %bb.0:800; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)801; GFX900-NEXT:    ;;#ASMSTART802; GFX900-NEXT:    ; def v[0:1]803; GFX900-NEXT:    ;;#ASMEND804; GFX900-NEXT:    v_mov_b32_e32 v4, 0805; GFX900-NEXT:    v_mov_b32_e32 v1, v0806; GFX900-NEXT:    v_mov_b32_e32 v2, v0807; GFX900-NEXT:    v_mov_b32_e32 v3, v0808; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]809; GFX900-NEXT:    s_waitcnt vmcnt(0)810; GFX900-NEXT:    s_setpc_b64 s[30:31]811;812; GFX90A-LABEL: v_shuffle_v4p3_v2p3__0_0_0_0:813; GFX90A:       ; %bb.0:814; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)815; GFX90A-NEXT:    ;;#ASMSTART816; GFX90A-NEXT:    ; def v[0:1]817; GFX90A-NEXT:    ;;#ASMEND818; GFX90A-NEXT:    v_mov_b32_e32 v4, 0819; GFX90A-NEXT:    v_mov_b32_e32 v1, v0820; GFX90A-NEXT:    v_mov_b32_e32 v2, v0821; GFX90A-NEXT:    v_mov_b32_e32 v3, v0822; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]823; GFX90A-NEXT:    s_waitcnt vmcnt(0)824; GFX90A-NEXT:    s_setpc_b64 s[30:31]825;826; GFX942-LABEL: v_shuffle_v4p3_v2p3__0_0_0_0:827; GFX942:       ; %bb.0:828; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)829; GFX942-NEXT:    ;;#ASMSTART830; GFX942-NEXT:    ; def v[0:1]831; GFX942-NEXT:    ;;#ASMEND832; GFX942-NEXT:    v_mov_b32_e32 v4, 0833; GFX942-NEXT:    v_mov_b32_e32 v1, v0834; GFX942-NEXT:    v_mov_b32_e32 v2, v0835; GFX942-NEXT:    v_mov_b32_e32 v3, v0836; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]837; GFX942-NEXT:    s_waitcnt vmcnt(0)838; GFX942-NEXT:    s_setpc_b64 s[30:31]839  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()840  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> zeroinitializer841  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16842  ret void843}844 845define void @v_shuffle_v4p3_v2p3__1_0_0_0(ptr addrspace(1) inreg %ptr) {846; GFX900-LABEL: v_shuffle_v4p3_v2p3__1_0_0_0:847; GFX900:       ; %bb.0:848; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)849; GFX900-NEXT:    v_mov_b32_e32 v5, 0850; GFX900-NEXT:    ;;#ASMSTART851; GFX900-NEXT:    ; def v[0:1]852; GFX900-NEXT:    ;;#ASMEND853; GFX900-NEXT:    v_mov_b32_e32 v2, v0854; GFX900-NEXT:    v_mov_b32_e32 v3, v0855; GFX900-NEXT:    v_mov_b32_e32 v4, v0856; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]857; GFX900-NEXT:    s_waitcnt vmcnt(0)858; GFX900-NEXT:    s_setpc_b64 s[30:31]859;860; GFX90A-LABEL: v_shuffle_v4p3_v2p3__1_0_0_0:861; GFX90A:       ; %bb.0:862; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)863; GFX90A-NEXT:    ;;#ASMSTART864; GFX90A-NEXT:    ; def v[2:3]865; GFX90A-NEXT:    ;;#ASMEND866; GFX90A-NEXT:    v_mov_b32_e32 v4, 0867; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]868; GFX90A-NEXT:    v_mov_b32_e32 v3, v2869; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]870; GFX90A-NEXT:    s_waitcnt vmcnt(0)871; GFX90A-NEXT:    s_setpc_b64 s[30:31]872;873; GFX942-LABEL: v_shuffle_v4p3_v2p3__1_0_0_0:874; GFX942:       ; %bb.0:875; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)876; GFX942-NEXT:    ;;#ASMSTART877; GFX942-NEXT:    ; def v[2:3]878; GFX942-NEXT:    ;;#ASMEND879; GFX942-NEXT:    v_mov_b32_e32 v4, 0880; GFX942-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]881; GFX942-NEXT:    v_mov_b32_e32 v3, v2882; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]883; GFX942-NEXT:    s_waitcnt vmcnt(0)884; GFX942-NEXT:    s_setpc_b64 s[30:31]885  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()886  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>887  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16888  ret void889}890 891define void @v_shuffle_v4p3_v2p3__2_0_0_0(ptr addrspace(1) inreg %ptr) {892; GFX900-LABEL: v_shuffle_v4p3_v2p3__2_0_0_0:893; GFX900:       ; %bb.0:894; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)895; GFX900-NEXT:    ;;#ASMSTART896; GFX900-NEXT:    ; def v[0:1]897; GFX900-NEXT:    ;;#ASMEND898; GFX900-NEXT:    v_mov_b32_e32 v4, 0899; GFX900-NEXT:    v_mov_b32_e32 v1, v0900; GFX900-NEXT:    v_mov_b32_e32 v2, v0901; GFX900-NEXT:    v_mov_b32_e32 v3, v0902; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]903; GFX900-NEXT:    s_waitcnt vmcnt(0)904; GFX900-NEXT:    s_setpc_b64 s[30:31]905;906; GFX90A-LABEL: v_shuffle_v4p3_v2p3__2_0_0_0:907; GFX90A:       ; %bb.0:908; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)909; GFX90A-NEXT:    ;;#ASMSTART910; GFX90A-NEXT:    ; def v[0:1]911; GFX90A-NEXT:    ;;#ASMEND912; GFX90A-NEXT:    v_mov_b32_e32 v4, 0913; GFX90A-NEXT:    v_mov_b32_e32 v1, v0914; GFX90A-NEXT:    v_mov_b32_e32 v2, v0915; GFX90A-NEXT:    v_mov_b32_e32 v3, v0916; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]917; GFX90A-NEXT:    s_waitcnt vmcnt(0)918; GFX90A-NEXT:    s_setpc_b64 s[30:31]919;920; GFX942-LABEL: v_shuffle_v4p3_v2p3__2_0_0_0:921; GFX942:       ; %bb.0:922; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)923; GFX942-NEXT:    ;;#ASMSTART924; GFX942-NEXT:    ; def v[0:1]925; GFX942-NEXT:    ;;#ASMEND926; GFX942-NEXT:    v_mov_b32_e32 v4, 0927; GFX942-NEXT:    v_mov_b32_e32 v1, v0928; GFX942-NEXT:    v_mov_b32_e32 v2, v0929; GFX942-NEXT:    v_mov_b32_e32 v3, v0930; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]931; GFX942-NEXT:    s_waitcnt vmcnt(0)932; GFX942-NEXT:    s_setpc_b64 s[30:31]933  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()934  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0>935  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16936  ret void937}938 939define void @v_shuffle_v4p3_v2p3__3_0_0_0(ptr addrspace(1) inreg %ptr) {940; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_0_0_0:941; GFX900:       ; %bb.0:942; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)943; GFX900-NEXT:    ;;#ASMSTART944; GFX900-NEXT:    ; def v[2:3]945; GFX900-NEXT:    ;;#ASMEND946; GFX900-NEXT:    v_mov_b32_e32 v5, 0947; GFX900-NEXT:    v_mov_b32_e32 v3, v2948; GFX900-NEXT:    v_mov_b32_e32 v4, v2949; GFX900-NEXT:    ;;#ASMSTART950; GFX900-NEXT:    ; def v[0:1]951; GFX900-NEXT:    ;;#ASMEND952; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]953; GFX900-NEXT:    s_waitcnt vmcnt(0)954; GFX900-NEXT:    s_setpc_b64 s[30:31]955;956; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_0_0_0:957; GFX90A:       ; %bb.0:958; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)959; GFX90A-NEXT:    ;;#ASMSTART960; GFX90A-NEXT:    ; def v[2:3]961; GFX90A-NEXT:    ;;#ASMEND962; GFX90A-NEXT:    ;;#ASMSTART963; GFX90A-NEXT:    ; def v[0:1]964; GFX90A-NEXT:    ;;#ASMEND965; GFX90A-NEXT:    v_mov_b32_e32 v4, 0966; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[2:3] op_sel:[1,0]967; GFX90A-NEXT:    v_mov_b32_e32 v3, v2968; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]969; GFX90A-NEXT:    s_waitcnt vmcnt(0)970; GFX90A-NEXT:    s_setpc_b64 s[30:31]971;972; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_0_0_0:973; GFX942:       ; %bb.0:974; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)975; GFX942-NEXT:    ;;#ASMSTART976; GFX942-NEXT:    ; def v[2:3]977; GFX942-NEXT:    ;;#ASMEND978; GFX942-NEXT:    ;;#ASMSTART979; GFX942-NEXT:    ; def v[0:1]980; GFX942-NEXT:    ;;#ASMEND981; GFX942-NEXT:    v_mov_b32_e32 v4, 0982; GFX942-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[2:3] op_sel:[1,0]983; GFX942-NEXT:    v_mov_b32_e32 v3, v2984; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]985; GFX942-NEXT:    s_waitcnt vmcnt(0)986; GFX942-NEXT:    s_setpc_b64 s[30:31]987  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()988  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()989  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 0, i32 0, i32 0>990  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16991  ret void992}993 994define void @v_shuffle_v4p3_v2p3__3_u_0_0(ptr addrspace(1) inreg %ptr) {995; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_u_0_0:996; GFX900:       ; %bb.0:997; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)998; GFX900-NEXT:    ;;#ASMSTART999; GFX900-NEXT:    ; def v[3:4]1000; GFX900-NEXT:    ;;#ASMEND1001; GFX900-NEXT:    v_mov_b32_e32 v2, 01002; GFX900-NEXT:    v_mov_b32_e32 v4, v31003; GFX900-NEXT:    ;;#ASMSTART1004; GFX900-NEXT:    ; def v[0:1]1005; GFX900-NEXT:    ;;#ASMEND1006; GFX900-NEXT:    global_store_dwordx4 v2, v[1:4], s[16:17]1007; GFX900-NEXT:    s_waitcnt vmcnt(0)1008; GFX900-NEXT:    s_setpc_b64 s[30:31]1009;1010; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_u_0_0:1011; GFX90A:       ; %bb.0:1012; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1013; GFX90A-NEXT:    ;;#ASMSTART1014; GFX90A-NEXT:    ; def v[2:3]1015; GFX90A-NEXT:    ;;#ASMEND1016; GFX90A-NEXT:    ;;#ASMSTART1017; GFX90A-NEXT:    ; def v[0:1]1018; GFX90A-NEXT:    ;;#ASMEND1019; GFX90A-NEXT:    v_mov_b32_e32 v4, 01020; GFX90A-NEXT:    v_mov_b32_e32 v0, v11021; GFX90A-NEXT:    v_mov_b32_e32 v3, v21022; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1023; GFX90A-NEXT:    s_waitcnt vmcnt(0)1024; GFX90A-NEXT:    s_setpc_b64 s[30:31]1025;1026; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_u_0_0:1027; GFX942:       ; %bb.0:1028; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1029; GFX942-NEXT:    ;;#ASMSTART1030; GFX942-NEXT:    ; def v[2:3]1031; GFX942-NEXT:    ;;#ASMEND1032; GFX942-NEXT:    ;;#ASMSTART1033; GFX942-NEXT:    ; def v[0:1]1034; GFX942-NEXT:    ;;#ASMEND1035; GFX942-NEXT:    v_mov_b32_e32 v4, 01036; GFX942-NEXT:    v_mov_b32_e32 v0, v11037; GFX942-NEXT:    v_mov_b32_e32 v3, v21038; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1039; GFX942-NEXT:    s_waitcnt vmcnt(0)1040; GFX942-NEXT:    s_setpc_b64 s[30:31]1041  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1042  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1043  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 poison, i32 0, i32 0>1044  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161045  ret void1046}1047 1048define void @v_shuffle_v4p3_v2p3__3_1_0_0(ptr addrspace(1) inreg %ptr) {1049; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_1_0_0:1050; GFX900:       ; %bb.0:1051; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1052; GFX900-NEXT:    ;;#ASMSTART1053; GFX900-NEXT:    ; def v[3:4]1054; GFX900-NEXT:    ;;#ASMEND1055; GFX900-NEXT:    v_mov_b32_e32 v5, 01056; GFX900-NEXT:    v_mov_b32_e32 v2, v41057; GFX900-NEXT:    v_mov_b32_e32 v4, v31058; GFX900-NEXT:    ;;#ASMSTART1059; GFX900-NEXT:    ; def v[0:1]1060; GFX900-NEXT:    ;;#ASMEND1061; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]1062; GFX900-NEXT:    s_waitcnt vmcnt(0)1063; GFX900-NEXT:    s_setpc_b64 s[30:31]1064;1065; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_1_0_0:1066; GFX90A:       ; %bb.0:1067; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1068; GFX90A-NEXT:    ;;#ASMSTART1069; GFX90A-NEXT:    ; def v[2:3]1070; GFX90A-NEXT:    ;;#ASMEND1071; GFX90A-NEXT:    ;;#ASMSTART1072; GFX90A-NEXT:    ; def v[0:1]1073; GFX90A-NEXT:    ;;#ASMEND1074; GFX90A-NEXT:    v_mov_b32_e32 v4, 01075; GFX90A-NEXT:    v_mov_b32_e32 v0, v11076; GFX90A-NEXT:    v_mov_b32_e32 v1, v31077; GFX90A-NEXT:    v_mov_b32_e32 v3, v21078; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1079; GFX90A-NEXT:    s_waitcnt vmcnt(0)1080; GFX90A-NEXT:    s_setpc_b64 s[30:31]1081;1082; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_1_0_0:1083; GFX942:       ; %bb.0:1084; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1085; GFX942-NEXT:    ;;#ASMSTART1086; GFX942-NEXT:    ; def v[2:3]1087; GFX942-NEXT:    ;;#ASMEND1088; GFX942-NEXT:    ;;#ASMSTART1089; GFX942-NEXT:    ; def v[0:1]1090; GFX942-NEXT:    ;;#ASMEND1091; GFX942-NEXT:    v_mov_b32_e32 v4, 01092; GFX942-NEXT:    v_mov_b32_e32 v0, v11093; GFX942-NEXT:    v_mov_b32_e32 v1, v31094; GFX942-NEXT:    v_mov_b32_e32 v3, v21095; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1096; GFX942-NEXT:    s_waitcnt vmcnt(0)1097; GFX942-NEXT:    s_setpc_b64 s[30:31]1098  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1099  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1100  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 1, i32 0, i32 0>1101  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161102  ret void1103}1104 1105define void @v_shuffle_v4p3_v2p3__3_2_0_0(ptr addrspace(1) inreg %ptr) {1106; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_2_0_0:1107; GFX900:       ; %bb.0:1108; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1109; GFX900-NEXT:    ;;#ASMSTART1110; GFX900-NEXT:    ; def v[3:4]1111; GFX900-NEXT:    ;;#ASMEND1112; GFX900-NEXT:    v_mov_b32_e32 v5, 01113; GFX900-NEXT:    ;;#ASMSTART1114; GFX900-NEXT:    ; def v[0:1]1115; GFX900-NEXT:    ;;#ASMEND1116; GFX900-NEXT:    v_mov_b32_e32 v2, v01117; GFX900-NEXT:    v_mov_b32_e32 v4, v31118; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]1119; GFX900-NEXT:    s_waitcnt vmcnt(0)1120; GFX900-NEXT:    s_setpc_b64 s[30:31]1121;1122; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_2_0_0:1123; GFX90A:       ; %bb.0:1124; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1125; GFX90A-NEXT:    ;;#ASMSTART1126; GFX90A-NEXT:    ; def v[2:3]1127; GFX90A-NEXT:    ;;#ASMEND1128; GFX90A-NEXT:    ;;#ASMSTART1129; GFX90A-NEXT:    ; def v[0:1]1130; GFX90A-NEXT:    ;;#ASMEND1131; GFX90A-NEXT:    v_mov_b32_e32 v4, 01132; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]1133; GFX90A-NEXT:    v_mov_b32_e32 v3, v21134; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1135; GFX90A-NEXT:    s_waitcnt vmcnt(0)1136; GFX90A-NEXT:    s_setpc_b64 s[30:31]1137;1138; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_2_0_0:1139; GFX942:       ; %bb.0:1140; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1141; GFX942-NEXT:    ;;#ASMSTART1142; GFX942-NEXT:    ; def v[2:3]1143; GFX942-NEXT:    ;;#ASMEND1144; GFX942-NEXT:    ;;#ASMSTART1145; GFX942-NEXT:    ; def v[0:1]1146; GFX942-NEXT:    ;;#ASMEND1147; GFX942-NEXT:    v_mov_b32_e32 v4, 01148; GFX942-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]1149; GFX942-NEXT:    v_mov_b32_e32 v3, v21150; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1151; GFX942-NEXT:    s_waitcnt vmcnt(0)1152; GFX942-NEXT:    s_setpc_b64 s[30:31]1153  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1154  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1155  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 2, i32 0, i32 0>1156  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161157  ret void1158}1159 1160define void @v_shuffle_v4p3_v2p3__3_3_0_0(ptr addrspace(1) inreg %ptr) {1161; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_0_0:1162; GFX900:       ; %bb.0:1163; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1164; GFX900-NEXT:    ;;#ASMSTART1165; GFX900-NEXT:    ; def v[3:4]1166; GFX900-NEXT:    ;;#ASMEND1167; GFX900-NEXT:    v_mov_b32_e32 v5, 01168; GFX900-NEXT:    ;;#ASMSTART1169; GFX900-NEXT:    ; def v[0:1]1170; GFX900-NEXT:    ;;#ASMEND1171; GFX900-NEXT:    v_mov_b32_e32 v2, v11172; GFX900-NEXT:    v_mov_b32_e32 v4, v31173; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]1174; GFX900-NEXT:    s_waitcnt vmcnt(0)1175; GFX900-NEXT:    s_setpc_b64 s[30:31]1176;1177; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_0_0:1178; GFX90A:       ; %bb.0:1179; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1180; GFX90A-NEXT:    ;;#ASMSTART1181; GFX90A-NEXT:    ; def v[2:3]1182; GFX90A-NEXT:    ;;#ASMEND1183; GFX90A-NEXT:    ;;#ASMSTART1184; GFX90A-NEXT:    ; def v[0:1]1185; GFX90A-NEXT:    ;;#ASMEND1186; GFX90A-NEXT:    v_mov_b32_e32 v4, 01187; GFX90A-NEXT:    v_mov_b32_e32 v0, v11188; GFX90A-NEXT:    v_mov_b32_e32 v3, v21189; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1190; GFX90A-NEXT:    s_waitcnt vmcnt(0)1191; GFX90A-NEXT:    s_setpc_b64 s[30:31]1192;1193; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_0_0:1194; GFX942:       ; %bb.0:1195; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1196; GFX942-NEXT:    ;;#ASMSTART1197; GFX942-NEXT:    ; def v[2:3]1198; GFX942-NEXT:    ;;#ASMEND1199; GFX942-NEXT:    ;;#ASMSTART1200; GFX942-NEXT:    ; def v[0:1]1201; GFX942-NEXT:    ;;#ASMEND1202; GFX942-NEXT:    v_mov_b32_e32 v4, 01203; GFX942-NEXT:    v_mov_b32_e32 v0, v11204; GFX942-NEXT:    v_mov_b32_e32 v3, v21205; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1206; GFX942-NEXT:    s_waitcnt vmcnt(0)1207; GFX942-NEXT:    s_setpc_b64 s[30:31]1208  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1209  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1210  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 0>1211  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161212  ret void1213}1214 1215define void @v_shuffle_v4p3_v2p3__3_3_u_0(ptr addrspace(1) inreg %ptr) {1216; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_u_0:1217; GFX900:       ; %bb.0:1218; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1219; GFX900-NEXT:    v_mov_b32_e32 v3, 01220; GFX900-NEXT:    ;;#ASMSTART1221; GFX900-NEXT:    ; def v[0:1]1222; GFX900-NEXT:    ;;#ASMEND1223; GFX900-NEXT:    v_mov_b32_e32 v2, v11224; GFX900-NEXT:    ;;#ASMSTART1225; GFX900-NEXT:    ; def v[4:5]1226; GFX900-NEXT:    ;;#ASMEND1227; GFX900-NEXT:    global_store_dwordx4 v3, v[1:4], s[16:17]1228; GFX900-NEXT:    s_waitcnt vmcnt(0)1229; GFX900-NEXT:    s_setpc_b64 s[30:31]1230;1231; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_u_0:1232; GFX90A:       ; %bb.0:1233; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1234; GFX90A-NEXT:    ;;#ASMSTART1235; GFX90A-NEXT:    ; def v[2:3]1236; GFX90A-NEXT:    ;;#ASMEND1237; GFX90A-NEXT:    ;;#ASMSTART1238; GFX90A-NEXT:    ; def v[0:1]1239; GFX90A-NEXT:    ;;#ASMEND1240; GFX90A-NEXT:    v_mov_b32_e32 v4, 01241; GFX90A-NEXT:    v_mov_b32_e32 v0, v11242; GFX90A-NEXT:    v_mov_b32_e32 v3, v21243; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1244; GFX90A-NEXT:    s_waitcnt vmcnt(0)1245; GFX90A-NEXT:    s_setpc_b64 s[30:31]1246;1247; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_u_0:1248; GFX942:       ; %bb.0:1249; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1250; GFX942-NEXT:    ;;#ASMSTART1251; GFX942-NEXT:    ; def v[2:3]1252; GFX942-NEXT:    ;;#ASMEND1253; GFX942-NEXT:    ;;#ASMSTART1254; GFX942-NEXT:    ; def v[0:1]1255; GFX942-NEXT:    ;;#ASMEND1256; GFX942-NEXT:    v_mov_b32_e32 v4, 01257; GFX942-NEXT:    v_mov_b32_e32 v0, v11258; GFX942-NEXT:    v_mov_b32_e32 v3, v21259; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1260; GFX942-NEXT:    s_waitcnt vmcnt(0)1261; GFX942-NEXT:    s_setpc_b64 s[30:31]1262  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1263  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1264  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 0>1265  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161266  ret void1267}1268 1269define void @v_shuffle_v4p3_v2p3__3_3_1_0(ptr addrspace(1) inreg %ptr) {1270; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_1_0:1271; GFX900:       ; %bb.0:1272; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1273; GFX900-NEXT:    v_mov_b32_e32 v6, 01274; GFX900-NEXT:    ;;#ASMSTART1275; GFX900-NEXT:    ; def v[4:5]1276; GFX900-NEXT:    ;;#ASMEND1277; GFX900-NEXT:    ;;#ASMSTART1278; GFX900-NEXT:    ; def v[0:1]1279; GFX900-NEXT:    ;;#ASMEND1280; GFX900-NEXT:    v_mov_b32_e32 v2, v11281; GFX900-NEXT:    v_mov_b32_e32 v3, v51282; GFX900-NEXT:    global_store_dwordx4 v6, v[1:4], s[16:17]1283; GFX900-NEXT:    s_waitcnt vmcnt(0)1284; GFX900-NEXT:    s_setpc_b64 s[30:31]1285;1286; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_1_0:1287; GFX90A:       ; %bb.0:1288; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1289; GFX90A-NEXT:    ;;#ASMSTART1290; GFX90A-NEXT:    ; def v[2:3]1291; GFX90A-NEXT:    ;;#ASMEND1292; GFX90A-NEXT:    ;;#ASMSTART1293; GFX90A-NEXT:    ; def v[0:1]1294; GFX90A-NEXT:    ;;#ASMEND1295; GFX90A-NEXT:    v_mov_b32_e32 v4, 01296; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], v[2:3], v[2:3] op_sel:[1,0]1297; GFX90A-NEXT:    v_mov_b32_e32 v0, v11298; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1299; GFX90A-NEXT:    s_waitcnt vmcnt(0)1300; GFX90A-NEXT:    s_setpc_b64 s[30:31]1301;1302; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_1_0:1303; GFX942:       ; %bb.0:1304; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1305; GFX942-NEXT:    ;;#ASMSTART1306; GFX942-NEXT:    ; def v[2:3]1307; GFX942-NEXT:    ;;#ASMEND1308; GFX942-NEXT:    ;;#ASMSTART1309; GFX942-NEXT:    ; def v[0:1]1310; GFX942-NEXT:    ;;#ASMEND1311; GFX942-NEXT:    v_mov_b32_e32 v4, 01312; GFX942-NEXT:    v_pk_mov_b32 v[2:3], v[2:3], v[2:3] op_sel:[1,0]1313; GFX942-NEXT:    v_mov_b32_e32 v0, v11314; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1315; GFX942-NEXT:    s_waitcnt vmcnt(0)1316; GFX942-NEXT:    s_setpc_b64 s[30:31]1317  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1318  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1319  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 0>1320  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161321  ret void1322}1323 1324define void @v_shuffle_v4p3_v2p3__3_3_2_0(ptr addrspace(1) inreg %ptr) {1325; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_2_0:1326; GFX900:       ; %bb.0:1327; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1328; GFX900-NEXT:    v_mov_b32_e32 v6, 01329; GFX900-NEXT:    ;;#ASMSTART1330; GFX900-NEXT:    ; def v[0:1]1331; GFX900-NEXT:    ;;#ASMEND1332; GFX900-NEXT:    v_mov_b32_e32 v2, v11333; GFX900-NEXT:    v_mov_b32_e32 v3, v01334; GFX900-NEXT:    ;;#ASMSTART1335; GFX900-NEXT:    ; def v[4:5]1336; GFX900-NEXT:    ;;#ASMEND1337; GFX900-NEXT:    global_store_dwordx4 v6, v[1:4], s[16:17]1338; GFX900-NEXT:    s_waitcnt vmcnt(0)1339; GFX900-NEXT:    s_setpc_b64 s[30:31]1340;1341; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_2_0:1342; GFX90A:       ; %bb.0:1343; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1344; GFX90A-NEXT:    ;;#ASMSTART1345; GFX90A-NEXT:    ; def v[2:3]1346; GFX90A-NEXT:    ;;#ASMEND1347; GFX90A-NEXT:    v_mov_b32_e32 v6, 01348; GFX90A-NEXT:    ;;#ASMSTART1349; GFX90A-NEXT:    ; def v[4:5]1350; GFX90A-NEXT:    ;;#ASMEND1351; GFX90A-NEXT:    v_mov_b32_e32 v0, v31352; GFX90A-NEXT:    v_mov_b32_e32 v1, v31353; GFX90A-NEXT:    v_mov_b32_e32 v3, v41354; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]1355; GFX90A-NEXT:    s_waitcnt vmcnt(0)1356; GFX90A-NEXT:    s_setpc_b64 s[30:31]1357;1358; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_2_0:1359; GFX942:       ; %bb.0:1360; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1361; GFX942-NEXT:    ;;#ASMSTART1362; GFX942-NEXT:    ; def v[2:3]1363; GFX942-NEXT:    ;;#ASMEND1364; GFX942-NEXT:    v_mov_b32_e32 v6, 01365; GFX942-NEXT:    ;;#ASMSTART1366; GFX942-NEXT:    ; def v[4:5]1367; GFX942-NEXT:    ;;#ASMEND1368; GFX942-NEXT:    v_mov_b32_e32 v0, v31369; GFX942-NEXT:    v_mov_b32_e32 v1, v31370; GFX942-NEXT:    v_mov_b32_e32 v3, v41371; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]1372; GFX942-NEXT:    s_waitcnt vmcnt(0)1373; GFX942-NEXT:    s_setpc_b64 s[30:31]1374  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1375  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1376  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 0>1377  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161378  ret void1379}1380 1381define void @v_shuffle_v4p3_v2p3__u_1_1_1(ptr addrspace(1) inreg %ptr) {1382; GFX900-LABEL: v_shuffle_v4p3_v2p3__u_1_1_1:1383; GFX900:       ; %bb.0:1384; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1385; GFX900-NEXT:    v_mov_b32_e32 v4, 01386; GFX900-NEXT:    ;;#ASMSTART1387; GFX900-NEXT:    ; def v[0:1]1388; GFX900-NEXT:    ;;#ASMEND1389; GFX900-NEXT:    v_mov_b32_e32 v2, v11390; GFX900-NEXT:    v_mov_b32_e32 v3, v11391; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1392; GFX900-NEXT:    s_waitcnt vmcnt(0)1393; GFX900-NEXT:    s_setpc_b64 s[30:31]1394;1395; GFX90A-LABEL: v_shuffle_v4p3_v2p3__u_1_1_1:1396; GFX90A:       ; %bb.0:1397; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1398; GFX90A-NEXT:    v_mov_b32_e32 v4, 01399; GFX90A-NEXT:    ;;#ASMSTART1400; GFX90A-NEXT:    ; def v[0:1]1401; GFX90A-NEXT:    ;;#ASMEND1402; GFX90A-NEXT:    v_mov_b32_e32 v2, v11403; GFX90A-NEXT:    v_mov_b32_e32 v3, v11404; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1405; GFX90A-NEXT:    s_waitcnt vmcnt(0)1406; GFX90A-NEXT:    s_setpc_b64 s[30:31]1407;1408; GFX942-LABEL: v_shuffle_v4p3_v2p3__u_1_1_1:1409; GFX942:       ; %bb.0:1410; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1411; GFX942-NEXT:    v_mov_b32_e32 v4, 01412; GFX942-NEXT:    ;;#ASMSTART1413; GFX942-NEXT:    ; def v[0:1]1414; GFX942-NEXT:    ;;#ASMEND1415; GFX942-NEXT:    s_nop 01416; GFX942-NEXT:    v_mov_b32_e32 v2, v11417; GFX942-NEXT:    v_mov_b32_e32 v3, v11418; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1419; GFX942-NEXT:    s_waitcnt vmcnt(0)1420; GFX942-NEXT:    s_setpc_b64 s[30:31]1421  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1422  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1>1423  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161424  ret void1425}1426 1427define void @v_shuffle_v4p3_v2p3__0_1_1_1(ptr addrspace(1) inreg %ptr) {1428; GFX900-LABEL: v_shuffle_v4p3_v2p3__0_1_1_1:1429; GFX900:       ; %bb.0:1430; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1431; GFX900-NEXT:    v_mov_b32_e32 v4, 01432; GFX900-NEXT:    ;;#ASMSTART1433; GFX900-NEXT:    ; def v[0:1]1434; GFX900-NEXT:    ;;#ASMEND1435; GFX900-NEXT:    v_mov_b32_e32 v2, v11436; GFX900-NEXT:    v_mov_b32_e32 v3, v11437; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1438; GFX900-NEXT:    s_waitcnt vmcnt(0)1439; GFX900-NEXT:    s_setpc_b64 s[30:31]1440;1441; GFX90A-LABEL: v_shuffle_v4p3_v2p3__0_1_1_1:1442; GFX90A:       ; %bb.0:1443; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1444; GFX90A-NEXT:    v_mov_b32_e32 v4, 01445; GFX90A-NEXT:    ;;#ASMSTART1446; GFX90A-NEXT:    ; def v[0:1]1447; GFX90A-NEXT:    ;;#ASMEND1448; GFX90A-NEXT:    v_mov_b32_e32 v2, v11449; GFX90A-NEXT:    v_mov_b32_e32 v3, v11450; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1451; GFX90A-NEXT:    s_waitcnt vmcnt(0)1452; GFX90A-NEXT:    s_setpc_b64 s[30:31]1453;1454; GFX942-LABEL: v_shuffle_v4p3_v2p3__0_1_1_1:1455; GFX942:       ; %bb.0:1456; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1457; GFX942-NEXT:    v_mov_b32_e32 v4, 01458; GFX942-NEXT:    ;;#ASMSTART1459; GFX942-NEXT:    ; def v[0:1]1460; GFX942-NEXT:    ;;#ASMEND1461; GFX942-NEXT:    s_nop 01462; GFX942-NEXT:    v_mov_b32_e32 v2, v11463; GFX942-NEXT:    v_mov_b32_e32 v3, v11464; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1465; GFX942-NEXT:    s_waitcnt vmcnt(0)1466; GFX942-NEXT:    s_setpc_b64 s[30:31]1467  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1468  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1>1469  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161470  ret void1471}1472 1473define void @v_shuffle_v4p3_v2p3__1_1_1_1(ptr addrspace(1) inreg %ptr) {1474; GFX900-LABEL: v_shuffle_v4p3_v2p3__1_1_1_1:1475; GFX900:       ; %bb.0:1476; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1477; GFX900-NEXT:    v_mov_b32_e32 v5, 01478; GFX900-NEXT:    ;;#ASMSTART1479; GFX900-NEXT:    ; def v[0:1]1480; GFX900-NEXT:    ;;#ASMEND1481; GFX900-NEXT:    v_mov_b32_e32 v2, v11482; GFX900-NEXT:    v_mov_b32_e32 v3, v11483; GFX900-NEXT:    v_mov_b32_e32 v4, v11484; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]1485; GFX900-NEXT:    s_waitcnt vmcnt(0)1486; GFX900-NEXT:    s_setpc_b64 s[30:31]1487;1488; GFX90A-LABEL: v_shuffle_v4p3_v2p3__1_1_1_1:1489; GFX90A:       ; %bb.0:1490; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1491; GFX90A-NEXT:    ;;#ASMSTART1492; GFX90A-NEXT:    ; def v[0:1]1493; GFX90A-NEXT:    ;;#ASMEND1494; GFX90A-NEXT:    v_mov_b32_e32 v4, 01495; GFX90A-NEXT:    v_mov_b32_e32 v0, v11496; GFX90A-NEXT:    v_mov_b32_e32 v2, v11497; GFX90A-NEXT:    v_mov_b32_e32 v3, v11498; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1499; GFX90A-NEXT:    s_waitcnt vmcnt(0)1500; GFX90A-NEXT:    s_setpc_b64 s[30:31]1501;1502; GFX942-LABEL: v_shuffle_v4p3_v2p3__1_1_1_1:1503; GFX942:       ; %bb.0:1504; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1505; GFX942-NEXT:    ;;#ASMSTART1506; GFX942-NEXT:    ; def v[0:1]1507; GFX942-NEXT:    ;;#ASMEND1508; GFX942-NEXT:    v_mov_b32_e32 v4, 01509; GFX942-NEXT:    v_mov_b32_e32 v0, v11510; GFX942-NEXT:    v_mov_b32_e32 v2, v11511; GFX942-NEXT:    v_mov_b32_e32 v3, v11512; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1513; GFX942-NEXT:    s_waitcnt vmcnt(0)1514; GFX942-NEXT:    s_setpc_b64 s[30:31]1515  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1516  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>1517  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161518  ret void1519}1520 1521define void @v_shuffle_v4p3_v2p3__2_1_1_1(ptr addrspace(1) inreg %ptr) {1522; GFX900-LABEL: v_shuffle_v4p3_v2p3__2_1_1_1:1523; GFX900:       ; %bb.0:1524; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1525; GFX900-NEXT:    v_mov_b32_e32 v4, 01526; GFX900-NEXT:    ;;#ASMSTART1527; GFX900-NEXT:    ; def v[0:1]1528; GFX900-NEXT:    ;;#ASMEND1529; GFX900-NEXT:    v_mov_b32_e32 v2, v11530; GFX900-NEXT:    v_mov_b32_e32 v3, v11531; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1532; GFX900-NEXT:    s_waitcnt vmcnt(0)1533; GFX900-NEXT:    s_setpc_b64 s[30:31]1534;1535; GFX90A-LABEL: v_shuffle_v4p3_v2p3__2_1_1_1:1536; GFX90A:       ; %bb.0:1537; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1538; GFX90A-NEXT:    v_mov_b32_e32 v4, 01539; GFX90A-NEXT:    ;;#ASMSTART1540; GFX90A-NEXT:    ; def v[0:1]1541; GFX90A-NEXT:    ;;#ASMEND1542; GFX90A-NEXT:    v_mov_b32_e32 v2, v11543; GFX90A-NEXT:    v_mov_b32_e32 v3, v11544; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1545; GFX90A-NEXT:    s_waitcnt vmcnt(0)1546; GFX90A-NEXT:    s_setpc_b64 s[30:31]1547;1548; GFX942-LABEL: v_shuffle_v4p3_v2p3__2_1_1_1:1549; GFX942:       ; %bb.0:1550; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1551; GFX942-NEXT:    v_mov_b32_e32 v4, 01552; GFX942-NEXT:    ;;#ASMSTART1553; GFX942-NEXT:    ; def v[0:1]1554; GFX942-NEXT:    ;;#ASMEND1555; GFX942-NEXT:    s_nop 01556; GFX942-NEXT:    v_mov_b32_e32 v2, v11557; GFX942-NEXT:    v_mov_b32_e32 v3, v11558; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1559; GFX942-NEXT:    s_waitcnt vmcnt(0)1560; GFX942-NEXT:    s_setpc_b64 s[30:31]1561  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1562  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1>1563  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161564  ret void1565}1566 1567define void @v_shuffle_v4p3_v2p3__3_1_1_1(ptr addrspace(1) inreg %ptr) {1568; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_1_1_1:1569; GFX900:       ; %bb.0:1570; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1571; GFX900-NEXT:    v_mov_b32_e32 v5, 01572; GFX900-NEXT:    ;;#ASMSTART1573; GFX900-NEXT:    ; def v[1:2]1574; GFX900-NEXT:    ;;#ASMEND1575; GFX900-NEXT:    v_mov_b32_e32 v3, v21576; GFX900-NEXT:    v_mov_b32_e32 v4, v21577; GFX900-NEXT:    ;;#ASMSTART1578; GFX900-NEXT:    ; def v[0:1]1579; GFX900-NEXT:    ;;#ASMEND1580; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]1581; GFX900-NEXT:    s_waitcnt vmcnt(0)1582; GFX900-NEXT:    s_setpc_b64 s[30:31]1583;1584; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_1_1_1:1585; GFX90A:       ; %bb.0:1586; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1587; GFX90A-NEXT:    ;;#ASMSTART1588; GFX90A-NEXT:    ; def v[0:1]1589; GFX90A-NEXT:    ;;#ASMEND1590; GFX90A-NEXT:    ;;#ASMSTART1591; GFX90A-NEXT:    ; def v[2:3]1592; GFX90A-NEXT:    ;;#ASMEND1593; GFX90A-NEXT:    v_mov_b32_e32 v4, 01594; GFX90A-NEXT:    v_mov_b32_e32 v0, v31595; GFX90A-NEXT:    v_mov_b32_e32 v2, v11596; GFX90A-NEXT:    v_mov_b32_e32 v3, v11597; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1598; GFX90A-NEXT:    s_waitcnt vmcnt(0)1599; GFX90A-NEXT:    s_setpc_b64 s[30:31]1600;1601; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_1_1_1:1602; GFX942:       ; %bb.0:1603; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1604; GFX942-NEXT:    ;;#ASMSTART1605; GFX942-NEXT:    ; def v[0:1]1606; GFX942-NEXT:    ;;#ASMEND1607; GFX942-NEXT:    ;;#ASMSTART1608; GFX942-NEXT:    ; def v[2:3]1609; GFX942-NEXT:    ;;#ASMEND1610; GFX942-NEXT:    v_mov_b32_e32 v4, 01611; GFX942-NEXT:    v_mov_b32_e32 v0, v31612; GFX942-NEXT:    v_mov_b32_e32 v2, v11613; GFX942-NEXT:    v_mov_b32_e32 v3, v11614; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1615; GFX942-NEXT:    s_waitcnt vmcnt(0)1616; GFX942-NEXT:    s_setpc_b64 s[30:31]1617  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1618  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1619  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 1, i32 1, i32 1>1620  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161621  ret void1622}1623 1624define void @v_shuffle_v4p3_v2p3__3_u_1_1(ptr addrspace(1) inreg %ptr) {1625; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_u_1_1:1626; GFX900:       ; %bb.0:1627; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1628; GFX900-NEXT:    v_mov_b32_e32 v5, 01629; GFX900-NEXT:    ;;#ASMSTART1630; GFX900-NEXT:    ; def v[2:3]1631; GFX900-NEXT:    ;;#ASMEND1632; GFX900-NEXT:    v_mov_b32_e32 v4, v31633; GFX900-NEXT:    ;;#ASMSTART1634; GFX900-NEXT:    ; def v[0:1]1635; GFX900-NEXT:    ;;#ASMEND1636; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]1637; GFX900-NEXT:    s_waitcnt vmcnt(0)1638; GFX900-NEXT:    s_setpc_b64 s[30:31]1639;1640; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_u_1_1:1641; GFX90A:       ; %bb.0:1642; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1643; GFX90A-NEXT:    ;;#ASMSTART1644; GFX90A-NEXT:    ; def v[2:3]1645; GFX90A-NEXT:    ;;#ASMEND1646; GFX90A-NEXT:    ;;#ASMSTART1647; GFX90A-NEXT:    ; def v[0:1]1648; GFX90A-NEXT:    ;;#ASMEND1649; GFX90A-NEXT:    v_mov_b32_e32 v4, 01650; GFX90A-NEXT:    v_mov_b32_e32 v0, v11651; GFX90A-NEXT:    v_mov_b32_e32 v2, v31652; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1653; GFX90A-NEXT:    s_waitcnt vmcnt(0)1654; GFX90A-NEXT:    s_setpc_b64 s[30:31]1655;1656; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_u_1_1:1657; GFX942:       ; %bb.0:1658; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1659; GFX942-NEXT:    ;;#ASMSTART1660; GFX942-NEXT:    ; def v[2:3]1661; GFX942-NEXT:    ;;#ASMEND1662; GFX942-NEXT:    ;;#ASMSTART1663; GFX942-NEXT:    ; def v[0:1]1664; GFX942-NEXT:    ;;#ASMEND1665; GFX942-NEXT:    v_mov_b32_e32 v4, 01666; GFX942-NEXT:    v_mov_b32_e32 v0, v11667; GFX942-NEXT:    v_mov_b32_e32 v2, v31668; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1669; GFX942-NEXT:    s_waitcnt vmcnt(0)1670; GFX942-NEXT:    s_setpc_b64 s[30:31]1671  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1672  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1673  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 poison, i32 1, i32 1>1674  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161675  ret void1676}1677 1678define void @v_shuffle_v4p3_v2p3__3_0_1_1(ptr addrspace(1) inreg %ptr) {1679; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_0_1_1:1680; GFX900:       ; %bb.0:1681; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1682; GFX900-NEXT:    v_mov_b32_e32 v5, 01683; GFX900-NEXT:    ;;#ASMSTART1684; GFX900-NEXT:    ; def v[2:3]1685; GFX900-NEXT:    ;;#ASMEND1686; GFX900-NEXT:    v_mov_b32_e32 v4, v31687; GFX900-NEXT:    ;;#ASMSTART1688; GFX900-NEXT:    ; def v[0:1]1689; GFX900-NEXT:    ;;#ASMEND1690; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]1691; GFX900-NEXT:    s_waitcnt vmcnt(0)1692; GFX900-NEXT:    s_setpc_b64 s[30:31]1693;1694; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_0_1_1:1695; GFX90A:       ; %bb.0:1696; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1697; GFX90A-NEXT:    ;;#ASMSTART1698; GFX90A-NEXT:    ; def v[2:3]1699; GFX90A-NEXT:    ;;#ASMEND1700; GFX90A-NEXT:    ;;#ASMSTART1701; GFX90A-NEXT:    ; def v[0:1]1702; GFX90A-NEXT:    ;;#ASMEND1703; GFX90A-NEXT:    v_mov_b32_e32 v4, 01704; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[2:3] op_sel:[1,0]1705; GFX90A-NEXT:    v_mov_b32_e32 v2, v31706; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1707; GFX90A-NEXT:    s_waitcnt vmcnt(0)1708; GFX90A-NEXT:    s_setpc_b64 s[30:31]1709;1710; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_0_1_1:1711; GFX942:       ; %bb.0:1712; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1713; GFX942-NEXT:    ;;#ASMSTART1714; GFX942-NEXT:    ; def v[2:3]1715; GFX942-NEXT:    ;;#ASMEND1716; GFX942-NEXT:    ;;#ASMSTART1717; GFX942-NEXT:    ; def v[0:1]1718; GFX942-NEXT:    ;;#ASMEND1719; GFX942-NEXT:    v_mov_b32_e32 v4, 01720; GFX942-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[2:3] op_sel:[1,0]1721; GFX942-NEXT:    v_mov_b32_e32 v2, v31722; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1723; GFX942-NEXT:    s_waitcnt vmcnt(0)1724; GFX942-NEXT:    s_setpc_b64 s[30:31]1725  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1726  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1727  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 0, i32 1, i32 1>1728  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161729  ret void1730}1731 1732define void @v_shuffle_v4p3_v2p3__3_2_1_1(ptr addrspace(1) inreg %ptr) {1733; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_2_1_1:1734; GFX900:       ; %bb.0:1735; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1736; GFX900-NEXT:    ;;#ASMSTART1737; GFX900-NEXT:    ; def v[2:3]1738; GFX900-NEXT:    ;;#ASMEND1739; GFX900-NEXT:    v_mov_b32_e32 v5, 01740; GFX900-NEXT:    ;;#ASMSTART1741; GFX900-NEXT:    ; def v[0:1]1742; GFX900-NEXT:    ;;#ASMEND1743; GFX900-NEXT:    v_mov_b32_e32 v2, v01744; GFX900-NEXT:    v_mov_b32_e32 v4, v31745; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]1746; GFX900-NEXT:    s_waitcnt vmcnt(0)1747; GFX900-NEXT:    s_setpc_b64 s[30:31]1748;1749; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_2_1_1:1750; GFX90A:       ; %bb.0:1751; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1752; GFX90A-NEXT:    ;;#ASMSTART1753; GFX90A-NEXT:    ; def v[2:3]1754; GFX90A-NEXT:    ;;#ASMEND1755; GFX90A-NEXT:    ;;#ASMSTART1756; GFX90A-NEXT:    ; def v[0:1]1757; GFX90A-NEXT:    ;;#ASMEND1758; GFX90A-NEXT:    v_mov_b32_e32 v4, 01759; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]1760; GFX90A-NEXT:    v_mov_b32_e32 v2, v31761; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1762; GFX90A-NEXT:    s_waitcnt vmcnt(0)1763; GFX90A-NEXT:    s_setpc_b64 s[30:31]1764;1765; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_2_1_1:1766; GFX942:       ; %bb.0:1767; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1768; GFX942-NEXT:    ;;#ASMSTART1769; GFX942-NEXT:    ; def v[2:3]1770; GFX942-NEXT:    ;;#ASMEND1771; GFX942-NEXT:    ;;#ASMSTART1772; GFX942-NEXT:    ; def v[0:1]1773; GFX942-NEXT:    ;;#ASMEND1774; GFX942-NEXT:    v_mov_b32_e32 v4, 01775; GFX942-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]1776; GFX942-NEXT:    v_mov_b32_e32 v2, v31777; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1778; GFX942-NEXT:    s_waitcnt vmcnt(0)1779; GFX942-NEXT:    s_setpc_b64 s[30:31]1780  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1781  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1782  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 2, i32 1, i32 1>1783  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161784  ret void1785}1786 1787define void @v_shuffle_v4p3_v2p3__3_3_1_1(ptr addrspace(1) inreg %ptr) {1788; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_1_1:1789; GFX900:       ; %bb.0:1790; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1791; GFX900-NEXT:    ;;#ASMSTART1792; GFX900-NEXT:    ; def v[2:3]1793; GFX900-NEXT:    ;;#ASMEND1794; GFX900-NEXT:    v_mov_b32_e32 v5, 01795; GFX900-NEXT:    ;;#ASMSTART1796; GFX900-NEXT:    ; def v[0:1]1797; GFX900-NEXT:    ;;#ASMEND1798; GFX900-NEXT:    v_mov_b32_e32 v2, v11799; GFX900-NEXT:    v_mov_b32_e32 v4, v31800; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]1801; GFX900-NEXT:    s_waitcnt vmcnt(0)1802; GFX900-NEXT:    s_setpc_b64 s[30:31]1803;1804; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_1_1:1805; GFX90A:       ; %bb.0:1806; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1807; GFX90A-NEXT:    ;;#ASMSTART1808; GFX90A-NEXT:    ; def v[2:3]1809; GFX90A-NEXT:    ;;#ASMEND1810; GFX90A-NEXT:    ;;#ASMSTART1811; GFX90A-NEXT:    ; def v[0:1]1812; GFX90A-NEXT:    ;;#ASMEND1813; GFX90A-NEXT:    v_mov_b32_e32 v4, 01814; GFX90A-NEXT:    v_mov_b32_e32 v0, v11815; GFX90A-NEXT:    v_mov_b32_e32 v2, v31816; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1817; GFX90A-NEXT:    s_waitcnt vmcnt(0)1818; GFX90A-NEXT:    s_setpc_b64 s[30:31]1819;1820; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_1_1:1821; GFX942:       ; %bb.0:1822; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1823; GFX942-NEXT:    ;;#ASMSTART1824; GFX942-NEXT:    ; def v[2:3]1825; GFX942-NEXT:    ;;#ASMEND1826; GFX942-NEXT:    ;;#ASMSTART1827; GFX942-NEXT:    ; def v[0:1]1828; GFX942-NEXT:    ;;#ASMEND1829; GFX942-NEXT:    v_mov_b32_e32 v4, 01830; GFX942-NEXT:    v_mov_b32_e32 v0, v11831; GFX942-NEXT:    v_mov_b32_e32 v2, v31832; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1833; GFX942-NEXT:    s_waitcnt vmcnt(0)1834; GFX942-NEXT:    s_setpc_b64 s[30:31]1835  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1836  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1837  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 1>1838  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161839  ret void1840}1841 1842define void @v_shuffle_v4p3_v2p3__3_3_u_1(ptr addrspace(1) inreg %ptr) {1843; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_u_1:1844; GFX900:       ; %bb.0:1845; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1846; GFX900-NEXT:    v_mov_b32_e32 v5, 01847; GFX900-NEXT:    ;;#ASMSTART1848; GFX900-NEXT:    ; def v[0:1]1849; GFX900-NEXT:    ;;#ASMEND1850; GFX900-NEXT:    v_mov_b32_e32 v2, v11851; GFX900-NEXT:    ;;#ASMSTART1852; GFX900-NEXT:    ; def v[3:4]1853; GFX900-NEXT:    ;;#ASMEND1854; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]1855; GFX900-NEXT:    s_waitcnt vmcnt(0)1856; GFX900-NEXT:    s_setpc_b64 s[30:31]1857;1858; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_u_1:1859; GFX90A:       ; %bb.0:1860; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1861; GFX90A-NEXT:    ;;#ASMSTART1862; GFX90A-NEXT:    ; def v[0:1]1863; GFX90A-NEXT:    ;;#ASMEND1864; GFX90A-NEXT:    v_mov_b32_e32 v4, 01865; GFX90A-NEXT:    v_mov_b32_e32 v0, v11866; GFX90A-NEXT:    ;;#ASMSTART1867; GFX90A-NEXT:    ; def v[2:3]1868; GFX90A-NEXT:    ;;#ASMEND1869; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1870; GFX90A-NEXT:    s_waitcnt vmcnt(0)1871; GFX90A-NEXT:    s_setpc_b64 s[30:31]1872;1873; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_u_1:1874; GFX942:       ; %bb.0:1875; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1876; GFX942-NEXT:    ;;#ASMSTART1877; GFX942-NEXT:    ; def v[0:1]1878; GFX942-NEXT:    ;;#ASMEND1879; GFX942-NEXT:    v_mov_b32_e32 v4, 01880; GFX942-NEXT:    v_mov_b32_e32 v0, v11881; GFX942-NEXT:    ;;#ASMSTART1882; GFX942-NEXT:    ; def v[2:3]1883; GFX942-NEXT:    ;;#ASMEND1884; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1885; GFX942-NEXT:    s_waitcnt vmcnt(0)1886; GFX942-NEXT:    s_setpc_b64 s[30:31]1887  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1888  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1889  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 1>1890  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161891  ret void1892}1893 1894define void @v_shuffle_v4p3_v2p3__3_3_0_1(ptr addrspace(1) inreg %ptr) {1895; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_0_1:1896; GFX900:       ; %bb.0:1897; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1898; GFX900-NEXT:    v_mov_b32_e32 v5, 01899; GFX900-NEXT:    ;;#ASMSTART1900; GFX900-NEXT:    ; def v[0:1]1901; GFX900-NEXT:    ;;#ASMEND1902; GFX900-NEXT:    v_mov_b32_e32 v2, v11903; GFX900-NEXT:    ;;#ASMSTART1904; GFX900-NEXT:    ; def v[3:4]1905; GFX900-NEXT:    ;;#ASMEND1906; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]1907; GFX900-NEXT:    s_waitcnt vmcnt(0)1908; GFX900-NEXT:    s_setpc_b64 s[30:31]1909;1910; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_0_1:1911; GFX90A:       ; %bb.0:1912; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1913; GFX90A-NEXT:    ;;#ASMSTART1914; GFX90A-NEXT:    ; def v[0:1]1915; GFX90A-NEXT:    ;;#ASMEND1916; GFX90A-NEXT:    v_mov_b32_e32 v4, 01917; GFX90A-NEXT:    v_mov_b32_e32 v0, v11918; GFX90A-NEXT:    ;;#ASMSTART1919; GFX90A-NEXT:    ; def v[2:3]1920; GFX90A-NEXT:    ;;#ASMEND1921; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1922; GFX90A-NEXT:    s_waitcnt vmcnt(0)1923; GFX90A-NEXT:    s_setpc_b64 s[30:31]1924;1925; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_0_1:1926; GFX942:       ; %bb.0:1927; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1928; GFX942-NEXT:    ;;#ASMSTART1929; GFX942-NEXT:    ; def v[0:1]1930; GFX942-NEXT:    ;;#ASMEND1931; GFX942-NEXT:    v_mov_b32_e32 v4, 01932; GFX942-NEXT:    v_mov_b32_e32 v0, v11933; GFX942-NEXT:    ;;#ASMSTART1934; GFX942-NEXT:    ; def v[2:3]1935; GFX942-NEXT:    ;;#ASMEND1936; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1937; GFX942-NEXT:    s_waitcnt vmcnt(0)1938; GFX942-NEXT:    s_setpc_b64 s[30:31]1939  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1940  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1941  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 1>1942  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161943  ret void1944}1945 1946define void @v_shuffle_v4p3_v2p3__3_3_2_1(ptr addrspace(1) inreg %ptr) {1947; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_2_1:1948; GFX900:       ; %bb.0:1949; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1950; GFX900-NEXT:    ;;#ASMSTART1951; GFX900-NEXT:    ; def v[3:4]1952; GFX900-NEXT:    ;;#ASMEND1953; GFX900-NEXT:    v_mov_b32_e32 v5, 01954; GFX900-NEXT:    ;;#ASMSTART1955; GFX900-NEXT:    ; def v[0:1]1956; GFX900-NEXT:    ;;#ASMEND1957; GFX900-NEXT:    v_mov_b32_e32 v2, v11958; GFX900-NEXT:    v_mov_b32_e32 v3, v01959; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]1960; GFX900-NEXT:    s_waitcnt vmcnt(0)1961; GFX900-NEXT:    s_setpc_b64 s[30:31]1962;1963; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_2_1:1964; GFX90A:       ; %bb.0:1965; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1966; GFX90A-NEXT:    ;;#ASMSTART1967; GFX90A-NEXT:    ; def v[2:3]1968; GFX90A-NEXT:    ;;#ASMEND1969; GFX90A-NEXT:    v_mov_b32_e32 v6, 01970; GFX90A-NEXT:    ;;#ASMSTART1971; GFX90A-NEXT:    ; def v[4:5]1972; GFX90A-NEXT:    ;;#ASMEND1973; GFX90A-NEXT:    v_mov_b32_e32 v0, v31974; GFX90A-NEXT:    v_mov_b32_e32 v1, v31975; GFX90A-NEXT:    v_mov_b32_e32 v3, v51976; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]1977; GFX90A-NEXT:    s_waitcnt vmcnt(0)1978; GFX90A-NEXT:    s_setpc_b64 s[30:31]1979;1980; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_2_1:1981; GFX942:       ; %bb.0:1982; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1983; GFX942-NEXT:    ;;#ASMSTART1984; GFX942-NEXT:    ; def v[2:3]1985; GFX942-NEXT:    ;;#ASMEND1986; GFX942-NEXT:    v_mov_b32_e32 v6, 01987; GFX942-NEXT:    ;;#ASMSTART1988; GFX942-NEXT:    ; def v[4:5]1989; GFX942-NEXT:    ;;#ASMEND1990; GFX942-NEXT:    v_mov_b32_e32 v0, v31991; GFX942-NEXT:    v_mov_b32_e32 v1, v31992; GFX942-NEXT:    v_mov_b32_e32 v3, v51993; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]1994; GFX942-NEXT:    s_waitcnt vmcnt(0)1995; GFX942-NEXT:    s_setpc_b64 s[30:31]1996  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1997  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1998  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 1>1999  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162000  ret void2001}2002 2003define void @v_shuffle_v4p3_v2p3__u_2_2_2(ptr addrspace(1) inreg %ptr) {2004; GFX9-LABEL: v_shuffle_v4p3_v2p3__u_2_2_2:2005; GFX9:       ; %bb.0:2006; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2007; GFX9-NEXT:    s_setpc_b64 s[30:31]2008  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2009  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2>2010  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162011  ret void2012}2013 2014define void @v_shuffle_v4p3_v2p3__0_2_2_2(ptr addrspace(1) inreg %ptr) {2015; GFX900-LABEL: v_shuffle_v4p3_v2p3__0_2_2_2:2016; GFX900:       ; %bb.0:2017; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2018; GFX900-NEXT:    v_mov_b32_e32 v2, 02019; GFX900-NEXT:    ;;#ASMSTART2020; GFX900-NEXT:    ; def v[0:1]2021; GFX900-NEXT:    ;;#ASMEND2022; GFX900-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]2023; GFX900-NEXT:    s_waitcnt vmcnt(0)2024; GFX900-NEXT:    s_setpc_b64 s[30:31]2025;2026; GFX90A-LABEL: v_shuffle_v4p3_v2p3__0_2_2_2:2027; GFX90A:       ; %bb.0:2028; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2029; GFX90A-NEXT:    v_mov_b32_e32 v2, 02030; GFX90A-NEXT:    ;;#ASMSTART2031; GFX90A-NEXT:    ; def v[0:1]2032; GFX90A-NEXT:    ;;#ASMEND2033; GFX90A-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]2034; GFX90A-NEXT:    s_waitcnt vmcnt(0)2035; GFX90A-NEXT:    s_setpc_b64 s[30:31]2036;2037; GFX942-LABEL: v_shuffle_v4p3_v2p3__0_2_2_2:2038; GFX942:       ; %bb.0:2039; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2040; GFX942-NEXT:    v_mov_b32_e32 v2, 02041; GFX942-NEXT:    ;;#ASMSTART2042; GFX942-NEXT:    ; def v[0:1]2043; GFX942-NEXT:    ;;#ASMEND2044; GFX942-NEXT:    global_store_dwordx4 v2, v[0:3], s[0:1]2045; GFX942-NEXT:    s_waitcnt vmcnt(0)2046; GFX942-NEXT:    s_setpc_b64 s[30:31]2047  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2048  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2>2049  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162050  ret void2051}2052 2053define void @v_shuffle_v4p3_v2p3__1_2_2_2(ptr addrspace(1) inreg %ptr) {2054; GFX900-LABEL: v_shuffle_v4p3_v2p3__1_2_2_2:2055; GFX900:       ; %bb.0:2056; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2057; GFX900-NEXT:    v_mov_b32_e32 v2, 02058; GFX900-NEXT:    ;;#ASMSTART2059; GFX900-NEXT:    ; def v[0:1]2060; GFX900-NEXT:    ;;#ASMEND2061; GFX900-NEXT:    global_store_dwordx4 v2, v[1:4], s[16:17]2062; GFX900-NEXT:    s_waitcnt vmcnt(0)2063; GFX900-NEXT:    s_setpc_b64 s[30:31]2064;2065; GFX90A-LABEL: v_shuffle_v4p3_v2p3__1_2_2_2:2066; GFX90A:       ; %bb.0:2067; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2068; GFX90A-NEXT:    ;;#ASMSTART2069; GFX90A-NEXT:    ; def v[0:1]2070; GFX90A-NEXT:    ;;#ASMEND2071; GFX90A-NEXT:    v_mov_b32_e32 v2, 02072; GFX90A-NEXT:    v_mov_b32_e32 v0, v12073; GFX90A-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]2074; GFX90A-NEXT:    s_waitcnt vmcnt(0)2075; GFX90A-NEXT:    s_setpc_b64 s[30:31]2076;2077; GFX942-LABEL: v_shuffle_v4p3_v2p3__1_2_2_2:2078; GFX942:       ; %bb.0:2079; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2080; GFX942-NEXT:    ;;#ASMSTART2081; GFX942-NEXT:    ; def v[0:1]2082; GFX942-NEXT:    ;;#ASMEND2083; GFX942-NEXT:    v_mov_b32_e32 v2, 02084; GFX942-NEXT:    v_mov_b32_e32 v0, v12085; GFX942-NEXT:    global_store_dwordx4 v2, v[0:3], s[0:1]2086; GFX942-NEXT:    s_waitcnt vmcnt(0)2087; GFX942-NEXT:    s_setpc_b64 s[30:31]2088  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2089  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2>2090  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162091  ret void2092}2093 2094define void @v_shuffle_v4p3_v2p3__2_2_2_2(ptr addrspace(1) inreg %ptr) {2095; GFX9-LABEL: v_shuffle_v4p3_v2p3__2_2_2_2:2096; GFX9:       ; %bb.0:2097; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2098; GFX9-NEXT:    s_setpc_b64 s[30:31]2099  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2100  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2>2101  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162102  ret void2103}2104 2105define void @v_shuffle_v4p3_v2p3__3_2_2_2(ptr addrspace(1) inreg %ptr) {2106; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_2_2_2:2107; GFX900:       ; %bb.0:2108; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2109; GFX900-NEXT:    v_mov_b32_e32 v5, 02110; GFX900-NEXT:    ;;#ASMSTART2111; GFX900-NEXT:    ; def v[0:1]2112; GFX900-NEXT:    ;;#ASMEND2113; GFX900-NEXT:    v_mov_b32_e32 v2, v02114; GFX900-NEXT:    v_mov_b32_e32 v3, v02115; GFX900-NEXT:    v_mov_b32_e32 v4, v02116; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]2117; GFX900-NEXT:    s_waitcnt vmcnt(0)2118; GFX900-NEXT:    s_setpc_b64 s[30:31]2119;2120; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_2_2_2:2121; GFX90A:       ; %bb.0:2122; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2123; GFX90A-NEXT:    ;;#ASMSTART2124; GFX90A-NEXT:    ; def v[2:3]2125; GFX90A-NEXT:    ;;#ASMEND2126; GFX90A-NEXT:    v_mov_b32_e32 v4, 02127; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]2128; GFX90A-NEXT:    v_mov_b32_e32 v3, v22129; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2130; GFX90A-NEXT:    s_waitcnt vmcnt(0)2131; GFX90A-NEXT:    s_setpc_b64 s[30:31]2132;2133; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_2_2_2:2134; GFX942:       ; %bb.0:2135; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2136; GFX942-NEXT:    ;;#ASMSTART2137; GFX942-NEXT:    ; def v[2:3]2138; GFX942-NEXT:    ;;#ASMEND2139; GFX942-NEXT:    v_mov_b32_e32 v4, 02140; GFX942-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]2141; GFX942-NEXT:    v_mov_b32_e32 v3, v22142; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]2143; GFX942-NEXT:    s_waitcnt vmcnt(0)2144; GFX942-NEXT:    s_setpc_b64 s[30:31]2145  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2146  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2147  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 2, i32 2, i32 2>2148  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162149  ret void2150}2151 2152define void @v_shuffle_v4p3_v2p3__3_u_2_2(ptr addrspace(1) inreg %ptr) {2153; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_u_2_2:2154; GFX900:       ; %bb.0:2155; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2156; GFX900-NEXT:    v_mov_b32_e32 v2, 02157; GFX900-NEXT:    ;;#ASMSTART2158; GFX900-NEXT:    ; def v[0:1]2159; GFX900-NEXT:    ;;#ASMEND2160; GFX900-NEXT:    v_mov_b32_e32 v3, v02161; GFX900-NEXT:    v_mov_b32_e32 v4, v02162; GFX900-NEXT:    global_store_dwordx4 v2, v[1:4], s[16:17]2163; GFX900-NEXT:    s_waitcnt vmcnt(0)2164; GFX900-NEXT:    s_setpc_b64 s[30:31]2165;2166; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_u_2_2:2167; GFX90A:       ; %bb.0:2168; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2169; GFX90A-NEXT:    ;;#ASMSTART2170; GFX90A-NEXT:    ; def v[2:3]2171; GFX90A-NEXT:    ;;#ASMEND2172; GFX90A-NEXT:    v_mov_b32_e32 v1, 02173; GFX90A-NEXT:    v_mov_b32_e32 v0, v32174; GFX90A-NEXT:    v_mov_b32_e32 v3, v22175; GFX90A-NEXT:    global_store_dwordx4 v1, v[0:3], s[16:17]2176; GFX90A-NEXT:    s_waitcnt vmcnt(0)2177; GFX90A-NEXT:    s_setpc_b64 s[30:31]2178;2179; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_u_2_2:2180; GFX942:       ; %bb.0:2181; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2182; GFX942-NEXT:    ;;#ASMSTART2183; GFX942-NEXT:    ; def v[2:3]2184; GFX942-NEXT:    ;;#ASMEND2185; GFX942-NEXT:    v_mov_b32_e32 v1, 02186; GFX942-NEXT:    v_mov_b32_e32 v0, v32187; GFX942-NEXT:    v_mov_b32_e32 v3, v22188; GFX942-NEXT:    global_store_dwordx4 v1, v[0:3], s[0:1]2189; GFX942-NEXT:    s_waitcnt vmcnt(0)2190; GFX942-NEXT:    s_setpc_b64 s[30:31]2191  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2192  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2193  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 poison, i32 2, i32 2>2194  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162195  ret void2196}2197 2198define void @v_shuffle_v4p3_v2p3__3_0_2_2(ptr addrspace(1) inreg %ptr) {2199; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_0_2_2:2200; GFX900:       ; %bb.0:2201; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2202; GFX900-NEXT:    ;;#ASMSTART2203; GFX900-NEXT:    ; def v[2:3]2204; GFX900-NEXT:    ;;#ASMEND2205; GFX900-NEXT:    v_mov_b32_e32 v5, 02206; GFX900-NEXT:    ;;#ASMSTART2207; GFX900-NEXT:    ; def v[0:1]2208; GFX900-NEXT:    ;;#ASMEND2209; GFX900-NEXT:    v_mov_b32_e32 v3, v02210; GFX900-NEXT:    v_mov_b32_e32 v4, v02211; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]2212; GFX900-NEXT:    s_waitcnt vmcnt(0)2213; GFX900-NEXT:    s_setpc_b64 s[30:31]2214;2215; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_0_2_2:2216; GFX90A:       ; %bb.0:2217; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2218; GFX90A-NEXT:    ;;#ASMSTART2219; GFX90A-NEXT:    ; def v[0:1]2220; GFX90A-NEXT:    ;;#ASMEND2221; GFX90A-NEXT:    ;;#ASMSTART2222; GFX90A-NEXT:    ; def v[2:3]2223; GFX90A-NEXT:    ;;#ASMEND2224; GFX90A-NEXT:    v_mov_b32_e32 v4, 02225; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]2226; GFX90A-NEXT:    v_mov_b32_e32 v3, v22227; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2228; GFX90A-NEXT:    s_waitcnt vmcnt(0)2229; GFX90A-NEXT:    s_setpc_b64 s[30:31]2230;2231; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_0_2_2:2232; GFX942:       ; %bb.0:2233; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2234; GFX942-NEXT:    ;;#ASMSTART2235; GFX942-NEXT:    ; def v[0:1]2236; GFX942-NEXT:    ;;#ASMEND2237; GFX942-NEXT:    ;;#ASMSTART2238; GFX942-NEXT:    ; def v[2:3]2239; GFX942-NEXT:    ;;#ASMEND2240; GFX942-NEXT:    v_mov_b32_e32 v4, 02241; GFX942-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]2242; GFX942-NEXT:    v_mov_b32_e32 v3, v22243; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]2244; GFX942-NEXT:    s_waitcnt vmcnt(0)2245; GFX942-NEXT:    s_setpc_b64 s[30:31]2246  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2247  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2248  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 0, i32 2, i32 2>2249  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162250  ret void2251}2252 2253define void @v_shuffle_v4p3_v2p3__3_1_2_2(ptr addrspace(1) inreg %ptr) {2254; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_1_2_2:2255; GFX900:       ; %bb.0:2256; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2257; GFX900-NEXT:    ;;#ASMSTART2258; GFX900-NEXT:    ; def v[1:2]2259; GFX900-NEXT:    ;;#ASMEND2260; GFX900-NEXT:    v_mov_b32_e32 v5, 02261; GFX900-NEXT:    ;;#ASMSTART2262; GFX900-NEXT:    ; def v[0:1]2263; GFX900-NEXT:    ;;#ASMEND2264; GFX900-NEXT:    v_mov_b32_e32 v3, v02265; GFX900-NEXT:    v_mov_b32_e32 v4, v02266; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]2267; GFX900-NEXT:    s_waitcnt vmcnt(0)2268; GFX900-NEXT:    s_setpc_b64 s[30:31]2269;2270; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_1_2_2:2271; GFX90A:       ; %bb.0:2272; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2273; GFX90A-NEXT:    ;;#ASMSTART2274; GFX90A-NEXT:    ; def v[0:1]2275; GFX90A-NEXT:    ;;#ASMEND2276; GFX90A-NEXT:    ;;#ASMSTART2277; GFX90A-NEXT:    ; def v[2:3]2278; GFX90A-NEXT:    ;;#ASMEND2279; GFX90A-NEXT:    v_mov_b32_e32 v4, 02280; GFX90A-NEXT:    v_mov_b32_e32 v0, v32281; GFX90A-NEXT:    v_mov_b32_e32 v3, v22282; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2283; GFX90A-NEXT:    s_waitcnt vmcnt(0)2284; GFX90A-NEXT:    s_setpc_b64 s[30:31]2285;2286; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_1_2_2:2287; GFX942:       ; %bb.0:2288; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2289; GFX942-NEXT:    ;;#ASMSTART2290; GFX942-NEXT:    ; def v[0:1]2291; GFX942-NEXT:    ;;#ASMEND2292; GFX942-NEXT:    ;;#ASMSTART2293; GFX942-NEXT:    ; def v[2:3]2294; GFX942-NEXT:    ;;#ASMEND2295; GFX942-NEXT:    v_mov_b32_e32 v4, 02296; GFX942-NEXT:    v_mov_b32_e32 v0, v32297; GFX942-NEXT:    v_mov_b32_e32 v3, v22298; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]2299; GFX942-NEXT:    s_waitcnt vmcnt(0)2300; GFX942-NEXT:    s_setpc_b64 s[30:31]2301  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2302  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2303  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 1, i32 2, i32 2>2304  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162305  ret void2306}2307 2308define void @v_shuffle_v4p3_v2p3__3_3_2_2(ptr addrspace(1) inreg %ptr) {2309; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_2_2:2310; GFX900:       ; %bb.0:2311; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2312; GFX900-NEXT:    v_mov_b32_e32 v5, 02313; GFX900-NEXT:    ;;#ASMSTART2314; GFX900-NEXT:    ; def v[0:1]2315; GFX900-NEXT:    ;;#ASMEND2316; GFX900-NEXT:    v_mov_b32_e32 v2, v12317; GFX900-NEXT:    v_mov_b32_e32 v3, v02318; GFX900-NEXT:    v_mov_b32_e32 v4, v02319; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]2320; GFX900-NEXT:    s_waitcnt vmcnt(0)2321; GFX900-NEXT:    s_setpc_b64 s[30:31]2322;2323; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_2_2:2324; GFX90A:       ; %bb.0:2325; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2326; GFX90A-NEXT:    ;;#ASMSTART2327; GFX90A-NEXT:    ; def v[2:3]2328; GFX90A-NEXT:    ;;#ASMEND2329; GFX90A-NEXT:    v_mov_b32_e32 v4, 02330; GFX90A-NEXT:    v_mov_b32_e32 v0, v32331; GFX90A-NEXT:    v_mov_b32_e32 v1, v32332; GFX90A-NEXT:    v_mov_b32_e32 v3, v22333; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2334; GFX90A-NEXT:    s_waitcnt vmcnt(0)2335; GFX90A-NEXT:    s_setpc_b64 s[30:31]2336;2337; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_2_2:2338; GFX942:       ; %bb.0:2339; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2340; GFX942-NEXT:    ;;#ASMSTART2341; GFX942-NEXT:    ; def v[2:3]2342; GFX942-NEXT:    ;;#ASMEND2343; GFX942-NEXT:    v_mov_b32_e32 v4, 02344; GFX942-NEXT:    v_mov_b32_e32 v0, v32345; GFX942-NEXT:    v_mov_b32_e32 v1, v32346; GFX942-NEXT:    v_mov_b32_e32 v3, v22347; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]2348; GFX942-NEXT:    s_waitcnt vmcnt(0)2349; GFX942-NEXT:    s_setpc_b64 s[30:31]2350  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2351  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2352  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 2>2353  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162354  ret void2355}2356 2357define void @v_shuffle_v4p3_v2p3__3_3_u_2(ptr addrspace(1) inreg %ptr) {2358; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_u_2:2359; GFX900:       ; %bb.0:2360; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2361; GFX900-NEXT:    v_mov_b32_e32 v3, 02362; GFX900-NEXT:    ;;#ASMSTART2363; GFX900-NEXT:    ; def v[0:1]2364; GFX900-NEXT:    ;;#ASMEND2365; GFX900-NEXT:    v_mov_b32_e32 v2, v12366; GFX900-NEXT:    v_mov_b32_e32 v4, v02367; GFX900-NEXT:    global_store_dwordx4 v3, v[1:4], s[16:17]2368; GFX900-NEXT:    s_waitcnt vmcnt(0)2369; GFX900-NEXT:    s_setpc_b64 s[30:31]2370;2371; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_u_2:2372; GFX90A:       ; %bb.0:2373; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2374; GFX90A-NEXT:    v_mov_b32_e32 v2, 02375; GFX90A-NEXT:    ;;#ASMSTART2376; GFX90A-NEXT:    ; def v[0:1]2377; GFX90A-NEXT:    ;;#ASMEND2378; GFX90A-NEXT:    v_mov_b32_e32 v4, v12379; GFX90A-NEXT:    v_mov_b32_e32 v5, v12380; GFX90A-NEXT:    v_mov_b32_e32 v7, v02381; GFX90A-NEXT:    global_store_dwordx4 v2, v[4:7], s[16:17]2382; GFX90A-NEXT:    s_waitcnt vmcnt(0)2383; GFX90A-NEXT:    s_setpc_b64 s[30:31]2384;2385; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_u_2:2386; GFX942:       ; %bb.0:2387; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2388; GFX942-NEXT:    v_mov_b32_e32 v2, 02389; GFX942-NEXT:    ;;#ASMSTART2390; GFX942-NEXT:    ; def v[0:1]2391; GFX942-NEXT:    ;;#ASMEND2392; GFX942-NEXT:    s_nop 02393; GFX942-NEXT:    v_mov_b32_e32 v4, v12394; GFX942-NEXT:    v_mov_b32_e32 v5, v12395; GFX942-NEXT:    v_mov_b32_e32 v7, v02396; GFX942-NEXT:    global_store_dwordx4 v2, v[4:7], s[0:1]2397; GFX942-NEXT:    s_waitcnt vmcnt(0)2398; GFX942-NEXT:    s_setpc_b64 s[30:31]2399  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2400  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2401  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 2>2402  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162403  ret void2404}2405 2406define void @v_shuffle_v4p3_v2p3__3_3_0_2(ptr addrspace(1) inreg %ptr) {2407; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_0_2:2408; GFX900:       ; %bb.0:2409; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2410; GFX900-NEXT:    ;;#ASMSTART2411; GFX900-NEXT:    ; def v[3:4]2412; GFX900-NEXT:    ;;#ASMEND2413; GFX900-NEXT:    v_mov_b32_e32 v5, 02414; GFX900-NEXT:    ;;#ASMSTART2415; GFX900-NEXT:    ; def v[0:1]2416; GFX900-NEXT:    ;;#ASMEND2417; GFX900-NEXT:    v_mov_b32_e32 v2, v12418; GFX900-NEXT:    v_mov_b32_e32 v4, v02419; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]2420; GFX900-NEXT:    s_waitcnt vmcnt(0)2421; GFX900-NEXT:    s_setpc_b64 s[30:31]2422;2423; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_0_2:2424; GFX90A:       ; %bb.0:2425; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2426; GFX90A-NEXT:    ;;#ASMSTART2427; GFX90A-NEXT:    ; def v[2:3]2428; GFX90A-NEXT:    ;;#ASMEND2429; GFX90A-NEXT:    v_mov_b32_e32 v6, 02430; GFX90A-NEXT:    ;;#ASMSTART2431; GFX90A-NEXT:    ; def v[4:5]2432; GFX90A-NEXT:    ;;#ASMEND2433; GFX90A-NEXT:    v_mov_b32_e32 v0, v52434; GFX90A-NEXT:    v_mov_b32_e32 v1, v52435; GFX90A-NEXT:    v_mov_b32_e32 v3, v42436; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]2437; GFX90A-NEXT:    s_waitcnt vmcnt(0)2438; GFX90A-NEXT:    s_setpc_b64 s[30:31]2439;2440; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_0_2:2441; GFX942:       ; %bb.0:2442; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2443; GFX942-NEXT:    ;;#ASMSTART2444; GFX942-NEXT:    ; def v[2:3]2445; GFX942-NEXT:    ;;#ASMEND2446; GFX942-NEXT:    v_mov_b32_e32 v6, 02447; GFX942-NEXT:    ;;#ASMSTART2448; GFX942-NEXT:    ; def v[4:5]2449; GFX942-NEXT:    ;;#ASMEND2450; GFX942-NEXT:    s_nop 02451; GFX942-NEXT:    v_mov_b32_e32 v0, v52452; GFX942-NEXT:    v_mov_b32_e32 v1, v52453; GFX942-NEXT:    v_mov_b32_e32 v3, v42454; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]2455; GFX942-NEXT:    s_waitcnt vmcnt(0)2456; GFX942-NEXT:    s_setpc_b64 s[30:31]2457  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2458  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2459  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 2>2460  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162461  ret void2462}2463 2464define void @v_shuffle_v4p3_v2p3__3_3_1_2(ptr addrspace(1) inreg %ptr) {2465; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_1_2:2466; GFX900:       ; %bb.0:2467; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2468; GFX900-NEXT:    ;;#ASMSTART2469; GFX900-NEXT:    ; def v[2:3]2470; GFX900-NEXT:    ;;#ASMEND2471; GFX900-NEXT:    v_mov_b32_e32 v5, 02472; GFX900-NEXT:    ;;#ASMSTART2473; GFX900-NEXT:    ; def v[0:1]2474; GFX900-NEXT:    ;;#ASMEND2475; GFX900-NEXT:    v_mov_b32_e32 v2, v12476; GFX900-NEXT:    v_mov_b32_e32 v4, v02477; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]2478; GFX900-NEXT:    s_waitcnt vmcnt(0)2479; GFX900-NEXT:    s_setpc_b64 s[30:31]2480;2481; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_1_2:2482; GFX90A:       ; %bb.0:2483; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2484; GFX90A-NEXT:    ;;#ASMSTART2485; GFX90A-NEXT:    ; def v[2:3]2486; GFX90A-NEXT:    ;;#ASMEND2487; GFX90A-NEXT:    ;;#ASMSTART2488; GFX90A-NEXT:    ; def v[0:1]2489; GFX90A-NEXT:    ;;#ASMEND2490; GFX90A-NEXT:    v_mov_b32_e32 v4, 02491; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], v[2:3], v[0:1] op_sel:[1,0]2492; GFX90A-NEXT:    v_mov_b32_e32 v0, v12493; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2494; GFX90A-NEXT:    s_waitcnt vmcnt(0)2495; GFX90A-NEXT:    s_setpc_b64 s[30:31]2496;2497; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_1_2:2498; GFX942:       ; %bb.0:2499; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2500; GFX942-NEXT:    ;;#ASMSTART2501; GFX942-NEXT:    ; def v[2:3]2502; GFX942-NEXT:    ;;#ASMEND2503; GFX942-NEXT:    ;;#ASMSTART2504; GFX942-NEXT:    ; def v[0:1]2505; GFX942-NEXT:    ;;#ASMEND2506; GFX942-NEXT:    v_mov_b32_e32 v4, 02507; GFX942-NEXT:    v_pk_mov_b32 v[2:3], v[2:3], v[0:1] op_sel:[1,0]2508; GFX942-NEXT:    v_mov_b32_e32 v0, v12509; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]2510; GFX942-NEXT:    s_waitcnt vmcnt(0)2511; GFX942-NEXT:    s_setpc_b64 s[30:31]2512  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2513  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2514  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 2>2515  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162516  ret void2517}2518 2519define void @v_shuffle_v4p3_v2p3__u_3_3_3(ptr addrspace(1) inreg %ptr) {2520; GFX900-LABEL: v_shuffle_v4p3_v2p3__u_3_3_3:2521; GFX900:       ; %bb.0:2522; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2523; GFX900-NEXT:    v_mov_b32_e32 v4, 02524; GFX900-NEXT:    ;;#ASMSTART2525; GFX900-NEXT:    ; def v[0:1]2526; GFX900-NEXT:    ;;#ASMEND2527; GFX900-NEXT:    v_mov_b32_e32 v2, v12528; GFX900-NEXT:    v_mov_b32_e32 v3, v12529; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2530; GFX900-NEXT:    s_waitcnt vmcnt(0)2531; GFX900-NEXT:    s_setpc_b64 s[30:31]2532;2533; GFX90A-LABEL: v_shuffle_v4p3_v2p3__u_3_3_3:2534; GFX90A:       ; %bb.0:2535; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2536; GFX90A-NEXT:    v_mov_b32_e32 v4, 02537; GFX90A-NEXT:    ;;#ASMSTART2538; GFX90A-NEXT:    ; def v[0:1]2539; GFX90A-NEXT:    ;;#ASMEND2540; GFX90A-NEXT:    v_mov_b32_e32 v2, v12541; GFX90A-NEXT:    v_mov_b32_e32 v3, v12542; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2543; GFX90A-NEXT:    s_waitcnt vmcnt(0)2544; GFX90A-NEXT:    s_setpc_b64 s[30:31]2545;2546; GFX942-LABEL: v_shuffle_v4p3_v2p3__u_3_3_3:2547; GFX942:       ; %bb.0:2548; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2549; GFX942-NEXT:    v_mov_b32_e32 v4, 02550; GFX942-NEXT:    ;;#ASMSTART2551; GFX942-NEXT:    ; def v[0:1]2552; GFX942-NEXT:    ;;#ASMEND2553; GFX942-NEXT:    s_nop 02554; GFX942-NEXT:    v_mov_b32_e32 v2, v12555; GFX942-NEXT:    v_mov_b32_e32 v3, v12556; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]2557; GFX942-NEXT:    s_waitcnt vmcnt(0)2558; GFX942-NEXT:    s_setpc_b64 s[30:31]2559  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2560  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2561  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 poison, i32 3, i32 3, i32 3>2562  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162563  ret void2564}2565 2566define void @v_shuffle_v4p3_v2p3__0_3_3_3(ptr addrspace(1) inreg %ptr) {2567; GFX900-LABEL: v_shuffle_v4p3_v2p3__0_3_3_3:2568; GFX900:       ; %bb.0:2569; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2570; GFX900-NEXT:    ;;#ASMSTART2571; GFX900-NEXT:    ; def v[0:1]2572; GFX900-NEXT:    ;;#ASMEND2573; GFX900-NEXT:    ;;#ASMSTART2574; GFX900-NEXT:    ; def v[1:2]2575; GFX900-NEXT:    ;;#ASMEND2576; GFX900-NEXT:    v_mov_b32_e32 v4, 02577; GFX900-NEXT:    v_mov_b32_e32 v1, v22578; GFX900-NEXT:    v_mov_b32_e32 v3, v22579; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2580; GFX900-NEXT:    s_waitcnt vmcnt(0)2581; GFX900-NEXT:    s_setpc_b64 s[30:31]2582;2583; GFX90A-LABEL: v_shuffle_v4p3_v2p3__0_3_3_3:2584; GFX90A:       ; %bb.0:2585; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2586; GFX90A-NEXT:    ;;#ASMSTART2587; GFX90A-NEXT:    ; def v[0:1]2588; GFX90A-NEXT:    ;;#ASMEND2589; GFX90A-NEXT:    ;;#ASMSTART2590; GFX90A-NEXT:    ; def v[2:3]2591; GFX90A-NEXT:    ;;#ASMEND2592; GFX90A-NEXT:    v_mov_b32_e32 v4, 02593; GFX90A-NEXT:    v_mov_b32_e32 v1, v32594; GFX90A-NEXT:    v_mov_b32_e32 v2, v32595; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2596; GFX90A-NEXT:    s_waitcnt vmcnt(0)2597; GFX90A-NEXT:    s_setpc_b64 s[30:31]2598;2599; GFX942-LABEL: v_shuffle_v4p3_v2p3__0_3_3_3:2600; GFX942:       ; %bb.0:2601; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2602; GFX942-NEXT:    ;;#ASMSTART2603; GFX942-NEXT:    ; def v[0:1]2604; GFX942-NEXT:    ;;#ASMEND2605; GFX942-NEXT:    ;;#ASMSTART2606; GFX942-NEXT:    ; def v[2:3]2607; GFX942-NEXT:    ;;#ASMEND2608; GFX942-NEXT:    v_mov_b32_e32 v4, 02609; GFX942-NEXT:    v_mov_b32_e32 v1, v32610; GFX942-NEXT:    v_mov_b32_e32 v2, v32611; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]2612; GFX942-NEXT:    s_waitcnt vmcnt(0)2613; GFX942-NEXT:    s_setpc_b64 s[30:31]2614  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2615  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2616  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 0, i32 3, i32 3, i32 3>2617  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162618  ret void2619}2620 2621define void @v_shuffle_v4p3_v2p3__1_3_3_3(ptr addrspace(1) inreg %ptr) {2622; GFX900-LABEL: v_shuffle_v4p3_v2p3__1_3_3_3:2623; GFX900:       ; %bb.0:2624; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2625; GFX900-NEXT:    ;;#ASMSTART2626; GFX900-NEXT:    ; def v[2:3]2627; GFX900-NEXT:    ;;#ASMEND2628; GFX900-NEXT:    v_mov_b32_e32 v5, 02629; GFX900-NEXT:    v_mov_b32_e32 v2, v32630; GFX900-NEXT:    v_mov_b32_e32 v4, v32631; GFX900-NEXT:    ;;#ASMSTART2632; GFX900-NEXT:    ; def v[0:1]2633; GFX900-NEXT:    ;;#ASMEND2634; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]2635; GFX900-NEXT:    s_waitcnt vmcnt(0)2636; GFX900-NEXT:    s_setpc_b64 s[30:31]2637;2638; GFX90A-LABEL: v_shuffle_v4p3_v2p3__1_3_3_3:2639; GFX90A:       ; %bb.0:2640; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2641; GFX90A-NEXT:    ;;#ASMSTART2642; GFX90A-NEXT:    ; def v[2:3]2643; GFX90A-NEXT:    ;;#ASMEND2644; GFX90A-NEXT:    ;;#ASMSTART2645; GFX90A-NEXT:    ; def v[0:1]2646; GFX90A-NEXT:    ;;#ASMEND2647; GFX90A-NEXT:    v_mov_b32_e32 v4, 02648; GFX90A-NEXT:    v_mov_b32_e32 v0, v32649; GFX90A-NEXT:    v_mov_b32_e32 v2, v12650; GFX90A-NEXT:    v_mov_b32_e32 v3, v12651; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2652; GFX90A-NEXT:    s_waitcnt vmcnt(0)2653; GFX90A-NEXT:    s_setpc_b64 s[30:31]2654;2655; GFX942-LABEL: v_shuffle_v4p3_v2p3__1_3_3_3:2656; GFX942:       ; %bb.0:2657; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2658; GFX942-NEXT:    ;;#ASMSTART2659; GFX942-NEXT:    ; def v[2:3]2660; GFX942-NEXT:    ;;#ASMEND2661; GFX942-NEXT:    ;;#ASMSTART2662; GFX942-NEXT:    ; def v[0:1]2663; GFX942-NEXT:    ;;#ASMEND2664; GFX942-NEXT:    v_mov_b32_e32 v4, 02665; GFX942-NEXT:    v_mov_b32_e32 v0, v32666; GFX942-NEXT:    v_mov_b32_e32 v2, v12667; GFX942-NEXT:    v_mov_b32_e32 v3, v12668; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]2669; GFX942-NEXT:    s_waitcnt vmcnt(0)2670; GFX942-NEXT:    s_setpc_b64 s[30:31]2671  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2672  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2673  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 1, i32 3, i32 3, i32 3>2674  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162675  ret void2676}2677 2678define void @v_shuffle_v4p3_v2p3__2_3_3_3(ptr addrspace(1) inreg %ptr) {2679; GFX900-LABEL: v_shuffle_v4p3_v2p3__2_3_3_3:2680; GFX900:       ; %bb.0:2681; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2682; GFX900-NEXT:    v_mov_b32_e32 v4, 02683; GFX900-NEXT:    ;;#ASMSTART2684; GFX900-NEXT:    ; def v[0:1]2685; GFX900-NEXT:    ;;#ASMEND2686; GFX900-NEXT:    v_mov_b32_e32 v2, v12687; GFX900-NEXT:    v_mov_b32_e32 v3, v12688; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2689; GFX900-NEXT:    s_waitcnt vmcnt(0)2690; GFX900-NEXT:    s_setpc_b64 s[30:31]2691;2692; GFX90A-LABEL: v_shuffle_v4p3_v2p3__2_3_3_3:2693; GFX90A:       ; %bb.0:2694; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2695; GFX90A-NEXT:    v_mov_b32_e32 v4, 02696; GFX90A-NEXT:    ;;#ASMSTART2697; GFX90A-NEXT:    ; def v[0:1]2698; GFX90A-NEXT:    ;;#ASMEND2699; GFX90A-NEXT:    v_mov_b32_e32 v2, v12700; GFX90A-NEXT:    v_mov_b32_e32 v3, v12701; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2702; GFX90A-NEXT:    s_waitcnt vmcnt(0)2703; GFX90A-NEXT:    s_setpc_b64 s[30:31]2704;2705; GFX942-LABEL: v_shuffle_v4p3_v2p3__2_3_3_3:2706; GFX942:       ; %bb.0:2707; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2708; GFX942-NEXT:    v_mov_b32_e32 v4, 02709; GFX942-NEXT:    ;;#ASMSTART2710; GFX942-NEXT:    ; def v[0:1]2711; GFX942-NEXT:    ;;#ASMEND2712; GFX942-NEXT:    s_nop 02713; GFX942-NEXT:    v_mov_b32_e32 v2, v12714; GFX942-NEXT:    v_mov_b32_e32 v3, v12715; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]2716; GFX942-NEXT:    s_waitcnt vmcnt(0)2717; GFX942-NEXT:    s_setpc_b64 s[30:31]2718  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2719  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2720  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 2, i32 3, i32 3, i32 3>2721  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162722  ret void2723}2724 2725define void @v_shuffle_v4p3_v2p3__3_u_3_3(ptr addrspace(1) inreg %ptr) {2726; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_u_3_3:2727; GFX900:       ; %bb.0:2728; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2729; GFX900-NEXT:    v_mov_b32_e32 v2, 02730; GFX900-NEXT:    ;;#ASMSTART2731; GFX900-NEXT:    ; def v[0:1]2732; GFX900-NEXT:    ;;#ASMEND2733; GFX900-NEXT:    v_mov_b32_e32 v3, v12734; GFX900-NEXT:    v_mov_b32_e32 v4, v12735; GFX900-NEXT:    global_store_dwordx4 v2, v[1:4], s[16:17]2736; GFX900-NEXT:    s_waitcnt vmcnt(0)2737; GFX900-NEXT:    s_setpc_b64 s[30:31]2738;2739; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_u_3_3:2740; GFX90A:       ; %bb.0:2741; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2742; GFX90A-NEXT:    ;;#ASMSTART2743; GFX90A-NEXT:    ; def v[2:3]2744; GFX90A-NEXT:    ;;#ASMEND2745; GFX90A-NEXT:    v_mov_b32_e32 v1, 02746; GFX90A-NEXT:    v_mov_b32_e32 v0, v32747; GFX90A-NEXT:    v_mov_b32_e32 v2, v32748; GFX90A-NEXT:    global_store_dwordx4 v1, v[0:3], s[16:17]2749; GFX90A-NEXT:    s_waitcnt vmcnt(0)2750; GFX90A-NEXT:    s_setpc_b64 s[30:31]2751;2752; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_u_3_3:2753; GFX942:       ; %bb.0:2754; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2755; GFX942-NEXT:    ;;#ASMSTART2756; GFX942-NEXT:    ; def v[2:3]2757; GFX942-NEXT:    ;;#ASMEND2758; GFX942-NEXT:    v_mov_b32_e32 v1, 02759; GFX942-NEXT:    v_mov_b32_e32 v0, v32760; GFX942-NEXT:    v_mov_b32_e32 v2, v32761; GFX942-NEXT:    global_store_dwordx4 v1, v[0:3], s[0:1]2762; GFX942-NEXT:    s_waitcnt vmcnt(0)2763; GFX942-NEXT:    s_setpc_b64 s[30:31]2764  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2765  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2766  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 poison, i32 3, i32 3>2767  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162768  ret void2769}2770 2771define void @v_shuffle_v4p3_v2p3__3_0_3_3(ptr addrspace(1) inreg %ptr) {2772; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_0_3_3:2773; GFX900:       ; %bb.0:2774; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2775; GFX900-NEXT:    ;;#ASMSTART2776; GFX900-NEXT:    ; def v[2:3]2777; GFX900-NEXT:    ;;#ASMEND2778; GFX900-NEXT:    v_mov_b32_e32 v5, 02779; GFX900-NEXT:    ;;#ASMSTART2780; GFX900-NEXT:    ; def v[0:1]2781; GFX900-NEXT:    ;;#ASMEND2782; GFX900-NEXT:    v_mov_b32_e32 v3, v12783; GFX900-NEXT:    v_mov_b32_e32 v4, v12784; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]2785; GFX900-NEXT:    s_waitcnt vmcnt(0)2786; GFX900-NEXT:    s_setpc_b64 s[30:31]2787;2788; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_0_3_3:2789; GFX90A:       ; %bb.0:2790; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2791; GFX90A-NEXT:    ;;#ASMSTART2792; GFX90A-NEXT:    ; def v[0:1]2793; GFX90A-NEXT:    ;;#ASMEND2794; GFX90A-NEXT:    ;;#ASMSTART2795; GFX90A-NEXT:    ; def v[2:3]2796; GFX90A-NEXT:    ;;#ASMEND2797; GFX90A-NEXT:    v_mov_b32_e32 v4, 02798; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]2799; GFX90A-NEXT:    v_mov_b32_e32 v2, v32800; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2801; GFX90A-NEXT:    s_waitcnt vmcnt(0)2802; GFX90A-NEXT:    s_setpc_b64 s[30:31]2803;2804; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_0_3_3:2805; GFX942:       ; %bb.0:2806; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2807; GFX942-NEXT:    ;;#ASMSTART2808; GFX942-NEXT:    ; def v[0:1]2809; GFX942-NEXT:    ;;#ASMEND2810; GFX942-NEXT:    ;;#ASMSTART2811; GFX942-NEXT:    ; def v[2:3]2812; GFX942-NEXT:    ;;#ASMEND2813; GFX942-NEXT:    v_mov_b32_e32 v4, 02814; GFX942-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]2815; GFX942-NEXT:    v_mov_b32_e32 v2, v32816; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]2817; GFX942-NEXT:    s_waitcnt vmcnt(0)2818; GFX942-NEXT:    s_setpc_b64 s[30:31]2819  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2820  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2821  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 0, i32 3, i32 3>2822  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162823  ret void2824}2825 2826define void @v_shuffle_v4p3_v2p3__3_1_3_3(ptr addrspace(1) inreg %ptr) {2827; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_1_3_3:2828; GFX900:       ; %bb.0:2829; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2830; GFX900-NEXT:    ;;#ASMSTART2831; GFX900-NEXT:    ; def v[1:2]2832; GFX900-NEXT:    ;;#ASMEND2833; GFX900-NEXT:    v_mov_b32_e32 v5, 02834; GFX900-NEXT:    ;;#ASMSTART2835; GFX900-NEXT:    ; def v[0:1]2836; GFX900-NEXT:    ;;#ASMEND2837; GFX900-NEXT:    v_mov_b32_e32 v3, v12838; GFX900-NEXT:    v_mov_b32_e32 v4, v12839; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]2840; GFX900-NEXT:    s_waitcnt vmcnt(0)2841; GFX900-NEXT:    s_setpc_b64 s[30:31]2842;2843; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_1_3_3:2844; GFX90A:       ; %bb.0:2845; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2846; GFX90A-NEXT:    ;;#ASMSTART2847; GFX90A-NEXT:    ; def v[0:1]2848; GFX90A-NEXT:    ;;#ASMEND2849; GFX90A-NEXT:    ;;#ASMSTART2850; GFX90A-NEXT:    ; def v[2:3]2851; GFX90A-NEXT:    ;;#ASMEND2852; GFX90A-NEXT:    v_mov_b32_e32 v4, 02853; GFX90A-NEXT:    v_mov_b32_e32 v0, v32854; GFX90A-NEXT:    v_mov_b32_e32 v2, v32855; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2856; GFX90A-NEXT:    s_waitcnt vmcnt(0)2857; GFX90A-NEXT:    s_setpc_b64 s[30:31]2858;2859; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_1_3_3:2860; GFX942:       ; %bb.0:2861; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2862; GFX942-NEXT:    ;;#ASMSTART2863; GFX942-NEXT:    ; def v[0:1]2864; GFX942-NEXT:    ;;#ASMEND2865; GFX942-NEXT:    ;;#ASMSTART2866; GFX942-NEXT:    ; def v[2:3]2867; GFX942-NEXT:    ;;#ASMEND2868; GFX942-NEXT:    v_mov_b32_e32 v4, 02869; GFX942-NEXT:    v_mov_b32_e32 v0, v32870; GFX942-NEXT:    v_mov_b32_e32 v2, v32871; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]2872; GFX942-NEXT:    s_waitcnt vmcnt(0)2873; GFX942-NEXT:    s_setpc_b64 s[30:31]2874  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2875  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2876  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 1, i32 3, i32 3>2877  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162878  ret void2879}2880 2881define void @v_shuffle_v4p3_v2p3__3_2_3_3(ptr addrspace(1) inreg %ptr) {2882; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_2_3_3:2883; GFX900:       ; %bb.0:2884; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2885; GFX900-NEXT:    v_mov_b32_e32 v5, 02886; GFX900-NEXT:    ;;#ASMSTART2887; GFX900-NEXT:    ; def v[0:1]2888; GFX900-NEXT:    ;;#ASMEND2889; GFX900-NEXT:    v_mov_b32_e32 v2, v02890; GFX900-NEXT:    v_mov_b32_e32 v3, v12891; GFX900-NEXT:    v_mov_b32_e32 v4, v12892; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]2893; GFX900-NEXT:    s_waitcnt vmcnt(0)2894; GFX900-NEXT:    s_setpc_b64 s[30:31]2895;2896; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_2_3_3:2897; GFX90A:       ; %bb.0:2898; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2899; GFX90A-NEXT:    ;;#ASMSTART2900; GFX90A-NEXT:    ; def v[2:3]2901; GFX90A-NEXT:    ;;#ASMEND2902; GFX90A-NEXT:    v_mov_b32_e32 v4, 02903; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]2904; GFX90A-NEXT:    v_mov_b32_e32 v2, v32905; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2906; GFX90A-NEXT:    s_waitcnt vmcnt(0)2907; GFX90A-NEXT:    s_setpc_b64 s[30:31]2908;2909; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_2_3_3:2910; GFX942:       ; %bb.0:2911; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2912; GFX942-NEXT:    ;;#ASMSTART2913; GFX942-NEXT:    ; def v[2:3]2914; GFX942-NEXT:    ;;#ASMEND2915; GFX942-NEXT:    v_mov_b32_e32 v4, 02916; GFX942-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]2917; GFX942-NEXT:    v_mov_b32_e32 v2, v32918; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]2919; GFX942-NEXT:    s_waitcnt vmcnt(0)2920; GFX942-NEXT:    s_setpc_b64 s[30:31]2921  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2922  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2923  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 2, i32 3, i32 3>2924  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162925  ret void2926}2927 2928define void @v_shuffle_v4p3_v2p3__3_3_u_3(ptr addrspace(1) inreg %ptr) {2929; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_u_3:2930; GFX900:       ; %bb.0:2931; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2932; GFX900-NEXT:    v_mov_b32_e32 v3, 02933; GFX900-NEXT:    ;;#ASMSTART2934; GFX900-NEXT:    ; def v[0:1]2935; GFX900-NEXT:    ;;#ASMEND2936; GFX900-NEXT:    v_mov_b32_e32 v2, v12937; GFX900-NEXT:    v_mov_b32_e32 v4, v12938; GFX900-NEXT:    global_store_dwordx4 v3, v[1:4], s[16:17]2939; GFX900-NEXT:    s_waitcnt vmcnt(0)2940; GFX900-NEXT:    s_setpc_b64 s[30:31]2941;2942; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_u_3:2943; GFX90A:       ; %bb.0:2944; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2945; GFX90A-NEXT:    ;;#ASMSTART2946; GFX90A-NEXT:    ; def v[0:1]2947; GFX90A-NEXT:    ;;#ASMEND2948; GFX90A-NEXT:    v_mov_b32_e32 v2, 02949; GFX90A-NEXT:    v_mov_b32_e32 v0, v12950; GFX90A-NEXT:    v_mov_b32_e32 v3, v12951; GFX90A-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]2952; GFX90A-NEXT:    s_waitcnt vmcnt(0)2953; GFX90A-NEXT:    s_setpc_b64 s[30:31]2954;2955; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_u_3:2956; GFX942:       ; %bb.0:2957; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2958; GFX942-NEXT:    ;;#ASMSTART2959; GFX942-NEXT:    ; def v[0:1]2960; GFX942-NEXT:    ;;#ASMEND2961; GFX942-NEXT:    v_mov_b32_e32 v2, 02962; GFX942-NEXT:    v_mov_b32_e32 v0, v12963; GFX942-NEXT:    v_mov_b32_e32 v3, v12964; GFX942-NEXT:    global_store_dwordx4 v2, v[0:3], s[0:1]2965; GFX942-NEXT:    s_waitcnt vmcnt(0)2966; GFX942-NEXT:    s_setpc_b64 s[30:31]2967  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2968  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2969  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 3>2970  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162971  ret void2972}2973 2974define void @v_shuffle_v4p3_v2p3__3_3_0_3(ptr addrspace(1) inreg %ptr) {2975; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_0_3:2976; GFX900:       ; %bb.0:2977; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2978; GFX900-NEXT:    ;;#ASMSTART2979; GFX900-NEXT:    ; def v[3:4]2980; GFX900-NEXT:    ;;#ASMEND2981; GFX900-NEXT:    v_mov_b32_e32 v5, 02982; GFX900-NEXT:    ;;#ASMSTART2983; GFX900-NEXT:    ; def v[0:1]2984; GFX900-NEXT:    ;;#ASMEND2985; GFX900-NEXT:    v_mov_b32_e32 v2, v12986; GFX900-NEXT:    v_mov_b32_e32 v4, v12987; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]2988; GFX900-NEXT:    s_waitcnt vmcnt(0)2989; GFX900-NEXT:    s_setpc_b64 s[30:31]2990;2991; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_0_3:2992; GFX90A:       ; %bb.0:2993; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2994; GFX90A-NEXT:    ;;#ASMSTART2995; GFX90A-NEXT:    ; def v[2:3]2996; GFX90A-NEXT:    ;;#ASMEND2997; GFX90A-NEXT:    ;;#ASMSTART2998; GFX90A-NEXT:    ; def v[0:1]2999; GFX90A-NEXT:    ;;#ASMEND3000; GFX90A-NEXT:    v_mov_b32_e32 v4, 03001; GFX90A-NEXT:    v_mov_b32_e32 v0, v13002; GFX90A-NEXT:    v_mov_b32_e32 v3, v13003; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]3004; GFX90A-NEXT:    s_waitcnt vmcnt(0)3005; GFX90A-NEXT:    s_setpc_b64 s[30:31]3006;3007; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_0_3:3008; GFX942:       ; %bb.0:3009; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3010; GFX942-NEXT:    ;;#ASMSTART3011; GFX942-NEXT:    ; def v[2:3]3012; GFX942-NEXT:    ;;#ASMEND3013; GFX942-NEXT:    ;;#ASMSTART3014; GFX942-NEXT:    ; def v[0:1]3015; GFX942-NEXT:    ;;#ASMEND3016; GFX942-NEXT:    v_mov_b32_e32 v4, 03017; GFX942-NEXT:    v_mov_b32_e32 v0, v13018; GFX942-NEXT:    v_mov_b32_e32 v3, v13019; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]3020; GFX942-NEXT:    s_waitcnt vmcnt(0)3021; GFX942-NEXT:    s_setpc_b64 s[30:31]3022  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()3023  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()3024  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 3>3025  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163026  ret void3027}3028 3029define void @v_shuffle_v4p3_v2p3__3_3_1_3(ptr addrspace(1) inreg %ptr) {3030; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_1_3:3031; GFX900:       ; %bb.0:3032; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3033; GFX900-NEXT:    ;;#ASMSTART3034; GFX900-NEXT:    ; def v[2:3]3035; GFX900-NEXT:    ;;#ASMEND3036; GFX900-NEXT:    v_mov_b32_e32 v5, 03037; GFX900-NEXT:    ;;#ASMSTART3038; GFX900-NEXT:    ; def v[0:1]3039; GFX900-NEXT:    ;;#ASMEND3040; GFX900-NEXT:    v_mov_b32_e32 v2, v13041; GFX900-NEXT:    v_mov_b32_e32 v4, v13042; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]3043; GFX900-NEXT:    s_waitcnt vmcnt(0)3044; GFX900-NEXT:    s_setpc_b64 s[30:31]3045;3046; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_1_3:3047; GFX90A:       ; %bb.0:3048; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3049; GFX90A-NEXT:    ;;#ASMSTART3050; GFX90A-NEXT:    ; def v[2:3]3051; GFX90A-NEXT:    ;;#ASMEND3052; GFX90A-NEXT:    ;;#ASMSTART3053; GFX90A-NEXT:    ; def v[0:1]3054; GFX90A-NEXT:    ;;#ASMEND3055; GFX90A-NEXT:    v_mov_b32_e32 v4, 03056; GFX90A-NEXT:    v_mov_b32_e32 v0, v13057; GFX90A-NEXT:    v_mov_b32_e32 v2, v33058; GFX90A-NEXT:    v_mov_b32_e32 v3, v13059; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]3060; GFX90A-NEXT:    s_waitcnt vmcnt(0)3061; GFX90A-NEXT:    s_setpc_b64 s[30:31]3062;3063; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_1_3:3064; GFX942:       ; %bb.0:3065; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3066; GFX942-NEXT:    ;;#ASMSTART3067; GFX942-NEXT:    ; def v[2:3]3068; GFX942-NEXT:    ;;#ASMEND3069; GFX942-NEXT:    ;;#ASMSTART3070; GFX942-NEXT:    ; def v[0:1]3071; GFX942-NEXT:    ;;#ASMEND3072; GFX942-NEXT:    v_mov_b32_e32 v4, 03073; GFX942-NEXT:    v_mov_b32_e32 v0, v13074; GFX942-NEXT:    v_mov_b32_e32 v2, v33075; GFX942-NEXT:    v_mov_b32_e32 v3, v13076; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]3077; GFX942-NEXT:    s_waitcnt vmcnt(0)3078; GFX942-NEXT:    s_setpc_b64 s[30:31]3079  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()3080  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()3081  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 3>3082  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163083  ret void3084}3085 3086define void @v_shuffle_v4p3_v2p3__3_3_2_3(ptr addrspace(1) inreg %ptr) {3087; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_2_3:3088; GFX900:       ; %bb.0:3089; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3090; GFX900-NEXT:    v_mov_b32_e32 v5, 03091; GFX900-NEXT:    ;;#ASMSTART3092; GFX900-NEXT:    ; def v[0:1]3093; GFX900-NEXT:    ;;#ASMEND3094; GFX900-NEXT:    v_mov_b32_e32 v2, v13095; GFX900-NEXT:    v_mov_b32_e32 v3, v03096; GFX900-NEXT:    v_mov_b32_e32 v4, v13097; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]3098; GFX900-NEXT:    s_waitcnt vmcnt(0)3099; GFX900-NEXT:    s_setpc_b64 s[30:31]3100;3101; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_2_3:3102; GFX90A:       ; %bb.0:3103; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3104; GFX90A-NEXT:    v_mov_b32_e32 v4, 03105; GFX90A-NEXT:    ;;#ASMSTART3106; GFX90A-NEXT:    ; def v[2:3]3107; GFX90A-NEXT:    ;;#ASMEND3108; GFX90A-NEXT:    v_mov_b32_e32 v0, v33109; GFX90A-NEXT:    v_mov_b32_e32 v1, v33110; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]3111; GFX90A-NEXT:    s_waitcnt vmcnt(0)3112; GFX90A-NEXT:    s_setpc_b64 s[30:31]3113;3114; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_2_3:3115; GFX942:       ; %bb.0:3116; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3117; GFX942-NEXT:    v_mov_b32_e32 v4, 03118; GFX942-NEXT:    ;;#ASMSTART3119; GFX942-NEXT:    ; def v[2:3]3120; GFX942-NEXT:    ;;#ASMEND3121; GFX942-NEXT:    s_nop 03122; GFX942-NEXT:    v_mov_b32_e32 v0, v33123; GFX942-NEXT:    v_mov_b32_e32 v1, v33124; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]3125; GFX942-NEXT:    s_waitcnt vmcnt(0)3126; GFX942-NEXT:    s_setpc_b64 s[30:31]3127  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()3128  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()3129  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 3>3130  store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163131  ret void3132}3133 3134define void @s_shuffle_v4p3_v2p3__u_u_u_u() {3135; GFX9-LABEL: s_shuffle_v4p3_v2p3__u_u_u_u:3136; GFX9:       ; %bb.0:3137; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3138; GFX9-NEXT:    ;;#ASMSTART3139; GFX9-NEXT:    ; use s[8:11]3140; GFX9-NEXT:    ;;#ASMEND3141; GFX9-NEXT:    s_setpc_b64 s[30:31]3142  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3143  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> poison3144  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3145  ret void3146}3147 3148define void @s_shuffle_v4p3_v2p3__0_u_u_u() {3149; GFX900-LABEL: s_shuffle_v4p3_v2p3__0_u_u_u:3150; GFX900:       ; %bb.0:3151; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3152; GFX900-NEXT:    ;;#ASMSTART3153; GFX900-NEXT:    ; def s[8:9]3154; GFX900-NEXT:    ;;#ASMEND3155; GFX900-NEXT:    ;;#ASMSTART3156; GFX900-NEXT:    ; use s[8:11]3157; GFX900-NEXT:    ;;#ASMEND3158; GFX900-NEXT:    s_setpc_b64 s[30:31]3159;3160; GFX90A-LABEL: s_shuffle_v4p3_v2p3__0_u_u_u:3161; GFX90A:       ; %bb.0:3162; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3163; GFX90A-NEXT:    ;;#ASMSTART3164; GFX90A-NEXT:    ; def s[8:9]3165; GFX90A-NEXT:    ;;#ASMEND3166; GFX90A-NEXT:    ;;#ASMSTART3167; GFX90A-NEXT:    ; use s[8:11]3168; GFX90A-NEXT:    ;;#ASMEND3169; GFX90A-NEXT:    s_setpc_b64 s[30:31]3170;3171; GFX942-LABEL: s_shuffle_v4p3_v2p3__0_u_u_u:3172; GFX942:       ; %bb.0:3173; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3174; GFX942-NEXT:    ;;#ASMSTART3175; GFX942-NEXT:    ; def s[8:9]3176; GFX942-NEXT:    ;;#ASMEND3177; GFX942-NEXT:    s_nop 03178; GFX942-NEXT:    ;;#ASMSTART3179; GFX942-NEXT:    ; use s[8:11]3180; GFX942-NEXT:    ;;#ASMEND3181; GFX942-NEXT:    s_setpc_b64 s[30:31]3182  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3183  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>3184  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3185  ret void3186}3187 3188define void @s_shuffle_v4p3_v2p3__1_u_u_u() {3189; GFX900-LABEL: s_shuffle_v4p3_v2p3__1_u_u_u:3190; GFX900:       ; %bb.0:3191; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3192; GFX900-NEXT:    ;;#ASMSTART3193; GFX900-NEXT:    ; def s[4:5]3194; GFX900-NEXT:    ;;#ASMEND3195; GFX900-NEXT:    s_mov_b32 s8, s53196; GFX900-NEXT:    ;;#ASMSTART3197; GFX900-NEXT:    ; use s[8:11]3198; GFX900-NEXT:    ;;#ASMEND3199; GFX900-NEXT:    s_setpc_b64 s[30:31]3200;3201; GFX90A-LABEL: s_shuffle_v4p3_v2p3__1_u_u_u:3202; GFX90A:       ; %bb.0:3203; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3204; GFX90A-NEXT:    ;;#ASMSTART3205; GFX90A-NEXT:    ; def s[4:5]3206; GFX90A-NEXT:    ;;#ASMEND3207; GFX90A-NEXT:    s_mov_b32 s8, s53208; GFX90A-NEXT:    ;;#ASMSTART3209; GFX90A-NEXT:    ; use s[8:11]3210; GFX90A-NEXT:    ;;#ASMEND3211; GFX90A-NEXT:    s_setpc_b64 s[30:31]3212;3213; GFX942-LABEL: s_shuffle_v4p3_v2p3__1_u_u_u:3214; GFX942:       ; %bb.0:3215; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3216; GFX942-NEXT:    ;;#ASMSTART3217; GFX942-NEXT:    ; def s[0:1]3218; GFX942-NEXT:    ;;#ASMEND3219; GFX942-NEXT:    s_mov_b32 s8, s13220; GFX942-NEXT:    ;;#ASMSTART3221; GFX942-NEXT:    ; use s[8:11]3222; GFX942-NEXT:    ;;#ASMEND3223; GFX942-NEXT:    s_setpc_b64 s[30:31]3224  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3225  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>3226  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3227  ret void3228}3229 3230define void @s_shuffle_v4p3_v2p3__2_u_u_u() {3231; GFX9-LABEL: s_shuffle_v4p3_v2p3__2_u_u_u:3232; GFX9:       ; %bb.0:3233; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3234; GFX9-NEXT:    ;;#ASMSTART3235; GFX9-NEXT:    ; use s[8:11]3236; GFX9-NEXT:    ;;#ASMEND3237; GFX9-NEXT:    s_setpc_b64 s[30:31]3238  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3239  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison>3240  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3241  ret void3242}3243 3244define void @s_shuffle_v4p3_v2p3__3_u_u_u() {3245; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_u_u_u:3246; GFX900:       ; %bb.0:3247; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3248; GFX900-NEXT:    ;;#ASMSTART3249; GFX900-NEXT:    ; def s[4:5]3250; GFX900-NEXT:    ;;#ASMEND3251; GFX900-NEXT:    s_mov_b32 s8, s53252; GFX900-NEXT:    ;;#ASMSTART3253; GFX900-NEXT:    ; use s[8:11]3254; GFX900-NEXT:    ;;#ASMEND3255; GFX900-NEXT:    s_setpc_b64 s[30:31]3256;3257; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_u_u_u:3258; GFX90A:       ; %bb.0:3259; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3260; GFX90A-NEXT:    ;;#ASMSTART3261; GFX90A-NEXT:    ; def s[4:5]3262; GFX90A-NEXT:    ;;#ASMEND3263; GFX90A-NEXT:    s_mov_b32 s8, s53264; GFX90A-NEXT:    ;;#ASMSTART3265; GFX90A-NEXT:    ; use s[8:11]3266; GFX90A-NEXT:    ;;#ASMEND3267; GFX90A-NEXT:    s_setpc_b64 s[30:31]3268;3269; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_u_u_u:3270; GFX942:       ; %bb.0:3271; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3272; GFX942-NEXT:    ;;#ASMSTART3273; GFX942-NEXT:    ; def s[0:1]3274; GFX942-NEXT:    ;;#ASMEND3275; GFX942-NEXT:    s_mov_b32 s8, s13276; GFX942-NEXT:    ;;#ASMSTART3277; GFX942-NEXT:    ; use s[8:11]3278; GFX942-NEXT:    ;;#ASMEND3279; GFX942-NEXT:    s_setpc_b64 s[30:31]3280  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3281  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3282  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison>3283  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3284  ret void3285}3286 3287define void @s_shuffle_v4p3_v2p3__3_0_u_u() {3288; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_0_u_u:3289; GFX900:       ; %bb.0:3290; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3291; GFX900-NEXT:    ;;#ASMSTART3292; GFX900-NEXT:    ; def s[4:5]3293; GFX900-NEXT:    ;;#ASMEND3294; GFX900-NEXT:    ;;#ASMSTART3295; GFX900-NEXT:    ; def s[6:7]3296; GFX900-NEXT:    ;;#ASMEND3297; GFX900-NEXT:    s_mov_b32 s8, s73298; GFX900-NEXT:    s_mov_b32 s9, s43299; GFX900-NEXT:    ;;#ASMSTART3300; GFX900-NEXT:    ; use s[8:11]3301; GFX900-NEXT:    ;;#ASMEND3302; GFX900-NEXT:    s_setpc_b64 s[30:31]3303;3304; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_0_u_u:3305; GFX90A:       ; %bb.0:3306; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3307; GFX90A-NEXT:    ;;#ASMSTART3308; GFX90A-NEXT:    ; def s[4:5]3309; GFX90A-NEXT:    ;;#ASMEND3310; GFX90A-NEXT:    ;;#ASMSTART3311; GFX90A-NEXT:    ; def s[6:7]3312; GFX90A-NEXT:    ;;#ASMEND3313; GFX90A-NEXT:    s_mov_b32 s8, s73314; GFX90A-NEXT:    s_mov_b32 s9, s43315; GFX90A-NEXT:    ;;#ASMSTART3316; GFX90A-NEXT:    ; use s[8:11]3317; GFX90A-NEXT:    ;;#ASMEND3318; GFX90A-NEXT:    s_setpc_b64 s[30:31]3319;3320; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_0_u_u:3321; GFX942:       ; %bb.0:3322; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3323; GFX942-NEXT:    ;;#ASMSTART3324; GFX942-NEXT:    ; def s[0:1]3325; GFX942-NEXT:    ;;#ASMEND3326; GFX942-NEXT:    ;;#ASMSTART3327; GFX942-NEXT:    ; def s[2:3]3328; GFX942-NEXT:    ;;#ASMEND3329; GFX942-NEXT:    s_mov_b32 s8, s33330; GFX942-NEXT:    s_mov_b32 s9, s03331; GFX942-NEXT:    ;;#ASMSTART3332; GFX942-NEXT:    ; use s[8:11]3333; GFX942-NEXT:    ;;#ASMEND3334; GFX942-NEXT:    s_setpc_b64 s[30:31]3335  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3336  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3337  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 0, i32 poison, i32 poison>3338  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3339  ret void3340}3341 3342define void @s_shuffle_v4p3_v2p3__3_1_u_u() {3343; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_1_u_u:3344; GFX900:       ; %bb.0:3345; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3346; GFX900-NEXT:    ;;#ASMSTART3347; GFX900-NEXT:    ; def s[8:9]3348; GFX900-NEXT:    ;;#ASMEND3349; GFX900-NEXT:    ;;#ASMSTART3350; GFX900-NEXT:    ; def s[4:5]3351; GFX900-NEXT:    ;;#ASMEND3352; GFX900-NEXT:    s_mov_b32 s8, s53353; GFX900-NEXT:    ;;#ASMSTART3354; GFX900-NEXT:    ; use s[8:11]3355; GFX900-NEXT:    ;;#ASMEND3356; GFX900-NEXT:    s_setpc_b64 s[30:31]3357;3358; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_1_u_u:3359; GFX90A:       ; %bb.0:3360; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3361; GFX90A-NEXT:    ;;#ASMSTART3362; GFX90A-NEXT:    ; def s[8:9]3363; GFX90A-NEXT:    ;;#ASMEND3364; GFX90A-NEXT:    ;;#ASMSTART3365; GFX90A-NEXT:    ; def s[4:5]3366; GFX90A-NEXT:    ;;#ASMEND3367; GFX90A-NEXT:    s_mov_b32 s8, s53368; GFX90A-NEXT:    ;;#ASMSTART3369; GFX90A-NEXT:    ; use s[8:11]3370; GFX90A-NEXT:    ;;#ASMEND3371; GFX90A-NEXT:    s_setpc_b64 s[30:31]3372;3373; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_1_u_u:3374; GFX942:       ; %bb.0:3375; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3376; GFX942-NEXT:    ;;#ASMSTART3377; GFX942-NEXT:    ; def s[8:9]3378; GFX942-NEXT:    ;;#ASMEND3379; GFX942-NEXT:    ;;#ASMSTART3380; GFX942-NEXT:    ; def s[0:1]3381; GFX942-NEXT:    ;;#ASMEND3382; GFX942-NEXT:    s_mov_b32 s8, s13383; GFX942-NEXT:    ;;#ASMSTART3384; GFX942-NEXT:    ; use s[8:11]3385; GFX942-NEXT:    ;;#ASMEND3386; GFX942-NEXT:    s_setpc_b64 s[30:31]3387  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3388  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3389  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 1, i32 poison, i32 poison>3390  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3391  ret void3392}3393 3394define void @s_shuffle_v4p3_v2p3__3_2_u_u() {3395; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_2_u_u:3396; GFX900:       ; %bb.0:3397; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3398; GFX900-NEXT:    ;;#ASMSTART3399; GFX900-NEXT:    ; def s[4:5]3400; GFX900-NEXT:    ;;#ASMEND3401; GFX900-NEXT:    s_mov_b32 s8, s53402; GFX900-NEXT:    s_mov_b32 s9, s43403; GFX900-NEXT:    ;;#ASMSTART3404; GFX900-NEXT:    ; use s[8:11]3405; GFX900-NEXT:    ;;#ASMEND3406; GFX900-NEXT:    s_setpc_b64 s[30:31]3407;3408; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_2_u_u:3409; GFX90A:       ; %bb.0:3410; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3411; GFX90A-NEXT:    ;;#ASMSTART3412; GFX90A-NEXT:    ; def s[4:5]3413; GFX90A-NEXT:    ;;#ASMEND3414; GFX90A-NEXT:    s_mov_b32 s8, s53415; GFX90A-NEXT:    s_mov_b32 s9, s43416; GFX90A-NEXT:    ;;#ASMSTART3417; GFX90A-NEXT:    ; use s[8:11]3418; GFX90A-NEXT:    ;;#ASMEND3419; GFX90A-NEXT:    s_setpc_b64 s[30:31]3420;3421; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_2_u_u:3422; GFX942:       ; %bb.0:3423; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3424; GFX942-NEXT:    ;;#ASMSTART3425; GFX942-NEXT:    ; def s[0:1]3426; GFX942-NEXT:    ;;#ASMEND3427; GFX942-NEXT:    s_mov_b32 s8, s13428; GFX942-NEXT:    s_mov_b32 s9, s03429; GFX942-NEXT:    ;;#ASMSTART3430; GFX942-NEXT:    ; use s[8:11]3431; GFX942-NEXT:    ;;#ASMEND3432; GFX942-NEXT:    s_setpc_b64 s[30:31]3433  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3434  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3435  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 2, i32 poison, i32 poison>3436  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3437  ret void3438}3439 3440define void @s_shuffle_v4p3_v2p3__3_3_u_u() {3441; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_3_u_u:3442; GFX9:       ; %bb.0:3443; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3444; GFX9-NEXT:    ;;#ASMSTART3445; GFX9-NEXT:    ; def s[8:9]3446; GFX9-NEXT:    ;;#ASMEND3447; GFX9-NEXT:    s_mov_b32 s8, s93448; GFX9-NEXT:    ;;#ASMSTART3449; GFX9-NEXT:    ; use s[8:11]3450; GFX9-NEXT:    ;;#ASMEND3451; GFX9-NEXT:    s_setpc_b64 s[30:31]3452  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3453  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3454  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 poison>3455  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3456  ret void3457}3458 3459define void @s_shuffle_v4p3_v2p3__3_3_0_u() {3460; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_3_0_u:3461; GFX9:       ; %bb.0:3462; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3463; GFX9-NEXT:    ;;#ASMSTART3464; GFX9-NEXT:    ; def s[8:9]3465; GFX9-NEXT:    ;;#ASMEND3466; GFX9-NEXT:    ;;#ASMSTART3467; GFX9-NEXT:    ; def s[10:11]3468; GFX9-NEXT:    ;;#ASMEND3469; GFX9-NEXT:    s_mov_b32 s8, s93470; GFX9-NEXT:    ;;#ASMSTART3471; GFX9-NEXT:    ; use s[8:11]3472; GFX9-NEXT:    ;;#ASMEND3473; GFX9-NEXT:    s_setpc_b64 s[30:31]3474  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3475  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3476  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 poison>3477  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3478  ret void3479}3480 3481define void @s_shuffle_v4p3_v2p3__3_3_1_u() {3482; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_3_1_u:3483; GFX900:       ; %bb.0:3484; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3485; GFX900-NEXT:    ;;#ASMSTART3486; GFX900-NEXT:    ; def s[8:9]3487; GFX900-NEXT:    ;;#ASMEND3488; GFX900-NEXT:    ;;#ASMSTART3489; GFX900-NEXT:    ; def s[4:5]3490; GFX900-NEXT:    ;;#ASMEND3491; GFX900-NEXT:    s_mov_b32 s8, s93492; GFX900-NEXT:    s_mov_b32 s10, s53493; GFX900-NEXT:    ;;#ASMSTART3494; GFX900-NEXT:    ; use s[8:11]3495; GFX900-NEXT:    ;;#ASMEND3496; GFX900-NEXT:    s_setpc_b64 s[30:31]3497;3498; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_3_1_u:3499; GFX90A:       ; %bb.0:3500; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3501; GFX90A-NEXT:    ;;#ASMSTART3502; GFX90A-NEXT:    ; def s[8:9]3503; GFX90A-NEXT:    ;;#ASMEND3504; GFX90A-NEXT:    ;;#ASMSTART3505; GFX90A-NEXT:    ; def s[4:5]3506; GFX90A-NEXT:    ;;#ASMEND3507; GFX90A-NEXT:    s_mov_b32 s8, s93508; GFX90A-NEXT:    s_mov_b32 s10, s53509; GFX90A-NEXT:    ;;#ASMSTART3510; GFX90A-NEXT:    ; use s[8:11]3511; GFX90A-NEXT:    ;;#ASMEND3512; GFX90A-NEXT:    s_setpc_b64 s[30:31]3513;3514; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_3_1_u:3515; GFX942:       ; %bb.0:3516; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3517; GFX942-NEXT:    ;;#ASMSTART3518; GFX942-NEXT:    ; def s[8:9]3519; GFX942-NEXT:    ;;#ASMEND3520; GFX942-NEXT:    ;;#ASMSTART3521; GFX942-NEXT:    ; def s[0:1]3522; GFX942-NEXT:    ;;#ASMEND3523; GFX942-NEXT:    s_mov_b32 s8, s93524; GFX942-NEXT:    s_mov_b32 s10, s13525; GFX942-NEXT:    ;;#ASMSTART3526; GFX942-NEXT:    ; use s[8:11]3527; GFX942-NEXT:    ;;#ASMEND3528; GFX942-NEXT:    s_setpc_b64 s[30:31]3529  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3530  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3531  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 poison>3532  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3533  ret void3534}3535 3536define void @s_shuffle_v4p3_v2p3__3_3_2_u() {3537; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_3_2_u:3538; GFX9:       ; %bb.0:3539; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3540; GFX9-NEXT:    ;;#ASMSTART3541; GFX9-NEXT:    ; def s[10:11]3542; GFX9-NEXT:    ;;#ASMEND3543; GFX9-NEXT:    s_mov_b32 s8, s113544; GFX9-NEXT:    s_mov_b32 s9, s113545; GFX9-NEXT:    ;;#ASMSTART3546; GFX9-NEXT:    ; use s[8:11]3547; GFX9-NEXT:    ;;#ASMEND3548; GFX9-NEXT:    s_setpc_b64 s[30:31]3549  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3550  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3551  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 poison>3552  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3553  ret void3554}3555 3556define void @s_shuffle_v4p3_v2p3__3_3_3_u() {3557; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_3_3_u:3558; GFX9:       ; %bb.0:3559; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3560; GFX9-NEXT:    ;;#ASMSTART3561; GFX9-NEXT:    ; def s[8:9]3562; GFX9-NEXT:    ;;#ASMEND3563; GFX9-NEXT:    s_mov_b32 s8, s93564; GFX9-NEXT:    s_mov_b32 s10, s93565; GFX9-NEXT:    ;;#ASMSTART3566; GFX9-NEXT:    ; use s[8:11]3567; GFX9-NEXT:    ;;#ASMEND3568; GFX9-NEXT:    s_setpc_b64 s[30:31]3569  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3570  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3571  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 poison>3572  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3573  ret void3574}3575 3576define void @s_shuffle_v4p3_v2p3__3_3_3_0() {3577; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_3_3_0:3578; GFX900:       ; %bb.0:3579; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3580; GFX900-NEXT:    ;;#ASMSTART3581; GFX900-NEXT:    ; def s[8:9]3582; GFX900-NEXT:    ;;#ASMEND3583; GFX900-NEXT:    ;;#ASMSTART3584; GFX900-NEXT:    ; def s[4:5]3585; GFX900-NEXT:    ;;#ASMEND3586; GFX900-NEXT:    s_mov_b32 s8, s93587; GFX900-NEXT:    s_mov_b32 s10, s93588; GFX900-NEXT:    s_mov_b32 s11, s43589; GFX900-NEXT:    ;;#ASMSTART3590; GFX900-NEXT:    ; use s[8:11]3591; GFX900-NEXT:    ;;#ASMEND3592; GFX900-NEXT:    s_setpc_b64 s[30:31]3593;3594; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_3_3_0:3595; GFX90A:       ; %bb.0:3596; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3597; GFX90A-NEXT:    ;;#ASMSTART3598; GFX90A-NEXT:    ; def s[8:9]3599; GFX90A-NEXT:    ;;#ASMEND3600; GFX90A-NEXT:    ;;#ASMSTART3601; GFX90A-NEXT:    ; def s[4:5]3602; GFX90A-NEXT:    ;;#ASMEND3603; GFX90A-NEXT:    s_mov_b32 s8, s93604; GFX90A-NEXT:    s_mov_b32 s10, s93605; GFX90A-NEXT:    s_mov_b32 s11, s43606; GFX90A-NEXT:    ;;#ASMSTART3607; GFX90A-NEXT:    ; use s[8:11]3608; GFX90A-NEXT:    ;;#ASMEND3609; GFX90A-NEXT:    s_setpc_b64 s[30:31]3610;3611; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_3_3_0:3612; GFX942:       ; %bb.0:3613; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3614; GFX942-NEXT:    ;;#ASMSTART3615; GFX942-NEXT:    ; def s[8:9]3616; GFX942-NEXT:    ;;#ASMEND3617; GFX942-NEXT:    ;;#ASMSTART3618; GFX942-NEXT:    ; def s[0:1]3619; GFX942-NEXT:    ;;#ASMEND3620; GFX942-NEXT:    s_mov_b32 s8, s93621; GFX942-NEXT:    s_mov_b32 s10, s93622; GFX942-NEXT:    s_mov_b32 s11, s03623; GFX942-NEXT:    ;;#ASMSTART3624; GFX942-NEXT:    ; use s[8:11]3625; GFX942-NEXT:    ;;#ASMEND3626; GFX942-NEXT:    s_setpc_b64 s[30:31]3627  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3628  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3629  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 0>3630  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3631  ret void3632}3633 3634define void @s_shuffle_v4p3_v2p3__3_3_3_1() {3635; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_3_3_1:3636; GFX9:       ; %bb.0:3637; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3638; GFX9-NEXT:    ;;#ASMSTART3639; GFX9-NEXT:    ; def s[10:11]3640; GFX9-NEXT:    ;;#ASMEND3641; GFX9-NEXT:    ;;#ASMSTART3642; GFX9-NEXT:    ; def s[8:9]3643; GFX9-NEXT:    ;;#ASMEND3644; GFX9-NEXT:    s_mov_b32 s8, s93645; GFX9-NEXT:    s_mov_b32 s10, s93646; GFX9-NEXT:    ;;#ASMSTART3647; GFX9-NEXT:    ; use s[8:11]3648; GFX9-NEXT:    ;;#ASMEND3649; GFX9-NEXT:    s_setpc_b64 s[30:31]3650  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3651  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3652  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 1>3653  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3654  ret void3655}3656 3657define void @s_shuffle_v4p3_v2p3__3_3_3_2() {3658; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_3_3_2:3659; GFX900:       ; %bb.0:3660; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3661; GFX900-NEXT:    ;;#ASMSTART3662; GFX900-NEXT:    ; def s[4:5]3663; GFX900-NEXT:    ;;#ASMEND3664; GFX900-NEXT:    s_mov_b32 s8, s53665; GFX900-NEXT:    s_mov_b32 s9, s53666; GFX900-NEXT:    s_mov_b32 s10, s53667; GFX900-NEXT:    s_mov_b32 s11, s43668; GFX900-NEXT:    ;;#ASMSTART3669; GFX900-NEXT:    ; use s[8:11]3670; GFX900-NEXT:    ;;#ASMEND3671; GFX900-NEXT:    s_setpc_b64 s[30:31]3672;3673; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_3_3_2:3674; GFX90A:       ; %bb.0:3675; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3676; GFX90A-NEXT:    ;;#ASMSTART3677; GFX90A-NEXT:    ; def s[4:5]3678; GFX90A-NEXT:    ;;#ASMEND3679; GFX90A-NEXT:    s_mov_b32 s8, s53680; GFX90A-NEXT:    s_mov_b32 s9, s53681; GFX90A-NEXT:    s_mov_b32 s10, s53682; GFX90A-NEXT:    s_mov_b32 s11, s43683; GFX90A-NEXT:    ;;#ASMSTART3684; GFX90A-NEXT:    ; use s[8:11]3685; GFX90A-NEXT:    ;;#ASMEND3686; GFX90A-NEXT:    s_setpc_b64 s[30:31]3687;3688; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_3_3_2:3689; GFX942:       ; %bb.0:3690; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3691; GFX942-NEXT:    ;;#ASMSTART3692; GFX942-NEXT:    ; def s[0:1]3693; GFX942-NEXT:    ;;#ASMEND3694; GFX942-NEXT:    s_mov_b32 s8, s13695; GFX942-NEXT:    s_mov_b32 s9, s13696; GFX942-NEXT:    s_mov_b32 s10, s13697; GFX942-NEXT:    s_mov_b32 s11, s03698; GFX942-NEXT:    ;;#ASMSTART3699; GFX942-NEXT:    ; use s[8:11]3700; GFX942-NEXT:    ;;#ASMEND3701; GFX942-NEXT:    s_setpc_b64 s[30:31]3702  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3703  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3704  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 2>3705  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3706  ret void3707}3708 3709define void @s_shuffle_v4p3_v2p3__3_3_3_3() {3710; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_3_3_3:3711; GFX9:       ; %bb.0:3712; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3713; GFX9-NEXT:    ;;#ASMSTART3714; GFX9-NEXT:    ; def s[8:9]3715; GFX9-NEXT:    ;;#ASMEND3716; GFX9-NEXT:    s_mov_b32 s8, s93717; GFX9-NEXT:    s_mov_b32 s10, s93718; GFX9-NEXT:    s_mov_b32 s11, s93719; GFX9-NEXT:    ;;#ASMSTART3720; GFX9-NEXT:    ; use s[8:11]3721; GFX9-NEXT:    ;;#ASMEND3722; GFX9-NEXT:    s_setpc_b64 s[30:31]3723  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3724  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3725  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 3>3726  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3727  ret void3728}3729 3730define void @s_shuffle_v4p3_v2p3__u_0_0_0() {3731; GFX9-LABEL: s_shuffle_v4p3_v2p3__u_0_0_0:3732; GFX9:       ; %bb.0:3733; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3734; GFX9-NEXT:    ;;#ASMSTART3735; GFX9-NEXT:    ; def s[8:9]3736; GFX9-NEXT:    ;;#ASMEND3737; GFX9-NEXT:    s_mov_b32 s9, s83738; GFX9-NEXT:    s_mov_b32 s10, s83739; GFX9-NEXT:    s_mov_b32 s11, s83740; GFX9-NEXT:    ;;#ASMSTART3741; GFX9-NEXT:    ; use s[8:11]3742; GFX9-NEXT:    ;;#ASMEND3743; GFX9-NEXT:    s_setpc_b64 s[30:31]3744  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3745  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0>3746  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3747  ret void3748}3749 3750define void @s_shuffle_v4p3_v2p3__0_0_0_0() {3751; GFX9-LABEL: s_shuffle_v4p3_v2p3__0_0_0_0:3752; GFX9:       ; %bb.0:3753; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3754; GFX9-NEXT:    ;;#ASMSTART3755; GFX9-NEXT:    ; def s[8:9]3756; GFX9-NEXT:    ;;#ASMEND3757; GFX9-NEXT:    s_mov_b32 s9, s83758; GFX9-NEXT:    s_mov_b32 s10, s83759; GFX9-NEXT:    s_mov_b32 s11, s83760; GFX9-NEXT:    ;;#ASMSTART3761; GFX9-NEXT:    ; use s[8:11]3762; GFX9-NEXT:    ;;#ASMEND3763; GFX9-NEXT:    s_setpc_b64 s[30:31]3764  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3765  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> zeroinitializer3766  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3767  ret void3768}3769 3770define void @s_shuffle_v4p3_v2p3__1_0_0_0() {3771; GFX9-LABEL: s_shuffle_v4p3_v2p3__1_0_0_0:3772; GFX9:       ; %bb.0:3773; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3774; GFX9-NEXT:    ;;#ASMSTART3775; GFX9-NEXT:    ; def s[10:11]3776; GFX9-NEXT:    ;;#ASMEND3777; GFX9-NEXT:    s_mov_b32 s8, s113778; GFX9-NEXT:    s_mov_b32 s9, s103779; GFX9-NEXT:    s_mov_b32 s11, s103780; GFX9-NEXT:    ;;#ASMSTART3781; GFX9-NEXT:    ; use s[8:11]3782; GFX9-NEXT:    ;;#ASMEND3783; GFX9-NEXT:    s_setpc_b64 s[30:31]3784  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3785  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>3786  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3787  ret void3788}3789 3790define void @s_shuffle_v4p3_v2p3__2_0_0_0() {3791; GFX9-LABEL: s_shuffle_v4p3_v2p3__2_0_0_0:3792; GFX9:       ; %bb.0:3793; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3794; GFX9-NEXT:    ;;#ASMSTART3795; GFX9-NEXT:    ; def s[8:9]3796; GFX9-NEXT:    ;;#ASMEND3797; GFX9-NEXT:    s_mov_b32 s9, s83798; GFX9-NEXT:    s_mov_b32 s10, s83799; GFX9-NEXT:    s_mov_b32 s11, s83800; GFX9-NEXT:    ;;#ASMSTART3801; GFX9-NEXT:    ; use s[8:11]3802; GFX9-NEXT:    ;;#ASMEND3803; GFX9-NEXT:    s_setpc_b64 s[30:31]3804  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3805  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0>3806  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3807  ret void3808}3809 3810define void @s_shuffle_v4p3_v2p3__3_0_0_0() {3811; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_0_0_0:3812; GFX900:       ; %bb.0:3813; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3814; GFX900-NEXT:    ;;#ASMSTART3815; GFX900-NEXT:    ; def s[10:11]3816; GFX900-NEXT:    ;;#ASMEND3817; GFX900-NEXT:    ;;#ASMSTART3818; GFX900-NEXT:    ; def s[4:5]3819; GFX900-NEXT:    ;;#ASMEND3820; GFX900-NEXT:    s_mov_b32 s8, s53821; GFX900-NEXT:    s_mov_b32 s9, s103822; GFX900-NEXT:    s_mov_b32 s11, s103823; GFX900-NEXT:    ;;#ASMSTART3824; GFX900-NEXT:    ; use s[8:11]3825; GFX900-NEXT:    ;;#ASMEND3826; GFX900-NEXT:    s_setpc_b64 s[30:31]3827;3828; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_0_0_0:3829; GFX90A:       ; %bb.0:3830; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3831; GFX90A-NEXT:    ;;#ASMSTART3832; GFX90A-NEXT:    ; def s[10:11]3833; GFX90A-NEXT:    ;;#ASMEND3834; GFX90A-NEXT:    ;;#ASMSTART3835; GFX90A-NEXT:    ; def s[4:5]3836; GFX90A-NEXT:    ;;#ASMEND3837; GFX90A-NEXT:    s_mov_b32 s8, s53838; GFX90A-NEXT:    s_mov_b32 s9, s103839; GFX90A-NEXT:    s_mov_b32 s11, s103840; GFX90A-NEXT:    ;;#ASMSTART3841; GFX90A-NEXT:    ; use s[8:11]3842; GFX90A-NEXT:    ;;#ASMEND3843; GFX90A-NEXT:    s_setpc_b64 s[30:31]3844;3845; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_0_0_0:3846; GFX942:       ; %bb.0:3847; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3848; GFX942-NEXT:    ;;#ASMSTART3849; GFX942-NEXT:    ; def s[10:11]3850; GFX942-NEXT:    ;;#ASMEND3851; GFX942-NEXT:    ;;#ASMSTART3852; GFX942-NEXT:    ; def s[0:1]3853; GFX942-NEXT:    ;;#ASMEND3854; GFX942-NEXT:    s_mov_b32 s8, s13855; GFX942-NEXT:    s_mov_b32 s9, s103856; GFX942-NEXT:    s_mov_b32 s11, s103857; GFX942-NEXT:    ;;#ASMSTART3858; GFX942-NEXT:    ; use s[8:11]3859; GFX942-NEXT:    ;;#ASMEND3860; GFX942-NEXT:    s_setpc_b64 s[30:31]3861  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3862  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3863  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 0, i32 0, i32 0>3864  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3865  ret void3866}3867 3868define void @s_shuffle_v4p3_v2p3__3_u_0_0() {3869; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_u_0_0:3870; GFX900:       ; %bb.0:3871; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3872; GFX900-NEXT:    ;;#ASMSTART3873; GFX900-NEXT:    ; def s[10:11]3874; GFX900-NEXT:    ;;#ASMEND3875; GFX900-NEXT:    ;;#ASMSTART3876; GFX900-NEXT:    ; def s[4:5]3877; GFX900-NEXT:    ;;#ASMEND3878; GFX900-NEXT:    s_mov_b32 s8, s53879; GFX900-NEXT:    s_mov_b32 s11, s103880; GFX900-NEXT:    ;;#ASMSTART3881; GFX900-NEXT:    ; use s[8:11]3882; GFX900-NEXT:    ;;#ASMEND3883; GFX900-NEXT:    s_setpc_b64 s[30:31]3884;3885; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_u_0_0:3886; GFX90A:       ; %bb.0:3887; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3888; GFX90A-NEXT:    ;;#ASMSTART3889; GFX90A-NEXT:    ; def s[10:11]3890; GFX90A-NEXT:    ;;#ASMEND3891; GFX90A-NEXT:    ;;#ASMSTART3892; GFX90A-NEXT:    ; def s[4:5]3893; GFX90A-NEXT:    ;;#ASMEND3894; GFX90A-NEXT:    s_mov_b32 s8, s53895; GFX90A-NEXT:    s_mov_b32 s11, s103896; GFX90A-NEXT:    ;;#ASMSTART3897; GFX90A-NEXT:    ; use s[8:11]3898; GFX90A-NEXT:    ;;#ASMEND3899; GFX90A-NEXT:    s_setpc_b64 s[30:31]3900;3901; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_u_0_0:3902; GFX942:       ; %bb.0:3903; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3904; GFX942-NEXT:    ;;#ASMSTART3905; GFX942-NEXT:    ; def s[10:11]3906; GFX942-NEXT:    ;;#ASMEND3907; GFX942-NEXT:    ;;#ASMSTART3908; GFX942-NEXT:    ; def s[0:1]3909; GFX942-NEXT:    ;;#ASMEND3910; GFX942-NEXT:    s_mov_b32 s8, s13911; GFX942-NEXT:    s_mov_b32 s11, s103912; GFX942-NEXT:    ;;#ASMSTART3913; GFX942-NEXT:    ; use s[8:11]3914; GFX942-NEXT:    ;;#ASMEND3915; GFX942-NEXT:    s_setpc_b64 s[30:31]3916  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3917  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3918  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 poison, i32 0, i32 0>3919  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3920  ret void3921}3922 3923define void @s_shuffle_v4p3_v2p3__3_1_0_0() {3924; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_1_0_0:3925; GFX900:       ; %bb.0:3926; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3927; GFX900-NEXT:    ;;#ASMSTART3928; GFX900-NEXT:    ; def s[10:11]3929; GFX900-NEXT:    ;;#ASMEND3930; GFX900-NEXT:    ;;#ASMSTART3931; GFX900-NEXT:    ; def s[4:5]3932; GFX900-NEXT:    ;;#ASMEND3933; GFX900-NEXT:    s_mov_b32 s8, s53934; GFX900-NEXT:    s_mov_b32 s9, s113935; GFX900-NEXT:    s_mov_b32 s11, s103936; GFX900-NEXT:    ;;#ASMSTART3937; GFX900-NEXT:    ; use s[8:11]3938; GFX900-NEXT:    ;;#ASMEND3939; GFX900-NEXT:    s_setpc_b64 s[30:31]3940;3941; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_1_0_0:3942; GFX90A:       ; %bb.0:3943; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3944; GFX90A-NEXT:    ;;#ASMSTART3945; GFX90A-NEXT:    ; def s[10:11]3946; GFX90A-NEXT:    ;;#ASMEND3947; GFX90A-NEXT:    ;;#ASMSTART3948; GFX90A-NEXT:    ; def s[4:5]3949; GFX90A-NEXT:    ;;#ASMEND3950; GFX90A-NEXT:    s_mov_b32 s8, s53951; GFX90A-NEXT:    s_mov_b32 s9, s113952; GFX90A-NEXT:    s_mov_b32 s11, s103953; GFX90A-NEXT:    ;;#ASMSTART3954; GFX90A-NEXT:    ; use s[8:11]3955; GFX90A-NEXT:    ;;#ASMEND3956; GFX90A-NEXT:    s_setpc_b64 s[30:31]3957;3958; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_1_0_0:3959; GFX942:       ; %bb.0:3960; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3961; GFX942-NEXT:    ;;#ASMSTART3962; GFX942-NEXT:    ; def s[10:11]3963; GFX942-NEXT:    ;;#ASMEND3964; GFX942-NEXT:    ;;#ASMSTART3965; GFX942-NEXT:    ; def s[0:1]3966; GFX942-NEXT:    ;;#ASMEND3967; GFX942-NEXT:    s_mov_b32 s8, s13968; GFX942-NEXT:    s_mov_b32 s9, s113969; GFX942-NEXT:    s_mov_b32 s11, s103970; GFX942-NEXT:    ;;#ASMSTART3971; GFX942-NEXT:    ; use s[8:11]3972; GFX942-NEXT:    ;;#ASMEND3973; GFX942-NEXT:    s_setpc_b64 s[30:31]3974  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3975  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3976  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 1, i32 0, i32 0>3977  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3978  ret void3979}3980 3981define void @s_shuffle_v4p3_v2p3__3_2_0_0() {3982; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_2_0_0:3983; GFX900:       ; %bb.0:3984; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3985; GFX900-NEXT:    ;;#ASMSTART3986; GFX900-NEXT:    ; def s[10:11]3987; GFX900-NEXT:    ;;#ASMEND3988; GFX900-NEXT:    ;;#ASMSTART3989; GFX900-NEXT:    ; def s[4:5]3990; GFX900-NEXT:    ;;#ASMEND3991; GFX900-NEXT:    s_mov_b32 s8, s53992; GFX900-NEXT:    s_mov_b32 s9, s43993; GFX900-NEXT:    s_mov_b32 s11, s103994; GFX900-NEXT:    ;;#ASMSTART3995; GFX900-NEXT:    ; use s[8:11]3996; GFX900-NEXT:    ;;#ASMEND3997; GFX900-NEXT:    s_setpc_b64 s[30:31]3998;3999; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_2_0_0:4000; GFX90A:       ; %bb.0:4001; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4002; GFX90A-NEXT:    ;;#ASMSTART4003; GFX90A-NEXT:    ; def s[10:11]4004; GFX90A-NEXT:    ;;#ASMEND4005; GFX90A-NEXT:    ;;#ASMSTART4006; GFX90A-NEXT:    ; def s[4:5]4007; GFX90A-NEXT:    ;;#ASMEND4008; GFX90A-NEXT:    s_mov_b32 s8, s54009; GFX90A-NEXT:    s_mov_b32 s9, s44010; GFX90A-NEXT:    s_mov_b32 s11, s104011; GFX90A-NEXT:    ;;#ASMSTART4012; GFX90A-NEXT:    ; use s[8:11]4013; GFX90A-NEXT:    ;;#ASMEND4014; GFX90A-NEXT:    s_setpc_b64 s[30:31]4015;4016; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_2_0_0:4017; GFX942:       ; %bb.0:4018; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4019; GFX942-NEXT:    ;;#ASMSTART4020; GFX942-NEXT:    ; def s[10:11]4021; GFX942-NEXT:    ;;#ASMEND4022; GFX942-NEXT:    ;;#ASMSTART4023; GFX942-NEXT:    ; def s[0:1]4024; GFX942-NEXT:    ;;#ASMEND4025; GFX942-NEXT:    s_mov_b32 s8, s14026; GFX942-NEXT:    s_mov_b32 s9, s04027; GFX942-NEXT:    s_mov_b32 s11, s104028; GFX942-NEXT:    ;;#ASMSTART4029; GFX942-NEXT:    ; use s[8:11]4030; GFX942-NEXT:    ;;#ASMEND4031; GFX942-NEXT:    s_setpc_b64 s[30:31]4032  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4033  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4034  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 2, i32 0, i32 0>4035  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4036  ret void4037}4038 4039define void @s_shuffle_v4p3_v2p3__3_3_0_0() {4040; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_3_0_0:4041; GFX9:       ; %bb.0:4042; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4043; GFX9-NEXT:    ;;#ASMSTART4044; GFX9-NEXT:    ; def s[10:11]4045; GFX9-NEXT:    ;;#ASMEND4046; GFX9-NEXT:    ;;#ASMSTART4047; GFX9-NEXT:    ; def s[8:9]4048; GFX9-NEXT:    ;;#ASMEND4049; GFX9-NEXT:    s_mov_b32 s8, s94050; GFX9-NEXT:    s_mov_b32 s11, s104051; GFX9-NEXT:    ;;#ASMSTART4052; GFX9-NEXT:    ; use s[8:11]4053; GFX9-NEXT:    ;;#ASMEND4054; GFX9-NEXT:    s_setpc_b64 s[30:31]4055  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4056  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4057  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 0>4058  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4059  ret void4060}4061 4062define void @s_shuffle_v4p3_v2p3__3_3_u_0() {4063; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_3_u_0:4064; GFX900:       ; %bb.0:4065; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4066; GFX900-NEXT:    ;;#ASMSTART4067; GFX900-NEXT:    ; def s[8:9]4068; GFX900-NEXT:    ;;#ASMEND4069; GFX900-NEXT:    ;;#ASMSTART4070; GFX900-NEXT:    ; def s[4:5]4071; GFX900-NEXT:    ;;#ASMEND4072; GFX900-NEXT:    s_mov_b32 s8, s94073; GFX900-NEXT:    s_mov_b32 s11, s44074; GFX900-NEXT:    ;;#ASMSTART4075; GFX900-NEXT:    ; use s[8:11]4076; GFX900-NEXT:    ;;#ASMEND4077; GFX900-NEXT:    s_setpc_b64 s[30:31]4078;4079; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_3_u_0:4080; GFX90A:       ; %bb.0:4081; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4082; GFX90A-NEXT:    ;;#ASMSTART4083; GFX90A-NEXT:    ; def s[8:9]4084; GFX90A-NEXT:    ;;#ASMEND4085; GFX90A-NEXT:    ;;#ASMSTART4086; GFX90A-NEXT:    ; def s[4:5]4087; GFX90A-NEXT:    ;;#ASMEND4088; GFX90A-NEXT:    s_mov_b32 s8, s94089; GFX90A-NEXT:    s_mov_b32 s11, s44090; GFX90A-NEXT:    ;;#ASMSTART4091; GFX90A-NEXT:    ; use s[8:11]4092; GFX90A-NEXT:    ;;#ASMEND4093; GFX90A-NEXT:    s_setpc_b64 s[30:31]4094;4095; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_3_u_0:4096; GFX942:       ; %bb.0:4097; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4098; GFX942-NEXT:    ;;#ASMSTART4099; GFX942-NEXT:    ; def s[8:9]4100; GFX942-NEXT:    ;;#ASMEND4101; GFX942-NEXT:    ;;#ASMSTART4102; GFX942-NEXT:    ; def s[0:1]4103; GFX942-NEXT:    ;;#ASMEND4104; GFX942-NEXT:    s_mov_b32 s8, s94105; GFX942-NEXT:    s_mov_b32 s11, s04106; GFX942-NEXT:    ;;#ASMSTART4107; GFX942-NEXT:    ; use s[8:11]4108; GFX942-NEXT:    ;;#ASMEND4109; GFX942-NEXT:    s_setpc_b64 s[30:31]4110  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4111  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4112  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 0>4113  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4114  ret void4115}4116 4117define void @s_shuffle_v4p3_v2p3__3_3_1_0() {4118; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_3_1_0:4119; GFX900:       ; %bb.0:4120; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4121; GFX900-NEXT:    ;;#ASMSTART4122; GFX900-NEXT:    ; def s[8:9]4123; GFX900-NEXT:    ;;#ASMEND4124; GFX900-NEXT:    ;;#ASMSTART4125; GFX900-NEXT:    ; def s[4:5]4126; GFX900-NEXT:    ;;#ASMEND4127; GFX900-NEXT:    s_mov_b32 s8, s94128; GFX900-NEXT:    s_mov_b32 s10, s54129; GFX900-NEXT:    s_mov_b32 s11, s44130; GFX900-NEXT:    ;;#ASMSTART4131; GFX900-NEXT:    ; use s[8:11]4132; GFX900-NEXT:    ;;#ASMEND4133; GFX900-NEXT:    s_setpc_b64 s[30:31]4134;4135; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_3_1_0:4136; GFX90A:       ; %bb.0:4137; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4138; GFX90A-NEXT:    ;;#ASMSTART4139; GFX90A-NEXT:    ; def s[8:9]4140; GFX90A-NEXT:    ;;#ASMEND4141; GFX90A-NEXT:    ;;#ASMSTART4142; GFX90A-NEXT:    ; def s[4:5]4143; GFX90A-NEXT:    ;;#ASMEND4144; GFX90A-NEXT:    s_mov_b32 s8, s94145; GFX90A-NEXT:    s_mov_b32 s10, s54146; GFX90A-NEXT:    s_mov_b32 s11, s44147; GFX90A-NEXT:    ;;#ASMSTART4148; GFX90A-NEXT:    ; use s[8:11]4149; GFX90A-NEXT:    ;;#ASMEND4150; GFX90A-NEXT:    s_setpc_b64 s[30:31]4151;4152; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_3_1_0:4153; GFX942:       ; %bb.0:4154; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4155; GFX942-NEXT:    ;;#ASMSTART4156; GFX942-NEXT:    ; def s[8:9]4157; GFX942-NEXT:    ;;#ASMEND4158; GFX942-NEXT:    ;;#ASMSTART4159; GFX942-NEXT:    ; def s[0:1]4160; GFX942-NEXT:    ;;#ASMEND4161; GFX942-NEXT:    s_mov_b32 s8, s94162; GFX942-NEXT:    s_mov_b32 s10, s14163; GFX942-NEXT:    s_mov_b32 s11, s04164; GFX942-NEXT:    ;;#ASMSTART4165; GFX942-NEXT:    ; use s[8:11]4166; GFX942-NEXT:    ;;#ASMEND4167; GFX942-NEXT:    s_setpc_b64 s[30:31]4168  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4169  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4170  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 0>4171  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4172  ret void4173}4174 4175define void @s_shuffle_v4p3_v2p3__3_3_2_0() {4176; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_3_2_0:4177; GFX900:       ; %bb.0:4178; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4179; GFX900-NEXT:    ;;#ASMSTART4180; GFX900-NEXT:    ; def s[10:11]4181; GFX900-NEXT:    ;;#ASMEND4182; GFX900-NEXT:    ;;#ASMSTART4183; GFX900-NEXT:    ; def s[4:5]4184; GFX900-NEXT:    ;;#ASMEND4185; GFX900-NEXT:    s_mov_b32 s8, s114186; GFX900-NEXT:    s_mov_b32 s9, s114187; GFX900-NEXT:    s_mov_b32 s11, s44188; GFX900-NEXT:    ;;#ASMSTART4189; GFX900-NEXT:    ; use s[8:11]4190; GFX900-NEXT:    ;;#ASMEND4191; GFX900-NEXT:    s_setpc_b64 s[30:31]4192;4193; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_3_2_0:4194; GFX90A:       ; %bb.0:4195; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4196; GFX90A-NEXT:    ;;#ASMSTART4197; GFX90A-NEXT:    ; def s[10:11]4198; GFX90A-NEXT:    ;;#ASMEND4199; GFX90A-NEXT:    ;;#ASMSTART4200; GFX90A-NEXT:    ; def s[4:5]4201; GFX90A-NEXT:    ;;#ASMEND4202; GFX90A-NEXT:    s_mov_b32 s8, s114203; GFX90A-NEXT:    s_mov_b32 s9, s114204; GFX90A-NEXT:    s_mov_b32 s11, s44205; GFX90A-NEXT:    ;;#ASMSTART4206; GFX90A-NEXT:    ; use s[8:11]4207; GFX90A-NEXT:    ;;#ASMEND4208; GFX90A-NEXT:    s_setpc_b64 s[30:31]4209;4210; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_3_2_0:4211; GFX942:       ; %bb.0:4212; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4213; GFX942-NEXT:    ;;#ASMSTART4214; GFX942-NEXT:    ; def s[10:11]4215; GFX942-NEXT:    ;;#ASMEND4216; GFX942-NEXT:    ;;#ASMSTART4217; GFX942-NEXT:    ; def s[0:1]4218; GFX942-NEXT:    ;;#ASMEND4219; GFX942-NEXT:    s_mov_b32 s8, s114220; GFX942-NEXT:    s_mov_b32 s9, s114221; GFX942-NEXT:    s_mov_b32 s11, s04222; GFX942-NEXT:    ;;#ASMSTART4223; GFX942-NEXT:    ; use s[8:11]4224; GFX942-NEXT:    ;;#ASMEND4225; GFX942-NEXT:    s_setpc_b64 s[30:31]4226  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4227  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4228  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 0>4229  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4230  ret void4231}4232 4233define void @s_shuffle_v4p3_v2p3__u_1_1_1() {4234; GFX9-LABEL: s_shuffle_v4p3_v2p3__u_1_1_1:4235; GFX9:       ; %bb.0:4236; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4237; GFX9-NEXT:    ;;#ASMSTART4238; GFX9-NEXT:    ; def s[8:9]4239; GFX9-NEXT:    ;;#ASMEND4240; GFX9-NEXT:    s_mov_b32 s10, s94241; GFX9-NEXT:    s_mov_b32 s11, s94242; GFX9-NEXT:    ;;#ASMSTART4243; GFX9-NEXT:    ; use s[8:11]4244; GFX9-NEXT:    ;;#ASMEND4245; GFX9-NEXT:    s_setpc_b64 s[30:31]4246  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4247  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1>4248  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4249  ret void4250}4251 4252define void @s_shuffle_v4p3_v2p3__0_1_1_1() {4253; GFX9-LABEL: s_shuffle_v4p3_v2p3__0_1_1_1:4254; GFX9:       ; %bb.0:4255; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4256; GFX9-NEXT:    ;;#ASMSTART4257; GFX9-NEXT:    ; def s[8:9]4258; GFX9-NEXT:    ;;#ASMEND4259; GFX9-NEXT:    s_mov_b32 s10, s94260; GFX9-NEXT:    s_mov_b32 s11, s94261; GFX9-NEXT:    ;;#ASMSTART4262; GFX9-NEXT:    ; use s[8:11]4263; GFX9-NEXT:    ;;#ASMEND4264; GFX9-NEXT:    s_setpc_b64 s[30:31]4265  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4266  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1>4267  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4268  ret void4269}4270 4271define void @s_shuffle_v4p3_v2p3__1_1_1_1() {4272; GFX9-LABEL: s_shuffle_v4p3_v2p3__1_1_1_1:4273; GFX9:       ; %bb.0:4274; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4275; GFX9-NEXT:    ;;#ASMSTART4276; GFX9-NEXT:    ; def s[8:9]4277; GFX9-NEXT:    ;;#ASMEND4278; GFX9-NEXT:    s_mov_b32 s8, s94279; GFX9-NEXT:    s_mov_b32 s10, s94280; GFX9-NEXT:    s_mov_b32 s11, s94281; GFX9-NEXT:    ;;#ASMSTART4282; GFX9-NEXT:    ; use s[8:11]4283; GFX9-NEXT:    ;;#ASMEND4284; GFX9-NEXT:    s_setpc_b64 s[30:31]4285  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4286  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>4287  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4288  ret void4289}4290 4291define void @s_shuffle_v4p3_v2p3__2_1_1_1() {4292; GFX9-LABEL: s_shuffle_v4p3_v2p3__2_1_1_1:4293; GFX9:       ; %bb.0:4294; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4295; GFX9-NEXT:    ;;#ASMSTART4296; GFX9-NEXT:    ; def s[8:9]4297; GFX9-NEXT:    ;;#ASMEND4298; GFX9-NEXT:    s_mov_b32 s10, s94299; GFX9-NEXT:    s_mov_b32 s11, s94300; GFX9-NEXT:    ;;#ASMSTART4301; GFX9-NEXT:    ; use s[8:11]4302; GFX9-NEXT:    ;;#ASMEND4303; GFX9-NEXT:    s_setpc_b64 s[30:31]4304  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4305  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1>4306  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4307  ret void4308}4309 4310define void @s_shuffle_v4p3_v2p3__3_1_1_1() {4311; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_1_1_1:4312; GFX900:       ; %bb.0:4313; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4314; GFX900-NEXT:    ;;#ASMSTART4315; GFX900-NEXT:    ; def s[8:9]4316; GFX900-NEXT:    ;;#ASMEND4317; GFX900-NEXT:    ;;#ASMSTART4318; GFX900-NEXT:    ; def s[4:5]4319; GFX900-NEXT:    ;;#ASMEND4320; GFX900-NEXT:    s_mov_b32 s8, s54321; GFX900-NEXT:    s_mov_b32 s10, s94322; GFX900-NEXT:    s_mov_b32 s11, s94323; GFX900-NEXT:    ;;#ASMSTART4324; GFX900-NEXT:    ; use s[8:11]4325; GFX900-NEXT:    ;;#ASMEND4326; GFX900-NEXT:    s_setpc_b64 s[30:31]4327;4328; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_1_1_1:4329; GFX90A:       ; %bb.0:4330; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4331; GFX90A-NEXT:    ;;#ASMSTART4332; GFX90A-NEXT:    ; def s[8:9]4333; GFX90A-NEXT:    ;;#ASMEND4334; GFX90A-NEXT:    ;;#ASMSTART4335; GFX90A-NEXT:    ; def s[4:5]4336; GFX90A-NEXT:    ;;#ASMEND4337; GFX90A-NEXT:    s_mov_b32 s8, s54338; GFX90A-NEXT:    s_mov_b32 s10, s94339; GFX90A-NEXT:    s_mov_b32 s11, s94340; GFX90A-NEXT:    ;;#ASMSTART4341; GFX90A-NEXT:    ; use s[8:11]4342; GFX90A-NEXT:    ;;#ASMEND4343; GFX90A-NEXT:    s_setpc_b64 s[30:31]4344;4345; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_1_1_1:4346; GFX942:       ; %bb.0:4347; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4348; GFX942-NEXT:    ;;#ASMSTART4349; GFX942-NEXT:    ; def s[8:9]4350; GFX942-NEXT:    ;;#ASMEND4351; GFX942-NEXT:    ;;#ASMSTART4352; GFX942-NEXT:    ; def s[0:1]4353; GFX942-NEXT:    ;;#ASMEND4354; GFX942-NEXT:    s_mov_b32 s8, s14355; GFX942-NEXT:    s_mov_b32 s10, s94356; GFX942-NEXT:    s_mov_b32 s11, s94357; GFX942-NEXT:    ;;#ASMSTART4358; GFX942-NEXT:    ; use s[8:11]4359; GFX942-NEXT:    ;;#ASMEND4360; GFX942-NEXT:    s_setpc_b64 s[30:31]4361  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4362  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4363  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 1, i32 1, i32 1>4364  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4365  ret void4366}4367 4368define void @s_shuffle_v4p3_v2p3__3_u_1_1() {4369; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_u_1_1:4370; GFX900:       ; %bb.0:4371; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4372; GFX900-NEXT:    ;;#ASMSTART4373; GFX900-NEXT:    ; def s[10:11]4374; GFX900-NEXT:    ;;#ASMEND4375; GFX900-NEXT:    ;;#ASMSTART4376; GFX900-NEXT:    ; def s[4:5]4377; GFX900-NEXT:    ;;#ASMEND4378; GFX900-NEXT:    s_mov_b32 s8, s54379; GFX900-NEXT:    s_mov_b32 s10, s114380; GFX900-NEXT:    ;;#ASMSTART4381; GFX900-NEXT:    ; use s[8:11]4382; GFX900-NEXT:    ;;#ASMEND4383; GFX900-NEXT:    s_setpc_b64 s[30:31]4384;4385; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_u_1_1:4386; GFX90A:       ; %bb.0:4387; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4388; GFX90A-NEXT:    ;;#ASMSTART4389; GFX90A-NEXT:    ; def s[10:11]4390; GFX90A-NEXT:    ;;#ASMEND4391; GFX90A-NEXT:    ;;#ASMSTART4392; GFX90A-NEXT:    ; def s[4:5]4393; GFX90A-NEXT:    ;;#ASMEND4394; GFX90A-NEXT:    s_mov_b32 s8, s54395; GFX90A-NEXT:    s_mov_b32 s10, s114396; GFX90A-NEXT:    ;;#ASMSTART4397; GFX90A-NEXT:    ; use s[8:11]4398; GFX90A-NEXT:    ;;#ASMEND4399; GFX90A-NEXT:    s_setpc_b64 s[30:31]4400;4401; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_u_1_1:4402; GFX942:       ; %bb.0:4403; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4404; GFX942-NEXT:    ;;#ASMSTART4405; GFX942-NEXT:    ; def s[10:11]4406; GFX942-NEXT:    ;;#ASMEND4407; GFX942-NEXT:    ;;#ASMSTART4408; GFX942-NEXT:    ; def s[0:1]4409; GFX942-NEXT:    ;;#ASMEND4410; GFX942-NEXT:    s_mov_b32 s8, s14411; GFX942-NEXT:    s_mov_b32 s10, s114412; GFX942-NEXT:    ;;#ASMSTART4413; GFX942-NEXT:    ; use s[8:11]4414; GFX942-NEXT:    ;;#ASMEND4415; GFX942-NEXT:    s_setpc_b64 s[30:31]4416  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4417  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4418  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 poison, i32 1, i32 1>4419  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4420  ret void4421}4422 4423define void @s_shuffle_v4p3_v2p3__3_0_1_1() {4424; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_0_1_1:4425; GFX900:       ; %bb.0:4426; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4427; GFX900-NEXT:    ;;#ASMSTART4428; GFX900-NEXT:    ; def s[10:11]4429; GFX900-NEXT:    ;;#ASMEND4430; GFX900-NEXT:    ;;#ASMSTART4431; GFX900-NEXT:    ; def s[4:5]4432; GFX900-NEXT:    ;;#ASMEND4433; GFX900-NEXT:    s_mov_b32 s8, s54434; GFX900-NEXT:    s_mov_b32 s9, s104435; GFX900-NEXT:    s_mov_b32 s10, s114436; GFX900-NEXT:    ;;#ASMSTART4437; GFX900-NEXT:    ; use s[8:11]4438; GFX900-NEXT:    ;;#ASMEND4439; GFX900-NEXT:    s_setpc_b64 s[30:31]4440;4441; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_0_1_1:4442; GFX90A:       ; %bb.0:4443; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4444; GFX90A-NEXT:    ;;#ASMSTART4445; GFX90A-NEXT:    ; def s[10:11]4446; GFX90A-NEXT:    ;;#ASMEND4447; GFX90A-NEXT:    ;;#ASMSTART4448; GFX90A-NEXT:    ; def s[4:5]4449; GFX90A-NEXT:    ;;#ASMEND4450; GFX90A-NEXT:    s_mov_b32 s8, s54451; GFX90A-NEXT:    s_mov_b32 s9, s104452; GFX90A-NEXT:    s_mov_b32 s10, s114453; GFX90A-NEXT:    ;;#ASMSTART4454; GFX90A-NEXT:    ; use s[8:11]4455; GFX90A-NEXT:    ;;#ASMEND4456; GFX90A-NEXT:    s_setpc_b64 s[30:31]4457;4458; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_0_1_1:4459; GFX942:       ; %bb.0:4460; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4461; GFX942-NEXT:    ;;#ASMSTART4462; GFX942-NEXT:    ; def s[10:11]4463; GFX942-NEXT:    ;;#ASMEND4464; GFX942-NEXT:    ;;#ASMSTART4465; GFX942-NEXT:    ; def s[0:1]4466; GFX942-NEXT:    ;;#ASMEND4467; GFX942-NEXT:    s_mov_b32 s8, s14468; GFX942-NEXT:    s_mov_b32 s9, s104469; GFX942-NEXT:    s_mov_b32 s10, s114470; GFX942-NEXT:    ;;#ASMSTART4471; GFX942-NEXT:    ; use s[8:11]4472; GFX942-NEXT:    ;;#ASMEND4473; GFX942-NEXT:    s_setpc_b64 s[30:31]4474  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4475  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4476  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 0, i32 1, i32 1>4477  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4478  ret void4479}4480 4481define void @s_shuffle_v4p3_v2p3__3_2_1_1() {4482; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_2_1_1:4483; GFX900:       ; %bb.0:4484; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4485; GFX900-NEXT:    ;;#ASMSTART4486; GFX900-NEXT:    ; def s[10:11]4487; GFX900-NEXT:    ;;#ASMEND4488; GFX900-NEXT:    ;;#ASMSTART4489; GFX900-NEXT:    ; def s[4:5]4490; GFX900-NEXT:    ;;#ASMEND4491; GFX900-NEXT:    s_mov_b32 s8, s54492; GFX900-NEXT:    s_mov_b32 s9, s44493; GFX900-NEXT:    s_mov_b32 s10, s114494; GFX900-NEXT:    ;;#ASMSTART4495; GFX900-NEXT:    ; use s[8:11]4496; GFX900-NEXT:    ;;#ASMEND4497; GFX900-NEXT:    s_setpc_b64 s[30:31]4498;4499; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_2_1_1:4500; GFX90A:       ; %bb.0:4501; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4502; GFX90A-NEXT:    ;;#ASMSTART4503; GFX90A-NEXT:    ; def s[10:11]4504; GFX90A-NEXT:    ;;#ASMEND4505; GFX90A-NEXT:    ;;#ASMSTART4506; GFX90A-NEXT:    ; def s[4:5]4507; GFX90A-NEXT:    ;;#ASMEND4508; GFX90A-NEXT:    s_mov_b32 s8, s54509; GFX90A-NEXT:    s_mov_b32 s9, s44510; GFX90A-NEXT:    s_mov_b32 s10, s114511; GFX90A-NEXT:    ;;#ASMSTART4512; GFX90A-NEXT:    ; use s[8:11]4513; GFX90A-NEXT:    ;;#ASMEND4514; GFX90A-NEXT:    s_setpc_b64 s[30:31]4515;4516; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_2_1_1:4517; GFX942:       ; %bb.0:4518; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4519; GFX942-NEXT:    ;;#ASMSTART4520; GFX942-NEXT:    ; def s[10:11]4521; GFX942-NEXT:    ;;#ASMEND4522; GFX942-NEXT:    ;;#ASMSTART4523; GFX942-NEXT:    ; def s[0:1]4524; GFX942-NEXT:    ;;#ASMEND4525; GFX942-NEXT:    s_mov_b32 s8, s14526; GFX942-NEXT:    s_mov_b32 s9, s04527; GFX942-NEXT:    s_mov_b32 s10, s114528; GFX942-NEXT:    ;;#ASMSTART4529; GFX942-NEXT:    ; use s[8:11]4530; GFX942-NEXT:    ;;#ASMEND4531; GFX942-NEXT:    s_setpc_b64 s[30:31]4532  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4533  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4534  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 2, i32 1, i32 1>4535  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4536  ret void4537}4538 4539define void @s_shuffle_v4p3_v2p3__3_3_1_1() {4540; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_3_1_1:4541; GFX9:       ; %bb.0:4542; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4543; GFX9-NEXT:    ;;#ASMSTART4544; GFX9-NEXT:    ; def s[10:11]4545; GFX9-NEXT:    ;;#ASMEND4546; GFX9-NEXT:    ;;#ASMSTART4547; GFX9-NEXT:    ; def s[8:9]4548; GFX9-NEXT:    ;;#ASMEND4549; GFX9-NEXT:    s_mov_b32 s8, s94550; GFX9-NEXT:    s_mov_b32 s10, s114551; GFX9-NEXT:    ;;#ASMSTART4552; GFX9-NEXT:    ; use s[8:11]4553; GFX9-NEXT:    ;;#ASMEND4554; GFX9-NEXT:    s_setpc_b64 s[30:31]4555  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4556  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4557  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 1>4558  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4559  ret void4560}4561 4562define void @s_shuffle_v4p3_v2p3__3_3_u_1() {4563; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_3_u_1:4564; GFX9:       ; %bb.0:4565; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4566; GFX9-NEXT:    ;;#ASMSTART4567; GFX9-NEXT:    ; def s[8:9]4568; GFX9-NEXT:    ;;#ASMEND4569; GFX9-NEXT:    ;;#ASMSTART4570; GFX9-NEXT:    ; def s[10:11]4571; GFX9-NEXT:    ;;#ASMEND4572; GFX9-NEXT:    s_mov_b32 s8, s94573; GFX9-NEXT:    ;;#ASMSTART4574; GFX9-NEXT:    ; use s[8:11]4575; GFX9-NEXT:    ;;#ASMEND4576; GFX9-NEXT:    s_setpc_b64 s[30:31]4577  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4578  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4579  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 1>4580  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4581  ret void4582}4583 4584define void @s_shuffle_v4p3_v2p3__3_3_0_1() {4585; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_3_0_1:4586; GFX9:       ; %bb.0:4587; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4588; GFX9-NEXT:    ;;#ASMSTART4589; GFX9-NEXT:    ; def s[8:9]4590; GFX9-NEXT:    ;;#ASMEND4591; GFX9-NEXT:    ;;#ASMSTART4592; GFX9-NEXT:    ; def s[10:11]4593; GFX9-NEXT:    ;;#ASMEND4594; GFX9-NEXT:    s_mov_b32 s8, s94595; GFX9-NEXT:    ;;#ASMSTART4596; GFX9-NEXT:    ; use s[8:11]4597; GFX9-NEXT:    ;;#ASMEND4598; GFX9-NEXT:    s_setpc_b64 s[30:31]4599  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4600  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4601  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 1>4602  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4603  ret void4604}4605 4606define void @s_shuffle_v4p3_v2p3__3_3_2_1() {4607; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_3_2_1:4608; GFX900:       ; %bb.0:4609; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4610; GFX900-NEXT:    ;;#ASMSTART4611; GFX900-NEXT:    ; def s[10:11]4612; GFX900-NEXT:    ;;#ASMEND4613; GFX900-NEXT:    ;;#ASMSTART4614; GFX900-NEXT:    ; def s[4:5]4615; GFX900-NEXT:    ;;#ASMEND4616; GFX900-NEXT:    s_mov_b32 s8, s114617; GFX900-NEXT:    s_mov_b32 s9, s114618; GFX900-NEXT:    s_mov_b32 s11, s54619; GFX900-NEXT:    ;;#ASMSTART4620; GFX900-NEXT:    ; use s[8:11]4621; GFX900-NEXT:    ;;#ASMEND4622; GFX900-NEXT:    s_setpc_b64 s[30:31]4623;4624; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_3_2_1:4625; GFX90A:       ; %bb.0:4626; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4627; GFX90A-NEXT:    ;;#ASMSTART4628; GFX90A-NEXT:    ; def s[10:11]4629; GFX90A-NEXT:    ;;#ASMEND4630; GFX90A-NEXT:    ;;#ASMSTART4631; GFX90A-NEXT:    ; def s[4:5]4632; GFX90A-NEXT:    ;;#ASMEND4633; GFX90A-NEXT:    s_mov_b32 s8, s114634; GFX90A-NEXT:    s_mov_b32 s9, s114635; GFX90A-NEXT:    s_mov_b32 s11, s54636; GFX90A-NEXT:    ;;#ASMSTART4637; GFX90A-NEXT:    ; use s[8:11]4638; GFX90A-NEXT:    ;;#ASMEND4639; GFX90A-NEXT:    s_setpc_b64 s[30:31]4640;4641; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_3_2_1:4642; GFX942:       ; %bb.0:4643; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4644; GFX942-NEXT:    ;;#ASMSTART4645; GFX942-NEXT:    ; def s[10:11]4646; GFX942-NEXT:    ;;#ASMEND4647; GFX942-NEXT:    ;;#ASMSTART4648; GFX942-NEXT:    ; def s[0:1]4649; GFX942-NEXT:    ;;#ASMEND4650; GFX942-NEXT:    s_mov_b32 s8, s114651; GFX942-NEXT:    s_mov_b32 s9, s114652; GFX942-NEXT:    s_mov_b32 s11, s14653; GFX942-NEXT:    ;;#ASMSTART4654; GFX942-NEXT:    ; use s[8:11]4655; GFX942-NEXT:    ;;#ASMEND4656; GFX942-NEXT:    s_setpc_b64 s[30:31]4657  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4658  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4659  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 1>4660  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4661  ret void4662}4663 4664define void @s_shuffle_v4p3_v2p3__u_2_2_2() {4665; GFX9-LABEL: s_shuffle_v4p3_v2p3__u_2_2_2:4666; GFX9:       ; %bb.0:4667; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4668; GFX9-NEXT:    ;;#ASMSTART4669; GFX9-NEXT:    ; use s[8:11]4670; GFX9-NEXT:    ;;#ASMEND4671; GFX9-NEXT:    s_setpc_b64 s[30:31]4672  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4673  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2>4674  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4675  ret void4676}4677 4678define void @s_shuffle_v4p3_v2p3__0_2_2_2() {4679; GFX900-LABEL: s_shuffle_v4p3_v2p3__0_2_2_2:4680; GFX900:       ; %bb.0:4681; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4682; GFX900-NEXT:    ;;#ASMSTART4683; GFX900-NEXT:    ; def s[8:9]4684; GFX900-NEXT:    ;;#ASMEND4685; GFX900-NEXT:    ;;#ASMSTART4686; GFX900-NEXT:    ; use s[8:11]4687; GFX900-NEXT:    ;;#ASMEND4688; GFX900-NEXT:    s_setpc_b64 s[30:31]4689;4690; GFX90A-LABEL: s_shuffle_v4p3_v2p3__0_2_2_2:4691; GFX90A:       ; %bb.0:4692; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4693; GFX90A-NEXT:    ;;#ASMSTART4694; GFX90A-NEXT:    ; def s[8:9]4695; GFX90A-NEXT:    ;;#ASMEND4696; GFX90A-NEXT:    ;;#ASMSTART4697; GFX90A-NEXT:    ; use s[8:11]4698; GFX90A-NEXT:    ;;#ASMEND4699; GFX90A-NEXT:    s_setpc_b64 s[30:31]4700;4701; GFX942-LABEL: s_shuffle_v4p3_v2p3__0_2_2_2:4702; GFX942:       ; %bb.0:4703; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4704; GFX942-NEXT:    ;;#ASMSTART4705; GFX942-NEXT:    ; def s[8:9]4706; GFX942-NEXT:    ;;#ASMEND4707; GFX942-NEXT:    s_nop 04708; GFX942-NEXT:    ;;#ASMSTART4709; GFX942-NEXT:    ; use s[8:11]4710; GFX942-NEXT:    ;;#ASMEND4711; GFX942-NEXT:    s_setpc_b64 s[30:31]4712  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4713  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2>4714  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4715  ret void4716}4717 4718define void @s_shuffle_v4p3_v2p3__1_2_2_2() {4719; GFX900-LABEL: s_shuffle_v4p3_v2p3__1_2_2_2:4720; GFX900:       ; %bb.0:4721; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4722; GFX900-NEXT:    ;;#ASMSTART4723; GFX900-NEXT:    ; def s[4:5]4724; GFX900-NEXT:    ;;#ASMEND4725; GFX900-NEXT:    s_mov_b32 s8, s54726; GFX900-NEXT:    ;;#ASMSTART4727; GFX900-NEXT:    ; use s[8:11]4728; GFX900-NEXT:    ;;#ASMEND4729; GFX900-NEXT:    s_setpc_b64 s[30:31]4730;4731; GFX90A-LABEL: s_shuffle_v4p3_v2p3__1_2_2_2:4732; GFX90A:       ; %bb.0:4733; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4734; GFX90A-NEXT:    ;;#ASMSTART4735; GFX90A-NEXT:    ; def s[4:5]4736; GFX90A-NEXT:    ;;#ASMEND4737; GFX90A-NEXT:    s_mov_b32 s8, s54738; GFX90A-NEXT:    ;;#ASMSTART4739; GFX90A-NEXT:    ; use s[8:11]4740; GFX90A-NEXT:    ;;#ASMEND4741; GFX90A-NEXT:    s_setpc_b64 s[30:31]4742;4743; GFX942-LABEL: s_shuffle_v4p3_v2p3__1_2_2_2:4744; GFX942:       ; %bb.0:4745; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4746; GFX942-NEXT:    ;;#ASMSTART4747; GFX942-NEXT:    ; def s[0:1]4748; GFX942-NEXT:    ;;#ASMEND4749; GFX942-NEXT:    s_mov_b32 s8, s14750; GFX942-NEXT:    ;;#ASMSTART4751; GFX942-NEXT:    ; use s[8:11]4752; GFX942-NEXT:    ;;#ASMEND4753; GFX942-NEXT:    s_setpc_b64 s[30:31]4754  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4755  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2>4756  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4757  ret void4758}4759 4760define void @s_shuffle_v4p3_v2p3__2_2_2_2() {4761; GFX9-LABEL: s_shuffle_v4p3_v2p3__2_2_2_2:4762; GFX9:       ; %bb.0:4763; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4764; GFX9-NEXT:    ;;#ASMSTART4765; GFX9-NEXT:    ; use s[8:11]4766; GFX9-NEXT:    ;;#ASMEND4767; GFX9-NEXT:    s_setpc_b64 s[30:31]4768  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4769  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2>4770  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4771  ret void4772}4773 4774define void @s_shuffle_v4p3_v2p3__3_2_2_2() {4775; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_2_2_2:4776; GFX9:       ; %bb.0:4777; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4778; GFX9-NEXT:    ;;#ASMSTART4779; GFX9-NEXT:    ; def s[10:11]4780; GFX9-NEXT:    ;;#ASMEND4781; GFX9-NEXT:    s_mov_b32 s8, s114782; GFX9-NEXT:    s_mov_b32 s9, s104783; GFX9-NEXT:    s_mov_b32 s11, s104784; GFX9-NEXT:    ;;#ASMSTART4785; GFX9-NEXT:    ; use s[8:11]4786; GFX9-NEXT:    ;;#ASMEND4787; GFX9-NEXT:    s_setpc_b64 s[30:31]4788  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4789  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4790  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 2, i32 2, i32 2>4791  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4792  ret void4793}4794 4795define void @s_shuffle_v4p3_v2p3__3_u_2_2() {4796; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_u_2_2:4797; GFX9:       ; %bb.0:4798; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4799; GFX9-NEXT:    ;;#ASMSTART4800; GFX9-NEXT:    ; def s[10:11]4801; GFX9-NEXT:    ;;#ASMEND4802; GFX9-NEXT:    s_mov_b32 s8, s114803; GFX9-NEXT:    s_mov_b32 s11, s104804; GFX9-NEXT:    ;;#ASMSTART4805; GFX9-NEXT:    ; use s[8:11]4806; GFX9-NEXT:    ;;#ASMEND4807; GFX9-NEXT:    s_setpc_b64 s[30:31]4808  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4809  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4810  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 poison, i32 2, i32 2>4811  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4812  ret void4813}4814 4815define void @s_shuffle_v4p3_v2p3__3_0_2_2() {4816; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_0_2_2:4817; GFX900:       ; %bb.0:4818; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4819; GFX900-NEXT:    ;;#ASMSTART4820; GFX900-NEXT:    ; def s[10:11]4821; GFX900-NEXT:    ;;#ASMEND4822; GFX900-NEXT:    ;;#ASMSTART4823; GFX900-NEXT:    ; def s[4:5]4824; GFX900-NEXT:    ;;#ASMEND4825; GFX900-NEXT:    s_mov_b32 s8, s114826; GFX900-NEXT:    s_mov_b32 s9, s44827; GFX900-NEXT:    s_mov_b32 s11, s104828; GFX900-NEXT:    ;;#ASMSTART4829; GFX900-NEXT:    ; use s[8:11]4830; GFX900-NEXT:    ;;#ASMEND4831; GFX900-NEXT:    s_setpc_b64 s[30:31]4832;4833; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_0_2_2:4834; GFX90A:       ; %bb.0:4835; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4836; GFX90A-NEXT:    ;;#ASMSTART4837; GFX90A-NEXT:    ; def s[10:11]4838; GFX90A-NEXT:    ;;#ASMEND4839; GFX90A-NEXT:    ;;#ASMSTART4840; GFX90A-NEXT:    ; def s[4:5]4841; GFX90A-NEXT:    ;;#ASMEND4842; GFX90A-NEXT:    s_mov_b32 s8, s114843; GFX90A-NEXT:    s_mov_b32 s9, s44844; GFX90A-NEXT:    s_mov_b32 s11, s104845; GFX90A-NEXT:    ;;#ASMSTART4846; GFX90A-NEXT:    ; use s[8:11]4847; GFX90A-NEXT:    ;;#ASMEND4848; GFX90A-NEXT:    s_setpc_b64 s[30:31]4849;4850; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_0_2_2:4851; GFX942:       ; %bb.0:4852; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4853; GFX942-NEXT:    ;;#ASMSTART4854; GFX942-NEXT:    ; def s[10:11]4855; GFX942-NEXT:    ;;#ASMEND4856; GFX942-NEXT:    ;;#ASMSTART4857; GFX942-NEXT:    ; def s[0:1]4858; GFX942-NEXT:    ;;#ASMEND4859; GFX942-NEXT:    s_mov_b32 s8, s114860; GFX942-NEXT:    s_mov_b32 s9, s04861; GFX942-NEXT:    s_mov_b32 s11, s104862; GFX942-NEXT:    ;;#ASMSTART4863; GFX942-NEXT:    ; use s[8:11]4864; GFX942-NEXT:    ;;#ASMEND4865; GFX942-NEXT:    s_setpc_b64 s[30:31]4866  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4867  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4868  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 0, i32 2, i32 2>4869  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4870  ret void4871}4872 4873define void @s_shuffle_v4p3_v2p3__3_1_2_2() {4874; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_1_2_2:4875; GFX9:       ; %bb.0:4876; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4877; GFX9-NEXT:    ;;#ASMSTART4878; GFX9-NEXT:    ; def s[8:9]4879; GFX9-NEXT:    ;;#ASMEND4880; GFX9-NEXT:    ;;#ASMSTART4881; GFX9-NEXT:    ; def s[10:11]4882; GFX9-NEXT:    ;;#ASMEND4883; GFX9-NEXT:    s_mov_b32 s8, s114884; GFX9-NEXT:    s_mov_b32 s11, s104885; GFX9-NEXT:    ;;#ASMSTART4886; GFX9-NEXT:    ; use s[8:11]4887; GFX9-NEXT:    ;;#ASMEND4888; GFX9-NEXT:    s_setpc_b64 s[30:31]4889  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4890  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4891  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 1, i32 2, i32 2>4892  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4893  ret void4894}4895 4896define void @s_shuffle_v4p3_v2p3__3_3_2_2() {4897; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_3_2_2:4898; GFX9:       ; %bb.0:4899; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4900; GFX9-NEXT:    ;;#ASMSTART4901; GFX9-NEXT:    ; def s[10:11]4902; GFX9-NEXT:    ;;#ASMEND4903; GFX9-NEXT:    s_mov_b32 s8, s114904; GFX9-NEXT:    s_mov_b32 s9, s114905; GFX9-NEXT:    s_mov_b32 s11, s104906; GFX9-NEXT:    ;;#ASMSTART4907; GFX9-NEXT:    ; use s[8:11]4908; GFX9-NEXT:    ;;#ASMEND4909; GFX9-NEXT:    s_setpc_b64 s[30:31]4910  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4911  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4912  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 2>4913  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4914  ret void4915}4916 4917define void @s_shuffle_v4p3_v2p3__3_3_u_2() {4918; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_3_u_2:4919; GFX900:       ; %bb.0:4920; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4921; GFX900-NEXT:    ;;#ASMSTART4922; GFX900-NEXT:    ; def s[4:5]4923; GFX900-NEXT:    ;;#ASMEND4924; GFX900-NEXT:    s_mov_b32 s8, s54925; GFX900-NEXT:    s_mov_b32 s9, s54926; GFX900-NEXT:    s_mov_b32 s11, s44927; GFX900-NEXT:    ;;#ASMSTART4928; GFX900-NEXT:    ; use s[8:11]4929; GFX900-NEXT:    ;;#ASMEND4930; GFX900-NEXT:    s_setpc_b64 s[30:31]4931;4932; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_3_u_2:4933; GFX90A:       ; %bb.0:4934; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4935; GFX90A-NEXT:    ;;#ASMSTART4936; GFX90A-NEXT:    ; def s[4:5]4937; GFX90A-NEXT:    ;;#ASMEND4938; GFX90A-NEXT:    s_mov_b32 s8, s54939; GFX90A-NEXT:    s_mov_b32 s9, s54940; GFX90A-NEXT:    s_mov_b32 s11, s44941; GFX90A-NEXT:    ;;#ASMSTART4942; GFX90A-NEXT:    ; use s[8:11]4943; GFX90A-NEXT:    ;;#ASMEND4944; GFX90A-NEXT:    s_setpc_b64 s[30:31]4945;4946; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_3_u_2:4947; GFX942:       ; %bb.0:4948; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4949; GFX942-NEXT:    ;;#ASMSTART4950; GFX942-NEXT:    ; def s[0:1]4951; GFX942-NEXT:    ;;#ASMEND4952; GFX942-NEXT:    s_mov_b32 s8, s14953; GFX942-NEXT:    s_mov_b32 s9, s14954; GFX942-NEXT:    s_mov_b32 s11, s04955; GFX942-NEXT:    ;;#ASMSTART4956; GFX942-NEXT:    ; use s[8:11]4957; GFX942-NEXT:    ;;#ASMEND4958; GFX942-NEXT:    s_setpc_b64 s[30:31]4959  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4960  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4961  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 2>4962  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4963  ret void4964}4965 4966define void @s_shuffle_v4p3_v2p3__3_3_0_2() {4967; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_3_0_2:4968; GFX900:       ; %bb.0:4969; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4970; GFX900-NEXT:    ;;#ASMSTART4971; GFX900-NEXT:    ; def s[10:11]4972; GFX900-NEXT:    ;;#ASMEND4973; GFX900-NEXT:    ;;#ASMSTART4974; GFX900-NEXT:    ; def s[4:5]4975; GFX900-NEXT:    ;;#ASMEND4976; GFX900-NEXT:    s_mov_b32 s8, s54977; GFX900-NEXT:    s_mov_b32 s9, s54978; GFX900-NEXT:    s_mov_b32 s11, s44979; GFX900-NEXT:    ;;#ASMSTART4980; GFX900-NEXT:    ; use s[8:11]4981; GFX900-NEXT:    ;;#ASMEND4982; GFX900-NEXT:    s_setpc_b64 s[30:31]4983;4984; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_3_0_2:4985; GFX90A:       ; %bb.0:4986; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4987; GFX90A-NEXT:    ;;#ASMSTART4988; GFX90A-NEXT:    ; def s[10:11]4989; GFX90A-NEXT:    ;;#ASMEND4990; GFX90A-NEXT:    ;;#ASMSTART4991; GFX90A-NEXT:    ; def s[4:5]4992; GFX90A-NEXT:    ;;#ASMEND4993; GFX90A-NEXT:    s_mov_b32 s8, s54994; GFX90A-NEXT:    s_mov_b32 s9, s54995; GFX90A-NEXT:    s_mov_b32 s11, s44996; GFX90A-NEXT:    ;;#ASMSTART4997; GFX90A-NEXT:    ; use s[8:11]4998; GFX90A-NEXT:    ;;#ASMEND4999; GFX90A-NEXT:    s_setpc_b64 s[30:31]5000;5001; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_3_0_2:5002; GFX942:       ; %bb.0:5003; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5004; GFX942-NEXT:    ;;#ASMSTART5005; GFX942-NEXT:    ; def s[10:11]5006; GFX942-NEXT:    ;;#ASMEND5007; GFX942-NEXT:    ;;#ASMSTART5008; GFX942-NEXT:    ; def s[0:1]5009; GFX942-NEXT:    ;;#ASMEND5010; GFX942-NEXT:    s_mov_b32 s8, s15011; GFX942-NEXT:    s_mov_b32 s9, s15012; GFX942-NEXT:    s_mov_b32 s11, s05013; GFX942-NEXT:    ;;#ASMSTART5014; GFX942-NEXT:    ; use s[8:11]5015; GFX942-NEXT:    ;;#ASMEND5016; GFX942-NEXT:    s_setpc_b64 s[30:31]5017  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5018  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5019  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 2>5020  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)5021  ret void5022}5023 5024define void @s_shuffle_v4p3_v2p3__3_3_1_2() {5025; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_3_1_2:5026; GFX900:       ; %bb.0:5027; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5028; GFX900-NEXT:    ;;#ASMSTART5029; GFX900-NEXT:    ; def s[4:5]5030; GFX900-NEXT:    ;;#ASMEND5031; GFX900-NEXT:    ;;#ASMSTART5032; GFX900-NEXT:    ; def s[6:7]5033; GFX900-NEXT:    ;;#ASMEND5034; GFX900-NEXT:    s_mov_b32 s8, s75035; GFX900-NEXT:    s_mov_b32 s9, s75036; GFX900-NEXT:    s_mov_b32 s10, s55037; GFX900-NEXT:    s_mov_b32 s11, s65038; GFX900-NEXT:    ;;#ASMSTART5039; GFX900-NEXT:    ; use s[8:11]5040; GFX900-NEXT:    ;;#ASMEND5041; GFX900-NEXT:    s_setpc_b64 s[30:31]5042;5043; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_3_1_2:5044; GFX90A:       ; %bb.0:5045; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5046; GFX90A-NEXT:    ;;#ASMSTART5047; GFX90A-NEXT:    ; def s[4:5]5048; GFX90A-NEXT:    ;;#ASMEND5049; GFX90A-NEXT:    ;;#ASMSTART5050; GFX90A-NEXT:    ; def s[6:7]5051; GFX90A-NEXT:    ;;#ASMEND5052; GFX90A-NEXT:    s_mov_b32 s8, s75053; GFX90A-NEXT:    s_mov_b32 s9, s75054; GFX90A-NEXT:    s_mov_b32 s10, s55055; GFX90A-NEXT:    s_mov_b32 s11, s65056; GFX90A-NEXT:    ;;#ASMSTART5057; GFX90A-NEXT:    ; use s[8:11]5058; GFX90A-NEXT:    ;;#ASMEND5059; GFX90A-NEXT:    s_setpc_b64 s[30:31]5060;5061; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_3_1_2:5062; GFX942:       ; %bb.0:5063; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5064; GFX942-NEXT:    ;;#ASMSTART5065; GFX942-NEXT:    ; def s[0:1]5066; GFX942-NEXT:    ;;#ASMEND5067; GFX942-NEXT:    ;;#ASMSTART5068; GFX942-NEXT:    ; def s[2:3]5069; GFX942-NEXT:    ;;#ASMEND5070; GFX942-NEXT:    s_mov_b32 s8, s35071; GFX942-NEXT:    s_mov_b32 s9, s35072; GFX942-NEXT:    s_mov_b32 s10, s15073; GFX942-NEXT:    s_mov_b32 s11, s25074; GFX942-NEXT:    ;;#ASMSTART5075; GFX942-NEXT:    ; use s[8:11]5076; GFX942-NEXT:    ;;#ASMEND5077; GFX942-NEXT:    s_setpc_b64 s[30:31]5078  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5079  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5080  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 2>5081  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)5082  ret void5083}5084 5085define void @s_shuffle_v4p3_v2p3__u_3_3_3() {5086; GFX9-LABEL: s_shuffle_v4p3_v2p3__u_3_3_3:5087; GFX9:       ; %bb.0:5088; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5089; GFX9-NEXT:    ;;#ASMSTART5090; GFX9-NEXT:    ; def s[8:9]5091; GFX9-NEXT:    ;;#ASMEND5092; GFX9-NEXT:    s_mov_b32 s10, s95093; GFX9-NEXT:    s_mov_b32 s11, s95094; GFX9-NEXT:    ;;#ASMSTART5095; GFX9-NEXT:    ; use s[8:11]5096; GFX9-NEXT:    ;;#ASMEND5097; GFX9-NEXT:    s_setpc_b64 s[30:31]5098  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5099  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5100  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 poison, i32 3, i32 3, i32 3>5101  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)5102  ret void5103}5104 5105define void @s_shuffle_v4p3_v2p3__0_3_3_3() {5106; GFX9-LABEL: s_shuffle_v4p3_v2p3__0_3_3_3:5107; GFX9:       ; %bb.0:5108; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5109; GFX9-NEXT:    ;;#ASMSTART5110; GFX9-NEXT:    ; def s[8:9]5111; GFX9-NEXT:    ;;#ASMEND5112; GFX9-NEXT:    ;;#ASMSTART5113; GFX9-NEXT:    ; def s[10:11]5114; GFX9-NEXT:    ;;#ASMEND5115; GFX9-NEXT:    s_mov_b32 s9, s115116; GFX9-NEXT:    s_mov_b32 s10, s115117; GFX9-NEXT:    ;;#ASMSTART5118; GFX9-NEXT:    ; use s[8:11]5119; GFX9-NEXT:    ;;#ASMEND5120; GFX9-NEXT:    s_setpc_b64 s[30:31]5121  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5122  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5123  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 0, i32 3, i32 3, i32 3>5124  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)5125  ret void5126}5127 5128define void @s_shuffle_v4p3_v2p3__1_3_3_3() {5129; GFX900-LABEL: s_shuffle_v4p3_v2p3__1_3_3_3:5130; GFX900:       ; %bb.0:5131; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5132; GFX900-NEXT:    ;;#ASMSTART5133; GFX900-NEXT:    ; def s[8:9]5134; GFX900-NEXT:    ;;#ASMEND5135; GFX900-NEXT:    ;;#ASMSTART5136; GFX900-NEXT:    ; def s[4:5]5137; GFX900-NEXT:    ;;#ASMEND5138; GFX900-NEXT:    s_mov_b32 s8, s55139; GFX900-NEXT:    s_mov_b32 s10, s95140; GFX900-NEXT:    s_mov_b32 s11, s95141; GFX900-NEXT:    ;;#ASMSTART5142; GFX900-NEXT:    ; use s[8:11]5143; GFX900-NEXT:    ;;#ASMEND5144; GFX900-NEXT:    s_setpc_b64 s[30:31]5145;5146; GFX90A-LABEL: s_shuffle_v4p3_v2p3__1_3_3_3:5147; GFX90A:       ; %bb.0:5148; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5149; GFX90A-NEXT:    ;;#ASMSTART5150; GFX90A-NEXT:    ; def s[8:9]5151; GFX90A-NEXT:    ;;#ASMEND5152; GFX90A-NEXT:    ;;#ASMSTART5153; GFX90A-NEXT:    ; def s[4:5]5154; GFX90A-NEXT:    ;;#ASMEND5155; GFX90A-NEXT:    s_mov_b32 s8, s55156; GFX90A-NEXT:    s_mov_b32 s10, s95157; GFX90A-NEXT:    s_mov_b32 s11, s95158; GFX90A-NEXT:    ;;#ASMSTART5159; GFX90A-NEXT:    ; use s[8:11]5160; GFX90A-NEXT:    ;;#ASMEND5161; GFX90A-NEXT:    s_setpc_b64 s[30:31]5162;5163; GFX942-LABEL: s_shuffle_v4p3_v2p3__1_3_3_3:5164; GFX942:       ; %bb.0:5165; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5166; GFX942-NEXT:    ;;#ASMSTART5167; GFX942-NEXT:    ; def s[8:9]5168; GFX942-NEXT:    ;;#ASMEND5169; GFX942-NEXT:    ;;#ASMSTART5170; GFX942-NEXT:    ; def s[0:1]5171; GFX942-NEXT:    ;;#ASMEND5172; GFX942-NEXT:    s_mov_b32 s8, s15173; GFX942-NEXT:    s_mov_b32 s10, s95174; GFX942-NEXT:    s_mov_b32 s11, s95175; GFX942-NEXT:    ;;#ASMSTART5176; GFX942-NEXT:    ; use s[8:11]5177; GFX942-NEXT:    ;;#ASMEND5178; GFX942-NEXT:    s_setpc_b64 s[30:31]5179  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5180  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5181  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 1, i32 3, i32 3, i32 3>5182  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)5183  ret void5184}5185 5186define void @s_shuffle_v4p3_v2p3__2_3_3_3() {5187; GFX9-LABEL: s_shuffle_v4p3_v2p3__2_3_3_3:5188; GFX9:       ; %bb.0:5189; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5190; GFX9-NEXT:    ;;#ASMSTART5191; GFX9-NEXT:    ; def s[8:9]5192; GFX9-NEXT:    ;;#ASMEND5193; GFX9-NEXT:    s_mov_b32 s10, s95194; GFX9-NEXT:    s_mov_b32 s11, s95195; GFX9-NEXT:    ;;#ASMSTART5196; GFX9-NEXT:    ; use s[8:11]5197; GFX9-NEXT:    ;;#ASMEND5198; GFX9-NEXT:    s_setpc_b64 s[30:31]5199  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5200  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5201  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 2, i32 3, i32 3, i32 3>5202  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)5203  ret void5204}5205 5206define void @s_shuffle_v4p3_v2p3__3_u_3_3() {5207; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_u_3_3:5208; GFX9:       ; %bb.0:5209; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5210; GFX9-NEXT:    ;;#ASMSTART5211; GFX9-NEXT:    ; def s[10:11]5212; GFX9-NEXT:    ;;#ASMEND5213; GFX9-NEXT:    s_mov_b32 s8, s115214; GFX9-NEXT:    s_mov_b32 s10, s115215; GFX9-NEXT:    ;;#ASMSTART5216; GFX9-NEXT:    ; use s[8:11]5217; GFX9-NEXT:    ;;#ASMEND5218; GFX9-NEXT:    s_setpc_b64 s[30:31]5219  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5220  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5221  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 poison, i32 3, i32 3>5222  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)5223  ret void5224}5225 5226define void @s_shuffle_v4p3_v2p3__3_0_3_3() {5227; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_0_3_3:5228; GFX900:       ; %bb.0:5229; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5230; GFX900-NEXT:    ;;#ASMSTART5231; GFX900-NEXT:    ; def s[10:11]5232; GFX900-NEXT:    ;;#ASMEND5233; GFX900-NEXT:    ;;#ASMSTART5234; GFX900-NEXT:    ; def s[4:5]5235; GFX900-NEXT:    ;;#ASMEND5236; GFX900-NEXT:    s_mov_b32 s8, s115237; GFX900-NEXT:    s_mov_b32 s9, s45238; GFX900-NEXT:    s_mov_b32 s10, s115239; GFX900-NEXT:    ;;#ASMSTART5240; GFX900-NEXT:    ; use s[8:11]5241; GFX900-NEXT:    ;;#ASMEND5242; GFX900-NEXT:    s_setpc_b64 s[30:31]5243;5244; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_0_3_3:5245; GFX90A:       ; %bb.0:5246; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5247; GFX90A-NEXT:    ;;#ASMSTART5248; GFX90A-NEXT:    ; def s[10:11]5249; GFX90A-NEXT:    ;;#ASMEND5250; GFX90A-NEXT:    ;;#ASMSTART5251; GFX90A-NEXT:    ; def s[4:5]5252; GFX90A-NEXT:    ;;#ASMEND5253; GFX90A-NEXT:    s_mov_b32 s8, s115254; GFX90A-NEXT:    s_mov_b32 s9, s45255; GFX90A-NEXT:    s_mov_b32 s10, s115256; GFX90A-NEXT:    ;;#ASMSTART5257; GFX90A-NEXT:    ; use s[8:11]5258; GFX90A-NEXT:    ;;#ASMEND5259; GFX90A-NEXT:    s_setpc_b64 s[30:31]5260;5261; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_0_3_3:5262; GFX942:       ; %bb.0:5263; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5264; GFX942-NEXT:    ;;#ASMSTART5265; GFX942-NEXT:    ; def s[10:11]5266; GFX942-NEXT:    ;;#ASMEND5267; GFX942-NEXT:    ;;#ASMSTART5268; GFX942-NEXT:    ; def s[0:1]5269; GFX942-NEXT:    ;;#ASMEND5270; GFX942-NEXT:    s_mov_b32 s8, s115271; GFX942-NEXT:    s_mov_b32 s9, s05272; GFX942-NEXT:    s_mov_b32 s10, s115273; GFX942-NEXT:    ;;#ASMSTART5274; GFX942-NEXT:    ; use s[8:11]5275; GFX942-NEXT:    ;;#ASMEND5276; GFX942-NEXT:    s_setpc_b64 s[30:31]5277  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5278  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5279  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 0, i32 3, i32 3>5280  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)5281  ret void5282}5283 5284define void @s_shuffle_v4p3_v2p3__3_1_3_3() {5285; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_1_3_3:5286; GFX9:       ; %bb.0:5287; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5288; GFX9-NEXT:    ;;#ASMSTART5289; GFX9-NEXT:    ; def s[8:9]5290; GFX9-NEXT:    ;;#ASMEND5291; GFX9-NEXT:    ;;#ASMSTART5292; GFX9-NEXT:    ; def s[10:11]5293; GFX9-NEXT:    ;;#ASMEND5294; GFX9-NEXT:    s_mov_b32 s8, s115295; GFX9-NEXT:    s_mov_b32 s10, s115296; GFX9-NEXT:    ;;#ASMSTART5297; GFX9-NEXT:    ; use s[8:11]5298; GFX9-NEXT:    ;;#ASMEND5299; GFX9-NEXT:    s_setpc_b64 s[30:31]5300  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5301  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5302  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 1, i32 3, i32 3>5303  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)5304  ret void5305}5306 5307define void @s_shuffle_v4p3_v2p3__3_2_3_3() {5308; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_2_3_3:5309; GFX9:       ; %bb.0:5310; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5311; GFX9-NEXT:    ;;#ASMSTART5312; GFX9-NEXT:    ; def s[10:11]5313; GFX9-NEXT:    ;;#ASMEND5314; GFX9-NEXT:    s_mov_b32 s8, s115315; GFX9-NEXT:    s_mov_b32 s9, s105316; GFX9-NEXT:    s_mov_b32 s10, s115317; GFX9-NEXT:    ;;#ASMSTART5318; GFX9-NEXT:    ; use s[8:11]5319; GFX9-NEXT:    ;;#ASMEND5320; GFX9-NEXT:    s_setpc_b64 s[30:31]5321  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5322  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5323  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 2, i32 3, i32 3>5324  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)5325  ret void5326}5327 5328define void @s_shuffle_v4p3_v2p3__3_3_u_3() {5329; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_3_u_3:5330; GFX9:       ; %bb.0:5331; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5332; GFX9-NEXT:    ;;#ASMSTART5333; GFX9-NEXT:    ; def s[8:9]5334; GFX9-NEXT:    ;;#ASMEND5335; GFX9-NEXT:    s_mov_b32 s8, s95336; GFX9-NEXT:    s_mov_b32 s11, s95337; GFX9-NEXT:    ;;#ASMSTART5338; GFX9-NEXT:    ; use s[8:11]5339; GFX9-NEXT:    ;;#ASMEND5340; GFX9-NEXT:    s_setpc_b64 s[30:31]5341  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5342  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5343  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 3>5344  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)5345  ret void5346}5347 5348define void @s_shuffle_v4p3_v2p3__3_3_0_3() {5349; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_3_0_3:5350; GFX9:       ; %bb.0:5351; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5352; GFX9-NEXT:    ;;#ASMSTART5353; GFX9-NEXT:    ; def s[10:11]5354; GFX9-NEXT:    ;;#ASMEND5355; GFX9-NEXT:    ;;#ASMSTART5356; GFX9-NEXT:    ; def s[8:9]5357; GFX9-NEXT:    ;;#ASMEND5358; GFX9-NEXT:    s_mov_b32 s8, s95359; GFX9-NEXT:    s_mov_b32 s11, s95360; GFX9-NEXT:    ;;#ASMSTART5361; GFX9-NEXT:    ; use s[8:11]5362; GFX9-NEXT:    ;;#ASMEND5363; GFX9-NEXT:    s_setpc_b64 s[30:31]5364  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5365  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5366  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 3>5367  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)5368  ret void5369}5370 5371define void @s_shuffle_v4p3_v2p3__3_3_1_3() {5372; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_3_1_3:5373; GFX900:       ; %bb.0:5374; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5375; GFX900-NEXT:    ;;#ASMSTART5376; GFX900-NEXT:    ; def s[8:9]5377; GFX900-NEXT:    ;;#ASMEND5378; GFX900-NEXT:    ;;#ASMSTART5379; GFX900-NEXT:    ; def s[4:5]5380; GFX900-NEXT:    ;;#ASMEND5381; GFX900-NEXT:    s_mov_b32 s8, s95382; GFX900-NEXT:    s_mov_b32 s10, s55383; GFX900-NEXT:    s_mov_b32 s11, s95384; GFX900-NEXT:    ;;#ASMSTART5385; GFX900-NEXT:    ; use s[8:11]5386; GFX900-NEXT:    ;;#ASMEND5387; GFX900-NEXT:    s_setpc_b64 s[30:31]5388;5389; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_3_1_3:5390; GFX90A:       ; %bb.0:5391; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5392; GFX90A-NEXT:    ;;#ASMSTART5393; GFX90A-NEXT:    ; def s[8:9]5394; GFX90A-NEXT:    ;;#ASMEND5395; GFX90A-NEXT:    ;;#ASMSTART5396; GFX90A-NEXT:    ; def s[4:5]5397; GFX90A-NEXT:    ;;#ASMEND5398; GFX90A-NEXT:    s_mov_b32 s8, s95399; GFX90A-NEXT:    s_mov_b32 s10, s55400; GFX90A-NEXT:    s_mov_b32 s11, s95401; GFX90A-NEXT:    ;;#ASMSTART5402; GFX90A-NEXT:    ; use s[8:11]5403; GFX90A-NEXT:    ;;#ASMEND5404; GFX90A-NEXT:    s_setpc_b64 s[30:31]5405;5406; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_3_1_3:5407; GFX942:       ; %bb.0:5408; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5409; GFX942-NEXT:    ;;#ASMSTART5410; GFX942-NEXT:    ; def s[8:9]5411; GFX942-NEXT:    ;;#ASMEND5412; GFX942-NEXT:    ;;#ASMSTART5413; GFX942-NEXT:    ; def s[0:1]5414; GFX942-NEXT:    ;;#ASMEND5415; GFX942-NEXT:    s_mov_b32 s8, s95416; GFX942-NEXT:    s_mov_b32 s10, s15417; GFX942-NEXT:    s_mov_b32 s11, s95418; GFX942-NEXT:    ;;#ASMSTART5419; GFX942-NEXT:    ; use s[8:11]5420; GFX942-NEXT:    ;;#ASMEND5421; GFX942-NEXT:    s_setpc_b64 s[30:31]5422  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5423  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5424  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 3>5425  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)5426  ret void5427}5428 5429define void @s_shuffle_v4p3_v2p3__3_3_2_3() {5430; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_3_2_3:5431; GFX9:       ; %bb.0:5432; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5433; GFX9-NEXT:    ;;#ASMSTART5434; GFX9-NEXT:    ; def s[10:11]5435; GFX9-NEXT:    ;;#ASMEND5436; GFX9-NEXT:    s_mov_b32 s8, s115437; GFX9-NEXT:    s_mov_b32 s9, s115438; GFX9-NEXT:    ;;#ASMSTART5439; GFX9-NEXT:    ; use s[8:11]5440; GFX9-NEXT:    ;;#ASMEND5441; GFX9-NEXT:    s_setpc_b64 s[30:31]5442  %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5443  %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5444  %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 3>5445  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)5446  ret void5447}5448;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:5449; GFX90APLUS: {{.*}}5450