brintos

brintos / llvm-project-archived public Read only

0
0
Text · 137.9 KiB · 385dc73 Raw
4003 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_v2p0_v3p0__u_u(ptr addrspace(1) inreg %ptr) {8; GFX9-LABEL: v_shuffle_v2p0_v3p0__u_u:9; GFX9:       ; %bb.0:10; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11; GFX9-NEXT:    s_setpc_b64 s[30:31]12  %vec0 = call <3 x ptr> asm "; def $0", "=v"()13  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> poison14  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 1615  ret void16}17 18define void @v_shuffle_v2p0_v3p0__0_u(ptr addrspace(1) inreg %ptr) {19; GFX900-LABEL: v_shuffle_v2p0_v3p0__0_u:20; GFX900:       ; %bb.0:21; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22; GFX900-NEXT:    v_mov_b32_e32 v6, 023; GFX900-NEXT:    ;;#ASMSTART24; GFX900-NEXT:    ; def v[0:5]25; GFX900-NEXT:    ;;#ASMEND26; GFX900-NEXT:    global_store_dwordx4 v6, v[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_v2p0_v3p0__0_u:31; GFX90A:       ; %bb.0:32; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)33; GFX90A-NEXT:    v_mov_b32_e32 v6, 034; GFX90A-NEXT:    ;;#ASMSTART35; GFX90A-NEXT:    ; def v[0:5]36; GFX90A-NEXT:    ;;#ASMEND37; GFX90A-NEXT:    global_store_dwordx4 v6, 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_v2p0_v3p0__0_u:42; GFX942:       ; %bb.0:43; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)44; GFX942-NEXT:    v_mov_b32_e32 v6, 045; GFX942-NEXT:    ;;#ASMSTART46; GFX942-NEXT:    ; def v[0:5]47; GFX942-NEXT:    ;;#ASMEND48; GFX942-NEXT:    global_store_dwordx4 v6, 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 <3 x ptr> asm "; def $0", "=v"()52  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 poison>53  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 1654  ret void55}56 57define void @v_shuffle_v2p0_v3p0__1_u(ptr addrspace(1) inreg %ptr) {58; GFX900-LABEL: v_shuffle_v2p0_v3p0__1_u:59; GFX900:       ; %bb.0:60; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)61; GFX900-NEXT:    v_mov_b32_e32 v6, 062; GFX900-NEXT:    ;;#ASMSTART63; GFX900-NEXT:    ; def v[0:5]64; GFX900-NEXT:    ;;#ASMEND65; GFX900-NEXT:    global_store_dwordx4 v6, 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_v2p0_v3p0__1_u:70; GFX90A:       ; %bb.0:71; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)72; GFX90A-NEXT:    v_mov_b32_e32 v6, 073; GFX90A-NEXT:    ;;#ASMSTART74; GFX90A-NEXT:    ; def v[0:5]75; GFX90A-NEXT:    ;;#ASMEND76; GFX90A-NEXT:    global_store_dwordx4 v6, 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_v2p0_v3p0__1_u:81; GFX942:       ; %bb.0:82; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)83; GFX942-NEXT:    v_mov_b32_e32 v6, 084; GFX942-NEXT:    ;;#ASMSTART85; GFX942-NEXT:    ; def v[0:5]86; GFX942-NEXT:    ;;#ASMEND87; GFX942-NEXT:    global_store_dwordx4 v6, 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 <3 x ptr> asm "; def $0", "=v"()91  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 poison>92  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 1693  ret void94}95 96define void @v_shuffle_v2p0_v3p0__2_u(ptr addrspace(1) inreg %ptr) {97; GFX900-LABEL: v_shuffle_v2p0_v3p0__2_u:98; GFX900:       ; %bb.0:99; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)100; GFX900-NEXT:    v_mov_b32_e32 v6, 0101; GFX900-NEXT:    ;;#ASMSTART102; GFX900-NEXT:    ; def v[0:5]103; GFX900-NEXT:    ;;#ASMEND104; GFX900-NEXT:    global_store_dwordx4 v6, v[4:7], s[16:17]105; GFX900-NEXT:    s_waitcnt vmcnt(0)106; GFX900-NEXT:    s_setpc_b64 s[30:31]107;108; GFX90A-LABEL: v_shuffle_v2p0_v3p0__2_u:109; GFX90A:       ; %bb.0:110; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)111; GFX90A-NEXT:    v_mov_b32_e32 v6, 0112; GFX90A-NEXT:    ;;#ASMSTART113; GFX90A-NEXT:    ; def v[0:5]114; GFX90A-NEXT:    ;;#ASMEND115; GFX90A-NEXT:    global_store_dwordx4 v6, v[4:7], s[16:17]116; GFX90A-NEXT:    s_waitcnt vmcnt(0)117; GFX90A-NEXT:    s_setpc_b64 s[30:31]118;119; GFX942-LABEL: v_shuffle_v2p0_v3p0__2_u:120; GFX942:       ; %bb.0:121; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)122; GFX942-NEXT:    v_mov_b32_e32 v6, 0123; GFX942-NEXT:    ;;#ASMSTART124; GFX942-NEXT:    ; def v[0:5]125; GFX942-NEXT:    ;;#ASMEND126; GFX942-NEXT:    global_store_dwordx4 v6, v[4:7], s[0:1]127; GFX942-NEXT:    s_waitcnt vmcnt(0)128; GFX942-NEXT:    s_setpc_b64 s[30:31]129  %vec0 = call <3 x ptr> asm "; def $0", "=v"()130  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 poison>131  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16132  ret void133}134 135define void @v_shuffle_v2p0_v3p0__3_u(ptr addrspace(1) inreg %ptr) {136; GFX9-LABEL: v_shuffle_v2p0_v3p0__3_u:137; GFX9:       ; %bb.0:138; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)139; GFX9-NEXT:    s_setpc_b64 s[30:31]140  %vec0 = call <3 x ptr> asm "; def $0", "=v"()141  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 poison>142  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16143  ret void144}145 146define void @v_shuffle_v2p0_v3p0__4_u(ptr addrspace(1) inreg %ptr) {147; GFX900-LABEL: v_shuffle_v2p0_v3p0__4_u:148; GFX900:       ; %bb.0:149; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)150; GFX900-NEXT:    v_mov_b32_e32 v6, 0151; GFX900-NEXT:    ;;#ASMSTART152; GFX900-NEXT:    ; def v[0:5]153; GFX900-NEXT:    ;;#ASMEND154; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]155; GFX900-NEXT:    s_waitcnt vmcnt(0)156; GFX900-NEXT:    s_setpc_b64 s[30:31]157;158; GFX90A-LABEL: v_shuffle_v2p0_v3p0__4_u:159; GFX90A:       ; %bb.0:160; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)161; GFX90A-NEXT:    v_mov_b32_e32 v6, 0162; GFX90A-NEXT:    ;;#ASMSTART163; GFX90A-NEXT:    ; def v[0:5]164; GFX90A-NEXT:    ;;#ASMEND165; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]166; GFX90A-NEXT:    s_waitcnt vmcnt(0)167; GFX90A-NEXT:    s_setpc_b64 s[30:31]168;169; GFX942-LABEL: v_shuffle_v2p0_v3p0__4_u:170; GFX942:       ; %bb.0:171; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)172; GFX942-NEXT:    v_mov_b32_e32 v6, 0173; GFX942-NEXT:    ;;#ASMSTART174; GFX942-NEXT:    ; def v[0:5]175; GFX942-NEXT:    ;;#ASMEND176; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]177; GFX942-NEXT:    s_waitcnt vmcnt(0)178; GFX942-NEXT:    s_setpc_b64 s[30:31]179  %vec0 = call <3 x ptr> asm "; def $0", "=v"()180  %vec1 = call <3 x ptr> asm "; def $0", "=v"()181  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 poison>182  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16183  ret void184}185 186define void @v_shuffle_v2p0_v3p0__5_u(ptr addrspace(1) inreg %ptr) {187; GFX900-LABEL: v_shuffle_v2p0_v3p0__5_u:188; GFX900:       ; %bb.0:189; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)190; GFX900-NEXT:    v_mov_b32_e32 v6, 0191; GFX900-NEXT:    ;;#ASMSTART192; GFX900-NEXT:    ; def v[0:5]193; GFX900-NEXT:    ;;#ASMEND194; GFX900-NEXT:    global_store_dwordx4 v6, v[4:7], s[16:17]195; GFX900-NEXT:    s_waitcnt vmcnt(0)196; GFX900-NEXT:    s_setpc_b64 s[30:31]197;198; GFX90A-LABEL: v_shuffle_v2p0_v3p0__5_u:199; GFX90A:       ; %bb.0:200; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)201; GFX90A-NEXT:    v_mov_b32_e32 v6, 0202; GFX90A-NEXT:    ;;#ASMSTART203; GFX90A-NEXT:    ; def v[0:5]204; GFX90A-NEXT:    ;;#ASMEND205; GFX90A-NEXT:    global_store_dwordx4 v6, v[4:7], s[16:17]206; GFX90A-NEXT:    s_waitcnt vmcnt(0)207; GFX90A-NEXT:    s_setpc_b64 s[30:31]208;209; GFX942-LABEL: v_shuffle_v2p0_v3p0__5_u:210; GFX942:       ; %bb.0:211; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)212; GFX942-NEXT:    v_mov_b32_e32 v6, 0213; GFX942-NEXT:    ;;#ASMSTART214; GFX942-NEXT:    ; def v[0:5]215; GFX942-NEXT:    ;;#ASMEND216; GFX942-NEXT:    global_store_dwordx4 v6, v[4:7], s[0:1]217; GFX942-NEXT:    s_waitcnt vmcnt(0)218; GFX942-NEXT:    s_setpc_b64 s[30:31]219  %vec0 = call <3 x ptr> asm "; def $0", "=v"()220  %vec1 = call <3 x ptr> asm "; def $0", "=v"()221  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 poison>222  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16223  ret void224}225 226define void @v_shuffle_v2p0_v3p0__5_0(ptr addrspace(1) inreg %ptr) {227; GFX900-LABEL: v_shuffle_v2p0_v3p0__5_0:228; GFX900:       ; %bb.0:229; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)230; GFX900-NEXT:    v_mov_b32_e32 v12, 0231; GFX900-NEXT:    ;;#ASMSTART232; GFX900-NEXT:    ; def v[6:11]233; GFX900-NEXT:    ;;#ASMEND234; GFX900-NEXT:    ;;#ASMSTART235; GFX900-NEXT:    ; def v[0:5]236; GFX900-NEXT:    ;;#ASMEND237; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]238; GFX900-NEXT:    s_waitcnt vmcnt(0)239; GFX900-NEXT:    s_setpc_b64 s[30:31]240;241; GFX90A-LABEL: v_shuffle_v2p0_v3p0__5_0:242; GFX90A:       ; %bb.0:243; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)244; GFX90A-NEXT:    v_mov_b32_e32 v12, 0245; GFX90A-NEXT:    ;;#ASMSTART246; GFX90A-NEXT:    ; def v[6:11]247; GFX90A-NEXT:    ;;#ASMEND248; GFX90A-NEXT:    ;;#ASMSTART249; GFX90A-NEXT:    ; def v[0:5]250; GFX90A-NEXT:    ;;#ASMEND251; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]252; GFX90A-NEXT:    s_waitcnt vmcnt(0)253; GFX90A-NEXT:    s_setpc_b64 s[30:31]254;255; GFX942-LABEL: v_shuffle_v2p0_v3p0__5_0:256; GFX942:       ; %bb.0:257; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)258; GFX942-NEXT:    v_mov_b32_e32 v12, 0259; GFX942-NEXT:    ;;#ASMSTART260; GFX942-NEXT:    ; def v[6:11]261; GFX942-NEXT:    ;;#ASMEND262; GFX942-NEXT:    ;;#ASMSTART263; GFX942-NEXT:    ; def v[0:5]264; GFX942-NEXT:    ;;#ASMEND265; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1]266; GFX942-NEXT:    s_waitcnt vmcnt(0)267; GFX942-NEXT:    s_setpc_b64 s[30:31]268  %vec0 = call <3 x ptr> asm "; def $0", "=v"()269  %vec1 = call <3 x ptr> asm "; def $0", "=v"()270  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 0>271  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16272  ret void273}274 275define void @v_shuffle_v2p0_v3p0__5_1(ptr addrspace(1) inreg %ptr) {276; GFX900-LABEL: v_shuffle_v2p0_v3p0__5_1:277; GFX900:       ; %bb.0:278; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)279; GFX900-NEXT:    v_mov_b32_e32 v10, 0280; GFX900-NEXT:    ;;#ASMSTART281; GFX900-NEXT:    ; def v[4:9]282; GFX900-NEXT:    ;;#ASMEND283; GFX900-NEXT:    ;;#ASMSTART284; GFX900-NEXT:    ; def v[0:5]285; GFX900-NEXT:    ;;#ASMEND286; GFX900-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]287; GFX900-NEXT:    s_waitcnt vmcnt(0)288; GFX900-NEXT:    s_setpc_b64 s[30:31]289;290; GFX90A-LABEL: v_shuffle_v2p0_v3p0__5_1:291; GFX90A:       ; %bb.0:292; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)293; GFX90A-NEXT:    v_mov_b32_e32 v10, 0294; GFX90A-NEXT:    ;;#ASMSTART295; GFX90A-NEXT:    ; def v[4:9]296; GFX90A-NEXT:    ;;#ASMEND297; GFX90A-NEXT:    ;;#ASMSTART298; GFX90A-NEXT:    ; def v[0:5]299; GFX90A-NEXT:    ;;#ASMEND300; GFX90A-NEXT:    global_store_dwordx4 v10, v[4:7], s[16:17]301; GFX90A-NEXT:    s_waitcnt vmcnt(0)302; GFX90A-NEXT:    s_setpc_b64 s[30:31]303;304; GFX942-LABEL: v_shuffle_v2p0_v3p0__5_1:305; GFX942:       ; %bb.0:306; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)307; GFX942-NEXT:    v_mov_b32_e32 v10, 0308; GFX942-NEXT:    ;;#ASMSTART309; GFX942-NEXT:    ; def v[4:9]310; GFX942-NEXT:    ;;#ASMEND311; GFX942-NEXT:    s_nop 0312; GFX942-NEXT:    ;;#ASMSTART313; GFX942-NEXT:    ; def v[0:5]314; GFX942-NEXT:    ;;#ASMEND315; GFX942-NEXT:    global_store_dwordx4 v10, v[4:7], s[0:1]316; GFX942-NEXT:    s_waitcnt vmcnt(0)317; GFX942-NEXT:    s_setpc_b64 s[30:31]318  %vec0 = call <3 x ptr> asm "; def $0", "=v"()319  %vec1 = call <3 x ptr> asm "; def $0", "=v"()320  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 1>321  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16322  ret void323}324 325define void @v_shuffle_v2p0_v3p0__5_2(ptr addrspace(1) inreg %ptr) {326; GFX900-LABEL: v_shuffle_v2p0_v3p0__5_2:327; GFX900:       ; %bb.0:328; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)329; GFX900-NEXT:    v_mov_b32_e32 v8, 0330; GFX900-NEXT:    ;;#ASMSTART331; GFX900-NEXT:    ; def v[2:7]332; GFX900-NEXT:    ;;#ASMEND333; GFX900-NEXT:    ;;#ASMSTART334; GFX900-NEXT:    ; def v[0:5]335; GFX900-NEXT:    ;;#ASMEND336; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]337; GFX900-NEXT:    s_waitcnt vmcnt(0)338; GFX900-NEXT:    s_setpc_b64 s[30:31]339;340; GFX90A-LABEL: v_shuffle_v2p0_v3p0__5_2:341; GFX90A:       ; %bb.0:342; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)343; GFX90A-NEXT:    v_mov_b32_e32 v8, 0344; GFX90A-NEXT:    ;;#ASMSTART345; GFX90A-NEXT:    ; def v[2:7]346; GFX90A-NEXT:    ;;#ASMEND347; GFX90A-NEXT:    ;;#ASMSTART348; GFX90A-NEXT:    ; def v[0:5]349; GFX90A-NEXT:    ;;#ASMEND350; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]351; GFX90A-NEXT:    s_waitcnt vmcnt(0)352; GFX90A-NEXT:    s_setpc_b64 s[30:31]353;354; GFX942-LABEL: v_shuffle_v2p0_v3p0__5_2:355; GFX942:       ; %bb.0:356; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)357; GFX942-NEXT:    v_mov_b32_e32 v8, 0358; GFX942-NEXT:    ;;#ASMSTART359; GFX942-NEXT:    ; def v[2:7]360; GFX942-NEXT:    ;;#ASMEND361; GFX942-NEXT:    s_nop 0362; GFX942-NEXT:    ;;#ASMSTART363; GFX942-NEXT:    ; def v[0:5]364; GFX942-NEXT:    ;;#ASMEND365; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]366; GFX942-NEXT:    s_waitcnt vmcnt(0)367; GFX942-NEXT:    s_setpc_b64 s[30:31]368  %vec0 = call <3 x ptr> asm "; def $0", "=v"()369  %vec1 = call <3 x ptr> asm "; def $0", "=v"()370  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 2>371  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16372  ret void373}374 375define void @v_shuffle_v2p0_v3p0__5_3(ptr addrspace(1) inreg %ptr) {376; GFX900-LABEL: v_shuffle_v2p0_v3p0__5_3:377; GFX900:       ; %bb.0:378; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)379; GFX900-NEXT:    v_mov_b32_e32 v8, 0380; GFX900-NEXT:    ;;#ASMSTART381; GFX900-NEXT:    ; def v[0:5]382; GFX900-NEXT:    ;;#ASMEND383; GFX900-NEXT:    v_mov_b32_e32 v6, v0384; GFX900-NEXT:    v_mov_b32_e32 v7, v1385; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]386; GFX900-NEXT:    s_waitcnt vmcnt(0)387; GFX900-NEXT:    s_setpc_b64 s[30:31]388;389; GFX90A-LABEL: v_shuffle_v2p0_v3p0__5_3:390; GFX90A:       ; %bb.0:391; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)392; GFX90A-NEXT:    v_mov_b32_e32 v8, 0393; GFX90A-NEXT:    ;;#ASMSTART394; GFX90A-NEXT:    ; def v[0:5]395; GFX90A-NEXT:    ;;#ASMEND396; GFX90A-NEXT:    v_mov_b32_e32 v6, v0397; GFX90A-NEXT:    v_mov_b32_e32 v7, v1398; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]399; GFX90A-NEXT:    s_waitcnt vmcnt(0)400; GFX90A-NEXT:    s_setpc_b64 s[30:31]401;402; GFX942-LABEL: v_shuffle_v2p0_v3p0__5_3:403; GFX942:       ; %bb.0:404; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)405; GFX942-NEXT:    v_mov_b32_e32 v8, 0406; GFX942-NEXT:    ;;#ASMSTART407; GFX942-NEXT:    ; def v[0:5]408; GFX942-NEXT:    ;;#ASMEND409; GFX942-NEXT:    s_nop 0410; GFX942-NEXT:    v_mov_b32_e32 v6, v0411; GFX942-NEXT:    v_mov_b32_e32 v7, v1412; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]413; GFX942-NEXT:    s_waitcnt vmcnt(0)414; GFX942-NEXT:    s_setpc_b64 s[30:31]415  %vec0 = call <3 x ptr> asm "; def $0", "=v"()416  %vec1 = call <3 x ptr> asm "; def $0", "=v"()417  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 3>418  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16419  ret void420}421 422define void @v_shuffle_v2p0_v3p0__5_4(ptr addrspace(1) inreg %ptr) {423; GFX900-LABEL: v_shuffle_v2p0_v3p0__5_4:424; GFX900:       ; %bb.0:425; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)426; GFX900-NEXT:    v_mov_b32_e32 v8, 0427; GFX900-NEXT:    ;;#ASMSTART428; GFX900-NEXT:    ; def v[0:5]429; GFX900-NEXT:    ;;#ASMEND430; GFX900-NEXT:    v_mov_b32_e32 v6, v2431; GFX900-NEXT:    v_mov_b32_e32 v7, v3432; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]433; GFX900-NEXT:    s_waitcnt vmcnt(0)434; GFX900-NEXT:    s_setpc_b64 s[30:31]435;436; GFX90A-LABEL: v_shuffle_v2p0_v3p0__5_4:437; GFX90A:       ; %bb.0:438; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)439; GFX90A-NEXT:    v_mov_b32_e32 v8, 0440; GFX90A-NEXT:    ;;#ASMSTART441; GFX90A-NEXT:    ; def v[0:5]442; GFX90A-NEXT:    ;;#ASMEND443; GFX90A-NEXT:    v_mov_b32_e32 v6, v2444; GFX90A-NEXT:    v_mov_b32_e32 v7, v3445; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]446; GFX90A-NEXT:    s_waitcnt vmcnt(0)447; GFX90A-NEXT:    s_setpc_b64 s[30:31]448;449; GFX942-LABEL: v_shuffle_v2p0_v3p0__5_4:450; GFX942:       ; %bb.0:451; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)452; GFX942-NEXT:    v_mov_b32_e32 v8, 0453; GFX942-NEXT:    ;;#ASMSTART454; GFX942-NEXT:    ; def v[0:5]455; GFX942-NEXT:    ;;#ASMEND456; GFX942-NEXT:    s_nop 0457; GFX942-NEXT:    v_mov_b32_e32 v6, v2458; GFX942-NEXT:    v_mov_b32_e32 v7, v3459; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]460; GFX942-NEXT:    s_waitcnt vmcnt(0)461; GFX942-NEXT:    s_setpc_b64 s[30:31]462  %vec0 = call <3 x ptr> asm "; def $0", "=v"()463  %vec1 = call <3 x ptr> asm "; def $0", "=v"()464  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 4>465  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16466  ret void467}468 469define void @v_shuffle_v2p0_v3p0__5_5(ptr addrspace(1) inreg %ptr) {470; GFX900-LABEL: v_shuffle_v2p0_v3p0__5_5:471; GFX900:       ; %bb.0:472; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)473; GFX900-NEXT:    v_mov_b32_e32 v8, 0474; GFX900-NEXT:    ;;#ASMSTART475; GFX900-NEXT:    ; def v[0:5]476; GFX900-NEXT:    ;;#ASMEND477; GFX900-NEXT:    v_mov_b32_e32 v6, v4478; GFX900-NEXT:    v_mov_b32_e32 v7, v5479; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]480; GFX900-NEXT:    s_waitcnt vmcnt(0)481; GFX900-NEXT:    s_setpc_b64 s[30:31]482;483; GFX90A-LABEL: v_shuffle_v2p0_v3p0__5_5:484; GFX90A:       ; %bb.0:485; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)486; GFX90A-NEXT:    v_mov_b32_e32 v8, 0487; GFX90A-NEXT:    ;;#ASMSTART488; GFX90A-NEXT:    ; def v[0:5]489; GFX90A-NEXT:    ;;#ASMEND490; GFX90A-NEXT:    v_mov_b32_e32 v6, v4491; GFX90A-NEXT:    v_mov_b32_e32 v7, v5492; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]493; GFX90A-NEXT:    s_waitcnt vmcnt(0)494; GFX90A-NEXT:    s_setpc_b64 s[30:31]495;496; GFX942-LABEL: v_shuffle_v2p0_v3p0__5_5:497; GFX942:       ; %bb.0:498; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)499; GFX942-NEXT:    v_mov_b32_e32 v8, 0500; GFX942-NEXT:    ;;#ASMSTART501; GFX942-NEXT:    ; def v[0:5]502; GFX942-NEXT:    ;;#ASMEND503; GFX942-NEXT:    s_nop 0504; GFX942-NEXT:    v_mov_b32_e32 v6, v4505; GFX942-NEXT:    v_mov_b32_e32 v7, v5506; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]507; GFX942-NEXT:    s_waitcnt vmcnt(0)508; GFX942-NEXT:    s_setpc_b64 s[30:31]509  %vec0 = call <3 x ptr> asm "; def $0", "=v"()510  %vec1 = call <3 x ptr> asm "; def $0", "=v"()511  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 5>512  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16513  ret void514}515 516define void @v_shuffle_v2p0_v3p0__u_0(ptr addrspace(1) inreg %ptr) {517; GFX900-LABEL: v_shuffle_v2p0_v3p0__u_0:518; GFX900:       ; %bb.0:519; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)520; GFX900-NEXT:    v_mov_b32_e32 v0, 0521; GFX900-NEXT:    ;;#ASMSTART522; GFX900-NEXT:    ; def v[2:7]523; GFX900-NEXT:    ;;#ASMEND524; GFX900-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17]525; GFX900-NEXT:    s_waitcnt vmcnt(0)526; GFX900-NEXT:    s_setpc_b64 s[30:31]527;528; GFX90A-LABEL: v_shuffle_v2p0_v3p0__u_0:529; GFX90A:       ; %bb.0:530; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)531; GFX90A-NEXT:    v_mov_b32_e32 v0, 0532; GFX90A-NEXT:    ;;#ASMSTART533; GFX90A-NEXT:    ; def v[2:7]534; GFX90A-NEXT:    ;;#ASMEND535; GFX90A-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17]536; GFX90A-NEXT:    s_waitcnt vmcnt(0)537; GFX90A-NEXT:    s_setpc_b64 s[30:31]538;539; GFX942-LABEL: v_shuffle_v2p0_v3p0__u_0:540; GFX942:       ; %bb.0:541; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)542; GFX942-NEXT:    v_mov_b32_e32 v0, 0543; GFX942-NEXT:    ;;#ASMSTART544; GFX942-NEXT:    ; def v[2:7]545; GFX942-NEXT:    ;;#ASMEND546; GFX942-NEXT:    global_store_dwordx4 v0, v[0:3], s[0:1]547; GFX942-NEXT:    s_waitcnt vmcnt(0)548; GFX942-NEXT:    s_setpc_b64 s[30:31]549  %vec0 = call <3 x ptr> asm "; def $0", "=v"()550  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 0>551  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16552  ret void553}554 555define void @v_shuffle_v2p0_v3p0__0_0(ptr addrspace(1) inreg %ptr) {556; GFX900-LABEL: v_shuffle_v2p0_v3p0__0_0:557; GFX900:       ; %bb.0:558; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)559; GFX900-NEXT:    ;;#ASMSTART560; GFX900-NEXT:    ; def v[0:5]561; GFX900-NEXT:    ;;#ASMEND562; GFX900-NEXT:    v_mov_b32_e32 v6, 0563; GFX900-NEXT:    v_mov_b32_e32 v2, v0564; GFX900-NEXT:    v_mov_b32_e32 v3, v1565; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]566; GFX900-NEXT:    s_waitcnt vmcnt(0)567; GFX900-NEXT:    s_setpc_b64 s[30:31]568;569; GFX90A-LABEL: v_shuffle_v2p0_v3p0__0_0:570; GFX90A:       ; %bb.0:571; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)572; GFX90A-NEXT:    ;;#ASMSTART573; GFX90A-NEXT:    ; def v[0:5]574; GFX90A-NEXT:    ;;#ASMEND575; GFX90A-NEXT:    v_mov_b32_e32 v6, 0576; GFX90A-NEXT:    v_mov_b32_e32 v2, v0577; GFX90A-NEXT:    v_mov_b32_e32 v3, v1578; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]579; GFX90A-NEXT:    s_waitcnt vmcnt(0)580; GFX90A-NEXT:    s_setpc_b64 s[30:31]581;582; GFX942-LABEL: v_shuffle_v2p0_v3p0__0_0:583; GFX942:       ; %bb.0:584; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)585; GFX942-NEXT:    ;;#ASMSTART586; GFX942-NEXT:    ; def v[0:5]587; GFX942-NEXT:    ;;#ASMEND588; GFX942-NEXT:    v_mov_b32_e32 v6, 0589; GFX942-NEXT:    v_mov_b32_e32 v2, v0590; GFX942-NEXT:    v_mov_b32_e32 v3, v1591; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]592; GFX942-NEXT:    s_waitcnt vmcnt(0)593; GFX942-NEXT:    s_setpc_b64 s[30:31]594  %vec0 = call <3 x ptr> asm "; def $0", "=v"()595  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> zeroinitializer596  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16597  ret void598}599 600define void @v_shuffle_v2p0_v3p0__1_0(ptr addrspace(1) inreg %ptr) {601; GFX900-LABEL: v_shuffle_v2p0_v3p0__1_0:602; GFX900:       ; %bb.0:603; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)604; GFX900-NEXT:    ;;#ASMSTART605; GFX900-NEXT:    ; def v[0:5]606; GFX900-NEXT:    ;;#ASMEND607; GFX900-NEXT:    v_mov_b32_e32 v6, 0608; GFX900-NEXT:    v_mov_b32_e32 v4, v0609; GFX900-NEXT:    v_mov_b32_e32 v5, v1610; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]611; GFX900-NEXT:    s_waitcnt vmcnt(0)612; GFX900-NEXT:    s_setpc_b64 s[30:31]613;614; GFX90A-LABEL: v_shuffle_v2p0_v3p0__1_0:615; GFX90A:       ; %bb.0:616; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)617; GFX90A-NEXT:    ;;#ASMSTART618; GFX90A-NEXT:    ; def v[0:5]619; GFX90A-NEXT:    ;;#ASMEND620; GFX90A-NEXT:    v_mov_b32_e32 v6, 0621; GFX90A-NEXT:    v_mov_b32_e32 v4, v0622; GFX90A-NEXT:    v_mov_b32_e32 v5, v1623; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]624; GFX90A-NEXT:    s_waitcnt vmcnt(0)625; GFX90A-NEXT:    s_setpc_b64 s[30:31]626;627; GFX942-LABEL: v_shuffle_v2p0_v3p0__1_0:628; GFX942:       ; %bb.0:629; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)630; GFX942-NEXT:    ;;#ASMSTART631; GFX942-NEXT:    ; def v[0:5]632; GFX942-NEXT:    ;;#ASMEND633; GFX942-NEXT:    v_mov_b32_e32 v6, 0634; GFX942-NEXT:    v_mov_b32_e32 v4, v0635; GFX942-NEXT:    v_mov_b32_e32 v5, v1636; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]637; GFX942-NEXT:    s_waitcnt vmcnt(0)638; GFX942-NEXT:    s_setpc_b64 s[30:31]639  %vec0 = call <3 x ptr> asm "; def $0", "=v"()640  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 0>641  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16642  ret void643}644 645define void @v_shuffle_v2p0_v3p0__2_0(ptr addrspace(1) inreg %ptr) {646; GFX900-LABEL: v_shuffle_v2p0_v3p0__2_0:647; GFX900:       ; %bb.0:648; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)649; GFX900-NEXT:    v_mov_b32_e32 v8, 0650; GFX900-NEXT:    ;;#ASMSTART651; GFX900-NEXT:    ; def v[0:5]652; GFX900-NEXT:    ;;#ASMEND653; GFX900-NEXT:    v_mov_b32_e32 v6, v0654; GFX900-NEXT:    v_mov_b32_e32 v7, v1655; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]656; GFX900-NEXT:    s_waitcnt vmcnt(0)657; GFX900-NEXT:    s_setpc_b64 s[30:31]658;659; GFX90A-LABEL: v_shuffle_v2p0_v3p0__2_0:660; GFX90A:       ; %bb.0:661; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)662; GFX90A-NEXT:    v_mov_b32_e32 v8, 0663; GFX90A-NEXT:    ;;#ASMSTART664; GFX90A-NEXT:    ; def v[0:5]665; GFX90A-NEXT:    ;;#ASMEND666; GFX90A-NEXT:    v_mov_b32_e32 v6, v0667; GFX90A-NEXT:    v_mov_b32_e32 v7, v1668; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]669; GFX90A-NEXT:    s_waitcnt vmcnt(0)670; GFX90A-NEXT:    s_setpc_b64 s[30:31]671;672; GFX942-LABEL: v_shuffle_v2p0_v3p0__2_0:673; GFX942:       ; %bb.0:674; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)675; GFX942-NEXT:    v_mov_b32_e32 v8, 0676; GFX942-NEXT:    ;;#ASMSTART677; GFX942-NEXT:    ; def v[0:5]678; GFX942-NEXT:    ;;#ASMEND679; GFX942-NEXT:    s_nop 0680; GFX942-NEXT:    v_mov_b32_e32 v6, v0681; GFX942-NEXT:    v_mov_b32_e32 v7, v1682; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]683; GFX942-NEXT:    s_waitcnt vmcnt(0)684; GFX942-NEXT:    s_setpc_b64 s[30:31]685  %vec0 = call <3 x ptr> asm "; def $0", "=v"()686  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 0>687  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16688  ret void689}690 691define void @v_shuffle_v2p0_v3p0__3_0(ptr addrspace(1) inreg %ptr) {692; GFX900-LABEL: v_shuffle_v2p0_v3p0__3_0:693; GFX900:       ; %bb.0:694; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)695; GFX900-NEXT:    v_mov_b32_e32 v0, 0696; GFX900-NEXT:    ;;#ASMSTART697; GFX900-NEXT:    ; def v[2:7]698; GFX900-NEXT:    ;;#ASMEND699; GFX900-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17]700; GFX900-NEXT:    s_waitcnt vmcnt(0)701; GFX900-NEXT:    s_setpc_b64 s[30:31]702;703; GFX90A-LABEL: v_shuffle_v2p0_v3p0__3_0:704; GFX90A:       ; %bb.0:705; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)706; GFX90A-NEXT:    v_mov_b32_e32 v0, 0707; GFX90A-NEXT:    ;;#ASMSTART708; GFX90A-NEXT:    ; def v[2:7]709; GFX90A-NEXT:    ;;#ASMEND710; GFX90A-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17]711; GFX90A-NEXT:    s_waitcnt vmcnt(0)712; GFX90A-NEXT:    s_setpc_b64 s[30:31]713;714; GFX942-LABEL: v_shuffle_v2p0_v3p0__3_0:715; GFX942:       ; %bb.0:716; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)717; GFX942-NEXT:    v_mov_b32_e32 v0, 0718; GFX942-NEXT:    ;;#ASMSTART719; GFX942-NEXT:    ; def v[2:7]720; GFX942-NEXT:    ;;#ASMEND721; GFX942-NEXT:    global_store_dwordx4 v0, v[0:3], s[0:1]722; GFX942-NEXT:    s_waitcnt vmcnt(0)723; GFX942-NEXT:    s_setpc_b64 s[30:31]724  %vec0 = call <3 x ptr> asm "; def $0", "=v"()725  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 0>726  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16727  ret void728}729 730define void @v_shuffle_v2p0_v3p0__4_0(ptr addrspace(1) inreg %ptr) {731; GFX900-LABEL: v_shuffle_v2p0_v3p0__4_0:732; GFX900:       ; %bb.0:733; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)734; GFX900-NEXT:    ;;#ASMSTART735; GFX900-NEXT:    ; def v[0:5]736; GFX900-NEXT:    ;;#ASMEND737; GFX900-NEXT:    ;;#ASMSTART738; GFX900-NEXT:    ; def v[2:7]739; GFX900-NEXT:    ;;#ASMEND740; GFX900-NEXT:    v_mov_b32_e32 v8, 0741; GFX900-NEXT:    v_mov_b32_e32 v6, v0742; GFX900-NEXT:    v_mov_b32_e32 v7, v1743; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]744; GFX900-NEXT:    s_waitcnt vmcnt(0)745; GFX900-NEXT:    s_setpc_b64 s[30:31]746;747; GFX90A-LABEL: v_shuffle_v2p0_v3p0__4_0:748; GFX90A:       ; %bb.0:749; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)750; GFX90A-NEXT:    ;;#ASMSTART751; GFX90A-NEXT:    ; def v[0:5]752; GFX90A-NEXT:    ;;#ASMEND753; GFX90A-NEXT:    ;;#ASMSTART754; GFX90A-NEXT:    ; def v[2:7]755; GFX90A-NEXT:    ;;#ASMEND756; GFX90A-NEXT:    v_mov_b32_e32 v8, 0757; GFX90A-NEXT:    v_mov_b32_e32 v6, v0758; GFX90A-NEXT:    v_mov_b32_e32 v7, v1759; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]760; GFX90A-NEXT:    s_waitcnt vmcnt(0)761; GFX90A-NEXT:    s_setpc_b64 s[30:31]762;763; GFX942-LABEL: v_shuffle_v2p0_v3p0__4_0:764; GFX942:       ; %bb.0:765; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)766; GFX942-NEXT:    ;;#ASMSTART767; GFX942-NEXT:    ; def v[0:5]768; GFX942-NEXT:    ;;#ASMEND769; GFX942-NEXT:    v_mov_b32_e32 v8, 0770; GFX942-NEXT:    ;;#ASMSTART771; GFX942-NEXT:    ; def v[2:7]772; GFX942-NEXT:    ;;#ASMEND773; GFX942-NEXT:    s_nop 0774; GFX942-NEXT:    v_mov_b32_e32 v6, v0775; GFX942-NEXT:    v_mov_b32_e32 v7, v1776; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]777; GFX942-NEXT:    s_waitcnt vmcnt(0)778; GFX942-NEXT:    s_setpc_b64 s[30:31]779  %vec0 = call <3 x ptr> asm "; def $0", "=v"()780  %vec1 = call <3 x ptr> asm "; def $0", "=v"()781  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 0>782  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16783  ret void784}785 786define void @v_shuffle_v2p0_v3p0__u_1(ptr addrspace(1) inreg %ptr) {787; GFX900-LABEL: v_shuffle_v2p0_v3p0__u_1:788; GFX900:       ; %bb.0:789; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)790; GFX900-NEXT:    v_mov_b32_e32 v6, 0791; GFX900-NEXT:    ;;#ASMSTART792; GFX900-NEXT:    ; def v[0:5]793; GFX900-NEXT:    ;;#ASMEND794; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]795; GFX900-NEXT:    s_waitcnt vmcnt(0)796; GFX900-NEXT:    s_setpc_b64 s[30:31]797;798; GFX90A-LABEL: v_shuffle_v2p0_v3p0__u_1:799; GFX90A:       ; %bb.0:800; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)801; GFX90A-NEXT:    v_mov_b32_e32 v6, 0802; GFX90A-NEXT:    ;;#ASMSTART803; GFX90A-NEXT:    ; def v[0:5]804; GFX90A-NEXT:    ;;#ASMEND805; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]806; GFX90A-NEXT:    s_waitcnt vmcnt(0)807; GFX90A-NEXT:    s_setpc_b64 s[30:31]808;809; GFX942-LABEL: v_shuffle_v2p0_v3p0__u_1:810; GFX942:       ; %bb.0:811; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)812; GFX942-NEXT:    v_mov_b32_e32 v6, 0813; GFX942-NEXT:    ;;#ASMSTART814; GFX942-NEXT:    ; def v[0:5]815; GFX942-NEXT:    ;;#ASMEND816; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]817; GFX942-NEXT:    s_waitcnt vmcnt(0)818; GFX942-NEXT:    s_setpc_b64 s[30:31]819  %vec0 = call <3 x ptr> asm "; def $0", "=v"()820  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 1>821  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16822  ret void823}824 825define void @v_shuffle_v2p0_v3p0__0_1(ptr addrspace(1) inreg %ptr) {826; GFX900-LABEL: v_shuffle_v2p0_v3p0__0_1:827; GFX900:       ; %bb.0:828; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)829; GFX900-NEXT:    v_mov_b32_e32 v6, 0830; GFX900-NEXT:    ;;#ASMSTART831; GFX900-NEXT:    ; def v[0:5]832; GFX900-NEXT:    ;;#ASMEND833; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]834; GFX900-NEXT:    s_waitcnt vmcnt(0)835; GFX900-NEXT:    s_setpc_b64 s[30:31]836;837; GFX90A-LABEL: v_shuffle_v2p0_v3p0__0_1:838; GFX90A:       ; %bb.0:839; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)840; GFX90A-NEXT:    v_mov_b32_e32 v6, 0841; GFX90A-NEXT:    ;;#ASMSTART842; GFX90A-NEXT:    ; def v[0:5]843; GFX90A-NEXT:    ;;#ASMEND844; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]845; GFX90A-NEXT:    s_waitcnt vmcnt(0)846; GFX90A-NEXT:    s_setpc_b64 s[30:31]847;848; GFX942-LABEL: v_shuffle_v2p0_v3p0__0_1:849; GFX942:       ; %bb.0:850; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)851; GFX942-NEXT:    v_mov_b32_e32 v6, 0852; GFX942-NEXT:    ;;#ASMSTART853; GFX942-NEXT:    ; def v[0:5]854; GFX942-NEXT:    ;;#ASMEND855; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]856; GFX942-NEXT:    s_waitcnt vmcnt(0)857; GFX942-NEXT:    s_setpc_b64 s[30:31]858  %vec0 = call <3 x ptr> asm "; def $0", "=v"()859  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 1>860  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16861  ret void862}863 864define void @v_shuffle_v2p0_v3p0__1_1(ptr addrspace(1) inreg %ptr) {865; GFX900-LABEL: v_shuffle_v2p0_v3p0__1_1:866; GFX900:       ; %bb.0:867; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)868; GFX900-NEXT:    ;;#ASMSTART869; GFX900-NEXT:    ; def v[0:5]870; GFX900-NEXT:    ;;#ASMEND871; GFX900-NEXT:    v_mov_b32_e32 v6, 0872; GFX900-NEXT:    v_mov_b32_e32 v4, v2873; GFX900-NEXT:    v_mov_b32_e32 v5, v3874; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]875; GFX900-NEXT:    s_waitcnt vmcnt(0)876; GFX900-NEXT:    s_setpc_b64 s[30:31]877;878; GFX90A-LABEL: v_shuffle_v2p0_v3p0__1_1:879; GFX90A:       ; %bb.0:880; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)881; GFX90A-NEXT:    ;;#ASMSTART882; GFX90A-NEXT:    ; def v[0:5]883; GFX90A-NEXT:    ;;#ASMEND884; GFX90A-NEXT:    v_mov_b32_e32 v6, 0885; GFX90A-NEXT:    v_mov_b32_e32 v4, v2886; GFX90A-NEXT:    v_mov_b32_e32 v5, v3887; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]888; GFX90A-NEXT:    s_waitcnt vmcnt(0)889; GFX90A-NEXT:    s_setpc_b64 s[30:31]890;891; GFX942-LABEL: v_shuffle_v2p0_v3p0__1_1:892; GFX942:       ; %bb.0:893; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)894; GFX942-NEXT:    ;;#ASMSTART895; GFX942-NEXT:    ; def v[0:5]896; GFX942-NEXT:    ;;#ASMEND897; GFX942-NEXT:    v_mov_b32_e32 v6, 0898; GFX942-NEXT:    v_mov_b32_e32 v4, v2899; GFX942-NEXT:    v_mov_b32_e32 v5, v3900; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]901; GFX942-NEXT:    s_waitcnt vmcnt(0)902; GFX942-NEXT:    s_setpc_b64 s[30:31]903  %vec0 = call <3 x ptr> asm "; def $0", "=v"()904  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 1>905  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16906  ret void907}908 909define void @v_shuffle_v2p0_v3p0__2_1(ptr addrspace(1) inreg %ptr) {910; GFX900-LABEL: v_shuffle_v2p0_v3p0__2_1:911; GFX900:       ; %bb.0:912; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)913; GFX900-NEXT:    v_mov_b32_e32 v8, 0914; GFX900-NEXT:    ;;#ASMSTART915; GFX900-NEXT:    ; def v[0:5]916; GFX900-NEXT:    ;;#ASMEND917; GFX900-NEXT:    v_mov_b32_e32 v6, v2918; GFX900-NEXT:    v_mov_b32_e32 v7, v3919; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]920; GFX900-NEXT:    s_waitcnt vmcnt(0)921; GFX900-NEXT:    s_setpc_b64 s[30:31]922;923; GFX90A-LABEL: v_shuffle_v2p0_v3p0__2_1:924; GFX90A:       ; %bb.0:925; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)926; GFX90A-NEXT:    v_mov_b32_e32 v8, 0927; GFX90A-NEXT:    ;;#ASMSTART928; GFX90A-NEXT:    ; def v[0:5]929; GFX90A-NEXT:    ;;#ASMEND930; GFX90A-NEXT:    v_mov_b32_e32 v6, v2931; GFX90A-NEXT:    v_mov_b32_e32 v7, v3932; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]933; GFX90A-NEXT:    s_waitcnt vmcnt(0)934; GFX90A-NEXT:    s_setpc_b64 s[30:31]935;936; GFX942-LABEL: v_shuffle_v2p0_v3p0__2_1:937; GFX942:       ; %bb.0:938; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)939; GFX942-NEXT:    v_mov_b32_e32 v8, 0940; GFX942-NEXT:    ;;#ASMSTART941; GFX942-NEXT:    ; def v[0:5]942; GFX942-NEXT:    ;;#ASMEND943; GFX942-NEXT:    s_nop 0944; GFX942-NEXT:    v_mov_b32_e32 v6, v2945; GFX942-NEXT:    v_mov_b32_e32 v7, v3946; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]947; GFX942-NEXT:    s_waitcnt vmcnt(0)948; GFX942-NEXT:    s_setpc_b64 s[30:31]949  %vec0 = call <3 x ptr> asm "; def $0", "=v"()950  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 1>951  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16952  ret void953}954 955define void @v_shuffle_v2p0_v3p0__3_1(ptr addrspace(1) inreg %ptr) {956; GFX900-LABEL: v_shuffle_v2p0_v3p0__3_1:957; GFX900:       ; %bb.0:958; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)959; GFX900-NEXT:    v_mov_b32_e32 v6, 0960; GFX900-NEXT:    ;;#ASMSTART961; GFX900-NEXT:    ; def v[0:5]962; GFX900-NEXT:    ;;#ASMEND963; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]964; GFX900-NEXT:    s_waitcnt vmcnt(0)965; GFX900-NEXT:    s_setpc_b64 s[30:31]966;967; GFX90A-LABEL: v_shuffle_v2p0_v3p0__3_1:968; GFX90A:       ; %bb.0:969; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)970; GFX90A-NEXT:    v_mov_b32_e32 v6, 0971; GFX90A-NEXT:    ;;#ASMSTART972; GFX90A-NEXT:    ; def v[0:5]973; GFX90A-NEXT:    ;;#ASMEND974; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]975; GFX90A-NEXT:    s_waitcnt vmcnt(0)976; GFX90A-NEXT:    s_setpc_b64 s[30:31]977;978; GFX942-LABEL: v_shuffle_v2p0_v3p0__3_1:979; GFX942:       ; %bb.0:980; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)981; GFX942-NEXT:    v_mov_b32_e32 v6, 0982; GFX942-NEXT:    ;;#ASMSTART983; GFX942-NEXT:    ; def v[0:5]984; GFX942-NEXT:    ;;#ASMEND985; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]986; GFX942-NEXT:    s_waitcnt vmcnt(0)987; GFX942-NEXT:    s_setpc_b64 s[30:31]988  %vec0 = call <3 x ptr> asm "; def $0", "=v"()989  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 1>990  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16991  ret void992}993 994define void @v_shuffle_v2p0_v3p0__4_1(ptr addrspace(1) inreg %ptr) {995; GFX900-LABEL: v_shuffle_v2p0_v3p0__4_1:996; GFX900:       ; %bb.0:997; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)998; GFX900-NEXT:    ;;#ASMSTART999; GFX900-NEXT:    ; def v[0:5]1000; GFX900-NEXT:    ;;#ASMEND1001; GFX900-NEXT:    ;;#ASMSTART1002; GFX900-NEXT:    ; def v[4:9]1003; GFX900-NEXT:    ;;#ASMEND1004; GFX900-NEXT:    v_mov_b32_e32 v10, 01005; GFX900-NEXT:    v_mov_b32_e32 v8, v21006; GFX900-NEXT:    v_mov_b32_e32 v9, v31007; GFX900-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17]1008; GFX900-NEXT:    s_waitcnt vmcnt(0)1009; GFX900-NEXT:    s_setpc_b64 s[30:31]1010;1011; GFX90A-LABEL: v_shuffle_v2p0_v3p0__4_1:1012; GFX90A:       ; %bb.0:1013; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1014; GFX90A-NEXT:    ;;#ASMSTART1015; GFX90A-NEXT:    ; def v[0:5]1016; GFX90A-NEXT:    ;;#ASMEND1017; GFX90A-NEXT:    ;;#ASMSTART1018; GFX90A-NEXT:    ; def v[4:9]1019; GFX90A-NEXT:    ;;#ASMEND1020; GFX90A-NEXT:    v_mov_b32_e32 v10, 01021; GFX90A-NEXT:    v_mov_b32_e32 v8, v21022; GFX90A-NEXT:    v_mov_b32_e32 v9, v31023; GFX90A-NEXT:    global_store_dwordx4 v10, v[6:9], s[16:17]1024; GFX90A-NEXT:    s_waitcnt vmcnt(0)1025; GFX90A-NEXT:    s_setpc_b64 s[30:31]1026;1027; GFX942-LABEL: v_shuffle_v2p0_v3p0__4_1:1028; GFX942:       ; %bb.0:1029; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1030; GFX942-NEXT:    ;;#ASMSTART1031; GFX942-NEXT:    ; def v[0:5]1032; GFX942-NEXT:    ;;#ASMEND1033; GFX942-NEXT:    v_mov_b32_e32 v10, 01034; GFX942-NEXT:    ;;#ASMSTART1035; GFX942-NEXT:    ; def v[4:9]1036; GFX942-NEXT:    ;;#ASMEND1037; GFX942-NEXT:    s_nop 01038; GFX942-NEXT:    v_mov_b32_e32 v8, v21039; GFX942-NEXT:    v_mov_b32_e32 v9, v31040; GFX942-NEXT:    global_store_dwordx4 v10, v[6:9], s[0:1]1041; GFX942-NEXT:    s_waitcnt vmcnt(0)1042; GFX942-NEXT:    s_setpc_b64 s[30:31]1043  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1044  %vec1 = call <3 x ptr> asm "; def $0", "=v"()1045  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 1>1046  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161047  ret void1048}1049 1050define void @v_shuffle_v2p0_v3p0__u_2(ptr addrspace(1) inreg %ptr) {1051; GFX900-LABEL: v_shuffle_v2p0_v3p0__u_2:1052; GFX900:       ; %bb.0:1053; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1054; GFX900-NEXT:    v_mov_b32_e32 v6, 01055; GFX900-NEXT:    ;;#ASMSTART1056; GFX900-NEXT:    ; def v[0:5]1057; GFX900-NEXT:    ;;#ASMEND1058; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]1059; GFX900-NEXT:    s_waitcnt vmcnt(0)1060; GFX900-NEXT:    s_setpc_b64 s[30:31]1061;1062; GFX90A-LABEL: v_shuffle_v2p0_v3p0__u_2:1063; GFX90A:       ; %bb.0:1064; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1065; GFX90A-NEXT:    v_mov_b32_e32 v6, 01066; GFX90A-NEXT:    ;;#ASMSTART1067; GFX90A-NEXT:    ; def v[0:5]1068; GFX90A-NEXT:    ;;#ASMEND1069; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]1070; GFX90A-NEXT:    s_waitcnt vmcnt(0)1071; GFX90A-NEXT:    s_setpc_b64 s[30:31]1072;1073; GFX942-LABEL: v_shuffle_v2p0_v3p0__u_2:1074; GFX942:       ; %bb.0:1075; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1076; GFX942-NEXT:    v_mov_b32_e32 v6, 01077; GFX942-NEXT:    ;;#ASMSTART1078; GFX942-NEXT:    ; def v[0:5]1079; GFX942-NEXT:    ;;#ASMEND1080; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]1081; GFX942-NEXT:    s_waitcnt vmcnt(0)1082; GFX942-NEXT:    s_setpc_b64 s[30:31]1083  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1084  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 2>1085  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161086  ret void1087}1088 1089define void @v_shuffle_v2p0_v3p0__0_2(ptr addrspace(1) inreg %ptr) {1090; GFX900-LABEL: v_shuffle_v2p0_v3p0__0_2:1091; GFX900:       ; %bb.0:1092; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1093; GFX900-NEXT:    ;;#ASMSTART1094; GFX900-NEXT:    ; def v[0:5]1095; GFX900-NEXT:    ;;#ASMEND1096; GFX900-NEXT:    v_mov_b32_e32 v6, 01097; GFX900-NEXT:    v_mov_b32_e32 v2, v41098; GFX900-NEXT:    v_mov_b32_e32 v3, v51099; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]1100; GFX900-NEXT:    s_waitcnt vmcnt(0)1101; GFX900-NEXT:    s_setpc_b64 s[30:31]1102;1103; GFX90A-LABEL: v_shuffle_v2p0_v3p0__0_2:1104; GFX90A:       ; %bb.0:1105; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1106; GFX90A-NEXT:    ;;#ASMSTART1107; GFX90A-NEXT:    ; def v[0:5]1108; GFX90A-NEXT:    ;;#ASMEND1109; GFX90A-NEXT:    v_mov_b32_e32 v6, 01110; GFX90A-NEXT:    v_mov_b32_e32 v2, v41111; GFX90A-NEXT:    v_mov_b32_e32 v3, v51112; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]1113; GFX90A-NEXT:    s_waitcnt vmcnt(0)1114; GFX90A-NEXT:    s_setpc_b64 s[30:31]1115;1116; GFX942-LABEL: v_shuffle_v2p0_v3p0__0_2:1117; GFX942:       ; %bb.0:1118; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1119; GFX942-NEXT:    ;;#ASMSTART1120; GFX942-NEXT:    ; def v[0:5]1121; GFX942-NEXT:    ;;#ASMEND1122; GFX942-NEXT:    v_mov_b32_e32 v6, 01123; GFX942-NEXT:    v_mov_b32_e32 v2, v41124; GFX942-NEXT:    v_mov_b32_e32 v3, v51125; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]1126; GFX942-NEXT:    s_waitcnt vmcnt(0)1127; GFX942-NEXT:    s_setpc_b64 s[30:31]1128  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1129  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 2>1130  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161131  ret void1132}1133 1134define void @v_shuffle_v2p0_v3p0__1_2(ptr addrspace(1) inreg %ptr) {1135; GFX900-LABEL: v_shuffle_v2p0_v3p0__1_2:1136; GFX900:       ; %bb.0:1137; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1138; GFX900-NEXT:    v_mov_b32_e32 v6, 01139; GFX900-NEXT:    ;;#ASMSTART1140; GFX900-NEXT:    ; def v[0:5]1141; GFX900-NEXT:    ;;#ASMEND1142; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]1143; GFX900-NEXT:    s_waitcnt vmcnt(0)1144; GFX900-NEXT:    s_setpc_b64 s[30:31]1145;1146; GFX90A-LABEL: v_shuffle_v2p0_v3p0__1_2:1147; GFX90A:       ; %bb.0:1148; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1149; GFX90A-NEXT:    v_mov_b32_e32 v6, 01150; GFX90A-NEXT:    ;;#ASMSTART1151; GFX90A-NEXT:    ; def v[0:5]1152; GFX90A-NEXT:    ;;#ASMEND1153; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]1154; GFX90A-NEXT:    s_waitcnt vmcnt(0)1155; GFX90A-NEXT:    s_setpc_b64 s[30:31]1156;1157; GFX942-LABEL: v_shuffle_v2p0_v3p0__1_2:1158; GFX942:       ; %bb.0:1159; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1160; GFX942-NEXT:    v_mov_b32_e32 v6, 01161; GFX942-NEXT:    ;;#ASMSTART1162; GFX942-NEXT:    ; def v[0:5]1163; GFX942-NEXT:    ;;#ASMEND1164; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]1165; GFX942-NEXT:    s_waitcnt vmcnt(0)1166; GFX942-NEXT:    s_setpc_b64 s[30:31]1167  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1168  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 2>1169  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161170  ret void1171}1172 1173define void @v_shuffle_v2p0_v3p0__2_2(ptr addrspace(1) inreg %ptr) {1174; GFX900-LABEL: v_shuffle_v2p0_v3p0__2_2:1175; GFX900:       ; %bb.0:1176; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1177; GFX900-NEXT:    v_mov_b32_e32 v8, 01178; GFX900-NEXT:    ;;#ASMSTART1179; GFX900-NEXT:    ; def v[0:5]1180; GFX900-NEXT:    ;;#ASMEND1181; GFX900-NEXT:    v_mov_b32_e32 v6, v41182; GFX900-NEXT:    v_mov_b32_e32 v7, v51183; GFX900-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]1184; GFX900-NEXT:    s_waitcnt vmcnt(0)1185; GFX900-NEXT:    s_setpc_b64 s[30:31]1186;1187; GFX90A-LABEL: v_shuffle_v2p0_v3p0__2_2:1188; GFX90A:       ; %bb.0:1189; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1190; GFX90A-NEXT:    v_mov_b32_e32 v8, 01191; GFX90A-NEXT:    ;;#ASMSTART1192; GFX90A-NEXT:    ; def v[0:5]1193; GFX90A-NEXT:    ;;#ASMEND1194; GFX90A-NEXT:    v_mov_b32_e32 v6, v41195; GFX90A-NEXT:    v_mov_b32_e32 v7, v51196; GFX90A-NEXT:    global_store_dwordx4 v8, v[4:7], s[16:17]1197; GFX90A-NEXT:    s_waitcnt vmcnt(0)1198; GFX90A-NEXT:    s_setpc_b64 s[30:31]1199;1200; GFX942-LABEL: v_shuffle_v2p0_v3p0__2_2:1201; GFX942:       ; %bb.0:1202; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1203; GFX942-NEXT:    v_mov_b32_e32 v8, 01204; GFX942-NEXT:    ;;#ASMSTART1205; GFX942-NEXT:    ; def v[0:5]1206; GFX942-NEXT:    ;;#ASMEND1207; GFX942-NEXT:    s_nop 01208; GFX942-NEXT:    v_mov_b32_e32 v6, v41209; GFX942-NEXT:    v_mov_b32_e32 v7, v51210; GFX942-NEXT:    global_store_dwordx4 v8, v[4:7], s[0:1]1211; GFX942-NEXT:    s_waitcnt vmcnt(0)1212; GFX942-NEXT:    s_setpc_b64 s[30:31]1213  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1214  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 2>1215  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161216  ret void1217}1218 1219define void @v_shuffle_v2p0_v3p0__3_2(ptr addrspace(1) inreg %ptr) {1220; GFX900-LABEL: v_shuffle_v2p0_v3p0__3_2:1221; GFX900:       ; %bb.0:1222; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1223; GFX900-NEXT:    v_mov_b32_e32 v6, 01224; GFX900-NEXT:    ;;#ASMSTART1225; GFX900-NEXT:    ; def v[0:5]1226; GFX900-NEXT:    ;;#ASMEND1227; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]1228; GFX900-NEXT:    s_waitcnt vmcnt(0)1229; GFX900-NEXT:    s_setpc_b64 s[30:31]1230;1231; GFX90A-LABEL: v_shuffle_v2p0_v3p0__3_2:1232; GFX90A:       ; %bb.0:1233; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1234; GFX90A-NEXT:    v_mov_b32_e32 v6, 01235; GFX90A-NEXT:    ;;#ASMSTART1236; GFX90A-NEXT:    ; def v[0:5]1237; GFX90A-NEXT:    ;;#ASMEND1238; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]1239; GFX90A-NEXT:    s_waitcnt vmcnt(0)1240; GFX90A-NEXT:    s_setpc_b64 s[30:31]1241;1242; GFX942-LABEL: v_shuffle_v2p0_v3p0__3_2:1243; GFX942:       ; %bb.0:1244; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1245; GFX942-NEXT:    v_mov_b32_e32 v6, 01246; GFX942-NEXT:    ;;#ASMSTART1247; GFX942-NEXT:    ; def v[0:5]1248; GFX942-NEXT:    ;;#ASMEND1249; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]1250; GFX942-NEXT:    s_waitcnt vmcnt(0)1251; GFX942-NEXT:    s_setpc_b64 s[30:31]1252  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1253  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 2>1254  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161255  ret void1256}1257 1258define void @v_shuffle_v2p0_v3p0__4_2(ptr addrspace(1) inreg %ptr) {1259; GFX900-LABEL: v_shuffle_v2p0_v3p0__4_2:1260; GFX900:       ; %bb.0:1261; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1262; GFX900-NEXT:    ;;#ASMSTART1263; GFX900-NEXT:    ; def v[6:11]1264; GFX900-NEXT:    ;;#ASMEND1265; GFX900-NEXT:    v_mov_b32_e32 v12, 01266; GFX900-NEXT:    ;;#ASMSTART1267; GFX900-NEXT:    ; def v[0:5]1268; GFX900-NEXT:    ;;#ASMEND1269; GFX900-NEXT:    v_mov_b32_e32 v10, v41270; GFX900-NEXT:    v_mov_b32_e32 v11, v51271; GFX900-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17]1272; GFX900-NEXT:    s_waitcnt vmcnt(0)1273; GFX900-NEXT:    s_setpc_b64 s[30:31]1274;1275; GFX90A-LABEL: v_shuffle_v2p0_v3p0__4_2:1276; GFX90A:       ; %bb.0:1277; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1278; GFX90A-NEXT:    ;;#ASMSTART1279; GFX90A-NEXT:    ; def v[6:11]1280; GFX90A-NEXT:    ;;#ASMEND1281; GFX90A-NEXT:    v_mov_b32_e32 v12, 01282; GFX90A-NEXT:    ;;#ASMSTART1283; GFX90A-NEXT:    ; def v[0:5]1284; GFX90A-NEXT:    ;;#ASMEND1285; GFX90A-NEXT:    v_mov_b32_e32 v10, v41286; GFX90A-NEXT:    v_mov_b32_e32 v11, v51287; GFX90A-NEXT:    global_store_dwordx4 v12, v[8:11], s[16:17]1288; GFX90A-NEXT:    s_waitcnt vmcnt(0)1289; GFX90A-NEXT:    s_setpc_b64 s[30:31]1290;1291; GFX942-LABEL: v_shuffle_v2p0_v3p0__4_2:1292; GFX942:       ; %bb.0:1293; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1294; GFX942-NEXT:    ;;#ASMSTART1295; GFX942-NEXT:    ; def v[6:11]1296; GFX942-NEXT:    ;;#ASMEND1297; GFX942-NEXT:    v_mov_b32_e32 v12, 01298; GFX942-NEXT:    ;;#ASMSTART1299; GFX942-NEXT:    ; def v[0:5]1300; GFX942-NEXT:    ;;#ASMEND1301; GFX942-NEXT:    s_nop 01302; GFX942-NEXT:    v_mov_b32_e32 v10, v41303; GFX942-NEXT:    v_mov_b32_e32 v11, v51304; GFX942-NEXT:    global_store_dwordx4 v12, v[8:11], s[0:1]1305; GFX942-NEXT:    s_waitcnt vmcnt(0)1306; GFX942-NEXT:    s_setpc_b64 s[30:31]1307  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1308  %vec1 = call <3 x ptr> asm "; def $0", "=v"()1309  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 2>1310  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161311  ret void1312}1313 1314define void @v_shuffle_v2p0_v3p0__u_3(ptr addrspace(1) inreg %ptr) {1315; GFX9-LABEL: v_shuffle_v2p0_v3p0__u_3:1316; GFX9:       ; %bb.0:1317; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1318; GFX9-NEXT:    s_setpc_b64 s[30:31]1319  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1320  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 3>1321  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161322  ret void1323}1324 1325define void @v_shuffle_v2p0_v3p0__0_3(ptr addrspace(1) inreg %ptr) {1326; GFX900-LABEL: v_shuffle_v2p0_v3p0__0_3:1327; GFX900:       ; %bb.0:1328; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1329; GFX900-NEXT:    v_mov_b32_e32 v6, 01330; GFX900-NEXT:    ;;#ASMSTART1331; GFX900-NEXT:    ; def v[0:5]1332; GFX900-NEXT:    ;;#ASMEND1333; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]1334; GFX900-NEXT:    s_waitcnt vmcnt(0)1335; GFX900-NEXT:    s_setpc_b64 s[30:31]1336;1337; GFX90A-LABEL: v_shuffle_v2p0_v3p0__0_3:1338; GFX90A:       ; %bb.0:1339; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1340; GFX90A-NEXT:    v_mov_b32_e32 v6, 01341; GFX90A-NEXT:    ;;#ASMSTART1342; GFX90A-NEXT:    ; def v[0:5]1343; GFX90A-NEXT:    ;;#ASMEND1344; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]1345; GFX90A-NEXT:    s_waitcnt vmcnt(0)1346; GFX90A-NEXT:    s_setpc_b64 s[30:31]1347;1348; GFX942-LABEL: v_shuffle_v2p0_v3p0__0_3:1349; GFX942:       ; %bb.0:1350; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1351; GFX942-NEXT:    v_mov_b32_e32 v6, 01352; GFX942-NEXT:    ;;#ASMSTART1353; GFX942-NEXT:    ; def v[0:5]1354; GFX942-NEXT:    ;;#ASMEND1355; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]1356; GFX942-NEXT:    s_waitcnt vmcnt(0)1357; GFX942-NEXT:    s_setpc_b64 s[30:31]1358  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1359  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 3>1360  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161361  ret void1362}1363 1364define void @v_shuffle_v2p0_v3p0__1_3(ptr addrspace(1) inreg %ptr) {1365; GFX900-LABEL: v_shuffle_v2p0_v3p0__1_3:1366; GFX900:       ; %bb.0:1367; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1368; GFX900-NEXT:    v_mov_b32_e32 v6, 01369; GFX900-NEXT:    ;;#ASMSTART1370; GFX900-NEXT:    ; def v[0:5]1371; GFX900-NEXT:    ;;#ASMEND1372; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]1373; GFX900-NEXT:    s_waitcnt vmcnt(0)1374; GFX900-NEXT:    s_setpc_b64 s[30:31]1375;1376; GFX90A-LABEL: v_shuffle_v2p0_v3p0__1_3:1377; GFX90A:       ; %bb.0:1378; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1379; GFX90A-NEXT:    v_mov_b32_e32 v6, 01380; GFX90A-NEXT:    ;;#ASMSTART1381; GFX90A-NEXT:    ; def v[0:5]1382; GFX90A-NEXT:    ;;#ASMEND1383; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]1384; GFX90A-NEXT:    s_waitcnt vmcnt(0)1385; GFX90A-NEXT:    s_setpc_b64 s[30:31]1386;1387; GFX942-LABEL: v_shuffle_v2p0_v3p0__1_3:1388; GFX942:       ; %bb.0:1389; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1390; GFX942-NEXT:    v_mov_b32_e32 v6, 01391; GFX942-NEXT:    ;;#ASMSTART1392; GFX942-NEXT:    ; def v[0:5]1393; GFX942-NEXT:    ;;#ASMEND1394; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]1395; GFX942-NEXT:    s_waitcnt vmcnt(0)1396; GFX942-NEXT:    s_setpc_b64 s[30:31]1397  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1398  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 3>1399  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161400  ret void1401}1402 1403define void @v_shuffle_v2p0_v3p0__2_3(ptr addrspace(1) inreg %ptr) {1404; GFX900-LABEL: v_shuffle_v2p0_v3p0__2_3:1405; GFX900:       ; %bb.0:1406; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1407; GFX900-NEXT:    v_mov_b32_e32 v6, 01408; GFX900-NEXT:    ;;#ASMSTART1409; GFX900-NEXT:    ; def v[0:5]1410; GFX900-NEXT:    ;;#ASMEND1411; GFX900-NEXT:    global_store_dwordx4 v6, v[4:7], s[16:17]1412; GFX900-NEXT:    s_waitcnt vmcnt(0)1413; GFX900-NEXT:    s_setpc_b64 s[30:31]1414;1415; GFX90A-LABEL: v_shuffle_v2p0_v3p0__2_3:1416; GFX90A:       ; %bb.0:1417; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1418; GFX90A-NEXT:    v_mov_b32_e32 v6, 01419; GFX90A-NEXT:    ;;#ASMSTART1420; GFX90A-NEXT:    ; def v[0:5]1421; GFX90A-NEXT:    ;;#ASMEND1422; GFX90A-NEXT:    global_store_dwordx4 v6, v[4:7], s[16:17]1423; GFX90A-NEXT:    s_waitcnt vmcnt(0)1424; GFX90A-NEXT:    s_setpc_b64 s[30:31]1425;1426; GFX942-LABEL: v_shuffle_v2p0_v3p0__2_3:1427; GFX942:       ; %bb.0:1428; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1429; GFX942-NEXT:    v_mov_b32_e32 v6, 01430; GFX942-NEXT:    ;;#ASMSTART1431; GFX942-NEXT:    ; def v[0:5]1432; GFX942-NEXT:    ;;#ASMEND1433; GFX942-NEXT:    global_store_dwordx4 v6, v[4:7], s[0:1]1434; GFX942-NEXT:    s_waitcnt vmcnt(0)1435; GFX942-NEXT:    s_setpc_b64 s[30:31]1436  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1437  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 3>1438  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161439  ret void1440}1441 1442define void @v_shuffle_v2p0_v3p0__3_3(ptr addrspace(1) inreg %ptr) {1443; GFX9-LABEL: v_shuffle_v2p0_v3p0__3_3:1444; GFX9:       ; %bb.0:1445; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1446; GFX9-NEXT:    s_setpc_b64 s[30:31]1447  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1448  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 3>1449  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161450  ret void1451}1452 1453define void @v_shuffle_v2p0_v3p0__4_3(ptr addrspace(1) inreg %ptr) {1454; GFX900-LABEL: v_shuffle_v2p0_v3p0__4_3:1455; GFX900:       ; %bb.0:1456; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1457; GFX900-NEXT:    ;;#ASMSTART1458; GFX900-NEXT:    ; def v[0:5]1459; GFX900-NEXT:    ;;#ASMEND1460; GFX900-NEXT:    v_mov_b32_e32 v6, 01461; GFX900-NEXT:    v_mov_b32_e32 v4, v01462; GFX900-NEXT:    v_mov_b32_e32 v5, v11463; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]1464; GFX900-NEXT:    s_waitcnt vmcnt(0)1465; GFX900-NEXT:    s_setpc_b64 s[30:31]1466;1467; GFX90A-LABEL: v_shuffle_v2p0_v3p0__4_3:1468; GFX90A:       ; %bb.0:1469; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1470; GFX90A-NEXT:    ;;#ASMSTART1471; GFX90A-NEXT:    ; def v[0:5]1472; GFX90A-NEXT:    ;;#ASMEND1473; GFX90A-NEXT:    v_mov_b32_e32 v6, 01474; GFX90A-NEXT:    v_mov_b32_e32 v4, v01475; GFX90A-NEXT:    v_mov_b32_e32 v5, v11476; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]1477; GFX90A-NEXT:    s_waitcnt vmcnt(0)1478; GFX90A-NEXT:    s_setpc_b64 s[30:31]1479;1480; GFX942-LABEL: v_shuffle_v2p0_v3p0__4_3:1481; GFX942:       ; %bb.0:1482; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1483; GFX942-NEXT:    ;;#ASMSTART1484; GFX942-NEXT:    ; def v[0:5]1485; GFX942-NEXT:    ;;#ASMEND1486; GFX942-NEXT:    v_mov_b32_e32 v6, 01487; GFX942-NEXT:    v_mov_b32_e32 v4, v01488; GFX942-NEXT:    v_mov_b32_e32 v5, v11489; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]1490; GFX942-NEXT:    s_waitcnt vmcnt(0)1491; GFX942-NEXT:    s_setpc_b64 s[30:31]1492  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1493  %vec1 = call <3 x ptr> asm "; def $0", "=v"()1494  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 3>1495  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161496  ret void1497}1498 1499define void @v_shuffle_v2p0_v3p0__u_4(ptr addrspace(1) inreg %ptr) {1500; GFX900-LABEL: v_shuffle_v2p0_v3p0__u_4:1501; GFX900:       ; %bb.0:1502; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1503; GFX900-NEXT:    v_mov_b32_e32 v6, 01504; GFX900-NEXT:    ;;#ASMSTART1505; GFX900-NEXT:    ; def v[0:5]1506; GFX900-NEXT:    ;;#ASMEND1507; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]1508; GFX900-NEXT:    s_waitcnt vmcnt(0)1509; GFX900-NEXT:    s_setpc_b64 s[30:31]1510;1511; GFX90A-LABEL: v_shuffle_v2p0_v3p0__u_4:1512; GFX90A:       ; %bb.0:1513; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1514; GFX90A-NEXT:    v_mov_b32_e32 v6, 01515; GFX90A-NEXT:    ;;#ASMSTART1516; GFX90A-NEXT:    ; def v[0:5]1517; GFX90A-NEXT:    ;;#ASMEND1518; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]1519; GFX90A-NEXT:    s_waitcnt vmcnt(0)1520; GFX90A-NEXT:    s_setpc_b64 s[30:31]1521;1522; GFX942-LABEL: v_shuffle_v2p0_v3p0__u_4:1523; GFX942:       ; %bb.0:1524; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1525; GFX942-NEXT:    v_mov_b32_e32 v6, 01526; GFX942-NEXT:    ;;#ASMSTART1527; GFX942-NEXT:    ; def v[0:5]1528; GFX942-NEXT:    ;;#ASMEND1529; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]1530; GFX942-NEXT:    s_waitcnt vmcnt(0)1531; GFX942-NEXT:    s_setpc_b64 s[30:31]1532  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1533  %vec1 = call <3 x ptr> asm "; def $0", "=v"()1534  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 poison, i32 4>1535  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161536  ret void1537}1538 1539define void @v_shuffle_v2p0_v3p0__0_4(ptr addrspace(1) inreg %ptr) {1540; GFX900-LABEL: v_shuffle_v2p0_v3p0__0_4:1541; GFX900:       ; %bb.0:1542; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1543; GFX900-NEXT:    ;;#ASMSTART1544; GFX900-NEXT:    ; def v[0:5]1545; GFX900-NEXT:    ;;#ASMEND1546; GFX900-NEXT:    ;;#ASMSTART1547; GFX900-NEXT:    ; def v[2:7]1548; GFX900-NEXT:    ;;#ASMEND1549; GFX900-NEXT:    v_mov_b32_e32 v8, 01550; GFX900-NEXT:    v_mov_b32_e32 v2, v41551; GFX900-NEXT:    v_mov_b32_e32 v3, v51552; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]1553; GFX900-NEXT:    s_waitcnt vmcnt(0)1554; GFX900-NEXT:    s_setpc_b64 s[30:31]1555;1556; GFX90A-LABEL: v_shuffle_v2p0_v3p0__0_4:1557; GFX90A:       ; %bb.0:1558; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1559; GFX90A-NEXT:    ;;#ASMSTART1560; GFX90A-NEXT:    ; def v[0:5]1561; GFX90A-NEXT:    ;;#ASMEND1562; GFX90A-NEXT:    ;;#ASMSTART1563; GFX90A-NEXT:    ; def v[2:7]1564; GFX90A-NEXT:    ;;#ASMEND1565; GFX90A-NEXT:    v_mov_b32_e32 v8, 01566; GFX90A-NEXT:    v_mov_b32_e32 v2, v41567; GFX90A-NEXT:    v_mov_b32_e32 v3, v51568; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]1569; GFX90A-NEXT:    s_waitcnt vmcnt(0)1570; GFX90A-NEXT:    s_setpc_b64 s[30:31]1571;1572; GFX942-LABEL: v_shuffle_v2p0_v3p0__0_4:1573; GFX942:       ; %bb.0:1574; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1575; GFX942-NEXT:    ;;#ASMSTART1576; GFX942-NEXT:    ; def v[0:5]1577; GFX942-NEXT:    ;;#ASMEND1578; GFX942-NEXT:    v_mov_b32_e32 v8, 01579; GFX942-NEXT:    ;;#ASMSTART1580; GFX942-NEXT:    ; def v[2:7]1581; GFX942-NEXT:    ;;#ASMEND1582; GFX942-NEXT:    s_nop 01583; GFX942-NEXT:    v_mov_b32_e32 v2, v41584; GFX942-NEXT:    v_mov_b32_e32 v3, v51585; GFX942-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1]1586; GFX942-NEXT:    s_waitcnt vmcnt(0)1587; GFX942-NEXT:    s_setpc_b64 s[30:31]1588  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1589  %vec1 = call <3 x ptr> asm "; def $0", "=v"()1590  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 0, i32 4>1591  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161592  ret void1593}1594 1595define void @v_shuffle_v2p0_v3p0__1_4(ptr addrspace(1) inreg %ptr) {1596; GFX900-LABEL: v_shuffle_v2p0_v3p0__1_4:1597; GFX900:       ; %bb.0:1598; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1599; GFX900-NEXT:    ;;#ASMSTART1600; GFX900-NEXT:    ; def v[0:5]1601; GFX900-NEXT:    ;;#ASMEND1602; GFX900-NEXT:    ;;#ASMSTART1603; GFX900-NEXT:    ; def v[4:9]1604; GFX900-NEXT:    ;;#ASMEND1605; GFX900-NEXT:    v_mov_b32_e32 v10, 01606; GFX900-NEXT:    v_mov_b32_e32 v4, v61607; GFX900-NEXT:    v_mov_b32_e32 v5, v71608; GFX900-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17]1609; GFX900-NEXT:    s_waitcnt vmcnt(0)1610; GFX900-NEXT:    s_setpc_b64 s[30:31]1611;1612; GFX90A-LABEL: v_shuffle_v2p0_v3p0__1_4:1613; GFX90A:       ; %bb.0:1614; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1615; GFX90A-NEXT:    ;;#ASMSTART1616; GFX90A-NEXT:    ; def v[0:5]1617; GFX90A-NEXT:    ;;#ASMEND1618; GFX90A-NEXT:    ;;#ASMSTART1619; GFX90A-NEXT:    ; def v[4:9]1620; GFX90A-NEXT:    ;;#ASMEND1621; GFX90A-NEXT:    v_mov_b32_e32 v10, 01622; GFX90A-NEXT:    v_mov_b32_e32 v4, v61623; GFX90A-NEXT:    v_mov_b32_e32 v5, v71624; GFX90A-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17]1625; GFX90A-NEXT:    s_waitcnt vmcnt(0)1626; GFX90A-NEXT:    s_setpc_b64 s[30:31]1627;1628; GFX942-LABEL: v_shuffle_v2p0_v3p0__1_4:1629; GFX942:       ; %bb.0:1630; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1631; GFX942-NEXT:    ;;#ASMSTART1632; GFX942-NEXT:    ; def v[0:5]1633; GFX942-NEXT:    ;;#ASMEND1634; GFX942-NEXT:    v_mov_b32_e32 v10, 01635; GFX942-NEXT:    ;;#ASMSTART1636; GFX942-NEXT:    ; def v[4:9]1637; GFX942-NEXT:    ;;#ASMEND1638; GFX942-NEXT:    s_nop 01639; GFX942-NEXT:    v_mov_b32_e32 v4, v61640; GFX942-NEXT:    v_mov_b32_e32 v5, v71641; GFX942-NEXT:    global_store_dwordx4 v10, v[2:5], s[0:1]1642; GFX942-NEXT:    s_waitcnt vmcnt(0)1643; GFX942-NEXT:    s_setpc_b64 s[30:31]1644  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1645  %vec1 = call <3 x ptr> asm "; def $0", "=v"()1646  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 1, i32 4>1647  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161648  ret void1649}1650 1651define void @v_shuffle_v2p0_v3p0__2_4(ptr addrspace(1) inreg %ptr) {1652; GFX900-LABEL: v_shuffle_v2p0_v3p0__2_4:1653; GFX900:       ; %bb.0:1654; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1655; GFX900-NEXT:    ;;#ASMSTART1656; GFX900-NEXT:    ; def v[6:11]1657; GFX900-NEXT:    ;;#ASMEND1658; GFX900-NEXT:    v_mov_b32_e32 v12, 01659; GFX900-NEXT:    v_mov_b32_e32 v6, v81660; GFX900-NEXT:    v_mov_b32_e32 v7, v91661; GFX900-NEXT:    ;;#ASMSTART1662; GFX900-NEXT:    ; def v[0:5]1663; GFX900-NEXT:    ;;#ASMEND1664; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]1665; GFX900-NEXT:    s_waitcnt vmcnt(0)1666; GFX900-NEXT:    s_setpc_b64 s[30:31]1667;1668; GFX90A-LABEL: v_shuffle_v2p0_v3p0__2_4:1669; GFX90A:       ; %bb.0:1670; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1671; GFX90A-NEXT:    ;;#ASMSTART1672; GFX90A-NEXT:    ; def v[6:11]1673; GFX90A-NEXT:    ;;#ASMEND1674; GFX90A-NEXT:    v_mov_b32_e32 v12, 01675; GFX90A-NEXT:    v_mov_b32_e32 v6, v81676; GFX90A-NEXT:    v_mov_b32_e32 v7, v91677; GFX90A-NEXT:    ;;#ASMSTART1678; GFX90A-NEXT:    ; def v[0:5]1679; GFX90A-NEXT:    ;;#ASMEND1680; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]1681; GFX90A-NEXT:    s_waitcnt vmcnt(0)1682; GFX90A-NEXT:    s_setpc_b64 s[30:31]1683;1684; GFX942-LABEL: v_shuffle_v2p0_v3p0__2_4:1685; GFX942:       ; %bb.0:1686; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1687; GFX942-NEXT:    ;;#ASMSTART1688; GFX942-NEXT:    ; def v[6:11]1689; GFX942-NEXT:    ;;#ASMEND1690; GFX942-NEXT:    v_mov_b32_e32 v12, 01691; GFX942-NEXT:    v_mov_b32_e32 v6, v81692; GFX942-NEXT:    v_mov_b32_e32 v7, v91693; GFX942-NEXT:    ;;#ASMSTART1694; GFX942-NEXT:    ; def v[0:5]1695; GFX942-NEXT:    ;;#ASMEND1696; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1]1697; GFX942-NEXT:    s_waitcnt vmcnt(0)1698; GFX942-NEXT:    s_setpc_b64 s[30:31]1699  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1700  %vec1 = call <3 x ptr> asm "; def $0", "=v"()1701  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 2, i32 4>1702  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161703  ret void1704}1705 1706define void @v_shuffle_v2p0_v3p0__3_4(ptr addrspace(1) inreg %ptr) {1707; GFX900-LABEL: v_shuffle_v2p0_v3p0__3_4:1708; GFX900:       ; %bb.0:1709; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1710; GFX900-NEXT:    v_mov_b32_e32 v6, 01711; GFX900-NEXT:    ;;#ASMSTART1712; GFX900-NEXT:    ; def v[0:5]1713; GFX900-NEXT:    ;;#ASMEND1714; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]1715; GFX900-NEXT:    s_waitcnt vmcnt(0)1716; GFX900-NEXT:    s_setpc_b64 s[30:31]1717;1718; GFX90A-LABEL: v_shuffle_v2p0_v3p0__3_4:1719; GFX90A:       ; %bb.0:1720; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1721; GFX90A-NEXT:    v_mov_b32_e32 v6, 01722; GFX90A-NEXT:    ;;#ASMSTART1723; GFX90A-NEXT:    ; def v[0:5]1724; GFX90A-NEXT:    ;;#ASMEND1725; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]1726; GFX90A-NEXT:    s_waitcnt vmcnt(0)1727; GFX90A-NEXT:    s_setpc_b64 s[30:31]1728;1729; GFX942-LABEL: v_shuffle_v2p0_v3p0__3_4:1730; GFX942:       ; %bb.0:1731; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1732; GFX942-NEXT:    v_mov_b32_e32 v6, 01733; GFX942-NEXT:    ;;#ASMSTART1734; GFX942-NEXT:    ; def v[0:5]1735; GFX942-NEXT:    ;;#ASMEND1736; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]1737; GFX942-NEXT:    s_waitcnt vmcnt(0)1738; GFX942-NEXT:    s_setpc_b64 s[30:31]1739  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1740  %vec1 = call <3 x ptr> asm "; def $0", "=v"()1741  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 3, i32 4>1742  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161743  ret void1744}1745 1746define void @v_shuffle_v2p0_v3p0__4_4(ptr addrspace(1) inreg %ptr) {1747; GFX900-LABEL: v_shuffle_v2p0_v3p0__4_4:1748; GFX900:       ; %bb.0:1749; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1750; GFX900-NEXT:    ;;#ASMSTART1751; GFX900-NEXT:    ; def v[0:5]1752; GFX900-NEXT:    ;;#ASMEND1753; GFX900-NEXT:    v_mov_b32_e32 v6, 01754; GFX900-NEXT:    v_mov_b32_e32 v4, v21755; GFX900-NEXT:    v_mov_b32_e32 v5, v31756; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]1757; GFX900-NEXT:    s_waitcnt vmcnt(0)1758; GFX900-NEXT:    s_setpc_b64 s[30:31]1759;1760; GFX90A-LABEL: v_shuffle_v2p0_v3p0__4_4:1761; GFX90A:       ; %bb.0:1762; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1763; GFX90A-NEXT:    ;;#ASMSTART1764; GFX90A-NEXT:    ; def v[0:5]1765; GFX90A-NEXT:    ;;#ASMEND1766; GFX90A-NEXT:    v_mov_b32_e32 v6, 01767; GFX90A-NEXT:    v_mov_b32_e32 v4, v21768; GFX90A-NEXT:    v_mov_b32_e32 v5, v31769; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]1770; GFX90A-NEXT:    s_waitcnt vmcnt(0)1771; GFX90A-NEXT:    s_setpc_b64 s[30:31]1772;1773; GFX942-LABEL: v_shuffle_v2p0_v3p0__4_4:1774; GFX942:       ; %bb.0:1775; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1776; GFX942-NEXT:    ;;#ASMSTART1777; GFX942-NEXT:    ; def v[0:5]1778; GFX942-NEXT:    ;;#ASMEND1779; GFX942-NEXT:    v_mov_b32_e32 v6, 01780; GFX942-NEXT:    v_mov_b32_e32 v4, v21781; GFX942-NEXT:    v_mov_b32_e32 v5, v31782; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]1783; GFX942-NEXT:    s_waitcnt vmcnt(0)1784; GFX942-NEXT:    s_setpc_b64 s[30:31]1785  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1786  %vec1 = call <3 x ptr> asm "; def $0", "=v"()1787  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 4>1788  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161789  ret void1790}1791 1792define void @v_shuffle_v2p0_v3p0__u_5(ptr addrspace(1) inreg %ptr) {1793; GFX900-LABEL: v_shuffle_v2p0_v3p0__u_5:1794; GFX900:       ; %bb.0:1795; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1796; GFX900-NEXT:    v_mov_b32_e32 v6, 01797; GFX900-NEXT:    ;;#ASMSTART1798; GFX900-NEXT:    ; def v[0:5]1799; GFX900-NEXT:    ;;#ASMEND1800; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]1801; GFX900-NEXT:    s_waitcnt vmcnt(0)1802; GFX900-NEXT:    s_setpc_b64 s[30:31]1803;1804; GFX90A-LABEL: v_shuffle_v2p0_v3p0__u_5:1805; GFX90A:       ; %bb.0:1806; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1807; GFX90A-NEXT:    v_mov_b32_e32 v6, 01808; GFX90A-NEXT:    ;;#ASMSTART1809; GFX90A-NEXT:    ; def v[0:5]1810; GFX90A-NEXT:    ;;#ASMEND1811; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]1812; GFX90A-NEXT:    s_waitcnt vmcnt(0)1813; GFX90A-NEXT:    s_setpc_b64 s[30:31]1814;1815; GFX942-LABEL: v_shuffle_v2p0_v3p0__u_5:1816; GFX942:       ; %bb.0:1817; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1818; GFX942-NEXT:    v_mov_b32_e32 v6, 01819; GFX942-NEXT:    ;;#ASMSTART1820; GFX942-NEXT:    ; def v[0:5]1821; GFX942-NEXT:    ;;#ASMEND1822; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]1823; GFX942-NEXT:    s_waitcnt vmcnt(0)1824; GFX942-NEXT:    s_setpc_b64 s[30:31]1825  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1826  %vec1 = call <3 x ptr> asm "; def $0", "=v"()1827  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 poison, i32 5>1828  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161829  ret void1830}1831 1832define void @v_shuffle_v2p0_v3p0__0_5(ptr addrspace(1) inreg %ptr) {1833; GFX900-LABEL: v_shuffle_v2p0_v3p0__0_5:1834; GFX900:       ; %bb.0:1835; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1836; GFX900-NEXT:    ;;#ASMSTART1837; GFX900-NEXT:    ; def v[0:5]1838; GFX900-NEXT:    ;;#ASMEND1839; GFX900-NEXT:    ;;#ASMSTART1840; GFX900-NEXT:    ; def v[2:7]1841; GFX900-NEXT:    ;;#ASMEND1842; GFX900-NEXT:    v_mov_b32_e32 v8, 01843; GFX900-NEXT:    v_mov_b32_e32 v2, v61844; GFX900-NEXT:    v_mov_b32_e32 v3, v71845; GFX900-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]1846; GFX900-NEXT:    s_waitcnt vmcnt(0)1847; GFX900-NEXT:    s_setpc_b64 s[30:31]1848;1849; GFX90A-LABEL: v_shuffle_v2p0_v3p0__0_5:1850; GFX90A:       ; %bb.0:1851; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1852; GFX90A-NEXT:    ;;#ASMSTART1853; GFX90A-NEXT:    ; def v[0:5]1854; GFX90A-NEXT:    ;;#ASMEND1855; GFX90A-NEXT:    ;;#ASMSTART1856; GFX90A-NEXT:    ; def v[2:7]1857; GFX90A-NEXT:    ;;#ASMEND1858; GFX90A-NEXT:    v_mov_b32_e32 v8, 01859; GFX90A-NEXT:    v_mov_b32_e32 v2, v61860; GFX90A-NEXT:    v_mov_b32_e32 v3, v71861; GFX90A-NEXT:    global_store_dwordx4 v8, v[0:3], s[16:17]1862; GFX90A-NEXT:    s_waitcnt vmcnt(0)1863; GFX90A-NEXT:    s_setpc_b64 s[30:31]1864;1865; GFX942-LABEL: v_shuffle_v2p0_v3p0__0_5:1866; GFX942:       ; %bb.0:1867; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1868; GFX942-NEXT:    ;;#ASMSTART1869; GFX942-NEXT:    ; def v[0:5]1870; GFX942-NEXT:    ;;#ASMEND1871; GFX942-NEXT:    v_mov_b32_e32 v8, 01872; GFX942-NEXT:    ;;#ASMSTART1873; GFX942-NEXT:    ; def v[2:7]1874; GFX942-NEXT:    ;;#ASMEND1875; GFX942-NEXT:    s_nop 01876; GFX942-NEXT:    v_mov_b32_e32 v2, v61877; GFX942-NEXT:    v_mov_b32_e32 v3, v71878; GFX942-NEXT:    global_store_dwordx4 v8, v[0:3], s[0:1]1879; GFX942-NEXT:    s_waitcnt vmcnt(0)1880; GFX942-NEXT:    s_setpc_b64 s[30:31]1881  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1882  %vec1 = call <3 x ptr> asm "; def $0", "=v"()1883  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 0, i32 5>1884  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161885  ret void1886}1887 1888define void @v_shuffle_v2p0_v3p0__1_5(ptr addrspace(1) inreg %ptr) {1889; GFX900-LABEL: v_shuffle_v2p0_v3p0__1_5:1890; GFX900:       ; %bb.0:1891; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1892; GFX900-NEXT:    ;;#ASMSTART1893; GFX900-NEXT:    ; def v[0:5]1894; GFX900-NEXT:    ;;#ASMEND1895; GFX900-NEXT:    ;;#ASMSTART1896; GFX900-NEXT:    ; def v[4:9]1897; GFX900-NEXT:    ;;#ASMEND1898; GFX900-NEXT:    v_mov_b32_e32 v10, 01899; GFX900-NEXT:    v_mov_b32_e32 v4, v81900; GFX900-NEXT:    v_mov_b32_e32 v5, v91901; GFX900-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17]1902; GFX900-NEXT:    s_waitcnt vmcnt(0)1903; GFX900-NEXT:    s_setpc_b64 s[30:31]1904;1905; GFX90A-LABEL: v_shuffle_v2p0_v3p0__1_5:1906; GFX90A:       ; %bb.0:1907; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1908; GFX90A-NEXT:    ;;#ASMSTART1909; GFX90A-NEXT:    ; def v[0:5]1910; GFX90A-NEXT:    ;;#ASMEND1911; GFX90A-NEXT:    ;;#ASMSTART1912; GFX90A-NEXT:    ; def v[4:9]1913; GFX90A-NEXT:    ;;#ASMEND1914; GFX90A-NEXT:    v_mov_b32_e32 v10, 01915; GFX90A-NEXT:    v_mov_b32_e32 v4, v81916; GFX90A-NEXT:    v_mov_b32_e32 v5, v91917; GFX90A-NEXT:    global_store_dwordx4 v10, v[2:5], s[16:17]1918; GFX90A-NEXT:    s_waitcnt vmcnt(0)1919; GFX90A-NEXT:    s_setpc_b64 s[30:31]1920;1921; GFX942-LABEL: v_shuffle_v2p0_v3p0__1_5:1922; GFX942:       ; %bb.0:1923; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1924; GFX942-NEXT:    ;;#ASMSTART1925; GFX942-NEXT:    ; def v[0:5]1926; GFX942-NEXT:    ;;#ASMEND1927; GFX942-NEXT:    v_mov_b32_e32 v10, 01928; GFX942-NEXT:    ;;#ASMSTART1929; GFX942-NEXT:    ; def v[4:9]1930; GFX942-NEXT:    ;;#ASMEND1931; GFX942-NEXT:    s_nop 01932; GFX942-NEXT:    v_mov_b32_e32 v4, v81933; GFX942-NEXT:    v_mov_b32_e32 v5, v91934; GFX942-NEXT:    global_store_dwordx4 v10, v[2:5], s[0:1]1935; GFX942-NEXT:    s_waitcnt vmcnt(0)1936; GFX942-NEXT:    s_setpc_b64 s[30:31]1937  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1938  %vec1 = call <3 x ptr> asm "; def $0", "=v"()1939  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 1, i32 5>1940  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161941  ret void1942}1943 1944define void @v_shuffle_v2p0_v3p0__2_5(ptr addrspace(1) inreg %ptr) {1945; GFX900-LABEL: v_shuffle_v2p0_v3p0__2_5:1946; GFX900:       ; %bb.0:1947; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1948; GFX900-NEXT:    ;;#ASMSTART1949; GFX900-NEXT:    ; def v[6:11]1950; GFX900-NEXT:    ;;#ASMEND1951; GFX900-NEXT:    v_mov_b32_e32 v12, 01952; GFX900-NEXT:    v_mov_b32_e32 v6, v101953; GFX900-NEXT:    v_mov_b32_e32 v7, v111954; GFX900-NEXT:    ;;#ASMSTART1955; GFX900-NEXT:    ; def v[0:5]1956; GFX900-NEXT:    ;;#ASMEND1957; GFX900-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]1958; GFX900-NEXT:    s_waitcnt vmcnt(0)1959; GFX900-NEXT:    s_setpc_b64 s[30:31]1960;1961; GFX90A-LABEL: v_shuffle_v2p0_v3p0__2_5:1962; GFX90A:       ; %bb.0:1963; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1964; GFX90A-NEXT:    ;;#ASMSTART1965; GFX90A-NEXT:    ; def v[6:11]1966; GFX90A-NEXT:    ;;#ASMEND1967; GFX90A-NEXT:    v_mov_b32_e32 v12, 01968; GFX90A-NEXT:    v_mov_b32_e32 v6, v101969; GFX90A-NEXT:    v_mov_b32_e32 v7, v111970; GFX90A-NEXT:    ;;#ASMSTART1971; GFX90A-NEXT:    ; def v[0:5]1972; GFX90A-NEXT:    ;;#ASMEND1973; GFX90A-NEXT:    global_store_dwordx4 v12, v[4:7], s[16:17]1974; GFX90A-NEXT:    s_waitcnt vmcnt(0)1975; GFX90A-NEXT:    s_setpc_b64 s[30:31]1976;1977; GFX942-LABEL: v_shuffle_v2p0_v3p0__2_5:1978; GFX942:       ; %bb.0:1979; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1980; GFX942-NEXT:    ;;#ASMSTART1981; GFX942-NEXT:    ; def v[6:11]1982; GFX942-NEXT:    ;;#ASMEND1983; GFX942-NEXT:    v_mov_b32_e32 v12, 01984; GFX942-NEXT:    v_mov_b32_e32 v6, v101985; GFX942-NEXT:    v_mov_b32_e32 v7, v111986; GFX942-NEXT:    ;;#ASMSTART1987; GFX942-NEXT:    ; def v[0:5]1988; GFX942-NEXT:    ;;#ASMEND1989; GFX942-NEXT:    global_store_dwordx4 v12, v[4:7], s[0:1]1990; GFX942-NEXT:    s_waitcnt vmcnt(0)1991; GFX942-NEXT:    s_setpc_b64 s[30:31]1992  %vec0 = call <3 x ptr> asm "; def $0", "=v"()1993  %vec1 = call <3 x ptr> asm "; def $0", "=v"()1994  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 2, i32 5>1995  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 161996  ret void1997}1998 1999define void @v_shuffle_v2p0_v3p0__3_5(ptr addrspace(1) inreg %ptr) {2000; GFX900-LABEL: v_shuffle_v2p0_v3p0__3_5:2001; GFX900:       ; %bb.0:2002; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2003; GFX900-NEXT:    ;;#ASMSTART2004; GFX900-NEXT:    ; def v[0:5]2005; GFX900-NEXT:    ;;#ASMEND2006; GFX900-NEXT:    v_mov_b32_e32 v6, 02007; GFX900-NEXT:    v_mov_b32_e32 v2, v42008; GFX900-NEXT:    v_mov_b32_e32 v3, v52009; GFX900-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]2010; GFX900-NEXT:    s_waitcnt vmcnt(0)2011; GFX900-NEXT:    s_setpc_b64 s[30:31]2012;2013; GFX90A-LABEL: v_shuffle_v2p0_v3p0__3_5:2014; GFX90A:       ; %bb.0:2015; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2016; GFX90A-NEXT:    ;;#ASMSTART2017; GFX90A-NEXT:    ; def v[0:5]2018; GFX90A-NEXT:    ;;#ASMEND2019; GFX90A-NEXT:    v_mov_b32_e32 v6, 02020; GFX90A-NEXT:    v_mov_b32_e32 v2, v42021; GFX90A-NEXT:    v_mov_b32_e32 v3, v52022; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]2023; GFX90A-NEXT:    s_waitcnt vmcnt(0)2024; GFX90A-NEXT:    s_setpc_b64 s[30:31]2025;2026; GFX942-LABEL: v_shuffle_v2p0_v3p0__3_5:2027; GFX942:       ; %bb.0:2028; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2029; GFX942-NEXT:    ;;#ASMSTART2030; GFX942-NEXT:    ; def v[0:5]2031; GFX942-NEXT:    ;;#ASMEND2032; GFX942-NEXT:    v_mov_b32_e32 v6, 02033; GFX942-NEXT:    v_mov_b32_e32 v2, v42034; GFX942-NEXT:    v_mov_b32_e32 v3, v52035; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]2036; GFX942-NEXT:    s_waitcnt vmcnt(0)2037; GFX942-NEXT:    s_setpc_b64 s[30:31]2038  %vec0 = call <3 x ptr> asm "; def $0", "=v"()2039  %vec1 = call <3 x ptr> asm "; def $0", "=v"()2040  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 3, i32 5>2041  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 162042  ret void2043}2044 2045define void @v_shuffle_v2p0_v3p0__4_5(ptr addrspace(1) inreg %ptr) {2046; GFX900-LABEL: v_shuffle_v2p0_v3p0__4_5:2047; GFX900:       ; %bb.0:2048; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2049; GFX900-NEXT:    v_mov_b32_e32 v6, 02050; GFX900-NEXT:    ;;#ASMSTART2051; GFX900-NEXT:    ; def v[0:5]2052; GFX900-NEXT:    ;;#ASMEND2053; GFX900-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]2054; GFX900-NEXT:    s_waitcnt vmcnt(0)2055; GFX900-NEXT:    s_setpc_b64 s[30:31]2056;2057; GFX90A-LABEL: v_shuffle_v2p0_v3p0__4_5:2058; GFX90A:       ; %bb.0:2059; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2060; GFX90A-NEXT:    v_mov_b32_e32 v6, 02061; GFX90A-NEXT:    ;;#ASMSTART2062; GFX90A-NEXT:    ; def v[0:5]2063; GFX90A-NEXT:    ;;#ASMEND2064; GFX90A-NEXT:    global_store_dwordx4 v6, v[2:5], s[16:17]2065; GFX90A-NEXT:    s_waitcnt vmcnt(0)2066; GFX90A-NEXT:    s_setpc_b64 s[30:31]2067;2068; GFX942-LABEL: v_shuffle_v2p0_v3p0__4_5:2069; GFX942:       ; %bb.0:2070; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2071; GFX942-NEXT:    v_mov_b32_e32 v6, 02072; GFX942-NEXT:    ;;#ASMSTART2073; GFX942-NEXT:    ; def v[0:5]2074; GFX942-NEXT:    ;;#ASMEND2075; GFX942-NEXT:    global_store_dwordx4 v6, v[2:5], s[0:1]2076; GFX942-NEXT:    s_waitcnt vmcnt(0)2077; GFX942-NEXT:    s_setpc_b64 s[30:31]2078  %vec0 = call <3 x ptr> asm "; def $0", "=v"()2079  %vec1 = call <3 x ptr> asm "; def $0", "=v"()2080  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 5>2081  store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 162082  ret void2083}2084 2085define void @s_shuffle_v2p0_v3p0__u_u() {2086; GFX9-LABEL: s_shuffle_v2p0_v3p0__u_u:2087; GFX9:       ; %bb.0:2088; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2089; GFX9-NEXT:    ;;#ASMSTART2090; GFX9-NEXT:    ; use s[8:11]2091; GFX9-NEXT:    ;;#ASMEND2092; GFX9-NEXT:    s_setpc_b64 s[30:31]2093  %vec0 = call <3 x ptr> asm "; def $0", "=s"()2094  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> poison2095  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2096  ret void2097}2098 2099define void @s_shuffle_v2p0_v3p0__0_u() {2100; GFX900-LABEL: s_shuffle_v2p0_v3p0__0_u:2101; GFX900:       ; %bb.0:2102; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2103; GFX900-NEXT:    ;;#ASMSTART2104; GFX900-NEXT:    ; def s[8:13]2105; GFX900-NEXT:    ;;#ASMEND2106; GFX900-NEXT:    ;;#ASMSTART2107; GFX900-NEXT:    ; use s[8:11]2108; GFX900-NEXT:    ;;#ASMEND2109; GFX900-NEXT:    s_setpc_b64 s[30:31]2110;2111; GFX90A-LABEL: s_shuffle_v2p0_v3p0__0_u:2112; GFX90A:       ; %bb.0:2113; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2114; GFX90A-NEXT:    ;;#ASMSTART2115; GFX90A-NEXT:    ; def s[8:13]2116; GFX90A-NEXT:    ;;#ASMEND2117; GFX90A-NEXT:    ;;#ASMSTART2118; GFX90A-NEXT:    ; use s[8:11]2119; GFX90A-NEXT:    ;;#ASMEND2120; GFX90A-NEXT:    s_setpc_b64 s[30:31]2121;2122; GFX942-LABEL: s_shuffle_v2p0_v3p0__0_u:2123; GFX942:       ; %bb.0:2124; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2125; GFX942-NEXT:    ;;#ASMSTART2126; GFX942-NEXT:    ; def s[8:13]2127; GFX942-NEXT:    ;;#ASMEND2128; GFX942-NEXT:    s_nop 02129; GFX942-NEXT:    ;;#ASMSTART2130; GFX942-NEXT:    ; use s[8:11]2131; GFX942-NEXT:    ;;#ASMEND2132; GFX942-NEXT:    s_setpc_b64 s[30:31]2133  %vec0 = call <3 x ptr> asm "; def $0", "=s"()2134  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 poison>2135  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2136  ret void2137}2138 2139define void @s_shuffle_v2p0_v3p0__1_u() {2140; GFX900-LABEL: s_shuffle_v2p0_v3p0__1_u:2141; GFX900:       ; %bb.0:2142; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2143; GFX900-NEXT:    ;;#ASMSTART2144; GFX900-NEXT:    ; def s[4:9]2145; GFX900-NEXT:    ;;#ASMEND2146; GFX900-NEXT:    s_mov_b32 s8, s62147; GFX900-NEXT:    s_mov_b32 s9, s72148; GFX900-NEXT:    ;;#ASMSTART2149; GFX900-NEXT:    ; use s[8:11]2150; GFX900-NEXT:    ;;#ASMEND2151; GFX900-NEXT:    s_setpc_b64 s[30:31]2152;2153; GFX90A-LABEL: s_shuffle_v2p0_v3p0__1_u:2154; GFX90A:       ; %bb.0:2155; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2156; GFX90A-NEXT:    ;;#ASMSTART2157; GFX90A-NEXT:    ; def s[4:9]2158; GFX90A-NEXT:    ;;#ASMEND2159; GFX90A-NEXT:    s_mov_b32 s8, s62160; GFX90A-NEXT:    s_mov_b32 s9, s72161; GFX90A-NEXT:    ;;#ASMSTART2162; GFX90A-NEXT:    ; use s[8:11]2163; GFX90A-NEXT:    ;;#ASMEND2164; GFX90A-NEXT:    s_setpc_b64 s[30:31]2165;2166; GFX942-LABEL: s_shuffle_v2p0_v3p0__1_u:2167; GFX942:       ; %bb.0:2168; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2169; GFX942-NEXT:    ;;#ASMSTART2170; GFX942-NEXT:    ; def s[0:5]2171; GFX942-NEXT:    ;;#ASMEND2172; GFX942-NEXT:    s_mov_b32 s8, s22173; GFX942-NEXT:    s_mov_b32 s9, s32174; GFX942-NEXT:    ;;#ASMSTART2175; GFX942-NEXT:    ; use s[8:11]2176; GFX942-NEXT:    ;;#ASMEND2177; GFX942-NEXT:    s_setpc_b64 s[30:31]2178  %vec0 = call <3 x ptr> asm "; def $0", "=s"()2179  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 poison>2180  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2181  ret void2182}2183 2184define void @s_shuffle_v2p0_v3p0__2_u() {2185; GFX900-LABEL: s_shuffle_v2p0_v3p0__2_u:2186; GFX900:       ; %bb.0:2187; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2188; GFX900-NEXT:    ;;#ASMSTART2189; GFX900-NEXT:    ; def s[4:9]2190; GFX900-NEXT:    ;;#ASMEND2191; GFX900-NEXT:    ;;#ASMSTART2192; GFX900-NEXT:    ; use s[8:11]2193; GFX900-NEXT:    ;;#ASMEND2194; GFX900-NEXT:    s_setpc_b64 s[30:31]2195;2196; GFX90A-LABEL: s_shuffle_v2p0_v3p0__2_u:2197; GFX90A:       ; %bb.0:2198; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2199; GFX90A-NEXT:    ;;#ASMSTART2200; GFX90A-NEXT:    ; def s[4:9]2201; GFX90A-NEXT:    ;;#ASMEND2202; GFX90A-NEXT:    ;;#ASMSTART2203; GFX90A-NEXT:    ; use s[8:11]2204; GFX90A-NEXT:    ;;#ASMEND2205; GFX90A-NEXT:    s_setpc_b64 s[30:31]2206;2207; GFX942-LABEL: s_shuffle_v2p0_v3p0__2_u:2208; GFX942:       ; %bb.0:2209; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2210; GFX942-NEXT:    ;;#ASMSTART2211; GFX942-NEXT:    ; def s[4:9]2212; GFX942-NEXT:    ;;#ASMEND2213; GFX942-NEXT:    s_nop 02214; GFX942-NEXT:    ;;#ASMSTART2215; GFX942-NEXT:    ; use s[8:11]2216; GFX942-NEXT:    ;;#ASMEND2217; GFX942-NEXT:    s_setpc_b64 s[30:31]2218  %vec0 = call <3 x ptr> asm "; def $0", "=s"()2219  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 poison>2220  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2221  ret void2222}2223 2224define void @s_shuffle_v2p0_v3p0__3_u() {2225; GFX9-LABEL: s_shuffle_v2p0_v3p0__3_u:2226; GFX9:       ; %bb.0:2227; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2228; GFX9-NEXT:    ;;#ASMSTART2229; GFX9-NEXT:    ; use s[8:11]2230; GFX9-NEXT:    ;;#ASMEND2231; GFX9-NEXT:    s_setpc_b64 s[30:31]2232  %vec0 = call <3 x ptr> asm "; def $0", "=s"()2233  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 poison>2234  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2235  ret void2236}2237 2238define void @s_shuffle_v2p0_v3p0__4_u() {2239; GFX900-LABEL: s_shuffle_v2p0_v3p0__4_u:2240; GFX900:       ; %bb.0:2241; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2242; GFX900-NEXT:    ;;#ASMSTART2243; GFX900-NEXT:    ; def s[4:9]2244; GFX900-NEXT:    ;;#ASMEND2245; GFX900-NEXT:    s_mov_b32 s8, s62246; GFX900-NEXT:    s_mov_b32 s9, s72247; GFX900-NEXT:    ;;#ASMSTART2248; GFX900-NEXT:    ; use s[8:11]2249; GFX900-NEXT:    ;;#ASMEND2250; GFX900-NEXT:    s_setpc_b64 s[30:31]2251;2252; GFX90A-LABEL: s_shuffle_v2p0_v3p0__4_u:2253; GFX90A:       ; %bb.0:2254; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2255; GFX90A-NEXT:    ;;#ASMSTART2256; GFX90A-NEXT:    ; def s[4:9]2257; GFX90A-NEXT:    ;;#ASMEND2258; GFX90A-NEXT:    s_mov_b32 s8, s62259; GFX90A-NEXT:    s_mov_b32 s9, s72260; GFX90A-NEXT:    ;;#ASMSTART2261; GFX90A-NEXT:    ; use s[8:11]2262; GFX90A-NEXT:    ;;#ASMEND2263; GFX90A-NEXT:    s_setpc_b64 s[30:31]2264;2265; GFX942-LABEL: s_shuffle_v2p0_v3p0__4_u:2266; GFX942:       ; %bb.0:2267; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2268; GFX942-NEXT:    ;;#ASMSTART2269; GFX942-NEXT:    ; def s[0:5]2270; GFX942-NEXT:    ;;#ASMEND2271; GFX942-NEXT:    s_mov_b32 s8, s22272; GFX942-NEXT:    s_mov_b32 s9, s32273; GFX942-NEXT:    ;;#ASMSTART2274; GFX942-NEXT:    ; use s[8:11]2275; GFX942-NEXT:    ;;#ASMEND2276; GFX942-NEXT:    s_setpc_b64 s[30:31]2277  %vec0 = call <3 x ptr> asm "; def $0", "=s"()2278  %vec1 = call <3 x ptr> asm "; def $0", "=s"()2279  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 poison>2280  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2281  ret void2282}2283 2284define void @s_shuffle_v2p0_v3p0__5_u() {2285; GFX900-LABEL: s_shuffle_v2p0_v3p0__5_u:2286; GFX900:       ; %bb.0:2287; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2288; GFX900-NEXT:    ;;#ASMSTART2289; GFX900-NEXT:    ; def s[4:9]2290; GFX900-NEXT:    ;;#ASMEND2291; GFX900-NEXT:    ;;#ASMSTART2292; GFX900-NEXT:    ; use s[8:11]2293; GFX900-NEXT:    ;;#ASMEND2294; GFX900-NEXT:    s_setpc_b64 s[30:31]2295;2296; GFX90A-LABEL: s_shuffle_v2p0_v3p0__5_u:2297; GFX90A:       ; %bb.0:2298; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2299; GFX90A-NEXT:    ;;#ASMSTART2300; GFX90A-NEXT:    ; def s[4:9]2301; GFX90A-NEXT:    ;;#ASMEND2302; GFX90A-NEXT:    ;;#ASMSTART2303; GFX90A-NEXT:    ; use s[8:11]2304; GFX90A-NEXT:    ;;#ASMEND2305; GFX90A-NEXT:    s_setpc_b64 s[30:31]2306;2307; GFX942-LABEL: s_shuffle_v2p0_v3p0__5_u:2308; GFX942:       ; %bb.0:2309; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2310; GFX942-NEXT:    ;;#ASMSTART2311; GFX942-NEXT:    ; def s[4:9]2312; GFX942-NEXT:    ;;#ASMEND2313; GFX942-NEXT:    s_nop 02314; GFX942-NEXT:    ;;#ASMSTART2315; GFX942-NEXT:    ; use s[8:11]2316; GFX942-NEXT:    ;;#ASMEND2317; GFX942-NEXT:    s_setpc_b64 s[30:31]2318  %vec0 = call <3 x ptr> asm "; def $0", "=s"()2319  %vec1 = call <3 x ptr> asm "; def $0", "=s"()2320  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 poison>2321  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2322  ret void2323}2324 2325define void @s_shuffle_v2p0_v3p0__5_0() {2326; GFX900-LABEL: s_shuffle_v2p0_v3p0__5_0:2327; GFX900:       ; %bb.0:2328; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2329; GFX900-NEXT:    ;;#ASMSTART2330; GFX900-NEXT:    ; def s[12:17]2331; GFX900-NEXT:    ;;#ASMEND2332; GFX900-NEXT:    ;;#ASMSTART2333; GFX900-NEXT:    ; def s[4:9]2334; GFX900-NEXT:    ;;#ASMEND2335; GFX900-NEXT:    s_mov_b32 s10, s122336; GFX900-NEXT:    s_mov_b32 s11, s132337; GFX900-NEXT:    ;;#ASMSTART2338; GFX900-NEXT:    ; use s[8:11]2339; GFX900-NEXT:    ;;#ASMEND2340; GFX900-NEXT:    s_setpc_b64 s[30:31]2341;2342; GFX90A-LABEL: s_shuffle_v2p0_v3p0__5_0:2343; GFX90A:       ; %bb.0:2344; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2345; GFX90A-NEXT:    ;;#ASMSTART2346; GFX90A-NEXT:    ; def s[12:17]2347; GFX90A-NEXT:    ;;#ASMEND2348; GFX90A-NEXT:    ;;#ASMSTART2349; GFX90A-NEXT:    ; def s[4:9]2350; GFX90A-NEXT:    ;;#ASMEND2351; GFX90A-NEXT:    s_mov_b32 s10, s122352; GFX90A-NEXT:    s_mov_b32 s11, s132353; GFX90A-NEXT:    ;;#ASMSTART2354; GFX90A-NEXT:    ; use s[8:11]2355; GFX90A-NEXT:    ;;#ASMEND2356; GFX90A-NEXT:    s_setpc_b64 s[30:31]2357;2358; GFX942-LABEL: s_shuffle_v2p0_v3p0__5_0:2359; GFX942:       ; %bb.0:2360; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2361; GFX942-NEXT:    ;;#ASMSTART2362; GFX942-NEXT:    ; def s[0:5]2363; GFX942-NEXT:    ;;#ASMEND2364; GFX942-NEXT:    s_mov_b32 s10, s02365; GFX942-NEXT:    ;;#ASMSTART2366; GFX942-NEXT:    ; def s[4:9]2367; GFX942-NEXT:    ;;#ASMEND2368; GFX942-NEXT:    s_mov_b32 s11, s12369; GFX942-NEXT:    ;;#ASMSTART2370; GFX942-NEXT:    ; use s[8:11]2371; GFX942-NEXT:    ;;#ASMEND2372; GFX942-NEXT:    s_setpc_b64 s[30:31]2373  %vec0 = call <3 x ptr> asm "; def $0", "=s"()2374  %vec1 = call <3 x ptr> asm "; def $0", "=s"()2375  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 0>2376  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2377  ret void2378}2379 2380define void @s_shuffle_v2p0_v3p0__5_1() {2381; GFX900-LABEL: s_shuffle_v2p0_v3p0__5_1:2382; GFX900:       ; %bb.0:2383; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2384; GFX900-NEXT:    ;;#ASMSTART2385; GFX900-NEXT:    ; def s[8:13]2386; GFX900-NEXT:    ;;#ASMEND2387; GFX900-NEXT:    ;;#ASMSTART2388; GFX900-NEXT:    ; def s[4:9]2389; GFX900-NEXT:    ;;#ASMEND2390; GFX900-NEXT:    ;;#ASMSTART2391; GFX900-NEXT:    ; use s[8:11]2392; GFX900-NEXT:    ;;#ASMEND2393; GFX900-NEXT:    s_setpc_b64 s[30:31]2394;2395; GFX90A-LABEL: s_shuffle_v2p0_v3p0__5_1:2396; GFX90A:       ; %bb.0:2397; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2398; GFX90A-NEXT:    ;;#ASMSTART2399; GFX90A-NEXT:    ; def s[8:13]2400; GFX90A-NEXT:    ;;#ASMEND2401; GFX90A-NEXT:    ;;#ASMSTART2402; GFX90A-NEXT:    ; def s[4:9]2403; GFX90A-NEXT:    ;;#ASMEND2404; GFX90A-NEXT:    ;;#ASMSTART2405; GFX90A-NEXT:    ; use s[8:11]2406; GFX90A-NEXT:    ;;#ASMEND2407; GFX90A-NEXT:    s_setpc_b64 s[30:31]2408;2409; GFX942-LABEL: s_shuffle_v2p0_v3p0__5_1:2410; GFX942:       ; %bb.0:2411; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2412; GFX942-NEXT:    ;;#ASMSTART2413; GFX942-NEXT:    ; def s[8:13]2414; GFX942-NEXT:    ;;#ASMEND2415; GFX942-NEXT:    s_nop 02416; GFX942-NEXT:    ;;#ASMSTART2417; GFX942-NEXT:    ; def s[4:9]2418; GFX942-NEXT:    ;;#ASMEND2419; GFX942-NEXT:    s_nop 02420; GFX942-NEXT:    ;;#ASMSTART2421; GFX942-NEXT:    ; use s[8:11]2422; GFX942-NEXT:    ;;#ASMEND2423; GFX942-NEXT:    s_setpc_b64 s[30:31]2424  %vec0 = call <3 x ptr> asm "; def $0", "=s"()2425  %vec1 = call <3 x ptr> asm "; def $0", "=s"()2426  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 1>2427  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2428  ret void2429}2430 2431define void @s_shuffle_v2p0_v3p0__5_2() {2432; GFX900-LABEL: s_shuffle_v2p0_v3p0__5_2:2433; GFX900:       ; %bb.0:2434; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2435; GFX900-NEXT:    ;;#ASMSTART2436; GFX900-NEXT:    ; def s[8:13]2437; GFX900-NEXT:    ;;#ASMEND2438; GFX900-NEXT:    ;;#ASMSTART2439; GFX900-NEXT:    ; def s[4:9]2440; GFX900-NEXT:    ;;#ASMEND2441; GFX900-NEXT:    s_mov_b32 s10, s122442; GFX900-NEXT:    s_mov_b32 s11, s132443; GFX900-NEXT:    ;;#ASMSTART2444; GFX900-NEXT:    ; use s[8:11]2445; GFX900-NEXT:    ;;#ASMEND2446; GFX900-NEXT:    s_setpc_b64 s[30:31]2447;2448; GFX90A-LABEL: s_shuffle_v2p0_v3p0__5_2:2449; GFX90A:       ; %bb.0:2450; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2451; GFX90A-NEXT:    ;;#ASMSTART2452; GFX90A-NEXT:    ; def s[8:13]2453; GFX90A-NEXT:    ;;#ASMEND2454; GFX90A-NEXT:    ;;#ASMSTART2455; GFX90A-NEXT:    ; def s[4:9]2456; GFX90A-NEXT:    ;;#ASMEND2457; GFX90A-NEXT:    s_mov_b32 s10, s122458; GFX90A-NEXT:    s_mov_b32 s11, s132459; GFX90A-NEXT:    ;;#ASMSTART2460; GFX90A-NEXT:    ; use s[8:11]2461; GFX90A-NEXT:    ;;#ASMEND2462; GFX90A-NEXT:    s_setpc_b64 s[30:31]2463;2464; GFX942-LABEL: s_shuffle_v2p0_v3p0__5_2:2465; GFX942:       ; %bb.0:2466; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2467; GFX942-NEXT:    ;;#ASMSTART2468; GFX942-NEXT:    ; def s[8:13]2469; GFX942-NEXT:    ;;#ASMEND2470; GFX942-NEXT:    s_mov_b32 s10, s122471; GFX942-NEXT:    ;;#ASMSTART2472; GFX942-NEXT:    ; def s[4:9]2473; GFX942-NEXT:    ;;#ASMEND2474; GFX942-NEXT:    s_mov_b32 s11, s132475; GFX942-NEXT:    ;;#ASMSTART2476; GFX942-NEXT:    ; use s[8:11]2477; GFX942-NEXT:    ;;#ASMEND2478; GFX942-NEXT:    s_setpc_b64 s[30:31]2479  %vec0 = call <3 x ptr> asm "; def $0", "=s"()2480  %vec1 = call <3 x ptr> asm "; def $0", "=s"()2481  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 2>2482  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2483  ret void2484}2485 2486define void @s_shuffle_v2p0_v3p0__5_3() {2487; GFX9-LABEL: s_shuffle_v2p0_v3p0__5_3:2488; GFX9:       ; %bb.0:2489; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2490; GFX9-NEXT:    ;;#ASMSTART2491; GFX9-NEXT:    ; def s[4:9]2492; GFX9-NEXT:    ;;#ASMEND2493; GFX9-NEXT:    s_mov_b32 s10, s42494; GFX9-NEXT:    s_mov_b32 s11, s52495; GFX9-NEXT:    ;;#ASMSTART2496; GFX9-NEXT:    ; use s[8:11]2497; GFX9-NEXT:    ;;#ASMEND2498; GFX9-NEXT:    s_setpc_b64 s[30:31]2499  %vec0 = call <3 x ptr> asm "; def $0", "=s"()2500  %vec1 = call <3 x ptr> asm "; def $0", "=s"()2501  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 3>2502  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2503  ret void2504}2505 2506define void @s_shuffle_v2p0_v3p0__5_4() {2507; GFX9-LABEL: s_shuffle_v2p0_v3p0__5_4:2508; GFX9:       ; %bb.0:2509; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2510; GFX9-NEXT:    ;;#ASMSTART2511; GFX9-NEXT:    ; def s[4:9]2512; GFX9-NEXT:    ;;#ASMEND2513; GFX9-NEXT:    s_mov_b32 s10, s62514; GFX9-NEXT:    s_mov_b32 s11, s72515; GFX9-NEXT:    ;;#ASMSTART2516; GFX9-NEXT:    ; use s[8:11]2517; GFX9-NEXT:    ;;#ASMEND2518; GFX9-NEXT:    s_setpc_b64 s[30:31]2519  %vec0 = call <3 x ptr> asm "; def $0", "=s"()2520  %vec1 = call <3 x ptr> asm "; def $0", "=s"()2521  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 4>2522  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2523  ret void2524}2525 2526define void @s_shuffle_v2p0_v3p0__5_5() {2527; GFX9-LABEL: s_shuffle_v2p0_v3p0__5_5:2528; GFX9:       ; %bb.0:2529; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2530; GFX9-NEXT:    ;;#ASMSTART2531; GFX9-NEXT:    ; def s[4:9]2532; GFX9-NEXT:    ;;#ASMEND2533; GFX9-NEXT:    s_mov_b32 s10, s82534; GFX9-NEXT:    s_mov_b32 s11, s92535; GFX9-NEXT:    ;;#ASMSTART2536; GFX9-NEXT:    ; use s[8:11]2537; GFX9-NEXT:    ;;#ASMEND2538; GFX9-NEXT:    s_setpc_b64 s[30:31]2539  %vec0 = call <3 x ptr> asm "; def $0", "=s"()2540  %vec1 = call <3 x ptr> asm "; def $0", "=s"()2541  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 5, i32 5>2542  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2543  ret void2544}2545 2546define void @s_shuffle_v2p0_v3p0__u_0() {2547; GFX900-LABEL: s_shuffle_v2p0_v3p0__u_0:2548; GFX900:       ; %bb.0:2549; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2550; GFX900-NEXT:    ;;#ASMSTART2551; GFX900-NEXT:    ; def s[4:9]2552; GFX900-NEXT:    ;;#ASMEND2553; GFX900-NEXT:    s_mov_b32 s10, s42554; GFX900-NEXT:    s_mov_b32 s11, s52555; GFX900-NEXT:    ;;#ASMSTART2556; GFX900-NEXT:    ; use s[8:11]2557; GFX900-NEXT:    ;;#ASMEND2558; GFX900-NEXT:    s_setpc_b64 s[30:31]2559;2560; GFX90A-LABEL: s_shuffle_v2p0_v3p0__u_0:2561; GFX90A:       ; %bb.0:2562; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2563; GFX90A-NEXT:    ;;#ASMSTART2564; GFX90A-NEXT:    ; def s[4:9]2565; GFX90A-NEXT:    ;;#ASMEND2566; GFX90A-NEXT:    s_mov_b32 s10, s42567; GFX90A-NEXT:    s_mov_b32 s11, s52568; GFX90A-NEXT:    ;;#ASMSTART2569; GFX90A-NEXT:    ; use s[8:11]2570; GFX90A-NEXT:    ;;#ASMEND2571; GFX90A-NEXT:    s_setpc_b64 s[30:31]2572;2573; GFX942-LABEL: s_shuffle_v2p0_v3p0__u_0:2574; GFX942:       ; %bb.0:2575; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2576; GFX942-NEXT:    ;;#ASMSTART2577; GFX942-NEXT:    ; def s[0:5]2578; GFX942-NEXT:    ;;#ASMEND2579; GFX942-NEXT:    s_mov_b32 s10, s02580; GFX942-NEXT:    s_mov_b32 s11, s12581; GFX942-NEXT:    ;;#ASMSTART2582; GFX942-NEXT:    ; use s[8:11]2583; GFX942-NEXT:    ;;#ASMEND2584; GFX942-NEXT:    s_setpc_b64 s[30:31]2585  %vec0 = call <3 x ptr> asm "; def $0", "=s"()2586  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 0>2587  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2588  ret void2589}2590 2591define void @s_shuffle_v2p0_v3p0__0_0() {2592; GFX9-LABEL: s_shuffle_v2p0_v3p0__0_0:2593; GFX9:       ; %bb.0:2594; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2595; GFX9-NEXT:    ;;#ASMSTART2596; GFX9-NEXT:    ; def s[8:13]2597; GFX9-NEXT:    ;;#ASMEND2598; GFX9-NEXT:    s_mov_b32 s10, s82599; GFX9-NEXT:    s_mov_b32 s11, s92600; GFX9-NEXT:    ;;#ASMSTART2601; GFX9-NEXT:    ; use s[8:11]2602; GFX9-NEXT:    ;;#ASMEND2603; GFX9-NEXT:    s_setpc_b64 s[30:31]2604  %vec0 = call <3 x ptr> asm "; def $0", "=s"()2605  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> zeroinitializer2606  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2607  ret void2608}2609 2610define void @s_shuffle_v2p0_v3p0__1_0() {2611; GFX900-LABEL: s_shuffle_v2p0_v3p0__1_0:2612; GFX900:       ; %bb.0:2613; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2614; GFX900-NEXT:    ;;#ASMSTART2615; GFX900-NEXT:    ; def s[4:9]2616; GFX900-NEXT:    ;;#ASMEND2617; GFX900-NEXT:    s_mov_b32 s8, s62618; GFX900-NEXT:    s_mov_b32 s9, s72619; GFX900-NEXT:    s_mov_b32 s10, s42620; GFX900-NEXT:    s_mov_b32 s11, s52621; GFX900-NEXT:    ;;#ASMSTART2622; GFX900-NEXT:    ; use s[8:11]2623; GFX900-NEXT:    ;;#ASMEND2624; GFX900-NEXT:    s_setpc_b64 s[30:31]2625;2626; GFX90A-LABEL: s_shuffle_v2p0_v3p0__1_0:2627; GFX90A:       ; %bb.0:2628; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2629; GFX90A-NEXT:    ;;#ASMSTART2630; GFX90A-NEXT:    ; def s[4:9]2631; GFX90A-NEXT:    ;;#ASMEND2632; GFX90A-NEXT:    s_mov_b32 s8, s62633; GFX90A-NEXT:    s_mov_b32 s9, s72634; GFX90A-NEXT:    s_mov_b32 s10, s42635; GFX90A-NEXT:    s_mov_b32 s11, s52636; GFX90A-NEXT:    ;;#ASMSTART2637; GFX90A-NEXT:    ; use s[8:11]2638; GFX90A-NEXT:    ;;#ASMEND2639; GFX90A-NEXT:    s_setpc_b64 s[30:31]2640;2641; GFX942-LABEL: s_shuffle_v2p0_v3p0__1_0:2642; GFX942:       ; %bb.0:2643; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2644; GFX942-NEXT:    ;;#ASMSTART2645; GFX942-NEXT:    ; def s[0:5]2646; GFX942-NEXT:    ;;#ASMEND2647; GFX942-NEXT:    s_mov_b32 s8, s22648; GFX942-NEXT:    s_mov_b32 s9, s32649; GFX942-NEXT:    s_mov_b32 s10, s02650; GFX942-NEXT:    s_mov_b32 s11, s12651; GFX942-NEXT:    ;;#ASMSTART2652; GFX942-NEXT:    ; use s[8:11]2653; GFX942-NEXT:    ;;#ASMEND2654; GFX942-NEXT:    s_setpc_b64 s[30:31]2655  %vec0 = call <3 x ptr> asm "; def $0", "=s"()2656  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 0>2657  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2658  ret void2659}2660 2661define void @s_shuffle_v2p0_v3p0__2_0() {2662; GFX9-LABEL: s_shuffle_v2p0_v3p0__2_0:2663; GFX9:       ; %bb.0:2664; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2665; GFX9-NEXT:    ;;#ASMSTART2666; GFX9-NEXT:    ; def s[4:9]2667; GFX9-NEXT:    ;;#ASMEND2668; GFX9-NEXT:    s_mov_b32 s10, s42669; GFX9-NEXT:    s_mov_b32 s11, s52670; GFX9-NEXT:    ;;#ASMSTART2671; GFX9-NEXT:    ; use s[8:11]2672; GFX9-NEXT:    ;;#ASMEND2673; GFX9-NEXT:    s_setpc_b64 s[30:31]2674  %vec0 = call <3 x ptr> asm "; def $0", "=s"()2675  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 0>2676  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2677  ret void2678}2679 2680define void @s_shuffle_v2p0_v3p0__3_0() {2681; GFX900-LABEL: s_shuffle_v2p0_v3p0__3_0:2682; GFX900:       ; %bb.0:2683; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2684; GFX900-NEXT:    ;;#ASMSTART2685; GFX900-NEXT:    ; def s[4:9]2686; GFX900-NEXT:    ;;#ASMEND2687; GFX900-NEXT:    s_mov_b32 s10, s42688; GFX900-NEXT:    s_mov_b32 s11, s52689; GFX900-NEXT:    ;;#ASMSTART2690; GFX900-NEXT:    ; use s[8:11]2691; GFX900-NEXT:    ;;#ASMEND2692; GFX900-NEXT:    s_setpc_b64 s[30:31]2693;2694; GFX90A-LABEL: s_shuffle_v2p0_v3p0__3_0:2695; GFX90A:       ; %bb.0:2696; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2697; GFX90A-NEXT:    ;;#ASMSTART2698; GFX90A-NEXT:    ; def s[4:9]2699; GFX90A-NEXT:    ;;#ASMEND2700; GFX90A-NEXT:    s_mov_b32 s10, s42701; GFX90A-NEXT:    s_mov_b32 s11, s52702; GFX90A-NEXT:    ;;#ASMSTART2703; GFX90A-NEXT:    ; use s[8:11]2704; GFX90A-NEXT:    ;;#ASMEND2705; GFX90A-NEXT:    s_setpc_b64 s[30:31]2706;2707; GFX942-LABEL: s_shuffle_v2p0_v3p0__3_0:2708; GFX942:       ; %bb.0:2709; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2710; GFX942-NEXT:    ;;#ASMSTART2711; GFX942-NEXT:    ; def s[0:5]2712; GFX942-NEXT:    ;;#ASMEND2713; GFX942-NEXT:    s_mov_b32 s10, s02714; GFX942-NEXT:    s_mov_b32 s11, s12715; GFX942-NEXT:    ;;#ASMSTART2716; GFX942-NEXT:    ; use s[8:11]2717; GFX942-NEXT:    ;;#ASMEND2718; GFX942-NEXT:    s_setpc_b64 s[30:31]2719  %vec0 = call <3 x ptr> asm "; def $0", "=s"()2720  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 0>2721  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2722  ret void2723}2724 2725define void @s_shuffle_v2p0_v3p0__4_0() {2726; GFX900-LABEL: s_shuffle_v2p0_v3p0__4_0:2727; GFX900:       ; %bb.0:2728; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2729; GFX900-NEXT:    ;;#ASMSTART2730; GFX900-NEXT:    ; def s[4:9]2731; GFX900-NEXT:    ;;#ASMEND2732; GFX900-NEXT:    ;;#ASMSTART2733; GFX900-NEXT:    ; def s[8:13]2734; GFX900-NEXT:    ;;#ASMEND2735; GFX900-NEXT:    s_mov_b32 s8, s102736; GFX900-NEXT:    s_mov_b32 s9, s112737; GFX900-NEXT:    s_mov_b32 s10, s42738; GFX900-NEXT:    s_mov_b32 s11, s52739; GFX900-NEXT:    ;;#ASMSTART2740; GFX900-NEXT:    ; use s[8:11]2741; GFX900-NEXT:    ;;#ASMEND2742; GFX900-NEXT:    s_setpc_b64 s[30:31]2743;2744; GFX90A-LABEL: s_shuffle_v2p0_v3p0__4_0:2745; GFX90A:       ; %bb.0:2746; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2747; GFX90A-NEXT:    ;;#ASMSTART2748; GFX90A-NEXT:    ; def s[4:9]2749; GFX90A-NEXT:    ;;#ASMEND2750; GFX90A-NEXT:    ;;#ASMSTART2751; GFX90A-NEXT:    ; def s[8:13]2752; GFX90A-NEXT:    ;;#ASMEND2753; GFX90A-NEXT:    s_mov_b32 s8, s102754; GFX90A-NEXT:    s_mov_b32 s9, s112755; GFX90A-NEXT:    s_mov_b32 s10, s42756; GFX90A-NEXT:    s_mov_b32 s11, s52757; GFX90A-NEXT:    ;;#ASMSTART2758; GFX90A-NEXT:    ; use s[8:11]2759; GFX90A-NEXT:    ;;#ASMEND2760; GFX90A-NEXT:    s_setpc_b64 s[30:31]2761;2762; GFX942-LABEL: s_shuffle_v2p0_v3p0__4_0:2763; GFX942:       ; %bb.0:2764; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2765; GFX942-NEXT:    ;;#ASMSTART2766; GFX942-NEXT:    ; def s[0:5]2767; GFX942-NEXT:    ;;#ASMEND2768; GFX942-NEXT:    s_mov_b32 s10, s02769; GFX942-NEXT:    ;;#ASMSTART2770; GFX942-NEXT:    ; def s[4:9]2771; GFX942-NEXT:    ;;#ASMEND2772; GFX942-NEXT:    s_mov_b32 s8, s62773; GFX942-NEXT:    s_mov_b32 s9, s72774; GFX942-NEXT:    s_mov_b32 s11, s12775; GFX942-NEXT:    ;;#ASMSTART2776; GFX942-NEXT:    ; use s[8:11]2777; GFX942-NEXT:    ;;#ASMEND2778; GFX942-NEXT:    s_setpc_b64 s[30:31]2779  %vec0 = call <3 x ptr> asm "; def $0", "=s"()2780  %vec1 = call <3 x ptr> asm "; def $0", "=s"()2781  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 0>2782  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2783  ret void2784}2785 2786define void @s_shuffle_v2p0_v3p0__u_1() {2787; GFX900-LABEL: s_shuffle_v2p0_v3p0__u_1:2788; GFX900:       ; %bb.0:2789; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2790; GFX900-NEXT:    ;;#ASMSTART2791; GFX900-NEXT:    ; def s[8:13]2792; GFX900-NEXT:    ;;#ASMEND2793; GFX900-NEXT:    ;;#ASMSTART2794; GFX900-NEXT:    ; use s[8:11]2795; GFX900-NEXT:    ;;#ASMEND2796; GFX900-NEXT:    s_setpc_b64 s[30:31]2797;2798; GFX90A-LABEL: s_shuffle_v2p0_v3p0__u_1:2799; GFX90A:       ; %bb.0:2800; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2801; GFX90A-NEXT:    ;;#ASMSTART2802; GFX90A-NEXT:    ; def s[8:13]2803; GFX90A-NEXT:    ;;#ASMEND2804; GFX90A-NEXT:    ;;#ASMSTART2805; GFX90A-NEXT:    ; use s[8:11]2806; GFX90A-NEXT:    ;;#ASMEND2807; GFX90A-NEXT:    s_setpc_b64 s[30:31]2808;2809; GFX942-LABEL: s_shuffle_v2p0_v3p0__u_1:2810; GFX942:       ; %bb.0:2811; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2812; GFX942-NEXT:    ;;#ASMSTART2813; GFX942-NEXT:    ; def s[8:13]2814; GFX942-NEXT:    ;;#ASMEND2815; GFX942-NEXT:    s_nop 02816; GFX942-NEXT:    ;;#ASMSTART2817; GFX942-NEXT:    ; use s[8:11]2818; GFX942-NEXT:    ;;#ASMEND2819; GFX942-NEXT:    s_setpc_b64 s[30:31]2820  %vec0 = call <3 x ptr> asm "; def $0", "=s"()2821  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 1>2822  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2823  ret void2824}2825 2826define void @s_shuffle_v2p0_v3p0__0_1() {2827; GFX900-LABEL: s_shuffle_v2p0_v3p0__0_1:2828; GFX900:       ; %bb.0:2829; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2830; GFX900-NEXT:    ;;#ASMSTART2831; GFX900-NEXT:    ; def s[8:13]2832; GFX900-NEXT:    ;;#ASMEND2833; GFX900-NEXT:    ;;#ASMSTART2834; GFX900-NEXT:    ; use s[8:11]2835; GFX900-NEXT:    ;;#ASMEND2836; GFX900-NEXT:    s_setpc_b64 s[30:31]2837;2838; GFX90A-LABEL: s_shuffle_v2p0_v3p0__0_1:2839; GFX90A:       ; %bb.0:2840; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2841; GFX90A-NEXT:    ;;#ASMSTART2842; GFX90A-NEXT:    ; def s[8:13]2843; GFX90A-NEXT:    ;;#ASMEND2844; GFX90A-NEXT:    ;;#ASMSTART2845; GFX90A-NEXT:    ; use s[8:11]2846; GFX90A-NEXT:    ;;#ASMEND2847; GFX90A-NEXT:    s_setpc_b64 s[30:31]2848;2849; GFX942-LABEL: s_shuffle_v2p0_v3p0__0_1:2850; GFX942:       ; %bb.0:2851; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2852; GFX942-NEXT:    ;;#ASMSTART2853; GFX942-NEXT:    ; def s[8:13]2854; GFX942-NEXT:    ;;#ASMEND2855; GFX942-NEXT:    s_nop 02856; GFX942-NEXT:    ;;#ASMSTART2857; GFX942-NEXT:    ; use s[8:11]2858; GFX942-NEXT:    ;;#ASMEND2859; GFX942-NEXT:    s_setpc_b64 s[30:31]2860  %vec0 = call <3 x ptr> asm "; def $0", "=s"()2861  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 1>2862  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2863  ret void2864}2865 2866define void @s_shuffle_v2p0_v3p0__1_1() {2867; GFX9-LABEL: s_shuffle_v2p0_v3p0__1_1:2868; GFX9:       ; %bb.0:2869; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2870; GFX9-NEXT:    ;;#ASMSTART2871; GFX9-NEXT:    ; def s[8:13]2872; GFX9-NEXT:    ;;#ASMEND2873; GFX9-NEXT:    s_mov_b32 s8, s102874; GFX9-NEXT:    s_mov_b32 s9, s112875; GFX9-NEXT:    ;;#ASMSTART2876; GFX9-NEXT:    ; use s[8:11]2877; GFX9-NEXT:    ;;#ASMEND2878; GFX9-NEXT:    s_setpc_b64 s[30:31]2879  %vec0 = call <3 x ptr> asm "; def $0", "=s"()2880  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 1>2881  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2882  ret void2883}2884 2885define void @s_shuffle_v2p0_v3p0__2_1() {2886; GFX9-LABEL: s_shuffle_v2p0_v3p0__2_1:2887; GFX9:       ; %bb.0:2888; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2889; GFX9-NEXT:    ;;#ASMSTART2890; GFX9-NEXT:    ; def s[4:9]2891; GFX9-NEXT:    ;;#ASMEND2892; GFX9-NEXT:    s_mov_b32 s10, s62893; GFX9-NEXT:    s_mov_b32 s11, s72894; GFX9-NEXT:    ;;#ASMSTART2895; GFX9-NEXT:    ; use s[8:11]2896; GFX9-NEXT:    ;;#ASMEND2897; GFX9-NEXT:    s_setpc_b64 s[30:31]2898  %vec0 = call <3 x ptr> asm "; def $0", "=s"()2899  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 1>2900  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2901  ret void2902}2903 2904define void @s_shuffle_v2p0_v3p0__3_1() {2905; GFX900-LABEL: s_shuffle_v2p0_v3p0__3_1:2906; GFX900:       ; %bb.0:2907; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2908; GFX900-NEXT:    ;;#ASMSTART2909; GFX900-NEXT:    ; def s[8:13]2910; GFX900-NEXT:    ;;#ASMEND2911; GFX900-NEXT:    ;;#ASMSTART2912; GFX900-NEXT:    ; use s[8:11]2913; GFX900-NEXT:    ;;#ASMEND2914; GFX900-NEXT:    s_setpc_b64 s[30:31]2915;2916; GFX90A-LABEL: s_shuffle_v2p0_v3p0__3_1:2917; GFX90A:       ; %bb.0:2918; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2919; GFX90A-NEXT:    ;;#ASMSTART2920; GFX90A-NEXT:    ; def s[8:13]2921; GFX90A-NEXT:    ;;#ASMEND2922; GFX90A-NEXT:    ;;#ASMSTART2923; GFX90A-NEXT:    ; use s[8:11]2924; GFX90A-NEXT:    ;;#ASMEND2925; GFX90A-NEXT:    s_setpc_b64 s[30:31]2926;2927; GFX942-LABEL: s_shuffle_v2p0_v3p0__3_1:2928; GFX942:       ; %bb.0:2929; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2930; GFX942-NEXT:    ;;#ASMSTART2931; GFX942-NEXT:    ; def s[8:13]2932; GFX942-NEXT:    ;;#ASMEND2933; GFX942-NEXT:    s_nop 02934; GFX942-NEXT:    ;;#ASMSTART2935; GFX942-NEXT:    ; use s[8:11]2936; GFX942-NEXT:    ;;#ASMEND2937; GFX942-NEXT:    s_setpc_b64 s[30:31]2938  %vec0 = call <3 x ptr> asm "; def $0", "=s"()2939  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 1>2940  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2941  ret void2942}2943 2944define void @s_shuffle_v2p0_v3p0__4_1() {2945; GFX900-LABEL: s_shuffle_v2p0_v3p0__4_1:2946; GFX900:       ; %bb.0:2947; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2948; GFX900-NEXT:    ;;#ASMSTART2949; GFX900-NEXT:    ; def s[8:13]2950; GFX900-NEXT:    ;;#ASMEND2951; GFX900-NEXT:    ;;#ASMSTART2952; GFX900-NEXT:    ; def s[4:9]2953; GFX900-NEXT:    ;;#ASMEND2954; GFX900-NEXT:    s_mov_b32 s8, s62955; GFX900-NEXT:    s_mov_b32 s9, s72956; GFX900-NEXT:    ;;#ASMSTART2957; GFX900-NEXT:    ; use s[8:11]2958; GFX900-NEXT:    ;;#ASMEND2959; GFX900-NEXT:    s_setpc_b64 s[30:31]2960;2961; GFX90A-LABEL: s_shuffle_v2p0_v3p0__4_1:2962; GFX90A:       ; %bb.0:2963; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2964; GFX90A-NEXT:    ;;#ASMSTART2965; GFX90A-NEXT:    ; def s[8:13]2966; GFX90A-NEXT:    ;;#ASMEND2967; GFX90A-NEXT:    ;;#ASMSTART2968; GFX90A-NEXT:    ; def s[4:9]2969; GFX90A-NEXT:    ;;#ASMEND2970; GFX90A-NEXT:    s_mov_b32 s8, s62971; GFX90A-NEXT:    s_mov_b32 s9, s72972; GFX90A-NEXT:    ;;#ASMSTART2973; GFX90A-NEXT:    ; use s[8:11]2974; GFX90A-NEXT:    ;;#ASMEND2975; GFX90A-NEXT:    s_setpc_b64 s[30:31]2976;2977; GFX942-LABEL: s_shuffle_v2p0_v3p0__4_1:2978; GFX942:       ; %bb.0:2979; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2980; GFX942-NEXT:    ;;#ASMSTART2981; GFX942-NEXT:    ; def s[8:13]2982; GFX942-NEXT:    ;;#ASMEND2983; GFX942-NEXT:    ;;#ASMSTART2984; GFX942-NEXT:    ; def s[0:5]2985; GFX942-NEXT:    ;;#ASMEND2986; GFX942-NEXT:    s_mov_b32 s8, s22987; GFX942-NEXT:    s_mov_b32 s9, s32988; GFX942-NEXT:    ;;#ASMSTART2989; GFX942-NEXT:    ; use s[8:11]2990; GFX942-NEXT:    ;;#ASMEND2991; GFX942-NEXT:    s_setpc_b64 s[30:31]2992  %vec0 = call <3 x ptr> asm "; def $0", "=s"()2993  %vec1 = call <3 x ptr> asm "; def $0", "=s"()2994  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 1>2995  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)2996  ret void2997}2998 2999define void @s_shuffle_v2p0_v3p0__u_2() {3000; GFX900-LABEL: s_shuffle_v2p0_v3p0__u_2:3001; GFX900:       ; %bb.0:3002; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3003; GFX900-NEXT:    ;;#ASMSTART3004; GFX900-NEXT:    ; def s[4:9]3005; GFX900-NEXT:    ;;#ASMEND3006; GFX900-NEXT:    s_mov_b32 s10, s83007; GFX900-NEXT:    s_mov_b32 s11, s93008; GFX900-NEXT:    ;;#ASMSTART3009; GFX900-NEXT:    ; use s[8:11]3010; GFX900-NEXT:    ;;#ASMEND3011; GFX900-NEXT:    s_setpc_b64 s[30:31]3012;3013; GFX90A-LABEL: s_shuffle_v2p0_v3p0__u_2:3014; GFX90A:       ; %bb.0:3015; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3016; GFX90A-NEXT:    ;;#ASMSTART3017; GFX90A-NEXT:    ; def s[4:9]3018; GFX90A-NEXT:    ;;#ASMEND3019; GFX90A-NEXT:    s_mov_b32 s10, s83020; GFX90A-NEXT:    s_mov_b32 s11, s93021; GFX90A-NEXT:    ;;#ASMSTART3022; GFX90A-NEXT:    ; use s[8:11]3023; GFX90A-NEXT:    ;;#ASMEND3024; GFX90A-NEXT:    s_setpc_b64 s[30:31]3025;3026; GFX942-LABEL: s_shuffle_v2p0_v3p0__u_2:3027; GFX942:       ; %bb.0:3028; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3029; GFX942-NEXT:    ;;#ASMSTART3030; GFX942-NEXT:    ; def s[0:5]3031; GFX942-NEXT:    ;;#ASMEND3032; GFX942-NEXT:    s_mov_b32 s10, s43033; GFX942-NEXT:    s_mov_b32 s11, s53034; GFX942-NEXT:    ;;#ASMSTART3035; GFX942-NEXT:    ; use s[8:11]3036; GFX942-NEXT:    ;;#ASMEND3037; GFX942-NEXT:    s_setpc_b64 s[30:31]3038  %vec0 = call <3 x ptr> asm "; def $0", "=s"()3039  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 2>3040  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3041  ret void3042}3043 3044define void @s_shuffle_v2p0_v3p0__0_2() {3045; GFX9-LABEL: s_shuffle_v2p0_v3p0__0_2:3046; GFX9:       ; %bb.0:3047; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3048; GFX9-NEXT:    ;;#ASMSTART3049; GFX9-NEXT:    ; def s[8:13]3050; GFX9-NEXT:    ;;#ASMEND3051; GFX9-NEXT:    s_mov_b32 s10, s123052; GFX9-NEXT:    s_mov_b32 s11, s133053; GFX9-NEXT:    ;;#ASMSTART3054; GFX9-NEXT:    ; use s[8:11]3055; GFX9-NEXT:    ;;#ASMEND3056; GFX9-NEXT:    s_setpc_b64 s[30:31]3057  %vec0 = call <3 x ptr> asm "; def $0", "=s"()3058  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 2>3059  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3060  ret void3061}3062 3063define void @s_shuffle_v2p0_v3p0__1_2() {3064; GFX900-LABEL: s_shuffle_v2p0_v3p0__1_2:3065; GFX900:       ; %bb.0:3066; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3067; GFX900-NEXT:    ;;#ASMSTART3068; GFX900-NEXT:    ; def s[8:13]3069; GFX900-NEXT:    ;;#ASMEND3070; GFX900-NEXT:    s_mov_b32 s8, s103071; GFX900-NEXT:    s_mov_b32 s9, s113072; GFX900-NEXT:    s_mov_b32 s10, s123073; GFX900-NEXT:    s_mov_b32 s11, s133074; GFX900-NEXT:    ;;#ASMSTART3075; GFX900-NEXT:    ; use s[8:11]3076; GFX900-NEXT:    ;;#ASMEND3077; GFX900-NEXT:    s_setpc_b64 s[30:31]3078;3079; GFX90A-LABEL: s_shuffle_v2p0_v3p0__1_2:3080; GFX90A:       ; %bb.0:3081; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3082; GFX90A-NEXT:    ;;#ASMSTART3083; GFX90A-NEXT:    ; def s[8:13]3084; GFX90A-NEXT:    ;;#ASMEND3085; GFX90A-NEXT:    s_mov_b32 s8, s103086; GFX90A-NEXT:    s_mov_b32 s9, s113087; GFX90A-NEXT:    s_mov_b32 s10, s123088; GFX90A-NEXT:    s_mov_b32 s11, s133089; GFX90A-NEXT:    ;;#ASMSTART3090; GFX90A-NEXT:    ; use s[8:11]3091; GFX90A-NEXT:    ;;#ASMEND3092; GFX90A-NEXT:    s_setpc_b64 s[30:31]3093;3094; GFX942-LABEL: s_shuffle_v2p0_v3p0__1_2:3095; GFX942:       ; %bb.0:3096; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3097; GFX942-NEXT:    ;;#ASMSTART3098; GFX942-NEXT:    ; def s[0:5]3099; GFX942-NEXT:    ;;#ASMEND3100; GFX942-NEXT:    s_mov_b32 s8, s23101; GFX942-NEXT:    s_mov_b32 s9, s33102; GFX942-NEXT:    s_mov_b32 s10, s43103; GFX942-NEXT:    s_mov_b32 s11, s53104; GFX942-NEXT:    ;;#ASMSTART3105; GFX942-NEXT:    ; use s[8:11]3106; GFX942-NEXT:    ;;#ASMEND3107; GFX942-NEXT:    s_setpc_b64 s[30:31]3108  %vec0 = call <3 x ptr> asm "; def $0", "=s"()3109  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 2>3110  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3111  ret void3112}3113 3114define void @s_shuffle_v2p0_v3p0__2_2() {3115; GFX9-LABEL: s_shuffle_v2p0_v3p0__2_2:3116; GFX9:       ; %bb.0:3117; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3118; GFX9-NEXT:    ;;#ASMSTART3119; GFX9-NEXT:    ; def s[4:9]3120; GFX9-NEXT:    ;;#ASMEND3121; GFX9-NEXT:    s_mov_b32 s10, s83122; GFX9-NEXT:    s_mov_b32 s11, s93123; GFX9-NEXT:    ;;#ASMSTART3124; GFX9-NEXT:    ; use s[8:11]3125; GFX9-NEXT:    ;;#ASMEND3126; GFX9-NEXT:    s_setpc_b64 s[30:31]3127  %vec0 = call <3 x ptr> asm "; def $0", "=s"()3128  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 2>3129  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3130  ret void3131}3132 3133define void @s_shuffle_v2p0_v3p0__3_2() {3134; GFX900-LABEL: s_shuffle_v2p0_v3p0__3_2:3135; GFX900:       ; %bb.0:3136; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3137; GFX900-NEXT:    ;;#ASMSTART3138; GFX900-NEXT:    ; def s[4:9]3139; GFX900-NEXT:    ;;#ASMEND3140; GFX900-NEXT:    s_mov_b32 s10, s83141; GFX900-NEXT:    s_mov_b32 s11, s93142; GFX900-NEXT:    ;;#ASMSTART3143; GFX900-NEXT:    ; use s[8:11]3144; GFX900-NEXT:    ;;#ASMEND3145; GFX900-NEXT:    s_setpc_b64 s[30:31]3146;3147; GFX90A-LABEL: s_shuffle_v2p0_v3p0__3_2:3148; GFX90A:       ; %bb.0:3149; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3150; GFX90A-NEXT:    ;;#ASMSTART3151; GFX90A-NEXT:    ; def s[4:9]3152; GFX90A-NEXT:    ;;#ASMEND3153; GFX90A-NEXT:    s_mov_b32 s10, s83154; GFX90A-NEXT:    s_mov_b32 s11, s93155; GFX90A-NEXT:    ;;#ASMSTART3156; GFX90A-NEXT:    ; use s[8:11]3157; GFX90A-NEXT:    ;;#ASMEND3158; GFX90A-NEXT:    s_setpc_b64 s[30:31]3159;3160; GFX942-LABEL: s_shuffle_v2p0_v3p0__3_2:3161; GFX942:       ; %bb.0:3162; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3163; GFX942-NEXT:    ;;#ASMSTART3164; GFX942-NEXT:    ; def s[0:5]3165; GFX942-NEXT:    ;;#ASMEND3166; GFX942-NEXT:    s_mov_b32 s10, s43167; GFX942-NEXT:    s_mov_b32 s11, s53168; GFX942-NEXT:    ;;#ASMSTART3169; GFX942-NEXT:    ; use s[8:11]3170; GFX942-NEXT:    ;;#ASMEND3171; GFX942-NEXT:    s_setpc_b64 s[30:31]3172  %vec0 = call <3 x ptr> asm "; def $0", "=s"()3173  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 2>3174  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3175  ret void3176}3177 3178define void @s_shuffle_v2p0_v3p0__4_2() {3179; GFX900-LABEL: s_shuffle_v2p0_v3p0__4_2:3180; GFX900:       ; %bb.0:3181; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3182; GFX900-NEXT:    ;;#ASMSTART3183; GFX900-NEXT:    ; def s[8:13]3184; GFX900-NEXT:    ;;#ASMEND3185; GFX900-NEXT:    ;;#ASMSTART3186; GFX900-NEXT:    ; def s[4:9]3187; GFX900-NEXT:    ;;#ASMEND3188; GFX900-NEXT:    s_mov_b32 s8, s63189; GFX900-NEXT:    s_mov_b32 s9, s73190; GFX900-NEXT:    s_mov_b32 s10, s123191; GFX900-NEXT:    s_mov_b32 s11, s133192; GFX900-NEXT:    ;;#ASMSTART3193; GFX900-NEXT:    ; use s[8:11]3194; GFX900-NEXT:    ;;#ASMEND3195; GFX900-NEXT:    s_setpc_b64 s[30:31]3196;3197; GFX90A-LABEL: s_shuffle_v2p0_v3p0__4_2:3198; GFX90A:       ; %bb.0:3199; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3200; GFX90A-NEXT:    ;;#ASMSTART3201; GFX90A-NEXT:    ; def s[8:13]3202; GFX90A-NEXT:    ;;#ASMEND3203; GFX90A-NEXT:    ;;#ASMSTART3204; GFX90A-NEXT:    ; def s[4:9]3205; GFX90A-NEXT:    ;;#ASMEND3206; GFX90A-NEXT:    s_mov_b32 s8, s63207; GFX90A-NEXT:    s_mov_b32 s9, s73208; GFX90A-NEXT:    s_mov_b32 s10, s123209; GFX90A-NEXT:    s_mov_b32 s11, s133210; GFX90A-NEXT:    ;;#ASMSTART3211; GFX90A-NEXT:    ; use s[8:11]3212; GFX90A-NEXT:    ;;#ASMEND3213; GFX90A-NEXT:    s_setpc_b64 s[30:31]3214;3215; GFX942-LABEL: s_shuffle_v2p0_v3p0__4_2:3216; GFX942:       ; %bb.0:3217; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3218; GFX942-NEXT:    ;;#ASMSTART3219; GFX942-NEXT:    ; def s[8:13]3220; GFX942-NEXT:    ;;#ASMEND3221; GFX942-NEXT:    ;;#ASMSTART3222; GFX942-NEXT:    ; def s[0:5]3223; GFX942-NEXT:    ;;#ASMEND3224; GFX942-NEXT:    s_mov_b32 s8, s103225; GFX942-NEXT:    s_mov_b32 s9, s113226; GFX942-NEXT:    s_mov_b32 s10, s43227; GFX942-NEXT:    s_mov_b32 s11, s53228; GFX942-NEXT:    ;;#ASMSTART3229; GFX942-NEXT:    ; use s[8:11]3230; GFX942-NEXT:    ;;#ASMEND3231; GFX942-NEXT:    s_setpc_b64 s[30:31]3232  %vec0 = call <3 x ptr> asm "; def $0", "=s"()3233  %vec1 = call <3 x ptr> asm "; def $0", "=s"()3234  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 2>3235  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3236  ret void3237}3238 3239define void @s_shuffle_v2p0_v3p0__u_3() {3240; GFX9-LABEL: s_shuffle_v2p0_v3p0__u_3:3241; GFX9:       ; %bb.0:3242; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3243; GFX9-NEXT:    ;;#ASMSTART3244; GFX9-NEXT:    ; use s[8:11]3245; GFX9-NEXT:    ;;#ASMEND3246; GFX9-NEXT:    s_setpc_b64 s[30:31]3247  %vec0 = call <3 x ptr> asm "; def $0", "=s"()3248  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 poison, i32 3>3249  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3250  ret void3251}3252 3253define void @s_shuffle_v2p0_v3p0__0_3() {3254; GFX900-LABEL: s_shuffle_v2p0_v3p0__0_3:3255; GFX900:       ; %bb.0:3256; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3257; GFX900-NEXT:    ;;#ASMSTART3258; GFX900-NEXT:    ; def s[8:13]3259; GFX900-NEXT:    ;;#ASMEND3260; GFX900-NEXT:    ;;#ASMSTART3261; GFX900-NEXT:    ; use s[8:11]3262; GFX900-NEXT:    ;;#ASMEND3263; GFX900-NEXT:    s_setpc_b64 s[30:31]3264;3265; GFX90A-LABEL: s_shuffle_v2p0_v3p0__0_3:3266; GFX90A:       ; %bb.0:3267; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3268; GFX90A-NEXT:    ;;#ASMSTART3269; GFX90A-NEXT:    ; def s[8:13]3270; GFX90A-NEXT:    ;;#ASMEND3271; GFX90A-NEXT:    ;;#ASMSTART3272; GFX90A-NEXT:    ; use s[8:11]3273; GFX90A-NEXT:    ;;#ASMEND3274; GFX90A-NEXT:    s_setpc_b64 s[30:31]3275;3276; GFX942-LABEL: s_shuffle_v2p0_v3p0__0_3:3277; GFX942:       ; %bb.0:3278; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3279; GFX942-NEXT:    ;;#ASMSTART3280; GFX942-NEXT:    ; def s[8:13]3281; GFX942-NEXT:    ;;#ASMEND3282; GFX942-NEXT:    s_nop 03283; GFX942-NEXT:    ;;#ASMSTART3284; GFX942-NEXT:    ; use s[8:11]3285; GFX942-NEXT:    ;;#ASMEND3286; GFX942-NEXT:    s_setpc_b64 s[30:31]3287  %vec0 = call <3 x ptr> asm "; def $0", "=s"()3288  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 0, i32 3>3289  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3290  ret void3291}3292 3293define void @s_shuffle_v2p0_v3p0__1_3() {3294; GFX900-LABEL: s_shuffle_v2p0_v3p0__1_3:3295; GFX900:       ; %bb.0:3296; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3297; GFX900-NEXT:    ;;#ASMSTART3298; GFX900-NEXT:    ; def s[4:9]3299; GFX900-NEXT:    ;;#ASMEND3300; GFX900-NEXT:    s_mov_b32 s8, s63301; GFX900-NEXT:    s_mov_b32 s9, s73302; GFX900-NEXT:    ;;#ASMSTART3303; GFX900-NEXT:    ; use s[8:11]3304; GFX900-NEXT:    ;;#ASMEND3305; GFX900-NEXT:    s_setpc_b64 s[30:31]3306;3307; GFX90A-LABEL: s_shuffle_v2p0_v3p0__1_3:3308; GFX90A:       ; %bb.0:3309; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3310; GFX90A-NEXT:    ;;#ASMSTART3311; GFX90A-NEXT:    ; def s[4:9]3312; GFX90A-NEXT:    ;;#ASMEND3313; GFX90A-NEXT:    s_mov_b32 s8, s63314; GFX90A-NEXT:    s_mov_b32 s9, s73315; GFX90A-NEXT:    ;;#ASMSTART3316; GFX90A-NEXT:    ; use s[8:11]3317; GFX90A-NEXT:    ;;#ASMEND3318; GFX90A-NEXT:    s_setpc_b64 s[30:31]3319;3320; GFX942-LABEL: s_shuffle_v2p0_v3p0__1_3:3321; GFX942:       ; %bb.0:3322; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3323; GFX942-NEXT:    ;;#ASMSTART3324; GFX942-NEXT:    ; def s[0:5]3325; GFX942-NEXT:    ;;#ASMEND3326; GFX942-NEXT:    s_mov_b32 s8, s23327; GFX942-NEXT:    s_mov_b32 s9, s33328; GFX942-NEXT:    ;;#ASMSTART3329; GFX942-NEXT:    ; use s[8:11]3330; GFX942-NEXT:    ;;#ASMEND3331; GFX942-NEXT:    s_setpc_b64 s[30:31]3332  %vec0 = call <3 x ptr> asm "; def $0", "=s"()3333  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 1, i32 3>3334  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3335  ret void3336}3337 3338define void @s_shuffle_v2p0_v3p0__2_3() {3339; GFX900-LABEL: s_shuffle_v2p0_v3p0__2_3:3340; GFX900:       ; %bb.0:3341; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3342; GFX900-NEXT:    ;;#ASMSTART3343; GFX900-NEXT:    ; def s[4:9]3344; GFX900-NEXT:    ;;#ASMEND3345; GFX900-NEXT:    ;;#ASMSTART3346; GFX900-NEXT:    ; use s[8:11]3347; GFX900-NEXT:    ;;#ASMEND3348; GFX900-NEXT:    s_setpc_b64 s[30:31]3349;3350; GFX90A-LABEL: s_shuffle_v2p0_v3p0__2_3:3351; GFX90A:       ; %bb.0:3352; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3353; GFX90A-NEXT:    ;;#ASMSTART3354; GFX90A-NEXT:    ; def s[4:9]3355; GFX90A-NEXT:    ;;#ASMEND3356; GFX90A-NEXT:    ;;#ASMSTART3357; GFX90A-NEXT:    ; use s[8:11]3358; GFX90A-NEXT:    ;;#ASMEND3359; GFX90A-NEXT:    s_setpc_b64 s[30:31]3360;3361; GFX942-LABEL: s_shuffle_v2p0_v3p0__2_3:3362; GFX942:       ; %bb.0:3363; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3364; GFX942-NEXT:    ;;#ASMSTART3365; GFX942-NEXT:    ; def s[4:9]3366; GFX942-NEXT:    ;;#ASMEND3367; GFX942-NEXT:    s_nop 03368; GFX942-NEXT:    ;;#ASMSTART3369; GFX942-NEXT:    ; use s[8:11]3370; GFX942-NEXT:    ;;#ASMEND3371; GFX942-NEXT:    s_setpc_b64 s[30:31]3372  %vec0 = call <3 x ptr> asm "; def $0", "=s"()3373  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 2, i32 3>3374  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3375  ret void3376}3377 3378define void @s_shuffle_v2p0_v3p0__3_3() {3379; GFX9-LABEL: s_shuffle_v2p0_v3p0__3_3:3380; GFX9:       ; %bb.0:3381; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3382; GFX9-NEXT:    ;;#ASMSTART3383; GFX9-NEXT:    ; use s[8:11]3384; GFX9-NEXT:    ;;#ASMEND3385; GFX9-NEXT:    s_setpc_b64 s[30:31]3386  %vec0 = call <3 x ptr> asm "; def $0", "=s"()3387  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <2 x i32> <i32 3, i32 3>3388  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3389  ret void3390}3391 3392define void @s_shuffle_v2p0_v3p0__4_3() {3393; GFX900-LABEL: s_shuffle_v2p0_v3p0__4_3:3394; GFX900:       ; %bb.0:3395; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3396; GFX900-NEXT:    ;;#ASMSTART3397; GFX900-NEXT:    ; def s[4:9]3398; GFX900-NEXT:    ;;#ASMEND3399; GFX900-NEXT:    s_mov_b32 s8, s63400; GFX900-NEXT:    s_mov_b32 s9, s73401; GFX900-NEXT:    s_mov_b32 s10, s43402; GFX900-NEXT:    s_mov_b32 s11, s53403; GFX900-NEXT:    ;;#ASMSTART3404; GFX900-NEXT:    ; use s[8:11]3405; GFX900-NEXT:    ;;#ASMEND3406; GFX900-NEXT:    s_setpc_b64 s[30:31]3407;3408; GFX90A-LABEL: s_shuffle_v2p0_v3p0__4_3:3409; GFX90A:       ; %bb.0:3410; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3411; GFX90A-NEXT:    ;;#ASMSTART3412; GFX90A-NEXT:    ; def s[4:9]3413; GFX90A-NEXT:    ;;#ASMEND3414; GFX90A-NEXT:    s_mov_b32 s8, s63415; GFX90A-NEXT:    s_mov_b32 s9, s73416; GFX90A-NEXT:    s_mov_b32 s10, s43417; GFX90A-NEXT:    s_mov_b32 s11, s53418; GFX90A-NEXT:    ;;#ASMSTART3419; GFX90A-NEXT:    ; use s[8:11]3420; GFX90A-NEXT:    ;;#ASMEND3421; GFX90A-NEXT:    s_setpc_b64 s[30:31]3422;3423; GFX942-LABEL: s_shuffle_v2p0_v3p0__4_3:3424; GFX942:       ; %bb.0:3425; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3426; GFX942-NEXT:    ;;#ASMSTART3427; GFX942-NEXT:    ; def s[0:5]3428; GFX942-NEXT:    ;;#ASMEND3429; GFX942-NEXT:    s_mov_b32 s8, s23430; GFX942-NEXT:    s_mov_b32 s9, s33431; GFX942-NEXT:    s_mov_b32 s10, s03432; GFX942-NEXT:    s_mov_b32 s11, s13433; GFX942-NEXT:    ;;#ASMSTART3434; GFX942-NEXT:    ; use s[8:11]3435; GFX942-NEXT:    ;;#ASMEND3436; GFX942-NEXT:    s_setpc_b64 s[30:31]3437  %vec0 = call <3 x ptr> asm "; def $0", "=s"()3438  %vec1 = call <3 x ptr> asm "; def $0", "=s"()3439  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 3>3440  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3441  ret void3442}3443 3444define void @s_shuffle_v2p0_v3p0__u_4() {3445; GFX900-LABEL: s_shuffle_v2p0_v3p0__u_4:3446; GFX900:       ; %bb.0:3447; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3448; GFX900-NEXT:    ;;#ASMSTART3449; GFX900-NEXT:    ; def s[8:13]3450; GFX900-NEXT:    ;;#ASMEND3451; GFX900-NEXT:    ;;#ASMSTART3452; GFX900-NEXT:    ; use s[8:11]3453; GFX900-NEXT:    ;;#ASMEND3454; GFX900-NEXT:    s_setpc_b64 s[30:31]3455;3456; GFX90A-LABEL: s_shuffle_v2p0_v3p0__u_4:3457; GFX90A:       ; %bb.0:3458; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3459; GFX90A-NEXT:    ;;#ASMSTART3460; GFX90A-NEXT:    ; def s[8:13]3461; GFX90A-NEXT:    ;;#ASMEND3462; GFX90A-NEXT:    ;;#ASMSTART3463; GFX90A-NEXT:    ; use s[8:11]3464; GFX90A-NEXT:    ;;#ASMEND3465; GFX90A-NEXT:    s_setpc_b64 s[30:31]3466;3467; GFX942-LABEL: s_shuffle_v2p0_v3p0__u_4:3468; GFX942:       ; %bb.0:3469; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3470; GFX942-NEXT:    ;;#ASMSTART3471; GFX942-NEXT:    ; def s[8:13]3472; GFX942-NEXT:    ;;#ASMEND3473; GFX942-NEXT:    s_nop 03474; GFX942-NEXT:    ;;#ASMSTART3475; GFX942-NEXT:    ; use s[8:11]3476; GFX942-NEXT:    ;;#ASMEND3477; GFX942-NEXT:    s_setpc_b64 s[30:31]3478  %vec0 = call <3 x ptr> asm "; def $0", "=s"()3479  %vec1 = call <3 x ptr> asm "; def $0", "=s"()3480  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 poison, i32 4>3481  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3482  ret void3483}3484 3485define void @s_shuffle_v2p0_v3p0__0_4() {3486; GFX900-LABEL: s_shuffle_v2p0_v3p0__0_4:3487; GFX900:       ; %bb.0:3488; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3489; GFX900-NEXT:    ;;#ASMSTART3490; GFX900-NEXT:    ; def s[8:13]3491; GFX900-NEXT:    ;;#ASMEND3492; GFX900-NEXT:    ;;#ASMSTART3493; GFX900-NEXT:    ; def s[12:17]3494; GFX900-NEXT:    ;;#ASMEND3495; GFX900-NEXT:    s_mov_b32 s10, s143496; GFX900-NEXT:    s_mov_b32 s11, s153497; GFX900-NEXT:    ;;#ASMSTART3498; GFX900-NEXT:    ; use s[8:11]3499; GFX900-NEXT:    ;;#ASMEND3500; GFX900-NEXT:    s_setpc_b64 s[30:31]3501;3502; GFX90A-LABEL: s_shuffle_v2p0_v3p0__0_4:3503; GFX90A:       ; %bb.0:3504; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3505; GFX90A-NEXT:    ;;#ASMSTART3506; GFX90A-NEXT:    ; def s[8:13]3507; GFX90A-NEXT:    ;;#ASMEND3508; GFX90A-NEXT:    ;;#ASMSTART3509; GFX90A-NEXT:    ; def s[12:17]3510; GFX90A-NEXT:    ;;#ASMEND3511; GFX90A-NEXT:    s_mov_b32 s10, s143512; GFX90A-NEXT:    s_mov_b32 s11, s153513; GFX90A-NEXT:    ;;#ASMSTART3514; GFX90A-NEXT:    ; use s[8:11]3515; GFX90A-NEXT:    ;;#ASMEND3516; GFX90A-NEXT:    s_setpc_b64 s[30:31]3517;3518; GFX942-LABEL: s_shuffle_v2p0_v3p0__0_4:3519; GFX942:       ; %bb.0:3520; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3521; GFX942-NEXT:    ;;#ASMSTART3522; GFX942-NEXT:    ; def s[8:13]3523; GFX942-NEXT:    ;;#ASMEND3524; GFX942-NEXT:    ;;#ASMSTART3525; GFX942-NEXT:    ; def s[0:5]3526; GFX942-NEXT:    ;;#ASMEND3527; GFX942-NEXT:    s_mov_b32 s10, s23528; GFX942-NEXT:    s_mov_b32 s11, s33529; GFX942-NEXT:    ;;#ASMSTART3530; GFX942-NEXT:    ; use s[8:11]3531; GFX942-NEXT:    ;;#ASMEND3532; GFX942-NEXT:    s_setpc_b64 s[30:31]3533  %vec0 = call <3 x ptr> asm "; def $0", "=s"()3534  %vec1 = call <3 x ptr> asm "; def $0", "=s"()3535  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 0, i32 4>3536  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3537  ret void3538}3539 3540define void @s_shuffle_v2p0_v3p0__1_4() {3541; GFX900-LABEL: s_shuffle_v2p0_v3p0__1_4:3542; GFX900:       ; %bb.0:3543; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3544; GFX900-NEXT:    ;;#ASMSTART3545; GFX900-NEXT:    ; def s[4:9]3546; GFX900-NEXT:    ;;#ASMEND3547; GFX900-NEXT:    ;;#ASMSTART3548; GFX900-NEXT:    ; def s[8:13]3549; GFX900-NEXT:    ;;#ASMEND3550; GFX900-NEXT:    s_mov_b32 s8, s63551; GFX900-NEXT:    s_mov_b32 s9, s73552; GFX900-NEXT:    ;;#ASMSTART3553; GFX900-NEXT:    ; use s[8:11]3554; GFX900-NEXT:    ;;#ASMEND3555; GFX900-NEXT:    s_setpc_b64 s[30:31]3556;3557; GFX90A-LABEL: s_shuffle_v2p0_v3p0__1_4:3558; GFX90A:       ; %bb.0:3559; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3560; GFX90A-NEXT:    ;;#ASMSTART3561; GFX90A-NEXT:    ; def s[4:9]3562; GFX90A-NEXT:    ;;#ASMEND3563; GFX90A-NEXT:    ;;#ASMSTART3564; GFX90A-NEXT:    ; def s[8:13]3565; GFX90A-NEXT:    ;;#ASMEND3566; GFX90A-NEXT:    s_mov_b32 s8, s63567; GFX90A-NEXT:    s_mov_b32 s9, s73568; GFX90A-NEXT:    ;;#ASMSTART3569; GFX90A-NEXT:    ; use s[8:11]3570; GFX90A-NEXT:    ;;#ASMEND3571; GFX90A-NEXT:    s_setpc_b64 s[30:31]3572;3573; GFX942-LABEL: s_shuffle_v2p0_v3p0__1_4:3574; GFX942:       ; %bb.0:3575; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3576; GFX942-NEXT:    ;;#ASMSTART3577; GFX942-NEXT:    ; def s[8:13]3578; GFX942-NEXT:    ;;#ASMEND3579; GFX942-NEXT:    ;;#ASMSTART3580; GFX942-NEXT:    ; def s[0:5]3581; GFX942-NEXT:    ;;#ASMEND3582; GFX942-NEXT:    s_mov_b32 s8, s23583; GFX942-NEXT:    s_mov_b32 s9, s33584; GFX942-NEXT:    ;;#ASMSTART3585; GFX942-NEXT:    ; use s[8:11]3586; GFX942-NEXT:    ;;#ASMEND3587; GFX942-NEXT:    s_setpc_b64 s[30:31]3588  %vec0 = call <3 x ptr> asm "; def $0", "=s"()3589  %vec1 = call <3 x ptr> asm "; def $0", "=s"()3590  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 1, i32 4>3591  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3592  ret void3593}3594 3595define void @s_shuffle_v2p0_v3p0__2_4() {3596; GFX900-LABEL: s_shuffle_v2p0_v3p0__2_4:3597; GFX900:       ; %bb.0:3598; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3599; GFX900-NEXT:    ;;#ASMSTART3600; GFX900-NEXT:    ; def s[4:9]3601; GFX900-NEXT:    ;;#ASMEND3602; GFX900-NEXT:    ;;#ASMSTART3603; GFX900-NEXT:    ; def s[12:17]3604; GFX900-NEXT:    ;;#ASMEND3605; GFX900-NEXT:    s_mov_b32 s10, s143606; GFX900-NEXT:    s_mov_b32 s11, s153607; GFX900-NEXT:    ;;#ASMSTART3608; GFX900-NEXT:    ; use s[8:11]3609; GFX900-NEXT:    ;;#ASMEND3610; GFX900-NEXT:    s_setpc_b64 s[30:31]3611;3612; GFX90A-LABEL: s_shuffle_v2p0_v3p0__2_4:3613; GFX90A:       ; %bb.0:3614; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3615; GFX90A-NEXT:    ;;#ASMSTART3616; GFX90A-NEXT:    ; def s[4:9]3617; GFX90A-NEXT:    ;;#ASMEND3618; GFX90A-NEXT:    ;;#ASMSTART3619; GFX90A-NEXT:    ; def s[12:17]3620; GFX90A-NEXT:    ;;#ASMEND3621; GFX90A-NEXT:    s_mov_b32 s10, s143622; GFX90A-NEXT:    s_mov_b32 s11, s153623; GFX90A-NEXT:    ;;#ASMSTART3624; GFX90A-NEXT:    ; use s[8:11]3625; GFX90A-NEXT:    ;;#ASMEND3626; GFX90A-NEXT:    s_setpc_b64 s[30:31]3627;3628; GFX942-LABEL: s_shuffle_v2p0_v3p0__2_4:3629; GFX942:       ; %bb.0:3630; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3631; GFX942-NEXT:    ;;#ASMSTART3632; GFX942-NEXT:    ; def s[4:9]3633; GFX942-NEXT:    ;;#ASMEND3634; GFX942-NEXT:    s_nop 03635; GFX942-NEXT:    ;;#ASMSTART3636; GFX942-NEXT:    ; def s[0:5]3637; GFX942-NEXT:    ;;#ASMEND3638; GFX942-NEXT:    s_mov_b32 s10, s23639; GFX942-NEXT:    s_mov_b32 s11, s33640; GFX942-NEXT:    ;;#ASMSTART3641; GFX942-NEXT:    ; use s[8:11]3642; GFX942-NEXT:    ;;#ASMEND3643; GFX942-NEXT:    s_setpc_b64 s[30:31]3644  %vec0 = call <3 x ptr> asm "; def $0", "=s"()3645  %vec1 = call <3 x ptr> asm "; def $0", "=s"()3646  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 2, i32 4>3647  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3648  ret void3649}3650 3651define void @s_shuffle_v2p0_v3p0__3_4() {3652; GFX900-LABEL: s_shuffle_v2p0_v3p0__3_4:3653; GFX900:       ; %bb.0:3654; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3655; GFX900-NEXT:    ;;#ASMSTART3656; GFX900-NEXT:    ; def s[8:13]3657; GFX900-NEXT:    ;;#ASMEND3658; GFX900-NEXT:    ;;#ASMSTART3659; GFX900-NEXT:    ; use s[8:11]3660; GFX900-NEXT:    ;;#ASMEND3661; GFX900-NEXT:    s_setpc_b64 s[30:31]3662;3663; GFX90A-LABEL: s_shuffle_v2p0_v3p0__3_4:3664; GFX90A:       ; %bb.0:3665; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3666; GFX90A-NEXT:    ;;#ASMSTART3667; GFX90A-NEXT:    ; def s[8:13]3668; GFX90A-NEXT:    ;;#ASMEND3669; GFX90A-NEXT:    ;;#ASMSTART3670; GFX90A-NEXT:    ; use s[8:11]3671; GFX90A-NEXT:    ;;#ASMEND3672; GFX90A-NEXT:    s_setpc_b64 s[30:31]3673;3674; GFX942-LABEL: s_shuffle_v2p0_v3p0__3_4:3675; GFX942:       ; %bb.0:3676; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3677; GFX942-NEXT:    ;;#ASMSTART3678; GFX942-NEXT:    ; def s[8:13]3679; GFX942-NEXT:    ;;#ASMEND3680; GFX942-NEXT:    s_nop 03681; GFX942-NEXT:    ;;#ASMSTART3682; GFX942-NEXT:    ; use s[8:11]3683; GFX942-NEXT:    ;;#ASMEND3684; GFX942-NEXT:    s_setpc_b64 s[30:31]3685  %vec0 = call <3 x ptr> asm "; def $0", "=s"()3686  %vec1 = call <3 x ptr> asm "; def $0", "=s"()3687  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 3, i32 4>3688  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3689  ret void3690}3691 3692define void @s_shuffle_v2p0_v3p0__4_4() {3693; GFX9-LABEL: s_shuffle_v2p0_v3p0__4_4:3694; GFX9:       ; %bb.0:3695; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3696; GFX9-NEXT:    ;;#ASMSTART3697; GFX9-NEXT:    ; def s[8:13]3698; GFX9-NEXT:    ;;#ASMEND3699; GFX9-NEXT:    s_mov_b32 s8, s103700; GFX9-NEXT:    s_mov_b32 s9, s113701; GFX9-NEXT:    ;;#ASMSTART3702; GFX9-NEXT:    ; use s[8:11]3703; GFX9-NEXT:    ;;#ASMEND3704; GFX9-NEXT:    s_setpc_b64 s[30:31]3705  %vec0 = call <3 x ptr> asm "; def $0", "=s"()3706  %vec1 = call <3 x ptr> asm "; def $0", "=s"()3707  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 4>3708  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3709  ret void3710}3711 3712define void @s_shuffle_v2p0_v3p0__u_5() {3713; GFX900-LABEL: s_shuffle_v2p0_v3p0__u_5:3714; GFX900:       ; %bb.0:3715; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3716; GFX900-NEXT:    ;;#ASMSTART3717; GFX900-NEXT:    ; def s[4:9]3718; GFX900-NEXT:    ;;#ASMEND3719; GFX900-NEXT:    s_mov_b32 s10, s83720; GFX900-NEXT:    s_mov_b32 s11, s93721; GFX900-NEXT:    ;;#ASMSTART3722; GFX900-NEXT:    ; use s[8:11]3723; GFX900-NEXT:    ;;#ASMEND3724; GFX900-NEXT:    s_setpc_b64 s[30:31]3725;3726; GFX90A-LABEL: s_shuffle_v2p0_v3p0__u_5:3727; GFX90A:       ; %bb.0:3728; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3729; GFX90A-NEXT:    ;;#ASMSTART3730; GFX90A-NEXT:    ; def s[4:9]3731; GFX90A-NEXT:    ;;#ASMEND3732; GFX90A-NEXT:    s_mov_b32 s10, s83733; GFX90A-NEXT:    s_mov_b32 s11, s93734; GFX90A-NEXT:    ;;#ASMSTART3735; GFX90A-NEXT:    ; use s[8:11]3736; GFX90A-NEXT:    ;;#ASMEND3737; GFX90A-NEXT:    s_setpc_b64 s[30:31]3738;3739; GFX942-LABEL: s_shuffle_v2p0_v3p0__u_5:3740; GFX942:       ; %bb.0:3741; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3742; GFX942-NEXT:    ;;#ASMSTART3743; GFX942-NEXT:    ; def s[0:5]3744; GFX942-NEXT:    ;;#ASMEND3745; GFX942-NEXT:    s_mov_b32 s10, s43746; GFX942-NEXT:    s_mov_b32 s11, s53747; GFX942-NEXT:    ;;#ASMSTART3748; GFX942-NEXT:    ; use s[8:11]3749; GFX942-NEXT:    ;;#ASMEND3750; GFX942-NEXT:    s_setpc_b64 s[30:31]3751  %vec0 = call <3 x ptr> asm "; def $0", "=s"()3752  %vec1 = call <3 x ptr> asm "; def $0", "=s"()3753  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 poison, i32 5>3754  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3755  ret void3756}3757 3758define void @s_shuffle_v2p0_v3p0__0_5() {3759; GFX900-LABEL: s_shuffle_v2p0_v3p0__0_5:3760; GFX900:       ; %bb.0:3761; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3762; GFX900-NEXT:    ;;#ASMSTART3763; GFX900-NEXT:    ; def s[8:13]3764; GFX900-NEXT:    ;;#ASMEND3765; GFX900-NEXT:    ;;#ASMSTART3766; GFX900-NEXT:    ; def s[12:17]3767; GFX900-NEXT:    ;;#ASMEND3768; GFX900-NEXT:    s_mov_b32 s10, s163769; GFX900-NEXT:    s_mov_b32 s11, s173770; GFX900-NEXT:    ;;#ASMSTART3771; GFX900-NEXT:    ; use s[8:11]3772; GFX900-NEXT:    ;;#ASMEND3773; GFX900-NEXT:    s_setpc_b64 s[30:31]3774;3775; GFX90A-LABEL: s_shuffle_v2p0_v3p0__0_5:3776; GFX90A:       ; %bb.0:3777; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3778; GFX90A-NEXT:    ;;#ASMSTART3779; GFX90A-NEXT:    ; def s[8:13]3780; GFX90A-NEXT:    ;;#ASMEND3781; GFX90A-NEXT:    ;;#ASMSTART3782; GFX90A-NEXT:    ; def s[12:17]3783; GFX90A-NEXT:    ;;#ASMEND3784; GFX90A-NEXT:    s_mov_b32 s10, s163785; GFX90A-NEXT:    s_mov_b32 s11, s173786; GFX90A-NEXT:    ;;#ASMSTART3787; GFX90A-NEXT:    ; use s[8:11]3788; GFX90A-NEXT:    ;;#ASMEND3789; GFX90A-NEXT:    s_setpc_b64 s[30:31]3790;3791; GFX942-LABEL: s_shuffle_v2p0_v3p0__0_5:3792; GFX942:       ; %bb.0:3793; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3794; GFX942-NEXT:    ;;#ASMSTART3795; GFX942-NEXT:    ; def s[8:13]3796; GFX942-NEXT:    ;;#ASMEND3797; GFX942-NEXT:    ;;#ASMSTART3798; GFX942-NEXT:    ; def s[0:5]3799; GFX942-NEXT:    ;;#ASMEND3800; GFX942-NEXT:    s_mov_b32 s10, s43801; GFX942-NEXT:    s_mov_b32 s11, s53802; GFX942-NEXT:    ;;#ASMSTART3803; GFX942-NEXT:    ; use s[8:11]3804; GFX942-NEXT:    ;;#ASMEND3805; GFX942-NEXT:    s_setpc_b64 s[30:31]3806  %vec0 = call <3 x ptr> asm "; def $0", "=s"()3807  %vec1 = call <3 x ptr> asm "; def $0", "=s"()3808  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 0, i32 5>3809  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3810  ret void3811}3812 3813define void @s_shuffle_v2p0_v3p0__1_5() {3814; GFX900-LABEL: s_shuffle_v2p0_v3p0__1_5:3815; GFX900:       ; %bb.0:3816; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3817; GFX900-NEXT:    ;;#ASMSTART3818; GFX900-NEXT:    ; def s[4:9]3819; GFX900-NEXT:    ;;#ASMEND3820; GFX900-NEXT:    ;;#ASMSTART3821; GFX900-NEXT:    ; def s[8:13]3822; GFX900-NEXT:    ;;#ASMEND3823; GFX900-NEXT:    s_mov_b32 s8, s63824; GFX900-NEXT:    s_mov_b32 s9, s73825; GFX900-NEXT:    s_mov_b32 s10, s123826; GFX900-NEXT:    s_mov_b32 s11, s133827; GFX900-NEXT:    ;;#ASMSTART3828; GFX900-NEXT:    ; use s[8:11]3829; GFX900-NEXT:    ;;#ASMEND3830; GFX900-NEXT:    s_setpc_b64 s[30:31]3831;3832; GFX90A-LABEL: s_shuffle_v2p0_v3p0__1_5:3833; GFX90A:       ; %bb.0:3834; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3835; GFX90A-NEXT:    ;;#ASMSTART3836; GFX90A-NEXT:    ; def s[4:9]3837; GFX90A-NEXT:    ;;#ASMEND3838; GFX90A-NEXT:    ;;#ASMSTART3839; GFX90A-NEXT:    ; def s[8:13]3840; GFX90A-NEXT:    ;;#ASMEND3841; GFX90A-NEXT:    s_mov_b32 s8, s63842; GFX90A-NEXT:    s_mov_b32 s9, s73843; GFX90A-NEXT:    s_mov_b32 s10, s123844; GFX90A-NEXT:    s_mov_b32 s11, s133845; GFX90A-NEXT:    ;;#ASMSTART3846; GFX90A-NEXT:    ; use s[8:11]3847; GFX90A-NEXT:    ;;#ASMEND3848; GFX90A-NEXT:    s_setpc_b64 s[30:31]3849;3850; GFX942-LABEL: s_shuffle_v2p0_v3p0__1_5:3851; GFX942:       ; %bb.0:3852; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3853; GFX942-NEXT:    ;;#ASMSTART3854; GFX942-NEXT:    ; def s[8:13]3855; GFX942-NEXT:    ;;#ASMEND3856; GFX942-NEXT:    ;;#ASMSTART3857; GFX942-NEXT:    ; def s[0:5]3858; GFX942-NEXT:    ;;#ASMEND3859; GFX942-NEXT:    s_mov_b32 s8, s23860; GFX942-NEXT:    s_mov_b32 s9, s33861; GFX942-NEXT:    s_mov_b32 s10, s123862; GFX942-NEXT:    s_mov_b32 s11, s133863; GFX942-NEXT:    ;;#ASMSTART3864; GFX942-NEXT:    ; use s[8:11]3865; GFX942-NEXT:    ;;#ASMEND3866; GFX942-NEXT:    s_setpc_b64 s[30:31]3867  %vec0 = call <3 x ptr> asm "; def $0", "=s"()3868  %vec1 = call <3 x ptr> asm "; def $0", "=s"()3869  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 1, i32 5>3870  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3871  ret void3872}3873 3874define void @s_shuffle_v2p0_v3p0__2_5() {3875; GFX900-LABEL: s_shuffle_v2p0_v3p0__2_5:3876; GFX900:       ; %bb.0:3877; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3878; GFX900-NEXT:    ;;#ASMSTART3879; GFX900-NEXT:    ; def s[4:9]3880; GFX900-NEXT:    ;;#ASMEND3881; GFX900-NEXT:    ;;#ASMSTART3882; GFX900-NEXT:    ; def s[12:17]3883; GFX900-NEXT:    ;;#ASMEND3884; GFX900-NEXT:    s_mov_b32 s10, s163885; GFX900-NEXT:    s_mov_b32 s11, s173886; GFX900-NEXT:    ;;#ASMSTART3887; GFX900-NEXT:    ; use s[8:11]3888; GFX900-NEXT:    ;;#ASMEND3889; GFX900-NEXT:    s_setpc_b64 s[30:31]3890;3891; GFX90A-LABEL: s_shuffle_v2p0_v3p0__2_5:3892; GFX90A:       ; %bb.0:3893; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3894; GFX90A-NEXT:    ;;#ASMSTART3895; GFX90A-NEXT:    ; def s[4:9]3896; GFX90A-NEXT:    ;;#ASMEND3897; GFX90A-NEXT:    ;;#ASMSTART3898; GFX90A-NEXT:    ; def s[12:17]3899; GFX90A-NEXT:    ;;#ASMEND3900; GFX90A-NEXT:    s_mov_b32 s10, s163901; GFX90A-NEXT:    s_mov_b32 s11, s173902; GFX90A-NEXT:    ;;#ASMSTART3903; GFX90A-NEXT:    ; use s[8:11]3904; GFX90A-NEXT:    ;;#ASMEND3905; GFX90A-NEXT:    s_setpc_b64 s[30:31]3906;3907; GFX942-LABEL: s_shuffle_v2p0_v3p0__2_5:3908; GFX942:       ; %bb.0:3909; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3910; GFX942-NEXT:    ;;#ASMSTART3911; GFX942-NEXT:    ; def s[4:9]3912; GFX942-NEXT:    ;;#ASMEND3913; GFX942-NEXT:    s_nop 03914; GFX942-NEXT:    ;;#ASMSTART3915; GFX942-NEXT:    ; def s[0:5]3916; GFX942-NEXT:    ;;#ASMEND3917; GFX942-NEXT:    s_mov_b32 s10, s43918; GFX942-NEXT:    s_mov_b32 s11, s53919; GFX942-NEXT:    ;;#ASMSTART3920; GFX942-NEXT:    ; use s[8:11]3921; GFX942-NEXT:    ;;#ASMEND3922; GFX942-NEXT:    s_setpc_b64 s[30:31]3923  %vec0 = call <3 x ptr> asm "; def $0", "=s"()3924  %vec1 = call <3 x ptr> asm "; def $0", "=s"()3925  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 2, i32 5>3926  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3927  ret void3928}3929 3930define void @s_shuffle_v2p0_v3p0__3_5() {3931; GFX9-LABEL: s_shuffle_v2p0_v3p0__3_5:3932; GFX9:       ; %bb.0:3933; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3934; GFX9-NEXT:    ;;#ASMSTART3935; GFX9-NEXT:    ; def s[8:13]3936; GFX9-NEXT:    ;;#ASMEND3937; GFX9-NEXT:    s_mov_b32 s10, s123938; GFX9-NEXT:    s_mov_b32 s11, s133939; GFX9-NEXT:    ;;#ASMSTART3940; GFX9-NEXT:    ; use s[8:11]3941; GFX9-NEXT:    ;;#ASMEND3942; GFX9-NEXT:    s_setpc_b64 s[30:31]3943  %vec0 = call <3 x ptr> asm "; def $0", "=s"()3944  %vec1 = call <3 x ptr> asm "; def $0", "=s"()3945  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 3, i32 5>3946  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3947  ret void3948}3949 3950define void @s_shuffle_v2p0_v3p0__4_5() {3951; GFX900-LABEL: s_shuffle_v2p0_v3p0__4_5:3952; GFX900:       ; %bb.0:3953; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3954; GFX900-NEXT:    ;;#ASMSTART3955; GFX900-NEXT:    ; def s[8:13]3956; GFX900-NEXT:    ;;#ASMEND3957; GFX900-NEXT:    s_mov_b32 s8, s103958; GFX900-NEXT:    s_mov_b32 s9, s113959; GFX900-NEXT:    s_mov_b32 s10, s123960; GFX900-NEXT:    s_mov_b32 s11, s133961; GFX900-NEXT:    ;;#ASMSTART3962; GFX900-NEXT:    ; use s[8:11]3963; GFX900-NEXT:    ;;#ASMEND3964; GFX900-NEXT:    s_setpc_b64 s[30:31]3965;3966; GFX90A-LABEL: s_shuffle_v2p0_v3p0__4_5:3967; GFX90A:       ; %bb.0:3968; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3969; GFX90A-NEXT:    ;;#ASMSTART3970; GFX90A-NEXT:    ; def s[8:13]3971; GFX90A-NEXT:    ;;#ASMEND3972; GFX90A-NEXT:    s_mov_b32 s8, s103973; GFX90A-NEXT:    s_mov_b32 s9, s113974; GFX90A-NEXT:    s_mov_b32 s10, s123975; GFX90A-NEXT:    s_mov_b32 s11, s133976; GFX90A-NEXT:    ;;#ASMSTART3977; GFX90A-NEXT:    ; use s[8:11]3978; GFX90A-NEXT:    ;;#ASMEND3979; GFX90A-NEXT:    s_setpc_b64 s[30:31]3980;3981; GFX942-LABEL: s_shuffle_v2p0_v3p0__4_5:3982; GFX942:       ; %bb.0:3983; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3984; GFX942-NEXT:    ;;#ASMSTART3985; GFX942-NEXT:    ; def s[0:5]3986; GFX942-NEXT:    ;;#ASMEND3987; GFX942-NEXT:    s_mov_b32 s8, s23988; GFX942-NEXT:    s_mov_b32 s9, s33989; GFX942-NEXT:    s_mov_b32 s10, s43990; GFX942-NEXT:    s_mov_b32 s11, s53991; GFX942-NEXT:    ;;#ASMSTART3992; GFX942-NEXT:    ; use s[8:11]3993; GFX942-NEXT:    ;;#ASMEND3994; GFX942-NEXT:    s_setpc_b64 s[30:31]3995  %vec0 = call <3 x ptr> asm "; def $0", "=s"()3996  %vec1 = call <3 x ptr> asm "; def $0", "=s"()3997  %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <2 x i32> <i32 4, i32 5>3998  call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)3999  ret void4000}4001;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:4002; GFX90APLUS: {{.*}}4003