brintos

brintos / llvm-project-archived public Read only

0
0
Text · 217.3 KiB · 8ffb361 Raw
6029 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9,GFX900 %s3; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX90A %s4; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx942 < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX942 %s5 6 7define void @v_shuffle_v4p0_v2p0__u_u_u_u(ptr addrspace(1) inreg %ptr) {8; GFX9-LABEL: v_shuffle_v4p0_v2p0__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> asm "; def $0", "=v"()13  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> poison14  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 3215  ret void16}17 18define void @v_shuffle_v4p0_v2p0__0_u_u_u(ptr addrspace(1) inreg %ptr) {19; GFX900-LABEL: v_shuffle_v4p0_v2p0__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 v4, 023; GFX900-NEXT:    ;;#ASMSTART24; GFX900-NEXT:    ; def v[0:3]25; GFX900-NEXT:    ;;#ASMEND26; GFX900-NEXT:    global_store_dwordx4 v4, 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_v4p0_v2p0__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 v4, 034; GFX90A-NEXT:    ;;#ASMSTART35; GFX90A-NEXT:    ; def v[0:3]36; GFX90A-NEXT:    ;;#ASMEND37; GFX90A-NEXT:    global_store_dwordx4 v4, 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_v4p0_v2p0__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 v4, 045; GFX942-NEXT:    ;;#ASMSTART46; GFX942-NEXT:    ; def v[0:3]47; GFX942-NEXT:    ;;#ASMEND48; GFX942-NEXT:    global_store_dwordx4 v4, 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> asm "; def $0", "=v"()52  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>53  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 3254  ret void55}56 57define void @v_shuffle_v4p0_v2p0__1_u_u_u(ptr addrspace(1) inreg %ptr) {58; GFX900-LABEL: v_shuffle_v4p0_v2p0__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 v4, 062; GFX900-NEXT:    ;;#ASMSTART63; GFX900-NEXT:    ; def v[0:3]64; GFX900-NEXT:    ;;#ASMEND65; GFX900-NEXT:    global_store_dwordx4 v4, v[2:5], 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_v4p0_v2p0__1_u_u_u:70; GFX90A:       ; %bb.0:71; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)72; GFX90A-NEXT:    v_mov_b32_e32 v4, 073; GFX90A-NEXT:    ;;#ASMSTART74; GFX90A-NEXT:    ; def v[0:3]75; GFX90A-NEXT:    ;;#ASMEND76; GFX90A-NEXT:    global_store_dwordx4 v4, v[2:5], s[16:17]77; GFX90A-NEXT:    s_waitcnt vmcnt(0)78; GFX90A-NEXT:    s_setpc_b64 s[30:31]79;80; GFX942-LABEL: v_shuffle_v4p0_v2p0__1_u_u_u:81; GFX942:       ; %bb.0:82; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)83; GFX942-NEXT:    v_mov_b32_e32 v4, 084; GFX942-NEXT:    ;;#ASMSTART85; GFX942-NEXT:    ; def v[0:3]86; GFX942-NEXT:    ;;#ASMEND87; GFX942-NEXT:    global_store_dwordx4 v4, v[2:5], s[0:1]88; GFX942-NEXT:    s_waitcnt vmcnt(0)89; GFX942-NEXT:    s_setpc_b64 s[30:31]90  %vec0 = call <2 x ptr> asm "; def $0", "=v"()91  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>92  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 3293  ret void94}95 96define void @v_shuffle_v4p0_v2p0__2_u_u_u(ptr addrspace(1) inreg %ptr) {97; GFX9-LABEL: v_shuffle_v4p0_v2p0__2_u_u_u:98; GFX9:       ; %bb.0:99; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)100; GFX9-NEXT:    s_setpc_b64 s[30:31]101  %vec0 = call <2 x ptr> asm "; def $0", "=v"()102  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison>103  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32104  ret void105}106 107define void @v_shuffle_v4p0_v2p0__3_u_u_u(ptr addrspace(1) inreg %ptr) {108; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_u_u_u:109; GFX900:       ; %bb.0:110; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)111; GFX900-NEXT:    v_mov_b32_e32 v4, 0112; GFX900-NEXT:    ;;#ASMSTART113; GFX900-NEXT:    ; def v[0:3]114; GFX900-NEXT:    ;;#ASMEND115; GFX900-NEXT:    global_store_dwordx4 v4, v[2:5], s[16:17]116; GFX900-NEXT:    s_waitcnt vmcnt(0)117; GFX900-NEXT:    s_setpc_b64 s[30:31]118;119; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_u_u_u:120; GFX90A:       ; %bb.0:121; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)122; GFX90A-NEXT:    v_mov_b32_e32 v4, 0123; GFX90A-NEXT:    ;;#ASMSTART124; GFX90A-NEXT:    ; def v[0:3]125; GFX90A-NEXT:    ;;#ASMEND126; GFX90A-NEXT:    global_store_dwordx4 v4, v[2:5], s[16:17]127; GFX90A-NEXT:    s_waitcnt vmcnt(0)128; GFX90A-NEXT:    s_setpc_b64 s[30:31]129;130; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_u_u_u:131; GFX942:       ; %bb.0:132; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)133; GFX942-NEXT:    v_mov_b32_e32 v4, 0134; GFX942-NEXT:    ;;#ASMSTART135; GFX942-NEXT:    ; def v[0:3]136; GFX942-NEXT:    ;;#ASMEND137; GFX942-NEXT:    global_store_dwordx4 v4, v[2:5], s[0:1]138; GFX942-NEXT:    s_waitcnt vmcnt(0)139; GFX942-NEXT:    s_setpc_b64 s[30:31]140  %vec0 = call <2 x ptr> asm "; def $0", "=v"()141  %vec1 = call <2 x ptr> asm "; def $0", "=v"()142  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison>143  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32144  ret void145}146 147define void @v_shuffle_v4p0_v2p0__3_0_u_u(ptr addrspace(1) inreg %ptr) {148; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_0_u_u:149; GFX900:       ; %bb.0:150; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)151; GFX900-NEXT:    v_mov_b32_e32 v8, 0152; GFX900-NEXT:    ;;#ASMSTART153; GFX900-NEXT:    ; def v[4:7]154; GFX900-NEXT:    ;;#ASMEND155; GFX900-NEXT:    ;;#ASMSTART156; GFX900-NEXT:    ; def v[0:3]157; GFX900-NEXT:    ;;#ASMEND158; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]159; GFX900-NEXT:    s_waitcnt vmcnt(0)160; GFX900-NEXT:    s_setpc_b64 s[30:31]161;162; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_0_u_u:163; GFX90A:       ; %bb.0:164; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)165; GFX90A-NEXT:    v_mov_b32_e32 v8, 0166; GFX90A-NEXT:    ;;#ASMSTART167; GFX90A-NEXT:    ; def v[4:7]168; GFX90A-NEXT:    ;;#ASMEND169; GFX90A-NEXT:    ;;#ASMSTART170; GFX90A-NEXT:    ; def v[0:3]171; GFX90A-NEXT:    ;;#ASMEND172; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]173; GFX90A-NEXT:    s_waitcnt vmcnt(0)174; GFX90A-NEXT:    s_setpc_b64 s[30:31]175;176; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_0_u_u:177; GFX942:       ; %bb.0:178; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)179; GFX942-NEXT:    v_mov_b32_e32 v8, 0180; GFX942-NEXT:    ;;#ASMSTART181; GFX942-NEXT:    ; def v[4:7]182; GFX942-NEXT:    ;;#ASMEND183; GFX942-NEXT:    ;;#ASMSTART184; GFX942-NEXT:    ; def v[0:3]185; GFX942-NEXT:    ;;#ASMEND186; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1]187; GFX942-NEXT:    s_waitcnt vmcnt(0)188; GFX942-NEXT:    s_setpc_b64 s[30:31]189  %vec0 = call <2 x ptr> asm "; def $0", "=v"()190  %vec1 = call <2 x ptr> asm "; def $0", "=v"()191  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 0, i32 poison, i32 poison>192  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32193  ret void194}195 196define void @v_shuffle_v4p0_v2p0__3_1_u_u(ptr addrspace(1) inreg %ptr) {197; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_1_u_u:198; GFX900:       ; %bb.0:199; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)200; GFX900-NEXT:    v_mov_b32_e32 v6, 0201; GFX900-NEXT:    ;;#ASMSTART202; GFX900-NEXT:    ; def v[2:5]203; GFX900-NEXT:    ;;#ASMEND204; GFX900-NEXT:    ;;#ASMSTART205; GFX900-NEXT:    ; def v[0:3]206; GFX900-NEXT:    ;;#ASMEND207; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]208; GFX900-NEXT:    s_waitcnt vmcnt(0)209; GFX900-NEXT:    s_setpc_b64 s[30:31]210;211; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_1_u_u:212; GFX90A:       ; %bb.0:213; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)214; GFX90A-NEXT:    v_mov_b32_e32 v6, 0215; GFX90A-NEXT:    ;;#ASMSTART216; GFX90A-NEXT:    ; def v[2:5]217; GFX90A-NEXT:    ;;#ASMEND218; GFX90A-NEXT:    ;;#ASMSTART219; GFX90A-NEXT:    ; def v[0:3]220; GFX90A-NEXT:    ;;#ASMEND221; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]222; GFX90A-NEXT:    s_waitcnt vmcnt(0)223; GFX90A-NEXT:    s_setpc_b64 s[30:31]224;225; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_1_u_u:226; GFX942:       ; %bb.0:227; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)228; GFX942-NEXT:    v_mov_b32_e32 v6, 0229; GFX942-NEXT:    ;;#ASMSTART230; GFX942-NEXT:    ; def v[2:5]231; GFX942-NEXT:    ;;#ASMEND232; GFX942-NEXT:    s_nop 0233; GFX942-NEXT:    ;;#ASMSTART234; GFX942-NEXT:    ; def v[0:3]235; GFX942-NEXT:    ;;#ASMEND236; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]237; GFX942-NEXT:    s_waitcnt vmcnt(0)238; GFX942-NEXT:    s_setpc_b64 s[30:31]239  %vec0 = call <2 x ptr> asm "; def $0", "=v"()240  %vec1 = call <2 x ptr> asm "; def $0", "=v"()241  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 1, i32 poison, i32 poison>242  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32243  ret void244}245 246define void @v_shuffle_v4p0_v2p0__3_2_u_u(ptr addrspace(1) inreg %ptr) {247; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_2_u_u:248; GFX900:       ; %bb.0:249; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)250; GFX900-NEXT:    v_mov_b32_e32 v6, 0251; GFX900-NEXT:    ;;#ASMSTART252; GFX900-NEXT:    ; def v[0:3]253; GFX900-NEXT:    ;;#ASMEND254; GFX900-NEXT:    v_mov_b32_e32 v4, v0255; GFX900-NEXT:    v_mov_b32_e32 v5, v1256; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]257; GFX900-NEXT:    s_waitcnt vmcnt(0)258; GFX900-NEXT:    s_setpc_b64 s[30:31]259;260; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_2_u_u:261; GFX90A:       ; %bb.0:262; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)263; GFX90A-NEXT:    v_mov_b32_e32 v6, 0264; GFX90A-NEXT:    ;;#ASMSTART265; GFX90A-NEXT:    ; def v[0:3]266; GFX90A-NEXT:    ;;#ASMEND267; GFX90A-NEXT:    v_mov_b32_e32 v4, v0268; GFX90A-NEXT:    v_mov_b32_e32 v5, v1269; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]270; GFX90A-NEXT:    s_waitcnt vmcnt(0)271; GFX90A-NEXT:    s_setpc_b64 s[30:31]272;273; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_2_u_u:274; GFX942:       ; %bb.0:275; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)276; GFX942-NEXT:    v_mov_b32_e32 v6, 0277; GFX942-NEXT:    ;;#ASMSTART278; GFX942-NEXT:    ; def v[0:3]279; GFX942-NEXT:    ;;#ASMEND280; GFX942-NEXT:    s_nop 0281; GFX942-NEXT:    v_mov_b32_e32 v4, v0282; GFX942-NEXT:    v_mov_b32_e32 v5, v1283; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]284; GFX942-NEXT:    s_waitcnt vmcnt(0)285; GFX942-NEXT:    s_setpc_b64 s[30:31]286  %vec0 = call <2 x ptr> asm "; def $0", "=v"()287  %vec1 = call <2 x ptr> asm "; def $0", "=v"()288  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 2, i32 poison, i32 poison>289  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32290  ret void291}292 293define void @v_shuffle_v4p0_v2p0__3_3_u_u(ptr addrspace(1) inreg %ptr) {294; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_u_u:295; GFX900:       ; %bb.0:296; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)297; GFX900-NEXT:    v_mov_b32_e32 v6, 0298; GFX900-NEXT:    ;;#ASMSTART299; GFX900-NEXT:    ; def v[0:3]300; GFX900-NEXT:    ;;#ASMEND301; GFX900-NEXT:    v_mov_b32_e32 v4, v2302; GFX900-NEXT:    v_mov_b32_e32 v5, v3303; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]304; GFX900-NEXT:    s_waitcnt vmcnt(0)305; GFX900-NEXT:    s_setpc_b64 s[30:31]306;307; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_u_u:308; GFX90A:       ; %bb.0:309; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)310; GFX90A-NEXT:    v_mov_b32_e32 v6, 0311; GFX90A-NEXT:    ;;#ASMSTART312; GFX90A-NEXT:    ; def v[0:3]313; GFX90A-NEXT:    ;;#ASMEND314; GFX90A-NEXT:    v_mov_b32_e32 v4, v2315; GFX90A-NEXT:    v_mov_b32_e32 v5, v3316; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]317; GFX90A-NEXT:    s_waitcnt vmcnt(0)318; GFX90A-NEXT:    s_setpc_b64 s[30:31]319;320; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_3_u_u:321; GFX942:       ; %bb.0:322; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)323; GFX942-NEXT:    v_mov_b32_e32 v6, 0324; GFX942-NEXT:    ;;#ASMSTART325; GFX942-NEXT:    ; def v[0:3]326; GFX942-NEXT:    ;;#ASMEND327; GFX942-NEXT:    s_nop 0328; GFX942-NEXT:    v_mov_b32_e32 v4, v2329; GFX942-NEXT:    v_mov_b32_e32 v5, v3330; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]331; GFX942-NEXT:    s_waitcnt vmcnt(0)332; GFX942-NEXT:    s_setpc_b64 s[30:31]333  %vec0 = call <2 x ptr> asm "; def $0", "=v"()334  %vec1 = call <2 x ptr> asm "; def $0", "=v"()335  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 poison>336  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32337  ret void338}339 340define void @v_shuffle_v4p0_v2p0__3_3_0_u(ptr addrspace(1) inreg %ptr) {341; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_0_u:342; GFX900:       ; %bb.0:343; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)344; GFX900-NEXT:    v_mov_b32_e32 v8, 0345; GFX900-NEXT:    ;;#ASMSTART346; GFX900-NEXT:    ; def v[4:7]347; GFX900-NEXT:    ;;#ASMEND348; GFX900-NEXT:    ;;#ASMSTART349; GFX900-NEXT:    ; def v[0:3]350; GFX900-NEXT:    ;;#ASMEND351; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:16352; GFX900-NEXT:    s_nop 0353; GFX900-NEXT:    v_mov_b32_e32 v4, v2354; GFX900-NEXT:    v_mov_b32_e32 v5, v3355; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]356; GFX900-NEXT:    s_waitcnt vmcnt(0)357; GFX900-NEXT:    s_setpc_b64 s[30:31]358;359; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_0_u:360; GFX90A:       ; %bb.0:361; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)362; GFX90A-NEXT:    v_mov_b32_e32 v8, 0363; GFX90A-NEXT:    ;;#ASMSTART364; GFX90A-NEXT:    ; def v[4:7]365; GFX90A-NEXT:    ;;#ASMEND366; GFX90A-NEXT:    ;;#ASMSTART367; GFX90A-NEXT:    ; def v[0:3]368; GFX90A-NEXT:    ;;#ASMEND369; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:16370; GFX90A-NEXT:    s_nop 0371; GFX90A-NEXT:    v_mov_b32_e32 v4, v2372; GFX90A-NEXT:    v_mov_b32_e32 v5, v3373; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]374; GFX90A-NEXT:    s_waitcnt vmcnt(0)375; GFX90A-NEXT:    s_setpc_b64 s[30:31]376;377; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_3_0_u:378; GFX942:       ; %bb.0:379; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)380; GFX942-NEXT:    v_mov_b32_e32 v8, 0381; GFX942-NEXT:    ;;#ASMSTART382; GFX942-NEXT:    ; def v[4:7]383; GFX942-NEXT:    ;;#ASMEND384; GFX942-NEXT:    ;;#ASMSTART385; GFX942-NEXT:    ; def v[0:3]386; GFX942-NEXT:    ;;#ASMEND387; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:16388; GFX942-NEXT:    s_nop 1389; GFX942-NEXT:    v_mov_b32_e32 v4, v2390; GFX942-NEXT:    v_mov_b32_e32 v5, v3391; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1]392; GFX942-NEXT:    s_waitcnt vmcnt(0)393; GFX942-NEXT:    s_setpc_b64 s[30:31]394  %vec0 = call <2 x ptr> asm "; def $0", "=v"()395  %vec1 = call <2 x ptr> asm "; def $0", "=v"()396  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 poison>397  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32398  ret void399}400 401define void @v_shuffle_v4p0_v2p0__3_3_1_u(ptr addrspace(1) inreg %ptr) {402; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_1_u:403; GFX900:       ; %bb.0:404; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)405; GFX900-NEXT:    v_mov_b32_e32 v10, 0406; GFX900-NEXT:    ;;#ASMSTART407; GFX900-NEXT:    ; def v[4:7]408; GFX900-NEXT:    ;;#ASMEND409; GFX900-NEXT:    v_mov_b32_e32 v8, v6410; GFX900-NEXT:    v_mov_b32_e32 v9, v7411; GFX900-NEXT:    ;;#ASMSTART412; GFX900-NEXT:    ; def v[0:3]413; GFX900-NEXT:    ;;#ASMEND414; GFX900-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17] offset:16415; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17]416; GFX900-NEXT:    s_waitcnt vmcnt(0)417; GFX900-NEXT:    s_setpc_b64 s[30:31]418;419; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_1_u:420; GFX90A:       ; %bb.0:421; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)422; GFX90A-NEXT:    v_mov_b32_e32 v10, 0423; GFX90A-NEXT:    ;;#ASMSTART424; GFX90A-NEXT:    ; def v[4:7]425; GFX90A-NEXT:    ;;#ASMEND426; GFX90A-NEXT:    v_mov_b32_e32 v8, v6427; GFX90A-NEXT:    v_mov_b32_e32 v9, v7428; GFX90A-NEXT:    ;;#ASMSTART429; GFX90A-NEXT:    ; def v[0:3]430; GFX90A-NEXT:    ;;#ASMEND431; GFX90A-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17] offset:16432; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17]433; GFX90A-NEXT:    s_waitcnt vmcnt(0)434; GFX90A-NEXT:    s_setpc_b64 s[30:31]435;436; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_3_1_u:437; GFX942:       ; %bb.0:438; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)439; GFX942-NEXT:    v_mov_b32_e32 v10, 0440; GFX942-NEXT:    ;;#ASMSTART441; GFX942-NEXT:    ; def v[4:7]442; GFX942-NEXT:    ;;#ASMEND443; GFX942-NEXT:    ;;#ASMSTART444; GFX942-NEXT:    ; def v[0:3]445; GFX942-NEXT:    ;;#ASMEND446; GFX942-NEXT:    global_store_dwordx4 v10, v[2:5], s[0:1] offset:16447; GFX942-NEXT:    v_mov_b32_e32 v8, v6448; GFX942-NEXT:    v_mov_b32_e32 v9, v7449; GFX942-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1]450; GFX942-NEXT:    s_waitcnt vmcnt(0)451; GFX942-NEXT:    s_setpc_b64 s[30:31]452  %vec0 = call <2 x ptr> asm "; def $0", "=v"()453  %vec1 = call <2 x ptr> asm "; def $0", "=v"()454  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 poison>455  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32456  ret void457}458 459define void @v_shuffle_v4p0_v2p0__3_3_2_u(ptr addrspace(1) inreg %ptr) {460; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_2_u:461; GFX900:       ; %bb.0:462; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)463; GFX900-NEXT:    v_mov_b32_e32 v6, 0464; GFX900-NEXT:    ;;#ASMSTART465; GFX900-NEXT:    ; def v[0:3]466; GFX900-NEXT:    ;;#ASMEND467; GFX900-NEXT:    v_mov_b32_e32 v4, v2468; GFX900-NEXT:    v_mov_b32_e32 v5, v3469; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17] offset:16470; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]471; GFX900-NEXT:    s_waitcnt vmcnt(0)472; GFX900-NEXT:    s_setpc_b64 s[30:31]473;474; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_2_u:475; GFX90A:       ; %bb.0:476; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)477; GFX90A-NEXT:    v_mov_b32_e32 v6, 0478; GFX90A-NEXT:    ;;#ASMSTART479; GFX90A-NEXT:    ; def v[0:3]480; GFX90A-NEXT:    ;;#ASMEND481; GFX90A-NEXT:    v_mov_b32_e32 v4, v2482; GFX90A-NEXT:    v_mov_b32_e32 v5, v3483; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17] offset:16484; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]485; GFX90A-NEXT:    s_waitcnt vmcnt(0)486; GFX90A-NEXT:    s_setpc_b64 s[30:31]487;488; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_3_2_u:489; GFX942:       ; %bb.0:490; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)491; GFX942-NEXT:    v_mov_b32_e32 v6, 0492; GFX942-NEXT:    ;;#ASMSTART493; GFX942-NEXT:    ; def v[0:3]494; GFX942-NEXT:    ;;#ASMEND495; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] offset:16496; GFX942-NEXT:    v_mov_b32_e32 v4, v2497; GFX942-NEXT:    v_mov_b32_e32 v5, v3498; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]499; GFX942-NEXT:    s_waitcnt vmcnt(0)500; GFX942-NEXT:    s_setpc_b64 s[30:31]501  %vec0 = call <2 x ptr> asm "; def $0", "=v"()502  %vec1 = call <2 x ptr> asm "; def $0", "=v"()503  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 poison>504  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32505  ret void506}507 508define void @v_shuffle_v4p0_v2p0__3_3_3_u(ptr addrspace(1) inreg %ptr) {509; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_3_u:510; GFX900:       ; %bb.0:511; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)512; GFX900-NEXT:    v_mov_b32_e32 v6, 0513; GFX900-NEXT:    ;;#ASMSTART514; GFX900-NEXT:    ; def v[0:3]515; GFX900-NEXT:    ;;#ASMEND516; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:16517; GFX900-NEXT:    s_nop 0518; GFX900-NEXT:    v_mov_b32_e32 v4, v2519; GFX900-NEXT:    v_mov_b32_e32 v5, v3520; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]521; GFX900-NEXT:    s_waitcnt vmcnt(0)522; GFX900-NEXT:    s_setpc_b64 s[30:31]523;524; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_3_u:525; GFX90A:       ; %bb.0:526; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)527; GFX90A-NEXT:    v_mov_b32_e32 v6, 0528; GFX90A-NEXT:    ;;#ASMSTART529; GFX90A-NEXT:    ; def v[0:3]530; GFX90A-NEXT:    ;;#ASMEND531; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:16532; GFX90A-NEXT:    s_nop 0533; GFX90A-NEXT:    v_mov_b32_e32 v4, v2534; GFX90A-NEXT:    v_mov_b32_e32 v5, v3535; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]536; GFX90A-NEXT:    s_waitcnt vmcnt(0)537; GFX90A-NEXT:    s_setpc_b64 s[30:31]538;539; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_3_3_u:540; GFX942:       ; %bb.0:541; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)542; GFX942-NEXT:    v_mov_b32_e32 v6, 0543; GFX942-NEXT:    ;;#ASMSTART544; GFX942-NEXT:    ; def v[0:3]545; GFX942-NEXT:    ;;#ASMEND546; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] offset:16547; GFX942-NEXT:    s_nop 1548; GFX942-NEXT:    v_mov_b32_e32 v4, v2549; GFX942-NEXT:    v_mov_b32_e32 v5, v3550; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]551; GFX942-NEXT:    s_waitcnt vmcnt(0)552; GFX942-NEXT:    s_setpc_b64 s[30:31]553  %vec0 = call <2 x ptr> asm "; def $0", "=v"()554  %vec1 = call <2 x ptr> asm "; def $0", "=v"()555  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 poison>556  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32557  ret void558}559 560define void @v_shuffle_v4p0_v2p0__3_3_3_0(ptr addrspace(1) inreg %ptr) {561; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_3_0:562; GFX900:       ; %bb.0:563; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)564; GFX900-NEXT:    v_mov_b32_e32 v8, 0565; GFX900-NEXT:    ;;#ASMSTART566; GFX900-NEXT:    ; def v[4:7]567; GFX900-NEXT:    ;;#ASMEND568; GFX900-NEXT:    ;;#ASMSTART569; GFX900-NEXT:    ; def v[0:3]570; GFX900-NEXT:    ;;#ASMEND571; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17] offset:16572; GFX900-NEXT:    s_nop 0573; GFX900-NEXT:    v_mov_b32_e32 v4, v2574; GFX900-NEXT:    v_mov_b32_e32 v5, v3575; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]576; GFX900-NEXT:    s_waitcnt vmcnt(0)577; GFX900-NEXT:    s_setpc_b64 s[30:31]578;579; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_3_0:580; GFX90A:       ; %bb.0:581; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)582; GFX90A-NEXT:    v_mov_b32_e32 v8, 0583; GFX90A-NEXT:    ;;#ASMSTART584; GFX90A-NEXT:    ; def v[4:7]585; GFX90A-NEXT:    ;;#ASMEND586; GFX90A-NEXT:    ;;#ASMSTART587; GFX90A-NEXT:    ; def v[0:3]588; GFX90A-NEXT:    ;;#ASMEND589; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17] offset:16590; GFX90A-NEXT:    s_nop 0591; GFX90A-NEXT:    v_mov_b32_e32 v4, v2592; GFX90A-NEXT:    v_mov_b32_e32 v5, v3593; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]594; GFX90A-NEXT:    s_waitcnt vmcnt(0)595; GFX90A-NEXT:    s_setpc_b64 s[30:31]596;597; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_3_3_0:598; GFX942:       ; %bb.0:599; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)600; GFX942-NEXT:    v_mov_b32_e32 v8, 0601; GFX942-NEXT:    ;;#ASMSTART602; GFX942-NEXT:    ; def v[4:7]603; GFX942-NEXT:    ;;#ASMEND604; GFX942-NEXT:    ;;#ASMSTART605; GFX942-NEXT:    ; def v[0:3]606; GFX942-NEXT:    ;;#ASMEND607; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] offset:16608; GFX942-NEXT:    s_nop 1609; GFX942-NEXT:    v_mov_b32_e32 v4, v2610; GFX942-NEXT:    v_mov_b32_e32 v5, v3611; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1]612; GFX942-NEXT:    s_waitcnt vmcnt(0)613; GFX942-NEXT:    s_setpc_b64 s[30:31]614  %vec0 = call <2 x ptr> asm "; def $0", "=v"()615  %vec1 = call <2 x ptr> asm "; def $0", "=v"()616  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 0>617  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32618  ret void619}620 621define void @v_shuffle_v4p0_v2p0__3_3_3_1(ptr addrspace(1) inreg %ptr) {622; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_3_1:623; GFX900:       ; %bb.0:624; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)625; GFX900-NEXT:    v_mov_b32_e32 v6, 0626; GFX900-NEXT:    ;;#ASMSTART627; GFX900-NEXT:    ; def v[2:5]628; GFX900-NEXT:    ;;#ASMEND629; GFX900-NEXT:    ;;#ASMSTART630; GFX900-NEXT:    ; def v[0:3]631; GFX900-NEXT:    ;;#ASMEND632; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:16633; GFX900-NEXT:    s_nop 0634; GFX900-NEXT:    v_mov_b32_e32 v4, v2635; GFX900-NEXT:    v_mov_b32_e32 v5, v3636; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]637; GFX900-NEXT:    s_waitcnt vmcnt(0)638; GFX900-NEXT:    s_setpc_b64 s[30:31]639;640; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_3_1:641; GFX90A:       ; %bb.0:642; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)643; GFX90A-NEXT:    v_mov_b32_e32 v6, 0644; GFX90A-NEXT:    ;;#ASMSTART645; GFX90A-NEXT:    ; def v[2:5]646; GFX90A-NEXT:    ;;#ASMEND647; GFX90A-NEXT:    ;;#ASMSTART648; GFX90A-NEXT:    ; def v[0:3]649; GFX90A-NEXT:    ;;#ASMEND650; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:16651; GFX90A-NEXT:    s_nop 0652; GFX90A-NEXT:    v_mov_b32_e32 v4, v2653; GFX90A-NEXT:    v_mov_b32_e32 v5, v3654; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]655; GFX90A-NEXT:    s_waitcnt vmcnt(0)656; GFX90A-NEXT:    s_setpc_b64 s[30:31]657;658; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_3_3_1:659; GFX942:       ; %bb.0:660; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)661; GFX942-NEXT:    v_mov_b32_e32 v6, 0662; GFX942-NEXT:    ;;#ASMSTART663; GFX942-NEXT:    ; def v[2:5]664; GFX942-NEXT:    ;;#ASMEND665; GFX942-NEXT:    s_nop 0666; GFX942-NEXT:    ;;#ASMSTART667; GFX942-NEXT:    ; def v[0:3]668; GFX942-NEXT:    ;;#ASMEND669; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] offset:16670; GFX942-NEXT:    s_nop 1671; GFX942-NEXT:    v_mov_b32_e32 v4, v2672; GFX942-NEXT:    v_mov_b32_e32 v5, v3673; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]674; GFX942-NEXT:    s_waitcnt vmcnt(0)675; GFX942-NEXT:    s_setpc_b64 s[30:31]676  %vec0 = call <2 x ptr> asm "; def $0", "=v"()677  %vec1 = call <2 x ptr> asm "; def $0", "=v"()678  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 1>679  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32680  ret void681}682 683define void @v_shuffle_v4p0_v2p0__3_3_3_2(ptr addrspace(1) inreg %ptr) {684; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_3_2:685; GFX900:       ; %bb.0:686; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)687; GFX900-NEXT:    v_mov_b32_e32 v6, 0688; GFX900-NEXT:    ;;#ASMSTART689; GFX900-NEXT:    ; def v[0:3]690; GFX900-NEXT:    ;;#ASMEND691; GFX900-NEXT:    v_mov_b32_e32 v4, v0692; GFX900-NEXT:    v_mov_b32_e32 v5, v1693; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:16694; GFX900-NEXT:    s_nop 0695; GFX900-NEXT:    v_mov_b32_e32 v4, v2696; GFX900-NEXT:    v_mov_b32_e32 v5, v3697; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]698; GFX900-NEXT:    s_waitcnt vmcnt(0)699; GFX900-NEXT:    s_setpc_b64 s[30:31]700;701; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_3_2:702; GFX90A:       ; %bb.0:703; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)704; GFX90A-NEXT:    v_mov_b32_e32 v6, 0705; GFX90A-NEXT:    ;;#ASMSTART706; GFX90A-NEXT:    ; def v[0:3]707; GFX90A-NEXT:    ;;#ASMEND708; GFX90A-NEXT:    v_mov_b32_e32 v4, v0709; GFX90A-NEXT:    v_mov_b32_e32 v5, v1710; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:16711; GFX90A-NEXT:    s_nop 0712; GFX90A-NEXT:    v_mov_b32_e32 v4, v2713; GFX90A-NEXT:    v_mov_b32_e32 v5, v3714; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]715; GFX90A-NEXT:    s_waitcnt vmcnt(0)716; GFX90A-NEXT:    s_setpc_b64 s[30:31]717;718; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_3_3_2:719; GFX942:       ; %bb.0:720; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)721; GFX942-NEXT:    v_mov_b32_e32 v6, 0722; GFX942-NEXT:    ;;#ASMSTART723; GFX942-NEXT:    ; def v[0:3]724; GFX942-NEXT:    ;;#ASMEND725; GFX942-NEXT:    s_nop 0726; GFX942-NEXT:    v_mov_b32_e32 v4, v0727; GFX942-NEXT:    v_mov_b32_e32 v5, v1728; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] offset:16729; GFX942-NEXT:    s_nop 1730; GFX942-NEXT:    v_mov_b32_e32 v4, v2731; GFX942-NEXT:    v_mov_b32_e32 v5, v3732; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]733; GFX942-NEXT:    s_waitcnt vmcnt(0)734; GFX942-NEXT:    s_setpc_b64 s[30:31]735  %vec0 = call <2 x ptr> asm "; def $0", "=v"()736  %vec1 = call <2 x ptr> asm "; def $0", "=v"()737  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 2>738  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32739  ret void740}741 742define void @v_shuffle_v4p0_v2p0__3_3_3_3(ptr addrspace(1) inreg %ptr) {743; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_3_3:744; GFX900:       ; %bb.0:745; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)746; GFX900-NEXT:    v_mov_b32_e32 v6, 0747; GFX900-NEXT:    ;;#ASMSTART748; GFX900-NEXT:    ; def v[0:3]749; GFX900-NEXT:    ;;#ASMEND750; GFX900-NEXT:    v_mov_b32_e32 v4, v2751; GFX900-NEXT:    v_mov_b32_e32 v5, v3752; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:16753; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]754; GFX900-NEXT:    s_waitcnt vmcnt(0)755; GFX900-NEXT:    s_setpc_b64 s[30:31]756;757; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_3_3:758; GFX90A:       ; %bb.0:759; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)760; GFX90A-NEXT:    v_mov_b32_e32 v6, 0761; GFX90A-NEXT:    ;;#ASMSTART762; GFX90A-NEXT:    ; def v[0:3]763; GFX90A-NEXT:    ;;#ASMEND764; GFX90A-NEXT:    v_mov_b32_e32 v4, v2765; GFX90A-NEXT:    v_mov_b32_e32 v5, v3766; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:16767; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]768; GFX90A-NEXT:    s_waitcnt vmcnt(0)769; GFX90A-NEXT:    s_setpc_b64 s[30:31]770;771; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_3_3_3:772; GFX942:       ; %bb.0:773; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)774; GFX942-NEXT:    v_mov_b32_e32 v6, 0775; GFX942-NEXT:    ;;#ASMSTART776; GFX942-NEXT:    ; def v[0:3]777; GFX942-NEXT:    ;;#ASMEND778; GFX942-NEXT:    s_nop 0779; GFX942-NEXT:    v_mov_b32_e32 v4, v2780; GFX942-NEXT:    v_mov_b32_e32 v5, v3781; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] offset:16782; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]783; GFX942-NEXT:    s_waitcnt vmcnt(0)784; GFX942-NEXT:    s_setpc_b64 s[30:31]785  %vec0 = call <2 x ptr> asm "; def $0", "=v"()786  %vec1 = call <2 x ptr> asm "; def $0", "=v"()787  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 3>788  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32789  ret void790}791 792define void @v_shuffle_v4p0_v2p0__u_0_0_0(ptr addrspace(1) inreg %ptr) {793; GFX900-LABEL: v_shuffle_v4p0_v2p0__u_0_0_0:794; GFX900:       ; %bb.0:795; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)796; GFX900-NEXT:    ;;#ASMSTART797; GFX900-NEXT:    ; def v[2:5]798; GFX900-NEXT:    ;;#ASMEND799; GFX900-NEXT:    v_mov_b32_e32 v0, 0800; GFX900-NEXT:    v_mov_b32_e32 v4, v2801; GFX900-NEXT:    v_mov_b32_e32 v5, v3802; GFX900-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:16803; GFX900-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17]804; GFX900-NEXT:    s_waitcnt vmcnt(0)805; GFX900-NEXT:    s_setpc_b64 s[30:31]806;807; GFX90A-LABEL: v_shuffle_v4p0_v2p0__u_0_0_0:808; GFX90A:       ; %bb.0:809; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)810; GFX90A-NEXT:    ;;#ASMSTART811; GFX90A-NEXT:    ; def v[2:5]812; GFX90A-NEXT:    ;;#ASMEND813; GFX90A-NEXT:    v_mov_b32_e32 v0, 0814; GFX90A-NEXT:    v_mov_b32_e32 v4, v2815; GFX90A-NEXT:    v_mov_b32_e32 v5, v3816; GFX90A-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:16817; GFX90A-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17]818; GFX90A-NEXT:    s_waitcnt vmcnt(0)819; GFX90A-NEXT:    s_setpc_b64 s[30:31]820;821; GFX942-LABEL: v_shuffle_v4p0_v2p0__u_0_0_0:822; GFX942:       ; %bb.0:823; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)824; GFX942-NEXT:    ;;#ASMSTART825; GFX942-NEXT:    ; def v[2:5]826; GFX942-NEXT:    ;;#ASMEND827; GFX942-NEXT:    v_mov_b32_e32 v0, 0828; GFX942-NEXT:    v_mov_b32_e32 v4, v2829; GFX942-NEXT:    v_mov_b32_e32 v5, v3830; GFX942-NEXT:    global_store_dwordx4 v0, v[2:5], s[0:1] offset:16831; GFX942-NEXT:    global_store_dwordx4 v0, v[0:3], s[0:1]832; GFX942-NEXT:    s_waitcnt vmcnt(0)833; GFX942-NEXT:    s_setpc_b64 s[30:31]834  %vec0 = call <2 x ptr> asm "; def $0", "=v"()835  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0>836  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32837  ret void838}839 840define void @v_shuffle_v4p0_v2p0__0_0_0_0(ptr addrspace(1) inreg %ptr) {841; GFX900-LABEL: v_shuffle_v4p0_v2p0__0_0_0_0:842; GFX900:       ; %bb.0:843; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)844; GFX900-NEXT:    ;;#ASMSTART845; GFX900-NEXT:    ; def v[0:3]846; GFX900-NEXT:    ;;#ASMEND847; GFX900-NEXT:    v_mov_b32_e32 v4, 0848; GFX900-NEXT:    v_mov_b32_e32 v2, v0849; GFX900-NEXT:    v_mov_b32_e32 v3, v1850; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17] offset:16851; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]852; GFX900-NEXT:    s_waitcnt vmcnt(0)853; GFX900-NEXT:    s_setpc_b64 s[30:31]854;855; GFX90A-LABEL: v_shuffle_v4p0_v2p0__0_0_0_0:856; GFX90A:       ; %bb.0:857; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)858; GFX90A-NEXT:    ;;#ASMSTART859; GFX90A-NEXT:    ; def v[0:3]860; GFX90A-NEXT:    ;;#ASMEND861; GFX90A-NEXT:    v_mov_b32_e32 v4, 0862; GFX90A-NEXT:    v_mov_b32_e32 v2, v0863; GFX90A-NEXT:    v_mov_b32_e32 v3, v1864; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17] offset:16865; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]866; GFX90A-NEXT:    s_waitcnt vmcnt(0)867; GFX90A-NEXT:    s_setpc_b64 s[30:31]868;869; GFX942-LABEL: v_shuffle_v4p0_v2p0__0_0_0_0:870; GFX942:       ; %bb.0:871; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)872; GFX942-NEXT:    ;;#ASMSTART873; GFX942-NEXT:    ; def v[0:3]874; GFX942-NEXT:    ;;#ASMEND875; GFX942-NEXT:    v_mov_b32_e32 v4, 0876; GFX942-NEXT:    v_mov_b32_e32 v2, v0877; GFX942-NEXT:    v_mov_b32_e32 v3, v1878; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1] offset:16879; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]880; GFX942-NEXT:    s_waitcnt vmcnt(0)881; GFX942-NEXT:    s_setpc_b64 s[30:31]882  %vec0 = call <2 x ptr> asm "; def $0", "=v"()883  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> zeroinitializer884  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32885  ret void886}887 888define void @v_shuffle_v4p0_v2p0__1_0_0_0(ptr addrspace(1) inreg %ptr) {889; GFX900-LABEL: v_shuffle_v4p0_v2p0__1_0_0_0:890; GFX900:       ; %bb.0:891; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)892; GFX900-NEXT:    v_mov_b32_e32 v8, 0893; GFX900-NEXT:    ;;#ASMSTART894; GFX900-NEXT:    ; def v[2:5]895; GFX900-NEXT:    ;;#ASMEND896; GFX900-NEXT:    v_mov_b32_e32 v0, v2897; GFX900-NEXT:    v_mov_b32_e32 v1, v3898; GFX900-NEXT:    v_mov_b32_e32 v6, v2899; GFX900-NEXT:    v_mov_b32_e32 v7, v3900; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:16901; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]902; GFX900-NEXT:    s_waitcnt vmcnt(0)903; GFX900-NEXT:    s_setpc_b64 s[30:31]904;905; GFX90A-LABEL: v_shuffle_v4p0_v2p0__1_0_0_0:906; GFX90A:       ; %bb.0:907; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)908; GFX90A-NEXT:    v_mov_b32_e32 v8, 0909; GFX90A-NEXT:    ;;#ASMSTART910; GFX90A-NEXT:    ; def v[2:5]911; GFX90A-NEXT:    ;;#ASMEND912; GFX90A-NEXT:    v_mov_b32_e32 v0, v2913; GFX90A-NEXT:    v_mov_b32_e32 v1, v3914; GFX90A-NEXT:    v_mov_b32_e32 v6, v2915; GFX90A-NEXT:    v_mov_b32_e32 v7, v3916; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:16917; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]918; GFX90A-NEXT:    s_waitcnt vmcnt(0)919; GFX90A-NEXT:    s_setpc_b64 s[30:31]920;921; GFX942-LABEL: v_shuffle_v4p0_v2p0__1_0_0_0:922; GFX942:       ; %bb.0:923; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)924; GFX942-NEXT:    v_mov_b32_e32 v8, 0925; GFX942-NEXT:    ;;#ASMSTART926; GFX942-NEXT:    ; def v[2:5]927; GFX942-NEXT:    ;;#ASMEND928; GFX942-NEXT:    s_nop 0929; GFX942-NEXT:    v_mov_b32_e32 v0, v2930; GFX942-NEXT:    v_mov_b32_e32 v1, v3931; GFX942-NEXT:    v_mov_b32_e32 v6, v2932; GFX942-NEXT:    v_mov_b32_e32 v7, v3933; GFX942-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:16934; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]935; GFX942-NEXT:    s_waitcnt vmcnt(0)936; GFX942-NEXT:    s_setpc_b64 s[30:31]937  %vec0 = call <2 x ptr> asm "; def $0", "=v"()938  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>939  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32940  ret void941}942 943define void @v_shuffle_v4p0_v2p0__2_0_0_0(ptr addrspace(1) inreg %ptr) {944; GFX900-LABEL: v_shuffle_v4p0_v2p0__2_0_0_0:945; GFX900:       ; %bb.0:946; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)947; GFX900-NEXT:    ;;#ASMSTART948; GFX900-NEXT:    ; def v[2:5]949; GFX900-NEXT:    ;;#ASMEND950; GFX900-NEXT:    v_mov_b32_e32 v0, 0951; GFX900-NEXT:    v_mov_b32_e32 v4, v2952; GFX900-NEXT:    v_mov_b32_e32 v5, v3953; GFX900-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:16954; GFX900-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17]955; GFX900-NEXT:    s_waitcnt vmcnt(0)956; GFX900-NEXT:    s_setpc_b64 s[30:31]957;958; GFX90A-LABEL: v_shuffle_v4p0_v2p0__2_0_0_0:959; GFX90A:       ; %bb.0:960; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)961; GFX90A-NEXT:    ;;#ASMSTART962; GFX90A-NEXT:    ; def v[2:5]963; GFX90A-NEXT:    ;;#ASMEND964; GFX90A-NEXT:    v_mov_b32_e32 v0, 0965; GFX90A-NEXT:    v_mov_b32_e32 v4, v2966; GFX90A-NEXT:    v_mov_b32_e32 v5, v3967; GFX90A-NEXT:    global_store_dwordx4 v0, v[2:5], s[16:17] offset:16968; GFX90A-NEXT:    global_store_dwordx4 v0, 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_v4p0_v2p0__2_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:5]977; GFX942-NEXT:    ;;#ASMEND978; GFX942-NEXT:    v_mov_b32_e32 v0, 0979; GFX942-NEXT:    v_mov_b32_e32 v4, v2980; GFX942-NEXT:    v_mov_b32_e32 v5, v3981; GFX942-NEXT:    global_store_dwordx4 v0, v[2:5], s[0:1] offset:16982; GFX942-NEXT:    global_store_dwordx4 v0, v[0:3], s[0:1]983; GFX942-NEXT:    s_waitcnt vmcnt(0)984; GFX942-NEXT:    s_setpc_b64 s[30:31]985  %vec0 = call <2 x ptr> asm "; def $0", "=v"()986  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0>987  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 32988  ret void989}990 991define void @v_shuffle_v4p0_v2p0__3_0_0_0(ptr addrspace(1) inreg %ptr) {992; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_0_0_0:993; GFX900:       ; %bb.0:994; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)995; GFX900-NEXT:    ;;#ASMSTART996; GFX900-NEXT:    ; def v[4:7]997; GFX900-NEXT:    ;;#ASMEND998; GFX900-NEXT:    v_mov_b32_e32 v8, 0999; GFX900-NEXT:    ;;#ASMSTART1000; GFX900-NEXT:    ; def v[0:3]1001; GFX900-NEXT:    ;;#ASMEND1002; GFX900-NEXT:    v_mov_b32_e32 v6, v41003; GFX900-NEXT:    v_mov_b32_e32 v7, v51004; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:161005; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]1006; GFX900-NEXT:    s_waitcnt vmcnt(0)1007; GFX900-NEXT:    s_setpc_b64 s[30:31]1008;1009; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_0_0_0:1010; GFX90A:       ; %bb.0:1011; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1012; GFX90A-NEXT:    ;;#ASMSTART1013; GFX90A-NEXT:    ; def v[4:7]1014; GFX90A-NEXT:    ;;#ASMEND1015; GFX90A-NEXT:    v_mov_b32_e32 v8, 01016; GFX90A-NEXT:    ;;#ASMSTART1017; GFX90A-NEXT:    ; def v[0:3]1018; GFX90A-NEXT:    ;;#ASMEND1019; GFX90A-NEXT:    v_mov_b32_e32 v6, v41020; GFX90A-NEXT:    v_mov_b32_e32 v7, v51021; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:161022; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], 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_v4p0_v2p0__3_0_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[4:7]1031; GFX942-NEXT:    ;;#ASMEND1032; GFX942-NEXT:    v_mov_b32_e32 v8, 01033; GFX942-NEXT:    ;;#ASMSTART1034; GFX942-NEXT:    ; def v[0:3]1035; GFX942-NEXT:    ;;#ASMEND1036; GFX942-NEXT:    v_mov_b32_e32 v6, v41037; GFX942-NEXT:    v_mov_b32_e32 v7, v51038; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:161039; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1]1040; GFX942-NEXT:    s_waitcnt vmcnt(0)1041; GFX942-NEXT:    s_setpc_b64 s[30:31]1042  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1043  %vec1 = call <2 x ptr> asm "; def $0", "=v"()1044  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 0, i32 0, i32 0>1045  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321046  ret void1047}1048 1049define void @v_shuffle_v4p0_v2p0__3_u_0_0(ptr addrspace(1) inreg %ptr) {1050; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_u_0_0:1051; GFX900:       ; %bb.0:1052; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1053; GFX900-NEXT:    ;;#ASMSTART1054; GFX900-NEXT:    ; def v[4:7]1055; GFX900-NEXT:    ;;#ASMEND1056; GFX900-NEXT:    v_mov_b32_e32 v8, 01057; GFX900-NEXT:    ;;#ASMSTART1058; GFX900-NEXT:    ; def v[0:3]1059; GFX900-NEXT:    ;;#ASMEND1060; GFX900-NEXT:    v_mov_b32_e32 v6, v41061; GFX900-NEXT:    v_mov_b32_e32 v7, v51062; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:161063; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]1064; GFX900-NEXT:    s_waitcnt vmcnt(0)1065; GFX900-NEXT:    s_setpc_b64 s[30:31]1066;1067; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_u_0_0:1068; GFX90A:       ; %bb.0:1069; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1070; GFX90A-NEXT:    ;;#ASMSTART1071; GFX90A-NEXT:    ; def v[4:7]1072; GFX90A-NEXT:    ;;#ASMEND1073; GFX90A-NEXT:    v_mov_b32_e32 v8, 01074; GFX90A-NEXT:    ;;#ASMSTART1075; GFX90A-NEXT:    ; def v[0:3]1076; GFX90A-NEXT:    ;;#ASMEND1077; GFX90A-NEXT:    v_mov_b32_e32 v6, v41078; GFX90A-NEXT:    v_mov_b32_e32 v7, v51079; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:161080; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]1081; GFX90A-NEXT:    s_waitcnt vmcnt(0)1082; GFX90A-NEXT:    s_setpc_b64 s[30:31]1083;1084; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_u_0_0:1085; GFX942:       ; %bb.0:1086; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1087; GFX942-NEXT:    ;;#ASMSTART1088; GFX942-NEXT:    ; def v[4:7]1089; GFX942-NEXT:    ;;#ASMEND1090; GFX942-NEXT:    v_mov_b32_e32 v8, 01091; GFX942-NEXT:    ;;#ASMSTART1092; GFX942-NEXT:    ; def v[0:3]1093; GFX942-NEXT:    ;;#ASMEND1094; GFX942-NEXT:    v_mov_b32_e32 v6, v41095; GFX942-NEXT:    v_mov_b32_e32 v7, v51096; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:161097; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1]1098; GFX942-NEXT:    s_waitcnt vmcnt(0)1099; GFX942-NEXT:    s_setpc_b64 s[30:31]1100  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1101  %vec1 = call <2 x ptr> asm "; def $0", "=v"()1102  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 poison, i32 0, i32 0>1103  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321104  ret void1105}1106 1107define void @v_shuffle_v4p0_v2p0__3_1_0_0(ptr addrspace(1) inreg %ptr) {1108; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_1_0_0:1109; GFX900:       ; %bb.0:1110; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1111; GFX900-NEXT:    v_mov_b32_e32 v12, 01112; GFX900-NEXT:    ;;#ASMSTART1113; GFX900-NEXT:    ; def v[2:5]1114; GFX900-NEXT:    ;;#ASMEND1115; GFX900-NEXT:    v_mov_b32_e32 v0, v21116; GFX900-NEXT:    v_mov_b32_e32 v1, v31117; GFX900-NEXT:    v_mov_b32_e32 v10, v41118; GFX900-NEXT:    v_mov_b32_e32 v11, v51119; GFX900-NEXT:    ;;#ASMSTART1120; GFX900-NEXT:    ; def v[6:9]1121; GFX900-NEXT:    ;;#ASMEND1122; GFX900-NEXT:    global_store_dwordx4 v12, v[0:3], s[16:17] offset:161123; GFX900-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17]1124; GFX900-NEXT:    s_waitcnt vmcnt(0)1125; GFX900-NEXT:    s_setpc_b64 s[30:31]1126;1127; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_1_0_0:1128; GFX90A:       ; %bb.0:1129; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1130; GFX90A-NEXT:    v_mov_b32_e32 v12, 01131; GFX90A-NEXT:    ;;#ASMSTART1132; GFX90A-NEXT:    ; def v[2:5]1133; GFX90A-NEXT:    ;;#ASMEND1134; GFX90A-NEXT:    v_mov_b32_e32 v0, v21135; GFX90A-NEXT:    v_mov_b32_e32 v1, v31136; GFX90A-NEXT:    v_mov_b32_e32 v10, v41137; GFX90A-NEXT:    v_mov_b32_e32 v11, v51138; GFX90A-NEXT:    ;;#ASMSTART1139; GFX90A-NEXT:    ; def v[6:9]1140; GFX90A-NEXT:    ;;#ASMEND1141; GFX90A-NEXT:    global_store_dwordx4 v12, v[0:3], s[16:17] offset:161142; GFX90A-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17]1143; GFX90A-NEXT:    s_waitcnt vmcnt(0)1144; GFX90A-NEXT:    s_setpc_b64 s[30:31]1145;1146; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_1_0_0:1147; GFX942:       ; %bb.0:1148; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1149; GFX942-NEXT:    v_mov_b32_e32 v12, 01150; GFX942-NEXT:    ;;#ASMSTART1151; GFX942-NEXT:    ; def v[2:5]1152; GFX942-NEXT:    ;;#ASMEND1153; GFX942-NEXT:    ;;#ASMSTART1154; GFX942-NEXT:    ; def v[6:9]1155; GFX942-NEXT:    ;;#ASMEND1156; GFX942-NEXT:    s_nop 01157; GFX942-NEXT:    v_mov_b32_e32 v0, v21158; GFX942-NEXT:    v_mov_b32_e32 v1, v31159; GFX942-NEXT:    v_mov_b32_e32 v10, v41160; GFX942-NEXT:    v_mov_b32_e32 v11, v51161; GFX942-NEXT:    global_store_dwordx4 v12, v[0:3], s[0:1] offset:161162; GFX942-NEXT:    global_store_dwordx4 v12, v[8:11], s[0:1]1163; GFX942-NEXT:    s_waitcnt vmcnt(0)1164; GFX942-NEXT:    s_setpc_b64 s[30:31]1165  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1166  %vec1 = call <2 x ptr> asm "; def $0", "=v"()1167  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 1, i32 0, i32 0>1168  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321169  ret void1170}1171 1172define void @v_shuffle_v4p0_v2p0__3_2_0_0(ptr addrspace(1) inreg %ptr) {1173; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_2_0_0:1174; GFX900:       ; %bb.0:1175; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1176; GFX900-NEXT:    ;;#ASMSTART1177; GFX900-NEXT:    ; def v[4:7]1178; GFX900-NEXT:    ;;#ASMEND1179; GFX900-NEXT:    v_mov_b32_e32 v8, 01180; GFX900-NEXT:    v_mov_b32_e32 v6, v41181; GFX900-NEXT:    v_mov_b32_e32 v7, v51182; GFX900-NEXT:    ;;#ASMSTART1183; GFX900-NEXT:    ; def v[0:3]1184; GFX900-NEXT:    ;;#ASMEND1185; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:161186; GFX900-NEXT:    s_nop 01187; GFX900-NEXT:    v_mov_b32_e32 v4, v01188; GFX900-NEXT:    v_mov_b32_e32 v5, v11189; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]1190; GFX900-NEXT:    s_waitcnt vmcnt(0)1191; GFX900-NEXT:    s_setpc_b64 s[30:31]1192;1193; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_2_0_0:1194; GFX90A:       ; %bb.0:1195; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1196; GFX90A-NEXT:    ;;#ASMSTART1197; GFX90A-NEXT:    ; def v[4:7]1198; GFX90A-NEXT:    ;;#ASMEND1199; GFX90A-NEXT:    v_mov_b32_e32 v8, 01200; GFX90A-NEXT:    v_mov_b32_e32 v6, v41201; GFX90A-NEXT:    v_mov_b32_e32 v7, v51202; GFX90A-NEXT:    ;;#ASMSTART1203; GFX90A-NEXT:    ; def v[0:3]1204; GFX90A-NEXT:    ;;#ASMEND1205; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:161206; GFX90A-NEXT:    s_nop 01207; GFX90A-NEXT:    v_mov_b32_e32 v4, v01208; GFX90A-NEXT:    v_mov_b32_e32 v5, v11209; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]1210; GFX90A-NEXT:    s_waitcnt vmcnt(0)1211; GFX90A-NEXT:    s_setpc_b64 s[30:31]1212;1213; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_2_0_0:1214; GFX942:       ; %bb.0:1215; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1216; GFX942-NEXT:    ;;#ASMSTART1217; GFX942-NEXT:    ; def v[4:7]1218; GFX942-NEXT:    ;;#ASMEND1219; GFX942-NEXT:    v_mov_b32_e32 v8, 01220; GFX942-NEXT:    v_mov_b32_e32 v6, v41221; GFX942-NEXT:    v_mov_b32_e32 v7, v51222; GFX942-NEXT:    ;;#ASMSTART1223; GFX942-NEXT:    ; def v[0:3]1224; GFX942-NEXT:    ;;#ASMEND1225; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:161226; GFX942-NEXT:    s_nop 11227; GFX942-NEXT:    v_mov_b32_e32 v4, v01228; GFX942-NEXT:    v_mov_b32_e32 v5, v11229; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1]1230; GFX942-NEXT:    s_waitcnt vmcnt(0)1231; GFX942-NEXT:    s_setpc_b64 s[30:31]1232  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1233  %vec1 = call <2 x ptr> asm "; def $0", "=v"()1234  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 2, i32 0, i32 0>1235  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321236  ret void1237}1238 1239define void @v_shuffle_v4p0_v2p0__3_3_0_0(ptr addrspace(1) inreg %ptr) {1240; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_0_0:1241; GFX900:       ; %bb.0:1242; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1243; GFX900-NEXT:    ;;#ASMSTART1244; GFX900-NEXT:    ; def v[4:7]1245; GFX900-NEXT:    ;;#ASMEND1246; GFX900-NEXT:    v_mov_b32_e32 v8, 01247; GFX900-NEXT:    v_mov_b32_e32 v6, v41248; GFX900-NEXT:    v_mov_b32_e32 v7, v51249; GFX900-NEXT:    ;;#ASMSTART1250; GFX900-NEXT:    ; def v[0:3]1251; GFX900-NEXT:    ;;#ASMEND1252; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:161253; GFX900-NEXT:    s_nop 01254; GFX900-NEXT:    v_mov_b32_e32 v4, v21255; GFX900-NEXT:    v_mov_b32_e32 v5, v31256; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]1257; GFX900-NEXT:    s_waitcnt vmcnt(0)1258; GFX900-NEXT:    s_setpc_b64 s[30:31]1259;1260; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_0_0:1261; GFX90A:       ; %bb.0:1262; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1263; GFX90A-NEXT:    ;;#ASMSTART1264; GFX90A-NEXT:    ; def v[4:7]1265; GFX90A-NEXT:    ;;#ASMEND1266; GFX90A-NEXT:    v_mov_b32_e32 v8, 01267; GFX90A-NEXT:    v_mov_b32_e32 v6, v41268; GFX90A-NEXT:    v_mov_b32_e32 v7, v51269; GFX90A-NEXT:    ;;#ASMSTART1270; GFX90A-NEXT:    ; def v[0:3]1271; GFX90A-NEXT:    ;;#ASMEND1272; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:161273; GFX90A-NEXT:    s_nop 01274; GFX90A-NEXT:    v_mov_b32_e32 v4, v21275; GFX90A-NEXT:    v_mov_b32_e32 v5, v31276; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]1277; GFX90A-NEXT:    s_waitcnt vmcnt(0)1278; GFX90A-NEXT:    s_setpc_b64 s[30:31]1279;1280; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_3_0_0:1281; GFX942:       ; %bb.0:1282; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1283; GFX942-NEXT:    ;;#ASMSTART1284; GFX942-NEXT:    ; def v[4:7]1285; GFX942-NEXT:    ;;#ASMEND1286; GFX942-NEXT:    v_mov_b32_e32 v8, 01287; GFX942-NEXT:    v_mov_b32_e32 v6, v41288; GFX942-NEXT:    v_mov_b32_e32 v7, v51289; GFX942-NEXT:    ;;#ASMSTART1290; GFX942-NEXT:    ; def v[0:3]1291; GFX942-NEXT:    ;;#ASMEND1292; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:161293; GFX942-NEXT:    s_nop 11294; GFX942-NEXT:    v_mov_b32_e32 v4, v21295; GFX942-NEXT:    v_mov_b32_e32 v5, v31296; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1]1297; GFX942-NEXT:    s_waitcnt vmcnt(0)1298; GFX942-NEXT:    s_setpc_b64 s[30:31]1299  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1300  %vec1 = call <2 x ptr> asm "; def $0", "=v"()1301  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 0>1302  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321303  ret void1304}1305 1306define void @v_shuffle_v4p0_v2p0__3_3_u_0(ptr addrspace(1) inreg %ptr) {1307; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_u_0:1308; GFX900:       ; %bb.0:1309; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1310; GFX900-NEXT:    ;;#ASMSTART1311; GFX900-NEXT:    ; def v[2:5]1312; GFX900-NEXT:    ;;#ASMEND1313; GFX900-NEXT:    v_mov_b32_e32 v0, 01314; GFX900-NEXT:    ;;#ASMSTART1315; GFX900-NEXT:    ; def v[4:7]1316; GFX900-NEXT:    ;;#ASMEND1317; GFX900-NEXT:    v_mov_b32_e32 v8, v61318; GFX900-NEXT:    v_mov_b32_e32 v9, v71319; GFX900-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17] offset:161320; GFX900-NEXT:    global_store_dwordx4 v0, v[6:9], s[16:17]1321; GFX900-NEXT:    s_waitcnt vmcnt(0)1322; GFX900-NEXT:    s_setpc_b64 s[30:31]1323;1324; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_u_0:1325; GFX90A:       ; %bb.0:1326; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1327; GFX90A-NEXT:    ;;#ASMSTART1328; GFX90A-NEXT:    ; def v[2:5]1329; GFX90A-NEXT:    ;;#ASMEND1330; GFX90A-NEXT:    v_mov_b32_e32 v0, 01331; GFX90A-NEXT:    ;;#ASMSTART1332; GFX90A-NEXT:    ; def v[4:7]1333; GFX90A-NEXT:    ;;#ASMEND1334; GFX90A-NEXT:    v_mov_b32_e32 v8, v61335; GFX90A-NEXT:    v_mov_b32_e32 v9, v71336; GFX90A-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17] offset:161337; GFX90A-NEXT:    global_store_dwordx4 v0, v[6:9], s[16:17]1338; GFX90A-NEXT:    s_waitcnt vmcnt(0)1339; GFX90A-NEXT:    s_setpc_b64 s[30:31]1340;1341; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_3_u_0:1342; GFX942:       ; %bb.0:1343; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1344; GFX942-NEXT:    ;;#ASMSTART1345; GFX942-NEXT:    ; def v[2:5]1346; GFX942-NEXT:    ;;#ASMEND1347; GFX942-NEXT:    v_mov_b32_e32 v0, 01348; GFX942-NEXT:    ;;#ASMSTART1349; GFX942-NEXT:    ; def v[4:7]1350; GFX942-NEXT:    ;;#ASMEND1351; GFX942-NEXT:    global_store_dwordx4 v0, v[0:3], s[0:1] offset:161352; GFX942-NEXT:    v_mov_b32_e32 v8, v61353; GFX942-NEXT:    v_mov_b32_e32 v9, v71354; GFX942-NEXT:    global_store_dwordx4 v0, v[6:9], s[0:1]1355; GFX942-NEXT:    s_waitcnt vmcnt(0)1356; GFX942-NEXT:    s_setpc_b64 s[30:31]1357  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1358  %vec1 = call <2 x ptr> asm "; def $0", "=v"()1359  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 0>1360  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321361  ret void1362}1363 1364define void @v_shuffle_v4p0_v2p0__3_3_1_0(ptr addrspace(1) inreg %ptr) {1365; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_1_0:1366; GFX900:       ; %bb.0:1367; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1368; GFX900-NEXT:    ;;#ASMSTART1369; GFX900-NEXT:    ; def v[4:7]1370; GFX900-NEXT:    ;;#ASMEND1371; GFX900-NEXT:    v_mov_b32_e32 v10, 01372; GFX900-NEXT:    ;;#ASMSTART1373; GFX900-NEXT:    ; def v[0:3]1374; GFX900-NEXT:    ;;#ASMEND1375; GFX900-NEXT:    v_mov_b32_e32 v4, v01376; GFX900-NEXT:    v_mov_b32_e32 v5, v11377; GFX900-NEXT:    v_mov_b32_e32 v8, v61378; GFX900-NEXT:    v_mov_b32_e32 v9, v71379; GFX900-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17] offset:161380; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17]1381; GFX900-NEXT:    s_waitcnt vmcnt(0)1382; GFX900-NEXT:    s_setpc_b64 s[30:31]1383;1384; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_1_0:1385; GFX90A:       ; %bb.0:1386; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1387; GFX90A-NEXT:    ;;#ASMSTART1388; GFX90A-NEXT:    ; def v[4:7]1389; GFX90A-NEXT:    ;;#ASMEND1390; GFX90A-NEXT:    v_mov_b32_e32 v10, 01391; GFX90A-NEXT:    ;;#ASMSTART1392; GFX90A-NEXT:    ; def v[0:3]1393; GFX90A-NEXT:    ;;#ASMEND1394; GFX90A-NEXT:    v_mov_b32_e32 v4, v01395; GFX90A-NEXT:    v_mov_b32_e32 v5, v11396; GFX90A-NEXT:    v_mov_b32_e32 v8, v61397; GFX90A-NEXT:    v_mov_b32_e32 v9, v71398; GFX90A-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17] offset:161399; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17]1400; GFX90A-NEXT:    s_waitcnt vmcnt(0)1401; GFX90A-NEXT:    s_setpc_b64 s[30:31]1402;1403; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_3_1_0:1404; GFX942:       ; %bb.0:1405; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1406; GFX942-NEXT:    ;;#ASMSTART1407; GFX942-NEXT:    ; def v[4:7]1408; GFX942-NEXT:    ;;#ASMEND1409; GFX942-NEXT:    v_mov_b32_e32 v10, 01410; GFX942-NEXT:    ;;#ASMSTART1411; GFX942-NEXT:    ; def v[0:3]1412; GFX942-NEXT:    ;;#ASMEND1413; GFX942-NEXT:    v_mov_b32_e32 v8, v61414; GFX942-NEXT:    v_mov_b32_e32 v4, v01415; GFX942-NEXT:    v_mov_b32_e32 v5, v11416; GFX942-NEXT:    v_mov_b32_e32 v9, v71417; GFX942-NEXT:    global_store_dwordx4 v10, v[2:5], s[0:1] offset:161418; GFX942-NEXT:    global_store_dwordx4 v10, v[6:9], 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> asm "; def $0", "=v"()1422  %vec1 = call <2 x ptr> asm "; def $0", "=v"()1423  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 0>1424  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321425  ret void1426}1427 1428define void @v_shuffle_v4p0_v2p0__3_3_2_0(ptr addrspace(1) inreg %ptr) {1429; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_2_0:1430; GFX900:       ; %bb.0:1431; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1432; GFX900-NEXT:    ;;#ASMSTART1433; GFX900-NEXT:    ; def v[2:5]1434; GFX900-NEXT:    ;;#ASMEND1435; GFX900-NEXT:    v_mov_b32_e32 v10, 01436; GFX900-NEXT:    ;;#ASMSTART1437; GFX900-NEXT:    ; def v[4:7]1438; GFX900-NEXT:    ;;#ASMEND1439; GFX900-NEXT:    v_mov_b32_e32 v0, v41440; GFX900-NEXT:    v_mov_b32_e32 v1, v51441; GFX900-NEXT:    v_mov_b32_e32 v8, v61442; GFX900-NEXT:    v_mov_b32_e32 v9, v71443; GFX900-NEXT:    global_store_dwordx4 v10, v[0:3], s[16:17] offset:161444; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17]1445; GFX900-NEXT:    s_waitcnt vmcnt(0)1446; GFX900-NEXT:    s_setpc_b64 s[30:31]1447;1448; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_2_0:1449; GFX90A:       ; %bb.0:1450; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1451; GFX90A-NEXT:    ;;#ASMSTART1452; GFX90A-NEXT:    ; def v[2:5]1453; GFX90A-NEXT:    ;;#ASMEND1454; GFX90A-NEXT:    v_mov_b32_e32 v10, 01455; GFX90A-NEXT:    ;;#ASMSTART1456; GFX90A-NEXT:    ; def v[4:7]1457; GFX90A-NEXT:    ;;#ASMEND1458; GFX90A-NEXT:    v_mov_b32_e32 v0, v41459; GFX90A-NEXT:    v_mov_b32_e32 v1, v51460; GFX90A-NEXT:    v_mov_b32_e32 v8, v61461; GFX90A-NEXT:    v_mov_b32_e32 v9, v71462; GFX90A-NEXT:    global_store_dwordx4 v10, v[0:3], s[16:17] offset:161463; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17]1464; GFX90A-NEXT:    s_waitcnt vmcnt(0)1465; GFX90A-NEXT:    s_setpc_b64 s[30:31]1466;1467; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_3_2_0:1468; GFX942:       ; %bb.0:1469; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1470; GFX942-NEXT:    ;;#ASMSTART1471; GFX942-NEXT:    ; def v[2:5]1472; GFX942-NEXT:    ;;#ASMEND1473; GFX942-NEXT:    v_mov_b32_e32 v10, 01474; GFX942-NEXT:    ;;#ASMSTART1475; GFX942-NEXT:    ; def v[4:7]1476; GFX942-NEXT:    ;;#ASMEND1477; GFX942-NEXT:    s_nop 01478; GFX942-NEXT:    v_mov_b32_e32 v0, v41479; GFX942-NEXT:    v_mov_b32_e32 v1, v51480; GFX942-NEXT:    v_mov_b32_e32 v8, v61481; GFX942-NEXT:    v_mov_b32_e32 v9, v71482; GFX942-NEXT:    global_store_dwordx4 v10, v[0:3], s[0:1] offset:161483; GFX942-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1]1484; GFX942-NEXT:    s_waitcnt vmcnt(0)1485; GFX942-NEXT:    s_setpc_b64 s[30:31]1486  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1487  %vec1 = call <2 x ptr> asm "; def $0", "=v"()1488  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 0>1489  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321490  ret void1491}1492 1493define void @v_shuffle_v4p0_v2p0__u_1_1_1(ptr addrspace(1) inreg %ptr) {1494; GFX900-LABEL: v_shuffle_v4p0_v2p0__u_1_1_1:1495; GFX900:       ; %bb.0:1496; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1497; GFX900-NEXT:    v_mov_b32_e32 v6, 01498; GFX900-NEXT:    ;;#ASMSTART1499; GFX900-NEXT:    ; def v[0:3]1500; GFX900-NEXT:    ;;#ASMEND1501; GFX900-NEXT:    v_mov_b32_e32 v4, v21502; GFX900-NEXT:    v_mov_b32_e32 v5, v31503; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:161504; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]1505; GFX900-NEXT:    s_waitcnt vmcnt(0)1506; GFX900-NEXT:    s_setpc_b64 s[30:31]1507;1508; GFX90A-LABEL: v_shuffle_v4p0_v2p0__u_1_1_1:1509; GFX90A:       ; %bb.0:1510; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1511; GFX90A-NEXT:    v_mov_b32_e32 v6, 01512; GFX90A-NEXT:    ;;#ASMSTART1513; GFX90A-NEXT:    ; def v[0:3]1514; GFX90A-NEXT:    ;;#ASMEND1515; GFX90A-NEXT:    v_mov_b32_e32 v4, v21516; GFX90A-NEXT:    v_mov_b32_e32 v5, v31517; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:161518; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]1519; GFX90A-NEXT:    s_waitcnt vmcnt(0)1520; GFX90A-NEXT:    s_setpc_b64 s[30:31]1521;1522; GFX942-LABEL: v_shuffle_v4p0_v2p0__u_1_1_1:1523; GFX942:       ; %bb.0:1524; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1525; GFX942-NEXT:    v_mov_b32_e32 v6, 01526; GFX942-NEXT:    ;;#ASMSTART1527; GFX942-NEXT:    ; def v[0:3]1528; GFX942-NEXT:    ;;#ASMEND1529; GFX942-NEXT:    s_nop 01530; GFX942-NEXT:    v_mov_b32_e32 v4, v21531; GFX942-NEXT:    v_mov_b32_e32 v5, v31532; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] offset:161533; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]1534; GFX942-NEXT:    s_waitcnt vmcnt(0)1535; GFX942-NEXT:    s_setpc_b64 s[30:31]1536  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1537  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1>1538  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321539  ret void1540}1541 1542define void @v_shuffle_v4p0_v2p0__0_1_1_1(ptr addrspace(1) inreg %ptr) {1543; GFX900-LABEL: v_shuffle_v4p0_v2p0__0_1_1_1:1544; GFX900:       ; %bb.0:1545; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1546; GFX900-NEXT:    v_mov_b32_e32 v6, 01547; GFX900-NEXT:    ;;#ASMSTART1548; GFX900-NEXT:    ; def v[0:3]1549; GFX900-NEXT:    ;;#ASMEND1550; GFX900-NEXT:    v_mov_b32_e32 v4, v21551; GFX900-NEXT:    v_mov_b32_e32 v5, v31552; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:161553; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]1554; GFX900-NEXT:    s_waitcnt vmcnt(0)1555; GFX900-NEXT:    s_setpc_b64 s[30:31]1556;1557; GFX90A-LABEL: v_shuffle_v4p0_v2p0__0_1_1_1:1558; GFX90A:       ; %bb.0:1559; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1560; GFX90A-NEXT:    v_mov_b32_e32 v6, 01561; GFX90A-NEXT:    ;;#ASMSTART1562; GFX90A-NEXT:    ; def v[0:3]1563; GFX90A-NEXT:    ;;#ASMEND1564; GFX90A-NEXT:    v_mov_b32_e32 v4, v21565; GFX90A-NEXT:    v_mov_b32_e32 v5, v31566; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:161567; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]1568; GFX90A-NEXT:    s_waitcnt vmcnt(0)1569; GFX90A-NEXT:    s_setpc_b64 s[30:31]1570;1571; GFX942-LABEL: v_shuffle_v4p0_v2p0__0_1_1_1:1572; GFX942:       ; %bb.0:1573; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1574; GFX942-NEXT:    v_mov_b32_e32 v6, 01575; GFX942-NEXT:    ;;#ASMSTART1576; GFX942-NEXT:    ; def v[0:3]1577; GFX942-NEXT:    ;;#ASMEND1578; GFX942-NEXT:    s_nop 01579; GFX942-NEXT:    v_mov_b32_e32 v4, v21580; GFX942-NEXT:    v_mov_b32_e32 v5, v31581; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] offset:161582; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]1583; GFX942-NEXT:    s_waitcnt vmcnt(0)1584; GFX942-NEXT:    s_setpc_b64 s[30:31]1585  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1586  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1>1587  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321588  ret void1589}1590 1591define void @v_shuffle_v4p0_v2p0__1_1_1_1(ptr addrspace(1) inreg %ptr) {1592; GFX900-LABEL: v_shuffle_v4p0_v2p0__1_1_1_1:1593; GFX900:       ; %bb.0:1594; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1595; GFX900-NEXT:    v_mov_b32_e32 v6, 01596; GFX900-NEXT:    ;;#ASMSTART1597; GFX900-NEXT:    ; def v[0:3]1598; GFX900-NEXT:    ;;#ASMEND1599; GFX900-NEXT:    v_mov_b32_e32 v4, v21600; GFX900-NEXT:    v_mov_b32_e32 v5, v31601; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:161602; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]1603; GFX900-NEXT:    s_waitcnt vmcnt(0)1604; GFX900-NEXT:    s_setpc_b64 s[30:31]1605;1606; GFX90A-LABEL: v_shuffle_v4p0_v2p0__1_1_1_1:1607; GFX90A:       ; %bb.0:1608; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1609; GFX90A-NEXT:    v_mov_b32_e32 v6, 01610; GFX90A-NEXT:    ;;#ASMSTART1611; GFX90A-NEXT:    ; def v[0:3]1612; GFX90A-NEXT:    ;;#ASMEND1613; GFX90A-NEXT:    v_mov_b32_e32 v4, v21614; GFX90A-NEXT:    v_mov_b32_e32 v5, v31615; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:161616; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]1617; GFX90A-NEXT:    s_waitcnt vmcnt(0)1618; GFX90A-NEXT:    s_setpc_b64 s[30:31]1619;1620; GFX942-LABEL: v_shuffle_v4p0_v2p0__1_1_1_1:1621; GFX942:       ; %bb.0:1622; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1623; GFX942-NEXT:    v_mov_b32_e32 v6, 01624; GFX942-NEXT:    ;;#ASMSTART1625; GFX942-NEXT:    ; def v[0:3]1626; GFX942-NEXT:    ;;#ASMEND1627; GFX942-NEXT:    s_nop 01628; GFX942-NEXT:    v_mov_b32_e32 v4, v21629; GFX942-NEXT:    v_mov_b32_e32 v5, v31630; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] offset:161631; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]1632; GFX942-NEXT:    s_waitcnt vmcnt(0)1633; GFX942-NEXT:    s_setpc_b64 s[30:31]1634  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1635  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>1636  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321637  ret void1638}1639 1640define void @v_shuffle_v4p0_v2p0__2_1_1_1(ptr addrspace(1) inreg %ptr) {1641; GFX900-LABEL: v_shuffle_v4p0_v2p0__2_1_1_1:1642; GFX900:       ; %bb.0:1643; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1644; GFX900-NEXT:    v_mov_b32_e32 v6, 01645; GFX900-NEXT:    ;;#ASMSTART1646; GFX900-NEXT:    ; def v[0:3]1647; GFX900-NEXT:    ;;#ASMEND1648; GFX900-NEXT:    v_mov_b32_e32 v4, v21649; GFX900-NEXT:    v_mov_b32_e32 v5, v31650; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:161651; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]1652; GFX900-NEXT:    s_waitcnt vmcnt(0)1653; GFX900-NEXT:    s_setpc_b64 s[30:31]1654;1655; GFX90A-LABEL: v_shuffle_v4p0_v2p0__2_1_1_1:1656; GFX90A:       ; %bb.0:1657; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1658; GFX90A-NEXT:    v_mov_b32_e32 v6, 01659; GFX90A-NEXT:    ;;#ASMSTART1660; GFX90A-NEXT:    ; def v[0:3]1661; GFX90A-NEXT:    ;;#ASMEND1662; GFX90A-NEXT:    v_mov_b32_e32 v4, v21663; GFX90A-NEXT:    v_mov_b32_e32 v5, v31664; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:161665; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]1666; GFX90A-NEXT:    s_waitcnt vmcnt(0)1667; GFX90A-NEXT:    s_setpc_b64 s[30:31]1668;1669; GFX942-LABEL: v_shuffle_v4p0_v2p0__2_1_1_1:1670; GFX942:       ; %bb.0:1671; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1672; GFX942-NEXT:    v_mov_b32_e32 v6, 01673; GFX942-NEXT:    ;;#ASMSTART1674; GFX942-NEXT:    ; def v[0:3]1675; GFX942-NEXT:    ;;#ASMEND1676; GFX942-NEXT:    s_nop 01677; GFX942-NEXT:    v_mov_b32_e32 v4, v21678; GFX942-NEXT:    v_mov_b32_e32 v5, v31679; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] offset:161680; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]1681; GFX942-NEXT:    s_waitcnt vmcnt(0)1682; GFX942-NEXT:    s_setpc_b64 s[30:31]1683  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1684  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1>1685  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321686  ret void1687}1688 1689define void @v_shuffle_v4p0_v2p0__3_1_1_1(ptr addrspace(1) inreg %ptr) {1690; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_1_1_1:1691; GFX900:       ; %bb.0:1692; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1693; GFX900-NEXT:    ;;#ASMSTART1694; GFX900-NEXT:    ; def v[2:5]1695; GFX900-NEXT:    ;;#ASMEND1696; GFX900-NEXT:    v_mov_b32_e32 v8, 01697; GFX900-NEXT:    ;;#ASMSTART1698; GFX900-NEXT:    ; def v[0:3]1699; GFX900-NEXT:    ;;#ASMEND1700; GFX900-NEXT:    v_mov_b32_e32 v6, v41701; GFX900-NEXT:    v_mov_b32_e32 v7, v51702; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:161703; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]1704; GFX900-NEXT:    s_waitcnt vmcnt(0)1705; GFX900-NEXT:    s_setpc_b64 s[30:31]1706;1707; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_1_1_1:1708; GFX90A:       ; %bb.0:1709; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1710; GFX90A-NEXT:    ;;#ASMSTART1711; GFX90A-NEXT:    ; def v[2:5]1712; GFX90A-NEXT:    ;;#ASMEND1713; GFX90A-NEXT:    v_mov_b32_e32 v8, 01714; GFX90A-NEXT:    ;;#ASMSTART1715; GFX90A-NEXT:    ; def v[0:3]1716; GFX90A-NEXT:    ;;#ASMEND1717; GFX90A-NEXT:    v_mov_b32_e32 v6, v41718; GFX90A-NEXT:    v_mov_b32_e32 v7, v51719; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:161720; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]1721; GFX90A-NEXT:    s_waitcnt vmcnt(0)1722; GFX90A-NEXT:    s_setpc_b64 s[30:31]1723;1724; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_1_1_1:1725; GFX942:       ; %bb.0:1726; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1727; GFX942-NEXT:    ;;#ASMSTART1728; GFX942-NEXT:    ; def v[2:5]1729; GFX942-NEXT:    ;;#ASMEND1730; GFX942-NEXT:    v_mov_b32_e32 v8, 01731; GFX942-NEXT:    ;;#ASMSTART1732; GFX942-NEXT:    ; def v[0:3]1733; GFX942-NEXT:    ;;#ASMEND1734; GFX942-NEXT:    v_mov_b32_e32 v6, v41735; GFX942-NEXT:    v_mov_b32_e32 v7, v51736; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:161737; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1]1738; GFX942-NEXT:    s_waitcnt vmcnt(0)1739; GFX942-NEXT:    s_setpc_b64 s[30:31]1740  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1741  %vec1 = call <2 x ptr> asm "; def $0", "=v"()1742  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 1, i32 1, i32 1>1743  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321744  ret void1745}1746 1747define void @v_shuffle_v4p0_v2p0__3_u_1_1(ptr addrspace(1) inreg %ptr) {1748; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_u_1_1:1749; GFX900:       ; %bb.0:1750; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1751; GFX900-NEXT:    ;;#ASMSTART1752; GFX900-NEXT:    ; def v[4:7]1753; GFX900-NEXT:    ;;#ASMEND1754; GFX900-NEXT:    v_mov_b32_e32 v8, 01755; GFX900-NEXT:    ;;#ASMSTART1756; GFX900-NEXT:    ; def v[0:3]1757; GFX900-NEXT:    ;;#ASMEND1758; GFX900-NEXT:    v_mov_b32_e32 v4, v21759; GFX900-NEXT:    v_mov_b32_e32 v5, v31760; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17] offset:161761; GFX900-NEXT:    global_store_dwordx4 v8, v[6:9], s[16:17]1762; GFX900-NEXT:    s_waitcnt vmcnt(0)1763; GFX900-NEXT:    s_setpc_b64 s[30:31]1764;1765; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_u_1_1:1766; GFX90A:       ; %bb.0:1767; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1768; GFX90A-NEXT:    ;;#ASMSTART1769; GFX90A-NEXT:    ; def v[4:7]1770; GFX90A-NEXT:    ;;#ASMEND1771; GFX90A-NEXT:    v_mov_b32_e32 v8, 01772; GFX90A-NEXT:    ;;#ASMSTART1773; GFX90A-NEXT:    ; def v[0:3]1774; GFX90A-NEXT:    ;;#ASMEND1775; GFX90A-NEXT:    v_mov_b32_e32 v4, v21776; GFX90A-NEXT:    v_mov_b32_e32 v5, v31777; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17] offset:161778; GFX90A-NEXT:    global_store_dwordx4 v8, v[6:9], s[16:17]1779; GFX90A-NEXT:    s_waitcnt vmcnt(0)1780; GFX90A-NEXT:    s_setpc_b64 s[30:31]1781;1782; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_u_1_1:1783; GFX942:       ; %bb.0:1784; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1785; GFX942-NEXT:    ;;#ASMSTART1786; GFX942-NEXT:    ; def v[4:7]1787; GFX942-NEXT:    ;;#ASMEND1788; GFX942-NEXT:    v_mov_b32_e32 v8, 01789; GFX942-NEXT:    ;;#ASMSTART1790; GFX942-NEXT:    ; def v[0:3]1791; GFX942-NEXT:    ;;#ASMEND1792; GFX942-NEXT:    s_nop 01793; GFX942-NEXT:    v_mov_b32_e32 v4, v21794; GFX942-NEXT:    v_mov_b32_e32 v5, v31795; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] offset:161796; GFX942-NEXT:    global_store_dwordx4 v8, v[6:9], s[0:1]1797; GFX942-NEXT:    s_waitcnt vmcnt(0)1798; GFX942-NEXT:    s_setpc_b64 s[30:31]1799  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1800  %vec1 = call <2 x ptr> asm "; def $0", "=v"()1801  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 poison, i32 1, i32 1>1802  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321803  ret void1804}1805 1806define void @v_shuffle_v4p0_v2p0__3_0_1_1(ptr addrspace(1) inreg %ptr) {1807; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_0_1_1:1808; GFX900:       ; %bb.0:1809; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1810; GFX900-NEXT:    v_mov_b32_e32 v10, 01811; GFX900-NEXT:    ;;#ASMSTART1812; GFX900-NEXT:    ; def v[4:7]1813; GFX900-NEXT:    ;;#ASMEND1814; GFX900-NEXT:    v_mov_b32_e32 v8, v61815; GFX900-NEXT:    v_mov_b32_e32 v9, v71816; GFX900-NEXT:    ;;#ASMSTART1817; GFX900-NEXT:    ; def v[0:3]1818; GFX900-NEXT:    ;;#ASMEND1819; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:161820; GFX900-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17]1821; GFX900-NEXT:    s_waitcnt vmcnt(0)1822; GFX900-NEXT:    s_setpc_b64 s[30:31]1823;1824; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_0_1_1:1825; GFX90A:       ; %bb.0:1826; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1827; GFX90A-NEXT:    v_mov_b32_e32 v10, 01828; GFX90A-NEXT:    ;;#ASMSTART1829; GFX90A-NEXT:    ; def v[4:7]1830; GFX90A-NEXT:    ;;#ASMEND1831; GFX90A-NEXT:    v_mov_b32_e32 v8, v61832; GFX90A-NEXT:    v_mov_b32_e32 v9, v71833; GFX90A-NEXT:    ;;#ASMSTART1834; GFX90A-NEXT:    ; def v[0:3]1835; GFX90A-NEXT:    ;;#ASMEND1836; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:161837; GFX90A-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17]1838; GFX90A-NEXT:    s_waitcnt vmcnt(0)1839; GFX90A-NEXT:    s_setpc_b64 s[30:31]1840;1841; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_0_1_1:1842; GFX942:       ; %bb.0:1843; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1844; GFX942-NEXT:    v_mov_b32_e32 v10, 01845; GFX942-NEXT:    ;;#ASMSTART1846; GFX942-NEXT:    ; def v[4:7]1847; GFX942-NEXT:    ;;#ASMEND1848; GFX942-NEXT:    ;;#ASMSTART1849; GFX942-NEXT:    ; def v[0:3]1850; GFX942-NEXT:    ;;#ASMEND1851; GFX942-NEXT:    s_nop 01852; GFX942-NEXT:    v_mov_b32_e32 v8, v61853; GFX942-NEXT:    v_mov_b32_e32 v9, v71854; GFX942-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1] offset:161855; GFX942-NEXT:    global_store_dwordx4 v10, v[2:5], s[0:1]1856; GFX942-NEXT:    s_waitcnt vmcnt(0)1857; GFX942-NEXT:    s_setpc_b64 s[30:31]1858  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1859  %vec1 = call <2 x ptr> asm "; def $0", "=v"()1860  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 0, i32 1, i32 1>1861  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321862  ret void1863}1864 1865define void @v_shuffle_v4p0_v2p0__3_2_1_1(ptr addrspace(1) inreg %ptr) {1866; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_2_1_1:1867; GFX900:       ; %bb.0:1868; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1869; GFX900-NEXT:    v_mov_b32_e32 v12, 01870; GFX900-NEXT:    ;;#ASMSTART1871; GFX900-NEXT:    ; def v[0:3]1872; GFX900-NEXT:    ;;#ASMEND1873; GFX900-NEXT:    ;;#ASMSTART1874; GFX900-NEXT:    ; def v[6:9]1875; GFX900-NEXT:    ;;#ASMEND1876; GFX900-NEXT:    v_mov_b32_e32 v4, v21877; GFX900-NEXT:    v_mov_b32_e32 v5, v31878; GFX900-NEXT:    v_mov_b32_e32 v10, v61879; GFX900-NEXT:    v_mov_b32_e32 v11, v71880; GFX900-NEXT:    global_store_dwordx4 v12, v[2:5], s[16:17] offset:161881; GFX900-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17]1882; GFX900-NEXT:    s_waitcnt vmcnt(0)1883; GFX900-NEXT:    s_setpc_b64 s[30:31]1884;1885; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_2_1_1:1886; GFX90A:       ; %bb.0:1887; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1888; GFX90A-NEXT:    v_mov_b32_e32 v12, 01889; GFX90A-NEXT:    ;;#ASMSTART1890; GFX90A-NEXT:    ; def v[0:3]1891; GFX90A-NEXT:    ;;#ASMEND1892; GFX90A-NEXT:    ;;#ASMSTART1893; GFX90A-NEXT:    ; def v[6:9]1894; GFX90A-NEXT:    ;;#ASMEND1895; GFX90A-NEXT:    v_mov_b32_e32 v4, v21896; GFX90A-NEXT:    v_mov_b32_e32 v5, v31897; GFX90A-NEXT:    v_mov_b32_e32 v10, v61898; GFX90A-NEXT:    v_mov_b32_e32 v11, v71899; GFX90A-NEXT:    global_store_dwordx4 v12, v[2:5], s[16:17] offset:161900; GFX90A-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17]1901; GFX90A-NEXT:    s_waitcnt vmcnt(0)1902; GFX90A-NEXT:    s_setpc_b64 s[30:31]1903;1904; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_2_1_1:1905; GFX942:       ; %bb.0:1906; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1907; GFX942-NEXT:    v_mov_b32_e32 v12, 01908; GFX942-NEXT:    ;;#ASMSTART1909; GFX942-NEXT:    ; def v[0:3]1910; GFX942-NEXT:    ;;#ASMEND1911; GFX942-NEXT:    ;;#ASMSTART1912; GFX942-NEXT:    ; def v[6:9]1913; GFX942-NEXT:    ;;#ASMEND1914; GFX942-NEXT:    s_nop 01915; GFX942-NEXT:    v_mov_b32_e32 v4, v21916; GFX942-NEXT:    v_mov_b32_e32 v5, v31917; GFX942-NEXT:    v_mov_b32_e32 v10, v61918; GFX942-NEXT:    v_mov_b32_e32 v11, v71919; GFX942-NEXT:    global_store_dwordx4 v12, v[2:5], s[0:1] offset:161920; GFX942-NEXT:    global_store_dwordx4 v12, v[8:11], s[0:1]1921; GFX942-NEXT:    s_waitcnt vmcnt(0)1922; GFX942-NEXT:    s_setpc_b64 s[30:31]1923  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1924  %vec1 = call <2 x ptr> asm "; def $0", "=v"()1925  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 2, i32 1, i32 1>1926  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321927  ret void1928}1929 1930define void @v_shuffle_v4p0_v2p0__3_3_1_1(ptr addrspace(1) inreg %ptr) {1931; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_1_1:1932; GFX900:       ; %bb.0:1933; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1934; GFX900-NEXT:    ;;#ASMSTART1935; GFX900-NEXT:    ; def v[4:7]1936; GFX900-NEXT:    ;;#ASMEND1937; GFX900-NEXT:    v_mov_b32_e32 v10, 01938; GFX900-NEXT:    ;;#ASMSTART1939; GFX900-NEXT:    ; def v[0:3]1940; GFX900-NEXT:    ;;#ASMEND1941; GFX900-NEXT:    v_mov_b32_e32 v4, v21942; GFX900-NEXT:    v_mov_b32_e32 v5, v31943; GFX900-NEXT:    v_mov_b32_e32 v8, v61944; GFX900-NEXT:    v_mov_b32_e32 v9, v71945; GFX900-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17] offset:161946; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17]1947; GFX900-NEXT:    s_waitcnt vmcnt(0)1948; GFX900-NEXT:    s_setpc_b64 s[30:31]1949;1950; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_1_1:1951; GFX90A:       ; %bb.0:1952; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1953; GFX90A-NEXT:    ;;#ASMSTART1954; GFX90A-NEXT:    ; def v[4:7]1955; GFX90A-NEXT:    ;;#ASMEND1956; GFX90A-NEXT:    v_mov_b32_e32 v10, 01957; GFX90A-NEXT:    ;;#ASMSTART1958; GFX90A-NEXT:    ; def v[0:3]1959; GFX90A-NEXT:    ;;#ASMEND1960; GFX90A-NEXT:    v_mov_b32_e32 v4, v21961; GFX90A-NEXT:    v_mov_b32_e32 v5, v31962; GFX90A-NEXT:    v_mov_b32_e32 v8, v61963; GFX90A-NEXT:    v_mov_b32_e32 v9, v71964; GFX90A-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17] offset:161965; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17]1966; GFX90A-NEXT:    s_waitcnt vmcnt(0)1967; GFX90A-NEXT:    s_setpc_b64 s[30:31]1968;1969; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_3_1_1:1970; GFX942:       ; %bb.0:1971; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1972; GFX942-NEXT:    ;;#ASMSTART1973; GFX942-NEXT:    ; def v[4:7]1974; GFX942-NEXT:    ;;#ASMEND1975; GFX942-NEXT:    v_mov_b32_e32 v10, 01976; GFX942-NEXT:    ;;#ASMSTART1977; GFX942-NEXT:    ; def v[0:3]1978; GFX942-NEXT:    ;;#ASMEND1979; GFX942-NEXT:    v_mov_b32_e32 v8, v61980; GFX942-NEXT:    v_mov_b32_e32 v4, v21981; GFX942-NEXT:    v_mov_b32_e32 v5, v31982; GFX942-NEXT:    v_mov_b32_e32 v9, v71983; GFX942-NEXT:    global_store_dwordx4 v10, v[2:5], s[0:1] offset:161984; GFX942-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1]1985; GFX942-NEXT:    s_waitcnt vmcnt(0)1986; GFX942-NEXT:    s_setpc_b64 s[30:31]1987  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1988  %vec1 = call <2 x ptr> asm "; def $0", "=v"()1989  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 1>1990  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 321991  ret void1992}1993 1994define void @v_shuffle_v4p0_v2p0__3_3_u_1(ptr addrspace(1) inreg %ptr) {1995; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_u_1:1996; GFX900:       ; %bb.0:1997; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1998; GFX900-NEXT:    v_mov_b32_e32 v6, 01999; GFX900-NEXT:    ;;#ASMSTART2000; GFX900-NEXT:    ; def v[2:5]2001; GFX900-NEXT:    ;;#ASMEND2002; GFX900-NEXT:    ;;#ASMSTART2003; GFX900-NEXT:    ; def v[0:3]2004; GFX900-NEXT:    ;;#ASMEND2005; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:162006; GFX900-NEXT:    s_nop 02007; GFX900-NEXT:    v_mov_b32_e32 v4, v22008; GFX900-NEXT:    v_mov_b32_e32 v5, v32009; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]2010; GFX900-NEXT:    s_waitcnt vmcnt(0)2011; GFX900-NEXT:    s_setpc_b64 s[30:31]2012;2013; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_u_1:2014; GFX90A:       ; %bb.0:2015; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2016; GFX90A-NEXT:    v_mov_b32_e32 v6, 02017; GFX90A-NEXT:    ;;#ASMSTART2018; GFX90A-NEXT:    ; def v[2:5]2019; GFX90A-NEXT:    ;;#ASMEND2020; GFX90A-NEXT:    ;;#ASMSTART2021; GFX90A-NEXT:    ; def v[0:3]2022; GFX90A-NEXT:    ;;#ASMEND2023; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:162024; GFX90A-NEXT:    s_nop 02025; GFX90A-NEXT:    v_mov_b32_e32 v4, v22026; GFX90A-NEXT:    v_mov_b32_e32 v5, v32027; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]2028; GFX90A-NEXT:    s_waitcnt vmcnt(0)2029; GFX90A-NEXT:    s_setpc_b64 s[30:31]2030;2031; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_3_u_1:2032; GFX942:       ; %bb.0:2033; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2034; GFX942-NEXT:    v_mov_b32_e32 v6, 02035; GFX942-NEXT:    ;;#ASMSTART2036; GFX942-NEXT:    ; def v[2:5]2037; GFX942-NEXT:    ;;#ASMEND2038; GFX942-NEXT:    s_nop 02039; GFX942-NEXT:    ;;#ASMSTART2040; GFX942-NEXT:    ; def v[0:3]2041; GFX942-NEXT:    ;;#ASMEND2042; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] offset:162043; GFX942-NEXT:    s_nop 12044; GFX942-NEXT:    v_mov_b32_e32 v4, v22045; GFX942-NEXT:    v_mov_b32_e32 v5, v32046; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]2047; GFX942-NEXT:    s_waitcnt vmcnt(0)2048; GFX942-NEXT:    s_setpc_b64 s[30:31]2049  %vec0 = call <2 x ptr> asm "; def $0", "=v"()2050  %vec1 = call <2 x ptr> asm "; def $0", "=v"()2051  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 1>2052  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322053  ret void2054}2055 2056define void @v_shuffle_v4p0_v2p0__3_3_0_1(ptr addrspace(1) inreg %ptr) {2057; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_0_1:2058; GFX900:       ; %bb.0:2059; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2060; GFX900-NEXT:    v_mov_b32_e32 v8, 02061; GFX900-NEXT:    ;;#ASMSTART2062; GFX900-NEXT:    ; def v[4:7]2063; GFX900-NEXT:    ;;#ASMEND2064; GFX900-NEXT:    ;;#ASMSTART2065; GFX900-NEXT:    ; def v[0:3]2066; GFX900-NEXT:    ;;#ASMEND2067; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:162068; GFX900-NEXT:    s_nop 02069; GFX900-NEXT:    v_mov_b32_e32 v4, v22070; GFX900-NEXT:    v_mov_b32_e32 v5, v32071; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]2072; GFX900-NEXT:    s_waitcnt vmcnt(0)2073; GFX900-NEXT:    s_setpc_b64 s[30:31]2074;2075; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_0_1:2076; GFX90A:       ; %bb.0:2077; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2078; GFX90A-NEXT:    v_mov_b32_e32 v8, 02079; GFX90A-NEXT:    ;;#ASMSTART2080; GFX90A-NEXT:    ; def v[4:7]2081; GFX90A-NEXT:    ;;#ASMEND2082; GFX90A-NEXT:    ;;#ASMSTART2083; GFX90A-NEXT:    ; def v[0:3]2084; GFX90A-NEXT:    ;;#ASMEND2085; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:162086; GFX90A-NEXT:    s_nop 02087; GFX90A-NEXT:    v_mov_b32_e32 v4, v22088; GFX90A-NEXT:    v_mov_b32_e32 v5, v32089; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]2090; GFX90A-NEXT:    s_waitcnt vmcnt(0)2091; GFX90A-NEXT:    s_setpc_b64 s[30:31]2092;2093; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_3_0_1:2094; GFX942:       ; %bb.0:2095; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2096; GFX942-NEXT:    v_mov_b32_e32 v8, 02097; GFX942-NEXT:    ;;#ASMSTART2098; GFX942-NEXT:    ; def v[4:7]2099; GFX942-NEXT:    ;;#ASMEND2100; GFX942-NEXT:    ;;#ASMSTART2101; GFX942-NEXT:    ; def v[0:3]2102; GFX942-NEXT:    ;;#ASMEND2103; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:162104; GFX942-NEXT:    s_nop 12105; GFX942-NEXT:    v_mov_b32_e32 v4, v22106; GFX942-NEXT:    v_mov_b32_e32 v5, v32107; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1]2108; GFX942-NEXT:    s_waitcnt vmcnt(0)2109; GFX942-NEXT:    s_setpc_b64 s[30:31]2110  %vec0 = call <2 x ptr> asm "; def $0", "=v"()2111  %vec1 = call <2 x ptr> asm "; def $0", "=v"()2112  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 1>2113  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322114  ret void2115}2116 2117define void @v_shuffle_v4p0_v2p0__3_3_2_1(ptr addrspace(1) inreg %ptr) {2118; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_2_1:2119; GFX900:       ; %bb.0:2120; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2121; GFX900-NEXT:    ;;#ASMSTART2122; GFX900-NEXT:    ; def v[4:7]2123; GFX900-NEXT:    ;;#ASMEND2124; GFX900-NEXT:    v_mov_b32_e32 v8, 02125; GFX900-NEXT:    ;;#ASMSTART2126; GFX900-NEXT:    ; def v[0:3]2127; GFX900-NEXT:    ;;#ASMEND2128; GFX900-NEXT:    v_mov_b32_e32 v4, v02129; GFX900-NEXT:    v_mov_b32_e32 v5, v12130; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:162131; GFX900-NEXT:    s_nop 02132; GFX900-NEXT:    v_mov_b32_e32 v4, v22133; GFX900-NEXT:    v_mov_b32_e32 v5, v32134; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]2135; GFX900-NEXT:    s_waitcnt vmcnt(0)2136; GFX900-NEXT:    s_setpc_b64 s[30:31]2137;2138; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_2_1:2139; GFX90A:       ; %bb.0:2140; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2141; GFX90A-NEXT:    ;;#ASMSTART2142; GFX90A-NEXT:    ; def v[4:7]2143; GFX90A-NEXT:    ;;#ASMEND2144; GFX90A-NEXT:    v_mov_b32_e32 v8, 02145; GFX90A-NEXT:    ;;#ASMSTART2146; GFX90A-NEXT:    ; def v[0:3]2147; GFX90A-NEXT:    ;;#ASMEND2148; GFX90A-NEXT:    v_mov_b32_e32 v4, v02149; GFX90A-NEXT:    v_mov_b32_e32 v5, v12150; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:162151; GFX90A-NEXT:    s_nop 02152; GFX90A-NEXT:    v_mov_b32_e32 v4, v22153; GFX90A-NEXT:    v_mov_b32_e32 v5, v32154; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]2155; GFX90A-NEXT:    s_waitcnt vmcnt(0)2156; GFX90A-NEXT:    s_setpc_b64 s[30:31]2157;2158; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_3_2_1:2159; GFX942:       ; %bb.0:2160; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2161; GFX942-NEXT:    ;;#ASMSTART2162; GFX942-NEXT:    ; def v[4:7]2163; GFX942-NEXT:    ;;#ASMEND2164; GFX942-NEXT:    v_mov_b32_e32 v8, 02165; GFX942-NEXT:    ;;#ASMSTART2166; GFX942-NEXT:    ; def v[0:3]2167; GFX942-NEXT:    ;;#ASMEND2168; GFX942-NEXT:    s_nop 02169; GFX942-NEXT:    v_mov_b32_e32 v4, v02170; GFX942-NEXT:    v_mov_b32_e32 v5, v12171; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:162172; GFX942-NEXT:    s_nop 12173; GFX942-NEXT:    v_mov_b32_e32 v4, v22174; GFX942-NEXT:    v_mov_b32_e32 v5, v32175; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1]2176; GFX942-NEXT:    s_waitcnt vmcnt(0)2177; GFX942-NEXT:    s_setpc_b64 s[30:31]2178  %vec0 = call <2 x ptr> asm "; def $0", "=v"()2179  %vec1 = call <2 x ptr> asm "; def $0", "=v"()2180  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 1>2181  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322182  ret void2183}2184 2185define void @v_shuffle_v4p0_v2p0__u_2_2_2(ptr addrspace(1) inreg %ptr) {2186; GFX9-LABEL: v_shuffle_v4p0_v2p0__u_2_2_2:2187; GFX9:       ; %bb.0:2188; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2189; GFX9-NEXT:    s_setpc_b64 s[30:31]2190  %vec0 = call <2 x ptr> asm "; def $0", "=v"()2191  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2>2192  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322193  ret void2194}2195 2196define void @v_shuffle_v4p0_v2p0__0_2_2_2(ptr addrspace(1) inreg %ptr) {2197; GFX900-LABEL: v_shuffle_v4p0_v2p0__0_2_2_2:2198; GFX900:       ; %bb.0:2199; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2200; GFX900-NEXT:    v_mov_b32_e32 v4, 02201; GFX900-NEXT:    ;;#ASMSTART2202; GFX900-NEXT:    ; def v[0:3]2203; GFX900-NEXT:    ;;#ASMEND2204; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2205; GFX900-NEXT:    s_waitcnt vmcnt(0)2206; GFX900-NEXT:    s_setpc_b64 s[30:31]2207;2208; GFX90A-LABEL: v_shuffle_v4p0_v2p0__0_2_2_2:2209; GFX90A:       ; %bb.0:2210; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2211; GFX90A-NEXT:    v_mov_b32_e32 v4, 02212; GFX90A-NEXT:    ;;#ASMSTART2213; GFX90A-NEXT:    ; def v[0:3]2214; GFX90A-NEXT:    ;;#ASMEND2215; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2216; GFX90A-NEXT:    s_waitcnt vmcnt(0)2217; GFX90A-NEXT:    s_setpc_b64 s[30:31]2218;2219; GFX942-LABEL: v_shuffle_v4p0_v2p0__0_2_2_2:2220; GFX942:       ; %bb.0:2221; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2222; GFX942-NEXT:    v_mov_b32_e32 v4, 02223; GFX942-NEXT:    ;;#ASMSTART2224; GFX942-NEXT:    ; def v[0:3]2225; GFX942-NEXT:    ;;#ASMEND2226; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]2227; GFX942-NEXT:    s_waitcnt vmcnt(0)2228; GFX942-NEXT:    s_setpc_b64 s[30:31]2229  %vec0 = call <2 x ptr> asm "; def $0", "=v"()2230  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2>2231  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322232  ret void2233}2234 2235define void @v_shuffle_v4p0_v2p0__1_2_2_2(ptr addrspace(1) inreg %ptr) {2236; GFX900-LABEL: v_shuffle_v4p0_v2p0__1_2_2_2:2237; GFX900:       ; %bb.0:2238; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2239; GFX900-NEXT:    v_mov_b32_e32 v4, 02240; GFX900-NEXT:    ;;#ASMSTART2241; GFX900-NEXT:    ; def v[0:3]2242; GFX900-NEXT:    ;;#ASMEND2243; GFX900-NEXT:    global_store_dwordx4 v4, v[2:5], s[16:17]2244; GFX900-NEXT:    s_waitcnt vmcnt(0)2245; GFX900-NEXT:    s_setpc_b64 s[30:31]2246;2247; GFX90A-LABEL: v_shuffle_v4p0_v2p0__1_2_2_2:2248; GFX90A:       ; %bb.0:2249; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2250; GFX90A-NEXT:    v_mov_b32_e32 v4, 02251; GFX90A-NEXT:    ;;#ASMSTART2252; GFX90A-NEXT:    ; def v[0:3]2253; GFX90A-NEXT:    ;;#ASMEND2254; GFX90A-NEXT:    global_store_dwordx4 v4, v[2:5], s[16:17]2255; GFX90A-NEXT:    s_waitcnt vmcnt(0)2256; GFX90A-NEXT:    s_setpc_b64 s[30:31]2257;2258; GFX942-LABEL: v_shuffle_v4p0_v2p0__1_2_2_2:2259; GFX942:       ; %bb.0:2260; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2261; GFX942-NEXT:    v_mov_b32_e32 v4, 02262; GFX942-NEXT:    ;;#ASMSTART2263; GFX942-NEXT:    ; def v[0:3]2264; GFX942-NEXT:    ;;#ASMEND2265; GFX942-NEXT:    global_store_dwordx4 v4, v[2:5], s[0:1]2266; GFX942-NEXT:    s_waitcnt vmcnt(0)2267; GFX942-NEXT:    s_setpc_b64 s[30:31]2268  %vec0 = call <2 x ptr> asm "; def $0", "=v"()2269  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2>2270  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322271  ret void2272}2273 2274define void @v_shuffle_v4p0_v2p0__2_2_2_2(ptr addrspace(1) inreg %ptr) {2275; GFX9-LABEL: v_shuffle_v4p0_v2p0__2_2_2_2:2276; GFX9:       ; %bb.0:2277; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2278; GFX9-NEXT:    s_setpc_b64 s[30:31]2279  %vec0 = call <2 x ptr> asm "; def $0", "=v"()2280  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2>2281  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322282  ret void2283}2284 2285define void @v_shuffle_v4p0_v2p0__3_2_2_2(ptr addrspace(1) inreg %ptr) {2286; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_2_2_2:2287; GFX900:       ; %bb.0:2288; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2289; GFX900-NEXT:    v_mov_b32_e32 v8, 02290; GFX900-NEXT:    ;;#ASMSTART2291; GFX900-NEXT:    ; def v[2:5]2292; GFX900-NEXT:    ;;#ASMEND2293; GFX900-NEXT:    v_mov_b32_e32 v0, v22294; GFX900-NEXT:    v_mov_b32_e32 v1, v32295; GFX900-NEXT:    v_mov_b32_e32 v6, v22296; GFX900-NEXT:    v_mov_b32_e32 v7, v32297; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:162298; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]2299; GFX900-NEXT:    s_waitcnt vmcnt(0)2300; GFX900-NEXT:    s_setpc_b64 s[30:31]2301;2302; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_2_2_2:2303; GFX90A:       ; %bb.0:2304; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2305; GFX90A-NEXT:    v_mov_b32_e32 v8, 02306; GFX90A-NEXT:    ;;#ASMSTART2307; GFX90A-NEXT:    ; def v[2:5]2308; GFX90A-NEXT:    ;;#ASMEND2309; GFX90A-NEXT:    v_mov_b32_e32 v0, v22310; GFX90A-NEXT:    v_mov_b32_e32 v1, v32311; GFX90A-NEXT:    v_mov_b32_e32 v6, v22312; GFX90A-NEXT:    v_mov_b32_e32 v7, v32313; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:162314; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]2315; GFX90A-NEXT:    s_waitcnt vmcnt(0)2316; GFX90A-NEXT:    s_setpc_b64 s[30:31]2317;2318; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_2_2_2:2319; GFX942:       ; %bb.0:2320; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2321; GFX942-NEXT:    v_mov_b32_e32 v8, 02322; GFX942-NEXT:    ;;#ASMSTART2323; GFX942-NEXT:    ; def v[2:5]2324; GFX942-NEXT:    ;;#ASMEND2325; GFX942-NEXT:    s_nop 02326; GFX942-NEXT:    v_mov_b32_e32 v0, v22327; GFX942-NEXT:    v_mov_b32_e32 v1, v32328; GFX942-NEXT:    v_mov_b32_e32 v6, v22329; GFX942-NEXT:    v_mov_b32_e32 v7, v32330; GFX942-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:162331; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]2332; GFX942-NEXT:    s_waitcnt vmcnt(0)2333; GFX942-NEXT:    s_setpc_b64 s[30:31]2334  %vec0 = call <2 x ptr> asm "; def $0", "=v"()2335  %vec1 = call <2 x ptr> asm "; def $0", "=v"()2336  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 2, i32 2, i32 2>2337  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322338  ret void2339}2340 2341define void @v_shuffle_v4p0_v2p0__3_u_2_2(ptr addrspace(1) inreg %ptr) {2342; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_u_2_2:2343; GFX900:       ; %bb.0:2344; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2345; GFX900-NEXT:    v_mov_b32_e32 v6, 02346; GFX900-NEXT:    ;;#ASMSTART2347; GFX900-NEXT:    ; def v[2:5]2348; GFX900-NEXT:    ;;#ASMEND2349; GFX900-NEXT:    v_mov_b32_e32 v0, v22350; GFX900-NEXT:    v_mov_b32_e32 v1, v32351; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17] offset:162352; GFX900-NEXT:    global_store_dwordx4 v6, v[4:7], s[16:17]2353; GFX900-NEXT:    s_waitcnt vmcnt(0)2354; GFX900-NEXT:    s_setpc_b64 s[30:31]2355;2356; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_u_2_2:2357; GFX90A:       ; %bb.0:2358; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2359; GFX90A-NEXT:    v_mov_b32_e32 v6, 02360; GFX90A-NEXT:    ;;#ASMSTART2361; GFX90A-NEXT:    ; def v[2:5]2362; GFX90A-NEXT:    ;;#ASMEND2363; GFX90A-NEXT:    v_mov_b32_e32 v0, v22364; GFX90A-NEXT:    v_mov_b32_e32 v1, v32365; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17] offset:162366; GFX90A-NEXT:    global_store_dwordx4 v6, v[4:7], s[16:17]2367; GFX90A-NEXT:    s_waitcnt vmcnt(0)2368; GFX90A-NEXT:    s_setpc_b64 s[30:31]2369;2370; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_u_2_2:2371; GFX942:       ; %bb.0:2372; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2373; GFX942-NEXT:    v_mov_b32_e32 v6, 02374; GFX942-NEXT:    ;;#ASMSTART2375; GFX942-NEXT:    ; def v[2:5]2376; GFX942-NEXT:    ;;#ASMEND2377; GFX942-NEXT:    s_nop 02378; GFX942-NEXT:    v_mov_b32_e32 v0, v22379; GFX942-NEXT:    v_mov_b32_e32 v1, v32380; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] offset:162381; GFX942-NEXT:    global_store_dwordx4 v6, v[4:7], s[0:1]2382; GFX942-NEXT:    s_waitcnt vmcnt(0)2383; GFX942-NEXT:    s_setpc_b64 s[30:31]2384  %vec0 = call <2 x ptr> asm "; def $0", "=v"()2385  %vec1 = call <2 x ptr> asm "; def $0", "=v"()2386  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 poison, i32 2, i32 2>2387  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322388  ret void2389}2390 2391define void @v_shuffle_v4p0_v2p0__3_0_2_2(ptr addrspace(1) inreg %ptr) {2392; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_0_2_2:2393; GFX900:       ; %bb.0:2394; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2395; GFX900-NEXT:    v_mov_b32_e32 v10, 02396; GFX900-NEXT:    ;;#ASMSTART2397; GFX900-NEXT:    ; def v[2:5]2398; GFX900-NEXT:    ;;#ASMEND2399; GFX900-NEXT:    v_mov_b32_e32 v0, v22400; GFX900-NEXT:    v_mov_b32_e32 v1, v32401; GFX900-NEXT:    ;;#ASMSTART2402; GFX900-NEXT:    ; def v[6:9]2403; GFX900-NEXT:    ;;#ASMEND2404; GFX900-NEXT:    global_store_dwordx4 v10, v[0:3], s[16:17] offset:162405; GFX900-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]2406; GFX900-NEXT:    s_waitcnt vmcnt(0)2407; GFX900-NEXT:    s_setpc_b64 s[30:31]2408;2409; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_0_2_2:2410; GFX90A:       ; %bb.0:2411; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2412; GFX90A-NEXT:    v_mov_b32_e32 v10, 02413; GFX90A-NEXT:    ;;#ASMSTART2414; GFX90A-NEXT:    ; def v[2:5]2415; GFX90A-NEXT:    ;;#ASMEND2416; GFX90A-NEXT:    v_mov_b32_e32 v0, v22417; GFX90A-NEXT:    v_mov_b32_e32 v1, v32418; GFX90A-NEXT:    ;;#ASMSTART2419; GFX90A-NEXT:    ; def v[6:9]2420; GFX90A-NEXT:    ;;#ASMEND2421; GFX90A-NEXT:    global_store_dwordx4 v10, v[0:3], s[16:17] offset:162422; GFX90A-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]2423; GFX90A-NEXT:    s_waitcnt vmcnt(0)2424; GFX90A-NEXT:    s_setpc_b64 s[30:31]2425;2426; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_0_2_2:2427; GFX942:       ; %bb.0:2428; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2429; GFX942-NEXT:    v_mov_b32_e32 v10, 02430; GFX942-NEXT:    ;;#ASMSTART2431; GFX942-NEXT:    ; def v[2:5]2432; GFX942-NEXT:    ;;#ASMEND2433; GFX942-NEXT:    ;;#ASMSTART2434; GFX942-NEXT:    ; def v[6:9]2435; GFX942-NEXT:    ;;#ASMEND2436; GFX942-NEXT:    s_nop 02437; GFX942-NEXT:    v_mov_b32_e32 v0, v22438; GFX942-NEXT:    v_mov_b32_e32 v1, v32439; GFX942-NEXT:    global_store_dwordx4 v10, v[0:3], s[0:1] offset:162440; GFX942-NEXT:    global_store_dwordx4 v10, v[4:7], s[0:1]2441; GFX942-NEXT:    s_waitcnt vmcnt(0)2442; GFX942-NEXT:    s_setpc_b64 s[30:31]2443  %vec0 = call <2 x ptr> asm "; def $0", "=v"()2444  %vec1 = call <2 x ptr> asm "; def $0", "=v"()2445  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 0, i32 2, i32 2>2446  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322447  ret void2448}2449 2450define void @v_shuffle_v4p0_v2p0__3_1_2_2(ptr addrspace(1) inreg %ptr) {2451; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_1_2_2:2452; GFX900:       ; %bb.0:2453; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2454; GFX900-NEXT:    ;;#ASMSTART2455; GFX900-NEXT:    ; def v[4:7]2456; GFX900-NEXT:    ;;#ASMEND2457; GFX900-NEXT:    v_mov_b32_e32 v8, 02458; GFX900-NEXT:    ;;#ASMSTART2459; GFX900-NEXT:    ; def v[2:5]2460; GFX900-NEXT:    ;;#ASMEND2461; GFX900-NEXT:    v_mov_b32_e32 v0, v22462; GFX900-NEXT:    v_mov_b32_e32 v1, v32463; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:162464; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]2465; GFX900-NEXT:    s_waitcnt vmcnt(0)2466; GFX900-NEXT:    s_setpc_b64 s[30:31]2467;2468; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_1_2_2:2469; GFX90A:       ; %bb.0:2470; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2471; GFX90A-NEXT:    ;;#ASMSTART2472; GFX90A-NEXT:    ; def v[4:7]2473; GFX90A-NEXT:    ;;#ASMEND2474; GFX90A-NEXT:    v_mov_b32_e32 v8, 02475; GFX90A-NEXT:    ;;#ASMSTART2476; GFX90A-NEXT:    ; def v[2:5]2477; GFX90A-NEXT:    ;;#ASMEND2478; GFX90A-NEXT:    v_mov_b32_e32 v0, v22479; GFX90A-NEXT:    v_mov_b32_e32 v1, v32480; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:162481; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]2482; GFX90A-NEXT:    s_waitcnt vmcnt(0)2483; GFX90A-NEXT:    s_setpc_b64 s[30:31]2484;2485; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_1_2_2:2486; GFX942:       ; %bb.0:2487; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2488; GFX942-NEXT:    ;;#ASMSTART2489; GFX942-NEXT:    ; def v[4:7]2490; GFX942-NEXT:    ;;#ASMEND2491; GFX942-NEXT:    v_mov_b32_e32 v8, 02492; GFX942-NEXT:    ;;#ASMSTART2493; GFX942-NEXT:    ; def v[2:5]2494; GFX942-NEXT:    ;;#ASMEND2495; GFX942-NEXT:    s_nop 02496; GFX942-NEXT:    v_mov_b32_e32 v0, v22497; GFX942-NEXT:    v_mov_b32_e32 v1, v32498; GFX942-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:162499; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]2500; GFX942-NEXT:    s_waitcnt vmcnt(0)2501; GFX942-NEXT:    s_setpc_b64 s[30:31]2502  %vec0 = call <2 x ptr> asm "; def $0", "=v"()2503  %vec1 = call <2 x ptr> asm "; def $0", "=v"()2504  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 1, i32 2, i32 2>2505  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322506  ret void2507}2508 2509define void @v_shuffle_v4p0_v2p0__3_3_2_2(ptr addrspace(1) inreg %ptr) {2510; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_2_2:2511; GFX900:       ; %bb.0:2512; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2513; GFX900-NEXT:    v_mov_b32_e32 v8, 02514; GFX900-NEXT:    ;;#ASMSTART2515; GFX900-NEXT:    ; def v[2:5]2516; GFX900-NEXT:    ;;#ASMEND2517; GFX900-NEXT:    v_mov_b32_e32 v0, v22518; GFX900-NEXT:    v_mov_b32_e32 v1, v32519; GFX900-NEXT:    v_mov_b32_e32 v6, v42520; GFX900-NEXT:    v_mov_b32_e32 v7, v52521; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:162522; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]2523; GFX900-NEXT:    s_waitcnt vmcnt(0)2524; GFX900-NEXT:    s_setpc_b64 s[30:31]2525;2526; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_2_2:2527; GFX90A:       ; %bb.0:2528; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2529; GFX90A-NEXT:    v_mov_b32_e32 v8, 02530; GFX90A-NEXT:    ;;#ASMSTART2531; GFX90A-NEXT:    ; def v[2:5]2532; GFX90A-NEXT:    ;;#ASMEND2533; GFX90A-NEXT:    v_mov_b32_e32 v0, v22534; GFX90A-NEXT:    v_mov_b32_e32 v1, v32535; GFX90A-NEXT:    v_mov_b32_e32 v6, v42536; GFX90A-NEXT:    v_mov_b32_e32 v7, v52537; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:162538; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]2539; GFX90A-NEXT:    s_waitcnt vmcnt(0)2540; GFX90A-NEXT:    s_setpc_b64 s[30:31]2541;2542; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_3_2_2:2543; GFX942:       ; %bb.0:2544; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2545; GFX942-NEXT:    v_mov_b32_e32 v8, 02546; GFX942-NEXT:    ;;#ASMSTART2547; GFX942-NEXT:    ; def v[2:5]2548; GFX942-NEXT:    ;;#ASMEND2549; GFX942-NEXT:    s_nop 02550; GFX942-NEXT:    v_mov_b32_e32 v0, v22551; GFX942-NEXT:    v_mov_b32_e32 v1, v32552; GFX942-NEXT:    v_mov_b32_e32 v6, v42553; GFX942-NEXT:    v_mov_b32_e32 v7, v52554; GFX942-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:162555; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]2556; GFX942-NEXT:    s_waitcnt vmcnt(0)2557; GFX942-NEXT:    s_setpc_b64 s[30:31]2558  %vec0 = call <2 x ptr> asm "; def $0", "=v"()2559  %vec1 = call <2 x ptr> asm "; def $0", "=v"()2560  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 2>2561  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322562  ret void2563}2564 2565define void @v_shuffle_v4p0_v2p0__3_3_u_2(ptr addrspace(1) inreg %ptr) {2566; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_u_2:2567; GFX900:       ; %bb.0:2568; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2569; GFX900-NEXT:    v_mov_b32_e32 v0, 02570; GFX900-NEXT:    ;;#ASMSTART2571; GFX900-NEXT:    ; def v[2:5]2572; GFX900-NEXT:    ;;#ASMEND2573; GFX900-NEXT:    v_mov_b32_e32 v6, v42574; GFX900-NEXT:    v_mov_b32_e32 v7, v52575; GFX900-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17] offset:162576; GFX900-NEXT:    global_store_dwordx4 v0, v[4:7], s[16:17]2577; GFX900-NEXT:    s_waitcnt vmcnt(0)2578; GFX900-NEXT:    s_setpc_b64 s[30:31]2579;2580; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_u_2:2581; GFX90A:       ; %bb.0:2582; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2583; GFX90A-NEXT:    v_mov_b32_e32 v0, 02584; GFX90A-NEXT:    ;;#ASMSTART2585; GFX90A-NEXT:    ; def v[2:5]2586; GFX90A-NEXT:    ;;#ASMEND2587; GFX90A-NEXT:    v_mov_b32_e32 v6, v42588; GFX90A-NEXT:    v_mov_b32_e32 v7, v52589; GFX90A-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17] offset:162590; GFX90A-NEXT:    global_store_dwordx4 v0, v[4:7], s[16:17]2591; GFX90A-NEXT:    s_waitcnt vmcnt(0)2592; GFX90A-NEXT:    s_setpc_b64 s[30:31]2593;2594; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_3_u_2:2595; GFX942:       ; %bb.0:2596; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2597; GFX942-NEXT:    v_mov_b32_e32 v0, 02598; GFX942-NEXT:    ;;#ASMSTART2599; GFX942-NEXT:    ; def v[2:5]2600; GFX942-NEXT:    ;;#ASMEND2601; GFX942-NEXT:    global_store_dwordx4 v0, v[0:3], s[0:1] offset:162602; GFX942-NEXT:    v_mov_b32_e32 v6, v42603; GFX942-NEXT:    v_mov_b32_e32 v7, v52604; GFX942-NEXT:    global_store_dwordx4 v0, v[4:7], s[0:1]2605; GFX942-NEXT:    s_waitcnt vmcnt(0)2606; GFX942-NEXT:    s_setpc_b64 s[30:31]2607  %vec0 = call <2 x ptr> asm "; def $0", "=v"()2608  %vec1 = call <2 x ptr> asm "; def $0", "=v"()2609  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 2>2610  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322611  ret void2612}2613 2614define void @v_shuffle_v4p0_v2p0__3_3_0_2(ptr addrspace(1) inreg %ptr) {2615; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_0_2:2616; GFX900:       ; %bb.0:2617; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2618; GFX900-NEXT:    ;;#ASMSTART2619; GFX900-NEXT:    ; def v[0:3]2620; GFX900-NEXT:    ;;#ASMEND2621; GFX900-NEXT:    v_mov_b32_e32 v8, 02622; GFX900-NEXT:    ;;#ASMSTART2623; GFX900-NEXT:    ; def v[2:5]2624; GFX900-NEXT:    ;;#ASMEND2625; GFX900-NEXT:    v_mov_b32_e32 v6, v42626; GFX900-NEXT:    v_mov_b32_e32 v7, v52627; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:162628; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]2629; GFX900-NEXT:    s_waitcnt vmcnt(0)2630; GFX900-NEXT:    s_setpc_b64 s[30:31]2631;2632; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_0_2:2633; GFX90A:       ; %bb.0:2634; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2635; GFX90A-NEXT:    ;;#ASMSTART2636; GFX90A-NEXT:    ; def v[0:3]2637; GFX90A-NEXT:    ;;#ASMEND2638; GFX90A-NEXT:    v_mov_b32_e32 v8, 02639; GFX90A-NEXT:    ;;#ASMSTART2640; GFX90A-NEXT:    ; def v[2:5]2641; GFX90A-NEXT:    ;;#ASMEND2642; GFX90A-NEXT:    v_mov_b32_e32 v6, v42643; GFX90A-NEXT:    v_mov_b32_e32 v7, v52644; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17] offset:162645; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]2646; GFX90A-NEXT:    s_waitcnt vmcnt(0)2647; GFX90A-NEXT:    s_setpc_b64 s[30:31]2648;2649; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_3_0_2:2650; GFX942:       ; %bb.0:2651; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2652; GFX942-NEXT:    ;;#ASMSTART2653; GFX942-NEXT:    ; def v[0:3]2654; GFX942-NEXT:    ;;#ASMEND2655; GFX942-NEXT:    v_mov_b32_e32 v8, 02656; GFX942-NEXT:    ;;#ASMSTART2657; GFX942-NEXT:    ; def v[2:5]2658; GFX942-NEXT:    ;;#ASMEND2659; GFX942-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1] offset:162660; GFX942-NEXT:    v_mov_b32_e32 v6, v42661; GFX942-NEXT:    v_mov_b32_e32 v7, v52662; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]2663; GFX942-NEXT:    s_waitcnt vmcnt(0)2664; GFX942-NEXT:    s_setpc_b64 s[30:31]2665  %vec0 = call <2 x ptr> asm "; def $0", "=v"()2666  %vec1 = call <2 x ptr> asm "; def $0", "=v"()2667  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 2>2668  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322669  ret void2670}2671 2672define void @v_shuffle_v4p0_v2p0__3_3_1_2(ptr addrspace(1) inreg %ptr) {2673; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_1_2:2674; GFX900:       ; %bb.0:2675; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2676; GFX900-NEXT:    v_mov_b32_e32 v10, 02677; GFX900-NEXT:    ;;#ASMSTART2678; GFX900-NEXT:    ; def v[4:7]2679; GFX900-NEXT:    ;;#ASMEND2680; GFX900-NEXT:    v_mov_b32_e32 v8, v62681; GFX900-NEXT:    v_mov_b32_e32 v9, v72682; GFX900-NEXT:    ;;#ASMSTART2683; GFX900-NEXT:    ; def v[0:3]2684; GFX900-NEXT:    ;;#ASMEND2685; GFX900-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17] offset:162686; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17]2687; GFX900-NEXT:    s_waitcnt vmcnt(0)2688; GFX900-NEXT:    s_setpc_b64 s[30:31]2689;2690; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_1_2:2691; GFX90A:       ; %bb.0:2692; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2693; GFX90A-NEXT:    v_mov_b32_e32 v10, 02694; GFX90A-NEXT:    ;;#ASMSTART2695; GFX90A-NEXT:    ; def v[4:7]2696; GFX90A-NEXT:    ;;#ASMEND2697; GFX90A-NEXT:    v_mov_b32_e32 v8, v62698; GFX90A-NEXT:    v_mov_b32_e32 v9, v72699; GFX90A-NEXT:    ;;#ASMSTART2700; GFX90A-NEXT:    ; def v[0:3]2701; GFX90A-NEXT:    ;;#ASMEND2702; GFX90A-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17] offset:162703; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17]2704; GFX90A-NEXT:    s_waitcnt vmcnt(0)2705; GFX90A-NEXT:    s_setpc_b64 s[30:31]2706;2707; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_3_1_2:2708; GFX942:       ; %bb.0:2709; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2710; GFX942-NEXT:    v_mov_b32_e32 v10, 02711; GFX942-NEXT:    ;;#ASMSTART2712; GFX942-NEXT:    ; def v[4:7]2713; GFX942-NEXT:    ;;#ASMEND2714; GFX942-NEXT:    ;;#ASMSTART2715; GFX942-NEXT:    ; def v[0:3]2716; GFX942-NEXT:    ;;#ASMEND2717; GFX942-NEXT:    global_store_dwordx4 v10, v[2:5], s[0:1] offset:162718; GFX942-NEXT:    v_mov_b32_e32 v8, v62719; GFX942-NEXT:    v_mov_b32_e32 v9, v72720; GFX942-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1]2721; GFX942-NEXT:    s_waitcnt vmcnt(0)2722; GFX942-NEXT:    s_setpc_b64 s[30:31]2723  %vec0 = call <2 x ptr> asm "; def $0", "=v"()2724  %vec1 = call <2 x ptr> asm "; def $0", "=v"()2725  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 2>2726  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322727  ret void2728}2729 2730define void @v_shuffle_v4p0_v2p0__u_3_3_3(ptr addrspace(1) inreg %ptr) {2731; GFX900-LABEL: v_shuffle_v4p0_v2p0__u_3_3_3:2732; GFX900:       ; %bb.0:2733; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2734; GFX900-NEXT:    v_mov_b32_e32 v6, 02735; GFX900-NEXT:    ;;#ASMSTART2736; GFX900-NEXT:    ; def v[0:3]2737; GFX900-NEXT:    ;;#ASMEND2738; GFX900-NEXT:    v_mov_b32_e32 v4, v22739; GFX900-NEXT:    v_mov_b32_e32 v5, v32740; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:162741; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]2742; GFX900-NEXT:    s_waitcnt vmcnt(0)2743; GFX900-NEXT:    s_setpc_b64 s[30:31]2744;2745; GFX90A-LABEL: v_shuffle_v4p0_v2p0__u_3_3_3:2746; GFX90A:       ; %bb.0:2747; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2748; GFX90A-NEXT:    v_mov_b32_e32 v6, 02749; GFX90A-NEXT:    ;;#ASMSTART2750; GFX90A-NEXT:    ; def v[0:3]2751; GFX90A-NEXT:    ;;#ASMEND2752; GFX90A-NEXT:    v_mov_b32_e32 v4, v22753; GFX90A-NEXT:    v_mov_b32_e32 v5, v32754; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:162755; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]2756; GFX90A-NEXT:    s_waitcnt vmcnt(0)2757; GFX90A-NEXT:    s_setpc_b64 s[30:31]2758;2759; GFX942-LABEL: v_shuffle_v4p0_v2p0__u_3_3_3:2760; GFX942:       ; %bb.0:2761; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2762; GFX942-NEXT:    v_mov_b32_e32 v6, 02763; GFX942-NEXT:    ;;#ASMSTART2764; GFX942-NEXT:    ; def v[0:3]2765; GFX942-NEXT:    ;;#ASMEND2766; GFX942-NEXT:    s_nop 02767; GFX942-NEXT:    v_mov_b32_e32 v4, v22768; GFX942-NEXT:    v_mov_b32_e32 v5, v32769; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] offset:162770; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]2771; GFX942-NEXT:    s_waitcnt vmcnt(0)2772; GFX942-NEXT:    s_setpc_b64 s[30:31]2773  %vec0 = call <2 x ptr> asm "; def $0", "=v"()2774  %vec1 = call <2 x ptr> asm "; def $0", "=v"()2775  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 poison, i32 3, i32 3, i32 3>2776  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322777  ret void2778}2779 2780define void @v_shuffle_v4p0_v2p0__0_3_3_3(ptr addrspace(1) inreg %ptr) {2781; GFX900-LABEL: v_shuffle_v4p0_v2p0__0_3_3_3:2782; GFX900:       ; %bb.0:2783; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2784; GFX900-NEXT:    ;;#ASMSTART2785; GFX900-NEXT:    ; def v[6:9]2786; GFX900-NEXT:    ;;#ASMEND2787; GFX900-NEXT:    v_mov_b32_e32 v10, 02788; GFX900-NEXT:    ;;#ASMSTART2789; GFX900-NEXT:    ; def v[0:3]2790; GFX900-NEXT:    ;;#ASMEND2791; GFX900-NEXT:    v_mov_b32_e32 v4, v22792; GFX900-NEXT:    v_mov_b32_e32 v5, v32793; GFX900-NEXT:    v_mov_b32_e32 v8, v22794; GFX900-NEXT:    v_mov_b32_e32 v9, v32795; GFX900-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17] offset:162796; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17]2797; GFX900-NEXT:    s_waitcnt vmcnt(0)2798; GFX900-NEXT:    s_setpc_b64 s[30:31]2799;2800; GFX90A-LABEL: v_shuffle_v4p0_v2p0__0_3_3_3:2801; GFX90A:       ; %bb.0:2802; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2803; GFX90A-NEXT:    ;;#ASMSTART2804; GFX90A-NEXT:    ; def v[6:9]2805; GFX90A-NEXT:    ;;#ASMEND2806; GFX90A-NEXT:    v_mov_b32_e32 v10, 02807; GFX90A-NEXT:    ;;#ASMSTART2808; GFX90A-NEXT:    ; def v[0:3]2809; GFX90A-NEXT:    ;;#ASMEND2810; GFX90A-NEXT:    v_mov_b32_e32 v4, v22811; GFX90A-NEXT:    v_mov_b32_e32 v5, v32812; GFX90A-NEXT:    v_mov_b32_e32 v8, v22813; GFX90A-NEXT:    v_mov_b32_e32 v9, v32814; GFX90A-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17] offset:162815; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17]2816; GFX90A-NEXT:    s_waitcnt vmcnt(0)2817; GFX90A-NEXT:    s_setpc_b64 s[30:31]2818;2819; GFX942-LABEL: v_shuffle_v4p0_v2p0__0_3_3_3:2820; GFX942:       ; %bb.0:2821; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2822; GFX942-NEXT:    ;;#ASMSTART2823; GFX942-NEXT:    ; def v[6:9]2824; GFX942-NEXT:    ;;#ASMEND2825; GFX942-NEXT:    v_mov_b32_e32 v10, 02826; GFX942-NEXT:    ;;#ASMSTART2827; GFX942-NEXT:    ; def v[0:3]2828; GFX942-NEXT:    ;;#ASMEND2829; GFX942-NEXT:    s_nop 02830; GFX942-NEXT:    v_mov_b32_e32 v4, v22831; GFX942-NEXT:    v_mov_b32_e32 v5, v32832; GFX942-NEXT:    v_mov_b32_e32 v8, v22833; GFX942-NEXT:    v_mov_b32_e32 v9, v32834; GFX942-NEXT:    global_store_dwordx4 v10, v[2:5], s[0:1] offset:162835; GFX942-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1]2836; GFX942-NEXT:    s_waitcnt vmcnt(0)2837; GFX942-NEXT:    s_setpc_b64 s[30:31]2838  %vec0 = call <2 x ptr> asm "; def $0", "=v"()2839  %vec1 = call <2 x ptr> asm "; def $0", "=v"()2840  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 0, i32 3, i32 3, i32 3>2841  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322842  ret void2843}2844 2845define void @v_shuffle_v4p0_v2p0__1_3_3_3(ptr addrspace(1) inreg %ptr) {2846; GFX900-LABEL: v_shuffle_v4p0_v2p0__1_3_3_3:2847; GFX900:       ; %bb.0:2848; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2849; GFX900-NEXT:    ;;#ASMSTART2850; GFX900-NEXT:    ; def v[4:7]2851; GFX900-NEXT:    ;;#ASMEND2852; GFX900-NEXT:    v_mov_b32_e32 v10, 02853; GFX900-NEXT:    v_mov_b32_e32 v8, v62854; GFX900-NEXT:    v_mov_b32_e32 v9, v72855; GFX900-NEXT:    v_mov_b32_e32 v4, v62856; GFX900-NEXT:    v_mov_b32_e32 v5, v72857; GFX900-NEXT:    ;;#ASMSTART2858; GFX900-NEXT:    ; def v[0:3]2859; GFX900-NEXT:    ;;#ASMEND2860; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:162861; GFX900-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17]2862; GFX900-NEXT:    s_waitcnt vmcnt(0)2863; GFX900-NEXT:    s_setpc_b64 s[30:31]2864;2865; GFX90A-LABEL: v_shuffle_v4p0_v2p0__1_3_3_3:2866; GFX90A:       ; %bb.0:2867; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2868; GFX90A-NEXT:    ;;#ASMSTART2869; GFX90A-NEXT:    ; def v[4:7]2870; GFX90A-NEXT:    ;;#ASMEND2871; GFX90A-NEXT:    v_mov_b32_e32 v10, 02872; GFX90A-NEXT:    v_mov_b32_e32 v8, v62873; GFX90A-NEXT:    v_mov_b32_e32 v9, v72874; GFX90A-NEXT:    v_mov_b32_e32 v4, v62875; GFX90A-NEXT:    v_mov_b32_e32 v5, v72876; GFX90A-NEXT:    ;;#ASMSTART2877; GFX90A-NEXT:    ; def v[0:3]2878; GFX90A-NEXT:    ;;#ASMEND2879; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17] offset:162880; GFX90A-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17]2881; GFX90A-NEXT:    s_waitcnt vmcnt(0)2882; GFX90A-NEXT:    s_setpc_b64 s[30:31]2883;2884; GFX942-LABEL: v_shuffle_v4p0_v2p0__1_3_3_3:2885; GFX942:       ; %bb.0:2886; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2887; GFX942-NEXT:    ;;#ASMSTART2888; GFX942-NEXT:    ; def v[4:7]2889; GFX942-NEXT:    ;;#ASMEND2890; GFX942-NEXT:    v_mov_b32_e32 v10, 02891; GFX942-NEXT:    v_mov_b32_e32 v8, v62892; GFX942-NEXT:    v_mov_b32_e32 v9, v72893; GFX942-NEXT:    v_mov_b32_e32 v4, v62894; GFX942-NEXT:    v_mov_b32_e32 v5, v72895; GFX942-NEXT:    ;;#ASMSTART2896; GFX942-NEXT:    ; def v[0:3]2897; GFX942-NEXT:    ;;#ASMEND2898; GFX942-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1] offset:162899; GFX942-NEXT:    global_store_dwordx4 v10, v[2:5], s[0:1]2900; GFX942-NEXT:    s_waitcnt vmcnt(0)2901; GFX942-NEXT:    s_setpc_b64 s[30:31]2902  %vec0 = call <2 x ptr> asm "; def $0", "=v"()2903  %vec1 = call <2 x ptr> asm "; def $0", "=v"()2904  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 1, i32 3, i32 3, i32 3>2905  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322906  ret void2907}2908 2909define void @v_shuffle_v4p0_v2p0__2_3_3_3(ptr addrspace(1) inreg %ptr) {2910; GFX900-LABEL: v_shuffle_v4p0_v2p0__2_3_3_3:2911; GFX900:       ; %bb.0:2912; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2913; GFX900-NEXT:    v_mov_b32_e32 v6, 02914; GFX900-NEXT:    ;;#ASMSTART2915; GFX900-NEXT:    ; def v[0:3]2916; GFX900-NEXT:    ;;#ASMEND2917; GFX900-NEXT:    v_mov_b32_e32 v4, v22918; GFX900-NEXT:    v_mov_b32_e32 v5, v32919; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:162920; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]2921; GFX900-NEXT:    s_waitcnt vmcnt(0)2922; GFX900-NEXT:    s_setpc_b64 s[30:31]2923;2924; GFX90A-LABEL: v_shuffle_v4p0_v2p0__2_3_3_3:2925; GFX90A:       ; %bb.0:2926; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2927; GFX90A-NEXT:    v_mov_b32_e32 v6, 02928; GFX90A-NEXT:    ;;#ASMSTART2929; GFX90A-NEXT:    ; def v[0:3]2930; GFX90A-NEXT:    ;;#ASMEND2931; GFX90A-NEXT:    v_mov_b32_e32 v4, v22932; GFX90A-NEXT:    v_mov_b32_e32 v5, v32933; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:162934; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]2935; GFX90A-NEXT:    s_waitcnt vmcnt(0)2936; GFX90A-NEXT:    s_setpc_b64 s[30:31]2937;2938; GFX942-LABEL: v_shuffle_v4p0_v2p0__2_3_3_3:2939; GFX942:       ; %bb.0:2940; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2941; GFX942-NEXT:    v_mov_b32_e32 v6, 02942; GFX942-NEXT:    ;;#ASMSTART2943; GFX942-NEXT:    ; def v[0:3]2944; GFX942-NEXT:    ;;#ASMEND2945; GFX942-NEXT:    s_nop 02946; GFX942-NEXT:    v_mov_b32_e32 v4, v22947; GFX942-NEXT:    v_mov_b32_e32 v5, v32948; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] offset:162949; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]2950; GFX942-NEXT:    s_waitcnt vmcnt(0)2951; GFX942-NEXT:    s_setpc_b64 s[30:31]2952  %vec0 = call <2 x ptr> asm "; def $0", "=v"()2953  %vec1 = call <2 x ptr> asm "; def $0", "=v"()2954  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 2, i32 3, i32 3, i32 3>2955  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 322956  ret void2957}2958 2959define void @v_shuffle_v4p0_v2p0__3_u_3_3(ptr addrspace(1) inreg %ptr) {2960; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_u_3_3:2961; GFX900:       ; %bb.0:2962; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2963; GFX900-NEXT:    v_mov_b32_e32 v6, 02964; GFX900-NEXT:    ;;#ASMSTART2965; GFX900-NEXT:    ; def v[0:3]2966; GFX900-NEXT:    ;;#ASMEND2967; GFX900-NEXT:    v_mov_b32_e32 v4, v22968; GFX900-NEXT:    v_mov_b32_e32 v5, v32969; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:162970; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]2971; GFX900-NEXT:    s_waitcnt vmcnt(0)2972; GFX900-NEXT:    s_setpc_b64 s[30:31]2973;2974; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_u_3_3:2975; GFX90A:       ; %bb.0:2976; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2977; GFX90A-NEXT:    v_mov_b32_e32 v6, 02978; GFX90A-NEXT:    ;;#ASMSTART2979; GFX90A-NEXT:    ; def v[0:3]2980; GFX90A-NEXT:    ;;#ASMEND2981; GFX90A-NEXT:    v_mov_b32_e32 v4, v22982; GFX90A-NEXT:    v_mov_b32_e32 v5, v32983; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:162984; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]2985; GFX90A-NEXT:    s_waitcnt vmcnt(0)2986; GFX90A-NEXT:    s_setpc_b64 s[30:31]2987;2988; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_u_3_3:2989; GFX942:       ; %bb.0:2990; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2991; GFX942-NEXT:    v_mov_b32_e32 v6, 02992; GFX942-NEXT:    ;;#ASMSTART2993; GFX942-NEXT:    ; def v[0:3]2994; GFX942-NEXT:    ;;#ASMEND2995; GFX942-NEXT:    s_nop 02996; GFX942-NEXT:    v_mov_b32_e32 v4, v22997; GFX942-NEXT:    v_mov_b32_e32 v5, v32998; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] offset:162999; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]3000; GFX942-NEXT:    s_waitcnt vmcnt(0)3001; GFX942-NEXT:    s_setpc_b64 s[30:31]3002  %vec0 = call <2 x ptr> asm "; def $0", "=v"()3003  %vec1 = call <2 x ptr> asm "; def $0", "=v"()3004  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 poison, i32 3, i32 3>3005  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 323006  ret void3007}3008 3009define void @v_shuffle_v4p0_v2p0__3_0_3_3(ptr addrspace(1) inreg %ptr) {3010; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_0_3_3:3011; GFX900:       ; %bb.0:3012; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3013; GFX900-NEXT:    v_mov_b32_e32 v10, 03014; GFX900-NEXT:    ;;#ASMSTART3015; GFX900-NEXT:    ; def v[0:3]3016; GFX900-NEXT:    ;;#ASMEND3017; GFX900-NEXT:    v_mov_b32_e32 v4, v23018; GFX900-NEXT:    v_mov_b32_e32 v5, v33019; GFX900-NEXT:    ;;#ASMSTART3020; GFX900-NEXT:    ; def v[6:9]3021; GFX900-NEXT:    ;;#ASMEND3022; GFX900-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17] offset:163023; GFX900-NEXT:    s_nop 03024; GFX900-NEXT:    v_mov_b32_e32 v4, v63025; GFX900-NEXT:    v_mov_b32_e32 v5, v73026; GFX900-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17]3027; GFX900-NEXT:    s_waitcnt vmcnt(0)3028; GFX900-NEXT:    s_setpc_b64 s[30:31]3029;3030; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_0_3_3:3031; GFX90A:       ; %bb.0:3032; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3033; GFX90A-NEXT:    v_mov_b32_e32 v10, 03034; GFX90A-NEXT:    ;;#ASMSTART3035; GFX90A-NEXT:    ; def v[0:3]3036; GFX90A-NEXT:    ;;#ASMEND3037; GFX90A-NEXT:    v_mov_b32_e32 v4, v23038; GFX90A-NEXT:    v_mov_b32_e32 v5, v33039; GFX90A-NEXT:    ;;#ASMSTART3040; GFX90A-NEXT:    ; def v[6:9]3041; GFX90A-NEXT:    ;;#ASMEND3042; GFX90A-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17] offset:163043; GFX90A-NEXT:    s_nop 03044; GFX90A-NEXT:    v_mov_b32_e32 v4, v63045; GFX90A-NEXT:    v_mov_b32_e32 v5, v73046; GFX90A-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17]3047; GFX90A-NEXT:    s_waitcnt vmcnt(0)3048; GFX90A-NEXT:    s_setpc_b64 s[30:31]3049;3050; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_0_3_3:3051; GFX942:       ; %bb.0:3052; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3053; GFX942-NEXT:    v_mov_b32_e32 v10, 03054; GFX942-NEXT:    ;;#ASMSTART3055; GFX942-NEXT:    ; def v[0:3]3056; GFX942-NEXT:    ;;#ASMEND3057; GFX942-NEXT:    ;;#ASMSTART3058; GFX942-NEXT:    ; def v[6:9]3059; GFX942-NEXT:    ;;#ASMEND3060; GFX942-NEXT:    s_nop 03061; GFX942-NEXT:    v_mov_b32_e32 v4, v23062; GFX942-NEXT:    v_mov_b32_e32 v5, v33063; GFX942-NEXT:    global_store_dwordx4 v10, v[2:5], s[0:1] offset:163064; GFX942-NEXT:    s_nop 13065; GFX942-NEXT:    v_mov_b32_e32 v4, v63066; GFX942-NEXT:    v_mov_b32_e32 v5, v73067; GFX942-NEXT:    global_store_dwordx4 v10, v[2:5], s[0:1]3068; GFX942-NEXT:    s_waitcnt vmcnt(0)3069; GFX942-NEXT:    s_setpc_b64 s[30:31]3070  %vec0 = call <2 x ptr> asm "; def $0", "=v"()3071  %vec1 = call <2 x ptr> asm "; def $0", "=v"()3072  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 0, i32 3, i32 3>3073  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 323074  ret void3075}3076 3077define void @v_shuffle_v4p0_v2p0__3_1_3_3(ptr addrspace(1) inreg %ptr) {3078; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_1_3_3:3079; GFX900:       ; %bb.0:3080; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3081; GFX900-NEXT:    ;;#ASMSTART3082; GFX900-NEXT:    ; def v[4:7]3083; GFX900-NEXT:    ;;#ASMEND3084; GFX900-NEXT:    v_mov_b32_e32 v8, 03085; GFX900-NEXT:    ;;#ASMSTART3086; GFX900-NEXT:    ; def v[0:3]3087; GFX900-NEXT:    ;;#ASMEND3088; GFX900-NEXT:    v_mov_b32_e32 v4, v23089; GFX900-NEXT:    v_mov_b32_e32 v5, v33090; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17] offset:163091; GFX900-NEXT:    s_nop 03092; GFX900-NEXT:    v_mov_b32_e32 v4, v63093; GFX900-NEXT:    v_mov_b32_e32 v5, v73094; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]3095; GFX900-NEXT:    s_waitcnt vmcnt(0)3096; GFX900-NEXT:    s_setpc_b64 s[30:31]3097;3098; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_1_3_3:3099; GFX90A:       ; %bb.0:3100; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3101; GFX90A-NEXT:    ;;#ASMSTART3102; GFX90A-NEXT:    ; def v[4:7]3103; GFX90A-NEXT:    ;;#ASMEND3104; GFX90A-NEXT:    v_mov_b32_e32 v8, 03105; GFX90A-NEXT:    ;;#ASMSTART3106; GFX90A-NEXT:    ; def v[0:3]3107; GFX90A-NEXT:    ;;#ASMEND3108; GFX90A-NEXT:    v_mov_b32_e32 v4, v23109; GFX90A-NEXT:    v_mov_b32_e32 v5, v33110; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17] offset:163111; GFX90A-NEXT:    s_nop 03112; GFX90A-NEXT:    v_mov_b32_e32 v4, v63113; GFX90A-NEXT:    v_mov_b32_e32 v5, v73114; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]3115; GFX90A-NEXT:    s_waitcnt vmcnt(0)3116; GFX90A-NEXT:    s_setpc_b64 s[30:31]3117;3118; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_1_3_3:3119; GFX942:       ; %bb.0:3120; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3121; GFX942-NEXT:    ;;#ASMSTART3122; GFX942-NEXT:    ; def v[4:7]3123; GFX942-NEXT:    ;;#ASMEND3124; GFX942-NEXT:    v_mov_b32_e32 v8, 03125; GFX942-NEXT:    ;;#ASMSTART3126; GFX942-NEXT:    ; def v[0:3]3127; GFX942-NEXT:    ;;#ASMEND3128; GFX942-NEXT:    s_nop 03129; GFX942-NEXT:    v_mov_b32_e32 v4, v23130; GFX942-NEXT:    v_mov_b32_e32 v5, v33131; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1] offset:163132; GFX942-NEXT:    s_nop 13133; GFX942-NEXT:    v_mov_b32_e32 v4, v63134; GFX942-NEXT:    v_mov_b32_e32 v5, v73135; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1]3136; GFX942-NEXT:    s_waitcnt vmcnt(0)3137; GFX942-NEXT:    s_setpc_b64 s[30:31]3138  %vec0 = call <2 x ptr> asm "; def $0", "=v"()3139  %vec1 = call <2 x ptr> asm "; def $0", "=v"()3140  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 1, i32 3, i32 3>3141  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 323142  ret void3143}3144 3145define void @v_shuffle_v4p0_v2p0__3_2_3_3(ptr addrspace(1) inreg %ptr) {3146; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_2_3_3:3147; GFX900:       ; %bb.0:3148; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3149; GFX900-NEXT:    v_mov_b32_e32 v6, 03150; GFX900-NEXT:    ;;#ASMSTART3151; GFX900-NEXT:    ; def v[0:3]3152; GFX900-NEXT:    ;;#ASMEND3153; GFX900-NEXT:    v_mov_b32_e32 v4, v23154; GFX900-NEXT:    v_mov_b32_e32 v5, v33155; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:163156; GFX900-NEXT:    s_nop 03157; GFX900-NEXT:    v_mov_b32_e32 v4, v03158; GFX900-NEXT:    v_mov_b32_e32 v5, v13159; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]3160; GFX900-NEXT:    s_waitcnt vmcnt(0)3161; GFX900-NEXT:    s_setpc_b64 s[30:31]3162;3163; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_2_3_3:3164; GFX90A:       ; %bb.0:3165; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3166; GFX90A-NEXT:    v_mov_b32_e32 v6, 03167; GFX90A-NEXT:    ;;#ASMSTART3168; GFX90A-NEXT:    ; def v[0:3]3169; GFX90A-NEXT:    ;;#ASMEND3170; GFX90A-NEXT:    v_mov_b32_e32 v4, v23171; GFX90A-NEXT:    v_mov_b32_e32 v5, v33172; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17] offset:163173; GFX90A-NEXT:    s_nop 03174; GFX90A-NEXT:    v_mov_b32_e32 v4, v03175; GFX90A-NEXT:    v_mov_b32_e32 v5, v13176; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]3177; GFX90A-NEXT:    s_waitcnt vmcnt(0)3178; GFX90A-NEXT:    s_setpc_b64 s[30:31]3179;3180; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_2_3_3:3181; GFX942:       ; %bb.0:3182; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3183; GFX942-NEXT:    v_mov_b32_e32 v6, 03184; GFX942-NEXT:    ;;#ASMSTART3185; GFX942-NEXT:    ; def v[0:3]3186; GFX942-NEXT:    ;;#ASMEND3187; GFX942-NEXT:    s_nop 03188; GFX942-NEXT:    v_mov_b32_e32 v4, v23189; GFX942-NEXT:    v_mov_b32_e32 v5, v33190; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1] offset:163191; GFX942-NEXT:    s_nop 13192; GFX942-NEXT:    v_mov_b32_e32 v4, v03193; GFX942-NEXT:    v_mov_b32_e32 v5, v13194; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]3195; GFX942-NEXT:    s_waitcnt vmcnt(0)3196; GFX942-NEXT:    s_setpc_b64 s[30:31]3197  %vec0 = call <2 x ptr> asm "; def $0", "=v"()3198  %vec1 = call <2 x ptr> asm "; def $0", "=v"()3199  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 2, i32 3, i32 3>3200  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 323201  ret void3202}3203 3204define void @v_shuffle_v4p0_v2p0__3_3_u_3(ptr addrspace(1) inreg %ptr) {3205; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_u_3:3206; GFX900:       ; %bb.0:3207; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3208; GFX900-NEXT:    v_mov_b32_e32 v6, 03209; GFX900-NEXT:    ;;#ASMSTART3210; GFX900-NEXT:    ; def v[0:3]3211; GFX900-NEXT:    ;;#ASMEND3212; GFX900-NEXT:    v_mov_b32_e32 v4, v23213; GFX900-NEXT:    v_mov_b32_e32 v5, v33214; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17] offset:163215; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]3216; GFX900-NEXT:    s_waitcnt vmcnt(0)3217; GFX900-NEXT:    s_setpc_b64 s[30:31]3218;3219; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_u_3:3220; GFX90A:       ; %bb.0:3221; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3222; GFX90A-NEXT:    v_mov_b32_e32 v6, 03223; GFX90A-NEXT:    ;;#ASMSTART3224; GFX90A-NEXT:    ; def v[0:3]3225; GFX90A-NEXT:    ;;#ASMEND3226; GFX90A-NEXT:    v_mov_b32_e32 v4, v23227; GFX90A-NEXT:    v_mov_b32_e32 v5, v33228; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17] offset:163229; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]3230; GFX90A-NEXT:    s_waitcnt vmcnt(0)3231; GFX90A-NEXT:    s_setpc_b64 s[30:31]3232;3233; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_3_u_3:3234; GFX942:       ; %bb.0:3235; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3236; GFX942-NEXT:    v_mov_b32_e32 v6, 03237; GFX942-NEXT:    ;;#ASMSTART3238; GFX942-NEXT:    ; def v[0:3]3239; GFX942-NEXT:    ;;#ASMEND3240; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] offset:163241; GFX942-NEXT:    v_mov_b32_e32 v4, v23242; GFX942-NEXT:    v_mov_b32_e32 v5, v33243; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]3244; GFX942-NEXT:    s_waitcnt vmcnt(0)3245; GFX942-NEXT:    s_setpc_b64 s[30:31]3246  %vec0 = call <2 x ptr> asm "; def $0", "=v"()3247  %vec1 = call <2 x ptr> asm "; def $0", "=v"()3248  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 3>3249  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 323250  ret void3251}3252 3253define void @v_shuffle_v4p0_v2p0__3_3_0_3(ptr addrspace(1) inreg %ptr) {3254; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_0_3:3255; GFX900:       ; %bb.0:3256; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3257; GFX900-NEXT:    ;;#ASMSTART3258; GFX900-NEXT:    ; def v[4:7]3259; GFX900-NEXT:    ;;#ASMEND3260; GFX900-NEXT:    v_mov_b32_e32 v8, 03261; GFX900-NEXT:    ;;#ASMSTART3262; GFX900-NEXT:    ; def v[0:3]3263; GFX900-NEXT:    ;;#ASMEND3264; GFX900-NEXT:    v_mov_b32_e32 v6, v23265; GFX900-NEXT:    v_mov_b32_e32 v7, v33266; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:163267; GFX900-NEXT:    s_nop 03268; GFX900-NEXT:    v_mov_b32_e32 v4, v23269; GFX900-NEXT:    v_mov_b32_e32 v5, v33270; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]3271; GFX900-NEXT:    s_waitcnt vmcnt(0)3272; GFX900-NEXT:    s_setpc_b64 s[30:31]3273;3274; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_0_3:3275; GFX90A:       ; %bb.0:3276; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3277; GFX90A-NEXT:    ;;#ASMSTART3278; GFX90A-NEXT:    ; def v[4:7]3279; GFX90A-NEXT:    ;;#ASMEND3280; GFX90A-NEXT:    v_mov_b32_e32 v8, 03281; GFX90A-NEXT:    ;;#ASMSTART3282; GFX90A-NEXT:    ; def v[0:3]3283; GFX90A-NEXT:    ;;#ASMEND3284; GFX90A-NEXT:    v_mov_b32_e32 v6, v23285; GFX90A-NEXT:    v_mov_b32_e32 v7, v33286; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17] offset:163287; GFX90A-NEXT:    s_nop 03288; GFX90A-NEXT:    v_mov_b32_e32 v4, v23289; GFX90A-NEXT:    v_mov_b32_e32 v5, v33290; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]3291; GFX90A-NEXT:    s_waitcnt vmcnt(0)3292; GFX90A-NEXT:    s_setpc_b64 s[30:31]3293;3294; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_3_0_3:3295; GFX942:       ; %bb.0:3296; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3297; GFX942-NEXT:    ;;#ASMSTART3298; GFX942-NEXT:    ; def v[4:7]3299; GFX942-NEXT:    ;;#ASMEND3300; GFX942-NEXT:    v_mov_b32_e32 v8, 03301; GFX942-NEXT:    ;;#ASMSTART3302; GFX942-NEXT:    ; def v[0:3]3303; GFX942-NEXT:    ;;#ASMEND3304; GFX942-NEXT:    s_nop 03305; GFX942-NEXT:    v_mov_b32_e32 v6, v23306; GFX942-NEXT:    v_mov_b32_e32 v7, v33307; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1] offset:163308; GFX942-NEXT:    s_nop 13309; GFX942-NEXT:    v_mov_b32_e32 v4, v23310; GFX942-NEXT:    v_mov_b32_e32 v5, v33311; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1]3312; GFX942-NEXT:    s_waitcnt vmcnt(0)3313; GFX942-NEXT:    s_setpc_b64 s[30:31]3314  %vec0 = call <2 x ptr> asm "; def $0", "=v"()3315  %vec1 = call <2 x ptr> asm "; def $0", "=v"()3316  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 3>3317  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 323318  ret void3319}3320 3321define void @v_shuffle_v4p0_v2p0__3_3_1_3(ptr addrspace(1) inreg %ptr) {3322; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_1_3:3323; GFX900:       ; %bb.0:3324; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3325; GFX900-NEXT:    ;;#ASMSTART3326; GFX900-NEXT:    ; def v[4:7]3327; GFX900-NEXT:    ;;#ASMEND3328; GFX900-NEXT:    v_mov_b32_e32 v10, 03329; GFX900-NEXT:    v_mov_b32_e32 v4, v63330; GFX900-NEXT:    v_mov_b32_e32 v5, v73331; GFX900-NEXT:    v_mov_b32_e32 v8, v63332; GFX900-NEXT:    v_mov_b32_e32 v9, v73333; GFX900-NEXT:    ;;#ASMSTART3334; GFX900-NEXT:    ; def v[0:3]3335; GFX900-NEXT:    ;;#ASMEND3336; GFX900-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17] offset:163337; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17]3338; GFX900-NEXT:    s_waitcnt vmcnt(0)3339; GFX900-NEXT:    s_setpc_b64 s[30:31]3340;3341; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_1_3:3342; GFX90A:       ; %bb.0:3343; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3344; GFX90A-NEXT:    ;;#ASMSTART3345; GFX90A-NEXT:    ; def v[4:7]3346; GFX90A-NEXT:    ;;#ASMEND3347; GFX90A-NEXT:    v_mov_b32_e32 v10, 03348; GFX90A-NEXT:    v_mov_b32_e32 v4, v63349; GFX90A-NEXT:    v_mov_b32_e32 v5, v73350; GFX90A-NEXT:    v_mov_b32_e32 v8, v63351; GFX90A-NEXT:    v_mov_b32_e32 v9, v73352; GFX90A-NEXT:    ;;#ASMSTART3353; GFX90A-NEXT:    ; def v[0:3]3354; GFX90A-NEXT:    ;;#ASMEND3355; GFX90A-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17] offset:163356; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17]3357; GFX90A-NEXT:    s_waitcnt vmcnt(0)3358; GFX90A-NEXT:    s_setpc_b64 s[30:31]3359;3360; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_3_1_3:3361; GFX942:       ; %bb.0:3362; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3363; GFX942-NEXT:    ;;#ASMSTART3364; GFX942-NEXT:    ; def v[4:7]3365; GFX942-NEXT:    ;;#ASMEND3366; GFX942-NEXT:    v_mov_b32_e32 v10, 03367; GFX942-NEXT:    v_mov_b32_e32 v4, v63368; GFX942-NEXT:    v_mov_b32_e32 v5, v73369; GFX942-NEXT:    v_mov_b32_e32 v8, v63370; GFX942-NEXT:    v_mov_b32_e32 v9, v73371; GFX942-NEXT:    ;;#ASMSTART3372; GFX942-NEXT:    ; def v[0:3]3373; GFX942-NEXT:    ;;#ASMEND3374; GFX942-NEXT:    global_store_dwordx4 v10, v[2:5], s[0:1] offset:163375; GFX942-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1]3376; GFX942-NEXT:    s_waitcnt vmcnt(0)3377; GFX942-NEXT:    s_setpc_b64 s[30:31]3378  %vec0 = call <2 x ptr> asm "; def $0", "=v"()3379  %vec1 = call <2 x ptr> asm "; def $0", "=v"()3380  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 3>3381  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 323382  ret void3383}3384 3385define void @v_shuffle_v4p0_v2p0__3_3_2_3(ptr addrspace(1) inreg %ptr) {3386; GFX900-LABEL: v_shuffle_v4p0_v2p0__3_3_2_3:3387; GFX900:       ; %bb.0:3388; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3389; GFX900-NEXT:    v_mov_b32_e32 v6, 03390; GFX900-NEXT:    ;;#ASMSTART3391; GFX900-NEXT:    ; def v[0:3]3392; GFX900-NEXT:    ;;#ASMEND3393; GFX900-NEXT:    v_mov_b32_e32 v4, v23394; GFX900-NEXT:    v_mov_b32_e32 v5, v33395; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17] offset:163396; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]3397; GFX900-NEXT:    s_waitcnt vmcnt(0)3398; GFX900-NEXT:    s_setpc_b64 s[30:31]3399;3400; GFX90A-LABEL: v_shuffle_v4p0_v2p0__3_3_2_3:3401; GFX90A:       ; %bb.0:3402; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3403; GFX90A-NEXT:    v_mov_b32_e32 v6, 03404; GFX90A-NEXT:    ;;#ASMSTART3405; GFX90A-NEXT:    ; def v[0:3]3406; GFX90A-NEXT:    ;;#ASMEND3407; GFX90A-NEXT:    v_mov_b32_e32 v4, v23408; GFX90A-NEXT:    v_mov_b32_e32 v5, v33409; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17] offset:163410; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]3411; GFX90A-NEXT:    s_waitcnt vmcnt(0)3412; GFX90A-NEXT:    s_setpc_b64 s[30:31]3413;3414; GFX942-LABEL: v_shuffle_v4p0_v2p0__3_3_2_3:3415; GFX942:       ; %bb.0:3416; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3417; GFX942-NEXT:    v_mov_b32_e32 v6, 03418; GFX942-NEXT:    ;;#ASMSTART3419; GFX942-NEXT:    ; def v[0:3]3420; GFX942-NEXT:    ;;#ASMEND3421; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1] offset:163422; GFX942-NEXT:    v_mov_b32_e32 v4, v23423; GFX942-NEXT:    v_mov_b32_e32 v5, v33424; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]3425; GFX942-NEXT:    s_waitcnt vmcnt(0)3426; GFX942-NEXT:    s_setpc_b64 s[30:31]3427  %vec0 = call <2 x ptr> asm "; def $0", "=v"()3428  %vec1 = call <2 x ptr> asm "; def $0", "=v"()3429  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 3>3430  store <4 x ptr> %shuf, ptr addrspace(1) %ptr, align 323431  ret void3432}3433 3434define void @s_shuffle_v4p0_v2p0__u_u_u_u() {3435; GFX9-LABEL: s_shuffle_v4p0_v2p0__u_u_u_u:3436; GFX9:       ; %bb.0:3437; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3438; GFX9-NEXT:    ;;#ASMSTART3439; GFX9-NEXT:    ; use s[8:15]3440; GFX9-NEXT:    ;;#ASMEND3441; GFX9-NEXT:    s_setpc_b64 s[30:31]3442  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3443  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> poison3444  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)3445  ret void3446}3447 3448define void @s_shuffle_v4p0_v2p0__0_u_u_u() {3449; GFX900-LABEL: s_shuffle_v4p0_v2p0__0_u_u_u:3450; GFX900:       ; %bb.0:3451; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3452; GFX900-NEXT:    ;;#ASMSTART3453; GFX900-NEXT:    ; def s[8:11]3454; GFX900-NEXT:    ;;#ASMEND3455; GFX900-NEXT:    ;;#ASMSTART3456; GFX900-NEXT:    ; use s[8:15]3457; GFX900-NEXT:    ;;#ASMEND3458; GFX900-NEXT:    s_setpc_b64 s[30:31]3459;3460; GFX90A-LABEL: s_shuffle_v4p0_v2p0__0_u_u_u:3461; GFX90A:       ; %bb.0:3462; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3463; GFX90A-NEXT:    ;;#ASMSTART3464; GFX90A-NEXT:    ; def s[8:11]3465; GFX90A-NEXT:    ;;#ASMEND3466; GFX90A-NEXT:    ;;#ASMSTART3467; GFX90A-NEXT:    ; use s[8:15]3468; GFX90A-NEXT:    ;;#ASMEND3469; GFX90A-NEXT:    s_setpc_b64 s[30:31]3470;3471; GFX942-LABEL: s_shuffle_v4p0_v2p0__0_u_u_u:3472; GFX942:       ; %bb.0:3473; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3474; GFX942-NEXT:    ;;#ASMSTART3475; GFX942-NEXT:    ; def s[8:11]3476; GFX942-NEXT:    ;;#ASMEND3477; GFX942-NEXT:    s_nop 03478; GFX942-NEXT:    ;;#ASMSTART3479; GFX942-NEXT:    ; use s[8:15]3480; GFX942-NEXT:    ;;#ASMEND3481; GFX942-NEXT:    s_setpc_b64 s[30:31]3482  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3483  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>3484  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)3485  ret void3486}3487 3488define void @s_shuffle_v4p0_v2p0__1_u_u_u() {3489; GFX900-LABEL: s_shuffle_v4p0_v2p0__1_u_u_u:3490; GFX900:       ; %bb.0:3491; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3492; GFX900-NEXT:    ;;#ASMSTART3493; GFX900-NEXT:    ; def s[4:7]3494; GFX900-NEXT:    ;;#ASMEND3495; GFX900-NEXT:    s_mov_b32 s8, s63496; GFX900-NEXT:    s_mov_b32 s9, s73497; GFX900-NEXT:    ;;#ASMSTART3498; GFX900-NEXT:    ; use s[8:15]3499; GFX900-NEXT:    ;;#ASMEND3500; GFX900-NEXT:    s_setpc_b64 s[30:31]3501;3502; GFX90A-LABEL: s_shuffle_v4p0_v2p0__1_u_u_u:3503; GFX90A:       ; %bb.0:3504; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3505; GFX90A-NEXT:    ;;#ASMSTART3506; GFX90A-NEXT:    ; def s[4:7]3507; GFX90A-NEXT:    ;;#ASMEND3508; GFX90A-NEXT:    s_mov_b32 s8, s63509; GFX90A-NEXT:    s_mov_b32 s9, s73510; GFX90A-NEXT:    ;;#ASMSTART3511; GFX90A-NEXT:    ; use s[8:15]3512; GFX90A-NEXT:    ;;#ASMEND3513; GFX90A-NEXT:    s_setpc_b64 s[30:31]3514;3515; GFX942-LABEL: s_shuffle_v4p0_v2p0__1_u_u_u:3516; GFX942:       ; %bb.0:3517; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3518; GFX942-NEXT:    ;;#ASMSTART3519; GFX942-NEXT:    ; def s[0:3]3520; GFX942-NEXT:    ;;#ASMEND3521; GFX942-NEXT:    s_mov_b32 s8, s23522; GFX942-NEXT:    s_mov_b32 s9, s33523; GFX942-NEXT:    ;;#ASMSTART3524; GFX942-NEXT:    ; use s[8:15]3525; GFX942-NEXT:    ;;#ASMEND3526; GFX942-NEXT:    s_setpc_b64 s[30:31]3527  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3528  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>3529  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)3530  ret void3531}3532 3533define void @s_shuffle_v4p0_v2p0__2_u_u_u() {3534; GFX9-LABEL: s_shuffle_v4p0_v2p0__2_u_u_u:3535; GFX9:       ; %bb.0:3536; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3537; GFX9-NEXT:    ;;#ASMSTART3538; GFX9-NEXT:    ; use s[8:15]3539; GFX9-NEXT:    ;;#ASMEND3540; GFX9-NEXT:    s_setpc_b64 s[30:31]3541  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3542  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison>3543  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)3544  ret void3545}3546 3547define void @s_shuffle_v4p0_v2p0__3_u_u_u() {3548; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_u_u_u:3549; GFX900:       ; %bb.0:3550; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3551; GFX900-NEXT:    ;;#ASMSTART3552; GFX900-NEXT:    ; def s[4:7]3553; GFX900-NEXT:    ;;#ASMEND3554; GFX900-NEXT:    s_mov_b32 s8, s63555; GFX900-NEXT:    s_mov_b32 s9, s73556; GFX900-NEXT:    ;;#ASMSTART3557; GFX900-NEXT:    ; use s[8:15]3558; GFX900-NEXT:    ;;#ASMEND3559; GFX900-NEXT:    s_setpc_b64 s[30:31]3560;3561; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_u_u_u:3562; GFX90A:       ; %bb.0:3563; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3564; GFX90A-NEXT:    ;;#ASMSTART3565; GFX90A-NEXT:    ; def s[4:7]3566; GFX90A-NEXT:    ;;#ASMEND3567; GFX90A-NEXT:    s_mov_b32 s8, s63568; GFX90A-NEXT:    s_mov_b32 s9, s73569; GFX90A-NEXT:    ;;#ASMSTART3570; GFX90A-NEXT:    ; use s[8:15]3571; GFX90A-NEXT:    ;;#ASMEND3572; GFX90A-NEXT:    s_setpc_b64 s[30:31]3573;3574; GFX942-LABEL: s_shuffle_v4p0_v2p0__3_u_u_u:3575; GFX942:       ; %bb.0:3576; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3577; GFX942-NEXT:    ;;#ASMSTART3578; GFX942-NEXT:    ; def s[0:3]3579; GFX942-NEXT:    ;;#ASMEND3580; GFX942-NEXT:    s_mov_b32 s8, s23581; GFX942-NEXT:    s_mov_b32 s9, s33582; GFX942-NEXT:    ;;#ASMSTART3583; GFX942-NEXT:    ; use s[8:15]3584; GFX942-NEXT:    ;;#ASMEND3585; GFX942-NEXT:    s_setpc_b64 s[30:31]3586  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3587  %vec1 = call <2 x ptr> asm "; def $0", "=s"()3588  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison>3589  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)3590  ret void3591}3592 3593define void @s_shuffle_v4p0_v2p0__3_0_u_u() {3594; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_0_u_u:3595; GFX900:       ; %bb.0:3596; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3597; GFX900-NEXT:    ;;#ASMSTART3598; GFX900-NEXT:    ; def s[8:11]3599; GFX900-NEXT:    ;;#ASMEND3600; GFX900-NEXT:    ;;#ASMSTART3601; GFX900-NEXT:    ; def s[4:7]3602; GFX900-NEXT:    ;;#ASMEND3603; GFX900-NEXT:    s_mov_b32 s8, s103604; GFX900-NEXT:    s_mov_b32 s9, s113605; GFX900-NEXT:    s_mov_b32 s10, s43606; GFX900-NEXT:    s_mov_b32 s11, s53607; GFX900-NEXT:    ;;#ASMSTART3608; GFX900-NEXT:    ; use s[8:15]3609; GFX900-NEXT:    ;;#ASMEND3610; GFX900-NEXT:    s_setpc_b64 s[30:31]3611;3612; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_0_u_u:3613; GFX90A:       ; %bb.0:3614; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3615; GFX90A-NEXT:    ;;#ASMSTART3616; GFX90A-NEXT:    ; def s[8:11]3617; GFX90A-NEXT:    ;;#ASMEND3618; GFX90A-NEXT:    ;;#ASMSTART3619; GFX90A-NEXT:    ; def s[4:7]3620; GFX90A-NEXT:    ;;#ASMEND3621; GFX90A-NEXT:    s_mov_b32 s8, s103622; GFX90A-NEXT:    s_mov_b32 s9, s113623; GFX90A-NEXT:    s_mov_b32 s10, s43624; GFX90A-NEXT:    s_mov_b32 s11, s53625; GFX90A-NEXT:    ;;#ASMSTART3626; GFX90A-NEXT:    ; use s[8:15]3627; GFX90A-NEXT:    ;;#ASMEND3628; GFX90A-NEXT:    s_setpc_b64 s[30:31]3629;3630; GFX942-LABEL: s_shuffle_v4p0_v2p0__3_0_u_u:3631; GFX942:       ; %bb.0:3632; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3633; GFX942-NEXT:    ;;#ASMSTART3634; GFX942-NEXT:    ; def s[0:3]3635; GFX942-NEXT:    ;;#ASMEND3636; GFX942-NEXT:    ;;#ASMSTART3637; GFX942-NEXT:    ; def s[4:7]3638; GFX942-NEXT:    ;;#ASMEND3639; GFX942-NEXT:    s_mov_b32 s8, s63640; GFX942-NEXT:    s_mov_b32 s9, s73641; GFX942-NEXT:    s_mov_b32 s10, s03642; GFX942-NEXT:    s_mov_b32 s11, s13643; GFX942-NEXT:    ;;#ASMSTART3644; GFX942-NEXT:    ; use s[8:15]3645; GFX942-NEXT:    ;;#ASMEND3646; GFX942-NEXT:    s_setpc_b64 s[30:31]3647  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3648  %vec1 = call <2 x ptr> asm "; def $0", "=s"()3649  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 0, i32 poison, i32 poison>3650  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)3651  ret void3652}3653 3654define void @s_shuffle_v4p0_v2p0__3_1_u_u() {3655; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_1_u_u:3656; GFX900:       ; %bb.0:3657; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3658; GFX900-NEXT:    ;;#ASMSTART3659; GFX900-NEXT:    ; def s[8:11]3660; GFX900-NEXT:    ;;#ASMEND3661; GFX900-NEXT:    ;;#ASMSTART3662; GFX900-NEXT:    ; def s[4:7]3663; GFX900-NEXT:    ;;#ASMEND3664; GFX900-NEXT:    s_mov_b32 s8, s63665; GFX900-NEXT:    s_mov_b32 s9, s73666; GFX900-NEXT:    ;;#ASMSTART3667; GFX900-NEXT:    ; use s[8:15]3668; GFX900-NEXT:    ;;#ASMEND3669; GFX900-NEXT:    s_setpc_b64 s[30:31]3670;3671; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_1_u_u:3672; GFX90A:       ; %bb.0:3673; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3674; GFX90A-NEXT:    ;;#ASMSTART3675; GFX90A-NEXT:    ; def s[8:11]3676; GFX90A-NEXT:    ;;#ASMEND3677; GFX90A-NEXT:    ;;#ASMSTART3678; GFX90A-NEXT:    ; def s[4:7]3679; GFX90A-NEXT:    ;;#ASMEND3680; GFX90A-NEXT:    s_mov_b32 s8, s63681; GFX90A-NEXT:    s_mov_b32 s9, s73682; GFX90A-NEXT:    ;;#ASMSTART3683; GFX90A-NEXT:    ; use s[8:15]3684; GFX90A-NEXT:    ;;#ASMEND3685; GFX90A-NEXT:    s_setpc_b64 s[30:31]3686;3687; GFX942-LABEL: s_shuffle_v4p0_v2p0__3_1_u_u:3688; GFX942:       ; %bb.0:3689; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3690; GFX942-NEXT:    ;;#ASMSTART3691; GFX942-NEXT:    ; def s[8:11]3692; GFX942-NEXT:    ;;#ASMEND3693; GFX942-NEXT:    ;;#ASMSTART3694; GFX942-NEXT:    ; def s[0:3]3695; GFX942-NEXT:    ;;#ASMEND3696; GFX942-NEXT:    s_mov_b32 s8, s23697; GFX942-NEXT:    s_mov_b32 s9, s33698; GFX942-NEXT:    ;;#ASMSTART3699; GFX942-NEXT:    ; use s[8:15]3700; GFX942-NEXT:    ;;#ASMEND3701; GFX942-NEXT:    s_setpc_b64 s[30:31]3702  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3703  %vec1 = call <2 x ptr> asm "; def $0", "=s"()3704  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 1, i32 poison, i32 poison>3705  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)3706  ret void3707}3708 3709define void @s_shuffle_v4p0_v2p0__3_2_u_u() {3710; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_2_u_u:3711; GFX900:       ; %bb.0:3712; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3713; GFX900-NEXT:    ;;#ASMSTART3714; GFX900-NEXT:    ; def s[4:7]3715; GFX900-NEXT:    ;;#ASMEND3716; GFX900-NEXT:    s_mov_b32 s8, s63717; GFX900-NEXT:    s_mov_b32 s9, s73718; GFX900-NEXT:    s_mov_b32 s10, s43719; GFX900-NEXT:    s_mov_b32 s11, s53720; GFX900-NEXT:    ;;#ASMSTART3721; GFX900-NEXT:    ; use s[8:15]3722; GFX900-NEXT:    ;;#ASMEND3723; GFX900-NEXT:    s_setpc_b64 s[30:31]3724;3725; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_2_u_u:3726; GFX90A:       ; %bb.0:3727; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3728; GFX90A-NEXT:    ;;#ASMSTART3729; GFX90A-NEXT:    ; def s[4:7]3730; GFX90A-NEXT:    ;;#ASMEND3731; GFX90A-NEXT:    s_mov_b32 s8, s63732; GFX90A-NEXT:    s_mov_b32 s9, s73733; GFX90A-NEXT:    s_mov_b32 s10, s43734; GFX90A-NEXT:    s_mov_b32 s11, s53735; GFX90A-NEXT:    ;;#ASMSTART3736; GFX90A-NEXT:    ; use s[8:15]3737; GFX90A-NEXT:    ;;#ASMEND3738; GFX90A-NEXT:    s_setpc_b64 s[30:31]3739;3740; GFX942-LABEL: s_shuffle_v4p0_v2p0__3_2_u_u:3741; GFX942:       ; %bb.0:3742; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3743; GFX942-NEXT:    ;;#ASMSTART3744; GFX942-NEXT:    ; def s[0:3]3745; GFX942-NEXT:    ;;#ASMEND3746; GFX942-NEXT:    s_mov_b32 s8, s23747; GFX942-NEXT:    s_mov_b32 s9, s33748; GFX942-NEXT:    s_mov_b32 s10, s03749; GFX942-NEXT:    s_mov_b32 s11, s13750; GFX942-NEXT:    ;;#ASMSTART3751; GFX942-NEXT:    ; use s[8:15]3752; GFX942-NEXT:    ;;#ASMEND3753; GFX942-NEXT:    s_setpc_b64 s[30:31]3754  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3755  %vec1 = call <2 x ptr> asm "; def $0", "=s"()3756  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 2, i32 poison, i32 poison>3757  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)3758  ret void3759}3760 3761define void @s_shuffle_v4p0_v2p0__3_3_u_u() {3762; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_3_u_u:3763; GFX9:       ; %bb.0:3764; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3765; GFX9-NEXT:    ;;#ASMSTART3766; GFX9-NEXT:    ; def s[8:11]3767; GFX9-NEXT:    ;;#ASMEND3768; GFX9-NEXT:    s_mov_b32 s8, s103769; GFX9-NEXT:    s_mov_b32 s9, s113770; GFX9-NEXT:    ;;#ASMSTART3771; GFX9-NEXT:    ; use s[8:15]3772; GFX9-NEXT:    ;;#ASMEND3773; GFX9-NEXT:    s_setpc_b64 s[30:31]3774  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3775  %vec1 = call <2 x ptr> asm "; def $0", "=s"()3776  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 poison>3777  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)3778  ret void3779}3780 3781define void @s_shuffle_v4p0_v2p0__3_3_0_u() {3782; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_3_0_u:3783; GFX9:       ; %bb.0:3784; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3785; GFX9-NEXT:    ;;#ASMSTART3786; GFX9-NEXT:    ; def s[8:11]3787; GFX9-NEXT:    ;;#ASMEND3788; GFX9-NEXT:    ;;#ASMSTART3789; GFX9-NEXT:    ; def s[12:15]3790; GFX9-NEXT:    ;;#ASMEND3791; GFX9-NEXT:    s_mov_b32 s8, s103792; GFX9-NEXT:    s_mov_b32 s9, s113793; GFX9-NEXT:    ;;#ASMSTART3794; GFX9-NEXT:    ; use s[8:15]3795; GFX9-NEXT:    ;;#ASMEND3796; GFX9-NEXT:    s_setpc_b64 s[30:31]3797  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3798  %vec1 = call <2 x ptr> asm "; def $0", "=s"()3799  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 poison>3800  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)3801  ret void3802}3803 3804define void @s_shuffle_v4p0_v2p0__3_3_1_u() {3805; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_3_1_u:3806; GFX900:       ; %bb.0:3807; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3808; GFX900-NEXT:    ;;#ASMSTART3809; GFX900-NEXT:    ; def s[8:11]3810; GFX900-NEXT:    ;;#ASMEND3811; GFX900-NEXT:    ;;#ASMSTART3812; GFX900-NEXT:    ; def s[4:7]3813; GFX900-NEXT:    ;;#ASMEND3814; GFX900-NEXT:    s_mov_b32 s8, s103815; GFX900-NEXT:    s_mov_b32 s9, s113816; GFX900-NEXT:    s_mov_b32 s12, s63817; GFX900-NEXT:    s_mov_b32 s13, s73818; GFX900-NEXT:    ;;#ASMSTART3819; GFX900-NEXT:    ; use s[8:15]3820; GFX900-NEXT:    ;;#ASMEND3821; GFX900-NEXT:    s_setpc_b64 s[30:31]3822;3823; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_3_1_u:3824; GFX90A:       ; %bb.0:3825; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3826; GFX90A-NEXT:    ;;#ASMSTART3827; GFX90A-NEXT:    ; def s[8:11]3828; GFX90A-NEXT:    ;;#ASMEND3829; GFX90A-NEXT:    ;;#ASMSTART3830; GFX90A-NEXT:    ; def s[4:7]3831; GFX90A-NEXT:    ;;#ASMEND3832; GFX90A-NEXT:    s_mov_b32 s8, s103833; GFX90A-NEXT:    s_mov_b32 s9, s113834; GFX90A-NEXT:    s_mov_b32 s12, s63835; GFX90A-NEXT:    s_mov_b32 s13, s73836; GFX90A-NEXT:    ;;#ASMSTART3837; GFX90A-NEXT:    ; use s[8:15]3838; GFX90A-NEXT:    ;;#ASMEND3839; GFX90A-NEXT:    s_setpc_b64 s[30:31]3840;3841; GFX942-LABEL: s_shuffle_v4p0_v2p0__3_3_1_u:3842; GFX942:       ; %bb.0:3843; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3844; GFX942-NEXT:    ;;#ASMSTART3845; GFX942-NEXT:    ; def s[8:11]3846; GFX942-NEXT:    ;;#ASMEND3847; GFX942-NEXT:    ;;#ASMSTART3848; GFX942-NEXT:    ; def s[0:3]3849; GFX942-NEXT:    ;;#ASMEND3850; GFX942-NEXT:    s_mov_b32 s8, s103851; GFX942-NEXT:    s_mov_b32 s9, s113852; GFX942-NEXT:    s_mov_b32 s12, s23853; GFX942-NEXT:    s_mov_b32 s13, s33854; GFX942-NEXT:    ;;#ASMSTART3855; GFX942-NEXT:    ; use s[8:15]3856; GFX942-NEXT:    ;;#ASMEND3857; GFX942-NEXT:    s_setpc_b64 s[30:31]3858  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3859  %vec1 = call <2 x ptr> asm "; def $0", "=s"()3860  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 poison>3861  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)3862  ret void3863}3864 3865define void @s_shuffle_v4p0_v2p0__3_3_2_u() {3866; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_3_2_u:3867; GFX9:       ; %bb.0:3868; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3869; GFX9-NEXT:    ;;#ASMSTART3870; GFX9-NEXT:    ; def s[12:15]3871; GFX9-NEXT:    ;;#ASMEND3872; GFX9-NEXT:    s_mov_b32 s8, s143873; GFX9-NEXT:    s_mov_b32 s9, s153874; GFX9-NEXT:    s_mov_b32 s10, s143875; GFX9-NEXT:    s_mov_b32 s11, s153876; GFX9-NEXT:    ;;#ASMSTART3877; GFX9-NEXT:    ; use s[8:15]3878; GFX9-NEXT:    ;;#ASMEND3879; GFX9-NEXT:    s_setpc_b64 s[30:31]3880  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3881  %vec1 = call <2 x ptr> asm "; def $0", "=s"()3882  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 poison>3883  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)3884  ret void3885}3886 3887define void @s_shuffle_v4p0_v2p0__3_3_3_u() {3888; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_3_3_u:3889; GFX9:       ; %bb.0:3890; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3891; GFX9-NEXT:    ;;#ASMSTART3892; GFX9-NEXT:    ; def s[8:11]3893; GFX9-NEXT:    ;;#ASMEND3894; GFX9-NEXT:    s_mov_b32 s8, s103895; GFX9-NEXT:    s_mov_b32 s9, s113896; GFX9-NEXT:    s_mov_b32 s12, s103897; GFX9-NEXT:    s_mov_b32 s13, s113898; GFX9-NEXT:    ;;#ASMSTART3899; GFX9-NEXT:    ; use s[8:15]3900; GFX9-NEXT:    ;;#ASMEND3901; GFX9-NEXT:    s_setpc_b64 s[30:31]3902  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3903  %vec1 = call <2 x ptr> asm "; def $0", "=s"()3904  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 poison>3905  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)3906  ret void3907}3908 3909define void @s_shuffle_v4p0_v2p0__3_3_3_0() {3910; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_3_3_0:3911; GFX900:       ; %bb.0:3912; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3913; GFX900-NEXT:    ;;#ASMSTART3914; GFX900-NEXT:    ; def s[8:11]3915; GFX900-NEXT:    ;;#ASMEND3916; GFX900-NEXT:    ;;#ASMSTART3917; GFX900-NEXT:    ; def s[4:7]3918; GFX900-NEXT:    ;;#ASMEND3919; GFX900-NEXT:    s_mov_b32 s8, s103920; GFX900-NEXT:    s_mov_b32 s9, s113921; GFX900-NEXT:    s_mov_b32 s12, s103922; GFX900-NEXT:    s_mov_b32 s13, s113923; GFX900-NEXT:    s_mov_b32 s14, s43924; GFX900-NEXT:    s_mov_b32 s15, s53925; GFX900-NEXT:    ;;#ASMSTART3926; GFX900-NEXT:    ; use s[8:15]3927; GFX900-NEXT:    ;;#ASMEND3928; GFX900-NEXT:    s_setpc_b64 s[30:31]3929;3930; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_3_3_0:3931; GFX90A:       ; %bb.0:3932; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3933; GFX90A-NEXT:    ;;#ASMSTART3934; GFX90A-NEXT:    ; def s[8:11]3935; GFX90A-NEXT:    ;;#ASMEND3936; GFX90A-NEXT:    ;;#ASMSTART3937; GFX90A-NEXT:    ; def s[4:7]3938; GFX90A-NEXT:    ;;#ASMEND3939; GFX90A-NEXT:    s_mov_b32 s8, s103940; GFX90A-NEXT:    s_mov_b32 s9, s113941; GFX90A-NEXT:    s_mov_b32 s12, s103942; GFX90A-NEXT:    s_mov_b32 s13, s113943; GFX90A-NEXT:    s_mov_b32 s14, s43944; GFX90A-NEXT:    s_mov_b32 s15, s53945; GFX90A-NEXT:    ;;#ASMSTART3946; GFX90A-NEXT:    ; use s[8:15]3947; GFX90A-NEXT:    ;;#ASMEND3948; GFX90A-NEXT:    s_setpc_b64 s[30:31]3949;3950; GFX942-LABEL: s_shuffle_v4p0_v2p0__3_3_3_0:3951; GFX942:       ; %bb.0:3952; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3953; GFX942-NEXT:    ;;#ASMSTART3954; GFX942-NEXT:    ; def s[8:11]3955; GFX942-NEXT:    ;;#ASMEND3956; GFX942-NEXT:    ;;#ASMSTART3957; GFX942-NEXT:    ; def s[0:3]3958; GFX942-NEXT:    ;;#ASMEND3959; GFX942-NEXT:    s_mov_b32 s8, s103960; GFX942-NEXT:    s_mov_b32 s9, s113961; GFX942-NEXT:    s_mov_b32 s12, s103962; GFX942-NEXT:    s_mov_b32 s13, s113963; GFX942-NEXT:    s_mov_b32 s14, s03964; GFX942-NEXT:    s_mov_b32 s15, s13965; GFX942-NEXT:    ;;#ASMSTART3966; GFX942-NEXT:    ; use s[8:15]3967; GFX942-NEXT:    ;;#ASMEND3968; GFX942-NEXT:    s_setpc_b64 s[30:31]3969  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3970  %vec1 = call <2 x ptr> asm "; def $0", "=s"()3971  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 0>3972  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)3973  ret void3974}3975 3976define void @s_shuffle_v4p0_v2p0__3_3_3_1() {3977; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_3_3_1:3978; GFX9:       ; %bb.0:3979; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3980; GFX9-NEXT:    ;;#ASMSTART3981; GFX9-NEXT:    ; def s[12:15]3982; GFX9-NEXT:    ;;#ASMEND3983; GFX9-NEXT:    ;;#ASMSTART3984; GFX9-NEXT:    ; def s[8:11]3985; GFX9-NEXT:    ;;#ASMEND3986; GFX9-NEXT:    s_mov_b32 s8, s103987; GFX9-NEXT:    s_mov_b32 s9, s113988; GFX9-NEXT:    s_mov_b32 s12, s103989; GFX9-NEXT:    s_mov_b32 s13, s113990; GFX9-NEXT:    ;;#ASMSTART3991; GFX9-NEXT:    ; use s[8:15]3992; GFX9-NEXT:    ;;#ASMEND3993; GFX9-NEXT:    s_setpc_b64 s[30:31]3994  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3995  %vec1 = call <2 x ptr> asm "; def $0", "=s"()3996  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 1>3997  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)3998  ret void3999}4000 4001define void @s_shuffle_v4p0_v2p0__3_3_3_2() {4002; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_3_3_2:4003; GFX900:       ; %bb.0:4004; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4005; GFX900-NEXT:    ;;#ASMSTART4006; GFX900-NEXT:    ; def s[4:7]4007; GFX900-NEXT:    ;;#ASMEND4008; GFX900-NEXT:    s_mov_b32 s8, s64009; GFX900-NEXT:    s_mov_b32 s9, s74010; GFX900-NEXT:    s_mov_b32 s10, s64011; GFX900-NEXT:    s_mov_b32 s11, s74012; GFX900-NEXT:    s_mov_b32 s12, s64013; GFX900-NEXT:    s_mov_b32 s13, s74014; GFX900-NEXT:    s_mov_b32 s14, s44015; GFX900-NEXT:    s_mov_b32 s15, s54016; GFX900-NEXT:    ;;#ASMSTART4017; GFX900-NEXT:    ; use s[8:15]4018; GFX900-NEXT:    ;;#ASMEND4019; GFX900-NEXT:    s_setpc_b64 s[30:31]4020;4021; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_3_3_2:4022; GFX90A:       ; %bb.0:4023; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4024; GFX90A-NEXT:    ;;#ASMSTART4025; GFX90A-NEXT:    ; def s[4:7]4026; GFX90A-NEXT:    ;;#ASMEND4027; GFX90A-NEXT:    s_mov_b32 s8, s64028; GFX90A-NEXT:    s_mov_b32 s9, s74029; GFX90A-NEXT:    s_mov_b32 s10, s64030; GFX90A-NEXT:    s_mov_b32 s11, s74031; GFX90A-NEXT:    s_mov_b32 s12, s64032; GFX90A-NEXT:    s_mov_b32 s13, s74033; GFX90A-NEXT:    s_mov_b32 s14, s44034; GFX90A-NEXT:    s_mov_b32 s15, s54035; GFX90A-NEXT:    ;;#ASMSTART4036; GFX90A-NEXT:    ; use s[8:15]4037; GFX90A-NEXT:    ;;#ASMEND4038; GFX90A-NEXT:    s_setpc_b64 s[30:31]4039;4040; GFX942-LABEL: s_shuffle_v4p0_v2p0__3_3_3_2:4041; GFX942:       ; %bb.0:4042; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4043; GFX942-NEXT:    ;;#ASMSTART4044; GFX942-NEXT:    ; def s[0:3]4045; GFX942-NEXT:    ;;#ASMEND4046; GFX942-NEXT:    s_mov_b32 s8, s24047; GFX942-NEXT:    s_mov_b32 s9, s34048; GFX942-NEXT:    s_mov_b32 s10, s24049; GFX942-NEXT:    s_mov_b32 s11, s34050; GFX942-NEXT:    s_mov_b32 s12, s24051; GFX942-NEXT:    s_mov_b32 s13, s34052; GFX942-NEXT:    s_mov_b32 s14, s04053; GFX942-NEXT:    s_mov_b32 s15, s14054; GFX942-NEXT:    ;;#ASMSTART4055; GFX942-NEXT:    ; use s[8:15]4056; GFX942-NEXT:    ;;#ASMEND4057; GFX942-NEXT:    s_setpc_b64 s[30:31]4058  %vec0 = call <2 x ptr> asm "; def $0", "=s"()4059  %vec1 = call <2 x ptr> asm "; def $0", "=s"()4060  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 2>4061  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)4062  ret void4063}4064 4065define void @s_shuffle_v4p0_v2p0__3_3_3_3() {4066; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_3_3_3:4067; GFX9:       ; %bb.0:4068; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4069; GFX9-NEXT:    ;;#ASMSTART4070; GFX9-NEXT:    ; def s[8:11]4071; GFX9-NEXT:    ;;#ASMEND4072; GFX9-NEXT:    s_mov_b32 s8, s104073; GFX9-NEXT:    s_mov_b32 s9, s114074; GFX9-NEXT:    s_mov_b32 s12, s104075; GFX9-NEXT:    s_mov_b32 s13, s114076; GFX9-NEXT:    s_mov_b32 s14, s104077; GFX9-NEXT:    s_mov_b32 s15, s114078; GFX9-NEXT:    ;;#ASMSTART4079; GFX9-NEXT:    ; use s[8:15]4080; GFX9-NEXT:    ;;#ASMEND4081; GFX9-NEXT:    s_setpc_b64 s[30:31]4082  %vec0 = call <2 x ptr> asm "; def $0", "=s"()4083  %vec1 = call <2 x ptr> asm "; def $0", "=s"()4084  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 3>4085  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)4086  ret void4087}4088 4089define void @s_shuffle_v4p0_v2p0__u_0_0_0() {4090; GFX9-LABEL: s_shuffle_v4p0_v2p0__u_0_0_0:4091; GFX9:       ; %bb.0:4092; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4093; GFX9-NEXT:    ;;#ASMSTART4094; GFX9-NEXT:    ; def s[12:15]4095; GFX9-NEXT:    ;;#ASMEND4096; GFX9-NEXT:    s_mov_b32 s10, s124097; GFX9-NEXT:    s_mov_b32 s11, s134098; GFX9-NEXT:    s_mov_b32 s14, s124099; GFX9-NEXT:    s_mov_b32 s15, s134100; GFX9-NEXT:    ;;#ASMSTART4101; GFX9-NEXT:    ; use s[8:15]4102; GFX9-NEXT:    ;;#ASMEND4103; GFX9-NEXT:    s_setpc_b64 s[30:31]4104  %vec0 = call <2 x ptr> asm "; def $0", "=s"()4105  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0>4106  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)4107  ret void4108}4109 4110define void @s_shuffle_v4p0_v2p0__0_0_0_0() {4111; GFX9-LABEL: s_shuffle_v4p0_v2p0__0_0_0_0:4112; GFX9:       ; %bb.0:4113; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4114; GFX9-NEXT:    ;;#ASMSTART4115; GFX9-NEXT:    ; def s[8:11]4116; GFX9-NEXT:    ;;#ASMEND4117; GFX9-NEXT:    s_mov_b32 s10, s84118; GFX9-NEXT:    s_mov_b32 s11, s94119; GFX9-NEXT:    s_mov_b32 s12, s84120; GFX9-NEXT:    s_mov_b32 s13, s94121; GFX9-NEXT:    s_mov_b32 s14, s84122; GFX9-NEXT:    s_mov_b32 s15, s94123; GFX9-NEXT:    ;;#ASMSTART4124; GFX9-NEXT:    ; use s[8:15]4125; GFX9-NEXT:    ;;#ASMEND4126; GFX9-NEXT:    s_setpc_b64 s[30:31]4127  %vec0 = call <2 x ptr> asm "; def $0", "=s"()4128  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> zeroinitializer4129  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)4130  ret void4131}4132 4133define void @s_shuffle_v4p0_v2p0__1_0_0_0() {4134; GFX9-LABEL: s_shuffle_v4p0_v2p0__1_0_0_0:4135; GFX9:       ; %bb.0:4136; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4137; GFX9-NEXT:    ;;#ASMSTART4138; GFX9-NEXT:    ; def s[12:15]4139; GFX9-NEXT:    ;;#ASMEND4140; GFX9-NEXT:    s_mov_b32 s8, s144141; GFX9-NEXT:    s_mov_b32 s9, s154142; GFX9-NEXT:    s_mov_b32 s10, s124143; GFX9-NEXT:    s_mov_b32 s11, s134144; GFX9-NEXT:    s_mov_b32 s14, s124145; GFX9-NEXT:    s_mov_b32 s15, s134146; GFX9-NEXT:    ;;#ASMSTART4147; GFX9-NEXT:    ; use s[8:15]4148; GFX9-NEXT:    ;;#ASMEND4149; GFX9-NEXT:    s_setpc_b64 s[30:31]4150  %vec0 = call <2 x ptr> asm "; def $0", "=s"()4151  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>4152  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)4153  ret void4154}4155 4156define void @s_shuffle_v4p0_v2p0__2_0_0_0() {4157; GFX9-LABEL: s_shuffle_v4p0_v2p0__2_0_0_0:4158; GFX9:       ; %bb.0:4159; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4160; GFX9-NEXT:    ;;#ASMSTART4161; GFX9-NEXT:    ; def s[12:15]4162; GFX9-NEXT:    ;;#ASMEND4163; GFX9-NEXT:    s_mov_b32 s10, s124164; GFX9-NEXT:    s_mov_b32 s11, s134165; GFX9-NEXT:    s_mov_b32 s14, s124166; GFX9-NEXT:    s_mov_b32 s15, s134167; GFX9-NEXT:    ;;#ASMSTART4168; GFX9-NEXT:    ; use s[8:15]4169; GFX9-NEXT:    ;;#ASMEND4170; GFX9-NEXT:    s_setpc_b64 s[30:31]4171  %vec0 = call <2 x ptr> asm "; def $0", "=s"()4172  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0>4173  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)4174  ret void4175}4176 4177define void @s_shuffle_v4p0_v2p0__3_0_0_0() {4178; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_0_0_0:4179; GFX900:       ; %bb.0:4180; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4181; GFX900-NEXT:    ;;#ASMSTART4182; GFX900-NEXT:    ; def s[12:15]4183; GFX900-NEXT:    ;;#ASMEND4184; GFX900-NEXT:    ;;#ASMSTART4185; GFX900-NEXT:    ; def s[4:7]4186; GFX900-NEXT:    ;;#ASMEND4187; GFX900-NEXT:    s_mov_b32 s8, s64188; GFX900-NEXT:    s_mov_b32 s9, s74189; GFX900-NEXT:    s_mov_b32 s10, s124190; GFX900-NEXT:    s_mov_b32 s11, s134191; GFX900-NEXT:    s_mov_b32 s14, s124192; GFX900-NEXT:    s_mov_b32 s15, s134193; GFX900-NEXT:    ;;#ASMSTART4194; GFX900-NEXT:    ; use s[8:15]4195; GFX900-NEXT:    ;;#ASMEND4196; GFX900-NEXT:    s_setpc_b64 s[30:31]4197;4198; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_0_0_0:4199; GFX90A:       ; %bb.0:4200; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4201; GFX90A-NEXT:    ;;#ASMSTART4202; GFX90A-NEXT:    ; def s[12:15]4203; GFX90A-NEXT:    ;;#ASMEND4204; GFX90A-NEXT:    ;;#ASMSTART4205; GFX90A-NEXT:    ; def s[4:7]4206; GFX90A-NEXT:    ;;#ASMEND4207; GFX90A-NEXT:    s_mov_b32 s8, s64208; GFX90A-NEXT:    s_mov_b32 s9, s74209; GFX90A-NEXT:    s_mov_b32 s10, s124210; GFX90A-NEXT:    s_mov_b32 s11, s134211; GFX90A-NEXT:    s_mov_b32 s14, s124212; GFX90A-NEXT:    s_mov_b32 s15, s134213; GFX90A-NEXT:    ;;#ASMSTART4214; GFX90A-NEXT:    ; use s[8:15]4215; GFX90A-NEXT:    ;;#ASMEND4216; GFX90A-NEXT:    s_setpc_b64 s[30:31]4217;4218; GFX942-LABEL: s_shuffle_v4p0_v2p0__3_0_0_0:4219; GFX942:       ; %bb.0:4220; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4221; GFX942-NEXT:    ;;#ASMSTART4222; GFX942-NEXT:    ; def s[12:15]4223; GFX942-NEXT:    ;;#ASMEND4224; GFX942-NEXT:    ;;#ASMSTART4225; GFX942-NEXT:    ; def s[0:3]4226; GFX942-NEXT:    ;;#ASMEND4227; GFX942-NEXT:    s_mov_b32 s8, s24228; GFX942-NEXT:    s_mov_b32 s9, s34229; GFX942-NEXT:    s_mov_b32 s10, s124230; GFX942-NEXT:    s_mov_b32 s11, s134231; GFX942-NEXT:    s_mov_b32 s14, s124232; GFX942-NEXT:    s_mov_b32 s15, s134233; GFX942-NEXT:    ;;#ASMSTART4234; GFX942-NEXT:    ; use s[8:15]4235; GFX942-NEXT:    ;;#ASMEND4236; GFX942-NEXT:    s_setpc_b64 s[30:31]4237  %vec0 = call <2 x ptr> asm "; def $0", "=s"()4238  %vec1 = call <2 x ptr> asm "; def $0", "=s"()4239  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 0, i32 0, i32 0>4240  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)4241  ret void4242}4243 4244define void @s_shuffle_v4p0_v2p0__3_u_0_0() {4245; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_u_0_0:4246; GFX900:       ; %bb.0:4247; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4248; GFX900-NEXT:    ;;#ASMSTART4249; GFX900-NEXT:    ; def s[12:15]4250; GFX900-NEXT:    ;;#ASMEND4251; GFX900-NEXT:    ;;#ASMSTART4252; GFX900-NEXT:    ; def s[4:7]4253; GFX900-NEXT:    ;;#ASMEND4254; GFX900-NEXT:    s_mov_b32 s8, s64255; GFX900-NEXT:    s_mov_b32 s9, s74256; GFX900-NEXT:    s_mov_b32 s14, s124257; GFX900-NEXT:    s_mov_b32 s15, s134258; GFX900-NEXT:    ;;#ASMSTART4259; GFX900-NEXT:    ; use s[8:15]4260; GFX900-NEXT:    ;;#ASMEND4261; GFX900-NEXT:    s_setpc_b64 s[30:31]4262;4263; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_u_0_0:4264; GFX90A:       ; %bb.0:4265; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4266; GFX90A-NEXT:    ;;#ASMSTART4267; GFX90A-NEXT:    ; def s[12:15]4268; GFX90A-NEXT:    ;;#ASMEND4269; GFX90A-NEXT:    ;;#ASMSTART4270; GFX90A-NEXT:    ; def s[4:7]4271; GFX90A-NEXT:    ;;#ASMEND4272; GFX90A-NEXT:    s_mov_b32 s8, s64273; GFX90A-NEXT:    s_mov_b32 s9, s74274; GFX90A-NEXT:    s_mov_b32 s14, s124275; GFX90A-NEXT:    s_mov_b32 s15, s134276; GFX90A-NEXT:    ;;#ASMSTART4277; GFX90A-NEXT:    ; use s[8:15]4278; GFX90A-NEXT:    ;;#ASMEND4279; GFX90A-NEXT:    s_setpc_b64 s[30:31]4280;4281; GFX942-LABEL: s_shuffle_v4p0_v2p0__3_u_0_0:4282; GFX942:       ; %bb.0:4283; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4284; GFX942-NEXT:    ;;#ASMSTART4285; GFX942-NEXT:    ; def s[12:15]4286; GFX942-NEXT:    ;;#ASMEND4287; GFX942-NEXT:    ;;#ASMSTART4288; GFX942-NEXT:    ; def s[0:3]4289; GFX942-NEXT:    ;;#ASMEND4290; GFX942-NEXT:    s_mov_b32 s8, s24291; GFX942-NEXT:    s_mov_b32 s9, s34292; GFX942-NEXT:    s_mov_b32 s14, s124293; GFX942-NEXT:    s_mov_b32 s15, s134294; GFX942-NEXT:    ;;#ASMSTART4295; GFX942-NEXT:    ; use s[8:15]4296; GFX942-NEXT:    ;;#ASMEND4297; GFX942-NEXT:    s_setpc_b64 s[30:31]4298  %vec0 = call <2 x ptr> asm "; def $0", "=s"()4299  %vec1 = call <2 x ptr> asm "; def $0", "=s"()4300  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 poison, i32 0, i32 0>4301  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)4302  ret void4303}4304 4305define void @s_shuffle_v4p0_v2p0__3_1_0_0() {4306; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_1_0_0:4307; GFX900:       ; %bb.0:4308; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4309; GFX900-NEXT:    ;;#ASMSTART4310; GFX900-NEXT:    ; def s[12:15]4311; GFX900-NEXT:    ;;#ASMEND4312; GFX900-NEXT:    ;;#ASMSTART4313; GFX900-NEXT:    ; def s[4:7]4314; GFX900-NEXT:    ;;#ASMEND4315; GFX900-NEXT:    s_mov_b32 s8, s64316; GFX900-NEXT:    s_mov_b32 s9, s74317; GFX900-NEXT:    s_mov_b32 s10, s144318; GFX900-NEXT:    s_mov_b32 s11, s154319; GFX900-NEXT:    s_mov_b32 s14, s124320; GFX900-NEXT:    s_mov_b32 s15, s134321; GFX900-NEXT:    ;;#ASMSTART4322; GFX900-NEXT:    ; use s[8:15]4323; GFX900-NEXT:    ;;#ASMEND4324; GFX900-NEXT:    s_setpc_b64 s[30:31]4325;4326; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_1_0_0:4327; GFX90A:       ; %bb.0:4328; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4329; GFX90A-NEXT:    ;;#ASMSTART4330; GFX90A-NEXT:    ; def s[12:15]4331; GFX90A-NEXT:    ;;#ASMEND4332; GFX90A-NEXT:    ;;#ASMSTART4333; GFX90A-NEXT:    ; def s[4:7]4334; GFX90A-NEXT:    ;;#ASMEND4335; GFX90A-NEXT:    s_mov_b32 s8, s64336; GFX90A-NEXT:    s_mov_b32 s9, s74337; GFX90A-NEXT:    s_mov_b32 s10, s144338; GFX90A-NEXT:    s_mov_b32 s11, s154339; GFX90A-NEXT:    s_mov_b32 s14, s124340; GFX90A-NEXT:    s_mov_b32 s15, s134341; GFX90A-NEXT:    ;;#ASMSTART4342; GFX90A-NEXT:    ; use s[8:15]4343; GFX90A-NEXT:    ;;#ASMEND4344; GFX90A-NEXT:    s_setpc_b64 s[30:31]4345;4346; GFX942-LABEL: s_shuffle_v4p0_v2p0__3_1_0_0:4347; GFX942:       ; %bb.0:4348; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4349; GFX942-NEXT:    ;;#ASMSTART4350; GFX942-NEXT:    ; def s[12:15]4351; GFX942-NEXT:    ;;#ASMEND4352; GFX942-NEXT:    ;;#ASMSTART4353; GFX942-NEXT:    ; def s[0:3]4354; GFX942-NEXT:    ;;#ASMEND4355; GFX942-NEXT:    s_mov_b32 s8, s24356; GFX942-NEXT:    s_mov_b32 s9, s34357; GFX942-NEXT:    s_mov_b32 s10, s144358; GFX942-NEXT:    s_mov_b32 s11, s154359; GFX942-NEXT:    s_mov_b32 s14, s124360; GFX942-NEXT:    s_mov_b32 s15, s134361; GFX942-NEXT:    ;;#ASMSTART4362; GFX942-NEXT:    ; use s[8:15]4363; GFX942-NEXT:    ;;#ASMEND4364; GFX942-NEXT:    s_setpc_b64 s[30:31]4365  %vec0 = call <2 x ptr> asm "; def $0", "=s"()4366  %vec1 = call <2 x ptr> asm "; def $0", "=s"()4367  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 1, i32 0, i32 0>4368  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)4369  ret void4370}4371 4372define void @s_shuffle_v4p0_v2p0__3_2_0_0() {4373; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_2_0_0:4374; GFX900:       ; %bb.0:4375; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4376; GFX900-NEXT:    ;;#ASMSTART4377; GFX900-NEXT:    ; def s[12:15]4378; GFX900-NEXT:    ;;#ASMEND4379; GFX900-NEXT:    ;;#ASMSTART4380; GFX900-NEXT:    ; def s[4:7]4381; GFX900-NEXT:    ;;#ASMEND4382; GFX900-NEXT:    s_mov_b32 s8, s64383; GFX900-NEXT:    s_mov_b32 s9, s74384; GFX900-NEXT:    s_mov_b32 s10, s44385; GFX900-NEXT:    s_mov_b32 s11, s54386; GFX900-NEXT:    s_mov_b32 s14, s124387; GFX900-NEXT:    s_mov_b32 s15, s134388; GFX900-NEXT:    ;;#ASMSTART4389; GFX900-NEXT:    ; use s[8:15]4390; GFX900-NEXT:    ;;#ASMEND4391; GFX900-NEXT:    s_setpc_b64 s[30:31]4392;4393; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_2_0_0:4394; GFX90A:       ; %bb.0:4395; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4396; GFX90A-NEXT:    ;;#ASMSTART4397; GFX90A-NEXT:    ; def s[12:15]4398; GFX90A-NEXT:    ;;#ASMEND4399; GFX90A-NEXT:    ;;#ASMSTART4400; GFX90A-NEXT:    ; def s[4:7]4401; GFX90A-NEXT:    ;;#ASMEND4402; GFX90A-NEXT:    s_mov_b32 s8, s64403; GFX90A-NEXT:    s_mov_b32 s9, s74404; GFX90A-NEXT:    s_mov_b32 s10, s44405; GFX90A-NEXT:    s_mov_b32 s11, s54406; GFX90A-NEXT:    s_mov_b32 s14, s124407; GFX90A-NEXT:    s_mov_b32 s15, s134408; GFX90A-NEXT:    ;;#ASMSTART4409; GFX90A-NEXT:    ; use s[8:15]4410; GFX90A-NEXT:    ;;#ASMEND4411; GFX90A-NEXT:    s_setpc_b64 s[30:31]4412;4413; GFX942-LABEL: s_shuffle_v4p0_v2p0__3_2_0_0:4414; GFX942:       ; %bb.0:4415; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4416; GFX942-NEXT:    ;;#ASMSTART4417; GFX942-NEXT:    ; def s[12:15]4418; GFX942-NEXT:    ;;#ASMEND4419; GFX942-NEXT:    ;;#ASMSTART4420; GFX942-NEXT:    ; def s[0:3]4421; GFX942-NEXT:    ;;#ASMEND4422; GFX942-NEXT:    s_mov_b32 s8, s24423; GFX942-NEXT:    s_mov_b32 s9, s34424; GFX942-NEXT:    s_mov_b32 s10, s04425; GFX942-NEXT:    s_mov_b32 s11, s14426; GFX942-NEXT:    s_mov_b32 s14, s124427; GFX942-NEXT:    s_mov_b32 s15, s134428; GFX942-NEXT:    ;;#ASMSTART4429; GFX942-NEXT:    ; use s[8:15]4430; GFX942-NEXT:    ;;#ASMEND4431; GFX942-NEXT:    s_setpc_b64 s[30:31]4432  %vec0 = call <2 x ptr> asm "; def $0", "=s"()4433  %vec1 = call <2 x ptr> asm "; def $0", "=s"()4434  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 2, i32 0, i32 0>4435  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)4436  ret void4437}4438 4439define void @s_shuffle_v4p0_v2p0__3_3_0_0() {4440; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_3_0_0:4441; GFX9:       ; %bb.0:4442; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4443; GFX9-NEXT:    ;;#ASMSTART4444; GFX9-NEXT:    ; def s[12:15]4445; GFX9-NEXT:    ;;#ASMEND4446; GFX9-NEXT:    ;;#ASMSTART4447; GFX9-NEXT:    ; def s[8:11]4448; GFX9-NEXT:    ;;#ASMEND4449; GFX9-NEXT:    s_mov_b32 s8, s104450; GFX9-NEXT:    s_mov_b32 s9, s114451; GFX9-NEXT:    s_mov_b32 s14, s124452; GFX9-NEXT:    s_mov_b32 s15, s134453; GFX9-NEXT:    ;;#ASMSTART4454; GFX9-NEXT:    ; use s[8:15]4455; GFX9-NEXT:    ;;#ASMEND4456; GFX9-NEXT:    s_setpc_b64 s[30:31]4457  %vec0 = call <2 x ptr> asm "; def $0", "=s"()4458  %vec1 = call <2 x ptr> asm "; def $0", "=s"()4459  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 0>4460  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)4461  ret void4462}4463 4464define void @s_shuffle_v4p0_v2p0__3_3_u_0() {4465; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_3_u_0:4466; GFX900:       ; %bb.0:4467; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4468; GFX900-NEXT:    ;;#ASMSTART4469; GFX900-NEXT:    ; def s[8:11]4470; GFX900-NEXT:    ;;#ASMEND4471; GFX900-NEXT:    ;;#ASMSTART4472; GFX900-NEXT:    ; def s[4:7]4473; GFX900-NEXT:    ;;#ASMEND4474; GFX900-NEXT:    s_mov_b32 s8, s104475; GFX900-NEXT:    s_mov_b32 s9, s114476; GFX900-NEXT:    s_mov_b32 s14, s44477; GFX900-NEXT:    s_mov_b32 s15, s54478; GFX900-NEXT:    ;;#ASMSTART4479; GFX900-NEXT:    ; use s[8:15]4480; GFX900-NEXT:    ;;#ASMEND4481; GFX900-NEXT:    s_setpc_b64 s[30:31]4482;4483; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_3_u_0:4484; GFX90A:       ; %bb.0:4485; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4486; GFX90A-NEXT:    ;;#ASMSTART4487; GFX90A-NEXT:    ; def s[8:11]4488; GFX90A-NEXT:    ;;#ASMEND4489; GFX90A-NEXT:    ;;#ASMSTART4490; GFX90A-NEXT:    ; def s[4:7]4491; GFX90A-NEXT:    ;;#ASMEND4492; GFX90A-NEXT:    s_mov_b32 s8, s104493; GFX90A-NEXT:    s_mov_b32 s9, s114494; GFX90A-NEXT:    s_mov_b32 s14, s44495; GFX90A-NEXT:    s_mov_b32 s15, s54496; GFX90A-NEXT:    ;;#ASMSTART4497; GFX90A-NEXT:    ; use s[8:15]4498; GFX90A-NEXT:    ;;#ASMEND4499; GFX90A-NEXT:    s_setpc_b64 s[30:31]4500;4501; GFX942-LABEL: s_shuffle_v4p0_v2p0__3_3_u_0:4502; GFX942:       ; %bb.0:4503; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4504; GFX942-NEXT:    ;;#ASMSTART4505; GFX942-NEXT:    ; def s[8:11]4506; GFX942-NEXT:    ;;#ASMEND4507; GFX942-NEXT:    ;;#ASMSTART4508; GFX942-NEXT:    ; def s[0:3]4509; GFX942-NEXT:    ;;#ASMEND4510; GFX942-NEXT:    s_mov_b32 s8, s104511; GFX942-NEXT:    s_mov_b32 s9, s114512; GFX942-NEXT:    s_mov_b32 s14, s04513; GFX942-NEXT:    s_mov_b32 s15, s14514; GFX942-NEXT:    ;;#ASMSTART4515; GFX942-NEXT:    ; use s[8:15]4516; GFX942-NEXT:    ;;#ASMEND4517; GFX942-NEXT:    s_setpc_b64 s[30:31]4518  %vec0 = call <2 x ptr> asm "; def $0", "=s"()4519  %vec1 = call <2 x ptr> asm "; def $0", "=s"()4520  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 0>4521  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)4522  ret void4523}4524 4525define void @s_shuffle_v4p0_v2p0__3_3_1_0() {4526; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_3_1_0:4527; GFX900:       ; %bb.0:4528; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4529; GFX900-NEXT:    ;;#ASMSTART4530; GFX900-NEXT:    ; def s[8:11]4531; GFX900-NEXT:    ;;#ASMEND4532; GFX900-NEXT:    ;;#ASMSTART4533; GFX900-NEXT:    ; def s[4:7]4534; GFX900-NEXT:    ;;#ASMEND4535; GFX900-NEXT:    s_mov_b32 s8, s104536; GFX900-NEXT:    s_mov_b32 s9, s114537; GFX900-NEXT:    s_mov_b32 s12, s64538; GFX900-NEXT:    s_mov_b32 s13, s74539; GFX900-NEXT:    s_mov_b32 s14, s44540; GFX900-NEXT:    s_mov_b32 s15, s54541; GFX900-NEXT:    ;;#ASMSTART4542; GFX900-NEXT:    ; use s[8:15]4543; GFX900-NEXT:    ;;#ASMEND4544; GFX900-NEXT:    s_setpc_b64 s[30:31]4545;4546; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_3_1_0:4547; GFX90A:       ; %bb.0:4548; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4549; GFX90A-NEXT:    ;;#ASMSTART4550; GFX90A-NEXT:    ; def s[8:11]4551; GFX90A-NEXT:    ;;#ASMEND4552; GFX90A-NEXT:    ;;#ASMSTART4553; GFX90A-NEXT:    ; def s[4:7]4554; GFX90A-NEXT:    ;;#ASMEND4555; GFX90A-NEXT:    s_mov_b32 s8, s104556; GFX90A-NEXT:    s_mov_b32 s9, s114557; GFX90A-NEXT:    s_mov_b32 s12, s64558; GFX90A-NEXT:    s_mov_b32 s13, s74559; GFX90A-NEXT:    s_mov_b32 s14, s44560; GFX90A-NEXT:    s_mov_b32 s15, s54561; GFX90A-NEXT:    ;;#ASMSTART4562; GFX90A-NEXT:    ; use s[8:15]4563; GFX90A-NEXT:    ;;#ASMEND4564; GFX90A-NEXT:    s_setpc_b64 s[30:31]4565;4566; GFX942-LABEL: s_shuffle_v4p0_v2p0__3_3_1_0:4567; GFX942:       ; %bb.0:4568; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4569; GFX942-NEXT:    ;;#ASMSTART4570; GFX942-NEXT:    ; def s[8:11]4571; GFX942-NEXT:    ;;#ASMEND4572; GFX942-NEXT:    ;;#ASMSTART4573; GFX942-NEXT:    ; def s[0:3]4574; GFX942-NEXT:    ;;#ASMEND4575; GFX942-NEXT:    s_mov_b32 s8, s104576; GFX942-NEXT:    s_mov_b32 s9, s114577; GFX942-NEXT:    s_mov_b32 s12, s24578; GFX942-NEXT:    s_mov_b32 s13, s34579; GFX942-NEXT:    s_mov_b32 s14, s04580; GFX942-NEXT:    s_mov_b32 s15, s14581; GFX942-NEXT:    ;;#ASMSTART4582; GFX942-NEXT:    ; use s[8:15]4583; GFX942-NEXT:    ;;#ASMEND4584; GFX942-NEXT:    s_setpc_b64 s[30:31]4585  %vec0 = call <2 x ptr> asm "; def $0", "=s"()4586  %vec1 = call <2 x ptr> asm "; def $0", "=s"()4587  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 0>4588  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)4589  ret void4590}4591 4592define void @s_shuffle_v4p0_v2p0__3_3_2_0() {4593; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_3_2_0:4594; GFX900:       ; %bb.0:4595; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4596; GFX900-NEXT:    ;;#ASMSTART4597; GFX900-NEXT:    ; def s[12:15]4598; GFX900-NEXT:    ;;#ASMEND4599; GFX900-NEXT:    ;;#ASMSTART4600; GFX900-NEXT:    ; def s[4:7]4601; GFX900-NEXT:    ;;#ASMEND4602; GFX900-NEXT:    s_mov_b32 s8, s144603; GFX900-NEXT:    s_mov_b32 s9, s154604; GFX900-NEXT:    s_mov_b32 s10, s144605; GFX900-NEXT:    s_mov_b32 s11, s154606; GFX900-NEXT:    s_mov_b32 s14, s44607; GFX900-NEXT:    s_mov_b32 s15, s54608; GFX900-NEXT:    ;;#ASMSTART4609; GFX900-NEXT:    ; use s[8:15]4610; GFX900-NEXT:    ;;#ASMEND4611; GFX900-NEXT:    s_setpc_b64 s[30:31]4612;4613; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_3_2_0:4614; GFX90A:       ; %bb.0:4615; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4616; GFX90A-NEXT:    ;;#ASMSTART4617; GFX90A-NEXT:    ; def s[12:15]4618; GFX90A-NEXT:    ;;#ASMEND4619; GFX90A-NEXT:    ;;#ASMSTART4620; GFX90A-NEXT:    ; def s[4:7]4621; GFX90A-NEXT:    ;;#ASMEND4622; GFX90A-NEXT:    s_mov_b32 s8, s144623; GFX90A-NEXT:    s_mov_b32 s9, s154624; GFX90A-NEXT:    s_mov_b32 s10, s144625; GFX90A-NEXT:    s_mov_b32 s11, s154626; GFX90A-NEXT:    s_mov_b32 s14, s44627; GFX90A-NEXT:    s_mov_b32 s15, s54628; GFX90A-NEXT:    ;;#ASMSTART4629; GFX90A-NEXT:    ; use s[8:15]4630; GFX90A-NEXT:    ;;#ASMEND4631; GFX90A-NEXT:    s_setpc_b64 s[30:31]4632;4633; GFX942-LABEL: s_shuffle_v4p0_v2p0__3_3_2_0:4634; GFX942:       ; %bb.0:4635; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4636; GFX942-NEXT:    ;;#ASMSTART4637; GFX942-NEXT:    ; def s[12:15]4638; GFX942-NEXT:    ;;#ASMEND4639; GFX942-NEXT:    ;;#ASMSTART4640; GFX942-NEXT:    ; def s[0:3]4641; GFX942-NEXT:    ;;#ASMEND4642; GFX942-NEXT:    s_mov_b32 s8, s144643; GFX942-NEXT:    s_mov_b32 s9, s154644; GFX942-NEXT:    s_mov_b32 s10, s144645; GFX942-NEXT:    s_mov_b32 s11, s154646; GFX942-NEXT:    s_mov_b32 s14, s04647; GFX942-NEXT:    s_mov_b32 s15, s14648; GFX942-NEXT:    ;;#ASMSTART4649; GFX942-NEXT:    ; use s[8:15]4650; GFX942-NEXT:    ;;#ASMEND4651; GFX942-NEXT:    s_setpc_b64 s[30:31]4652  %vec0 = call <2 x ptr> asm "; def $0", "=s"()4653  %vec1 = call <2 x ptr> asm "; def $0", "=s"()4654  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 0>4655  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)4656  ret void4657}4658 4659define void @s_shuffle_v4p0_v2p0__u_1_1_1() {4660; GFX9-LABEL: s_shuffle_v4p0_v2p0__u_1_1_1:4661; GFX9:       ; %bb.0:4662; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4663; GFX9-NEXT:    ;;#ASMSTART4664; GFX9-NEXT:    ; def s[8:11]4665; GFX9-NEXT:    ;;#ASMEND4666; GFX9-NEXT:    s_mov_b32 s12, s104667; GFX9-NEXT:    s_mov_b32 s13, s114668; GFX9-NEXT:    s_mov_b32 s14, s104669; GFX9-NEXT:    s_mov_b32 s15, s114670; GFX9-NEXT:    ;;#ASMSTART4671; GFX9-NEXT:    ; use s[8:15]4672; GFX9-NEXT:    ;;#ASMEND4673; GFX9-NEXT:    s_setpc_b64 s[30:31]4674  %vec0 = call <2 x ptr> asm "; def $0", "=s"()4675  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1>4676  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)4677  ret void4678}4679 4680define void @s_shuffle_v4p0_v2p0__0_1_1_1() {4681; GFX9-LABEL: s_shuffle_v4p0_v2p0__0_1_1_1:4682; GFX9:       ; %bb.0:4683; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4684; GFX9-NEXT:    ;;#ASMSTART4685; GFX9-NEXT:    ; def s[8:11]4686; GFX9-NEXT:    ;;#ASMEND4687; GFX9-NEXT:    s_mov_b32 s12, s104688; GFX9-NEXT:    s_mov_b32 s13, s114689; GFX9-NEXT:    s_mov_b32 s14, s104690; GFX9-NEXT:    s_mov_b32 s15, s114691; GFX9-NEXT:    ;;#ASMSTART4692; GFX9-NEXT:    ; use s[8:15]4693; GFX9-NEXT:    ;;#ASMEND4694; GFX9-NEXT:    s_setpc_b64 s[30:31]4695  %vec0 = call <2 x ptr> asm "; def $0", "=s"()4696  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1>4697  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)4698  ret void4699}4700 4701define void @s_shuffle_v4p0_v2p0__1_1_1_1() {4702; GFX9-LABEL: s_shuffle_v4p0_v2p0__1_1_1_1:4703; GFX9:       ; %bb.0:4704; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4705; GFX9-NEXT:    ;;#ASMSTART4706; GFX9-NEXT:    ; def s[8:11]4707; GFX9-NEXT:    ;;#ASMEND4708; GFX9-NEXT:    s_mov_b32 s8, s104709; GFX9-NEXT:    s_mov_b32 s9, s114710; GFX9-NEXT:    s_mov_b32 s12, s104711; GFX9-NEXT:    s_mov_b32 s13, s114712; GFX9-NEXT:    s_mov_b32 s14, s104713; GFX9-NEXT:    s_mov_b32 s15, s114714; GFX9-NEXT:    ;;#ASMSTART4715; GFX9-NEXT:    ; use s[8:15]4716; GFX9-NEXT:    ;;#ASMEND4717; GFX9-NEXT:    s_setpc_b64 s[30:31]4718  %vec0 = call <2 x ptr> asm "; def $0", "=s"()4719  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>4720  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)4721  ret void4722}4723 4724define void @s_shuffle_v4p0_v2p0__2_1_1_1() {4725; GFX9-LABEL: s_shuffle_v4p0_v2p0__2_1_1_1:4726; GFX9:       ; %bb.0:4727; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4728; GFX9-NEXT:    ;;#ASMSTART4729; GFX9-NEXT:    ; def s[8:11]4730; GFX9-NEXT:    ;;#ASMEND4731; GFX9-NEXT:    s_mov_b32 s12, s104732; GFX9-NEXT:    s_mov_b32 s13, s114733; GFX9-NEXT:    s_mov_b32 s14, s104734; GFX9-NEXT:    s_mov_b32 s15, s114735; GFX9-NEXT:    ;;#ASMSTART4736; GFX9-NEXT:    ; use s[8:15]4737; GFX9-NEXT:    ;;#ASMEND4738; GFX9-NEXT:    s_setpc_b64 s[30:31]4739  %vec0 = call <2 x ptr> asm "; def $0", "=s"()4740  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1>4741  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)4742  ret void4743}4744 4745define void @s_shuffle_v4p0_v2p0__3_1_1_1() {4746; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_1_1_1:4747; GFX900:       ; %bb.0:4748; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4749; GFX900-NEXT:    ;;#ASMSTART4750; GFX900-NEXT:    ; def s[8:11]4751; GFX900-NEXT:    ;;#ASMEND4752; GFX900-NEXT:    ;;#ASMSTART4753; GFX900-NEXT:    ; def s[4:7]4754; GFX900-NEXT:    ;;#ASMEND4755; GFX900-NEXT:    s_mov_b32 s8, s64756; GFX900-NEXT:    s_mov_b32 s9, s74757; GFX900-NEXT:    s_mov_b32 s12, s104758; GFX900-NEXT:    s_mov_b32 s13, s114759; GFX900-NEXT:    s_mov_b32 s14, s104760; GFX900-NEXT:    s_mov_b32 s15, s114761; GFX900-NEXT:    ;;#ASMSTART4762; GFX900-NEXT:    ; use s[8:15]4763; GFX900-NEXT:    ;;#ASMEND4764; GFX900-NEXT:    s_setpc_b64 s[30:31]4765;4766; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_1_1_1:4767; GFX90A:       ; %bb.0:4768; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4769; GFX90A-NEXT:    ;;#ASMSTART4770; GFX90A-NEXT:    ; def s[8:11]4771; GFX90A-NEXT:    ;;#ASMEND4772; GFX90A-NEXT:    ;;#ASMSTART4773; GFX90A-NEXT:    ; def s[4:7]4774; GFX90A-NEXT:    ;;#ASMEND4775; GFX90A-NEXT:    s_mov_b32 s8, s64776; GFX90A-NEXT:    s_mov_b32 s9, s74777; GFX90A-NEXT:    s_mov_b32 s12, s104778; GFX90A-NEXT:    s_mov_b32 s13, s114779; GFX90A-NEXT:    s_mov_b32 s14, s104780; GFX90A-NEXT:    s_mov_b32 s15, s114781; GFX90A-NEXT:    ;;#ASMSTART4782; GFX90A-NEXT:    ; use s[8:15]4783; GFX90A-NEXT:    ;;#ASMEND4784; GFX90A-NEXT:    s_setpc_b64 s[30:31]4785;4786; GFX942-LABEL: s_shuffle_v4p0_v2p0__3_1_1_1:4787; GFX942:       ; %bb.0:4788; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4789; GFX942-NEXT:    ;;#ASMSTART4790; GFX942-NEXT:    ; def s[8:11]4791; GFX942-NEXT:    ;;#ASMEND4792; GFX942-NEXT:    ;;#ASMSTART4793; GFX942-NEXT:    ; def s[0:3]4794; GFX942-NEXT:    ;;#ASMEND4795; GFX942-NEXT:    s_mov_b32 s8, s24796; GFX942-NEXT:    s_mov_b32 s9, s34797; GFX942-NEXT:    s_mov_b32 s12, s104798; GFX942-NEXT:    s_mov_b32 s13, s114799; GFX942-NEXT:    s_mov_b32 s14, s104800; GFX942-NEXT:    s_mov_b32 s15, s114801; GFX942-NEXT:    ;;#ASMSTART4802; GFX942-NEXT:    ; use s[8:15]4803; GFX942-NEXT:    ;;#ASMEND4804; GFX942-NEXT:    s_setpc_b64 s[30:31]4805  %vec0 = call <2 x ptr> asm "; def $0", "=s"()4806  %vec1 = call <2 x ptr> asm "; def $0", "=s"()4807  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 1, i32 1, i32 1>4808  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)4809  ret void4810}4811 4812define void @s_shuffle_v4p0_v2p0__3_u_1_1() {4813; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_u_1_1:4814; GFX900:       ; %bb.0:4815; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4816; GFX900-NEXT:    ;;#ASMSTART4817; GFX900-NEXT:    ; def s[12:15]4818; GFX900-NEXT:    ;;#ASMEND4819; GFX900-NEXT:    ;;#ASMSTART4820; GFX900-NEXT:    ; def s[4:7]4821; GFX900-NEXT:    ;;#ASMEND4822; GFX900-NEXT:    s_mov_b32 s8, s64823; GFX900-NEXT:    s_mov_b32 s9, s74824; GFX900-NEXT:    s_mov_b32 s12, s144825; GFX900-NEXT:    s_mov_b32 s13, s154826; GFX900-NEXT:    ;;#ASMSTART4827; GFX900-NEXT:    ; use s[8:15]4828; GFX900-NEXT:    ;;#ASMEND4829; GFX900-NEXT:    s_setpc_b64 s[30:31]4830;4831; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_u_1_1:4832; GFX90A:       ; %bb.0:4833; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4834; GFX90A-NEXT:    ;;#ASMSTART4835; GFX90A-NEXT:    ; def s[12:15]4836; GFX90A-NEXT:    ;;#ASMEND4837; GFX90A-NEXT:    ;;#ASMSTART4838; GFX90A-NEXT:    ; def s[4:7]4839; GFX90A-NEXT:    ;;#ASMEND4840; GFX90A-NEXT:    s_mov_b32 s8, s64841; GFX90A-NEXT:    s_mov_b32 s9, s74842; GFX90A-NEXT:    s_mov_b32 s12, s144843; GFX90A-NEXT:    s_mov_b32 s13, s154844; GFX90A-NEXT:    ;;#ASMSTART4845; GFX90A-NEXT:    ; use s[8:15]4846; GFX90A-NEXT:    ;;#ASMEND4847; GFX90A-NEXT:    s_setpc_b64 s[30:31]4848;4849; GFX942-LABEL: s_shuffle_v4p0_v2p0__3_u_1_1:4850; GFX942:       ; %bb.0:4851; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4852; GFX942-NEXT:    ;;#ASMSTART4853; GFX942-NEXT:    ; def s[12:15]4854; GFX942-NEXT:    ;;#ASMEND4855; GFX942-NEXT:    ;;#ASMSTART4856; GFX942-NEXT:    ; def s[0:3]4857; GFX942-NEXT:    ;;#ASMEND4858; GFX942-NEXT:    s_mov_b32 s8, s24859; GFX942-NEXT:    s_mov_b32 s9, s34860; GFX942-NEXT:    s_mov_b32 s12, s144861; GFX942-NEXT:    s_mov_b32 s13, s154862; GFX942-NEXT:    ;;#ASMSTART4863; GFX942-NEXT:    ; use s[8:15]4864; GFX942-NEXT:    ;;#ASMEND4865; GFX942-NEXT:    s_setpc_b64 s[30:31]4866  %vec0 = call <2 x ptr> asm "; def $0", "=s"()4867  %vec1 = call <2 x ptr> asm "; def $0", "=s"()4868  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 poison, i32 1, i32 1>4869  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)4870  ret void4871}4872 4873define void @s_shuffle_v4p0_v2p0__3_0_1_1() {4874; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_0_1_1:4875; GFX900:       ; %bb.0:4876; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4877; GFX900-NEXT:    ;;#ASMSTART4878; GFX900-NEXT:    ; def s[12:15]4879; GFX900-NEXT:    ;;#ASMEND4880; GFX900-NEXT:    ;;#ASMSTART4881; GFX900-NEXT:    ; def s[4:7]4882; GFX900-NEXT:    ;;#ASMEND4883; GFX900-NEXT:    s_mov_b32 s8, s64884; GFX900-NEXT:    s_mov_b32 s9, s74885; GFX900-NEXT:    s_mov_b32 s10, s124886; GFX900-NEXT:    s_mov_b32 s11, s134887; GFX900-NEXT:    s_mov_b32 s12, s144888; GFX900-NEXT:    s_mov_b32 s13, s154889; GFX900-NEXT:    ;;#ASMSTART4890; GFX900-NEXT:    ; use s[8:15]4891; GFX900-NEXT:    ;;#ASMEND4892; GFX900-NEXT:    s_setpc_b64 s[30:31]4893;4894; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_0_1_1:4895; GFX90A:       ; %bb.0:4896; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4897; GFX90A-NEXT:    ;;#ASMSTART4898; GFX90A-NEXT:    ; def s[12:15]4899; GFX90A-NEXT:    ;;#ASMEND4900; GFX90A-NEXT:    ;;#ASMSTART4901; GFX90A-NEXT:    ; def s[4:7]4902; GFX90A-NEXT:    ;;#ASMEND4903; GFX90A-NEXT:    s_mov_b32 s8, s64904; GFX90A-NEXT:    s_mov_b32 s9, s74905; GFX90A-NEXT:    s_mov_b32 s10, s124906; GFX90A-NEXT:    s_mov_b32 s11, s134907; GFX90A-NEXT:    s_mov_b32 s12, s144908; GFX90A-NEXT:    s_mov_b32 s13, s154909; GFX90A-NEXT:    ;;#ASMSTART4910; GFX90A-NEXT:    ; use s[8:15]4911; GFX90A-NEXT:    ;;#ASMEND4912; GFX90A-NEXT:    s_setpc_b64 s[30:31]4913;4914; GFX942-LABEL: s_shuffle_v4p0_v2p0__3_0_1_1:4915; GFX942:       ; %bb.0:4916; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4917; GFX942-NEXT:    ;;#ASMSTART4918; GFX942-NEXT:    ; def s[12:15]4919; GFX942-NEXT:    ;;#ASMEND4920; GFX942-NEXT:    ;;#ASMSTART4921; GFX942-NEXT:    ; def s[0:3]4922; GFX942-NEXT:    ;;#ASMEND4923; GFX942-NEXT:    s_mov_b32 s8, s24924; GFX942-NEXT:    s_mov_b32 s9, s34925; GFX942-NEXT:    s_mov_b32 s10, s124926; GFX942-NEXT:    s_mov_b32 s11, s134927; GFX942-NEXT:    s_mov_b32 s12, s144928; GFX942-NEXT:    s_mov_b32 s13, s154929; GFX942-NEXT:    ;;#ASMSTART4930; GFX942-NEXT:    ; use s[8:15]4931; GFX942-NEXT:    ;;#ASMEND4932; GFX942-NEXT:    s_setpc_b64 s[30:31]4933  %vec0 = call <2 x ptr> asm "; def $0", "=s"()4934  %vec1 = call <2 x ptr> asm "; def $0", "=s"()4935  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 0, i32 1, i32 1>4936  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)4937  ret void4938}4939 4940define void @s_shuffle_v4p0_v2p0__3_2_1_1() {4941; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_2_1_1:4942; GFX900:       ; %bb.0:4943; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4944; GFX900-NEXT:    ;;#ASMSTART4945; GFX900-NEXT:    ; def s[12:15]4946; GFX900-NEXT:    ;;#ASMEND4947; GFX900-NEXT:    ;;#ASMSTART4948; GFX900-NEXT:    ; def s[4:7]4949; GFX900-NEXT:    ;;#ASMEND4950; GFX900-NEXT:    s_mov_b32 s8, s64951; GFX900-NEXT:    s_mov_b32 s9, s74952; GFX900-NEXT:    s_mov_b32 s10, s44953; GFX900-NEXT:    s_mov_b32 s11, s54954; GFX900-NEXT:    s_mov_b32 s12, s144955; GFX900-NEXT:    s_mov_b32 s13, s154956; GFX900-NEXT:    ;;#ASMSTART4957; GFX900-NEXT:    ; use s[8:15]4958; GFX900-NEXT:    ;;#ASMEND4959; GFX900-NEXT:    s_setpc_b64 s[30:31]4960;4961; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_2_1_1:4962; GFX90A:       ; %bb.0:4963; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4964; GFX90A-NEXT:    ;;#ASMSTART4965; GFX90A-NEXT:    ; def s[12:15]4966; GFX90A-NEXT:    ;;#ASMEND4967; GFX90A-NEXT:    ;;#ASMSTART4968; GFX90A-NEXT:    ; def s[4:7]4969; GFX90A-NEXT:    ;;#ASMEND4970; GFX90A-NEXT:    s_mov_b32 s8, s64971; GFX90A-NEXT:    s_mov_b32 s9, s74972; GFX90A-NEXT:    s_mov_b32 s10, s44973; GFX90A-NEXT:    s_mov_b32 s11, s54974; GFX90A-NEXT:    s_mov_b32 s12, s144975; GFX90A-NEXT:    s_mov_b32 s13, s154976; GFX90A-NEXT:    ;;#ASMSTART4977; GFX90A-NEXT:    ; use s[8:15]4978; GFX90A-NEXT:    ;;#ASMEND4979; GFX90A-NEXT:    s_setpc_b64 s[30:31]4980;4981; GFX942-LABEL: s_shuffle_v4p0_v2p0__3_2_1_1:4982; GFX942:       ; %bb.0:4983; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4984; GFX942-NEXT:    ;;#ASMSTART4985; GFX942-NEXT:    ; def s[12:15]4986; GFX942-NEXT:    ;;#ASMEND4987; GFX942-NEXT:    ;;#ASMSTART4988; GFX942-NEXT:    ; def s[0:3]4989; GFX942-NEXT:    ;;#ASMEND4990; GFX942-NEXT:    s_mov_b32 s8, s24991; GFX942-NEXT:    s_mov_b32 s9, s34992; GFX942-NEXT:    s_mov_b32 s10, s04993; GFX942-NEXT:    s_mov_b32 s11, s14994; GFX942-NEXT:    s_mov_b32 s12, s144995; GFX942-NEXT:    s_mov_b32 s13, s154996; GFX942-NEXT:    ;;#ASMSTART4997; GFX942-NEXT:    ; use s[8:15]4998; GFX942-NEXT:    ;;#ASMEND4999; GFX942-NEXT:    s_setpc_b64 s[30:31]5000  %vec0 = call <2 x ptr> asm "; def $0", "=s"()5001  %vec1 = call <2 x ptr> asm "; def $0", "=s"()5002  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 2, i32 1, i32 1>5003  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)5004  ret void5005}5006 5007define void @s_shuffle_v4p0_v2p0__3_3_1_1() {5008; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_3_1_1:5009; GFX9:       ; %bb.0:5010; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5011; GFX9-NEXT:    ;;#ASMSTART5012; GFX9-NEXT:    ; def s[12:15]5013; GFX9-NEXT:    ;;#ASMEND5014; GFX9-NEXT:    ;;#ASMSTART5015; GFX9-NEXT:    ; def s[8:11]5016; GFX9-NEXT:    ;;#ASMEND5017; GFX9-NEXT:    s_mov_b32 s8, s105018; GFX9-NEXT:    s_mov_b32 s9, s115019; GFX9-NEXT:    s_mov_b32 s12, s145020; GFX9-NEXT:    s_mov_b32 s13, s155021; GFX9-NEXT:    ;;#ASMSTART5022; GFX9-NEXT:    ; use s[8:15]5023; GFX9-NEXT:    ;;#ASMEND5024; GFX9-NEXT:    s_setpc_b64 s[30:31]5025  %vec0 = call <2 x ptr> asm "; def $0", "=s"()5026  %vec1 = call <2 x ptr> asm "; def $0", "=s"()5027  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 1>5028  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)5029  ret void5030}5031 5032define void @s_shuffle_v4p0_v2p0__3_3_u_1() {5033; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_3_u_1:5034; GFX9:       ; %bb.0:5035; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5036; GFX9-NEXT:    ;;#ASMSTART5037; GFX9-NEXT:    ; def s[8:11]5038; GFX9-NEXT:    ;;#ASMEND5039; GFX9-NEXT:    ;;#ASMSTART5040; GFX9-NEXT:    ; def s[12:15]5041; GFX9-NEXT:    ;;#ASMEND5042; GFX9-NEXT:    s_mov_b32 s8, s105043; GFX9-NEXT:    s_mov_b32 s9, s115044; GFX9-NEXT:    ;;#ASMSTART5045; GFX9-NEXT:    ; use s[8:15]5046; GFX9-NEXT:    ;;#ASMEND5047; GFX9-NEXT:    s_setpc_b64 s[30:31]5048  %vec0 = call <2 x ptr> asm "; def $0", "=s"()5049  %vec1 = call <2 x ptr> asm "; def $0", "=s"()5050  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 1>5051  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)5052  ret void5053}5054 5055define void @s_shuffle_v4p0_v2p0__3_3_0_1() {5056; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_3_0_1:5057; GFX9:       ; %bb.0:5058; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5059; GFX9-NEXT:    ;;#ASMSTART5060; GFX9-NEXT:    ; def s[8:11]5061; GFX9-NEXT:    ;;#ASMEND5062; GFX9-NEXT:    ;;#ASMSTART5063; GFX9-NEXT:    ; def s[12:15]5064; GFX9-NEXT:    ;;#ASMEND5065; GFX9-NEXT:    s_mov_b32 s8, s105066; GFX9-NEXT:    s_mov_b32 s9, s115067; GFX9-NEXT:    ;;#ASMSTART5068; GFX9-NEXT:    ; use s[8:15]5069; GFX9-NEXT:    ;;#ASMEND5070; GFX9-NEXT:    s_setpc_b64 s[30:31]5071  %vec0 = call <2 x ptr> asm "; def $0", "=s"()5072  %vec1 = call <2 x ptr> asm "; def $0", "=s"()5073  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 1>5074  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)5075  ret void5076}5077 5078define void @s_shuffle_v4p0_v2p0__3_3_2_1() {5079; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_3_2_1:5080; GFX900:       ; %bb.0:5081; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5082; GFX900-NEXT:    ;;#ASMSTART5083; GFX900-NEXT:    ; def s[12:15]5084; GFX900-NEXT:    ;;#ASMEND5085; GFX900-NEXT:    ;;#ASMSTART5086; GFX900-NEXT:    ; def s[4:7]5087; GFX900-NEXT:    ;;#ASMEND5088; GFX900-NEXT:    s_mov_b32 s8, s145089; GFX900-NEXT:    s_mov_b32 s9, s155090; GFX900-NEXT:    s_mov_b32 s10, s145091; GFX900-NEXT:    s_mov_b32 s11, s155092; GFX900-NEXT:    s_mov_b32 s14, s65093; GFX900-NEXT:    s_mov_b32 s15, s75094; GFX900-NEXT:    ;;#ASMSTART5095; GFX900-NEXT:    ; use s[8:15]5096; GFX900-NEXT:    ;;#ASMEND5097; GFX900-NEXT:    s_setpc_b64 s[30:31]5098;5099; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_3_2_1:5100; GFX90A:       ; %bb.0:5101; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5102; GFX90A-NEXT:    ;;#ASMSTART5103; GFX90A-NEXT:    ; def s[12:15]5104; GFX90A-NEXT:    ;;#ASMEND5105; GFX90A-NEXT:    ;;#ASMSTART5106; GFX90A-NEXT:    ; def s[4:7]5107; GFX90A-NEXT:    ;;#ASMEND5108; GFX90A-NEXT:    s_mov_b32 s8, s145109; GFX90A-NEXT:    s_mov_b32 s9, s155110; GFX90A-NEXT:    s_mov_b32 s10, s145111; GFX90A-NEXT:    s_mov_b32 s11, s155112; GFX90A-NEXT:    s_mov_b32 s14, s65113; GFX90A-NEXT:    s_mov_b32 s15, s75114; GFX90A-NEXT:    ;;#ASMSTART5115; GFX90A-NEXT:    ; use s[8:15]5116; GFX90A-NEXT:    ;;#ASMEND5117; GFX90A-NEXT:    s_setpc_b64 s[30:31]5118;5119; GFX942-LABEL: s_shuffle_v4p0_v2p0__3_3_2_1:5120; GFX942:       ; %bb.0:5121; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5122; GFX942-NEXT:    ;;#ASMSTART5123; GFX942-NEXT:    ; def s[12:15]5124; GFX942-NEXT:    ;;#ASMEND5125; GFX942-NEXT:    ;;#ASMSTART5126; GFX942-NEXT:    ; def s[0:3]5127; GFX942-NEXT:    ;;#ASMEND5128; GFX942-NEXT:    s_mov_b32 s8, s145129; GFX942-NEXT:    s_mov_b32 s9, s155130; GFX942-NEXT:    s_mov_b32 s10, s145131; GFX942-NEXT:    s_mov_b32 s11, s155132; GFX942-NEXT:    s_mov_b32 s14, s25133; GFX942-NEXT:    s_mov_b32 s15, s35134; GFX942-NEXT:    ;;#ASMSTART5135; GFX942-NEXT:    ; use s[8:15]5136; GFX942-NEXT:    ;;#ASMEND5137; GFX942-NEXT:    s_setpc_b64 s[30:31]5138  %vec0 = call <2 x ptr> asm "; def $0", "=s"()5139  %vec1 = call <2 x ptr> asm "; def $0", "=s"()5140  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 1>5141  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)5142  ret void5143}5144 5145define void @s_shuffle_v4p0_v2p0__u_2_2_2() {5146; GFX9-LABEL: s_shuffle_v4p0_v2p0__u_2_2_2:5147; GFX9:       ; %bb.0:5148; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5149; GFX9-NEXT:    ;;#ASMSTART5150; GFX9-NEXT:    ; use s[8:15]5151; GFX9-NEXT:    ;;#ASMEND5152; GFX9-NEXT:    s_setpc_b64 s[30:31]5153  %vec0 = call <2 x ptr> asm "; def $0", "=s"()5154  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2>5155  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)5156  ret void5157}5158 5159define void @s_shuffle_v4p0_v2p0__0_2_2_2() {5160; GFX900-LABEL: s_shuffle_v4p0_v2p0__0_2_2_2:5161; GFX900:       ; %bb.0:5162; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5163; GFX900-NEXT:    ;;#ASMSTART5164; GFX900-NEXT:    ; def s[8:11]5165; GFX900-NEXT:    ;;#ASMEND5166; GFX900-NEXT:    ;;#ASMSTART5167; GFX900-NEXT:    ; use s[8:15]5168; GFX900-NEXT:    ;;#ASMEND5169; GFX900-NEXT:    s_setpc_b64 s[30:31]5170;5171; GFX90A-LABEL: s_shuffle_v4p0_v2p0__0_2_2_2:5172; GFX90A:       ; %bb.0:5173; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5174; GFX90A-NEXT:    ;;#ASMSTART5175; GFX90A-NEXT:    ; def s[8:11]5176; GFX90A-NEXT:    ;;#ASMEND5177; GFX90A-NEXT:    ;;#ASMSTART5178; GFX90A-NEXT:    ; use s[8:15]5179; GFX90A-NEXT:    ;;#ASMEND5180; GFX90A-NEXT:    s_setpc_b64 s[30:31]5181;5182; GFX942-LABEL: s_shuffle_v4p0_v2p0__0_2_2_2:5183; GFX942:       ; %bb.0:5184; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5185; GFX942-NEXT:    ;;#ASMSTART5186; GFX942-NEXT:    ; def s[8:11]5187; GFX942-NEXT:    ;;#ASMEND5188; GFX942-NEXT:    s_nop 05189; GFX942-NEXT:    ;;#ASMSTART5190; GFX942-NEXT:    ; use s[8:15]5191; GFX942-NEXT:    ;;#ASMEND5192; GFX942-NEXT:    s_setpc_b64 s[30:31]5193  %vec0 = call <2 x ptr> asm "; def $0", "=s"()5194  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2>5195  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)5196  ret void5197}5198 5199define void @s_shuffle_v4p0_v2p0__1_2_2_2() {5200; GFX900-LABEL: s_shuffle_v4p0_v2p0__1_2_2_2:5201; GFX900:       ; %bb.0:5202; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5203; GFX900-NEXT:    ;;#ASMSTART5204; GFX900-NEXT:    ; def s[4:7]5205; GFX900-NEXT:    ;;#ASMEND5206; GFX900-NEXT:    s_mov_b32 s8, s65207; GFX900-NEXT:    s_mov_b32 s9, s75208; GFX900-NEXT:    ;;#ASMSTART5209; GFX900-NEXT:    ; use s[8:15]5210; GFX900-NEXT:    ;;#ASMEND5211; GFX900-NEXT:    s_setpc_b64 s[30:31]5212;5213; GFX90A-LABEL: s_shuffle_v4p0_v2p0__1_2_2_2:5214; GFX90A:       ; %bb.0:5215; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5216; GFX90A-NEXT:    ;;#ASMSTART5217; GFX90A-NEXT:    ; def s[4:7]5218; GFX90A-NEXT:    ;;#ASMEND5219; GFX90A-NEXT:    s_mov_b32 s8, s65220; GFX90A-NEXT:    s_mov_b32 s9, s75221; GFX90A-NEXT:    ;;#ASMSTART5222; GFX90A-NEXT:    ; use s[8:15]5223; GFX90A-NEXT:    ;;#ASMEND5224; GFX90A-NEXT:    s_setpc_b64 s[30:31]5225;5226; GFX942-LABEL: s_shuffle_v4p0_v2p0__1_2_2_2:5227; GFX942:       ; %bb.0:5228; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5229; GFX942-NEXT:    ;;#ASMSTART5230; GFX942-NEXT:    ; def s[0:3]5231; GFX942-NEXT:    ;;#ASMEND5232; GFX942-NEXT:    s_mov_b32 s8, s25233; GFX942-NEXT:    s_mov_b32 s9, s35234; GFX942-NEXT:    ;;#ASMSTART5235; GFX942-NEXT:    ; use s[8:15]5236; GFX942-NEXT:    ;;#ASMEND5237; GFX942-NEXT:    s_setpc_b64 s[30:31]5238  %vec0 = call <2 x ptr> asm "; def $0", "=s"()5239  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2>5240  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)5241  ret void5242}5243 5244define void @s_shuffle_v4p0_v2p0__2_2_2_2() {5245; GFX9-LABEL: s_shuffle_v4p0_v2p0__2_2_2_2:5246; GFX9:       ; %bb.0:5247; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5248; GFX9-NEXT:    ;;#ASMSTART5249; GFX9-NEXT:    ; use s[8:15]5250; GFX9-NEXT:    ;;#ASMEND5251; GFX9-NEXT:    s_setpc_b64 s[30:31]5252  %vec0 = call <2 x ptr> asm "; def $0", "=s"()5253  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2>5254  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)5255  ret void5256}5257 5258define void @s_shuffle_v4p0_v2p0__3_2_2_2() {5259; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_2_2_2:5260; GFX9:       ; %bb.0:5261; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5262; GFX9-NEXT:    ;;#ASMSTART5263; GFX9-NEXT:    ; def s[12:15]5264; GFX9-NEXT:    ;;#ASMEND5265; GFX9-NEXT:    s_mov_b32 s8, s145266; GFX9-NEXT:    s_mov_b32 s9, s155267; GFX9-NEXT:    s_mov_b32 s10, s125268; GFX9-NEXT:    s_mov_b32 s11, s135269; GFX9-NEXT:    s_mov_b32 s14, s125270; GFX9-NEXT:    s_mov_b32 s15, s135271; GFX9-NEXT:    ;;#ASMSTART5272; GFX9-NEXT:    ; use s[8:15]5273; GFX9-NEXT:    ;;#ASMEND5274; GFX9-NEXT:    s_setpc_b64 s[30:31]5275  %vec0 = call <2 x ptr> asm "; def $0", "=s"()5276  %vec1 = call <2 x ptr> asm "; def $0", "=s"()5277  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 2, i32 2, i32 2>5278  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)5279  ret void5280}5281 5282define void @s_shuffle_v4p0_v2p0__3_u_2_2() {5283; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_u_2_2:5284; GFX9:       ; %bb.0:5285; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5286; GFX9-NEXT:    ;;#ASMSTART5287; GFX9-NEXT:    ; def s[12:15]5288; GFX9-NEXT:    ;;#ASMEND5289; GFX9-NEXT:    s_mov_b32 s8, s145290; GFX9-NEXT:    s_mov_b32 s9, s155291; GFX9-NEXT:    s_mov_b32 s14, s125292; GFX9-NEXT:    s_mov_b32 s15, s135293; GFX9-NEXT:    ;;#ASMSTART5294; GFX9-NEXT:    ; use s[8:15]5295; GFX9-NEXT:    ;;#ASMEND5296; GFX9-NEXT:    s_setpc_b64 s[30:31]5297  %vec0 = call <2 x ptr> asm "; def $0", "=s"()5298  %vec1 = call <2 x ptr> asm "; def $0", "=s"()5299  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 poison, i32 2, i32 2>5300  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)5301  ret void5302}5303 5304define void @s_shuffle_v4p0_v2p0__3_0_2_2() {5305; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_0_2_2:5306; GFX900:       ; %bb.0:5307; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5308; GFX900-NEXT:    ;;#ASMSTART5309; GFX900-NEXT:    ; def s[12:15]5310; GFX900-NEXT:    ;;#ASMEND5311; GFX900-NEXT:    ;;#ASMSTART5312; GFX900-NEXT:    ; def s[4:7]5313; GFX900-NEXT:    ;;#ASMEND5314; GFX900-NEXT:    s_mov_b32 s8, s145315; GFX900-NEXT:    s_mov_b32 s9, s155316; GFX900-NEXT:    s_mov_b32 s10, s45317; GFX900-NEXT:    s_mov_b32 s11, s55318; GFX900-NEXT:    s_mov_b32 s14, s125319; GFX900-NEXT:    s_mov_b32 s15, s135320; GFX900-NEXT:    ;;#ASMSTART5321; GFX900-NEXT:    ; use s[8:15]5322; GFX900-NEXT:    ;;#ASMEND5323; GFX900-NEXT:    s_setpc_b64 s[30:31]5324;5325; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_0_2_2:5326; GFX90A:       ; %bb.0:5327; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5328; GFX90A-NEXT:    ;;#ASMSTART5329; GFX90A-NEXT:    ; def s[12:15]5330; GFX90A-NEXT:    ;;#ASMEND5331; GFX90A-NEXT:    ;;#ASMSTART5332; GFX90A-NEXT:    ; def s[4:7]5333; GFX90A-NEXT:    ;;#ASMEND5334; GFX90A-NEXT:    s_mov_b32 s8, s145335; GFX90A-NEXT:    s_mov_b32 s9, s155336; GFX90A-NEXT:    s_mov_b32 s10, s45337; GFX90A-NEXT:    s_mov_b32 s11, s55338; GFX90A-NEXT:    s_mov_b32 s14, s125339; GFX90A-NEXT:    s_mov_b32 s15, s135340; GFX90A-NEXT:    ;;#ASMSTART5341; GFX90A-NEXT:    ; use s[8:15]5342; GFX90A-NEXT:    ;;#ASMEND5343; GFX90A-NEXT:    s_setpc_b64 s[30:31]5344;5345; GFX942-LABEL: s_shuffle_v4p0_v2p0__3_0_2_2:5346; GFX942:       ; %bb.0:5347; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5348; GFX942-NEXT:    ;;#ASMSTART5349; GFX942-NEXT:    ; def s[12:15]5350; GFX942-NEXT:    ;;#ASMEND5351; GFX942-NEXT:    ;;#ASMSTART5352; GFX942-NEXT:    ; def s[0:3]5353; GFX942-NEXT:    ;;#ASMEND5354; GFX942-NEXT:    s_mov_b32 s8, s145355; GFX942-NEXT:    s_mov_b32 s9, s155356; GFX942-NEXT:    s_mov_b32 s10, s05357; GFX942-NEXT:    s_mov_b32 s11, s15358; GFX942-NEXT:    s_mov_b32 s14, s125359; GFX942-NEXT:    s_mov_b32 s15, s135360; GFX942-NEXT:    ;;#ASMSTART5361; GFX942-NEXT:    ; use s[8:15]5362; GFX942-NEXT:    ;;#ASMEND5363; GFX942-NEXT:    s_setpc_b64 s[30:31]5364  %vec0 = call <2 x ptr> asm "; def $0", "=s"()5365  %vec1 = call <2 x ptr> asm "; def $0", "=s"()5366  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 0, i32 2, i32 2>5367  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)5368  ret void5369}5370 5371define void @s_shuffle_v4p0_v2p0__3_1_2_2() {5372; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_1_2_2:5373; GFX9:       ; %bb.0:5374; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5375; GFX9-NEXT:    ;;#ASMSTART5376; GFX9-NEXT:    ; def s[8:11]5377; GFX9-NEXT:    ;;#ASMEND5378; GFX9-NEXT:    ;;#ASMSTART5379; GFX9-NEXT:    ; def s[12:15]5380; GFX9-NEXT:    ;;#ASMEND5381; GFX9-NEXT:    s_mov_b32 s8, s145382; GFX9-NEXT:    s_mov_b32 s9, s155383; GFX9-NEXT:    s_mov_b32 s14, s125384; GFX9-NEXT:    s_mov_b32 s15, s135385; GFX9-NEXT:    ;;#ASMSTART5386; GFX9-NEXT:    ; use s[8:15]5387; GFX9-NEXT:    ;;#ASMEND5388; GFX9-NEXT:    s_setpc_b64 s[30:31]5389  %vec0 = call <2 x ptr> asm "; def $0", "=s"()5390  %vec1 = call <2 x ptr> asm "; def $0", "=s"()5391  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 1, i32 2, i32 2>5392  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)5393  ret void5394}5395 5396define void @s_shuffle_v4p0_v2p0__3_3_2_2() {5397; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_3_2_2:5398; GFX9:       ; %bb.0:5399; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5400; GFX9-NEXT:    ;;#ASMSTART5401; GFX9-NEXT:    ; def s[12:15]5402; GFX9-NEXT:    ;;#ASMEND5403; GFX9-NEXT:    s_mov_b32 s8, s145404; GFX9-NEXT:    s_mov_b32 s9, s155405; GFX9-NEXT:    s_mov_b32 s10, s145406; GFX9-NEXT:    s_mov_b32 s11, s155407; GFX9-NEXT:    s_mov_b32 s14, s125408; GFX9-NEXT:    s_mov_b32 s15, s135409; GFX9-NEXT:    ;;#ASMSTART5410; GFX9-NEXT:    ; use s[8:15]5411; GFX9-NEXT:    ;;#ASMEND5412; GFX9-NEXT:    s_setpc_b64 s[30:31]5413  %vec0 = call <2 x ptr> asm "; def $0", "=s"()5414  %vec1 = call <2 x ptr> asm "; def $0", "=s"()5415  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 2>5416  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)5417  ret void5418}5419 5420define void @s_shuffle_v4p0_v2p0__3_3_u_2() {5421; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_3_u_2:5422; GFX900:       ; %bb.0:5423; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5424; GFX900-NEXT:    ;;#ASMSTART5425; GFX900-NEXT:    ; def s[4:7]5426; GFX900-NEXT:    ;;#ASMEND5427; GFX900-NEXT:    s_mov_b32 s8, s65428; GFX900-NEXT:    s_mov_b32 s9, s75429; GFX900-NEXT:    s_mov_b32 s10, s65430; GFX900-NEXT:    s_mov_b32 s11, s75431; GFX900-NEXT:    s_mov_b32 s14, s45432; GFX900-NEXT:    s_mov_b32 s15, s55433; GFX900-NEXT:    ;;#ASMSTART5434; GFX900-NEXT:    ; use s[8:15]5435; GFX900-NEXT:    ;;#ASMEND5436; GFX900-NEXT:    s_setpc_b64 s[30:31]5437;5438; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_3_u_2:5439; GFX90A:       ; %bb.0:5440; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5441; GFX90A-NEXT:    ;;#ASMSTART5442; GFX90A-NEXT:    ; def s[4:7]5443; GFX90A-NEXT:    ;;#ASMEND5444; GFX90A-NEXT:    s_mov_b32 s8, s65445; GFX90A-NEXT:    s_mov_b32 s9, s75446; GFX90A-NEXT:    s_mov_b32 s10, s65447; GFX90A-NEXT:    s_mov_b32 s11, s75448; GFX90A-NEXT:    s_mov_b32 s14, s45449; GFX90A-NEXT:    s_mov_b32 s15, s55450; GFX90A-NEXT:    ;;#ASMSTART5451; GFX90A-NEXT:    ; use s[8:15]5452; GFX90A-NEXT:    ;;#ASMEND5453; GFX90A-NEXT:    s_setpc_b64 s[30:31]5454;5455; GFX942-LABEL: s_shuffle_v4p0_v2p0__3_3_u_2:5456; GFX942:       ; %bb.0:5457; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5458; GFX942-NEXT:    ;;#ASMSTART5459; GFX942-NEXT:    ; def s[0:3]5460; GFX942-NEXT:    ;;#ASMEND5461; GFX942-NEXT:    s_mov_b32 s8, s25462; GFX942-NEXT:    s_mov_b32 s9, s35463; GFX942-NEXT:    s_mov_b32 s10, s25464; GFX942-NEXT:    s_mov_b32 s11, s35465; GFX942-NEXT:    s_mov_b32 s14, s05466; GFX942-NEXT:    s_mov_b32 s15, s15467; GFX942-NEXT:    ;;#ASMSTART5468; GFX942-NEXT:    ; use s[8:15]5469; GFX942-NEXT:    ;;#ASMEND5470; GFX942-NEXT:    s_setpc_b64 s[30:31]5471  %vec0 = call <2 x ptr> asm "; def $0", "=s"()5472  %vec1 = call <2 x ptr> asm "; def $0", "=s"()5473  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 2>5474  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)5475  ret void5476}5477 5478define void @s_shuffle_v4p0_v2p0__3_3_0_2() {5479; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_3_0_2:5480; GFX900:       ; %bb.0:5481; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5482; GFX900-NEXT:    ;;#ASMSTART5483; GFX900-NEXT:    ; def s[12:15]5484; GFX900-NEXT:    ;;#ASMEND5485; GFX900-NEXT:    ;;#ASMSTART5486; GFX900-NEXT:    ; def s[4:7]5487; GFX900-NEXT:    ;;#ASMEND5488; GFX900-NEXT:    s_mov_b32 s8, s65489; GFX900-NEXT:    s_mov_b32 s9, s75490; GFX900-NEXT:    s_mov_b32 s10, s65491; GFX900-NEXT:    s_mov_b32 s11, s75492; GFX900-NEXT:    s_mov_b32 s14, s45493; GFX900-NEXT:    s_mov_b32 s15, s55494; GFX900-NEXT:    ;;#ASMSTART5495; GFX900-NEXT:    ; use s[8:15]5496; GFX900-NEXT:    ;;#ASMEND5497; GFX900-NEXT:    s_setpc_b64 s[30:31]5498;5499; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_3_0_2:5500; GFX90A:       ; %bb.0:5501; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5502; GFX90A-NEXT:    ;;#ASMSTART5503; GFX90A-NEXT:    ; def s[12:15]5504; GFX90A-NEXT:    ;;#ASMEND5505; GFX90A-NEXT:    ;;#ASMSTART5506; GFX90A-NEXT:    ; def s[4:7]5507; GFX90A-NEXT:    ;;#ASMEND5508; GFX90A-NEXT:    s_mov_b32 s8, s65509; GFX90A-NEXT:    s_mov_b32 s9, s75510; GFX90A-NEXT:    s_mov_b32 s10, s65511; GFX90A-NEXT:    s_mov_b32 s11, s75512; GFX90A-NEXT:    s_mov_b32 s14, s45513; GFX90A-NEXT:    s_mov_b32 s15, s55514; GFX90A-NEXT:    ;;#ASMSTART5515; GFX90A-NEXT:    ; use s[8:15]5516; GFX90A-NEXT:    ;;#ASMEND5517; GFX90A-NEXT:    s_setpc_b64 s[30:31]5518;5519; GFX942-LABEL: s_shuffle_v4p0_v2p0__3_3_0_2:5520; GFX942:       ; %bb.0:5521; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5522; GFX942-NEXT:    ;;#ASMSTART5523; GFX942-NEXT:    ; def s[12:15]5524; GFX942-NEXT:    ;;#ASMEND5525; GFX942-NEXT:    ;;#ASMSTART5526; GFX942-NEXT:    ; def s[0:3]5527; GFX942-NEXT:    ;;#ASMEND5528; GFX942-NEXT:    s_mov_b32 s8, s25529; GFX942-NEXT:    s_mov_b32 s9, s35530; GFX942-NEXT:    s_mov_b32 s10, s25531; GFX942-NEXT:    s_mov_b32 s11, s35532; GFX942-NEXT:    s_mov_b32 s14, s05533; GFX942-NEXT:    s_mov_b32 s15, s15534; GFX942-NEXT:    ;;#ASMSTART5535; GFX942-NEXT:    ; use s[8:15]5536; GFX942-NEXT:    ;;#ASMEND5537; GFX942-NEXT:    s_setpc_b64 s[30:31]5538  %vec0 = call <2 x ptr> asm "; def $0", "=s"()5539  %vec1 = call <2 x ptr> asm "; def $0", "=s"()5540  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 2>5541  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)5542  ret void5543}5544 5545define void @s_shuffle_v4p0_v2p0__3_3_1_2() {5546; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_3_1_2:5547; GFX900:       ; %bb.0:5548; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5549; GFX900-NEXT:    ;;#ASMSTART5550; GFX900-NEXT:    ; def s[4:7]5551; GFX900-NEXT:    ;;#ASMEND5552; GFX900-NEXT:    ;;#ASMSTART5553; GFX900-NEXT:    ; def s[16:19]5554; GFX900-NEXT:    ;;#ASMEND5555; GFX900-NEXT:    s_mov_b32 s8, s185556; GFX900-NEXT:    s_mov_b32 s9, s195557; GFX900-NEXT:    s_mov_b32 s10, s185558; GFX900-NEXT:    s_mov_b32 s11, s195559; GFX900-NEXT:    s_mov_b32 s12, s65560; GFX900-NEXT:    s_mov_b32 s13, s75561; GFX900-NEXT:    s_mov_b32 s14, s165562; GFX900-NEXT:    s_mov_b32 s15, s175563; GFX900-NEXT:    ;;#ASMSTART5564; GFX900-NEXT:    ; use s[8:15]5565; GFX900-NEXT:    ;;#ASMEND5566; GFX900-NEXT:    s_setpc_b64 s[30:31]5567;5568; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_3_1_2:5569; GFX90A:       ; %bb.0:5570; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5571; GFX90A-NEXT:    ;;#ASMSTART5572; GFX90A-NEXT:    ; def s[4:7]5573; GFX90A-NEXT:    ;;#ASMEND5574; GFX90A-NEXT:    ;;#ASMSTART5575; GFX90A-NEXT:    ; def s[16:19]5576; GFX90A-NEXT:    ;;#ASMEND5577; GFX90A-NEXT:    s_mov_b32 s8, s185578; GFX90A-NEXT:    s_mov_b32 s9, s195579; GFX90A-NEXT:    s_mov_b32 s10, s185580; GFX90A-NEXT:    s_mov_b32 s11, s195581; GFX90A-NEXT:    s_mov_b32 s12, s65582; GFX90A-NEXT:    s_mov_b32 s13, s75583; GFX90A-NEXT:    s_mov_b32 s14, s165584; GFX90A-NEXT:    s_mov_b32 s15, s175585; GFX90A-NEXT:    ;;#ASMSTART5586; GFX90A-NEXT:    ; use s[8:15]5587; GFX90A-NEXT:    ;;#ASMEND5588; GFX90A-NEXT:    s_setpc_b64 s[30:31]5589;5590; GFX942-LABEL: s_shuffle_v4p0_v2p0__3_3_1_2:5591; GFX942:       ; %bb.0:5592; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5593; GFX942-NEXT:    ;;#ASMSTART5594; GFX942-NEXT:    ; def s[0:3]5595; GFX942-NEXT:    ;;#ASMEND5596; GFX942-NEXT:    ;;#ASMSTART5597; GFX942-NEXT:    ; def s[4:7]5598; GFX942-NEXT:    ;;#ASMEND5599; GFX942-NEXT:    s_mov_b32 s8, s65600; GFX942-NEXT:    s_mov_b32 s9, s75601; GFX942-NEXT:    s_mov_b32 s10, s65602; GFX942-NEXT:    s_mov_b32 s11, s75603; GFX942-NEXT:    s_mov_b32 s12, s25604; GFX942-NEXT:    s_mov_b32 s13, s35605; GFX942-NEXT:    s_mov_b32 s14, s45606; GFX942-NEXT:    s_mov_b32 s15, s55607; GFX942-NEXT:    ;;#ASMSTART5608; GFX942-NEXT:    ; use s[8:15]5609; GFX942-NEXT:    ;;#ASMEND5610; GFX942-NEXT:    s_setpc_b64 s[30:31]5611  %vec0 = call <2 x ptr> asm "; def $0", "=s"()5612  %vec1 = call <2 x ptr> asm "; def $0", "=s"()5613  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 2>5614  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)5615  ret void5616}5617 5618define void @s_shuffle_v4p0_v2p0__u_3_3_3() {5619; GFX9-LABEL: s_shuffle_v4p0_v2p0__u_3_3_3:5620; GFX9:       ; %bb.0:5621; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5622; GFX9-NEXT:    ;;#ASMSTART5623; GFX9-NEXT:    ; def s[8:11]5624; GFX9-NEXT:    ;;#ASMEND5625; GFX9-NEXT:    s_mov_b32 s12, s105626; GFX9-NEXT:    s_mov_b32 s13, s115627; GFX9-NEXT:    s_mov_b32 s14, s105628; GFX9-NEXT:    s_mov_b32 s15, s115629; GFX9-NEXT:    ;;#ASMSTART5630; GFX9-NEXT:    ; use s[8:15]5631; GFX9-NEXT:    ;;#ASMEND5632; GFX9-NEXT:    s_setpc_b64 s[30:31]5633  %vec0 = call <2 x ptr> asm "; def $0", "=s"()5634  %vec1 = call <2 x ptr> asm "; def $0", "=s"()5635  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 poison, i32 3, i32 3, i32 3>5636  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)5637  ret void5638}5639 5640define void @s_shuffle_v4p0_v2p0__0_3_3_3() {5641; GFX9-LABEL: s_shuffle_v4p0_v2p0__0_3_3_3:5642; GFX9:       ; %bb.0:5643; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5644; GFX9-NEXT:    ;;#ASMSTART5645; GFX9-NEXT:    ; def s[8:11]5646; GFX9-NEXT:    ;;#ASMEND5647; GFX9-NEXT:    ;;#ASMSTART5648; GFX9-NEXT:    ; def s[12:15]5649; GFX9-NEXT:    ;;#ASMEND5650; GFX9-NEXT:    s_mov_b32 s10, s145651; GFX9-NEXT:    s_mov_b32 s11, s155652; GFX9-NEXT:    s_mov_b32 s12, s145653; GFX9-NEXT:    s_mov_b32 s13, s155654; GFX9-NEXT:    ;;#ASMSTART5655; GFX9-NEXT:    ; use s[8:15]5656; GFX9-NEXT:    ;;#ASMEND5657; GFX9-NEXT:    s_setpc_b64 s[30:31]5658  %vec0 = call <2 x ptr> asm "; def $0", "=s"()5659  %vec1 = call <2 x ptr> asm "; def $0", "=s"()5660  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 0, i32 3, i32 3, i32 3>5661  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)5662  ret void5663}5664 5665define void @s_shuffle_v4p0_v2p0__1_3_3_3() {5666; GFX900-LABEL: s_shuffle_v4p0_v2p0__1_3_3_3:5667; GFX900:       ; %bb.0:5668; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5669; GFX900-NEXT:    ;;#ASMSTART5670; GFX900-NEXT:    ; def s[8:11]5671; GFX900-NEXT:    ;;#ASMEND5672; GFX900-NEXT:    ;;#ASMSTART5673; GFX900-NEXT:    ; def s[4:7]5674; GFX900-NEXT:    ;;#ASMEND5675; GFX900-NEXT:    s_mov_b32 s8, s65676; GFX900-NEXT:    s_mov_b32 s9, s75677; GFX900-NEXT:    s_mov_b32 s12, s105678; GFX900-NEXT:    s_mov_b32 s13, s115679; GFX900-NEXT:    s_mov_b32 s14, s105680; GFX900-NEXT:    s_mov_b32 s15, s115681; GFX900-NEXT:    ;;#ASMSTART5682; GFX900-NEXT:    ; use s[8:15]5683; GFX900-NEXT:    ;;#ASMEND5684; GFX900-NEXT:    s_setpc_b64 s[30:31]5685;5686; GFX90A-LABEL: s_shuffle_v4p0_v2p0__1_3_3_3:5687; GFX90A:       ; %bb.0:5688; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5689; GFX90A-NEXT:    ;;#ASMSTART5690; GFX90A-NEXT:    ; def s[8:11]5691; GFX90A-NEXT:    ;;#ASMEND5692; GFX90A-NEXT:    ;;#ASMSTART5693; GFX90A-NEXT:    ; def s[4:7]5694; GFX90A-NEXT:    ;;#ASMEND5695; GFX90A-NEXT:    s_mov_b32 s8, s65696; GFX90A-NEXT:    s_mov_b32 s9, s75697; GFX90A-NEXT:    s_mov_b32 s12, s105698; GFX90A-NEXT:    s_mov_b32 s13, s115699; GFX90A-NEXT:    s_mov_b32 s14, s105700; GFX90A-NEXT:    s_mov_b32 s15, s115701; GFX90A-NEXT:    ;;#ASMSTART5702; GFX90A-NEXT:    ; use s[8:15]5703; GFX90A-NEXT:    ;;#ASMEND5704; GFX90A-NEXT:    s_setpc_b64 s[30:31]5705;5706; GFX942-LABEL: s_shuffle_v4p0_v2p0__1_3_3_3:5707; GFX942:       ; %bb.0:5708; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5709; GFX942-NEXT:    ;;#ASMSTART5710; GFX942-NEXT:    ; def s[8:11]5711; GFX942-NEXT:    ;;#ASMEND5712; GFX942-NEXT:    ;;#ASMSTART5713; GFX942-NEXT:    ; def s[0:3]5714; GFX942-NEXT:    ;;#ASMEND5715; GFX942-NEXT:    s_mov_b32 s8, s25716; GFX942-NEXT:    s_mov_b32 s9, s35717; GFX942-NEXT:    s_mov_b32 s12, s105718; GFX942-NEXT:    s_mov_b32 s13, s115719; GFX942-NEXT:    s_mov_b32 s14, s105720; GFX942-NEXT:    s_mov_b32 s15, s115721; GFX942-NEXT:    ;;#ASMSTART5722; GFX942-NEXT:    ; use s[8:15]5723; GFX942-NEXT:    ;;#ASMEND5724; GFX942-NEXT:    s_setpc_b64 s[30:31]5725  %vec0 = call <2 x ptr> asm "; def $0", "=s"()5726  %vec1 = call <2 x ptr> asm "; def $0", "=s"()5727  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 1, i32 3, i32 3, i32 3>5728  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)5729  ret void5730}5731 5732define void @s_shuffle_v4p0_v2p0__2_3_3_3() {5733; GFX9-LABEL: s_shuffle_v4p0_v2p0__2_3_3_3:5734; GFX9:       ; %bb.0:5735; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5736; GFX9-NEXT:    ;;#ASMSTART5737; GFX9-NEXT:    ; def s[8:11]5738; GFX9-NEXT:    ;;#ASMEND5739; GFX9-NEXT:    s_mov_b32 s12, s105740; GFX9-NEXT:    s_mov_b32 s13, s115741; GFX9-NEXT:    s_mov_b32 s14, s105742; GFX9-NEXT:    s_mov_b32 s15, s115743; GFX9-NEXT:    ;;#ASMSTART5744; GFX9-NEXT:    ; use s[8:15]5745; GFX9-NEXT:    ;;#ASMEND5746; GFX9-NEXT:    s_setpc_b64 s[30:31]5747  %vec0 = call <2 x ptr> asm "; def $0", "=s"()5748  %vec1 = call <2 x ptr> asm "; def $0", "=s"()5749  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 2, i32 3, i32 3, i32 3>5750  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)5751  ret void5752}5753 5754define void @s_shuffle_v4p0_v2p0__3_u_3_3() {5755; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_u_3_3:5756; GFX9:       ; %bb.0:5757; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5758; GFX9-NEXT:    ;;#ASMSTART5759; GFX9-NEXT:    ; def s[12:15]5760; GFX9-NEXT:    ;;#ASMEND5761; GFX9-NEXT:    s_mov_b32 s8, s145762; GFX9-NEXT:    s_mov_b32 s9, s155763; GFX9-NEXT:    s_mov_b32 s12, s145764; GFX9-NEXT:    s_mov_b32 s13, s155765; GFX9-NEXT:    ;;#ASMSTART5766; GFX9-NEXT:    ; use s[8:15]5767; GFX9-NEXT:    ;;#ASMEND5768; GFX9-NEXT:    s_setpc_b64 s[30:31]5769  %vec0 = call <2 x ptr> asm "; def $0", "=s"()5770  %vec1 = call <2 x ptr> asm "; def $0", "=s"()5771  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 poison, i32 3, i32 3>5772  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)5773  ret void5774}5775 5776define void @s_shuffle_v4p0_v2p0__3_0_3_3() {5777; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_0_3_3:5778; GFX900:       ; %bb.0:5779; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5780; GFX900-NEXT:    ;;#ASMSTART5781; GFX900-NEXT:    ; def s[12:15]5782; GFX900-NEXT:    ;;#ASMEND5783; GFX900-NEXT:    ;;#ASMSTART5784; GFX900-NEXT:    ; def s[4:7]5785; GFX900-NEXT:    ;;#ASMEND5786; GFX900-NEXT:    s_mov_b32 s8, s145787; GFX900-NEXT:    s_mov_b32 s9, s155788; GFX900-NEXT:    s_mov_b32 s10, s45789; GFX900-NEXT:    s_mov_b32 s11, s55790; GFX900-NEXT:    s_mov_b32 s12, s145791; GFX900-NEXT:    s_mov_b32 s13, s155792; GFX900-NEXT:    ;;#ASMSTART5793; GFX900-NEXT:    ; use s[8:15]5794; GFX900-NEXT:    ;;#ASMEND5795; GFX900-NEXT:    s_setpc_b64 s[30:31]5796;5797; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_0_3_3:5798; GFX90A:       ; %bb.0:5799; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5800; GFX90A-NEXT:    ;;#ASMSTART5801; GFX90A-NEXT:    ; def s[12:15]5802; GFX90A-NEXT:    ;;#ASMEND5803; GFX90A-NEXT:    ;;#ASMSTART5804; GFX90A-NEXT:    ; def s[4:7]5805; GFX90A-NEXT:    ;;#ASMEND5806; GFX90A-NEXT:    s_mov_b32 s8, s145807; GFX90A-NEXT:    s_mov_b32 s9, s155808; GFX90A-NEXT:    s_mov_b32 s10, s45809; GFX90A-NEXT:    s_mov_b32 s11, s55810; GFX90A-NEXT:    s_mov_b32 s12, s145811; GFX90A-NEXT:    s_mov_b32 s13, s155812; GFX90A-NEXT:    ;;#ASMSTART5813; GFX90A-NEXT:    ; use s[8:15]5814; GFX90A-NEXT:    ;;#ASMEND5815; GFX90A-NEXT:    s_setpc_b64 s[30:31]5816;5817; GFX942-LABEL: s_shuffle_v4p0_v2p0__3_0_3_3:5818; GFX942:       ; %bb.0:5819; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5820; GFX942-NEXT:    ;;#ASMSTART5821; GFX942-NEXT:    ; def s[12:15]5822; GFX942-NEXT:    ;;#ASMEND5823; GFX942-NEXT:    ;;#ASMSTART5824; GFX942-NEXT:    ; def s[0:3]5825; GFX942-NEXT:    ;;#ASMEND5826; GFX942-NEXT:    s_mov_b32 s8, s145827; GFX942-NEXT:    s_mov_b32 s9, s155828; GFX942-NEXT:    s_mov_b32 s10, s05829; GFX942-NEXT:    s_mov_b32 s11, s15830; GFX942-NEXT:    s_mov_b32 s12, s145831; GFX942-NEXT:    s_mov_b32 s13, s155832; GFX942-NEXT:    ;;#ASMSTART5833; GFX942-NEXT:    ; use s[8:15]5834; GFX942-NEXT:    ;;#ASMEND5835; GFX942-NEXT:    s_setpc_b64 s[30:31]5836  %vec0 = call <2 x ptr> asm "; def $0", "=s"()5837  %vec1 = call <2 x ptr> asm "; def $0", "=s"()5838  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 0, i32 3, i32 3>5839  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)5840  ret void5841}5842 5843define void @s_shuffle_v4p0_v2p0__3_1_3_3() {5844; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_1_3_3:5845; GFX9:       ; %bb.0:5846; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5847; GFX9-NEXT:    ;;#ASMSTART5848; GFX9-NEXT:    ; def s[8:11]5849; GFX9-NEXT:    ;;#ASMEND5850; GFX9-NEXT:    ;;#ASMSTART5851; GFX9-NEXT:    ; def s[12:15]5852; GFX9-NEXT:    ;;#ASMEND5853; GFX9-NEXT:    s_mov_b32 s8, s145854; GFX9-NEXT:    s_mov_b32 s9, s155855; GFX9-NEXT:    s_mov_b32 s12, s145856; GFX9-NEXT:    s_mov_b32 s13, s155857; GFX9-NEXT:    ;;#ASMSTART5858; GFX9-NEXT:    ; use s[8:15]5859; GFX9-NEXT:    ;;#ASMEND5860; GFX9-NEXT:    s_setpc_b64 s[30:31]5861  %vec0 = call <2 x ptr> asm "; def $0", "=s"()5862  %vec1 = call <2 x ptr> asm "; def $0", "=s"()5863  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 1, i32 3, i32 3>5864  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)5865  ret void5866}5867 5868define void @s_shuffle_v4p0_v2p0__3_2_3_3() {5869; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_2_3_3:5870; GFX9:       ; %bb.0:5871; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5872; GFX9-NEXT:    ;;#ASMSTART5873; GFX9-NEXT:    ; def s[12:15]5874; GFX9-NEXT:    ;;#ASMEND5875; GFX9-NEXT:    s_mov_b32 s8, s145876; GFX9-NEXT:    s_mov_b32 s9, s155877; GFX9-NEXT:    s_mov_b32 s10, s125878; GFX9-NEXT:    s_mov_b32 s11, s135879; GFX9-NEXT:    s_mov_b32 s12, s145880; GFX9-NEXT:    s_mov_b32 s13, s155881; GFX9-NEXT:    ;;#ASMSTART5882; GFX9-NEXT:    ; use s[8:15]5883; GFX9-NEXT:    ;;#ASMEND5884; GFX9-NEXT:    s_setpc_b64 s[30:31]5885  %vec0 = call <2 x ptr> asm "; def $0", "=s"()5886  %vec1 = call <2 x ptr> asm "; def $0", "=s"()5887  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 2, i32 3, i32 3>5888  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)5889  ret void5890}5891 5892define void @s_shuffle_v4p0_v2p0__3_3_u_3() {5893; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_3_u_3:5894; GFX9:       ; %bb.0:5895; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5896; GFX9-NEXT:    ;;#ASMSTART5897; GFX9-NEXT:    ; def s[8:11]5898; GFX9-NEXT:    ;;#ASMEND5899; GFX9-NEXT:    s_mov_b32 s8, s105900; GFX9-NEXT:    s_mov_b32 s9, s115901; GFX9-NEXT:    s_mov_b32 s14, s105902; GFX9-NEXT:    s_mov_b32 s15, s115903; GFX9-NEXT:    ;;#ASMSTART5904; GFX9-NEXT:    ; use s[8:15]5905; GFX9-NEXT:    ;;#ASMEND5906; GFX9-NEXT:    s_setpc_b64 s[30:31]5907  %vec0 = call <2 x ptr> asm "; def $0", "=s"()5908  %vec1 = call <2 x ptr> asm "; def $0", "=s"()5909  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 3>5910  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)5911  ret void5912}5913 5914define void @s_shuffle_v4p0_v2p0__3_3_0_3() {5915; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_3_0_3:5916; GFX9:       ; %bb.0:5917; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5918; GFX9-NEXT:    ;;#ASMSTART5919; GFX9-NEXT:    ; def s[12:15]5920; GFX9-NEXT:    ;;#ASMEND5921; GFX9-NEXT:    ;;#ASMSTART5922; GFX9-NEXT:    ; def s[8:11]5923; GFX9-NEXT:    ;;#ASMEND5924; GFX9-NEXT:    s_mov_b32 s8, s105925; GFX9-NEXT:    s_mov_b32 s9, s115926; GFX9-NEXT:    s_mov_b32 s14, s105927; GFX9-NEXT:    s_mov_b32 s15, s115928; GFX9-NEXT:    ;;#ASMSTART5929; GFX9-NEXT:    ; use s[8:15]5930; GFX9-NEXT:    ;;#ASMEND5931; GFX9-NEXT:    s_setpc_b64 s[30:31]5932  %vec0 = call <2 x ptr> asm "; def $0", "=s"()5933  %vec1 = call <2 x ptr> asm "; def $0", "=s"()5934  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 3>5935  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)5936  ret void5937}5938 5939define void @s_shuffle_v4p0_v2p0__3_3_1_3() {5940; GFX900-LABEL: s_shuffle_v4p0_v2p0__3_3_1_3:5941; GFX900:       ; %bb.0:5942; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5943; GFX900-NEXT:    ;;#ASMSTART5944; GFX900-NEXT:    ; def s[8:11]5945; GFX900-NEXT:    ;;#ASMEND5946; GFX900-NEXT:    ;;#ASMSTART5947; GFX900-NEXT:    ; def s[4:7]5948; GFX900-NEXT:    ;;#ASMEND5949; GFX900-NEXT:    s_mov_b32 s8, s105950; GFX900-NEXT:    s_mov_b32 s9, s115951; GFX900-NEXT:    s_mov_b32 s12, s65952; GFX900-NEXT:    s_mov_b32 s13, s75953; GFX900-NEXT:    s_mov_b32 s14, s105954; GFX900-NEXT:    s_mov_b32 s15, s115955; GFX900-NEXT:    ;;#ASMSTART5956; GFX900-NEXT:    ; use s[8:15]5957; GFX900-NEXT:    ;;#ASMEND5958; GFX900-NEXT:    s_setpc_b64 s[30:31]5959;5960; GFX90A-LABEL: s_shuffle_v4p0_v2p0__3_3_1_3:5961; GFX90A:       ; %bb.0:5962; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5963; GFX90A-NEXT:    ;;#ASMSTART5964; GFX90A-NEXT:    ; def s[8:11]5965; GFX90A-NEXT:    ;;#ASMEND5966; GFX90A-NEXT:    ;;#ASMSTART5967; GFX90A-NEXT:    ; def s[4:7]5968; GFX90A-NEXT:    ;;#ASMEND5969; GFX90A-NEXT:    s_mov_b32 s8, s105970; GFX90A-NEXT:    s_mov_b32 s9, s115971; GFX90A-NEXT:    s_mov_b32 s12, s65972; GFX90A-NEXT:    s_mov_b32 s13, s75973; GFX90A-NEXT:    s_mov_b32 s14, s105974; GFX90A-NEXT:    s_mov_b32 s15, s115975; GFX90A-NEXT:    ;;#ASMSTART5976; GFX90A-NEXT:    ; use s[8:15]5977; GFX90A-NEXT:    ;;#ASMEND5978; GFX90A-NEXT:    s_setpc_b64 s[30:31]5979;5980; GFX942-LABEL: s_shuffle_v4p0_v2p0__3_3_1_3:5981; GFX942:       ; %bb.0:5982; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5983; GFX942-NEXT:    ;;#ASMSTART5984; GFX942-NEXT:    ; def s[8:11]5985; GFX942-NEXT:    ;;#ASMEND5986; GFX942-NEXT:    ;;#ASMSTART5987; GFX942-NEXT:    ; def s[0:3]5988; GFX942-NEXT:    ;;#ASMEND5989; GFX942-NEXT:    s_mov_b32 s8, s105990; GFX942-NEXT:    s_mov_b32 s9, s115991; GFX942-NEXT:    s_mov_b32 s12, s25992; GFX942-NEXT:    s_mov_b32 s13, s35993; GFX942-NEXT:    s_mov_b32 s14, s105994; GFX942-NEXT:    s_mov_b32 s15, s115995; GFX942-NEXT:    ;;#ASMSTART5996; GFX942-NEXT:    ; use s[8:15]5997; GFX942-NEXT:    ;;#ASMEND5998; GFX942-NEXT:    s_setpc_b64 s[30:31]5999  %vec0 = call <2 x ptr> asm "; def $0", "=s"()6000  %vec1 = call <2 x ptr> asm "; def $0", "=s"()6001  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 3>6002  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)6003  ret void6004}6005 6006define void @s_shuffle_v4p0_v2p0__3_3_2_3() {6007; GFX9-LABEL: s_shuffle_v4p0_v2p0__3_3_2_3:6008; GFX9:       ; %bb.0:6009; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6010; GFX9-NEXT:    ;;#ASMSTART6011; GFX9-NEXT:    ; def s[12:15]6012; GFX9-NEXT:    ;;#ASMEND6013; GFX9-NEXT:    s_mov_b32 s8, s146014; GFX9-NEXT:    s_mov_b32 s9, s156015; GFX9-NEXT:    s_mov_b32 s10, s146016; GFX9-NEXT:    s_mov_b32 s11, s156017; GFX9-NEXT:    ;;#ASMSTART6018; GFX9-NEXT:    ; use s[8:15]6019; GFX9-NEXT:    ;;#ASMEND6020; GFX9-NEXT:    s_setpc_b64 s[30:31]6021  %vec0 = call <2 x ptr> asm "; def $0", "=s"()6022  %vec1 = call <2 x ptr> asm "; def $0", "=s"()6023  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 3>6024  call void asm sideeffect "; use $0", "{s[8:15]}"(<4 x ptr> %shuf)6025  ret void6026}6027;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:6028; GFX90APLUS: {{.*}}6029