brintos

brintos / llvm-project-archived public Read only

0
0
Text · 135.6 KiB · ff8ddd0 Raw
3805 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_v3p0_v2p0__u_u_u(ptr addrspace(1) inreg %ptr) {8; GFX9-LABEL: v_shuffle_v3p0_v2p0__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, <3 x i32> poison14  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 3215  ret void16}17 18define void @v_shuffle_v3p0_v2p0__0_u_u(ptr addrspace(1) inreg %ptr) {19; GFX900-LABEL: v_shuffle_v3p0_v2p0__0_u_u:20; GFX900:       ; %bb.0:21; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22; GFX900-NEXT:    v_mov_b32_e32 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_v3p0_v2p0__0_u_u:31; GFX90A:       ; %bb.0:32; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)33; GFX90A-NEXT:    v_mov_b32_e32 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_v3p0_v2p0__0_u_u:42; GFX942:       ; %bb.0:43; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)44; GFX942-NEXT:    v_mov_b32_e32 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, <3 x i32> <i32 0, i32 poison, i32 poison>53  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 3254  ret void55}56 57define void @v_shuffle_v3p0_v2p0__1_u_u(ptr addrspace(1) inreg %ptr) {58; GFX900-LABEL: v_shuffle_v3p0_v2p0__1_u_u:59; GFX900:       ; %bb.0:60; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)61; GFX900-NEXT:    v_mov_b32_e32 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_v3p0_v2p0__1_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_v3p0_v2p0__1_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, <3 x i32> <i32 1, i32 poison, i32 poison>92  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 3293  ret void94}95 96define void @v_shuffle_v3p0_v2p0__2_u_u(ptr addrspace(1) inreg %ptr) {97; GFX9-LABEL: v_shuffle_v3p0_v2p0__2_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, <3 x i32> <i32 2, i32 poison, i32 poison>103  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32104  ret void105}106 107define void @v_shuffle_v3p0_v2p0__3_u_u(ptr addrspace(1) inreg %ptr) {108; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_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_v3p0_v2p0__3_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_v3p0_v2p0__3_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, <3 x i32> <i32 3, i32 poison, i32 poison>143  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32144  ret void145}146 147define void @v_shuffle_v3p0_v2p0__3_0_u(ptr addrspace(1) inreg %ptr) {148; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_0_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_v3p0_v2p0__3_0_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_v3p0_v2p0__3_0_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, <3 x i32> <i32 3, i32 0, i32 poison>192  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32193  ret void194}195 196define void @v_shuffle_v3p0_v2p0__3_1_u(ptr addrspace(1) inreg %ptr) {197; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_1_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_v3p0_v2p0__3_1_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_v3p0_v2p0__3_1_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, <3 x i32> <i32 3, i32 1, i32 poison>242  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32243  ret void244}245 246define void @v_shuffle_v3p0_v2p0__3_2_u(ptr addrspace(1) inreg %ptr) {247; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_2_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_v3p0_v2p0__3_2_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_v3p0_v2p0__3_2_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, <3 x i32> <i32 3, i32 2, i32 poison>289  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32290  ret void291}292 293define void @v_shuffle_v3p0_v2p0__3_3_u(ptr addrspace(1) inreg %ptr) {294; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_3_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_v3p0_v2p0__3_3_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_v3p0_v2p0__3_3_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, <3 x i32> <i32 3, i32 3, i32 poison>336  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32337  ret void338}339 340define void @v_shuffle_v3p0_v2p0__3_3_0(ptr addrspace(1) inreg %ptr) {341; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_3_0: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_dwordx2 v8, v[4:5], s[16:17] offset:16352; GFX900-NEXT:    v_mov_b32_e32 v4, v2353; GFX900-NEXT:    v_mov_b32_e32 v5, v3354; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]355; GFX900-NEXT:    s_waitcnt vmcnt(0)356; GFX900-NEXT:    s_setpc_b64 s[30:31]357;358; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_3_0:359; GFX90A:       ; %bb.0:360; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)361; GFX90A-NEXT:    v_mov_b32_e32 v8, 0362; GFX90A-NEXT:    ;;#ASMSTART363; GFX90A-NEXT:    ; def v[4:7]364; GFX90A-NEXT:    ;;#ASMEND365; GFX90A-NEXT:    ;;#ASMSTART366; GFX90A-NEXT:    ; def v[0:3]367; GFX90A-NEXT:    ;;#ASMEND368; GFX90A-NEXT:    global_store_dwordx2 v8, v[4:5], s[16:17] offset:16369; GFX90A-NEXT:    v_mov_b32_e32 v4, v2370; GFX90A-NEXT:    v_mov_b32_e32 v5, v3371; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]372; GFX90A-NEXT:    s_waitcnt vmcnt(0)373; GFX90A-NEXT:    s_setpc_b64 s[30:31]374;375; GFX942-LABEL: v_shuffle_v3p0_v2p0__3_3_0:376; GFX942:       ; %bb.0:377; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)378; GFX942-NEXT:    v_mov_b32_e32 v8, 0379; GFX942-NEXT:    ;;#ASMSTART380; GFX942-NEXT:    ; def v[4:7]381; GFX942-NEXT:    ;;#ASMEND382; GFX942-NEXT:    ;;#ASMSTART383; GFX942-NEXT:    ; def v[0:3]384; GFX942-NEXT:    ;;#ASMEND385; GFX942-NEXT:    global_store_dwordx2 v8, v[4:5], s[0:1] offset:16386; GFX942-NEXT:    v_mov_b32_e32 v4, v2387; GFX942-NEXT:    v_mov_b32_e32 v5, v3388; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1]389; GFX942-NEXT:    s_waitcnt vmcnt(0)390; GFX942-NEXT:    s_setpc_b64 s[30:31]391  %vec0 = call <2 x ptr> asm "; def $0", "=v"()392  %vec1 = call <2 x ptr> asm "; def $0", "=v"()393  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 3, i32 0>394  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32395  ret void396}397 398define void @v_shuffle_v3p0_v2p0__3_3_1(ptr addrspace(1) inreg %ptr) {399; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_3_1:400; GFX900:       ; %bb.0:401; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)402; GFX900-NEXT:    v_mov_b32_e32 v6, 0403; GFX900-NEXT:    ;;#ASMSTART404; GFX900-NEXT:    ; def v[2:5]405; GFX900-NEXT:    ;;#ASMEND406; GFX900-NEXT:    ;;#ASMSTART407; GFX900-NEXT:    ; def v[0:3]408; GFX900-NEXT:    ;;#ASMEND409; GFX900-NEXT:    global_store_dwordx2 v6, v[4:5], s[16:17] offset:16410; GFX900-NEXT:    v_mov_b32_e32 v4, v2411; GFX900-NEXT:    v_mov_b32_e32 v5, v3412; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]413; GFX900-NEXT:    s_waitcnt vmcnt(0)414; GFX900-NEXT:    s_setpc_b64 s[30:31]415;416; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_3_1:417; GFX90A:       ; %bb.0:418; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)419; GFX90A-NEXT:    v_mov_b32_e32 v6, 0420; GFX90A-NEXT:    ;;#ASMSTART421; GFX90A-NEXT:    ; def v[2:5]422; GFX90A-NEXT:    ;;#ASMEND423; GFX90A-NEXT:    ;;#ASMSTART424; GFX90A-NEXT:    ; def v[0:3]425; GFX90A-NEXT:    ;;#ASMEND426; GFX90A-NEXT:    global_store_dwordx2 v6, v[4:5], s[16:17] offset:16427; GFX90A-NEXT:    v_mov_b32_e32 v4, v2428; GFX90A-NEXT:    v_mov_b32_e32 v5, v3429; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]430; GFX90A-NEXT:    s_waitcnt vmcnt(0)431; GFX90A-NEXT:    s_setpc_b64 s[30:31]432;433; GFX942-LABEL: v_shuffle_v3p0_v2p0__3_3_1:434; GFX942:       ; %bb.0:435; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)436; GFX942-NEXT:    v_mov_b32_e32 v6, 0437; GFX942-NEXT:    ;;#ASMSTART438; GFX942-NEXT:    ; def v[2:5]439; GFX942-NEXT:    ;;#ASMEND440; GFX942-NEXT:    global_store_dwordx2 v6, v[4:5], s[0:1] offset:16441; GFX942-NEXT:    ;;#ASMSTART442; GFX942-NEXT:    ; def v[0:3]443; GFX942-NEXT:    ;;#ASMEND444; GFX942-NEXT:    s_nop 0445; GFX942-NEXT:    v_mov_b32_e32 v4, v2446; GFX942-NEXT:    v_mov_b32_e32 v5, v3447; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]448; GFX942-NEXT:    s_waitcnt vmcnt(0)449; GFX942-NEXT:    s_setpc_b64 s[30:31]450  %vec0 = call <2 x ptr> asm "; def $0", "=v"()451  %vec1 = call <2 x ptr> asm "; def $0", "=v"()452  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 3, i32 1>453  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32454  ret void455}456 457define void @v_shuffle_v3p0_v2p0__3_3_2(ptr addrspace(1) inreg %ptr) {458; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_3_2:459; GFX900:       ; %bb.0:460; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)461; GFX900-NEXT:    v_mov_b32_e32 v6, 0462; GFX900-NEXT:    ;;#ASMSTART463; GFX900-NEXT:    ; def v[0:3]464; GFX900-NEXT:    ;;#ASMEND465; GFX900-NEXT:    v_mov_b32_e32 v4, v2466; GFX900-NEXT:    v_mov_b32_e32 v5, v3467; GFX900-NEXT:    global_store_dwordx2 v6, v[0:1], s[16:17] offset:16468; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]469; GFX900-NEXT:    s_waitcnt vmcnt(0)470; GFX900-NEXT:    s_setpc_b64 s[30:31]471;472; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_3_2:473; GFX90A:       ; %bb.0:474; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)475; GFX90A-NEXT:    v_mov_b32_e32 v6, 0476; GFX90A-NEXT:    ;;#ASMSTART477; GFX90A-NEXT:    ; def v[0:3]478; GFX90A-NEXT:    ;;#ASMEND479; GFX90A-NEXT:    v_mov_b32_e32 v4, v2480; GFX90A-NEXT:    v_mov_b32_e32 v5, v3481; GFX90A-NEXT:    global_store_dwordx2 v6, v[0:1], s[16:17] offset:16482; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]483; GFX90A-NEXT:    s_waitcnt vmcnt(0)484; GFX90A-NEXT:    s_setpc_b64 s[30:31]485;486; GFX942-LABEL: v_shuffle_v3p0_v2p0__3_3_2:487; GFX942:       ; %bb.0:488; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)489; GFX942-NEXT:    v_mov_b32_e32 v6, 0490; GFX942-NEXT:    ;;#ASMSTART491; GFX942-NEXT:    ; def v[0:3]492; GFX942-NEXT:    ;;#ASMEND493; GFX942-NEXT:    global_store_dwordx2 v6, v[0:1], s[0:1] offset:16494; GFX942-NEXT:    v_mov_b32_e32 v4, v2495; GFX942-NEXT:    v_mov_b32_e32 v5, v3496; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]497; GFX942-NEXT:    s_waitcnt vmcnt(0)498; GFX942-NEXT:    s_setpc_b64 s[30:31]499  %vec0 = call <2 x ptr> asm "; def $0", "=v"()500  %vec1 = call <2 x ptr> asm "; def $0", "=v"()501  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 3, i32 2>502  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32503  ret void504}505 506define void @v_shuffle_v3p0_v2p0__3_3_3(ptr addrspace(1) inreg %ptr) {507; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_3_3:508; GFX900:       ; %bb.0:509; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)510; GFX900-NEXT:    v_mov_b32_e32 v6, 0511; GFX900-NEXT:    ;;#ASMSTART512; GFX900-NEXT:    ; def v[0:3]513; GFX900-NEXT:    ;;#ASMEND514; GFX900-NEXT:    v_mov_b32_e32 v4, v2515; GFX900-NEXT:    v_mov_b32_e32 v5, v3516; GFX900-NEXT:    global_store_dwordx2 v6, v[2:3], s[16:17] offset:16517; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]518; GFX900-NEXT:    s_waitcnt vmcnt(0)519; GFX900-NEXT:    s_setpc_b64 s[30:31]520;521; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_3_3:522; GFX90A:       ; %bb.0:523; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)524; GFX90A-NEXT:    v_mov_b32_e32 v6, 0525; GFX90A-NEXT:    ;;#ASMSTART526; GFX90A-NEXT:    ; def v[0:3]527; GFX90A-NEXT:    ;;#ASMEND528; GFX90A-NEXT:    v_mov_b32_e32 v4, v2529; GFX90A-NEXT:    v_mov_b32_e32 v5, v3530; GFX90A-NEXT:    global_store_dwordx2 v6, v[2:3], s[16:17] offset:16531; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]532; GFX90A-NEXT:    s_waitcnt vmcnt(0)533; GFX90A-NEXT:    s_setpc_b64 s[30:31]534;535; GFX942-LABEL: v_shuffle_v3p0_v2p0__3_3_3:536; GFX942:       ; %bb.0:537; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)538; GFX942-NEXT:    v_mov_b32_e32 v6, 0539; GFX942-NEXT:    ;;#ASMSTART540; GFX942-NEXT:    ; def v[0:3]541; GFX942-NEXT:    ;;#ASMEND542; GFX942-NEXT:    global_store_dwordx2 v6, v[2:3], s[0:1] offset:16543; GFX942-NEXT:    v_mov_b32_e32 v4, v2544; GFX942-NEXT:    v_mov_b32_e32 v5, v3545; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]546; GFX942-NEXT:    s_waitcnt vmcnt(0)547; GFX942-NEXT:    s_setpc_b64 s[30:31]548  %vec0 = call <2 x ptr> asm "; def $0", "=v"()549  %vec1 = call <2 x ptr> asm "; def $0", "=v"()550  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 3, i32 3>551  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32552  ret void553}554 555define void @v_shuffle_v3p0_v2p0__u_0_0(ptr addrspace(1) inreg %ptr) {556; GFX900-LABEL: v_shuffle_v3p0_v2p0__u_0_0:557; GFX900:       ; %bb.0:558; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)559; GFX900-NEXT:    v_mov_b32_e32 v0, 0560; GFX900-NEXT:    ;;#ASMSTART561; GFX900-NEXT:    ; def v[2:5]562; GFX900-NEXT:    ;;#ASMEND563; GFX900-NEXT:    global_store_dwordx2 v0, v[2:3], s[16:17] offset:16564; GFX900-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17]565; GFX900-NEXT:    s_waitcnt vmcnt(0)566; GFX900-NEXT:    s_setpc_b64 s[30:31]567;568; GFX90A-LABEL: v_shuffle_v3p0_v2p0__u_0_0:569; GFX90A:       ; %bb.0:570; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)571; GFX90A-NEXT:    v_mov_b32_e32 v0, 0572; GFX90A-NEXT:    ;;#ASMSTART573; GFX90A-NEXT:    ; def v[2:5]574; GFX90A-NEXT:    ;;#ASMEND575; GFX90A-NEXT:    global_store_dwordx2 v0, v[2:3], s[16:17] offset:16576; GFX90A-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17]577; GFX90A-NEXT:    s_waitcnt vmcnt(0)578; GFX90A-NEXT:    s_setpc_b64 s[30:31]579;580; GFX942-LABEL: v_shuffle_v3p0_v2p0__u_0_0:581; GFX942:       ; %bb.0:582; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)583; GFX942-NEXT:    v_mov_b32_e32 v0, 0584; GFX942-NEXT:    ;;#ASMSTART585; GFX942-NEXT:    ; def v[2:5]586; GFX942-NEXT:    ;;#ASMEND587; GFX942-NEXT:    global_store_dwordx2 v0, v[2:3], s[0:1] offset:16588; GFX942-NEXT:    global_store_dwordx4 v0, v[0:3], s[0:1]589; GFX942-NEXT:    s_waitcnt vmcnt(0)590; GFX942-NEXT:    s_setpc_b64 s[30:31]591  %vec0 = call <2 x ptr> asm "; def $0", "=v"()592  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 poison, i32 0, i32 0>593  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32594  ret void595}596 597define void @v_shuffle_v3p0_v2p0__0_0_0(ptr addrspace(1) inreg %ptr) {598; GFX900-LABEL: v_shuffle_v3p0_v2p0__0_0_0:599; GFX900:       ; %bb.0:600; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)601; GFX900-NEXT:    ;;#ASMSTART602; GFX900-NEXT:    ; def v[0:3]603; GFX900-NEXT:    ;;#ASMEND604; GFX900-NEXT:    v_mov_b32_e32 v4, 0605; GFX900-NEXT:    v_mov_b32_e32 v2, v0606; GFX900-NEXT:    v_mov_b32_e32 v3, v1607; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17] offset:16608; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]609; GFX900-NEXT:    s_waitcnt vmcnt(0)610; GFX900-NEXT:    s_setpc_b64 s[30:31]611;612; GFX90A-LABEL: v_shuffle_v3p0_v2p0__0_0_0:613; GFX90A:       ; %bb.0:614; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)615; GFX90A-NEXT:    ;;#ASMSTART616; GFX90A-NEXT:    ; def v[0:3]617; GFX90A-NEXT:    ;;#ASMEND618; GFX90A-NEXT:    v_mov_b32_e32 v4, 0619; GFX90A-NEXT:    v_mov_b32_e32 v2, v0620; GFX90A-NEXT:    v_mov_b32_e32 v3, v1621; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17] offset:16622; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]623; GFX90A-NEXT:    s_waitcnt vmcnt(0)624; GFX90A-NEXT:    s_setpc_b64 s[30:31]625;626; GFX942-LABEL: v_shuffle_v3p0_v2p0__0_0_0:627; GFX942:       ; %bb.0:628; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)629; GFX942-NEXT:    ;;#ASMSTART630; GFX942-NEXT:    ; def v[0:3]631; GFX942-NEXT:    ;;#ASMEND632; GFX942-NEXT:    v_mov_b32_e32 v4, 0633; GFX942-NEXT:    v_mov_b32_e32 v2, v0634; GFX942-NEXT:    v_mov_b32_e32 v3, v1635; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] offset:16636; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]637; GFX942-NEXT:    s_waitcnt vmcnt(0)638; GFX942-NEXT:    s_setpc_b64 s[30:31]639  %vec0 = call <2 x ptr> asm "; def $0", "=v"()640  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> zeroinitializer641  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32642  ret void643}644 645define void @v_shuffle_v3p0_v2p0__1_0_0(ptr addrspace(1) inreg %ptr) {646; GFX900-LABEL: v_shuffle_v3p0_v2p0__1_0_0:647; GFX900:       ; %bb.0:648; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)649; GFX900-NEXT:    v_mov_b32_e32 v6, 0650; GFX900-NEXT:    ;;#ASMSTART651; GFX900-NEXT:    ; def v[0:3]652; GFX900-NEXT:    ;;#ASMEND653; GFX900-NEXT:    v_mov_b32_e32 v4, v0654; GFX900-NEXT:    v_mov_b32_e32 v5, v1655; GFX900-NEXT:    global_store_dwordx2 v6, v[0:1], s[16:17] offset:16656; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]657; GFX900-NEXT:    s_waitcnt vmcnt(0)658; GFX900-NEXT:    s_setpc_b64 s[30:31]659;660; GFX90A-LABEL: v_shuffle_v3p0_v2p0__1_0_0:661; GFX90A:       ; %bb.0:662; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)663; GFX90A-NEXT:    v_mov_b32_e32 v6, 0664; GFX90A-NEXT:    ;;#ASMSTART665; GFX90A-NEXT:    ; def v[0:3]666; GFX90A-NEXT:    ;;#ASMEND667; GFX90A-NEXT:    v_mov_b32_e32 v4, v0668; GFX90A-NEXT:    v_mov_b32_e32 v5, v1669; GFX90A-NEXT:    global_store_dwordx2 v6, v[0:1], s[16:17] offset:16670; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]671; GFX90A-NEXT:    s_waitcnt vmcnt(0)672; GFX90A-NEXT:    s_setpc_b64 s[30:31]673;674; GFX942-LABEL: v_shuffle_v3p0_v2p0__1_0_0:675; GFX942:       ; %bb.0:676; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)677; GFX942-NEXT:    v_mov_b32_e32 v6, 0678; GFX942-NEXT:    ;;#ASMSTART679; GFX942-NEXT:    ; def v[0:3]680; GFX942-NEXT:    ;;#ASMEND681; GFX942-NEXT:    global_store_dwordx2 v6, v[0:1], s[0:1] offset:16682; GFX942-NEXT:    v_mov_b32_e32 v4, v0683; GFX942-NEXT:    v_mov_b32_e32 v5, v1684; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]685; GFX942-NEXT:    s_waitcnt vmcnt(0)686; GFX942-NEXT:    s_setpc_b64 s[30:31]687  %vec0 = call <2 x ptr> asm "; def $0", "=v"()688  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 1, i32 0, i32 0>689  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32690  ret void691}692 693define void @v_shuffle_v3p0_v2p0__2_0_0(ptr addrspace(1) inreg %ptr) {694; GFX900-LABEL: v_shuffle_v3p0_v2p0__2_0_0:695; GFX900:       ; %bb.0:696; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)697; GFX900-NEXT:    v_mov_b32_e32 v0, 0698; GFX900-NEXT:    ;;#ASMSTART699; GFX900-NEXT:    ; def v[2:5]700; GFX900-NEXT:    ;;#ASMEND701; GFX900-NEXT:    global_store_dwordx2 v0, v[2:3], s[16:17] offset:16702; GFX900-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17]703; GFX900-NEXT:    s_waitcnt vmcnt(0)704; GFX900-NEXT:    s_setpc_b64 s[30:31]705;706; GFX90A-LABEL: v_shuffle_v3p0_v2p0__2_0_0:707; GFX90A:       ; %bb.0:708; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)709; GFX90A-NEXT:    v_mov_b32_e32 v0, 0710; GFX90A-NEXT:    ;;#ASMSTART711; GFX90A-NEXT:    ; def v[2:5]712; GFX90A-NEXT:    ;;#ASMEND713; GFX90A-NEXT:    global_store_dwordx2 v0, v[2:3], s[16:17] offset:16714; GFX90A-NEXT:    global_store_dwordx4 v0, v[0:3], 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_v3p0_v2p0__2_0_0:719; GFX942:       ; %bb.0:720; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)721; GFX942-NEXT:    v_mov_b32_e32 v0, 0722; GFX942-NEXT:    ;;#ASMSTART723; GFX942-NEXT:    ; def v[2:5]724; GFX942-NEXT:    ;;#ASMEND725; GFX942-NEXT:    global_store_dwordx2 v0, v[2:3], s[0:1] offset:16726; GFX942-NEXT:    global_store_dwordx4 v0, v[0:3], s[0:1]727; GFX942-NEXT:    s_waitcnt vmcnt(0)728; GFX942-NEXT:    s_setpc_b64 s[30:31]729  %vec0 = call <2 x ptr> asm "; def $0", "=v"()730  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 2, i32 0, i32 0>731  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32732  ret void733}734 735define void @v_shuffle_v3p0_v2p0__3_0_0(ptr addrspace(1) inreg %ptr) {736; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_0_0:737; GFX900:       ; %bb.0:738; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)739; GFX900-NEXT:    v_mov_b32_e32 v8, 0740; GFX900-NEXT:    ;;#ASMSTART741; GFX900-NEXT:    ; def v[4:7]742; GFX900-NEXT:    ;;#ASMEND743; GFX900-NEXT:    ;;#ASMSTART744; GFX900-NEXT:    ; def v[0:3]745; GFX900-NEXT:    ;;#ASMEND746; GFX900-NEXT:    global_store_dwordx2 v8, v[4:5], s[16:17] offset:16747; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]748; GFX900-NEXT:    s_waitcnt vmcnt(0)749; GFX900-NEXT:    s_setpc_b64 s[30:31]750;751; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_0_0:752; GFX90A:       ; %bb.0:753; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)754; GFX90A-NEXT:    v_mov_b32_e32 v8, 0755; GFX90A-NEXT:    ;;#ASMSTART756; GFX90A-NEXT:    ; def v[4:7]757; GFX90A-NEXT:    ;;#ASMEND758; GFX90A-NEXT:    ;;#ASMSTART759; GFX90A-NEXT:    ; def v[0:3]760; GFX90A-NEXT:    ;;#ASMEND761; GFX90A-NEXT:    global_store_dwordx2 v8, v[4:5], s[16:17] offset:16762; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]763; GFX90A-NEXT:    s_waitcnt vmcnt(0)764; GFX90A-NEXT:    s_setpc_b64 s[30:31]765;766; GFX942-LABEL: v_shuffle_v3p0_v2p0__3_0_0:767; GFX942:       ; %bb.0:768; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)769; GFX942-NEXT:    v_mov_b32_e32 v8, 0770; GFX942-NEXT:    ;;#ASMSTART771; GFX942-NEXT:    ; def v[4:7]772; GFX942-NEXT:    ;;#ASMEND773; GFX942-NEXT:    ;;#ASMSTART774; GFX942-NEXT:    ; def v[0:3]775; GFX942-NEXT:    ;;#ASMEND776; GFX942-NEXT:    global_store_dwordx2 v8, v[4:5], s[0:1] offset:16777; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1]778; GFX942-NEXT:    s_waitcnt vmcnt(0)779; GFX942-NEXT:    s_setpc_b64 s[30:31]780  %vec0 = call <2 x ptr> asm "; def $0", "=v"()781  %vec1 = call <2 x ptr> asm "; def $0", "=v"()782  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 0, i32 0>783  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32784  ret void785}786 787define void @v_shuffle_v3p0_v2p0__3_u_0(ptr addrspace(1) inreg %ptr) {788; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_u_0:789; GFX900:       ; %bb.0:790; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)791; GFX900-NEXT:    v_mov_b32_e32 v8, 0792; GFX900-NEXT:    ;;#ASMSTART793; GFX900-NEXT:    ; def v[4:7]794; GFX900-NEXT:    ;;#ASMEND795; GFX900-NEXT:    ;;#ASMSTART796; GFX900-NEXT:    ; def v[0:3]797; GFX900-NEXT:    ;;#ASMEND798; GFX900-NEXT:    global_store_dwordx2 v8, v[4:5], s[16:17] offset:16799; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]800; GFX900-NEXT:    s_waitcnt vmcnt(0)801; GFX900-NEXT:    s_setpc_b64 s[30:31]802;803; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_u_0:804; GFX90A:       ; %bb.0:805; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)806; GFX90A-NEXT:    v_mov_b32_e32 v8, 0807; GFX90A-NEXT:    ;;#ASMSTART808; GFX90A-NEXT:    ; def v[4:7]809; GFX90A-NEXT:    ;;#ASMEND810; GFX90A-NEXT:    ;;#ASMSTART811; GFX90A-NEXT:    ; def v[0:3]812; GFX90A-NEXT:    ;;#ASMEND813; GFX90A-NEXT:    global_store_dwordx2 v8, v[4:5], s[16:17] offset:16814; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]815; GFX90A-NEXT:    s_waitcnt vmcnt(0)816; GFX90A-NEXT:    s_setpc_b64 s[30:31]817;818; GFX942-LABEL: v_shuffle_v3p0_v2p0__3_u_0:819; GFX942:       ; %bb.0:820; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)821; GFX942-NEXT:    v_mov_b32_e32 v8, 0822; GFX942-NEXT:    ;;#ASMSTART823; GFX942-NEXT:    ; def v[4:7]824; GFX942-NEXT:    ;;#ASMEND825; GFX942-NEXT:    ;;#ASMSTART826; GFX942-NEXT:    ; def v[0:3]827; GFX942-NEXT:    ;;#ASMEND828; GFX942-NEXT:    global_store_dwordx2 v8, v[4:5], s[0:1] offset:16829; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1]830; GFX942-NEXT:    s_waitcnt vmcnt(0)831; GFX942-NEXT:    s_setpc_b64 s[30:31]832  %vec0 = call <2 x ptr> asm "; def $0", "=v"()833  %vec1 = call <2 x ptr> asm "; def $0", "=v"()834  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 poison, i32 0>835  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32836  ret void837}838 839define void @v_shuffle_v3p0_v2p0__3_1_0(ptr addrspace(1) inreg %ptr) {840; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_1_0:841; GFX900:       ; %bb.0:842; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)843; GFX900-NEXT:    v_mov_b32_e32 v8, 0844; GFX900-NEXT:    ;;#ASMSTART845; GFX900-NEXT:    ; def v[4:7]846; GFX900-NEXT:    ;;#ASMEND847; GFX900-NEXT:    global_store_dwordx2 v8, v[4:5], s[16:17] offset:16848; GFX900-NEXT:    v_mov_b32_e32 v4, v6849; GFX900-NEXT:    v_mov_b32_e32 v5, v7850; GFX900-NEXT:    ;;#ASMSTART851; GFX900-NEXT:    ; def v[0:3]852; GFX900-NEXT:    ;;#ASMEND853; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]854; GFX900-NEXT:    s_waitcnt vmcnt(0)855; GFX900-NEXT:    s_setpc_b64 s[30:31]856;857; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_1_0:858; GFX90A:       ; %bb.0:859; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)860; GFX90A-NEXT:    v_mov_b32_e32 v8, 0861; GFX90A-NEXT:    ;;#ASMSTART862; GFX90A-NEXT:    ; def v[4:7]863; GFX90A-NEXT:    ;;#ASMEND864; GFX90A-NEXT:    global_store_dwordx2 v8, v[4:5], s[16:17] offset:16865; GFX90A-NEXT:    v_mov_b32_e32 v4, v6866; GFX90A-NEXT:    v_mov_b32_e32 v5, v7867; GFX90A-NEXT:    ;;#ASMSTART868; GFX90A-NEXT:    ; def v[0:3]869; GFX90A-NEXT:    ;;#ASMEND870; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]871; GFX90A-NEXT:    s_waitcnt vmcnt(0)872; GFX90A-NEXT:    s_setpc_b64 s[30:31]873;874; GFX942-LABEL: v_shuffle_v3p0_v2p0__3_1_0:875; GFX942:       ; %bb.0:876; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)877; GFX942-NEXT:    v_mov_b32_e32 v8, 0878; GFX942-NEXT:    ;;#ASMSTART879; GFX942-NEXT:    ; def v[4:7]880; GFX942-NEXT:    ;;#ASMEND881; GFX942-NEXT:    global_store_dwordx2 v8, v[4:5], s[0:1] offset:16882; GFX942-NEXT:    v_mov_b32_e32 v4, v6883; GFX942-NEXT:    v_mov_b32_e32 v5, v7884; GFX942-NEXT:    ;;#ASMSTART885; GFX942-NEXT:    ; def v[0:3]886; GFX942-NEXT:    ;;#ASMEND887; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1]888; GFX942-NEXT:    s_waitcnt vmcnt(0)889; GFX942-NEXT:    s_setpc_b64 s[30:31]890  %vec0 = call <2 x ptr> asm "; def $0", "=v"()891  %vec1 = call <2 x ptr> asm "; def $0", "=v"()892  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 1, i32 0>893  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32894  ret void895}896 897define void @v_shuffle_v3p0_v2p0__3_2_0(ptr addrspace(1) inreg %ptr) {898; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_2_0:899; GFX900:       ; %bb.0:900; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)901; GFX900-NEXT:    v_mov_b32_e32 v8, 0902; GFX900-NEXT:    ;;#ASMSTART903; GFX900-NEXT:    ; def v[4:7]904; GFX900-NEXT:    ;;#ASMEND905; GFX900-NEXT:    ;;#ASMSTART906; GFX900-NEXT:    ; def v[0:3]907; GFX900-NEXT:    ;;#ASMEND908; GFX900-NEXT:    global_store_dwordx2 v8, v[4:5], s[16:17] offset:16909; GFX900-NEXT:    v_mov_b32_e32 v4, v0910; GFX900-NEXT:    v_mov_b32_e32 v5, v1911; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]912; GFX900-NEXT:    s_waitcnt vmcnt(0)913; GFX900-NEXT:    s_setpc_b64 s[30:31]914;915; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_2_0:916; GFX90A:       ; %bb.0:917; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)918; GFX90A-NEXT:    v_mov_b32_e32 v8, 0919; GFX90A-NEXT:    ;;#ASMSTART920; GFX90A-NEXT:    ; def v[4:7]921; GFX90A-NEXT:    ;;#ASMEND922; GFX90A-NEXT:    ;;#ASMSTART923; GFX90A-NEXT:    ; def v[0:3]924; GFX90A-NEXT:    ;;#ASMEND925; GFX90A-NEXT:    global_store_dwordx2 v8, v[4:5], s[16:17] offset:16926; GFX90A-NEXT:    v_mov_b32_e32 v4, v0927; GFX90A-NEXT:    v_mov_b32_e32 v5, v1928; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]929; GFX90A-NEXT:    s_waitcnt vmcnt(0)930; GFX90A-NEXT:    s_setpc_b64 s[30:31]931;932; GFX942-LABEL: v_shuffle_v3p0_v2p0__3_2_0:933; GFX942:       ; %bb.0:934; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)935; GFX942-NEXT:    v_mov_b32_e32 v8, 0936; GFX942-NEXT:    ;;#ASMSTART937; GFX942-NEXT:    ; def v[4:7]938; GFX942-NEXT:    ;;#ASMEND939; GFX942-NEXT:    ;;#ASMSTART940; GFX942-NEXT:    ; def v[0:3]941; GFX942-NEXT:    ;;#ASMEND942; GFX942-NEXT:    global_store_dwordx2 v8, v[4:5], s[0:1] offset:16943; GFX942-NEXT:    v_mov_b32_e32 v4, v0944; GFX942-NEXT:    v_mov_b32_e32 v5, v1945; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1]946; GFX942-NEXT:    s_waitcnt vmcnt(0)947; GFX942-NEXT:    s_setpc_b64 s[30:31]948  %vec0 = call <2 x ptr> asm "; def $0", "=v"()949  %vec1 = call <2 x ptr> asm "; def $0", "=v"()950  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 2, i32 0>951  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32952  ret void953}954 955define void @v_shuffle_v3p0_v2p0__u_1_1(ptr addrspace(1) inreg %ptr) {956; GFX900-LABEL: v_shuffle_v3p0_v2p0__u_1_1:957; GFX900:       ; %bb.0:958; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)959; GFX900-NEXT:    v_mov_b32_e32 v4, 0960; GFX900-NEXT:    ;;#ASMSTART961; GFX900-NEXT:    ; def v[0:3]962; GFX900-NEXT:    ;;#ASMEND963; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17] offset:16964; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]965; GFX900-NEXT:    s_waitcnt vmcnt(0)966; GFX900-NEXT:    s_setpc_b64 s[30:31]967;968; GFX90A-LABEL: v_shuffle_v3p0_v2p0__u_1_1:969; GFX90A:       ; %bb.0:970; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)971; GFX90A-NEXT:    v_mov_b32_e32 v4, 0972; GFX90A-NEXT:    ;;#ASMSTART973; GFX90A-NEXT:    ; def v[0:3]974; GFX90A-NEXT:    ;;#ASMEND975; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17] offset:16976; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]977; GFX90A-NEXT:    s_waitcnt vmcnt(0)978; GFX90A-NEXT:    s_setpc_b64 s[30:31]979;980; GFX942-LABEL: v_shuffle_v3p0_v2p0__u_1_1:981; GFX942:       ; %bb.0:982; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)983; GFX942-NEXT:    v_mov_b32_e32 v4, 0984; GFX942-NEXT:    ;;#ASMSTART985; GFX942-NEXT:    ; def v[0:3]986; GFX942-NEXT:    ;;#ASMEND987; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] offset:16988; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]989; GFX942-NEXT:    s_waitcnt vmcnt(0)990; GFX942-NEXT:    s_setpc_b64 s[30:31]991  %vec0 = call <2 x ptr> asm "; def $0", "=v"()992  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 poison, i32 1, i32 1>993  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32994  ret void995}996 997define void @v_shuffle_v3p0_v2p0__0_1_1(ptr addrspace(1) inreg %ptr) {998; GFX900-LABEL: v_shuffle_v3p0_v2p0__0_1_1:999; GFX900:       ; %bb.0:1000; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1001; GFX900-NEXT:    v_mov_b32_e32 v4, 01002; GFX900-NEXT:    ;;#ASMSTART1003; GFX900-NEXT:    ; def v[0:3]1004; GFX900-NEXT:    ;;#ASMEND1005; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17] offset:161006; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1007; GFX900-NEXT:    s_waitcnt vmcnt(0)1008; GFX900-NEXT:    s_setpc_b64 s[30:31]1009;1010; GFX90A-LABEL: v_shuffle_v3p0_v2p0__0_1_1:1011; GFX90A:       ; %bb.0:1012; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1013; GFX90A-NEXT:    v_mov_b32_e32 v4, 01014; GFX90A-NEXT:    ;;#ASMSTART1015; GFX90A-NEXT:    ; def v[0:3]1016; GFX90A-NEXT:    ;;#ASMEND1017; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17] offset:161018; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1019; GFX90A-NEXT:    s_waitcnt vmcnt(0)1020; GFX90A-NEXT:    s_setpc_b64 s[30:31]1021;1022; GFX942-LABEL: v_shuffle_v3p0_v2p0__0_1_1:1023; GFX942:       ; %bb.0:1024; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1025; GFX942-NEXT:    v_mov_b32_e32 v4, 01026; GFX942-NEXT:    ;;#ASMSTART1027; GFX942-NEXT:    ; def v[0:3]1028; GFX942-NEXT:    ;;#ASMEND1029; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] offset:161030; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1031; GFX942-NEXT:    s_waitcnt vmcnt(0)1032; GFX942-NEXT:    s_setpc_b64 s[30:31]1033  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1034  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 0, i32 1, i32 1>1035  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321036  ret void1037}1038 1039define void @v_shuffle_v3p0_v2p0__1_1_1(ptr addrspace(1) inreg %ptr) {1040; GFX900-LABEL: v_shuffle_v3p0_v2p0__1_1_1:1041; GFX900:       ; %bb.0:1042; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1043; GFX900-NEXT:    v_mov_b32_e32 v6, 01044; GFX900-NEXT:    ;;#ASMSTART1045; GFX900-NEXT:    ; def v[0:3]1046; GFX900-NEXT:    ;;#ASMEND1047; GFX900-NEXT:    v_mov_b32_e32 v4, v21048; GFX900-NEXT:    v_mov_b32_e32 v5, v31049; GFX900-NEXT:    global_store_dwordx2 v6, v[2:3], s[16:17] offset:161050; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]1051; GFX900-NEXT:    s_waitcnt vmcnt(0)1052; GFX900-NEXT:    s_setpc_b64 s[30:31]1053;1054; GFX90A-LABEL: v_shuffle_v3p0_v2p0__1_1_1:1055; GFX90A:       ; %bb.0:1056; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1057; GFX90A-NEXT:    v_mov_b32_e32 v6, 01058; GFX90A-NEXT:    ;;#ASMSTART1059; GFX90A-NEXT:    ; def v[0:3]1060; GFX90A-NEXT:    ;;#ASMEND1061; GFX90A-NEXT:    v_mov_b32_e32 v4, v21062; GFX90A-NEXT:    v_mov_b32_e32 v5, v31063; GFX90A-NEXT:    global_store_dwordx2 v6, v[2:3], s[16:17] offset:161064; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]1065; GFX90A-NEXT:    s_waitcnt vmcnt(0)1066; GFX90A-NEXT:    s_setpc_b64 s[30:31]1067;1068; GFX942-LABEL: v_shuffle_v3p0_v2p0__1_1_1:1069; GFX942:       ; %bb.0:1070; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1071; GFX942-NEXT:    v_mov_b32_e32 v6, 01072; GFX942-NEXT:    ;;#ASMSTART1073; GFX942-NEXT:    ; def v[0:3]1074; GFX942-NEXT:    ;;#ASMEND1075; GFX942-NEXT:    global_store_dwordx2 v6, v[2:3], s[0:1] offset:161076; GFX942-NEXT:    v_mov_b32_e32 v4, v21077; GFX942-NEXT:    v_mov_b32_e32 v5, v31078; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]1079; GFX942-NEXT:    s_waitcnt vmcnt(0)1080; GFX942-NEXT:    s_setpc_b64 s[30:31]1081  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1082  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 1, i32 1, i32 1>1083  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321084  ret void1085}1086 1087define void @v_shuffle_v3p0_v2p0__2_1_1(ptr addrspace(1) inreg %ptr) {1088; GFX900-LABEL: v_shuffle_v3p0_v2p0__2_1_1:1089; GFX900:       ; %bb.0:1090; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1091; GFX900-NEXT:    v_mov_b32_e32 v4, 01092; GFX900-NEXT:    ;;#ASMSTART1093; GFX900-NEXT:    ; def v[0:3]1094; GFX900-NEXT:    ;;#ASMEND1095; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17] offset:161096; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1097; GFX900-NEXT:    s_waitcnt vmcnt(0)1098; GFX900-NEXT:    s_setpc_b64 s[30:31]1099;1100; GFX90A-LABEL: v_shuffle_v3p0_v2p0__2_1_1:1101; GFX90A:       ; %bb.0:1102; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1103; GFX90A-NEXT:    v_mov_b32_e32 v4, 01104; GFX90A-NEXT:    ;;#ASMSTART1105; GFX90A-NEXT:    ; def v[0:3]1106; GFX90A-NEXT:    ;;#ASMEND1107; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17] offset:161108; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1109; GFX90A-NEXT:    s_waitcnt vmcnt(0)1110; GFX90A-NEXT:    s_setpc_b64 s[30:31]1111;1112; GFX942-LABEL: v_shuffle_v3p0_v2p0__2_1_1:1113; GFX942:       ; %bb.0:1114; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1115; GFX942-NEXT:    v_mov_b32_e32 v4, 01116; GFX942-NEXT:    ;;#ASMSTART1117; GFX942-NEXT:    ; def v[0:3]1118; GFX942-NEXT:    ;;#ASMEND1119; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] offset:161120; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1121; GFX942-NEXT:    s_waitcnt vmcnt(0)1122; GFX942-NEXT:    s_setpc_b64 s[30:31]1123  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1124  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 2, i32 1, i32 1>1125  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321126  ret void1127}1128 1129define void @v_shuffle_v3p0_v2p0__3_1_1(ptr addrspace(1) inreg %ptr) {1130; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_1_1:1131; GFX900:       ; %bb.0:1132; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1133; GFX900-NEXT:    ;;#ASMSTART1134; GFX900-NEXT:    ; def v[2:5]1135; GFX900-NEXT:    ;;#ASMEND1136; GFX900-NEXT:    v_mov_b32_e32 v6, 01137; GFX900-NEXT:    ;;#ASMSTART1138; GFX900-NEXT:    ; def v[0:3]1139; GFX900-NEXT:    ;;#ASMEND1140; GFX900-NEXT:    global_store_dwordx2 v6, v[4:5], s[16:17] offset:161141; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]1142; GFX900-NEXT:    s_waitcnt vmcnt(0)1143; GFX900-NEXT:    s_setpc_b64 s[30:31]1144;1145; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_1_1:1146; GFX90A:       ; %bb.0:1147; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1148; GFX90A-NEXT:    ;;#ASMSTART1149; GFX90A-NEXT:    ; def v[2:5]1150; GFX90A-NEXT:    ;;#ASMEND1151; GFX90A-NEXT:    v_mov_b32_e32 v6, 01152; GFX90A-NEXT:    ;;#ASMSTART1153; GFX90A-NEXT:    ; def v[0:3]1154; GFX90A-NEXT:    ;;#ASMEND1155; GFX90A-NEXT:    global_store_dwordx2 v6, v[4:5], s[16:17] offset:161156; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]1157; GFX90A-NEXT:    s_waitcnt vmcnt(0)1158; GFX90A-NEXT:    s_setpc_b64 s[30:31]1159;1160; GFX942-LABEL: v_shuffle_v3p0_v2p0__3_1_1:1161; GFX942:       ; %bb.0:1162; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1163; GFX942-NEXT:    ;;#ASMSTART1164; GFX942-NEXT:    ; def v[2:5]1165; GFX942-NEXT:    ;;#ASMEND1166; GFX942-NEXT:    v_mov_b32_e32 v6, 01167; GFX942-NEXT:    ;;#ASMSTART1168; GFX942-NEXT:    ; def v[0:3]1169; GFX942-NEXT:    ;;#ASMEND1170; GFX942-NEXT:    global_store_dwordx2 v6, v[4:5], s[0:1] offset:161171; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]1172; GFX942-NEXT:    s_waitcnt vmcnt(0)1173; GFX942-NEXT:    s_setpc_b64 s[30:31]1174  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1175  %vec1 = call <2 x ptr> asm "; def $0", "=v"()1176  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 1, i32 1>1177  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321178  ret void1179}1180 1181define void @v_shuffle_v3p0_v2p0__3_u_1(ptr addrspace(1) inreg %ptr) {1182; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_u_1:1183; GFX900:       ; %bb.0:1184; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1185; GFX900-NEXT:    ;;#ASMSTART1186; GFX900-NEXT:    ; def v[2:5]1187; GFX900-NEXT:    ;;#ASMEND1188; GFX900-NEXT:    v_mov_b32_e32 v6, 01189; GFX900-NEXT:    ;;#ASMSTART1190; GFX900-NEXT:    ; def v[0:3]1191; GFX900-NEXT:    ;;#ASMEND1192; GFX900-NEXT:    global_store_dwordx2 v6, v[4:5], s[16:17] offset:161193; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]1194; GFX900-NEXT:    s_waitcnt vmcnt(0)1195; GFX900-NEXT:    s_setpc_b64 s[30:31]1196;1197; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_u_1:1198; GFX90A:       ; %bb.0:1199; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1200; GFX90A-NEXT:    ;;#ASMSTART1201; GFX90A-NEXT:    ; def v[2:5]1202; GFX90A-NEXT:    ;;#ASMEND1203; GFX90A-NEXT:    v_mov_b32_e32 v6, 01204; GFX90A-NEXT:    ;;#ASMSTART1205; GFX90A-NEXT:    ; def v[0:3]1206; GFX90A-NEXT:    ;;#ASMEND1207; GFX90A-NEXT:    global_store_dwordx2 v6, v[4:5], s[16:17] offset:161208; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]1209; GFX90A-NEXT:    s_waitcnt vmcnt(0)1210; GFX90A-NEXT:    s_setpc_b64 s[30:31]1211;1212; GFX942-LABEL: v_shuffle_v3p0_v2p0__3_u_1:1213; GFX942:       ; %bb.0:1214; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1215; GFX942-NEXT:    ;;#ASMSTART1216; GFX942-NEXT:    ; def v[2:5]1217; GFX942-NEXT:    ;;#ASMEND1218; GFX942-NEXT:    v_mov_b32_e32 v6, 01219; GFX942-NEXT:    ;;#ASMSTART1220; GFX942-NEXT:    ; def v[0:3]1221; GFX942-NEXT:    ;;#ASMEND1222; GFX942-NEXT:    global_store_dwordx2 v6, v[4:5], s[0:1] offset:161223; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]1224; GFX942-NEXT:    s_waitcnt vmcnt(0)1225; GFX942-NEXT:    s_setpc_b64 s[30:31]1226  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1227  %vec1 = call <2 x ptr> asm "; def $0", "=v"()1228  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 poison, i32 1>1229  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321230  ret void1231}1232 1233define void @v_shuffle_v3p0_v2p0__3_0_1(ptr addrspace(1) inreg %ptr) {1234; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_0_1:1235; GFX900:       ; %bb.0:1236; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1237; GFX900-NEXT:    v_mov_b32_e32 v8, 01238; GFX900-NEXT:    ;;#ASMSTART1239; GFX900-NEXT:    ; def v[4:7]1240; GFX900-NEXT:    ;;#ASMEND1241; GFX900-NEXT:    ;;#ASMSTART1242; GFX900-NEXT:    ; def v[0:3]1243; GFX900-NEXT:    ;;#ASMEND1244; GFX900-NEXT:    global_store_dwordx2 v8, v[6:7], s[16:17] offset:161245; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]1246; GFX900-NEXT:    s_waitcnt vmcnt(0)1247; GFX900-NEXT:    s_setpc_b64 s[30:31]1248;1249; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_0_1:1250; GFX90A:       ; %bb.0:1251; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1252; GFX90A-NEXT:    v_mov_b32_e32 v8, 01253; GFX90A-NEXT:    ;;#ASMSTART1254; GFX90A-NEXT:    ; def v[4:7]1255; GFX90A-NEXT:    ;;#ASMEND1256; GFX90A-NEXT:    ;;#ASMSTART1257; GFX90A-NEXT:    ; def v[0:3]1258; GFX90A-NEXT:    ;;#ASMEND1259; GFX90A-NEXT:    global_store_dwordx2 v8, v[6:7], s[16:17] offset:161260; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]1261; GFX90A-NEXT:    s_waitcnt vmcnt(0)1262; GFX90A-NEXT:    s_setpc_b64 s[30:31]1263;1264; GFX942-LABEL: v_shuffle_v3p0_v2p0__3_0_1:1265; GFX942:       ; %bb.0:1266; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1267; GFX942-NEXT:    v_mov_b32_e32 v8, 01268; GFX942-NEXT:    ;;#ASMSTART1269; GFX942-NEXT:    ; def v[4:7]1270; GFX942-NEXT:    ;;#ASMEND1271; GFX942-NEXT:    ;;#ASMSTART1272; GFX942-NEXT:    ; def v[0:3]1273; GFX942-NEXT:    ;;#ASMEND1274; GFX942-NEXT:    global_store_dwordx2 v8, v[6:7], s[0:1] offset:161275; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1]1276; GFX942-NEXT:    s_waitcnt vmcnt(0)1277; GFX942-NEXT:    s_setpc_b64 s[30:31]1278  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1279  %vec1 = call <2 x ptr> asm "; def $0", "=v"()1280  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 0, i32 1>1281  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321282  ret void1283}1284 1285define void @v_shuffle_v3p0_v2p0__3_2_1(ptr addrspace(1) inreg %ptr) {1286; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_2_1:1287; GFX900:       ; %bb.0:1288; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1289; GFX900-NEXT:    v_mov_b32_e32 v6, 01290; GFX900-NEXT:    ;;#ASMSTART1291; GFX900-NEXT:    ; def v[2:5]1292; GFX900-NEXT:    ;;#ASMEND1293; GFX900-NEXT:    ;;#ASMSTART1294; GFX900-NEXT:    ; def v[0:3]1295; GFX900-NEXT:    ;;#ASMEND1296; GFX900-NEXT:    global_store_dwordx2 v6, v[4:5], s[16:17] offset:161297; GFX900-NEXT:    v_mov_b32_e32 v4, v01298; GFX900-NEXT:    v_mov_b32_e32 v5, v11299; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]1300; GFX900-NEXT:    s_waitcnt vmcnt(0)1301; GFX900-NEXT:    s_setpc_b64 s[30:31]1302;1303; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_2_1:1304; GFX90A:       ; %bb.0:1305; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1306; GFX90A-NEXT:    v_mov_b32_e32 v6, 01307; GFX90A-NEXT:    ;;#ASMSTART1308; GFX90A-NEXT:    ; def v[2:5]1309; GFX90A-NEXT:    ;;#ASMEND1310; GFX90A-NEXT:    ;;#ASMSTART1311; GFX90A-NEXT:    ; def v[0:3]1312; GFX90A-NEXT:    ;;#ASMEND1313; GFX90A-NEXT:    global_store_dwordx2 v6, v[4:5], s[16:17] offset:161314; GFX90A-NEXT:    v_mov_b32_e32 v4, v01315; GFX90A-NEXT:    v_mov_b32_e32 v5, v11316; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]1317; GFX90A-NEXT:    s_waitcnt vmcnt(0)1318; GFX90A-NEXT:    s_setpc_b64 s[30:31]1319;1320; GFX942-LABEL: v_shuffle_v3p0_v2p0__3_2_1:1321; GFX942:       ; %bb.0:1322; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1323; GFX942-NEXT:    v_mov_b32_e32 v6, 01324; GFX942-NEXT:    ;;#ASMSTART1325; GFX942-NEXT:    ; def v[2:5]1326; GFX942-NEXT:    ;;#ASMEND1327; GFX942-NEXT:    global_store_dwordx2 v6, v[4:5], s[0:1] offset:161328; GFX942-NEXT:    ;;#ASMSTART1329; GFX942-NEXT:    ; def v[0:3]1330; GFX942-NEXT:    ;;#ASMEND1331; GFX942-NEXT:    s_nop 01332; GFX942-NEXT:    v_mov_b32_e32 v4, v01333; GFX942-NEXT:    v_mov_b32_e32 v5, v11334; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]1335; GFX942-NEXT:    s_waitcnt vmcnt(0)1336; GFX942-NEXT:    s_setpc_b64 s[30:31]1337  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1338  %vec1 = call <2 x ptr> asm "; def $0", "=v"()1339  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 2, i32 1>1340  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321341  ret void1342}1343 1344define void @v_shuffle_v3p0_v2p0__u_2_2(ptr addrspace(1) inreg %ptr) {1345; GFX9-LABEL: v_shuffle_v3p0_v2p0__u_2_2:1346; GFX9:       ; %bb.0:1347; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1348; GFX9-NEXT:    s_setpc_b64 s[30:31]1349  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1350  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 poison, i32 2, i32 2>1351  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321352  ret void1353}1354 1355define void @v_shuffle_v3p0_v2p0__0_2_2(ptr addrspace(1) inreg %ptr) {1356; GFX900-LABEL: v_shuffle_v3p0_v2p0__0_2_2:1357; GFX900:       ; %bb.0:1358; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1359; GFX900-NEXT:    v_mov_b32_e32 v4, 01360; GFX900-NEXT:    ;;#ASMSTART1361; GFX900-NEXT:    ; def v[0:3]1362; GFX900-NEXT:    ;;#ASMEND1363; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1364; GFX900-NEXT:    s_waitcnt vmcnt(0)1365; GFX900-NEXT:    s_setpc_b64 s[30:31]1366;1367; GFX90A-LABEL: v_shuffle_v3p0_v2p0__0_2_2:1368; GFX90A:       ; %bb.0:1369; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1370; GFX90A-NEXT:    v_mov_b32_e32 v4, 01371; GFX90A-NEXT:    ;;#ASMSTART1372; GFX90A-NEXT:    ; def v[0:3]1373; GFX90A-NEXT:    ;;#ASMEND1374; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1375; GFX90A-NEXT:    s_waitcnt vmcnt(0)1376; GFX90A-NEXT:    s_setpc_b64 s[30:31]1377;1378; GFX942-LABEL: v_shuffle_v3p0_v2p0__0_2_2:1379; GFX942:       ; %bb.0:1380; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1381; GFX942-NEXT:    v_mov_b32_e32 v4, 01382; GFX942-NEXT:    ;;#ASMSTART1383; GFX942-NEXT:    ; def v[0:3]1384; GFX942-NEXT:    ;;#ASMEND1385; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1386; GFX942-NEXT:    s_waitcnt vmcnt(0)1387; GFX942-NEXT:    s_setpc_b64 s[30:31]1388  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1389  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 0, i32 2, i32 2>1390  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321391  ret void1392}1393 1394define void @v_shuffle_v3p0_v2p0__1_2_2(ptr addrspace(1) inreg %ptr) {1395; GFX900-LABEL: v_shuffle_v3p0_v2p0__1_2_2:1396; GFX900:       ; %bb.0:1397; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1398; GFX900-NEXT:    v_mov_b32_e32 v4, 01399; GFX900-NEXT:    ;;#ASMSTART1400; GFX900-NEXT:    ; def v[0:3]1401; GFX900-NEXT:    ;;#ASMEND1402; GFX900-NEXT:    global_store_dwordx4 v4, v[2:5], s[16:17]1403; GFX900-NEXT:    s_waitcnt vmcnt(0)1404; GFX900-NEXT:    s_setpc_b64 s[30:31]1405;1406; GFX90A-LABEL: v_shuffle_v3p0_v2p0__1_2_2:1407; GFX90A:       ; %bb.0:1408; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1409; GFX90A-NEXT:    v_mov_b32_e32 v4, 01410; GFX90A-NEXT:    ;;#ASMSTART1411; GFX90A-NEXT:    ; def v[0:3]1412; GFX90A-NEXT:    ;;#ASMEND1413; GFX90A-NEXT:    global_store_dwordx4 v4, v[2:5], s[16:17]1414; GFX90A-NEXT:    s_waitcnt vmcnt(0)1415; GFX90A-NEXT:    s_setpc_b64 s[30:31]1416;1417; GFX942-LABEL: v_shuffle_v3p0_v2p0__1_2_2:1418; GFX942:       ; %bb.0:1419; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1420; GFX942-NEXT:    v_mov_b32_e32 v4, 01421; GFX942-NEXT:    ;;#ASMSTART1422; GFX942-NEXT:    ; def v[0:3]1423; GFX942-NEXT:    ;;#ASMEND1424; GFX942-NEXT:    global_store_dwordx4 v4, v[2:5], s[0:1]1425; GFX942-NEXT:    s_waitcnt vmcnt(0)1426; GFX942-NEXT:    s_setpc_b64 s[30:31]1427  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1428  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 1, i32 2, i32 2>1429  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321430  ret void1431}1432 1433define void @v_shuffle_v3p0_v2p0__2_2_2(ptr addrspace(1) inreg %ptr) {1434; GFX9-LABEL: v_shuffle_v3p0_v2p0__2_2_2:1435; GFX9:       ; %bb.0:1436; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1437; GFX9-NEXT:    s_setpc_b64 s[30:31]1438  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1439  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 2, i32 2, i32 2>1440  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321441  ret void1442}1443 1444define void @v_shuffle_v3p0_v2p0__3_2_2(ptr addrspace(1) inreg %ptr) {1445; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_2_2:1446; GFX900:       ; %bb.0:1447; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1448; GFX900-NEXT:    v_mov_b32_e32 v6, 01449; GFX900-NEXT:    ;;#ASMSTART1450; GFX900-NEXT:    ; def v[0:3]1451; GFX900-NEXT:    ;;#ASMEND1452; GFX900-NEXT:    v_mov_b32_e32 v4, v01453; GFX900-NEXT:    v_mov_b32_e32 v5, v11454; GFX900-NEXT:    global_store_dwordx2 v6, v[0:1], s[16:17] offset:161455; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]1456; GFX900-NEXT:    s_waitcnt vmcnt(0)1457; GFX900-NEXT:    s_setpc_b64 s[30:31]1458;1459; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_2_2:1460; GFX90A:       ; %bb.0:1461; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1462; GFX90A-NEXT:    v_mov_b32_e32 v6, 01463; GFX90A-NEXT:    ;;#ASMSTART1464; GFX90A-NEXT:    ; def v[0:3]1465; GFX90A-NEXT:    ;;#ASMEND1466; GFX90A-NEXT:    v_mov_b32_e32 v4, v01467; GFX90A-NEXT:    v_mov_b32_e32 v5, v11468; GFX90A-NEXT:    global_store_dwordx2 v6, v[0:1], s[16:17] offset:161469; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]1470; GFX90A-NEXT:    s_waitcnt vmcnt(0)1471; GFX90A-NEXT:    s_setpc_b64 s[30:31]1472;1473; GFX942-LABEL: v_shuffle_v3p0_v2p0__3_2_2:1474; GFX942:       ; %bb.0:1475; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1476; GFX942-NEXT:    v_mov_b32_e32 v6, 01477; GFX942-NEXT:    ;;#ASMSTART1478; GFX942-NEXT:    ; def v[0:3]1479; GFX942-NEXT:    ;;#ASMEND1480; GFX942-NEXT:    global_store_dwordx2 v6, v[0:1], s[0:1] offset:161481; GFX942-NEXT:    v_mov_b32_e32 v4, v01482; GFX942-NEXT:    v_mov_b32_e32 v5, v11483; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], 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, <3 x i32> <i32 3, i32 2, i32 2>1489  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321490  ret void1491}1492 1493define void @v_shuffle_v3p0_v2p0__3_u_2(ptr addrspace(1) inreg %ptr) {1494; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_u_2:1495; GFX900:       ; %bb.0:1496; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1497; GFX900-NEXT:    v_mov_b32_e32 v4, 01498; GFX900-NEXT:    ;;#ASMSTART1499; GFX900-NEXT:    ; def v[0:3]1500; GFX900-NEXT:    ;;#ASMEND1501; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17] offset:161502; GFX900-NEXT:    global_store_dwordx4 v4, v[2:5], s[16:17]1503; GFX900-NEXT:    s_waitcnt vmcnt(0)1504; GFX900-NEXT:    s_setpc_b64 s[30:31]1505;1506; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_u_2:1507; GFX90A:       ; %bb.0:1508; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1509; GFX90A-NEXT:    v_mov_b32_e32 v4, 01510; GFX90A-NEXT:    ;;#ASMSTART1511; GFX90A-NEXT:    ; def v[0:3]1512; GFX90A-NEXT:    ;;#ASMEND1513; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17] offset:161514; GFX90A-NEXT:    global_store_dwordx4 v4, v[2:5], s[16:17]1515; GFX90A-NEXT:    s_waitcnt vmcnt(0)1516; GFX90A-NEXT:    s_setpc_b64 s[30:31]1517;1518; GFX942-LABEL: v_shuffle_v3p0_v2p0__3_u_2:1519; GFX942:       ; %bb.0:1520; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1521; GFX942-NEXT:    v_mov_b32_e32 v4, 01522; GFX942-NEXT:    ;;#ASMSTART1523; GFX942-NEXT:    ; def v[0:3]1524; GFX942-NEXT:    ;;#ASMEND1525; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1] offset:161526; GFX942-NEXT:    global_store_dwordx4 v4, v[2:5], s[0:1]1527; GFX942-NEXT:    s_waitcnt vmcnt(0)1528; GFX942-NEXT:    s_setpc_b64 s[30:31]1529  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1530  %vec1 = call <2 x ptr> asm "; def $0", "=v"()1531  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 poison, i32 2>1532  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321533  ret void1534}1535 1536define void @v_shuffle_v3p0_v2p0__3_0_2(ptr addrspace(1) inreg %ptr) {1537; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_0_2:1538; GFX900:       ; %bb.0:1539; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1540; GFX900-NEXT:    v_mov_b32_e32 v8, 01541; GFX900-NEXT:    ;;#ASMSTART1542; GFX900-NEXT:    ; def v[0:3]1543; GFX900-NEXT:    ;;#ASMEND1544; GFX900-NEXT:    ;;#ASMSTART1545; GFX900-NEXT:    ; def v[4:7]1546; GFX900-NEXT:    ;;#ASMEND1547; GFX900-NEXT:    global_store_dwordx2 v8, v[0:1], s[16:17] offset:161548; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]1549; GFX900-NEXT:    s_waitcnt vmcnt(0)1550; GFX900-NEXT:    s_setpc_b64 s[30:31]1551;1552; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_0_2:1553; GFX90A:       ; %bb.0:1554; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1555; GFX90A-NEXT:    v_mov_b32_e32 v8, 01556; GFX90A-NEXT:    ;;#ASMSTART1557; GFX90A-NEXT:    ; def v[0:3]1558; GFX90A-NEXT:    ;;#ASMEND1559; GFX90A-NEXT:    ;;#ASMSTART1560; GFX90A-NEXT:    ; def v[4:7]1561; GFX90A-NEXT:    ;;#ASMEND1562; GFX90A-NEXT:    global_store_dwordx2 v8, v[0:1], s[16:17] offset:161563; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]1564; GFX90A-NEXT:    s_waitcnt vmcnt(0)1565; GFX90A-NEXT:    s_setpc_b64 s[30:31]1566;1567; GFX942-LABEL: v_shuffle_v3p0_v2p0__3_0_2:1568; GFX942:       ; %bb.0:1569; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1570; GFX942-NEXT:    v_mov_b32_e32 v8, 01571; GFX942-NEXT:    ;;#ASMSTART1572; GFX942-NEXT:    ; def v[0:3]1573; GFX942-NEXT:    ;;#ASMEND1574; GFX942-NEXT:    ;;#ASMSTART1575; GFX942-NEXT:    ; def v[4:7]1576; GFX942-NEXT:    ;;#ASMEND1577; GFX942-NEXT:    global_store_dwordx2 v8, v[0:1], s[0:1] offset:161578; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1]1579; GFX942-NEXT:    s_waitcnt vmcnt(0)1580; GFX942-NEXT:    s_setpc_b64 s[30:31]1581  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1582  %vec1 = call <2 x ptr> asm "; def $0", "=v"()1583  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 0, i32 2>1584  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321585  ret void1586}1587 1588define void @v_shuffle_v3p0_v2p0__3_1_2(ptr addrspace(1) inreg %ptr) {1589; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_1_2:1590; GFX900:       ; %bb.0:1591; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1592; GFX900-NEXT:    ;;#ASMSTART1593; GFX900-NEXT:    ; def v[2:5]1594; GFX900-NEXT:    ;;#ASMEND1595; GFX900-NEXT:    v_mov_b32_e32 v6, 01596; GFX900-NEXT:    ;;#ASMSTART1597; GFX900-NEXT:    ; def v[0:3]1598; GFX900-NEXT:    ;;#ASMEND1599; GFX900-NEXT:    global_store_dwordx2 v6, v[0:1], s[16:17] offset:161600; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]1601; GFX900-NEXT:    s_waitcnt vmcnt(0)1602; GFX900-NEXT:    s_setpc_b64 s[30:31]1603;1604; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_1_2:1605; GFX90A:       ; %bb.0:1606; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1607; GFX90A-NEXT:    ;;#ASMSTART1608; GFX90A-NEXT:    ; def v[2:5]1609; GFX90A-NEXT:    ;;#ASMEND1610; GFX90A-NEXT:    v_mov_b32_e32 v6, 01611; GFX90A-NEXT:    ;;#ASMSTART1612; GFX90A-NEXT:    ; def v[0:3]1613; GFX90A-NEXT:    ;;#ASMEND1614; GFX90A-NEXT:    global_store_dwordx2 v6, v[0:1], s[16:17] offset:161615; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]1616; GFX90A-NEXT:    s_waitcnt vmcnt(0)1617; GFX90A-NEXT:    s_setpc_b64 s[30:31]1618;1619; GFX942-LABEL: v_shuffle_v3p0_v2p0__3_1_2:1620; GFX942:       ; %bb.0:1621; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1622; GFX942-NEXT:    ;;#ASMSTART1623; GFX942-NEXT:    ; def v[2:5]1624; GFX942-NEXT:    ;;#ASMEND1625; GFX942-NEXT:    v_mov_b32_e32 v6, 01626; GFX942-NEXT:    ;;#ASMSTART1627; GFX942-NEXT:    ; def v[0:3]1628; GFX942-NEXT:    ;;#ASMEND1629; GFX942-NEXT:    global_store_dwordx2 v6, v[0:1], s[0:1] offset:161630; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]1631; GFX942-NEXT:    s_waitcnt vmcnt(0)1632; GFX942-NEXT:    s_setpc_b64 s[30:31]1633  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1634  %vec1 = call <2 x ptr> asm "; def $0", "=v"()1635  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 1, i32 2>1636  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321637  ret void1638}1639 1640define void @v_shuffle_v3p0_v2p0__u_3_3(ptr addrspace(1) inreg %ptr) {1641; GFX900-LABEL: v_shuffle_v3p0_v2p0__u_3_3:1642; GFX900:       ; %bb.0:1643; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1644; GFX900-NEXT:    v_mov_b32_e32 v4, 01645; GFX900-NEXT:    ;;#ASMSTART1646; GFX900-NEXT:    ; def v[0:3]1647; GFX900-NEXT:    ;;#ASMEND1648; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17] offset:161649; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1650; GFX900-NEXT:    s_waitcnt vmcnt(0)1651; GFX900-NEXT:    s_setpc_b64 s[30:31]1652;1653; GFX90A-LABEL: v_shuffle_v3p0_v2p0__u_3_3:1654; GFX90A:       ; %bb.0:1655; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1656; GFX90A-NEXT:    v_mov_b32_e32 v4, 01657; GFX90A-NEXT:    ;;#ASMSTART1658; GFX90A-NEXT:    ; def v[0:3]1659; GFX90A-NEXT:    ;;#ASMEND1660; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17] offset:161661; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1662; GFX90A-NEXT:    s_waitcnt vmcnt(0)1663; GFX90A-NEXT:    s_setpc_b64 s[30:31]1664;1665; GFX942-LABEL: v_shuffle_v3p0_v2p0__u_3_3:1666; GFX942:       ; %bb.0:1667; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1668; GFX942-NEXT:    v_mov_b32_e32 v4, 01669; GFX942-NEXT:    ;;#ASMSTART1670; GFX942-NEXT:    ; def v[0:3]1671; GFX942-NEXT:    ;;#ASMEND1672; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] offset:161673; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1674; GFX942-NEXT:    s_waitcnt vmcnt(0)1675; GFX942-NEXT:    s_setpc_b64 s[30:31]1676  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1677  %vec1 = call <2 x ptr> asm "; def $0", "=v"()1678  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 poison, i32 3, i32 3>1679  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321680  ret void1681}1682 1683define void @v_shuffle_v3p0_v2p0__0_3_3(ptr addrspace(1) inreg %ptr) {1684; GFX900-LABEL: v_shuffle_v3p0_v2p0__0_3_3:1685; GFX900:       ; %bb.0:1686; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1687; GFX900-NEXT:    ;;#ASMSTART1688; GFX900-NEXT:    ; def v[0:3]1689; GFX900-NEXT:    ;;#ASMEND1690; GFX900-NEXT:    ;;#ASMSTART1691; GFX900-NEXT:    ; def v[2:5]1692; GFX900-NEXT:    ;;#ASMEND1693; GFX900-NEXT:    v_mov_b32_e32 v6, 01694; GFX900-NEXT:    v_mov_b32_e32 v2, v41695; GFX900-NEXT:    v_mov_b32_e32 v3, v51696; GFX900-NEXT:    global_store_dwordx2 v6, v[4:5], s[16:17] offset:161697; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]1698; GFX900-NEXT:    s_waitcnt vmcnt(0)1699; GFX900-NEXT:    s_setpc_b64 s[30:31]1700;1701; GFX90A-LABEL: v_shuffle_v3p0_v2p0__0_3_3:1702; GFX90A:       ; %bb.0:1703; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1704; GFX90A-NEXT:    ;;#ASMSTART1705; GFX90A-NEXT:    ; def v[0:3]1706; GFX90A-NEXT:    ;;#ASMEND1707; GFX90A-NEXT:    ;;#ASMSTART1708; GFX90A-NEXT:    ; def v[2:5]1709; GFX90A-NEXT:    ;;#ASMEND1710; GFX90A-NEXT:    v_mov_b32_e32 v6, 01711; GFX90A-NEXT:    v_mov_b32_e32 v2, v41712; GFX90A-NEXT:    v_mov_b32_e32 v3, v51713; GFX90A-NEXT:    global_store_dwordx2 v6, v[4:5], s[16:17] offset:161714; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]1715; GFX90A-NEXT:    s_waitcnt vmcnt(0)1716; GFX90A-NEXT:    s_setpc_b64 s[30:31]1717;1718; GFX942-LABEL: v_shuffle_v3p0_v2p0__0_3_3:1719; GFX942:       ; %bb.0:1720; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1721; GFX942-NEXT:    ;;#ASMSTART1722; GFX942-NEXT:    ; def v[0:3]1723; GFX942-NEXT:    ;;#ASMEND1724; GFX942-NEXT:    v_mov_b32_e32 v6, 01725; GFX942-NEXT:    ;;#ASMSTART1726; GFX942-NEXT:    ; def v[2:5]1727; GFX942-NEXT:    ;;#ASMEND1728; GFX942-NEXT:    global_store_dwordx2 v6, v[4:5], s[0:1] offset:161729; GFX942-NEXT:    v_mov_b32_e32 v2, v41730; GFX942-NEXT:    v_mov_b32_e32 v3, v51731; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]1732; GFX942-NEXT:    s_waitcnt vmcnt(0)1733; GFX942-NEXT:    s_setpc_b64 s[30:31]1734  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1735  %vec1 = call <2 x ptr> asm "; def $0", "=v"()1736  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 0, i32 3, i32 3>1737  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321738  ret void1739}1740 1741define void @v_shuffle_v3p0_v2p0__1_3_3(ptr addrspace(1) inreg %ptr) {1742; GFX900-LABEL: v_shuffle_v3p0_v2p0__1_3_3:1743; GFX900:       ; %bb.0:1744; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1745; GFX900-NEXT:    ;;#ASMSTART1746; GFX900-NEXT:    ; def v[4:7]1747; GFX900-NEXT:    ;;#ASMEND1748; GFX900-NEXT:    v_mov_b32_e32 v8, 01749; GFX900-NEXT:    v_mov_b32_e32 v4, v61750; GFX900-NEXT:    v_mov_b32_e32 v5, v71751; GFX900-NEXT:    ;;#ASMSTART1752; GFX900-NEXT:    ; def v[0:3]1753; GFX900-NEXT:    ;;#ASMEND1754; GFX900-NEXT:    global_store_dwordx2 v8, v[6:7], s[16:17] offset:161755; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]1756; GFX900-NEXT:    s_waitcnt vmcnt(0)1757; GFX900-NEXT:    s_setpc_b64 s[30:31]1758;1759; GFX90A-LABEL: v_shuffle_v3p0_v2p0__1_3_3:1760; GFX90A:       ; %bb.0:1761; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1762; GFX90A-NEXT:    ;;#ASMSTART1763; GFX90A-NEXT:    ; def v[4:7]1764; GFX90A-NEXT:    ;;#ASMEND1765; GFX90A-NEXT:    v_mov_b32_e32 v8, 01766; GFX90A-NEXT:    v_mov_b32_e32 v4, v61767; GFX90A-NEXT:    v_mov_b32_e32 v5, v71768; GFX90A-NEXT:    ;;#ASMSTART1769; GFX90A-NEXT:    ; def v[0:3]1770; GFX90A-NEXT:    ;;#ASMEND1771; GFX90A-NEXT:    global_store_dwordx2 v8, v[6:7], s[16:17] offset:161772; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]1773; GFX90A-NEXT:    s_waitcnt vmcnt(0)1774; GFX90A-NEXT:    s_setpc_b64 s[30:31]1775;1776; GFX942-LABEL: v_shuffle_v3p0_v2p0__1_3_3:1777; GFX942:       ; %bb.0:1778; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1779; GFX942-NEXT:    ;;#ASMSTART1780; GFX942-NEXT:    ; def v[4:7]1781; GFX942-NEXT:    ;;#ASMEND1782; GFX942-NEXT:    v_mov_b32_e32 v8, 01783; GFX942-NEXT:    v_mov_b32_e32 v4, v61784; GFX942-NEXT:    v_mov_b32_e32 v5, v71785; GFX942-NEXT:    ;;#ASMSTART1786; GFX942-NEXT:    ; def v[0:3]1787; GFX942-NEXT:    ;;#ASMEND1788; GFX942-NEXT:    global_store_dwordx2 v8, v[6:7], s[0:1] offset:161789; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1]1790; GFX942-NEXT:    s_waitcnt vmcnt(0)1791; GFX942-NEXT:    s_setpc_b64 s[30:31]1792  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1793  %vec1 = call <2 x ptr> asm "; def $0", "=v"()1794  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 1, i32 3, i32 3>1795  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321796  ret void1797}1798 1799define void @v_shuffle_v3p0_v2p0__2_3_3(ptr addrspace(1) inreg %ptr) {1800; GFX900-LABEL: v_shuffle_v3p0_v2p0__2_3_3:1801; GFX900:       ; %bb.0:1802; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1803; GFX900-NEXT:    v_mov_b32_e32 v4, 01804; GFX900-NEXT:    ;;#ASMSTART1805; GFX900-NEXT:    ; def v[0:3]1806; GFX900-NEXT:    ;;#ASMEND1807; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17] offset:161808; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1809; GFX900-NEXT:    s_waitcnt vmcnt(0)1810; GFX900-NEXT:    s_setpc_b64 s[30:31]1811;1812; GFX90A-LABEL: v_shuffle_v3p0_v2p0__2_3_3:1813; GFX90A:       ; %bb.0:1814; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1815; GFX90A-NEXT:    v_mov_b32_e32 v4, 01816; GFX90A-NEXT:    ;;#ASMSTART1817; GFX90A-NEXT:    ; def v[0:3]1818; GFX90A-NEXT:    ;;#ASMEND1819; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17] offset:161820; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1821; GFX90A-NEXT:    s_waitcnt vmcnt(0)1822; GFX90A-NEXT:    s_setpc_b64 s[30:31]1823;1824; GFX942-LABEL: v_shuffle_v3p0_v2p0__2_3_3:1825; GFX942:       ; %bb.0:1826; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1827; GFX942-NEXT:    v_mov_b32_e32 v4, 01828; GFX942-NEXT:    ;;#ASMSTART1829; GFX942-NEXT:    ; def v[0:3]1830; GFX942-NEXT:    ;;#ASMEND1831; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] offset:161832; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1833; GFX942-NEXT:    s_waitcnt vmcnt(0)1834; GFX942-NEXT:    s_setpc_b64 s[30:31]1835  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1836  %vec1 = call <2 x ptr> asm "; def $0", "=v"()1837  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 2, i32 3, i32 3>1838  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321839  ret void1840}1841 1842define void @v_shuffle_v3p0_v2p0__3_u_3(ptr addrspace(1) inreg %ptr) {1843; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_u_3:1844; GFX900:       ; %bb.0:1845; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1846; GFX900-NEXT:    v_mov_b32_e32 v4, 01847; GFX900-NEXT:    ;;#ASMSTART1848; GFX900-NEXT:    ; def v[0:3]1849; GFX900-NEXT:    ;;#ASMEND1850; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17] offset:161851; GFX900-NEXT:    global_store_dwordx4 v4, v[2:5], s[16:17]1852; GFX900-NEXT:    s_waitcnt vmcnt(0)1853; GFX900-NEXT:    s_setpc_b64 s[30:31]1854;1855; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_u_3:1856; GFX90A:       ; %bb.0:1857; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1858; GFX90A-NEXT:    v_mov_b32_e32 v4, 01859; GFX90A-NEXT:    ;;#ASMSTART1860; GFX90A-NEXT:    ; def v[0:3]1861; GFX90A-NEXT:    ;;#ASMEND1862; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17] offset:161863; GFX90A-NEXT:    global_store_dwordx4 v4, v[2:5], s[16:17]1864; GFX90A-NEXT:    s_waitcnt vmcnt(0)1865; GFX90A-NEXT:    s_setpc_b64 s[30:31]1866;1867; GFX942-LABEL: v_shuffle_v3p0_v2p0__3_u_3:1868; GFX942:       ; %bb.0:1869; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1870; GFX942-NEXT:    v_mov_b32_e32 v4, 01871; GFX942-NEXT:    ;;#ASMSTART1872; GFX942-NEXT:    ; def v[0:3]1873; GFX942-NEXT:    ;;#ASMEND1874; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1] offset:161875; GFX942-NEXT:    global_store_dwordx4 v4, v[2:5], s[0:1]1876; GFX942-NEXT:    s_waitcnt vmcnt(0)1877; GFX942-NEXT:    s_setpc_b64 s[30:31]1878  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1879  %vec1 = call <2 x ptr> asm "; def $0", "=v"()1880  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 poison, i32 3>1881  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321882  ret void1883}1884 1885define void @v_shuffle_v3p0_v2p0__3_0_3(ptr addrspace(1) inreg %ptr) {1886; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_0_3:1887; GFX900:       ; %bb.0:1888; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1889; GFX900-NEXT:    v_mov_b32_e32 v8, 01890; GFX900-NEXT:    ;;#ASMSTART1891; GFX900-NEXT:    ; def v[4:7]1892; GFX900-NEXT:    ;;#ASMEND1893; GFX900-NEXT:    ;;#ASMSTART1894; GFX900-NEXT:    ; def v[0:3]1895; GFX900-NEXT:    ;;#ASMEND1896; GFX900-NEXT:    global_store_dwordx2 v8, v[2:3], s[16:17] offset:161897; GFX900-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]1898; GFX900-NEXT:    s_waitcnt vmcnt(0)1899; GFX900-NEXT:    s_setpc_b64 s[30:31]1900;1901; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_0_3:1902; GFX90A:       ; %bb.0:1903; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1904; GFX90A-NEXT:    v_mov_b32_e32 v8, 01905; GFX90A-NEXT:    ;;#ASMSTART1906; GFX90A-NEXT:    ; def v[4:7]1907; GFX90A-NEXT:    ;;#ASMEND1908; GFX90A-NEXT:    ;;#ASMSTART1909; GFX90A-NEXT:    ; def v[0:3]1910; GFX90A-NEXT:    ;;#ASMEND1911; GFX90A-NEXT:    global_store_dwordx2 v8, v[2:3], s[16:17] offset:161912; GFX90A-NEXT:    global_store_dwordx4 v8, v[2:5], s[16:17]1913; GFX90A-NEXT:    s_waitcnt vmcnt(0)1914; GFX90A-NEXT:    s_setpc_b64 s[30:31]1915;1916; GFX942-LABEL: v_shuffle_v3p0_v2p0__3_0_3:1917; GFX942:       ; %bb.0:1918; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1919; GFX942-NEXT:    v_mov_b32_e32 v8, 01920; GFX942-NEXT:    ;;#ASMSTART1921; GFX942-NEXT:    ; def v[4:7]1922; GFX942-NEXT:    ;;#ASMEND1923; GFX942-NEXT:    ;;#ASMSTART1924; GFX942-NEXT:    ; def v[0:3]1925; GFX942-NEXT:    ;;#ASMEND1926; GFX942-NEXT:    global_store_dwordx2 v8, v[2:3], s[0:1] offset:161927; GFX942-NEXT:    global_store_dwordx4 v8, v[2:5], s[0:1]1928; GFX942-NEXT:    s_waitcnt vmcnt(0)1929; GFX942-NEXT:    s_setpc_b64 s[30:31]1930  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1931  %vec1 = call <2 x ptr> asm "; def $0", "=v"()1932  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 0, i32 3>1933  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321934  ret void1935}1936 1937define void @v_shuffle_v3p0_v2p0__3_1_3(ptr addrspace(1) inreg %ptr) {1938; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_1_3:1939; GFX900:       ; %bb.0:1940; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1941; GFX900-NEXT:    ;;#ASMSTART1942; GFX900-NEXT:    ; def v[2:5]1943; GFX900-NEXT:    ;;#ASMEND1944; GFX900-NEXT:    v_mov_b32_e32 v6, 01945; GFX900-NEXT:    ;;#ASMSTART1946; GFX900-NEXT:    ; def v[0:3]1947; GFX900-NEXT:    ;;#ASMEND1948; GFX900-NEXT:    global_store_dwordx2 v6, v[2:3], s[16:17] offset:161949; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]1950; GFX900-NEXT:    s_waitcnt vmcnt(0)1951; GFX900-NEXT:    s_setpc_b64 s[30:31]1952;1953; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_1_3:1954; GFX90A:       ; %bb.0:1955; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1956; GFX90A-NEXT:    ;;#ASMSTART1957; GFX90A-NEXT:    ; def v[2:5]1958; GFX90A-NEXT:    ;;#ASMEND1959; GFX90A-NEXT:    v_mov_b32_e32 v6, 01960; GFX90A-NEXT:    ;;#ASMSTART1961; GFX90A-NEXT:    ; def v[0:3]1962; GFX90A-NEXT:    ;;#ASMEND1963; GFX90A-NEXT:    global_store_dwordx2 v6, v[2:3], s[16:17] offset:161964; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]1965; GFX90A-NEXT:    s_waitcnt vmcnt(0)1966; GFX90A-NEXT:    s_setpc_b64 s[30:31]1967;1968; GFX942-LABEL: v_shuffle_v3p0_v2p0__3_1_3:1969; GFX942:       ; %bb.0:1970; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1971; GFX942-NEXT:    ;;#ASMSTART1972; GFX942-NEXT:    ; def v[2:5]1973; GFX942-NEXT:    ;;#ASMEND1974; GFX942-NEXT:    v_mov_b32_e32 v6, 01975; GFX942-NEXT:    ;;#ASMSTART1976; GFX942-NEXT:    ; def v[0:3]1977; GFX942-NEXT:    ;;#ASMEND1978; GFX942-NEXT:    global_store_dwordx2 v6, v[2:3], s[0:1] offset:161979; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]1980; GFX942-NEXT:    s_waitcnt vmcnt(0)1981; GFX942-NEXT:    s_setpc_b64 s[30:31]1982  %vec0 = call <2 x ptr> asm "; def $0", "=v"()1983  %vec1 = call <2 x ptr> asm "; def $0", "=v"()1984  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 1, i32 3>1985  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321986  ret void1987}1988 1989define void @v_shuffle_v3p0_v2p0__3_2_3(ptr addrspace(1) inreg %ptr) {1990; GFX900-LABEL: v_shuffle_v3p0_v2p0__3_2_3:1991; GFX900:       ; %bb.0:1992; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1993; GFX900-NEXT:    v_mov_b32_e32 v6, 01994; GFX900-NEXT:    ;;#ASMSTART1995; GFX900-NEXT:    ; def v[0:3]1996; GFX900-NEXT:    ;;#ASMEND1997; GFX900-NEXT:    v_mov_b32_e32 v4, v01998; GFX900-NEXT:    v_mov_b32_e32 v5, v11999; GFX900-NEXT:    global_store_dwordx2 v6, v[2:3], s[16:17] offset:162000; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]2001; GFX900-NEXT:    s_waitcnt vmcnt(0)2002; GFX900-NEXT:    s_setpc_b64 s[30:31]2003;2004; GFX90A-LABEL: v_shuffle_v3p0_v2p0__3_2_3:2005; GFX90A:       ; %bb.0:2006; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2007; GFX90A-NEXT:    v_mov_b32_e32 v6, 02008; GFX90A-NEXT:    ;;#ASMSTART2009; GFX90A-NEXT:    ; def v[0:3]2010; GFX90A-NEXT:    ;;#ASMEND2011; GFX90A-NEXT:    v_mov_b32_e32 v4, v02012; GFX90A-NEXT:    v_mov_b32_e32 v5, v12013; GFX90A-NEXT:    global_store_dwordx2 v6, v[2:3], s[16:17] offset:162014; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]2015; GFX90A-NEXT:    s_waitcnt vmcnt(0)2016; GFX90A-NEXT:    s_setpc_b64 s[30:31]2017;2018; GFX942-LABEL: v_shuffle_v3p0_v2p0__3_2_3:2019; GFX942:       ; %bb.0:2020; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2021; GFX942-NEXT:    v_mov_b32_e32 v6, 02022; GFX942-NEXT:    ;;#ASMSTART2023; GFX942-NEXT:    ; def v[0:3]2024; GFX942-NEXT:    ;;#ASMEND2025; GFX942-NEXT:    global_store_dwordx2 v6, v[2:3], s[0:1] offset:162026; GFX942-NEXT:    v_mov_b32_e32 v4, v02027; GFX942-NEXT:    v_mov_b32_e32 v5, v12028; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]2029; GFX942-NEXT:    s_waitcnt vmcnt(0)2030; GFX942-NEXT:    s_setpc_b64 s[30:31]2031  %vec0 = call <2 x ptr> asm "; def $0", "=v"()2032  %vec1 = call <2 x ptr> asm "; def $0", "=v"()2033  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 2, i32 3>2034  store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 322035  ret void2036}2037 2038define void @s_shuffle_v3p0_v2p0__u_u_u() {2039; GFX9-LABEL: s_shuffle_v3p0_v2p0__u_u_u:2040; GFX9:       ; %bb.0:2041; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2042; GFX9-NEXT:    ;;#ASMSTART2043; GFX9-NEXT:    ; use s[8:13]2044; GFX9-NEXT:    ;;#ASMEND2045; GFX9-NEXT:    s_setpc_b64 s[30:31]2046  %vec0 = call <2 x ptr> asm "; def $0", "=s"()2047  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> poison2048  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)2049  ret void2050}2051 2052define void @s_shuffle_v3p0_v2p0__0_u_u() {2053; GFX900-LABEL: s_shuffle_v3p0_v2p0__0_u_u:2054; GFX900:       ; %bb.0:2055; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2056; GFX900-NEXT:    ;;#ASMSTART2057; GFX900-NEXT:    ; def s[8:11]2058; GFX900-NEXT:    ;;#ASMEND2059; GFX900-NEXT:    ;;#ASMSTART2060; GFX900-NEXT:    ; use s[8:13]2061; GFX900-NEXT:    ;;#ASMEND2062; GFX900-NEXT:    s_setpc_b64 s[30:31]2063;2064; GFX90A-LABEL: s_shuffle_v3p0_v2p0__0_u_u:2065; GFX90A:       ; %bb.0:2066; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2067; GFX90A-NEXT:    ;;#ASMSTART2068; GFX90A-NEXT:    ; def s[8:11]2069; GFX90A-NEXT:    ;;#ASMEND2070; GFX90A-NEXT:    ;;#ASMSTART2071; GFX90A-NEXT:    ; use s[8:13]2072; GFX90A-NEXT:    ;;#ASMEND2073; GFX90A-NEXT:    s_setpc_b64 s[30:31]2074;2075; GFX942-LABEL: s_shuffle_v3p0_v2p0__0_u_u:2076; GFX942:       ; %bb.0:2077; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2078; GFX942-NEXT:    ;;#ASMSTART2079; GFX942-NEXT:    ; def s[8:11]2080; GFX942-NEXT:    ;;#ASMEND2081; GFX942-NEXT:    s_nop 02082; GFX942-NEXT:    ;;#ASMSTART2083; GFX942-NEXT:    ; use s[8:13]2084; GFX942-NEXT:    ;;#ASMEND2085; GFX942-NEXT:    s_setpc_b64 s[30:31]2086  %vec0 = call <2 x ptr> asm "; def $0", "=s"()2087  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 0, i32 poison, i32 poison>2088  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)2089  ret void2090}2091 2092define void @s_shuffle_v3p0_v2p0__1_u_u() {2093; GFX900-LABEL: s_shuffle_v3p0_v2p0__1_u_u:2094; GFX900:       ; %bb.0:2095; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2096; GFX900-NEXT:    ;;#ASMSTART2097; GFX900-NEXT:    ; def s[4:7]2098; GFX900-NEXT:    ;;#ASMEND2099; GFX900-NEXT:    s_mov_b32 s8, s62100; GFX900-NEXT:    s_mov_b32 s9, s72101; GFX900-NEXT:    ;;#ASMSTART2102; GFX900-NEXT:    ; use s[8:13]2103; GFX900-NEXT:    ;;#ASMEND2104; GFX900-NEXT:    s_setpc_b64 s[30:31]2105;2106; GFX90A-LABEL: s_shuffle_v3p0_v2p0__1_u_u:2107; GFX90A:       ; %bb.0:2108; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2109; GFX90A-NEXT:    ;;#ASMSTART2110; GFX90A-NEXT:    ; def s[4:7]2111; GFX90A-NEXT:    ;;#ASMEND2112; GFX90A-NEXT:    s_mov_b32 s8, s62113; GFX90A-NEXT:    s_mov_b32 s9, s72114; GFX90A-NEXT:    ;;#ASMSTART2115; GFX90A-NEXT:    ; use s[8:13]2116; GFX90A-NEXT:    ;;#ASMEND2117; GFX90A-NEXT:    s_setpc_b64 s[30:31]2118;2119; GFX942-LABEL: s_shuffle_v3p0_v2p0__1_u_u:2120; GFX942:       ; %bb.0:2121; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2122; GFX942-NEXT:    ;;#ASMSTART2123; GFX942-NEXT:    ; def s[0:3]2124; GFX942-NEXT:    ;;#ASMEND2125; GFX942-NEXT:    s_mov_b32 s8, s22126; GFX942-NEXT:    s_mov_b32 s9, s32127; GFX942-NEXT:    ;;#ASMSTART2128; GFX942-NEXT:    ; use s[8:13]2129; GFX942-NEXT:    ;;#ASMEND2130; GFX942-NEXT:    s_setpc_b64 s[30:31]2131  %vec0 = call <2 x ptr> asm "; def $0", "=s"()2132  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 1, i32 poison, i32 poison>2133  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)2134  ret void2135}2136 2137define void @s_shuffle_v3p0_v2p0__2_u_u() {2138; GFX9-LABEL: s_shuffle_v3p0_v2p0__2_u_u:2139; GFX9:       ; %bb.0:2140; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2141; GFX9-NEXT:    ;;#ASMSTART2142; GFX9-NEXT:    ; use s[8:13]2143; GFX9-NEXT:    ;;#ASMEND2144; GFX9-NEXT:    s_setpc_b64 s[30:31]2145  %vec0 = call <2 x ptr> asm "; def $0", "=s"()2146  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 2, i32 poison, i32 poison>2147  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)2148  ret void2149}2150 2151define void @s_shuffle_v3p0_v2p0__3_u_u() {2152; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_u_u:2153; GFX900:       ; %bb.0:2154; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2155; GFX900-NEXT:    ;;#ASMSTART2156; GFX900-NEXT:    ; def s[4:7]2157; GFX900-NEXT:    ;;#ASMEND2158; GFX900-NEXT:    s_mov_b32 s8, s62159; GFX900-NEXT:    s_mov_b32 s9, s72160; GFX900-NEXT:    ;;#ASMSTART2161; GFX900-NEXT:    ; use s[8:13]2162; GFX900-NEXT:    ;;#ASMEND2163; GFX900-NEXT:    s_setpc_b64 s[30:31]2164;2165; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_u_u:2166; GFX90A:       ; %bb.0:2167; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2168; GFX90A-NEXT:    ;;#ASMSTART2169; GFX90A-NEXT:    ; def s[4:7]2170; GFX90A-NEXT:    ;;#ASMEND2171; GFX90A-NEXT:    s_mov_b32 s8, s62172; GFX90A-NEXT:    s_mov_b32 s9, s72173; GFX90A-NEXT:    ;;#ASMSTART2174; GFX90A-NEXT:    ; use s[8:13]2175; GFX90A-NEXT:    ;;#ASMEND2176; GFX90A-NEXT:    s_setpc_b64 s[30:31]2177;2178; GFX942-LABEL: s_shuffle_v3p0_v2p0__3_u_u:2179; GFX942:       ; %bb.0:2180; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2181; GFX942-NEXT:    ;;#ASMSTART2182; GFX942-NEXT:    ; def s[0:3]2183; GFX942-NEXT:    ;;#ASMEND2184; GFX942-NEXT:    s_mov_b32 s8, s22185; GFX942-NEXT:    s_mov_b32 s9, s32186; GFX942-NEXT:    ;;#ASMSTART2187; GFX942-NEXT:    ; use s[8:13]2188; GFX942-NEXT:    ;;#ASMEND2189; GFX942-NEXT:    s_setpc_b64 s[30:31]2190  %vec0 = call <2 x ptr> asm "; def $0", "=s"()2191  %vec1 = call <2 x ptr> asm "; def $0", "=s"()2192  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 poison, i32 poison>2193  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)2194  ret void2195}2196 2197define void @s_shuffle_v3p0_v2p0__3_0_u() {2198; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_0_u:2199; GFX900:       ; %bb.0:2200; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2201; GFX900-NEXT:    ;;#ASMSTART2202; GFX900-NEXT:    ; def s[8:11]2203; GFX900-NEXT:    ;;#ASMEND2204; GFX900-NEXT:    ;;#ASMSTART2205; GFX900-NEXT:    ; def s[4:7]2206; GFX900-NEXT:    ;;#ASMEND2207; GFX900-NEXT:    s_mov_b32 s8, s102208; GFX900-NEXT:    s_mov_b32 s9, s112209; GFX900-NEXT:    s_mov_b32 s10, s42210; GFX900-NEXT:    s_mov_b32 s11, s52211; GFX900-NEXT:    ;;#ASMSTART2212; GFX900-NEXT:    ; use s[8:13]2213; GFX900-NEXT:    ;;#ASMEND2214; GFX900-NEXT:    s_setpc_b64 s[30:31]2215;2216; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_0_u:2217; GFX90A:       ; %bb.0:2218; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2219; GFX90A-NEXT:    ;;#ASMSTART2220; GFX90A-NEXT:    ; def s[8:11]2221; GFX90A-NEXT:    ;;#ASMEND2222; GFX90A-NEXT:    ;;#ASMSTART2223; GFX90A-NEXT:    ; def s[4:7]2224; GFX90A-NEXT:    ;;#ASMEND2225; GFX90A-NEXT:    s_mov_b32 s8, s102226; GFX90A-NEXT:    s_mov_b32 s9, s112227; GFX90A-NEXT:    s_mov_b32 s10, s42228; GFX90A-NEXT:    s_mov_b32 s11, s52229; GFX90A-NEXT:    ;;#ASMSTART2230; GFX90A-NEXT:    ; use s[8:13]2231; GFX90A-NEXT:    ;;#ASMEND2232; GFX90A-NEXT:    s_setpc_b64 s[30:31]2233;2234; GFX942-LABEL: s_shuffle_v3p0_v2p0__3_0_u:2235; GFX942:       ; %bb.0:2236; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2237; GFX942-NEXT:    ;;#ASMSTART2238; GFX942-NEXT:    ; def s[0:3]2239; GFX942-NEXT:    ;;#ASMEND2240; GFX942-NEXT:    ;;#ASMSTART2241; GFX942-NEXT:    ; def s[4:7]2242; GFX942-NEXT:    ;;#ASMEND2243; GFX942-NEXT:    s_mov_b32 s8, s62244; GFX942-NEXT:    s_mov_b32 s9, s72245; GFX942-NEXT:    s_mov_b32 s10, s02246; GFX942-NEXT:    s_mov_b32 s11, s12247; GFX942-NEXT:    ;;#ASMSTART2248; GFX942-NEXT:    ; use s[8:13]2249; GFX942-NEXT:    ;;#ASMEND2250; GFX942-NEXT:    s_setpc_b64 s[30:31]2251  %vec0 = call <2 x ptr> asm "; def $0", "=s"()2252  %vec1 = call <2 x ptr> asm "; def $0", "=s"()2253  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 0, i32 poison>2254  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)2255  ret void2256}2257 2258define void @s_shuffle_v3p0_v2p0__3_1_u() {2259; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_1_u:2260; GFX900:       ; %bb.0:2261; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2262; GFX900-NEXT:    ;;#ASMSTART2263; GFX900-NEXT:    ; def s[8:11]2264; GFX900-NEXT:    ;;#ASMEND2265; GFX900-NEXT:    ;;#ASMSTART2266; GFX900-NEXT:    ; def s[4:7]2267; GFX900-NEXT:    ;;#ASMEND2268; GFX900-NEXT:    s_mov_b32 s8, s62269; GFX900-NEXT:    s_mov_b32 s9, s72270; GFX900-NEXT:    ;;#ASMSTART2271; GFX900-NEXT:    ; use s[8:13]2272; GFX900-NEXT:    ;;#ASMEND2273; GFX900-NEXT:    s_setpc_b64 s[30:31]2274;2275; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_1_u:2276; GFX90A:       ; %bb.0:2277; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2278; GFX90A-NEXT:    ;;#ASMSTART2279; GFX90A-NEXT:    ; def s[8:11]2280; GFX90A-NEXT:    ;;#ASMEND2281; GFX90A-NEXT:    ;;#ASMSTART2282; GFX90A-NEXT:    ; def s[4:7]2283; GFX90A-NEXT:    ;;#ASMEND2284; GFX90A-NEXT:    s_mov_b32 s8, s62285; GFX90A-NEXT:    s_mov_b32 s9, s72286; GFX90A-NEXT:    ;;#ASMSTART2287; GFX90A-NEXT:    ; use s[8:13]2288; GFX90A-NEXT:    ;;#ASMEND2289; GFX90A-NEXT:    s_setpc_b64 s[30:31]2290;2291; GFX942-LABEL: s_shuffle_v3p0_v2p0__3_1_u:2292; GFX942:       ; %bb.0:2293; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2294; GFX942-NEXT:    ;;#ASMSTART2295; GFX942-NEXT:    ; def s[8:11]2296; GFX942-NEXT:    ;;#ASMEND2297; GFX942-NEXT:    ;;#ASMSTART2298; GFX942-NEXT:    ; def s[0:3]2299; GFX942-NEXT:    ;;#ASMEND2300; GFX942-NEXT:    s_mov_b32 s8, s22301; GFX942-NEXT:    s_mov_b32 s9, s32302; GFX942-NEXT:    ;;#ASMSTART2303; GFX942-NEXT:    ; use s[8:13]2304; GFX942-NEXT:    ;;#ASMEND2305; GFX942-NEXT:    s_setpc_b64 s[30:31]2306  %vec0 = call <2 x ptr> asm "; def $0", "=s"()2307  %vec1 = call <2 x ptr> asm "; def $0", "=s"()2308  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 1, i32 poison>2309  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)2310  ret void2311}2312 2313define void @s_shuffle_v3p0_v2p0__3_2_u() {2314; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_2_u:2315; GFX900:       ; %bb.0:2316; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2317; GFX900-NEXT:    ;;#ASMSTART2318; GFX900-NEXT:    ; def s[4:7]2319; GFX900-NEXT:    ;;#ASMEND2320; GFX900-NEXT:    s_mov_b32 s8, s62321; GFX900-NEXT:    s_mov_b32 s9, s72322; GFX900-NEXT:    s_mov_b32 s10, s42323; GFX900-NEXT:    s_mov_b32 s11, s52324; GFX900-NEXT:    ;;#ASMSTART2325; GFX900-NEXT:    ; use s[8:13]2326; GFX900-NEXT:    ;;#ASMEND2327; GFX900-NEXT:    s_setpc_b64 s[30:31]2328;2329; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_2_u:2330; GFX90A:       ; %bb.0:2331; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2332; GFX90A-NEXT:    ;;#ASMSTART2333; GFX90A-NEXT:    ; def s[4:7]2334; GFX90A-NEXT:    ;;#ASMEND2335; GFX90A-NEXT:    s_mov_b32 s8, s62336; GFX90A-NEXT:    s_mov_b32 s9, s72337; GFX90A-NEXT:    s_mov_b32 s10, s42338; GFX90A-NEXT:    s_mov_b32 s11, s52339; GFX90A-NEXT:    ;;#ASMSTART2340; GFX90A-NEXT:    ; use s[8:13]2341; GFX90A-NEXT:    ;;#ASMEND2342; GFX90A-NEXT:    s_setpc_b64 s[30:31]2343;2344; GFX942-LABEL: s_shuffle_v3p0_v2p0__3_2_u:2345; GFX942:       ; %bb.0:2346; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2347; GFX942-NEXT:    ;;#ASMSTART2348; GFX942-NEXT:    ; def s[0:3]2349; GFX942-NEXT:    ;;#ASMEND2350; GFX942-NEXT:    s_mov_b32 s8, s22351; GFX942-NEXT:    s_mov_b32 s9, s32352; GFX942-NEXT:    s_mov_b32 s10, s02353; GFX942-NEXT:    s_mov_b32 s11, s12354; GFX942-NEXT:    ;;#ASMSTART2355; GFX942-NEXT:    ; use s[8:13]2356; GFX942-NEXT:    ;;#ASMEND2357; GFX942-NEXT:    s_setpc_b64 s[30:31]2358  %vec0 = call <2 x ptr> asm "; def $0", "=s"()2359  %vec1 = call <2 x ptr> asm "; def $0", "=s"()2360  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 2, i32 poison>2361  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)2362  ret void2363}2364 2365define void @s_shuffle_v3p0_v2p0__3_3_u() {2366; GFX9-LABEL: s_shuffle_v3p0_v2p0__3_3_u:2367; GFX9:       ; %bb.0:2368; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2369; GFX9-NEXT:    ;;#ASMSTART2370; GFX9-NEXT:    ; def s[8:11]2371; GFX9-NEXT:    ;;#ASMEND2372; GFX9-NEXT:    s_mov_b32 s8, s102373; GFX9-NEXT:    s_mov_b32 s9, s112374; GFX9-NEXT:    ;;#ASMSTART2375; GFX9-NEXT:    ; use s[8:13]2376; GFX9-NEXT:    ;;#ASMEND2377; GFX9-NEXT:    s_setpc_b64 s[30:31]2378  %vec0 = call <2 x ptr> asm "; def $0", "=s"()2379  %vec1 = call <2 x ptr> asm "; def $0", "=s"()2380  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 3, i32 poison>2381  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)2382  ret void2383}2384 2385define void @s_shuffle_v3p0_v2p0__3_3_0() {2386; GFX9-LABEL: s_shuffle_v3p0_v2p0__3_3_0:2387; GFX9:       ; %bb.0:2388; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2389; GFX9-NEXT:    ;;#ASMSTART2390; GFX9-NEXT:    ; def s[8:11]2391; GFX9-NEXT:    ;;#ASMEND2392; GFX9-NEXT:    ;;#ASMSTART2393; GFX9-NEXT:    ; def s[12:15]2394; GFX9-NEXT:    ;;#ASMEND2395; GFX9-NEXT:    s_mov_b32 s8, s102396; GFX9-NEXT:    s_mov_b32 s9, s112397; GFX9-NEXT:    ;;#ASMSTART2398; GFX9-NEXT:    ; use s[8:13]2399; GFX9-NEXT:    ;;#ASMEND2400; GFX9-NEXT:    s_setpc_b64 s[30:31]2401  %vec0 = call <2 x ptr> asm "; def $0", "=s"()2402  %vec1 = call <2 x ptr> asm "; def $0", "=s"()2403  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 3, i32 0>2404  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)2405  ret void2406}2407 2408define void @s_shuffle_v3p0_v2p0__3_3_1() {2409; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_3_1:2410; GFX900:       ; %bb.0:2411; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2412; GFX900-NEXT:    ;;#ASMSTART2413; GFX900-NEXT:    ; def s[8:11]2414; GFX900-NEXT:    ;;#ASMEND2415; GFX900-NEXT:    ;;#ASMSTART2416; GFX900-NEXT:    ; def s[4:7]2417; GFX900-NEXT:    ;;#ASMEND2418; GFX900-NEXT:    s_mov_b32 s8, s102419; GFX900-NEXT:    s_mov_b32 s9, s112420; GFX900-NEXT:    s_mov_b32 s12, s62421; GFX900-NEXT:    s_mov_b32 s13, s72422; GFX900-NEXT:    ;;#ASMSTART2423; GFX900-NEXT:    ; use s[8:13]2424; GFX900-NEXT:    ;;#ASMEND2425; GFX900-NEXT:    s_setpc_b64 s[30:31]2426;2427; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_3_1:2428; GFX90A:       ; %bb.0:2429; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2430; GFX90A-NEXT:    ;;#ASMSTART2431; GFX90A-NEXT:    ; def s[8:11]2432; GFX90A-NEXT:    ;;#ASMEND2433; GFX90A-NEXT:    ;;#ASMSTART2434; GFX90A-NEXT:    ; def s[4:7]2435; GFX90A-NEXT:    ;;#ASMEND2436; GFX90A-NEXT:    s_mov_b32 s8, s102437; GFX90A-NEXT:    s_mov_b32 s9, s112438; GFX90A-NEXT:    s_mov_b32 s12, s62439; GFX90A-NEXT:    s_mov_b32 s13, s72440; GFX90A-NEXT:    ;;#ASMSTART2441; GFX90A-NEXT:    ; use s[8:13]2442; GFX90A-NEXT:    ;;#ASMEND2443; GFX90A-NEXT:    s_setpc_b64 s[30:31]2444;2445; GFX942-LABEL: s_shuffle_v3p0_v2p0__3_3_1:2446; GFX942:       ; %bb.0:2447; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2448; GFX942-NEXT:    ;;#ASMSTART2449; GFX942-NEXT:    ; def s[8:11]2450; GFX942-NEXT:    ;;#ASMEND2451; GFX942-NEXT:    ;;#ASMSTART2452; GFX942-NEXT:    ; def s[0:3]2453; GFX942-NEXT:    ;;#ASMEND2454; GFX942-NEXT:    s_mov_b32 s8, s102455; GFX942-NEXT:    s_mov_b32 s9, s112456; GFX942-NEXT:    s_mov_b32 s12, s22457; GFX942-NEXT:    s_mov_b32 s13, s32458; GFX942-NEXT:    ;;#ASMSTART2459; GFX942-NEXT:    ; use s[8:13]2460; GFX942-NEXT:    ;;#ASMEND2461; GFX942-NEXT:    s_setpc_b64 s[30:31]2462  %vec0 = call <2 x ptr> asm "; def $0", "=s"()2463  %vec1 = call <2 x ptr> asm "; def $0", "=s"()2464  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 3, i32 1>2465  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)2466  ret void2467}2468 2469define void @s_shuffle_v3p0_v2p0__3_3_2() {2470; GFX9-LABEL: s_shuffle_v3p0_v2p0__3_3_2:2471; GFX9:       ; %bb.0:2472; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2473; GFX9-NEXT:    ;;#ASMSTART2474; GFX9-NEXT:    ; def s[12:15]2475; GFX9-NEXT:    ;;#ASMEND2476; GFX9-NEXT:    s_mov_b32 s8, s142477; GFX9-NEXT:    s_mov_b32 s9, s152478; GFX9-NEXT:    s_mov_b32 s10, s142479; GFX9-NEXT:    s_mov_b32 s11, s152480; GFX9-NEXT:    ;;#ASMSTART2481; GFX9-NEXT:    ; use s[8:13]2482; GFX9-NEXT:    ;;#ASMEND2483; GFX9-NEXT:    s_setpc_b64 s[30:31]2484  %vec0 = call <2 x ptr> asm "; def $0", "=s"()2485  %vec1 = call <2 x ptr> asm "; def $0", "=s"()2486  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 3, i32 2>2487  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)2488  ret void2489}2490 2491define void @s_shuffle_v3p0_v2p0__3_3_3() {2492; GFX9-LABEL: s_shuffle_v3p0_v2p0__3_3_3:2493; GFX9:       ; %bb.0:2494; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2495; GFX9-NEXT:    ;;#ASMSTART2496; GFX9-NEXT:    ; def s[8:11]2497; GFX9-NEXT:    ;;#ASMEND2498; GFX9-NEXT:    s_mov_b32 s8, s102499; GFX9-NEXT:    s_mov_b32 s9, s112500; GFX9-NEXT:    s_mov_b32 s12, s102501; GFX9-NEXT:    s_mov_b32 s13, s112502; GFX9-NEXT:    ;;#ASMSTART2503; GFX9-NEXT:    ; use s[8:13]2504; GFX9-NEXT:    ;;#ASMEND2505; GFX9-NEXT:    s_setpc_b64 s[30:31]2506  %vec0 = call <2 x ptr> asm "; def $0", "=s"()2507  %vec1 = call <2 x ptr> asm "; def $0", "=s"()2508  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 3, i32 3>2509  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)2510  ret void2511}2512 2513define void @s_shuffle_v3p0_v2p0__u_0_0() {2514; GFX9-LABEL: s_shuffle_v3p0_v2p0__u_0_0:2515; GFX9:       ; %bb.0:2516; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2517; GFX9-NEXT:    ;;#ASMSTART2518; GFX9-NEXT:    ; def s[12:15]2519; GFX9-NEXT:    ;;#ASMEND2520; GFX9-NEXT:    s_mov_b32 s10, s122521; GFX9-NEXT:    s_mov_b32 s11, s132522; GFX9-NEXT:    ;;#ASMSTART2523; GFX9-NEXT:    ; use s[8:13]2524; GFX9-NEXT:    ;;#ASMEND2525; GFX9-NEXT:    s_setpc_b64 s[30:31]2526  %vec0 = call <2 x ptr> asm "; def $0", "=s"()2527  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 poison, i32 0, i32 0>2528  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)2529  ret void2530}2531 2532define void @s_shuffle_v3p0_v2p0__0_0_0() {2533; GFX9-LABEL: s_shuffle_v3p0_v2p0__0_0_0:2534; GFX9:       ; %bb.0:2535; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2536; GFX9-NEXT:    ;;#ASMSTART2537; GFX9-NEXT:    ; def s[8:11]2538; GFX9-NEXT:    ;;#ASMEND2539; GFX9-NEXT:    s_mov_b32 s10, s82540; GFX9-NEXT:    s_mov_b32 s11, s92541; GFX9-NEXT:    s_mov_b32 s12, s82542; GFX9-NEXT:    s_mov_b32 s13, s92543; GFX9-NEXT:    ;;#ASMSTART2544; GFX9-NEXT:    ; use s[8:13]2545; GFX9-NEXT:    ;;#ASMEND2546; GFX9-NEXT:    s_setpc_b64 s[30:31]2547  %vec0 = call <2 x ptr> asm "; def $0", "=s"()2548  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> zeroinitializer2549  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)2550  ret void2551}2552 2553define void @s_shuffle_v3p0_v2p0__1_0_0() {2554; GFX9-LABEL: s_shuffle_v3p0_v2p0__1_0_0:2555; GFX9:       ; %bb.0:2556; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2557; GFX9-NEXT:    ;;#ASMSTART2558; GFX9-NEXT:    ; def s[12:15]2559; GFX9-NEXT:    ;;#ASMEND2560; GFX9-NEXT:    s_mov_b32 s8, s142561; GFX9-NEXT:    s_mov_b32 s9, s152562; GFX9-NEXT:    s_mov_b32 s10, s122563; GFX9-NEXT:    s_mov_b32 s11, s132564; GFX9-NEXT:    ;;#ASMSTART2565; GFX9-NEXT:    ; use s[8:13]2566; GFX9-NEXT:    ;;#ASMEND2567; GFX9-NEXT:    s_setpc_b64 s[30:31]2568  %vec0 = call <2 x ptr> asm "; def $0", "=s"()2569  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 1, i32 0, i32 0>2570  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)2571  ret void2572}2573 2574define void @s_shuffle_v3p0_v2p0__2_0_0() {2575; GFX9-LABEL: s_shuffle_v3p0_v2p0__2_0_0:2576; GFX9:       ; %bb.0:2577; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2578; GFX9-NEXT:    ;;#ASMSTART2579; GFX9-NEXT:    ; def s[12:15]2580; GFX9-NEXT:    ;;#ASMEND2581; GFX9-NEXT:    s_mov_b32 s10, s122582; GFX9-NEXT:    s_mov_b32 s11, s132583; GFX9-NEXT:    ;;#ASMSTART2584; GFX9-NEXT:    ; use s[8:13]2585; GFX9-NEXT:    ;;#ASMEND2586; GFX9-NEXT:    s_setpc_b64 s[30:31]2587  %vec0 = call <2 x ptr> asm "; def $0", "=s"()2588  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 2, i32 0, i32 0>2589  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)2590  ret void2591}2592 2593define void @s_shuffle_v3p0_v2p0__3_0_0() {2594; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_0_0:2595; GFX900:       ; %bb.0:2596; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2597; GFX900-NEXT:    ;;#ASMSTART2598; GFX900-NEXT:    ; def s[12:15]2599; GFX900-NEXT:    ;;#ASMEND2600; GFX900-NEXT:    ;;#ASMSTART2601; GFX900-NEXT:    ; def s[4:7]2602; GFX900-NEXT:    ;;#ASMEND2603; GFX900-NEXT:    s_mov_b32 s8, s62604; GFX900-NEXT:    s_mov_b32 s9, s72605; GFX900-NEXT:    s_mov_b32 s10, s122606; GFX900-NEXT:    s_mov_b32 s11, s132607; GFX900-NEXT:    ;;#ASMSTART2608; GFX900-NEXT:    ; use s[8:13]2609; GFX900-NEXT:    ;;#ASMEND2610; GFX900-NEXT:    s_setpc_b64 s[30:31]2611;2612; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_0_0:2613; GFX90A:       ; %bb.0:2614; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2615; GFX90A-NEXT:    ;;#ASMSTART2616; GFX90A-NEXT:    ; def s[12:15]2617; GFX90A-NEXT:    ;;#ASMEND2618; GFX90A-NEXT:    ;;#ASMSTART2619; GFX90A-NEXT:    ; def s[4:7]2620; GFX90A-NEXT:    ;;#ASMEND2621; GFX90A-NEXT:    s_mov_b32 s8, s62622; GFX90A-NEXT:    s_mov_b32 s9, s72623; GFX90A-NEXT:    s_mov_b32 s10, s122624; GFX90A-NEXT:    s_mov_b32 s11, s132625; GFX90A-NEXT:    ;;#ASMSTART2626; GFX90A-NEXT:    ; use s[8:13]2627; GFX90A-NEXT:    ;;#ASMEND2628; GFX90A-NEXT:    s_setpc_b64 s[30:31]2629;2630; GFX942-LABEL: s_shuffle_v3p0_v2p0__3_0_0:2631; GFX942:       ; %bb.0:2632; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2633; GFX942-NEXT:    ;;#ASMSTART2634; GFX942-NEXT:    ; def s[12:15]2635; GFX942-NEXT:    ;;#ASMEND2636; GFX942-NEXT:    ;;#ASMSTART2637; GFX942-NEXT:    ; def s[0:3]2638; GFX942-NEXT:    ;;#ASMEND2639; GFX942-NEXT:    s_mov_b32 s8, s22640; GFX942-NEXT:    s_mov_b32 s9, s32641; GFX942-NEXT:    s_mov_b32 s10, s122642; GFX942-NEXT:    s_mov_b32 s11, s132643; GFX942-NEXT:    ;;#ASMSTART2644; GFX942-NEXT:    ; use s[8:13]2645; GFX942-NEXT:    ;;#ASMEND2646; GFX942-NEXT:    s_setpc_b64 s[30:31]2647  %vec0 = call <2 x ptr> asm "; def $0", "=s"()2648  %vec1 = call <2 x ptr> asm "; def $0", "=s"()2649  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 0, i32 0>2650  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)2651  ret void2652}2653 2654define void @s_shuffle_v3p0_v2p0__3_u_0() {2655; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_u_0:2656; GFX900:       ; %bb.0:2657; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2658; GFX900-NEXT:    ;;#ASMSTART2659; GFX900-NEXT:    ; def s[12:15]2660; GFX900-NEXT:    ;;#ASMEND2661; GFX900-NEXT:    ;;#ASMSTART2662; GFX900-NEXT:    ; def s[4:7]2663; GFX900-NEXT:    ;;#ASMEND2664; GFX900-NEXT:    s_mov_b32 s8, s62665; GFX900-NEXT:    s_mov_b32 s9, s72666; GFX900-NEXT:    ;;#ASMSTART2667; GFX900-NEXT:    ; use s[8:13]2668; GFX900-NEXT:    ;;#ASMEND2669; GFX900-NEXT:    s_setpc_b64 s[30:31]2670;2671; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_u_0:2672; GFX90A:       ; %bb.0:2673; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2674; GFX90A-NEXT:    ;;#ASMSTART2675; GFX90A-NEXT:    ; def s[12:15]2676; GFX90A-NEXT:    ;;#ASMEND2677; GFX90A-NEXT:    ;;#ASMSTART2678; GFX90A-NEXT:    ; def s[4:7]2679; GFX90A-NEXT:    ;;#ASMEND2680; GFX90A-NEXT:    s_mov_b32 s8, s62681; GFX90A-NEXT:    s_mov_b32 s9, s72682; GFX90A-NEXT:    ;;#ASMSTART2683; GFX90A-NEXT:    ; use s[8:13]2684; GFX90A-NEXT:    ;;#ASMEND2685; GFX90A-NEXT:    s_setpc_b64 s[30:31]2686;2687; GFX942-LABEL: s_shuffle_v3p0_v2p0__3_u_0:2688; GFX942:       ; %bb.0:2689; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2690; GFX942-NEXT:    ;;#ASMSTART2691; GFX942-NEXT:    ; def s[12:15]2692; GFX942-NEXT:    ;;#ASMEND2693; GFX942-NEXT:    ;;#ASMSTART2694; GFX942-NEXT:    ; def s[0:3]2695; GFX942-NEXT:    ;;#ASMEND2696; GFX942-NEXT:    s_mov_b32 s8, s22697; GFX942-NEXT:    s_mov_b32 s9, s32698; GFX942-NEXT:    ;;#ASMSTART2699; GFX942-NEXT:    ; use s[8:13]2700; GFX942-NEXT:    ;;#ASMEND2701; GFX942-NEXT:    s_setpc_b64 s[30:31]2702  %vec0 = call <2 x ptr> asm "; def $0", "=s"()2703  %vec1 = call <2 x ptr> asm "; def $0", "=s"()2704  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 poison, i32 0>2705  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)2706  ret void2707}2708 2709define void @s_shuffle_v3p0_v2p0__3_1_0() {2710; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_1_0:2711; GFX900:       ; %bb.0:2712; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2713; GFX900-NEXT:    ;;#ASMSTART2714; GFX900-NEXT:    ; def s[12:15]2715; GFX900-NEXT:    ;;#ASMEND2716; GFX900-NEXT:    ;;#ASMSTART2717; GFX900-NEXT:    ; def s[4:7]2718; GFX900-NEXT:    ;;#ASMEND2719; GFX900-NEXT:    s_mov_b32 s8, s62720; GFX900-NEXT:    s_mov_b32 s9, s72721; GFX900-NEXT:    s_mov_b32 s10, s142722; GFX900-NEXT:    s_mov_b32 s11, s152723; GFX900-NEXT:    ;;#ASMSTART2724; GFX900-NEXT:    ; use s[8:13]2725; GFX900-NEXT:    ;;#ASMEND2726; GFX900-NEXT:    s_setpc_b64 s[30:31]2727;2728; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_1_0:2729; GFX90A:       ; %bb.0:2730; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2731; GFX90A-NEXT:    ;;#ASMSTART2732; GFX90A-NEXT:    ; def s[12:15]2733; GFX90A-NEXT:    ;;#ASMEND2734; GFX90A-NEXT:    ;;#ASMSTART2735; GFX90A-NEXT:    ; def s[4:7]2736; GFX90A-NEXT:    ;;#ASMEND2737; GFX90A-NEXT:    s_mov_b32 s8, s62738; GFX90A-NEXT:    s_mov_b32 s9, s72739; GFX90A-NEXT:    s_mov_b32 s10, s142740; GFX90A-NEXT:    s_mov_b32 s11, s152741; GFX90A-NEXT:    ;;#ASMSTART2742; GFX90A-NEXT:    ; use s[8:13]2743; GFX90A-NEXT:    ;;#ASMEND2744; GFX90A-NEXT:    s_setpc_b64 s[30:31]2745;2746; GFX942-LABEL: s_shuffle_v3p0_v2p0__3_1_0:2747; GFX942:       ; %bb.0:2748; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2749; GFX942-NEXT:    ;;#ASMSTART2750; GFX942-NEXT:    ; def s[12:15]2751; GFX942-NEXT:    ;;#ASMEND2752; GFX942-NEXT:    ;;#ASMSTART2753; GFX942-NEXT:    ; def s[0:3]2754; GFX942-NEXT:    ;;#ASMEND2755; GFX942-NEXT:    s_mov_b32 s8, s22756; GFX942-NEXT:    s_mov_b32 s9, s32757; GFX942-NEXT:    s_mov_b32 s10, s142758; GFX942-NEXT:    s_mov_b32 s11, s152759; GFX942-NEXT:    ;;#ASMSTART2760; GFX942-NEXT:    ; use s[8:13]2761; GFX942-NEXT:    ;;#ASMEND2762; GFX942-NEXT:    s_setpc_b64 s[30:31]2763  %vec0 = call <2 x ptr> asm "; def $0", "=s"()2764  %vec1 = call <2 x ptr> asm "; def $0", "=s"()2765  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 1, i32 0>2766  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)2767  ret void2768}2769 2770define void @s_shuffle_v3p0_v2p0__3_2_0() {2771; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_2_0:2772; GFX900:       ; %bb.0:2773; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2774; GFX900-NEXT:    ;;#ASMSTART2775; GFX900-NEXT:    ; def s[12:15]2776; GFX900-NEXT:    ;;#ASMEND2777; GFX900-NEXT:    ;;#ASMSTART2778; GFX900-NEXT:    ; def s[4:7]2779; GFX900-NEXT:    ;;#ASMEND2780; GFX900-NEXT:    s_mov_b32 s8, s62781; GFX900-NEXT:    s_mov_b32 s9, s72782; GFX900-NEXT:    s_mov_b32 s10, s42783; GFX900-NEXT:    s_mov_b32 s11, s52784; GFX900-NEXT:    ;;#ASMSTART2785; GFX900-NEXT:    ; use s[8:13]2786; GFX900-NEXT:    ;;#ASMEND2787; GFX900-NEXT:    s_setpc_b64 s[30:31]2788;2789; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_2_0:2790; GFX90A:       ; %bb.0:2791; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2792; GFX90A-NEXT:    ;;#ASMSTART2793; GFX90A-NEXT:    ; def s[12:15]2794; GFX90A-NEXT:    ;;#ASMEND2795; GFX90A-NEXT:    ;;#ASMSTART2796; GFX90A-NEXT:    ; def s[4:7]2797; GFX90A-NEXT:    ;;#ASMEND2798; GFX90A-NEXT:    s_mov_b32 s8, s62799; GFX90A-NEXT:    s_mov_b32 s9, s72800; GFX90A-NEXT:    s_mov_b32 s10, s42801; GFX90A-NEXT:    s_mov_b32 s11, s52802; GFX90A-NEXT:    ;;#ASMSTART2803; GFX90A-NEXT:    ; use s[8:13]2804; GFX90A-NEXT:    ;;#ASMEND2805; GFX90A-NEXT:    s_setpc_b64 s[30:31]2806;2807; GFX942-LABEL: s_shuffle_v3p0_v2p0__3_2_0:2808; GFX942:       ; %bb.0:2809; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2810; GFX942-NEXT:    ;;#ASMSTART2811; GFX942-NEXT:    ; def s[12:15]2812; GFX942-NEXT:    ;;#ASMEND2813; GFX942-NEXT:    ;;#ASMSTART2814; GFX942-NEXT:    ; def s[0:3]2815; GFX942-NEXT:    ;;#ASMEND2816; GFX942-NEXT:    s_mov_b32 s8, s22817; GFX942-NEXT:    s_mov_b32 s9, s32818; GFX942-NEXT:    s_mov_b32 s10, s02819; GFX942-NEXT:    s_mov_b32 s11, s12820; GFX942-NEXT:    ;;#ASMSTART2821; GFX942-NEXT:    ; use s[8:13]2822; GFX942-NEXT:    ;;#ASMEND2823; GFX942-NEXT:    s_setpc_b64 s[30:31]2824  %vec0 = call <2 x ptr> asm "; def $0", "=s"()2825  %vec1 = call <2 x ptr> asm "; def $0", "=s"()2826  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 2, i32 0>2827  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)2828  ret void2829}2830 2831define void @s_shuffle_v3p0_v2p0__u_1_1() {2832; GFX9-LABEL: s_shuffle_v3p0_v2p0__u_1_1:2833; GFX9:       ; %bb.0:2834; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2835; GFX9-NEXT:    ;;#ASMSTART2836; GFX9-NEXT:    ; def s[8:11]2837; GFX9-NEXT:    ;;#ASMEND2838; GFX9-NEXT:    s_mov_b32 s12, s102839; GFX9-NEXT:    s_mov_b32 s13, s112840; GFX9-NEXT:    ;;#ASMSTART2841; GFX9-NEXT:    ; use s[8:13]2842; GFX9-NEXT:    ;;#ASMEND2843; GFX9-NEXT:    s_setpc_b64 s[30:31]2844  %vec0 = call <2 x ptr> asm "; def $0", "=s"()2845  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 poison, i32 1, i32 1>2846  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)2847  ret void2848}2849 2850define void @s_shuffle_v3p0_v2p0__0_1_1() {2851; GFX9-LABEL: s_shuffle_v3p0_v2p0__0_1_1:2852; GFX9:       ; %bb.0:2853; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2854; GFX9-NEXT:    ;;#ASMSTART2855; GFX9-NEXT:    ; def s[8:11]2856; GFX9-NEXT:    ;;#ASMEND2857; GFX9-NEXT:    s_mov_b32 s12, s102858; GFX9-NEXT:    s_mov_b32 s13, s112859; GFX9-NEXT:    ;;#ASMSTART2860; GFX9-NEXT:    ; use s[8:13]2861; GFX9-NEXT:    ;;#ASMEND2862; GFX9-NEXT:    s_setpc_b64 s[30:31]2863  %vec0 = call <2 x ptr> asm "; def $0", "=s"()2864  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 0, i32 1, i32 1>2865  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)2866  ret void2867}2868 2869define void @s_shuffle_v3p0_v2p0__1_1_1() {2870; GFX9-LABEL: s_shuffle_v3p0_v2p0__1_1_1:2871; GFX9:       ; %bb.0:2872; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2873; GFX9-NEXT:    ;;#ASMSTART2874; GFX9-NEXT:    ; def s[8:11]2875; GFX9-NEXT:    ;;#ASMEND2876; GFX9-NEXT:    s_mov_b32 s8, s102877; GFX9-NEXT:    s_mov_b32 s9, s112878; GFX9-NEXT:    s_mov_b32 s12, s102879; GFX9-NEXT:    s_mov_b32 s13, s112880; GFX9-NEXT:    ;;#ASMSTART2881; GFX9-NEXT:    ; use s[8:13]2882; GFX9-NEXT:    ;;#ASMEND2883; GFX9-NEXT:    s_setpc_b64 s[30:31]2884  %vec0 = call <2 x ptr> asm "; def $0", "=s"()2885  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 1, i32 1, i32 1>2886  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)2887  ret void2888}2889 2890define void @s_shuffle_v3p0_v2p0__2_1_1() {2891; GFX9-LABEL: s_shuffle_v3p0_v2p0__2_1_1:2892; GFX9:       ; %bb.0:2893; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2894; GFX9-NEXT:    ;;#ASMSTART2895; GFX9-NEXT:    ; def s[8:11]2896; GFX9-NEXT:    ;;#ASMEND2897; GFX9-NEXT:    s_mov_b32 s12, s102898; GFX9-NEXT:    s_mov_b32 s13, s112899; GFX9-NEXT:    ;;#ASMSTART2900; GFX9-NEXT:    ; use s[8:13]2901; GFX9-NEXT:    ;;#ASMEND2902; GFX9-NEXT:    s_setpc_b64 s[30:31]2903  %vec0 = call <2 x ptr> asm "; def $0", "=s"()2904  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 2, i32 1, i32 1>2905  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)2906  ret void2907}2908 2909define void @s_shuffle_v3p0_v2p0__3_1_1() {2910; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_1_1:2911; GFX900:       ; %bb.0:2912; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2913; GFX900-NEXT:    ;;#ASMSTART2914; GFX900-NEXT:    ; def s[8:11]2915; GFX900-NEXT:    ;;#ASMEND2916; GFX900-NEXT:    ;;#ASMSTART2917; GFX900-NEXT:    ; def s[4:7]2918; GFX900-NEXT:    ;;#ASMEND2919; GFX900-NEXT:    s_mov_b32 s8, s62920; GFX900-NEXT:    s_mov_b32 s9, s72921; GFX900-NEXT:    s_mov_b32 s12, s102922; GFX900-NEXT:    s_mov_b32 s13, s112923; GFX900-NEXT:    ;;#ASMSTART2924; GFX900-NEXT:    ; use s[8:13]2925; GFX900-NEXT:    ;;#ASMEND2926; GFX900-NEXT:    s_setpc_b64 s[30:31]2927;2928; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_1_1:2929; GFX90A:       ; %bb.0:2930; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2931; GFX90A-NEXT:    ;;#ASMSTART2932; GFX90A-NEXT:    ; def s[8:11]2933; GFX90A-NEXT:    ;;#ASMEND2934; GFX90A-NEXT:    ;;#ASMSTART2935; GFX90A-NEXT:    ; def s[4:7]2936; GFX90A-NEXT:    ;;#ASMEND2937; GFX90A-NEXT:    s_mov_b32 s8, s62938; GFX90A-NEXT:    s_mov_b32 s9, s72939; GFX90A-NEXT:    s_mov_b32 s12, s102940; GFX90A-NEXT:    s_mov_b32 s13, s112941; GFX90A-NEXT:    ;;#ASMSTART2942; GFX90A-NEXT:    ; use s[8:13]2943; GFX90A-NEXT:    ;;#ASMEND2944; GFX90A-NEXT:    s_setpc_b64 s[30:31]2945;2946; GFX942-LABEL: s_shuffle_v3p0_v2p0__3_1_1:2947; GFX942:       ; %bb.0:2948; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2949; GFX942-NEXT:    ;;#ASMSTART2950; GFX942-NEXT:    ; def s[8:11]2951; GFX942-NEXT:    ;;#ASMEND2952; GFX942-NEXT:    ;;#ASMSTART2953; GFX942-NEXT:    ; def s[0:3]2954; GFX942-NEXT:    ;;#ASMEND2955; GFX942-NEXT:    s_mov_b32 s8, s22956; GFX942-NEXT:    s_mov_b32 s9, s32957; GFX942-NEXT:    s_mov_b32 s12, s102958; GFX942-NEXT:    s_mov_b32 s13, s112959; GFX942-NEXT:    ;;#ASMSTART2960; GFX942-NEXT:    ; use s[8:13]2961; GFX942-NEXT:    ;;#ASMEND2962; GFX942-NEXT:    s_setpc_b64 s[30:31]2963  %vec0 = call <2 x ptr> asm "; def $0", "=s"()2964  %vec1 = call <2 x ptr> asm "; def $0", "=s"()2965  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 1, i32 1>2966  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)2967  ret void2968}2969 2970define void @s_shuffle_v3p0_v2p0__3_u_1() {2971; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_u_1:2972; GFX900:       ; %bb.0:2973; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2974; GFX900-NEXT:    ;;#ASMSTART2975; GFX900-NEXT:    ; def s[8:11]2976; GFX900-NEXT:    ;;#ASMEND2977; GFX900-NEXT:    ;;#ASMSTART2978; GFX900-NEXT:    ; def s[4:7]2979; GFX900-NEXT:    ;;#ASMEND2980; GFX900-NEXT:    s_mov_b32 s8, s102981; GFX900-NEXT:    s_mov_b32 s9, s112982; GFX900-NEXT:    s_mov_b32 s12, s62983; GFX900-NEXT:    s_mov_b32 s13, s72984; GFX900-NEXT:    ;;#ASMSTART2985; GFX900-NEXT:    ; use s[8:13]2986; GFX900-NEXT:    ;;#ASMEND2987; GFX900-NEXT:    s_setpc_b64 s[30:31]2988;2989; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_u_1:2990; GFX90A:       ; %bb.0:2991; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2992; GFX90A-NEXT:    ;;#ASMSTART2993; GFX90A-NEXT:    ; def s[8:11]2994; GFX90A-NEXT:    ;;#ASMEND2995; GFX90A-NEXT:    ;;#ASMSTART2996; GFX90A-NEXT:    ; def s[4:7]2997; GFX90A-NEXT:    ;;#ASMEND2998; GFX90A-NEXT:    s_mov_b32 s8, s102999; GFX90A-NEXT:    s_mov_b32 s9, s113000; GFX90A-NEXT:    s_mov_b32 s12, s63001; GFX90A-NEXT:    s_mov_b32 s13, s73002; GFX90A-NEXT:    ;;#ASMSTART3003; GFX90A-NEXT:    ; use s[8:13]3004; GFX90A-NEXT:    ;;#ASMEND3005; GFX90A-NEXT:    s_setpc_b64 s[30:31]3006;3007; GFX942-LABEL: s_shuffle_v3p0_v2p0__3_u_1:3008; GFX942:       ; %bb.0:3009; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3010; GFX942-NEXT:    ;;#ASMSTART3011; GFX942-NEXT:    ; def s[0:3]3012; GFX942-NEXT:    ;;#ASMEND3013; GFX942-NEXT:    ;;#ASMSTART3014; GFX942-NEXT:    ; def s[4:7]3015; GFX942-NEXT:    ;;#ASMEND3016; GFX942-NEXT:    s_mov_b32 s8, s63017; GFX942-NEXT:    s_mov_b32 s9, s73018; GFX942-NEXT:    s_mov_b32 s12, s23019; GFX942-NEXT:    s_mov_b32 s13, s33020; GFX942-NEXT:    ;;#ASMSTART3021; GFX942-NEXT:    ; use s[8:13]3022; GFX942-NEXT:    ;;#ASMEND3023; GFX942-NEXT:    s_setpc_b64 s[30:31]3024  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3025  %vec1 = call <2 x ptr> asm "; def $0", "=s"()3026  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 poison, i32 1>3027  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)3028  ret void3029}3030 3031define void @s_shuffle_v3p0_v2p0__3_0_1() {3032; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_0_1:3033; GFX900:       ; %bb.0:3034; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3035; GFX900-NEXT:    ;;#ASMSTART3036; GFX900-NEXT:    ; def s[8:11]3037; GFX900-NEXT:    ;;#ASMEND3038; GFX900-NEXT:    ;;#ASMSTART3039; GFX900-NEXT:    ; def s[4:7]3040; GFX900-NEXT:    ;;#ASMEND3041; GFX900-NEXT:    s_mov_b32 s8, s103042; GFX900-NEXT:    s_mov_b32 s9, s113043; GFX900-NEXT:    s_mov_b32 s10, s43044; GFX900-NEXT:    s_mov_b32 s11, s53045; GFX900-NEXT:    s_mov_b32 s12, s63046; GFX900-NEXT:    s_mov_b32 s13, s73047; GFX900-NEXT:    ;;#ASMSTART3048; GFX900-NEXT:    ; use s[8:13]3049; GFX900-NEXT:    ;;#ASMEND3050; GFX900-NEXT:    s_setpc_b64 s[30:31]3051;3052; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_0_1:3053; GFX90A:       ; %bb.0:3054; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3055; GFX90A-NEXT:    ;;#ASMSTART3056; GFX90A-NEXT:    ; def s[8:11]3057; GFX90A-NEXT:    ;;#ASMEND3058; GFX90A-NEXT:    ;;#ASMSTART3059; GFX90A-NEXT:    ; def s[4:7]3060; GFX90A-NEXT:    ;;#ASMEND3061; GFX90A-NEXT:    s_mov_b32 s8, s103062; GFX90A-NEXT:    s_mov_b32 s9, s113063; GFX90A-NEXT:    s_mov_b32 s10, s43064; GFX90A-NEXT:    s_mov_b32 s11, s53065; GFX90A-NEXT:    s_mov_b32 s12, s63066; GFX90A-NEXT:    s_mov_b32 s13, s73067; GFX90A-NEXT:    ;;#ASMSTART3068; GFX90A-NEXT:    ; use s[8:13]3069; GFX90A-NEXT:    ;;#ASMEND3070; GFX90A-NEXT:    s_setpc_b64 s[30:31]3071;3072; GFX942-LABEL: s_shuffle_v3p0_v2p0__3_0_1:3073; GFX942:       ; %bb.0:3074; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3075; GFX942-NEXT:    ;;#ASMSTART3076; GFX942-NEXT:    ; def s[0:3]3077; GFX942-NEXT:    ;;#ASMEND3078; GFX942-NEXT:    ;;#ASMSTART3079; GFX942-NEXT:    ; def s[4:7]3080; GFX942-NEXT:    ;;#ASMEND3081; GFX942-NEXT:    s_mov_b32 s8, s63082; GFX942-NEXT:    s_mov_b32 s9, s73083; GFX942-NEXT:    s_mov_b32 s10, s03084; GFX942-NEXT:    s_mov_b32 s11, s13085; GFX942-NEXT:    s_mov_b32 s12, s23086; GFX942-NEXT:    s_mov_b32 s13, s33087; GFX942-NEXT:    ;;#ASMSTART3088; GFX942-NEXT:    ; use s[8:13]3089; GFX942-NEXT:    ;;#ASMEND3090; GFX942-NEXT:    s_setpc_b64 s[30:31]3091  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3092  %vec1 = call <2 x ptr> asm "; def $0", "=s"()3093  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 0, i32 1>3094  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)3095  ret void3096}3097 3098define void @s_shuffle_v3p0_v2p0__3_2_1() {3099; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_2_1:3100; GFX900:       ; %bb.0:3101; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3102; GFX900-NEXT:    ;;#ASMSTART3103; GFX900-NEXT:    ; def s[12:15]3104; GFX900-NEXT:    ;;#ASMEND3105; GFX900-NEXT:    ;;#ASMSTART3106; GFX900-NEXT:    ; def s[4:7]3107; GFX900-NEXT:    ;;#ASMEND3108; GFX900-NEXT:    s_mov_b32 s8, s143109; GFX900-NEXT:    s_mov_b32 s9, s153110; GFX900-NEXT:    s_mov_b32 s10, s123111; GFX900-NEXT:    s_mov_b32 s11, s133112; GFX900-NEXT:    s_mov_b32 s12, s63113; GFX900-NEXT:    s_mov_b32 s13, s73114; GFX900-NEXT:    ;;#ASMSTART3115; GFX900-NEXT:    ; use s[8:13]3116; GFX900-NEXT:    ;;#ASMEND3117; GFX900-NEXT:    s_setpc_b64 s[30:31]3118;3119; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_2_1:3120; GFX90A:       ; %bb.0:3121; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3122; GFX90A-NEXT:    ;;#ASMSTART3123; GFX90A-NEXT:    ; def s[12:15]3124; GFX90A-NEXT:    ;;#ASMEND3125; GFX90A-NEXT:    ;;#ASMSTART3126; GFX90A-NEXT:    ; def s[4:7]3127; GFX90A-NEXT:    ;;#ASMEND3128; GFX90A-NEXT:    s_mov_b32 s8, s143129; GFX90A-NEXT:    s_mov_b32 s9, s153130; GFX90A-NEXT:    s_mov_b32 s10, s123131; GFX90A-NEXT:    s_mov_b32 s11, s133132; GFX90A-NEXT:    s_mov_b32 s12, s63133; GFX90A-NEXT:    s_mov_b32 s13, s73134; GFX90A-NEXT:    ;;#ASMSTART3135; GFX90A-NEXT:    ; use s[8:13]3136; GFX90A-NEXT:    ;;#ASMEND3137; GFX90A-NEXT:    s_setpc_b64 s[30:31]3138;3139; GFX942-LABEL: s_shuffle_v3p0_v2p0__3_2_1:3140; GFX942:       ; %bb.0:3141; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3142; GFX942-NEXT:    ;;#ASMSTART3143; GFX942-NEXT:    ; def s[0:3]3144; GFX942-NEXT:    ;;#ASMEND3145; GFX942-NEXT:    ;;#ASMSTART3146; GFX942-NEXT:    ; def s[4:7]3147; GFX942-NEXT:    ;;#ASMEND3148; GFX942-NEXT:    s_mov_b32 s8, s63149; GFX942-NEXT:    s_mov_b32 s9, s73150; GFX942-NEXT:    s_mov_b32 s10, s43151; GFX942-NEXT:    s_mov_b32 s11, s53152; GFX942-NEXT:    s_mov_b32 s12, s23153; GFX942-NEXT:    s_mov_b32 s13, s33154; GFX942-NEXT:    ;;#ASMSTART3155; GFX942-NEXT:    ; use s[8:13]3156; GFX942-NEXT:    ;;#ASMEND3157; GFX942-NEXT:    s_setpc_b64 s[30:31]3158  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3159  %vec1 = call <2 x ptr> asm "; def $0", "=s"()3160  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 2, i32 1>3161  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)3162  ret void3163}3164 3165define void @s_shuffle_v3p0_v2p0__u_2_2() {3166; GFX9-LABEL: s_shuffle_v3p0_v2p0__u_2_2:3167; GFX9:       ; %bb.0:3168; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3169; GFX9-NEXT:    ;;#ASMSTART3170; GFX9-NEXT:    ; use s[8:13]3171; GFX9-NEXT:    ;;#ASMEND3172; GFX9-NEXT:    s_setpc_b64 s[30:31]3173  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3174  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 poison, i32 2, i32 2>3175  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)3176  ret void3177}3178 3179define void @s_shuffle_v3p0_v2p0__0_2_2() {3180; GFX900-LABEL: s_shuffle_v3p0_v2p0__0_2_2:3181; GFX900:       ; %bb.0:3182; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3183; GFX900-NEXT:    ;;#ASMSTART3184; GFX900-NEXT:    ; def s[8:11]3185; GFX900-NEXT:    ;;#ASMEND3186; GFX900-NEXT:    ;;#ASMSTART3187; GFX900-NEXT:    ; use s[8:13]3188; GFX900-NEXT:    ;;#ASMEND3189; GFX900-NEXT:    s_setpc_b64 s[30:31]3190;3191; GFX90A-LABEL: s_shuffle_v3p0_v2p0__0_2_2:3192; GFX90A:       ; %bb.0:3193; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3194; GFX90A-NEXT:    ;;#ASMSTART3195; GFX90A-NEXT:    ; def s[8:11]3196; GFX90A-NEXT:    ;;#ASMEND3197; GFX90A-NEXT:    ;;#ASMSTART3198; GFX90A-NEXT:    ; use s[8:13]3199; GFX90A-NEXT:    ;;#ASMEND3200; GFX90A-NEXT:    s_setpc_b64 s[30:31]3201;3202; GFX942-LABEL: s_shuffle_v3p0_v2p0__0_2_2:3203; GFX942:       ; %bb.0:3204; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3205; GFX942-NEXT:    ;;#ASMSTART3206; GFX942-NEXT:    ; def s[8:11]3207; GFX942-NEXT:    ;;#ASMEND3208; GFX942-NEXT:    s_nop 03209; GFX942-NEXT:    ;;#ASMSTART3210; GFX942-NEXT:    ; use s[8:13]3211; GFX942-NEXT:    ;;#ASMEND3212; GFX942-NEXT:    s_setpc_b64 s[30:31]3213  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3214  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 0, i32 2, i32 2>3215  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)3216  ret void3217}3218 3219define void @s_shuffle_v3p0_v2p0__1_2_2() {3220; GFX900-LABEL: s_shuffle_v3p0_v2p0__1_2_2:3221; GFX900:       ; %bb.0:3222; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3223; GFX900-NEXT:    ;;#ASMSTART3224; GFX900-NEXT:    ; def s[4:7]3225; GFX900-NEXT:    ;;#ASMEND3226; GFX900-NEXT:    s_mov_b32 s8, s63227; GFX900-NEXT:    s_mov_b32 s9, s73228; GFX900-NEXT:    ;;#ASMSTART3229; GFX900-NEXT:    ; use s[8:13]3230; GFX900-NEXT:    ;;#ASMEND3231; GFX900-NEXT:    s_setpc_b64 s[30:31]3232;3233; GFX90A-LABEL: s_shuffle_v3p0_v2p0__1_2_2:3234; GFX90A:       ; %bb.0:3235; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3236; GFX90A-NEXT:    ;;#ASMSTART3237; GFX90A-NEXT:    ; def s[4:7]3238; GFX90A-NEXT:    ;;#ASMEND3239; GFX90A-NEXT:    s_mov_b32 s8, s63240; GFX90A-NEXT:    s_mov_b32 s9, s73241; GFX90A-NEXT:    ;;#ASMSTART3242; GFX90A-NEXT:    ; use s[8:13]3243; GFX90A-NEXT:    ;;#ASMEND3244; GFX90A-NEXT:    s_setpc_b64 s[30:31]3245;3246; GFX942-LABEL: s_shuffle_v3p0_v2p0__1_2_2:3247; GFX942:       ; %bb.0:3248; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3249; GFX942-NEXT:    ;;#ASMSTART3250; GFX942-NEXT:    ; def s[0:3]3251; GFX942-NEXT:    ;;#ASMEND3252; GFX942-NEXT:    s_mov_b32 s8, s23253; GFX942-NEXT:    s_mov_b32 s9, s33254; GFX942-NEXT:    ;;#ASMSTART3255; GFX942-NEXT:    ; use s[8:13]3256; GFX942-NEXT:    ;;#ASMEND3257; GFX942-NEXT:    s_setpc_b64 s[30:31]3258  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3259  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 1, i32 2, i32 2>3260  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)3261  ret void3262}3263 3264define void @s_shuffle_v3p0_v2p0__2_2_2() {3265; GFX9-LABEL: s_shuffle_v3p0_v2p0__2_2_2:3266; GFX9:       ; %bb.0:3267; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3268; GFX9-NEXT:    ;;#ASMSTART3269; GFX9-NEXT:    ; use s[8:13]3270; GFX9-NEXT:    ;;#ASMEND3271; GFX9-NEXT:    s_setpc_b64 s[30:31]3272  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3273  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <3 x i32> <i32 2, i32 2, i32 2>3274  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)3275  ret void3276}3277 3278define void @s_shuffle_v3p0_v2p0__3_2_2() {3279; GFX9-LABEL: s_shuffle_v3p0_v2p0__3_2_2:3280; GFX9:       ; %bb.0:3281; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3282; GFX9-NEXT:    ;;#ASMSTART3283; GFX9-NEXT:    ; def s[12:15]3284; GFX9-NEXT:    ;;#ASMEND3285; GFX9-NEXT:    s_mov_b32 s8, s143286; GFX9-NEXT:    s_mov_b32 s9, s153287; GFX9-NEXT:    s_mov_b32 s10, s123288; GFX9-NEXT:    s_mov_b32 s11, s133289; GFX9-NEXT:    ;;#ASMSTART3290; GFX9-NEXT:    ; use s[8:13]3291; GFX9-NEXT:    ;;#ASMEND3292; GFX9-NEXT:    s_setpc_b64 s[30:31]3293  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3294  %vec1 = call <2 x ptr> asm "; def $0", "=s"()3295  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 2, i32 2>3296  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)3297  ret void3298}3299 3300define void @s_shuffle_v3p0_v2p0__3_u_2() {3301; GFX9-LABEL: s_shuffle_v3p0_v2p0__3_u_2:3302; GFX9:       ; %bb.0:3303; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3304; GFX9-NEXT:    ;;#ASMSTART3305; GFX9-NEXT:    ; def s[12:15]3306; GFX9-NEXT:    ;;#ASMEND3307; GFX9-NEXT:    s_mov_b32 s8, s143308; GFX9-NEXT:    s_mov_b32 s9, s153309; GFX9-NEXT:    ;;#ASMSTART3310; GFX9-NEXT:    ; use s[8:13]3311; GFX9-NEXT:    ;;#ASMEND3312; GFX9-NEXT:    s_setpc_b64 s[30:31]3313  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3314  %vec1 = call <2 x ptr> asm "; def $0", "=s"()3315  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 poison, i32 2>3316  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)3317  ret void3318}3319 3320define void @s_shuffle_v3p0_v2p0__3_0_2() {3321; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_0_2:3322; GFX900:       ; %bb.0:3323; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3324; GFX900-NEXT:    ;;#ASMSTART3325; GFX900-NEXT:    ; def s[4:7]3326; GFX900-NEXT:    ;;#ASMEND3327; GFX900-NEXT:    ;;#ASMSTART3328; GFX900-NEXT:    ; def s[12:15]3329; GFX900-NEXT:    ;;#ASMEND3330; GFX900-NEXT:    s_mov_b32 s8, s143331; GFX900-NEXT:    s_mov_b32 s9, s153332; GFX900-NEXT:    s_mov_b32 s10, s43333; GFX900-NEXT:    s_mov_b32 s11, s53334; GFX900-NEXT:    ;;#ASMSTART3335; GFX900-NEXT:    ; use s[8:13]3336; GFX900-NEXT:    ;;#ASMEND3337; GFX900-NEXT:    s_setpc_b64 s[30:31]3338;3339; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_0_2:3340; GFX90A:       ; %bb.0:3341; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3342; GFX90A-NEXT:    ;;#ASMSTART3343; GFX90A-NEXT:    ; def s[4:7]3344; GFX90A-NEXT:    ;;#ASMEND3345; GFX90A-NEXT:    ;;#ASMSTART3346; GFX90A-NEXT:    ; def s[12:15]3347; GFX90A-NEXT:    ;;#ASMEND3348; GFX90A-NEXT:    s_mov_b32 s8, s143349; GFX90A-NEXT:    s_mov_b32 s9, s153350; GFX90A-NEXT:    s_mov_b32 s10, s43351; GFX90A-NEXT:    s_mov_b32 s11, s53352; GFX90A-NEXT:    ;;#ASMSTART3353; GFX90A-NEXT:    ; use s[8:13]3354; GFX90A-NEXT:    ;;#ASMEND3355; GFX90A-NEXT:    s_setpc_b64 s[30:31]3356;3357; GFX942-LABEL: s_shuffle_v3p0_v2p0__3_0_2:3358; GFX942:       ; %bb.0:3359; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3360; GFX942-NEXT:    ;;#ASMSTART3361; GFX942-NEXT:    ; def s[0:3]3362; GFX942-NEXT:    ;;#ASMEND3363; GFX942-NEXT:    ;;#ASMSTART3364; GFX942-NEXT:    ; def s[12:15]3365; GFX942-NEXT:    ;;#ASMEND3366; GFX942-NEXT:    s_mov_b32 s8, s143367; GFX942-NEXT:    s_mov_b32 s9, s153368; GFX942-NEXT:    s_mov_b32 s10, s03369; GFX942-NEXT:    s_mov_b32 s11, s13370; GFX942-NEXT:    ;;#ASMSTART3371; GFX942-NEXT:    ; use s[8:13]3372; GFX942-NEXT:    ;;#ASMEND3373; GFX942-NEXT:    s_setpc_b64 s[30:31]3374  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3375  %vec1 = call <2 x ptr> asm "; def $0", "=s"()3376  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 0, i32 2>3377  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)3378  ret void3379}3380 3381define void @s_shuffle_v3p0_v2p0__3_1_2() {3382; GFX9-LABEL: s_shuffle_v3p0_v2p0__3_1_2:3383; GFX9:       ; %bb.0:3384; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3385; GFX9-NEXT:    ;;#ASMSTART3386; GFX9-NEXT:    ; def s[8:11]3387; GFX9-NEXT:    ;;#ASMEND3388; GFX9-NEXT:    ;;#ASMSTART3389; GFX9-NEXT:    ; def s[12:15]3390; GFX9-NEXT:    ;;#ASMEND3391; GFX9-NEXT:    s_mov_b32 s8, s143392; GFX9-NEXT:    s_mov_b32 s9, s153393; GFX9-NEXT:    ;;#ASMSTART3394; GFX9-NEXT:    ; use s[8:13]3395; GFX9-NEXT:    ;;#ASMEND3396; GFX9-NEXT:    s_setpc_b64 s[30:31]3397  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3398  %vec1 = call <2 x ptr> asm "; def $0", "=s"()3399  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 1, i32 2>3400  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)3401  ret void3402}3403 3404define void @s_shuffle_v3p0_v2p0__u_3_3() {3405; GFX9-LABEL: s_shuffle_v3p0_v2p0__u_3_3:3406; GFX9:       ; %bb.0:3407; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3408; GFX9-NEXT:    ;;#ASMSTART3409; GFX9-NEXT:    ; def s[8:11]3410; GFX9-NEXT:    ;;#ASMEND3411; GFX9-NEXT:    s_mov_b32 s12, s103412; GFX9-NEXT:    s_mov_b32 s13, s113413; GFX9-NEXT:    ;;#ASMSTART3414; GFX9-NEXT:    ; use s[8:13]3415; GFX9-NEXT:    ;;#ASMEND3416; GFX9-NEXT:    s_setpc_b64 s[30:31]3417  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3418  %vec1 = call <2 x ptr> asm "; def $0", "=s"()3419  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 poison, i32 3, i32 3>3420  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)3421  ret void3422}3423 3424define void @s_shuffle_v3p0_v2p0__0_3_3() {3425; GFX900-LABEL: s_shuffle_v3p0_v2p0__0_3_3:3426; GFX900:       ; %bb.0:3427; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3428; GFX900-NEXT:    ;;#ASMSTART3429; GFX900-NEXT:    ; def s[8:11]3430; GFX900-NEXT:    ;;#ASMEND3431; GFX900-NEXT:    ;;#ASMSTART3432; GFX900-NEXT:    ; def s[4:7]3433; GFX900-NEXT:    ;;#ASMEND3434; GFX900-NEXT:    s_mov_b32 s10, s63435; GFX900-NEXT:    s_mov_b32 s11, s73436; GFX900-NEXT:    s_mov_b32 s12, s63437; GFX900-NEXT:    s_mov_b32 s13, s73438; GFX900-NEXT:    ;;#ASMSTART3439; GFX900-NEXT:    ; use s[8:13]3440; GFX900-NEXT:    ;;#ASMEND3441; GFX900-NEXT:    s_setpc_b64 s[30:31]3442;3443; GFX90A-LABEL: s_shuffle_v3p0_v2p0__0_3_3:3444; GFX90A:       ; %bb.0:3445; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3446; GFX90A-NEXT:    ;;#ASMSTART3447; GFX90A-NEXT:    ; def s[8:11]3448; GFX90A-NEXT:    ;;#ASMEND3449; GFX90A-NEXT:    ;;#ASMSTART3450; GFX90A-NEXT:    ; def s[4:7]3451; GFX90A-NEXT:    ;;#ASMEND3452; GFX90A-NEXT:    s_mov_b32 s10, s63453; GFX90A-NEXT:    s_mov_b32 s11, s73454; GFX90A-NEXT:    s_mov_b32 s12, s63455; GFX90A-NEXT:    s_mov_b32 s13, s73456; GFX90A-NEXT:    ;;#ASMSTART3457; GFX90A-NEXT:    ; use s[8:13]3458; GFX90A-NEXT:    ;;#ASMEND3459; GFX90A-NEXT:    s_setpc_b64 s[30:31]3460;3461; GFX942-LABEL: s_shuffle_v3p0_v2p0__0_3_3:3462; GFX942:       ; %bb.0:3463; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3464; GFX942-NEXT:    ;;#ASMSTART3465; GFX942-NEXT:    ; def s[8:11]3466; GFX942-NEXT:    ;;#ASMEND3467; GFX942-NEXT:    ;;#ASMSTART3468; GFX942-NEXT:    ; def s[0:3]3469; GFX942-NEXT:    ;;#ASMEND3470; GFX942-NEXT:    s_mov_b32 s10, s23471; GFX942-NEXT:    s_mov_b32 s11, s33472; GFX942-NEXT:    s_mov_b32 s12, s23473; GFX942-NEXT:    s_mov_b32 s13, s33474; GFX942-NEXT:    ;;#ASMSTART3475; GFX942-NEXT:    ; use s[8:13]3476; GFX942-NEXT:    ;;#ASMEND3477; GFX942-NEXT:    s_setpc_b64 s[30:31]3478  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3479  %vec1 = call <2 x ptr> asm "; def $0", "=s"()3480  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 0, i32 3, i32 3>3481  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)3482  ret void3483}3484 3485define void @s_shuffle_v3p0_v2p0__1_3_3() {3486; GFX900-LABEL: s_shuffle_v3p0_v2p0__1_3_3:3487; GFX900:       ; %bb.0:3488; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3489; GFX900-NEXT:    ;;#ASMSTART3490; GFX900-NEXT:    ; def s[8:11]3491; GFX900-NEXT:    ;;#ASMEND3492; 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:    s_mov_b32 s12, s103498; GFX900-NEXT:    s_mov_b32 s13, s113499; GFX900-NEXT:    ;;#ASMSTART3500; GFX900-NEXT:    ; use s[8:13]3501; GFX900-NEXT:    ;;#ASMEND3502; GFX900-NEXT:    s_setpc_b64 s[30:31]3503;3504; GFX90A-LABEL: s_shuffle_v3p0_v2p0__1_3_3:3505; GFX90A:       ; %bb.0:3506; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3507; GFX90A-NEXT:    ;;#ASMSTART3508; GFX90A-NEXT:    ; def s[8:11]3509; GFX90A-NEXT:    ;;#ASMEND3510; GFX90A-NEXT:    ;;#ASMSTART3511; GFX90A-NEXT:    ; def s[4:7]3512; GFX90A-NEXT:    ;;#ASMEND3513; GFX90A-NEXT:    s_mov_b32 s8, s63514; GFX90A-NEXT:    s_mov_b32 s9, s73515; GFX90A-NEXT:    s_mov_b32 s12, s103516; GFX90A-NEXT:    s_mov_b32 s13, s113517; GFX90A-NEXT:    ;;#ASMSTART3518; GFX90A-NEXT:    ; use s[8:13]3519; GFX90A-NEXT:    ;;#ASMEND3520; GFX90A-NEXT:    s_setpc_b64 s[30:31]3521;3522; GFX942-LABEL: s_shuffle_v3p0_v2p0__1_3_3:3523; GFX942:       ; %bb.0:3524; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3525; GFX942-NEXT:    ;;#ASMSTART3526; GFX942-NEXT:    ; def s[8:11]3527; GFX942-NEXT:    ;;#ASMEND3528; GFX942-NEXT:    ;;#ASMSTART3529; GFX942-NEXT:    ; def s[0:3]3530; GFX942-NEXT:    ;;#ASMEND3531; GFX942-NEXT:    s_mov_b32 s8, s23532; GFX942-NEXT:    s_mov_b32 s9, s33533; GFX942-NEXT:    s_mov_b32 s12, s103534; GFX942-NEXT:    s_mov_b32 s13, s113535; GFX942-NEXT:    ;;#ASMSTART3536; GFX942-NEXT:    ; use s[8:13]3537; GFX942-NEXT:    ;;#ASMEND3538; GFX942-NEXT:    s_setpc_b64 s[30:31]3539  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3540  %vec1 = call <2 x ptr> asm "; def $0", "=s"()3541  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 1, i32 3, i32 3>3542  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)3543  ret void3544}3545 3546define void @s_shuffle_v3p0_v2p0__2_3_3() {3547; GFX9-LABEL: s_shuffle_v3p0_v2p0__2_3_3:3548; GFX9:       ; %bb.0:3549; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3550; GFX9-NEXT:    ;;#ASMSTART3551; GFX9-NEXT:    ; def s[8:11]3552; GFX9-NEXT:    ;;#ASMEND3553; GFX9-NEXT:    s_mov_b32 s12, s103554; GFX9-NEXT:    s_mov_b32 s13, s113555; GFX9-NEXT:    ;;#ASMSTART3556; GFX9-NEXT:    ; use s[8:13]3557; GFX9-NEXT:    ;;#ASMEND3558; GFX9-NEXT:    s_setpc_b64 s[30:31]3559  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3560  %vec1 = call <2 x ptr> asm "; def $0", "=s"()3561  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 2, i32 3, i32 3>3562  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)3563  ret void3564}3565 3566define void @s_shuffle_v3p0_v2p0__3_u_3() {3567; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_u_3:3568; GFX900:       ; %bb.0:3569; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3570; GFX900-NEXT:    ;;#ASMSTART3571; GFX900-NEXT:    ; def s[4:7]3572; GFX900-NEXT:    ;;#ASMEND3573; GFX900-NEXT:    s_mov_b32 s8, s63574; GFX900-NEXT:    s_mov_b32 s9, s73575; GFX900-NEXT:    s_mov_b32 s12, s63576; GFX900-NEXT:    s_mov_b32 s13, s73577; GFX900-NEXT:    ;;#ASMSTART3578; GFX900-NEXT:    ; use s[8:13]3579; GFX900-NEXT:    ;;#ASMEND3580; GFX900-NEXT:    s_setpc_b64 s[30:31]3581;3582; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_u_3:3583; GFX90A:       ; %bb.0:3584; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3585; GFX90A-NEXT:    ;;#ASMSTART3586; GFX90A-NEXT:    ; def s[4:7]3587; GFX90A-NEXT:    ;;#ASMEND3588; GFX90A-NEXT:    s_mov_b32 s8, s63589; GFX90A-NEXT:    s_mov_b32 s9, s73590; GFX90A-NEXT:    s_mov_b32 s12, s63591; GFX90A-NEXT:    s_mov_b32 s13, s73592; GFX90A-NEXT:    ;;#ASMSTART3593; GFX90A-NEXT:    ; use s[8:13]3594; GFX90A-NEXT:    ;;#ASMEND3595; GFX90A-NEXT:    s_setpc_b64 s[30:31]3596;3597; GFX942-LABEL: s_shuffle_v3p0_v2p0__3_u_3:3598; GFX942:       ; %bb.0:3599; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3600; GFX942-NEXT:    ;;#ASMSTART3601; GFX942-NEXT:    ; def s[0:3]3602; GFX942-NEXT:    ;;#ASMEND3603; GFX942-NEXT:    s_mov_b32 s8, s23604; GFX942-NEXT:    s_mov_b32 s9, s33605; GFX942-NEXT:    s_mov_b32 s12, s23606; GFX942-NEXT:    s_mov_b32 s13, s33607; GFX942-NEXT:    ;;#ASMSTART3608; GFX942-NEXT:    ; use s[8:13]3609; GFX942-NEXT:    ;;#ASMEND3610; GFX942-NEXT:    s_setpc_b64 s[30:31]3611  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3612  %vec1 = call <2 x ptr> asm "; def $0", "=s"()3613  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 poison, i32 3>3614  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)3615  ret void3616}3617 3618define void @s_shuffle_v3p0_v2p0__3_0_3() {3619; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_0_3:3620; GFX900:       ; %bb.0:3621; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3622; GFX900-NEXT:    ;;#ASMSTART3623; GFX900-NEXT:    ; def s[12:15]3624; GFX900-NEXT:    ;;#ASMEND3625; GFX900-NEXT:    ;;#ASMSTART3626; GFX900-NEXT:    ; def s[4:7]3627; GFX900-NEXT:    ;;#ASMEND3628; GFX900-NEXT:    s_mov_b32 s8, s143629; GFX900-NEXT:    s_mov_b32 s9, s153630; GFX900-NEXT:    s_mov_b32 s10, s43631; GFX900-NEXT:    s_mov_b32 s11, s53632; GFX900-NEXT:    s_mov_b32 s12, s143633; GFX900-NEXT:    s_mov_b32 s13, s153634; GFX900-NEXT:    ;;#ASMSTART3635; GFX900-NEXT:    ; use s[8:13]3636; GFX900-NEXT:    ;;#ASMEND3637; GFX900-NEXT:    s_setpc_b64 s[30:31]3638;3639; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_0_3:3640; GFX90A:       ; %bb.0:3641; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3642; GFX90A-NEXT:    ;;#ASMSTART3643; GFX90A-NEXT:    ; def s[12:15]3644; GFX90A-NEXT:    ;;#ASMEND3645; GFX90A-NEXT:    ;;#ASMSTART3646; GFX90A-NEXT:    ; def s[4:7]3647; GFX90A-NEXT:    ;;#ASMEND3648; GFX90A-NEXT:    s_mov_b32 s8, s143649; GFX90A-NEXT:    s_mov_b32 s9, s153650; GFX90A-NEXT:    s_mov_b32 s10, s43651; GFX90A-NEXT:    s_mov_b32 s11, s53652; GFX90A-NEXT:    s_mov_b32 s12, s143653; GFX90A-NEXT:    s_mov_b32 s13, s153654; GFX90A-NEXT:    ;;#ASMSTART3655; GFX90A-NEXT:    ; use s[8:13]3656; GFX90A-NEXT:    ;;#ASMEND3657; GFX90A-NEXT:    s_setpc_b64 s[30:31]3658;3659; GFX942-LABEL: s_shuffle_v3p0_v2p0__3_0_3:3660; GFX942:       ; %bb.0:3661; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3662; GFX942-NEXT:    ;;#ASMSTART3663; GFX942-NEXT:    ; def s[0:3]3664; GFX942-NEXT:    ;;#ASMEND3665; GFX942-NEXT:    ;;#ASMSTART3666; GFX942-NEXT:    ; def s[4:7]3667; GFX942-NEXT:    ;;#ASMEND3668; GFX942-NEXT:    s_mov_b32 s8, s63669; GFX942-NEXT:    s_mov_b32 s9, s73670; GFX942-NEXT:    s_mov_b32 s10, s03671; GFX942-NEXT:    s_mov_b32 s11, s13672; GFX942-NEXT:    s_mov_b32 s12, s63673; GFX942-NEXT:    s_mov_b32 s13, s73674; GFX942-NEXT:    ;;#ASMSTART3675; GFX942-NEXT:    ; use s[8:13]3676; GFX942-NEXT:    ;;#ASMEND3677; GFX942-NEXT:    s_setpc_b64 s[30:31]3678  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3679  %vec1 = call <2 x ptr> asm "; def $0", "=s"()3680  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 0, i32 3>3681  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)3682  ret void3683}3684 3685define void @s_shuffle_v3p0_v2p0__3_1_3() {3686; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_1_3:3687; GFX900:       ; %bb.0:3688; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3689; GFX900-NEXT:    ;;#ASMSTART3690; GFX900-NEXT:    ; def s[8:11]3691; GFX900-NEXT:    ;;#ASMEND3692; GFX900-NEXT:    ;;#ASMSTART3693; GFX900-NEXT:    ; def s[4:7]3694; GFX900-NEXT:    ;;#ASMEND3695; GFX900-NEXT:    s_mov_b32 s8, s63696; GFX900-NEXT:    s_mov_b32 s9, s73697; GFX900-NEXT:    s_mov_b32 s12, s63698; GFX900-NEXT:    s_mov_b32 s13, s73699; GFX900-NEXT:    ;;#ASMSTART3700; GFX900-NEXT:    ; use s[8:13]3701; GFX900-NEXT:    ;;#ASMEND3702; GFX900-NEXT:    s_setpc_b64 s[30:31]3703;3704; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_1_3:3705; GFX90A:       ; %bb.0:3706; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3707; GFX90A-NEXT:    ;;#ASMSTART3708; GFX90A-NEXT:    ; def s[8:11]3709; GFX90A-NEXT:    ;;#ASMEND3710; GFX90A-NEXT:    ;;#ASMSTART3711; GFX90A-NEXT:    ; def s[4:7]3712; GFX90A-NEXT:    ;;#ASMEND3713; GFX90A-NEXT:    s_mov_b32 s8, s63714; GFX90A-NEXT:    s_mov_b32 s9, s73715; GFX90A-NEXT:    s_mov_b32 s12, s63716; GFX90A-NEXT:    s_mov_b32 s13, s73717; GFX90A-NEXT:    ;;#ASMSTART3718; GFX90A-NEXT:    ; use s[8:13]3719; GFX90A-NEXT:    ;;#ASMEND3720; GFX90A-NEXT:    s_setpc_b64 s[30:31]3721;3722; GFX942-LABEL: s_shuffle_v3p0_v2p0__3_1_3:3723; GFX942:       ; %bb.0:3724; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3725; GFX942-NEXT:    ;;#ASMSTART3726; GFX942-NEXT:    ; def s[8:11]3727; GFX942-NEXT:    ;;#ASMEND3728; GFX942-NEXT:    ;;#ASMSTART3729; GFX942-NEXT:    ; def s[0:3]3730; GFX942-NEXT:    ;;#ASMEND3731; GFX942-NEXT:    s_mov_b32 s8, s23732; GFX942-NEXT:    s_mov_b32 s9, s33733; GFX942-NEXT:    s_mov_b32 s12, s23734; GFX942-NEXT:    s_mov_b32 s13, s33735; GFX942-NEXT:    ;;#ASMSTART3736; GFX942-NEXT:    ; use s[8:13]3737; GFX942-NEXT:    ;;#ASMEND3738; GFX942-NEXT:    s_setpc_b64 s[30:31]3739  %vec0 = call <2 x ptr> asm "; def $0", "=s"()3740  %vec1 = call <2 x ptr> asm "; def $0", "=s"()3741  %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <3 x i32> <i32 3, i32 1, i32 3>3742  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)3743  ret void3744}3745 3746define void @s_shuffle_v3p0_v2p0__3_2_3() {3747; GFX900-LABEL: s_shuffle_v3p0_v2p0__3_2_3:3748; GFX900:       ; %bb.0:3749; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3750; GFX900-NEXT:    ;;#ASMSTART3751; GFX900-NEXT:    ; def s[4:7]3752; GFX900-NEXT:    ;;#ASMEND3753; GFX900-NEXT:    s_mov_b32 s8, s63754; GFX900-NEXT:    s_mov_b32 s9, s73755; GFX900-NEXT:    s_mov_b32 s10, s43756; GFX900-NEXT:    s_mov_b32 s11, s53757; GFX900-NEXT:    s_mov_b32 s12, s63758; GFX900-NEXT:    s_mov_b32 s13, s73759; GFX900-NEXT:    ;;#ASMSTART3760; GFX900-NEXT:    ; use s[8:13]3761; GFX900-NEXT:    ;;#ASMEND3762; GFX900-NEXT:    s_setpc_b64 s[30:31]3763;3764; GFX90A-LABEL: s_shuffle_v3p0_v2p0__3_2_3:3765; GFX90A:       ; %bb.0:3766; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3767; GFX90A-NEXT:    ;;#ASMSTART3768; GFX90A-NEXT:    ; def s[4:7]3769; GFX90A-NEXT:    ;;#ASMEND3770; GFX90A-NEXT:    s_mov_b32 s8, s63771; GFX90A-NEXT:    s_mov_b32 s9, s73772; GFX90A-NEXT:    s_mov_b32 s10, s43773; GFX90A-NEXT:    s_mov_b32 s11, s53774; GFX90A-NEXT:    s_mov_b32 s12, s63775; GFX90A-NEXT:    s_mov_b32 s13, s73776; GFX90A-NEXT:    ;;#ASMSTART3777; GFX90A-NEXT:    ; use s[8:13]3778; GFX90A-NEXT:    ;;#ASMEND3779; GFX90A-NEXT:    s_setpc_b64 s[30:31]3780;3781; GFX942-LABEL: s_shuffle_v3p0_v2p0__3_2_3:3782; GFX942:       ; %bb.0:3783; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3784; GFX942-NEXT:    ;;#ASMSTART3785; GFX942-NEXT:    ; def s[0:3]3786; GFX942-NEXT:    ;;#ASMEND3787; GFX942-NEXT:    s_mov_b32 s8, s23788; GFX942-NEXT:    s_mov_b32 s9, s33789; GFX942-NEXT:    s_mov_b32 s10, s03790; GFX942-NEXT:    s_mov_b32 s11, s13791; GFX942-NEXT:    s_mov_b32 s12, s23792; GFX942-NEXT:    s_mov_b32 s13, s33793; GFX942-NEXT:    ;;#ASMSTART3794; GFX942-NEXT:    ; use s[8:13]3795; GFX942-NEXT:    ;;#ASMEND3796; GFX942-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, <3 x i32> <i32 3, i32 2, i32 3>3800  call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)3801  ret void3802}3803;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:3804; GFX90APLUS: {{.*}}3805