brintos

brintos / llvm-project-archived public Read only

0
0
Text · 159.1 KiB · ca29ff1 Raw
4347 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_v2i16_v3i16__u_u(ptr addrspace(1) inreg %ptr) {8; GFX9-LABEL: v_shuffle_v2i16_v3i16__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 <4 x i16> asm "; def $0", "=v"()13  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>14  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> poison15  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 416  ret void17}18 19define void @v_shuffle_v2i16_v3i16__0_u(ptr addrspace(1) inreg %ptr) {20; GFX900-LABEL: v_shuffle_v2i16_v3i16__0_u:21; GFX900:       ; %bb.0:22; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)23; GFX900-NEXT:    v_mov_b32_e32 v2, 024; GFX900-NEXT:    ;;#ASMSTART25; GFX900-NEXT:    ; def v[0:1]26; GFX900-NEXT:    ;;#ASMEND27; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]28; GFX900-NEXT:    s_waitcnt vmcnt(0)29; GFX900-NEXT:    s_setpc_b64 s[30:31]30;31; GFX90A-LABEL: v_shuffle_v2i16_v3i16__0_u:32; GFX90A:       ; %bb.0:33; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)34; GFX90A-NEXT:    v_mov_b32_e32 v2, 035; GFX90A-NEXT:    ;;#ASMSTART36; GFX90A-NEXT:    ; def v[0:1]37; GFX90A-NEXT:    ;;#ASMEND38; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]39; GFX90A-NEXT:    s_waitcnt vmcnt(0)40; GFX90A-NEXT:    s_setpc_b64 s[30:31]41;42; GFX942-LABEL: v_shuffle_v2i16_v3i16__0_u:43; GFX942:       ; %bb.0:44; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)45; GFX942-NEXT:    v_mov_b32_e32 v2, 046; GFX942-NEXT:    ;;#ASMSTART47; GFX942-NEXT:    ; def v[0:1]48; GFX942-NEXT:    ;;#ASMEND49; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]50; GFX942-NEXT:    s_waitcnt vmcnt(0)51; GFX942-NEXT:    s_setpc_b64 s[30:31]52  %vec0 = call <4 x i16> asm "; def $0", "=v"()53  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>54  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 0, i32 poison>55  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 456  ret void57}58 59define void @v_shuffle_v2i16_v3i16__1_u(ptr addrspace(1) inreg %ptr) {60; GFX900-LABEL: v_shuffle_v2i16_v3i16__1_u:61; GFX900:       ; %bb.0:62; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)63; GFX900-NEXT:    ;;#ASMSTART64; GFX900-NEXT:    ; def v[0:1]65; GFX900-NEXT:    ;;#ASMEND66; GFX900-NEXT:    v_mov_b32_e32 v2, 067; GFX900-NEXT:    v_alignbit_b32 v0, s4, v0, 1668; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]69; GFX900-NEXT:    s_waitcnt vmcnt(0)70; GFX900-NEXT:    s_setpc_b64 s[30:31]71;72; GFX90A-LABEL: v_shuffle_v2i16_v3i16__1_u:73; GFX90A:       ; %bb.0:74; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)75; GFX90A-NEXT:    ;;#ASMSTART76; GFX90A-NEXT:    ; def v[0:1]77; GFX90A-NEXT:    ;;#ASMEND78; GFX90A-NEXT:    v_mov_b32_e32 v2, 079; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v0, 1680; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]81; GFX90A-NEXT:    s_waitcnt vmcnt(0)82; GFX90A-NEXT:    s_setpc_b64 s[30:31]83;84; GFX942-LABEL: v_shuffle_v2i16_v3i16__1_u:85; GFX942:       ; %bb.0:86; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)87; GFX942-NEXT:    ;;#ASMSTART88; GFX942-NEXT:    ; def v[0:1]89; GFX942-NEXT:    ;;#ASMEND90; GFX942-NEXT:    v_mov_b32_e32 v2, 091; GFX942-NEXT:    v_alignbit_b32 v0, s0, v0, 1692; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]93; GFX942-NEXT:    s_waitcnt vmcnt(0)94; GFX942-NEXT:    s_setpc_b64 s[30:31]95  %vec0 = call <4 x i16> asm "; def $0", "=v"()96  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>97  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 1, i32 poison>98  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 499  ret void100}101 102define void @v_shuffle_v2i16_v3i16__2_u(ptr addrspace(1) inreg %ptr) {103; GFX900-LABEL: v_shuffle_v2i16_v3i16__2_u:104; GFX900:       ; %bb.0:105; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)106; GFX900-NEXT:    v_mov_b32_e32 v2, 0107; GFX900-NEXT:    ;;#ASMSTART108; GFX900-NEXT:    ; def v[0:1]109; GFX900-NEXT:    ;;#ASMEND110; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]111; GFX900-NEXT:    s_waitcnt vmcnt(0)112; GFX900-NEXT:    s_setpc_b64 s[30:31]113;114; GFX90A-LABEL: v_shuffle_v2i16_v3i16__2_u:115; GFX90A:       ; %bb.0:116; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)117; GFX90A-NEXT:    v_mov_b32_e32 v2, 0118; GFX90A-NEXT:    ;;#ASMSTART119; GFX90A-NEXT:    ; def v[0:1]120; GFX90A-NEXT:    ;;#ASMEND121; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]122; GFX90A-NEXT:    s_waitcnt vmcnt(0)123; GFX90A-NEXT:    s_setpc_b64 s[30:31]124;125; GFX942-LABEL: v_shuffle_v2i16_v3i16__2_u:126; GFX942:       ; %bb.0:127; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)128; GFX942-NEXT:    v_mov_b32_e32 v2, 0129; GFX942-NEXT:    ;;#ASMSTART130; GFX942-NEXT:    ; def v[0:1]131; GFX942-NEXT:    ;;#ASMEND132; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]133; GFX942-NEXT:    s_waitcnt vmcnt(0)134; GFX942-NEXT:    s_setpc_b64 s[30:31]135  %vec0 = call <4 x i16> asm "; def $0", "=v"()136  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>137  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 2, i32 poison>138  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4139  ret void140}141 142define void @v_shuffle_v2i16_v3i16__3_u(ptr addrspace(1) inreg %ptr) {143; GFX9-LABEL: v_shuffle_v2i16_v3i16__3_u:144; GFX9:       ; %bb.0:145; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)146; GFX9-NEXT:    s_setpc_b64 s[30:31]147  %vec0 = call <4 x i16> asm "; def $0", "=v"()148  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>149  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 3, i32 poison>150  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4151  ret void152}153 154define void @v_shuffle_v2i16_v3i16__4_u(ptr addrspace(1) inreg %ptr) {155; GFX900-LABEL: v_shuffle_v2i16_v3i16__4_u:156; GFX900:       ; %bb.0:157; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)158; GFX900-NEXT:    ;;#ASMSTART159; GFX900-NEXT:    ; def v[0:1]160; GFX900-NEXT:    ;;#ASMEND161; GFX900-NEXT:    v_mov_b32_e32 v2, 0162; GFX900-NEXT:    v_alignbit_b32 v0, s4, v0, 16163; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]164; GFX900-NEXT:    s_waitcnt vmcnt(0)165; GFX900-NEXT:    s_setpc_b64 s[30:31]166;167; GFX90A-LABEL: v_shuffle_v2i16_v3i16__4_u:168; GFX90A:       ; %bb.0:169; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)170; GFX90A-NEXT:    ;;#ASMSTART171; GFX90A-NEXT:    ; def v[0:1]172; GFX90A-NEXT:    ;;#ASMEND173; GFX90A-NEXT:    v_mov_b32_e32 v2, 0174; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v0, 16175; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]176; GFX90A-NEXT:    s_waitcnt vmcnt(0)177; GFX90A-NEXT:    s_setpc_b64 s[30:31]178;179; GFX942-LABEL: v_shuffle_v2i16_v3i16__4_u:180; GFX942:       ; %bb.0:181; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)182; GFX942-NEXT:    ;;#ASMSTART183; GFX942-NEXT:    ; def v[0:1]184; GFX942-NEXT:    ;;#ASMEND185; GFX942-NEXT:    v_mov_b32_e32 v2, 0186; GFX942-NEXT:    v_alignbit_b32 v0, s0, v0, 16187; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]188; GFX942-NEXT:    s_waitcnt vmcnt(0)189; GFX942-NEXT:    s_setpc_b64 s[30:31]190  %vec0 = call <4 x i16> asm "; def $0", "=v"()191  %vec1 = call <4 x i16> asm "; def $0", "=v"()192  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>193  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>194  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 4, i32 poison>195  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4196  ret void197}198 199define void @v_shuffle_v2i16_v3i16__5_u(ptr addrspace(1) inreg %ptr) {200; GFX900-LABEL: v_shuffle_v2i16_v3i16__5_u:201; GFX900:       ; %bb.0:202; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)203; GFX900-NEXT:    v_mov_b32_e32 v2, 0204; GFX900-NEXT:    ;;#ASMSTART205; GFX900-NEXT:    ; def v[0:1]206; GFX900-NEXT:    ;;#ASMEND207; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]208; GFX900-NEXT:    s_waitcnt vmcnt(0)209; GFX900-NEXT:    s_setpc_b64 s[30:31]210;211; GFX90A-LABEL: v_shuffle_v2i16_v3i16__5_u:212; GFX90A:       ; %bb.0:213; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)214; GFX90A-NEXT:    v_mov_b32_e32 v2, 0215; GFX90A-NEXT:    ;;#ASMSTART216; GFX90A-NEXT:    ; def v[0:1]217; GFX90A-NEXT:    ;;#ASMEND218; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]219; GFX90A-NEXT:    s_waitcnt vmcnt(0)220; GFX90A-NEXT:    s_setpc_b64 s[30:31]221;222; GFX942-LABEL: v_shuffle_v2i16_v3i16__5_u:223; GFX942:       ; %bb.0:224; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)225; GFX942-NEXT:    v_mov_b32_e32 v2, 0226; GFX942-NEXT:    ;;#ASMSTART227; GFX942-NEXT:    ; def v[0:1]228; GFX942-NEXT:    ;;#ASMEND229; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]230; GFX942-NEXT:    s_waitcnt vmcnt(0)231; GFX942-NEXT:    s_setpc_b64 s[30:31]232  %vec0 = call <4 x i16> asm "; def $0", "=v"()233  %vec1 = call <4 x i16> asm "; def $0", "=v"()234  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>235  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>236  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 5, i32 poison>237  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4238  ret void239}240 241define void @v_shuffle_v2i16_v3i16__5_0(ptr addrspace(1) inreg %ptr) {242; GFX900-LABEL: v_shuffle_v2i16_v3i16__5_0:243; GFX900:       ; %bb.0:244; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)245; GFX900-NEXT:    ;;#ASMSTART246; GFX900-NEXT:    ; def v[0:1]247; GFX900-NEXT:    ;;#ASMEND248; GFX900-NEXT:    s_mov_b32 s4, 0x5040100249; GFX900-NEXT:    v_mov_b32_e32 v3, 0250; GFX900-NEXT:    ;;#ASMSTART251; GFX900-NEXT:    ; def v[1:2]252; GFX900-NEXT:    ;;#ASMEND253; GFX900-NEXT:    v_perm_b32 v0, v0, v2, s4254; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]255; GFX900-NEXT:    s_waitcnt vmcnt(0)256; GFX900-NEXT:    s_setpc_b64 s[30:31]257;258; GFX90A-LABEL: v_shuffle_v2i16_v3i16__5_0:259; GFX90A:       ; %bb.0:260; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)261; GFX90A-NEXT:    ;;#ASMSTART262; GFX90A-NEXT:    ; def v[0:1]263; GFX90A-NEXT:    ;;#ASMEND264; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100265; GFX90A-NEXT:    v_mov_b32_e32 v4, 0266; GFX90A-NEXT:    ;;#ASMSTART267; GFX90A-NEXT:    ; def v[2:3]268; GFX90A-NEXT:    ;;#ASMEND269; GFX90A-NEXT:    v_perm_b32 v0, v0, v3, s4270; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]271; GFX90A-NEXT:    s_waitcnt vmcnt(0)272; GFX90A-NEXT:    s_setpc_b64 s[30:31]273;274; GFX942-LABEL: v_shuffle_v2i16_v3i16__5_0:275; GFX942:       ; %bb.0:276; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)277; GFX942-NEXT:    ;;#ASMSTART278; GFX942-NEXT:    ; def v[0:1]279; GFX942-NEXT:    ;;#ASMEND280; GFX942-NEXT:    s_mov_b32 s2, 0x5040100281; GFX942-NEXT:    v_mov_b32_e32 v4, 0282; GFX942-NEXT:    ;;#ASMSTART283; GFX942-NEXT:    ; def v[2:3]284; GFX942-NEXT:    ;;#ASMEND285; GFX942-NEXT:    s_nop 0286; GFX942-NEXT:    v_perm_b32 v0, v0, v3, s2287; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]288; GFX942-NEXT:    s_waitcnt vmcnt(0)289; GFX942-NEXT:    s_setpc_b64 s[30:31]290  %vec0 = call <4 x i16> asm "; def $0", "=v"()291  %vec1 = call <4 x i16> asm "; def $0", "=v"()292  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>293  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>294  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 5, i32 0>295  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4296  ret void297}298 299define void @v_shuffle_v2i16_v3i16__5_1(ptr addrspace(1) inreg %ptr) {300; GFX900-LABEL: v_shuffle_v2i16_v3i16__5_1:301; GFX900:       ; %bb.0:302; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)303; GFX900-NEXT:    ;;#ASMSTART304; GFX900-NEXT:    ; def v[0:1]305; GFX900-NEXT:    ;;#ASMEND306; GFX900-NEXT:    s_mov_b32 s4, 0xffff307; GFX900-NEXT:    v_mov_b32_e32 v3, 0308; GFX900-NEXT:    ;;#ASMSTART309; GFX900-NEXT:    ; def v[1:2]310; GFX900-NEXT:    ;;#ASMEND311; GFX900-NEXT:    v_bfi_b32 v0, s4, v2, v0312; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]313; GFX900-NEXT:    s_waitcnt vmcnt(0)314; GFX900-NEXT:    s_setpc_b64 s[30:31]315;316; GFX90A-LABEL: v_shuffle_v2i16_v3i16__5_1:317; GFX90A:       ; %bb.0:318; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)319; GFX90A-NEXT:    ;;#ASMSTART320; GFX90A-NEXT:    ; def v[0:1]321; GFX90A-NEXT:    ;;#ASMEND322; GFX90A-NEXT:    s_mov_b32 s4, 0xffff323; GFX90A-NEXT:    v_mov_b32_e32 v4, 0324; GFX90A-NEXT:    ;;#ASMSTART325; GFX90A-NEXT:    ; def v[2:3]326; GFX90A-NEXT:    ;;#ASMEND327; GFX90A-NEXT:    v_bfi_b32 v0, s4, v3, v0328; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]329; GFX90A-NEXT:    s_waitcnt vmcnt(0)330; GFX90A-NEXT:    s_setpc_b64 s[30:31]331;332; GFX942-LABEL: v_shuffle_v2i16_v3i16__5_1:333; GFX942:       ; %bb.0:334; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)335; GFX942-NEXT:    ;;#ASMSTART336; GFX942-NEXT:    ; def v[0:1]337; GFX942-NEXT:    ;;#ASMEND338; GFX942-NEXT:    s_mov_b32 s2, 0xffff339; GFX942-NEXT:    v_mov_b32_e32 v4, 0340; GFX942-NEXT:    ;;#ASMSTART341; GFX942-NEXT:    ; def v[2:3]342; GFX942-NEXT:    ;;#ASMEND343; GFX942-NEXT:    s_nop 0344; GFX942-NEXT:    v_bfi_b32 v0, s2, v3, v0345; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]346; GFX942-NEXT:    s_waitcnt vmcnt(0)347; GFX942-NEXT:    s_setpc_b64 s[30:31]348  %vec0 = call <4 x i16> asm "; def $0", "=v"()349  %vec1 = call <4 x i16> asm "; def $0", "=v"()350  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>351  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>352  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 5, i32 1>353  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4354  ret void355}356 357define void @v_shuffle_v2i16_v3i16__5_2(ptr addrspace(1) inreg %ptr) {358; GFX900-LABEL: v_shuffle_v2i16_v3i16__5_2:359; GFX900:       ; %bb.0:360; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)361; GFX900-NEXT:    ;;#ASMSTART362; GFX900-NEXT:    ; def v[0:1]363; GFX900-NEXT:    ;;#ASMEND364; GFX900-NEXT:    s_mov_b32 s4, 0x5040100365; GFX900-NEXT:    v_mov_b32_e32 v4, 0366; GFX900-NEXT:    ;;#ASMSTART367; GFX900-NEXT:    ; def v[2:3]368; GFX900-NEXT:    ;;#ASMEND369; GFX900-NEXT:    v_perm_b32 v0, v1, v3, s4370; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]371; GFX900-NEXT:    s_waitcnt vmcnt(0)372; GFX900-NEXT:    s_setpc_b64 s[30:31]373;374; GFX90A-LABEL: v_shuffle_v2i16_v3i16__5_2:375; GFX90A:       ; %bb.0:376; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)377; GFX90A-NEXT:    ;;#ASMSTART378; GFX90A-NEXT:    ; def v[0:1]379; GFX90A-NEXT:    ;;#ASMEND380; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100381; GFX90A-NEXT:    v_mov_b32_e32 v4, 0382; GFX90A-NEXT:    ;;#ASMSTART383; GFX90A-NEXT:    ; def v[2:3]384; GFX90A-NEXT:    ;;#ASMEND385; GFX90A-NEXT:    v_perm_b32 v0, v1, v3, s4386; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]387; GFX90A-NEXT:    s_waitcnt vmcnt(0)388; GFX90A-NEXT:    s_setpc_b64 s[30:31]389;390; GFX942-LABEL: v_shuffle_v2i16_v3i16__5_2:391; GFX942:       ; %bb.0:392; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)393; GFX942-NEXT:    ;;#ASMSTART394; GFX942-NEXT:    ; def v[0:1]395; GFX942-NEXT:    ;;#ASMEND396; GFX942-NEXT:    s_mov_b32 s2, 0x5040100397; GFX942-NEXT:    v_mov_b32_e32 v4, 0398; GFX942-NEXT:    ;;#ASMSTART399; GFX942-NEXT:    ; def v[2:3]400; GFX942-NEXT:    ;;#ASMEND401; GFX942-NEXT:    s_nop 0402; GFX942-NEXT:    v_perm_b32 v0, v1, v3, s2403; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]404; GFX942-NEXT:    s_waitcnt vmcnt(0)405; GFX942-NEXT:    s_setpc_b64 s[30:31]406  %vec0 = call <4 x i16> asm "; def $0", "=v"()407  %vec1 = call <4 x i16> asm "; def $0", "=v"()408  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>409  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>410  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 5, i32 2>411  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4412  ret void413}414 415define void @v_shuffle_v2i16_v3i16__5_3(ptr addrspace(1) inreg %ptr) {416; GFX900-LABEL: v_shuffle_v2i16_v3i16__5_3:417; GFX900:       ; %bb.0:418; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)419; GFX900-NEXT:    ;;#ASMSTART420; GFX900-NEXT:    ; def v[0:1]421; GFX900-NEXT:    ;;#ASMEND422; GFX900-NEXT:    s_mov_b32 s4, 0x5040100423; GFX900-NEXT:    v_mov_b32_e32 v2, 0424; GFX900-NEXT:    v_perm_b32 v0, v0, v1, s4425; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]426; GFX900-NEXT:    s_waitcnt vmcnt(0)427; GFX900-NEXT:    s_setpc_b64 s[30:31]428;429; GFX90A-LABEL: v_shuffle_v2i16_v3i16__5_3:430; GFX90A:       ; %bb.0:431; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)432; GFX90A-NEXT:    ;;#ASMSTART433; GFX90A-NEXT:    ; def v[0:1]434; GFX90A-NEXT:    ;;#ASMEND435; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100436; GFX90A-NEXT:    v_mov_b32_e32 v2, 0437; GFX90A-NEXT:    v_perm_b32 v0, v0, v1, s4438; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]439; GFX90A-NEXT:    s_waitcnt vmcnt(0)440; GFX90A-NEXT:    s_setpc_b64 s[30:31]441;442; GFX942-LABEL: v_shuffle_v2i16_v3i16__5_3:443; GFX942:       ; %bb.0:444; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)445; GFX942-NEXT:    ;;#ASMSTART446; GFX942-NEXT:    ; def v[0:1]447; GFX942-NEXT:    ;;#ASMEND448; GFX942-NEXT:    s_mov_b32 s2, 0x5040100449; GFX942-NEXT:    v_mov_b32_e32 v2, 0450; GFX942-NEXT:    v_perm_b32 v0, v0, v1, s2451; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]452; GFX942-NEXT:    s_waitcnt vmcnt(0)453; GFX942-NEXT:    s_setpc_b64 s[30:31]454  %vec0 = call <4 x i16> asm "; def $0", "=v"()455  %vec1 = call <4 x i16> asm "; def $0", "=v"()456  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>457  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>458  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 5, i32 3>459  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4460  ret void461}462 463define void @v_shuffle_v2i16_v3i16__5_4(ptr addrspace(1) inreg %ptr) {464; GFX900-LABEL: v_shuffle_v2i16_v3i16__5_4:465; GFX900:       ; %bb.0:466; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)467; GFX900-NEXT:    ;;#ASMSTART468; GFX900-NEXT:    ; def v[0:1]469; GFX900-NEXT:    ;;#ASMEND470; GFX900-NEXT:    s_mov_b32 s4, 0xffff471; GFX900-NEXT:    v_mov_b32_e32 v2, 0472; GFX900-NEXT:    v_bfi_b32 v0, s4, v1, v0473; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]474; GFX900-NEXT:    s_waitcnt vmcnt(0)475; GFX900-NEXT:    s_setpc_b64 s[30:31]476;477; GFX90A-LABEL: v_shuffle_v2i16_v3i16__5_4:478; GFX90A:       ; %bb.0:479; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)480; GFX90A-NEXT:    ;;#ASMSTART481; GFX90A-NEXT:    ; def v[0:1]482; GFX90A-NEXT:    ;;#ASMEND483; GFX90A-NEXT:    s_mov_b32 s4, 0xffff484; GFX90A-NEXT:    v_mov_b32_e32 v2, 0485; GFX90A-NEXT:    v_bfi_b32 v0, s4, v1, v0486; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]487; GFX90A-NEXT:    s_waitcnt vmcnt(0)488; GFX90A-NEXT:    s_setpc_b64 s[30:31]489;490; GFX942-LABEL: v_shuffle_v2i16_v3i16__5_4:491; GFX942:       ; %bb.0:492; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)493; GFX942-NEXT:    ;;#ASMSTART494; GFX942-NEXT:    ; def v[0:1]495; GFX942-NEXT:    ;;#ASMEND496; GFX942-NEXT:    s_mov_b32 s2, 0xffff497; GFX942-NEXT:    v_mov_b32_e32 v2, 0498; GFX942-NEXT:    v_bfi_b32 v0, s2, v1, v0499; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]500; GFX942-NEXT:    s_waitcnt vmcnt(0)501; GFX942-NEXT:    s_setpc_b64 s[30:31]502  %vec0 = call <4 x i16> asm "; def $0", "=v"()503  %vec1 = call <4 x i16> asm "; def $0", "=v"()504  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>505  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>506  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 5, i32 4>507  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4508  ret void509}510 511define void @v_shuffle_v2i16_v3i16__5_5(ptr addrspace(1) inreg %ptr) {512; GFX900-LABEL: v_shuffle_v2i16_v3i16__5_5:513; GFX900:       ; %bb.0:514; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)515; GFX900-NEXT:    ;;#ASMSTART516; GFX900-NEXT:    ; def v[0:1]517; GFX900-NEXT:    ;;#ASMEND518; GFX900-NEXT:    s_mov_b32 s4, 0x5040100519; GFX900-NEXT:    v_mov_b32_e32 v2, 0520; GFX900-NEXT:    v_perm_b32 v0, v1, v1, s4521; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]522; GFX900-NEXT:    s_waitcnt vmcnt(0)523; GFX900-NEXT:    s_setpc_b64 s[30:31]524;525; GFX90A-LABEL: v_shuffle_v2i16_v3i16__5_5:526; GFX90A:       ; %bb.0:527; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)528; GFX90A-NEXT:    ;;#ASMSTART529; GFX90A-NEXT:    ; def v[0:1]530; GFX90A-NEXT:    ;;#ASMEND531; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100532; GFX90A-NEXT:    v_mov_b32_e32 v2, 0533; GFX90A-NEXT:    v_perm_b32 v0, v1, v1, s4534; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]535; GFX90A-NEXT:    s_waitcnt vmcnt(0)536; GFX90A-NEXT:    s_setpc_b64 s[30:31]537;538; GFX942-LABEL: v_shuffle_v2i16_v3i16__5_5:539; GFX942:       ; %bb.0:540; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)541; GFX942-NEXT:    ;;#ASMSTART542; GFX942-NEXT:    ; def v[0:1]543; GFX942-NEXT:    ;;#ASMEND544; GFX942-NEXT:    s_mov_b32 s2, 0x5040100545; GFX942-NEXT:    v_mov_b32_e32 v2, 0546; GFX942-NEXT:    v_perm_b32 v0, v1, v1, s2547; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]548; GFX942-NEXT:    s_waitcnt vmcnt(0)549; GFX942-NEXT:    s_setpc_b64 s[30:31]550  %vec0 = call <4 x i16> asm "; def $0", "=v"()551  %vec1 = call <4 x i16> asm "; def $0", "=v"()552  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>553  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>554  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 5, i32 5>555  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4556  ret void557}558 559define void @v_shuffle_v2i16_v3i16__u_0(ptr addrspace(1) inreg %ptr) {560; GFX900-LABEL: v_shuffle_v2i16_v3i16__u_0:561; GFX900:       ; %bb.0:562; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)563; GFX900-NEXT:    ;;#ASMSTART564; GFX900-NEXT:    ; def v[0:1]565; GFX900-NEXT:    ;;#ASMEND566; GFX900-NEXT:    v_mov_b32_e32 v2, 0567; GFX900-NEXT:    v_lshlrev_b32_e32 v0, 16, v0568; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]569; GFX900-NEXT:    s_waitcnt vmcnt(0)570; GFX900-NEXT:    s_setpc_b64 s[30:31]571;572; GFX90A-LABEL: v_shuffle_v2i16_v3i16__u_0:573; GFX90A:       ; %bb.0:574; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)575; GFX90A-NEXT:    ;;#ASMSTART576; GFX90A-NEXT:    ; def v[0:1]577; GFX90A-NEXT:    ;;#ASMEND578; GFX90A-NEXT:    v_mov_b32_e32 v2, 0579; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 16, v0580; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]581; GFX90A-NEXT:    s_waitcnt vmcnt(0)582; GFX90A-NEXT:    s_setpc_b64 s[30:31]583;584; GFX942-LABEL: v_shuffle_v2i16_v3i16__u_0:585; GFX942:       ; %bb.0:586; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)587; GFX942-NEXT:    ;;#ASMSTART588; GFX942-NEXT:    ; def v[0:1]589; GFX942-NEXT:    ;;#ASMEND590; GFX942-NEXT:    v_mov_b32_e32 v2, 0591; GFX942-NEXT:    v_lshlrev_b32_e32 v0, 16, v0592; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]593; GFX942-NEXT:    s_waitcnt vmcnt(0)594; GFX942-NEXT:    s_setpc_b64 s[30:31]595  %vec0 = call <4 x i16> asm "; def $0", "=v"()596  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>597  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 poison, i32 0>598  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4599  ret void600}601 602define void @v_shuffle_v2i16_v3i16__0_0(ptr addrspace(1) inreg %ptr) {603; GFX900-LABEL: v_shuffle_v2i16_v3i16__0_0:604; GFX900:       ; %bb.0:605; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)606; GFX900-NEXT:    ;;#ASMSTART607; GFX900-NEXT:    ; def v[0:1]608; GFX900-NEXT:    ;;#ASMEND609; GFX900-NEXT:    s_mov_b32 s4, 0x5040100610; GFX900-NEXT:    v_mov_b32_e32 v2, 0611; GFX900-NEXT:    v_perm_b32 v0, v0, v0, s4612; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]613; GFX900-NEXT:    s_waitcnt vmcnt(0)614; GFX900-NEXT:    s_setpc_b64 s[30:31]615;616; GFX90A-LABEL: v_shuffle_v2i16_v3i16__0_0:617; GFX90A:       ; %bb.0:618; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)619; GFX90A-NEXT:    ;;#ASMSTART620; GFX90A-NEXT:    ; def v[0:1]621; GFX90A-NEXT:    ;;#ASMEND622; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100623; GFX90A-NEXT:    v_mov_b32_e32 v2, 0624; GFX90A-NEXT:    v_perm_b32 v0, v0, v0, s4625; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]626; GFX90A-NEXT:    s_waitcnt vmcnt(0)627; GFX90A-NEXT:    s_setpc_b64 s[30:31]628;629; GFX942-LABEL: v_shuffle_v2i16_v3i16__0_0:630; GFX942:       ; %bb.0:631; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)632; GFX942-NEXT:    ;;#ASMSTART633; GFX942-NEXT:    ; def v[0:1]634; GFX942-NEXT:    ;;#ASMEND635; GFX942-NEXT:    s_mov_b32 s2, 0x5040100636; GFX942-NEXT:    v_mov_b32_e32 v2, 0637; GFX942-NEXT:    v_perm_b32 v0, v0, v0, s2638; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]639; GFX942-NEXT:    s_waitcnt vmcnt(0)640; GFX942-NEXT:    s_setpc_b64 s[30:31]641  %vec0 = call <4 x i16> asm "; def $0", "=v"()642  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>643  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> zeroinitializer644  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4645  ret void646}647 648define void @v_shuffle_v2i16_v3i16__1_0(ptr addrspace(1) inreg %ptr) {649; GFX900-LABEL: v_shuffle_v2i16_v3i16__1_0:650; GFX900:       ; %bb.0:651; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)652; GFX900-NEXT:    ;;#ASMSTART653; GFX900-NEXT:    ; def v[0:1]654; GFX900-NEXT:    ;;#ASMEND655; GFX900-NEXT:    v_mov_b32_e32 v2, 0656; GFX900-NEXT:    v_alignbit_b32 v0, v0, v0, 16657; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]658; GFX900-NEXT:    s_waitcnt vmcnt(0)659; GFX900-NEXT:    s_setpc_b64 s[30:31]660;661; GFX90A-LABEL: v_shuffle_v2i16_v3i16__1_0:662; GFX90A:       ; %bb.0:663; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)664; GFX90A-NEXT:    ;;#ASMSTART665; GFX90A-NEXT:    ; def v[0:1]666; GFX90A-NEXT:    ;;#ASMEND667; GFX90A-NEXT:    v_mov_b32_e32 v2, 0668; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v0, 16669; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]670; GFX90A-NEXT:    s_waitcnt vmcnt(0)671; GFX90A-NEXT:    s_setpc_b64 s[30:31]672;673; GFX942-LABEL: v_shuffle_v2i16_v3i16__1_0:674; GFX942:       ; %bb.0:675; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)676; GFX942-NEXT:    ;;#ASMSTART677; GFX942-NEXT:    ; def v[0:1]678; GFX942-NEXT:    ;;#ASMEND679; GFX942-NEXT:    v_mov_b32_e32 v2, 0680; GFX942-NEXT:    v_alignbit_b32 v0, v0, v0, 16681; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]682; GFX942-NEXT:    s_waitcnt vmcnt(0)683; GFX942-NEXT:    s_setpc_b64 s[30:31]684  %vec0 = call <4 x i16> asm "; def $0", "=v"()685  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>686  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 1, i32 0>687  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4688  ret void689}690 691define void @v_shuffle_v2i16_v3i16__2_0(ptr addrspace(1) inreg %ptr) {692; GFX900-LABEL: v_shuffle_v2i16_v3i16__2_0:693; GFX900:       ; %bb.0:694; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)695; GFX900-NEXT:    ;;#ASMSTART696; GFX900-NEXT:    ; def v[0:1]697; GFX900-NEXT:    ;;#ASMEND698; GFX900-NEXT:    s_mov_b32 s4, 0x5040100699; GFX900-NEXT:    v_mov_b32_e32 v2, 0700; GFX900-NEXT:    v_perm_b32 v0, v0, v1, s4701; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]702; GFX900-NEXT:    s_waitcnt vmcnt(0)703; GFX900-NEXT:    s_setpc_b64 s[30:31]704;705; GFX90A-LABEL: v_shuffle_v2i16_v3i16__2_0:706; GFX90A:       ; %bb.0:707; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)708; GFX90A-NEXT:    ;;#ASMSTART709; GFX90A-NEXT:    ; def v[0:1]710; GFX90A-NEXT:    ;;#ASMEND711; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100712; GFX90A-NEXT:    v_mov_b32_e32 v2, 0713; GFX90A-NEXT:    v_perm_b32 v0, v0, v1, s4714; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]715; GFX90A-NEXT:    s_waitcnt vmcnt(0)716; GFX90A-NEXT:    s_setpc_b64 s[30:31]717;718; GFX942-LABEL: v_shuffle_v2i16_v3i16__2_0:719; GFX942:       ; %bb.0:720; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)721; GFX942-NEXT:    ;;#ASMSTART722; GFX942-NEXT:    ; def v[0:1]723; GFX942-NEXT:    ;;#ASMEND724; GFX942-NEXT:    s_mov_b32 s2, 0x5040100725; GFX942-NEXT:    v_mov_b32_e32 v2, 0726; GFX942-NEXT:    v_perm_b32 v0, v0, v1, s2727; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]728; GFX942-NEXT:    s_waitcnt vmcnt(0)729; GFX942-NEXT:    s_setpc_b64 s[30:31]730  %vec0 = call <4 x i16> asm "; def $0", "=v"()731  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>732  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 2, i32 0>733  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4734  ret void735}736 737define void @v_shuffle_v2i16_v3i16__3_0(ptr addrspace(1) inreg %ptr) {738; GFX900-LABEL: v_shuffle_v2i16_v3i16__3_0:739; GFX900:       ; %bb.0:740; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)741; GFX900-NEXT:    ;;#ASMSTART742; GFX900-NEXT:    ; def v[0:1]743; GFX900-NEXT:    ;;#ASMEND744; GFX900-NEXT:    v_mov_b32_e32 v2, 0745; GFX900-NEXT:    v_lshlrev_b32_e32 v0, 16, v0746; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]747; GFX900-NEXT:    s_waitcnt vmcnt(0)748; GFX900-NEXT:    s_setpc_b64 s[30:31]749;750; GFX90A-LABEL: v_shuffle_v2i16_v3i16__3_0:751; GFX90A:       ; %bb.0:752; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)753; GFX90A-NEXT:    ;;#ASMSTART754; GFX90A-NEXT:    ; def v[0:1]755; GFX90A-NEXT:    ;;#ASMEND756; GFX90A-NEXT:    v_mov_b32_e32 v2, 0757; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 16, v0758; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]759; GFX90A-NEXT:    s_waitcnt vmcnt(0)760; GFX90A-NEXT:    s_setpc_b64 s[30:31]761;762; GFX942-LABEL: v_shuffle_v2i16_v3i16__3_0:763; GFX942:       ; %bb.0:764; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)765; GFX942-NEXT:    ;;#ASMSTART766; GFX942-NEXT:    ; def v[0:1]767; GFX942-NEXT:    ;;#ASMEND768; GFX942-NEXT:    v_mov_b32_e32 v2, 0769; GFX942-NEXT:    v_lshlrev_b32_e32 v0, 16, v0770; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]771; GFX942-NEXT:    s_waitcnt vmcnt(0)772; GFX942-NEXT:    s_setpc_b64 s[30:31]773  %vec0 = call <4 x i16> asm "; def $0", "=v"()774  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>775  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 3, i32 0>776  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4777  ret void778}779 780define void @v_shuffle_v2i16_v3i16__4_0(ptr addrspace(1) inreg %ptr) {781; GFX900-LABEL: v_shuffle_v2i16_v3i16__4_0:782; GFX900:       ; %bb.0:783; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)784; GFX900-NEXT:    ;;#ASMSTART785; GFX900-NEXT:    ; def v[0:1]786; GFX900-NEXT:    ;;#ASMEND787; GFX900-NEXT:    v_mov_b32_e32 v3, 0788; GFX900-NEXT:    ;;#ASMSTART789; GFX900-NEXT:    ; def v[1:2]790; GFX900-NEXT:    ;;#ASMEND791; GFX900-NEXT:    v_alignbit_b32 v0, v0, v1, 16792; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]793; GFX900-NEXT:    s_waitcnt vmcnt(0)794; GFX900-NEXT:    s_setpc_b64 s[30:31]795;796; GFX90A-LABEL: v_shuffle_v2i16_v3i16__4_0:797; GFX90A:       ; %bb.0:798; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)799; GFX90A-NEXT:    ;;#ASMSTART800; GFX90A-NEXT:    ; def v[0:1]801; GFX90A-NEXT:    ;;#ASMEND802; GFX90A-NEXT:    v_mov_b32_e32 v4, 0803; GFX90A-NEXT:    ;;#ASMSTART804; GFX90A-NEXT:    ; def v[2:3]805; GFX90A-NEXT:    ;;#ASMEND806; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v2, 16807; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]808; GFX90A-NEXT:    s_waitcnt vmcnt(0)809; GFX90A-NEXT:    s_setpc_b64 s[30:31]810;811; GFX942-LABEL: v_shuffle_v2i16_v3i16__4_0:812; GFX942:       ; %bb.0:813; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)814; GFX942-NEXT:    ;;#ASMSTART815; GFX942-NEXT:    ; def v[0:1]816; GFX942-NEXT:    ;;#ASMEND817; GFX942-NEXT:    v_mov_b32_e32 v4, 0818; GFX942-NEXT:    ;;#ASMSTART819; GFX942-NEXT:    ; def v[2:3]820; GFX942-NEXT:    ;;#ASMEND821; GFX942-NEXT:    s_nop 0822; GFX942-NEXT:    v_alignbit_b32 v0, v0, v2, 16823; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]824; GFX942-NEXT:    s_waitcnt vmcnt(0)825; GFX942-NEXT:    s_setpc_b64 s[30:31]826  %vec0 = call <4 x i16> asm "; def $0", "=v"()827  %vec1 = call <4 x i16> asm "; def $0", "=v"()828  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>829  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>830  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 4, i32 0>831  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4832  ret void833}834 835define void @v_shuffle_v2i16_v3i16__u_1(ptr addrspace(1) inreg %ptr) {836; GFX900-LABEL: v_shuffle_v2i16_v3i16__u_1:837; GFX900:       ; %bb.0:838; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)839; GFX900-NEXT:    v_mov_b32_e32 v2, 0840; GFX900-NEXT:    ;;#ASMSTART841; GFX900-NEXT:    ; def v[0:1]842; GFX900-NEXT:    ;;#ASMEND843; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]844; GFX900-NEXT:    s_waitcnt vmcnt(0)845; GFX900-NEXT:    s_setpc_b64 s[30:31]846;847; GFX90A-LABEL: v_shuffle_v2i16_v3i16__u_1:848; GFX90A:       ; %bb.0:849; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)850; GFX90A-NEXT:    v_mov_b32_e32 v2, 0851; GFX90A-NEXT:    ;;#ASMSTART852; GFX90A-NEXT:    ; def v[0:1]853; GFX90A-NEXT:    ;;#ASMEND854; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]855; GFX90A-NEXT:    s_waitcnt vmcnt(0)856; GFX90A-NEXT:    s_setpc_b64 s[30:31]857;858; GFX942-LABEL: v_shuffle_v2i16_v3i16__u_1:859; GFX942:       ; %bb.0:860; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)861; GFX942-NEXT:    v_mov_b32_e32 v2, 0862; GFX942-NEXT:    ;;#ASMSTART863; GFX942-NEXT:    ; def v[0:1]864; GFX942-NEXT:    ;;#ASMEND865; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]866; GFX942-NEXT:    s_waitcnt vmcnt(0)867; GFX942-NEXT:    s_setpc_b64 s[30:31]868  %vec0 = call <4 x i16> asm "; def $0", "=v"()869  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>870  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 poison, i32 1>871  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4872  ret void873}874 875define void @v_shuffle_v2i16_v3i16__0_1(ptr addrspace(1) inreg %ptr) {876; GFX900-LABEL: v_shuffle_v2i16_v3i16__0_1:877; GFX900:       ; %bb.0:878; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)879; GFX900-NEXT:    v_mov_b32_e32 v2, 0880; GFX900-NEXT:    ;;#ASMSTART881; GFX900-NEXT:    ; def v[0:1]882; GFX900-NEXT:    ;;#ASMEND883; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]884; GFX900-NEXT:    s_waitcnt vmcnt(0)885; GFX900-NEXT:    s_setpc_b64 s[30:31]886;887; GFX90A-LABEL: v_shuffle_v2i16_v3i16__0_1:888; GFX90A:       ; %bb.0:889; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)890; GFX90A-NEXT:    v_mov_b32_e32 v2, 0891; GFX90A-NEXT:    ;;#ASMSTART892; GFX90A-NEXT:    ; def v[0:1]893; GFX90A-NEXT:    ;;#ASMEND894; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]895; GFX90A-NEXT:    s_waitcnt vmcnt(0)896; GFX90A-NEXT:    s_setpc_b64 s[30:31]897;898; GFX942-LABEL: v_shuffle_v2i16_v3i16__0_1:899; GFX942:       ; %bb.0:900; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)901; GFX942-NEXT:    v_mov_b32_e32 v2, 0902; GFX942-NEXT:    ;;#ASMSTART903; GFX942-NEXT:    ; def v[0:1]904; GFX942-NEXT:    ;;#ASMEND905; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]906; GFX942-NEXT:    s_waitcnt vmcnt(0)907; GFX942-NEXT:    s_setpc_b64 s[30:31]908  %vec0 = call <4 x i16> asm "; def $0", "=v"()909  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>910  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 0, i32 1>911  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4912  ret void913}914 915define void @v_shuffle_v2i16_v3i16__1_1(ptr addrspace(1) inreg %ptr) {916; GFX900-LABEL: v_shuffle_v2i16_v3i16__1_1:917; GFX900:       ; %bb.0:918; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)919; GFX900-NEXT:    ;;#ASMSTART920; GFX900-NEXT:    ; def v[0:1]921; GFX900-NEXT:    ;;#ASMEND922; GFX900-NEXT:    s_mov_b32 s4, 0x7060302923; GFX900-NEXT:    v_mov_b32_e32 v2, 0924; GFX900-NEXT:    v_perm_b32 v0, v0, v0, s4925; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]926; GFX900-NEXT:    s_waitcnt vmcnt(0)927; GFX900-NEXT:    s_setpc_b64 s[30:31]928;929; GFX90A-LABEL: v_shuffle_v2i16_v3i16__1_1:930; GFX90A:       ; %bb.0:931; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)932; GFX90A-NEXT:    ;;#ASMSTART933; GFX90A-NEXT:    ; def v[0:1]934; GFX90A-NEXT:    ;;#ASMEND935; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302936; GFX90A-NEXT:    v_mov_b32_e32 v2, 0937; GFX90A-NEXT:    v_perm_b32 v0, v0, v0, s4938; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]939; GFX90A-NEXT:    s_waitcnt vmcnt(0)940; GFX90A-NEXT:    s_setpc_b64 s[30:31]941;942; GFX942-LABEL: v_shuffle_v2i16_v3i16__1_1:943; GFX942:       ; %bb.0:944; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)945; GFX942-NEXT:    ;;#ASMSTART946; GFX942-NEXT:    ; def v[0:1]947; GFX942-NEXT:    ;;#ASMEND948; GFX942-NEXT:    s_mov_b32 s2, 0x7060302949; GFX942-NEXT:    v_mov_b32_e32 v2, 0950; GFX942-NEXT:    v_perm_b32 v0, v0, v0, s2951; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]952; GFX942-NEXT:    s_waitcnt vmcnt(0)953; GFX942-NEXT:    s_setpc_b64 s[30:31]954  %vec0 = call <4 x i16> asm "; def $0", "=v"()955  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>956  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 1, i32 1>957  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4958  ret void959}960 961define void @v_shuffle_v2i16_v3i16__2_1(ptr addrspace(1) inreg %ptr) {962; GFX900-LABEL: v_shuffle_v2i16_v3i16__2_1:963; GFX900:       ; %bb.0:964; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)965; GFX900-NEXT:    ;;#ASMSTART966; GFX900-NEXT:    ; def v[0:1]967; GFX900-NEXT:    ;;#ASMEND968; GFX900-NEXT:    s_mov_b32 s4, 0xffff969; GFX900-NEXT:    v_mov_b32_e32 v2, 0970; GFX900-NEXT:    v_bfi_b32 v0, s4, v1, v0971; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]972; GFX900-NEXT:    s_waitcnt vmcnt(0)973; GFX900-NEXT:    s_setpc_b64 s[30:31]974;975; GFX90A-LABEL: v_shuffle_v2i16_v3i16__2_1:976; GFX90A:       ; %bb.0:977; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)978; GFX90A-NEXT:    ;;#ASMSTART979; GFX90A-NEXT:    ; def v[0:1]980; GFX90A-NEXT:    ;;#ASMEND981; GFX90A-NEXT:    s_mov_b32 s4, 0xffff982; GFX90A-NEXT:    v_mov_b32_e32 v2, 0983; GFX90A-NEXT:    v_bfi_b32 v0, s4, v1, v0984; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]985; GFX90A-NEXT:    s_waitcnt vmcnt(0)986; GFX90A-NEXT:    s_setpc_b64 s[30:31]987;988; GFX942-LABEL: v_shuffle_v2i16_v3i16__2_1:989; GFX942:       ; %bb.0:990; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)991; GFX942-NEXT:    ;;#ASMSTART992; GFX942-NEXT:    ; def v[0:1]993; GFX942-NEXT:    ;;#ASMEND994; GFX942-NEXT:    s_mov_b32 s2, 0xffff995; GFX942-NEXT:    v_mov_b32_e32 v2, 0996; GFX942-NEXT:    v_bfi_b32 v0, s2, v1, v0997; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]998; GFX942-NEXT:    s_waitcnt vmcnt(0)999; GFX942-NEXT:    s_setpc_b64 s[30:31]1000  %vec0 = call <4 x i16> asm "; def $0", "=v"()1001  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1002  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 2, i32 1>1003  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41004  ret void1005}1006 1007define void @v_shuffle_v2i16_v3i16__3_1(ptr addrspace(1) inreg %ptr) {1008; GFX900-LABEL: v_shuffle_v2i16_v3i16__3_1:1009; GFX900:       ; %bb.0:1010; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1011; GFX900-NEXT:    v_mov_b32_e32 v2, 01012; GFX900-NEXT:    ;;#ASMSTART1013; GFX900-NEXT:    ; def v[0:1]1014; GFX900-NEXT:    ;;#ASMEND1015; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]1016; GFX900-NEXT:    s_waitcnt vmcnt(0)1017; GFX900-NEXT:    s_setpc_b64 s[30:31]1018;1019; GFX90A-LABEL: v_shuffle_v2i16_v3i16__3_1:1020; GFX90A:       ; %bb.0:1021; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1022; GFX90A-NEXT:    v_mov_b32_e32 v2, 01023; GFX90A-NEXT:    ;;#ASMSTART1024; GFX90A-NEXT:    ; def v[0:1]1025; GFX90A-NEXT:    ;;#ASMEND1026; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]1027; GFX90A-NEXT:    s_waitcnt vmcnt(0)1028; GFX90A-NEXT:    s_setpc_b64 s[30:31]1029;1030; GFX942-LABEL: v_shuffle_v2i16_v3i16__3_1:1031; GFX942:       ; %bb.0:1032; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1033; GFX942-NEXT:    v_mov_b32_e32 v2, 01034; GFX942-NEXT:    ;;#ASMSTART1035; GFX942-NEXT:    ; def v[0:1]1036; GFX942-NEXT:    ;;#ASMEND1037; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]1038; GFX942-NEXT:    s_waitcnt vmcnt(0)1039; GFX942-NEXT:    s_setpc_b64 s[30:31]1040  %vec0 = call <4 x i16> asm "; def $0", "=v"()1041  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1042  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 3, i32 1>1043  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41044  ret void1045}1046 1047define void @v_shuffle_v2i16_v3i16__4_1(ptr addrspace(1) inreg %ptr) {1048; GFX900-LABEL: v_shuffle_v2i16_v3i16__4_1:1049; GFX900:       ; %bb.0:1050; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1051; GFX900-NEXT:    ;;#ASMSTART1052; GFX900-NEXT:    ; def v[0:1]1053; GFX900-NEXT:    ;;#ASMEND1054; GFX900-NEXT:    s_mov_b32 s4, 0x70603021055; GFX900-NEXT:    v_mov_b32_e32 v3, 01056; GFX900-NEXT:    ;;#ASMSTART1057; GFX900-NEXT:    ; def v[1:2]1058; GFX900-NEXT:    ;;#ASMEND1059; GFX900-NEXT:    v_perm_b32 v0, v0, v1, s41060; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]1061; GFX900-NEXT:    s_waitcnt vmcnt(0)1062; GFX900-NEXT:    s_setpc_b64 s[30:31]1063;1064; GFX90A-LABEL: v_shuffle_v2i16_v3i16__4_1:1065; GFX90A:       ; %bb.0:1066; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1067; GFX90A-NEXT:    ;;#ASMSTART1068; GFX90A-NEXT:    ; def v[0:1]1069; GFX90A-NEXT:    ;;#ASMEND1070; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021071; GFX90A-NEXT:    v_mov_b32_e32 v4, 01072; GFX90A-NEXT:    ;;#ASMSTART1073; GFX90A-NEXT:    ; def v[2:3]1074; GFX90A-NEXT:    ;;#ASMEND1075; GFX90A-NEXT:    v_perm_b32 v0, v0, v2, s41076; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]1077; GFX90A-NEXT:    s_waitcnt vmcnt(0)1078; GFX90A-NEXT:    s_setpc_b64 s[30:31]1079;1080; GFX942-LABEL: v_shuffle_v2i16_v3i16__4_1:1081; GFX942:       ; %bb.0:1082; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1083; GFX942-NEXT:    ;;#ASMSTART1084; GFX942-NEXT:    ; def v[0:1]1085; GFX942-NEXT:    ;;#ASMEND1086; GFX942-NEXT:    s_mov_b32 s2, 0x70603021087; GFX942-NEXT:    v_mov_b32_e32 v4, 01088; GFX942-NEXT:    ;;#ASMSTART1089; GFX942-NEXT:    ; def v[2:3]1090; GFX942-NEXT:    ;;#ASMEND1091; GFX942-NEXT:    s_nop 01092; GFX942-NEXT:    v_perm_b32 v0, v0, v2, s21093; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]1094; GFX942-NEXT:    s_waitcnt vmcnt(0)1095; GFX942-NEXT:    s_setpc_b64 s[30:31]1096  %vec0 = call <4 x i16> asm "; def $0", "=v"()1097  %vec1 = call <4 x i16> asm "; def $0", "=v"()1098  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1099  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1100  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 4, i32 1>1101  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41102  ret void1103}1104 1105define void @v_shuffle_v2i16_v3i16__u_2(ptr addrspace(1) inreg %ptr) {1106; GFX900-LABEL: v_shuffle_v2i16_v3i16__u_2:1107; GFX900:       ; %bb.0:1108; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1109; GFX900-NEXT:    ;;#ASMSTART1110; GFX900-NEXT:    ; def v[0:1]1111; GFX900-NEXT:    ;;#ASMEND1112; GFX900-NEXT:    v_mov_b32_e32 v2, 01113; GFX900-NEXT:    v_lshlrev_b32_e32 v0, 16, v11114; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]1115; GFX900-NEXT:    s_waitcnt vmcnt(0)1116; GFX900-NEXT:    s_setpc_b64 s[30:31]1117;1118; GFX90A-LABEL: v_shuffle_v2i16_v3i16__u_2:1119; GFX90A:       ; %bb.0:1120; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1121; GFX90A-NEXT:    ;;#ASMSTART1122; GFX90A-NEXT:    ; def v[0:1]1123; GFX90A-NEXT:    ;;#ASMEND1124; GFX90A-NEXT:    v_mov_b32_e32 v2, 01125; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 16, v11126; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]1127; GFX90A-NEXT:    s_waitcnt vmcnt(0)1128; GFX90A-NEXT:    s_setpc_b64 s[30:31]1129;1130; GFX942-LABEL: v_shuffle_v2i16_v3i16__u_2:1131; GFX942:       ; %bb.0:1132; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1133; GFX942-NEXT:    ;;#ASMSTART1134; GFX942-NEXT:    ; def v[0:1]1135; GFX942-NEXT:    ;;#ASMEND1136; GFX942-NEXT:    v_mov_b32_e32 v2, 01137; GFX942-NEXT:    v_lshlrev_b32_e32 v0, 16, v11138; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]1139; GFX942-NEXT:    s_waitcnt vmcnt(0)1140; GFX942-NEXT:    s_setpc_b64 s[30:31]1141  %vec0 = call <4 x i16> asm "; def $0", "=v"()1142  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1143  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 poison, i32 2>1144  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41145  ret void1146}1147 1148define void @v_shuffle_v2i16_v3i16__0_2(ptr addrspace(1) inreg %ptr) {1149; GFX900-LABEL: v_shuffle_v2i16_v3i16__0_2:1150; GFX900:       ; %bb.0:1151; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1152; GFX900-NEXT:    ;;#ASMSTART1153; GFX900-NEXT:    ; def v[0:1]1154; GFX900-NEXT:    ;;#ASMEND1155; GFX900-NEXT:    s_mov_b32 s4, 0x50401001156; GFX900-NEXT:    v_mov_b32_e32 v2, 01157; GFX900-NEXT:    v_perm_b32 v0, v1, v0, s41158; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]1159; GFX900-NEXT:    s_waitcnt vmcnt(0)1160; GFX900-NEXT:    s_setpc_b64 s[30:31]1161;1162; GFX90A-LABEL: v_shuffle_v2i16_v3i16__0_2:1163; GFX90A:       ; %bb.0:1164; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1165; GFX90A-NEXT:    ;;#ASMSTART1166; GFX90A-NEXT:    ; def v[0:1]1167; GFX90A-NEXT:    ;;#ASMEND1168; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001169; GFX90A-NEXT:    v_mov_b32_e32 v2, 01170; GFX90A-NEXT:    v_perm_b32 v0, v1, v0, s41171; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]1172; GFX90A-NEXT:    s_waitcnt vmcnt(0)1173; GFX90A-NEXT:    s_setpc_b64 s[30:31]1174;1175; GFX942-LABEL: v_shuffle_v2i16_v3i16__0_2:1176; GFX942:       ; %bb.0:1177; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1178; GFX942-NEXT:    ;;#ASMSTART1179; GFX942-NEXT:    ; def v[0:1]1180; GFX942-NEXT:    ;;#ASMEND1181; GFX942-NEXT:    s_mov_b32 s2, 0x50401001182; GFX942-NEXT:    v_mov_b32_e32 v2, 01183; GFX942-NEXT:    v_perm_b32 v0, v1, v0, s21184; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]1185; GFX942-NEXT:    s_waitcnt vmcnt(0)1186; GFX942-NEXT:    s_setpc_b64 s[30:31]1187  %vec0 = call <4 x i16> asm "; def $0", "=v"()1188  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1189  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 0, i32 2>1190  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41191  ret void1192}1193 1194define void @v_shuffle_v2i16_v3i16__1_2(ptr addrspace(1) inreg %ptr) {1195; GFX900-LABEL: v_shuffle_v2i16_v3i16__1_2:1196; GFX900:       ; %bb.0:1197; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1198; GFX900-NEXT:    ;;#ASMSTART1199; GFX900-NEXT:    ; def v[0:1]1200; GFX900-NEXT:    ;;#ASMEND1201; GFX900-NEXT:    v_mov_b32_e32 v2, 01202; GFX900-NEXT:    v_alignbit_b32 v0, v1, v0, 161203; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]1204; GFX900-NEXT:    s_waitcnt vmcnt(0)1205; GFX900-NEXT:    s_setpc_b64 s[30:31]1206;1207; GFX90A-LABEL: v_shuffle_v2i16_v3i16__1_2:1208; GFX90A:       ; %bb.0:1209; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1210; GFX90A-NEXT:    ;;#ASMSTART1211; GFX90A-NEXT:    ; def v[0:1]1212; GFX90A-NEXT:    ;;#ASMEND1213; GFX90A-NEXT:    v_mov_b32_e32 v2, 01214; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v0, 161215; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]1216; GFX90A-NEXT:    s_waitcnt vmcnt(0)1217; GFX90A-NEXT:    s_setpc_b64 s[30:31]1218;1219; GFX942-LABEL: v_shuffle_v2i16_v3i16__1_2:1220; GFX942:       ; %bb.0:1221; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1222; GFX942-NEXT:    ;;#ASMSTART1223; GFX942-NEXT:    ; def v[0:1]1224; GFX942-NEXT:    ;;#ASMEND1225; GFX942-NEXT:    v_mov_b32_e32 v2, 01226; GFX942-NEXT:    v_alignbit_b32 v0, v1, v0, 161227; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]1228; GFX942-NEXT:    s_waitcnt vmcnt(0)1229; GFX942-NEXT:    s_setpc_b64 s[30:31]1230  %vec0 = call <4 x i16> asm "; def $0", "=v"()1231  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1232  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 1, i32 2>1233  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41234  ret void1235}1236 1237define void @v_shuffle_v2i16_v3i16__2_2(ptr addrspace(1) inreg %ptr) {1238; GFX900-LABEL: v_shuffle_v2i16_v3i16__2_2:1239; GFX900:       ; %bb.0:1240; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1241; GFX900-NEXT:    ;;#ASMSTART1242; GFX900-NEXT:    ; def v[0:1]1243; GFX900-NEXT:    ;;#ASMEND1244; GFX900-NEXT:    s_mov_b32 s4, 0x50401001245; GFX900-NEXT:    v_mov_b32_e32 v2, 01246; GFX900-NEXT:    v_perm_b32 v0, v1, v1, s41247; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]1248; GFX900-NEXT:    s_waitcnt vmcnt(0)1249; GFX900-NEXT:    s_setpc_b64 s[30:31]1250;1251; GFX90A-LABEL: v_shuffle_v2i16_v3i16__2_2:1252; GFX90A:       ; %bb.0:1253; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1254; GFX90A-NEXT:    ;;#ASMSTART1255; GFX90A-NEXT:    ; def v[0:1]1256; GFX90A-NEXT:    ;;#ASMEND1257; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001258; GFX90A-NEXT:    v_mov_b32_e32 v2, 01259; GFX90A-NEXT:    v_perm_b32 v0, v1, v1, s41260; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]1261; GFX90A-NEXT:    s_waitcnt vmcnt(0)1262; GFX90A-NEXT:    s_setpc_b64 s[30:31]1263;1264; GFX942-LABEL: v_shuffle_v2i16_v3i16__2_2:1265; GFX942:       ; %bb.0:1266; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1267; GFX942-NEXT:    ;;#ASMSTART1268; GFX942-NEXT:    ; def v[0:1]1269; GFX942-NEXT:    ;;#ASMEND1270; GFX942-NEXT:    s_mov_b32 s2, 0x50401001271; GFX942-NEXT:    v_mov_b32_e32 v2, 01272; GFX942-NEXT:    v_perm_b32 v0, v1, v1, s21273; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]1274; GFX942-NEXT:    s_waitcnt vmcnt(0)1275; GFX942-NEXT:    s_setpc_b64 s[30:31]1276  %vec0 = call <4 x i16> asm "; def $0", "=v"()1277  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1278  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 2, i32 2>1279  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41280  ret void1281}1282 1283define void @v_shuffle_v2i16_v3i16__3_2(ptr addrspace(1) inreg %ptr) {1284; GFX900-LABEL: v_shuffle_v2i16_v3i16__3_2:1285; GFX900:       ; %bb.0:1286; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1287; GFX900-NEXT:    ;;#ASMSTART1288; GFX900-NEXT:    ; def v[0:1]1289; GFX900-NEXT:    ;;#ASMEND1290; GFX900-NEXT:    v_mov_b32_e32 v2, 01291; GFX900-NEXT:    v_lshlrev_b32_e32 v0, 16, v11292; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]1293; GFX900-NEXT:    s_waitcnt vmcnt(0)1294; GFX900-NEXT:    s_setpc_b64 s[30:31]1295;1296; GFX90A-LABEL: v_shuffle_v2i16_v3i16__3_2:1297; GFX90A:       ; %bb.0:1298; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1299; GFX90A-NEXT:    ;;#ASMSTART1300; GFX90A-NEXT:    ; def v[0:1]1301; GFX90A-NEXT:    ;;#ASMEND1302; GFX90A-NEXT:    v_mov_b32_e32 v2, 01303; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 16, v11304; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]1305; GFX90A-NEXT:    s_waitcnt vmcnt(0)1306; GFX90A-NEXT:    s_setpc_b64 s[30:31]1307;1308; GFX942-LABEL: v_shuffle_v2i16_v3i16__3_2:1309; GFX942:       ; %bb.0:1310; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1311; GFX942-NEXT:    ;;#ASMSTART1312; GFX942-NEXT:    ; def v[0:1]1313; GFX942-NEXT:    ;;#ASMEND1314; GFX942-NEXT:    v_mov_b32_e32 v2, 01315; GFX942-NEXT:    v_lshlrev_b32_e32 v0, 16, v11316; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]1317; GFX942-NEXT:    s_waitcnt vmcnt(0)1318; GFX942-NEXT:    s_setpc_b64 s[30:31]1319  %vec0 = call <4 x i16> asm "; def $0", "=v"()1320  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1321  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 3, i32 2>1322  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41323  ret void1324}1325 1326define void @v_shuffle_v2i16_v3i16__4_2(ptr addrspace(1) inreg %ptr) {1327; GFX900-LABEL: v_shuffle_v2i16_v3i16__4_2:1328; GFX900:       ; %bb.0:1329; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1330; GFX900-NEXT:    ;;#ASMSTART1331; GFX900-NEXT:    ; def v[0:1]1332; GFX900-NEXT:    ;;#ASMEND1333; GFX900-NEXT:    v_mov_b32_e32 v4, 01334; GFX900-NEXT:    ;;#ASMSTART1335; GFX900-NEXT:    ; def v[2:3]1336; GFX900-NEXT:    ;;#ASMEND1337; GFX900-NEXT:    v_alignbit_b32 v0, v1, v2, 161338; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]1339; GFX900-NEXT:    s_waitcnt vmcnt(0)1340; GFX900-NEXT:    s_setpc_b64 s[30:31]1341;1342; GFX90A-LABEL: v_shuffle_v2i16_v3i16__4_2:1343; GFX90A:       ; %bb.0:1344; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1345; GFX90A-NEXT:    ;;#ASMSTART1346; GFX90A-NEXT:    ; def v[0:1]1347; GFX90A-NEXT:    ;;#ASMEND1348; GFX90A-NEXT:    v_mov_b32_e32 v4, 01349; GFX90A-NEXT:    ;;#ASMSTART1350; GFX90A-NEXT:    ; def v[2:3]1351; GFX90A-NEXT:    ;;#ASMEND1352; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v2, 161353; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]1354; GFX90A-NEXT:    s_waitcnt vmcnt(0)1355; GFX90A-NEXT:    s_setpc_b64 s[30:31]1356;1357; GFX942-LABEL: v_shuffle_v2i16_v3i16__4_2:1358; GFX942:       ; %bb.0:1359; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1360; GFX942-NEXT:    ;;#ASMSTART1361; GFX942-NEXT:    ; def v[0:1]1362; GFX942-NEXT:    ;;#ASMEND1363; GFX942-NEXT:    v_mov_b32_e32 v4, 01364; GFX942-NEXT:    ;;#ASMSTART1365; GFX942-NEXT:    ; def v[2:3]1366; GFX942-NEXT:    ;;#ASMEND1367; GFX942-NEXT:    s_nop 01368; GFX942-NEXT:    v_alignbit_b32 v0, v1, v2, 161369; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]1370; GFX942-NEXT:    s_waitcnt vmcnt(0)1371; GFX942-NEXT:    s_setpc_b64 s[30:31]1372  %vec0 = call <4 x i16> asm "; def $0", "=v"()1373  %vec1 = call <4 x i16> asm "; def $0", "=v"()1374  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1375  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1376  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 4, i32 2>1377  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41378  ret void1379}1380 1381define void @v_shuffle_v2i16_v3i16__u_3(ptr addrspace(1) inreg %ptr) {1382; GFX9-LABEL: v_shuffle_v2i16_v3i16__u_3:1383; GFX9:       ; %bb.0:1384; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1385; GFX9-NEXT:    s_setpc_b64 s[30:31]1386  %vec0 = call <4 x i16> asm "; def $0", "=v"()1387  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1388  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 poison, i32 3>1389  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41390  ret void1391}1392 1393define void @v_shuffle_v2i16_v3i16__0_3(ptr addrspace(1) inreg %ptr) {1394; GFX900-LABEL: v_shuffle_v2i16_v3i16__0_3:1395; GFX900:       ; %bb.0:1396; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1397; GFX900-NEXT:    v_mov_b32_e32 v2, 01398; GFX900-NEXT:    ;;#ASMSTART1399; GFX900-NEXT:    ; def v[0:1]1400; GFX900-NEXT:    ;;#ASMEND1401; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]1402; GFX900-NEXT:    s_waitcnt vmcnt(0)1403; GFX900-NEXT:    s_setpc_b64 s[30:31]1404;1405; GFX90A-LABEL: v_shuffle_v2i16_v3i16__0_3:1406; GFX90A:       ; %bb.0:1407; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1408; GFX90A-NEXT:    v_mov_b32_e32 v2, 01409; GFX90A-NEXT:    ;;#ASMSTART1410; GFX90A-NEXT:    ; def v[0:1]1411; GFX90A-NEXT:    ;;#ASMEND1412; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]1413; GFX90A-NEXT:    s_waitcnt vmcnt(0)1414; GFX90A-NEXT:    s_setpc_b64 s[30:31]1415;1416; GFX942-LABEL: v_shuffle_v2i16_v3i16__0_3:1417; GFX942:       ; %bb.0:1418; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1419; GFX942-NEXT:    v_mov_b32_e32 v2, 01420; GFX942-NEXT:    ;;#ASMSTART1421; GFX942-NEXT:    ; def v[0:1]1422; GFX942-NEXT:    ;;#ASMEND1423; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]1424; GFX942-NEXT:    s_waitcnt vmcnt(0)1425; GFX942-NEXT:    s_setpc_b64 s[30:31]1426  %vec0 = call <4 x i16> asm "; def $0", "=v"()1427  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1428  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 0, i32 3>1429  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41430  ret void1431}1432 1433define void @v_shuffle_v2i16_v3i16__1_3(ptr addrspace(1) inreg %ptr) {1434; GFX900-LABEL: v_shuffle_v2i16_v3i16__1_3:1435; GFX900:       ; %bb.0:1436; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1437; GFX900-NEXT:    ;;#ASMSTART1438; GFX900-NEXT:    ; def v[0:1]1439; GFX900-NEXT:    ;;#ASMEND1440; GFX900-NEXT:    v_mov_b32_e32 v2, 01441; GFX900-NEXT:    v_alignbit_b32 v0, s4, v0, 161442; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]1443; GFX900-NEXT:    s_waitcnt vmcnt(0)1444; GFX900-NEXT:    s_setpc_b64 s[30:31]1445;1446; GFX90A-LABEL: v_shuffle_v2i16_v3i16__1_3:1447; GFX90A:       ; %bb.0:1448; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1449; GFX90A-NEXT:    ;;#ASMSTART1450; GFX90A-NEXT:    ; def v[0:1]1451; GFX90A-NEXT:    ;;#ASMEND1452; GFX90A-NEXT:    v_mov_b32_e32 v2, 01453; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v0, 161454; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]1455; GFX90A-NEXT:    s_waitcnt vmcnt(0)1456; GFX90A-NEXT:    s_setpc_b64 s[30:31]1457;1458; GFX942-LABEL: v_shuffle_v2i16_v3i16__1_3:1459; GFX942:       ; %bb.0:1460; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1461; GFX942-NEXT:    ;;#ASMSTART1462; GFX942-NEXT:    ; def v[0:1]1463; GFX942-NEXT:    ;;#ASMEND1464; GFX942-NEXT:    v_mov_b32_e32 v2, 01465; GFX942-NEXT:    v_alignbit_b32 v0, s0, v0, 161466; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]1467; GFX942-NEXT:    s_waitcnt vmcnt(0)1468; GFX942-NEXT:    s_setpc_b64 s[30:31]1469  %vec0 = call <4 x i16> asm "; def $0", "=v"()1470  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1471  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 1, i32 3>1472  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41473  ret void1474}1475 1476define void @v_shuffle_v2i16_v3i16__2_3(ptr addrspace(1) inreg %ptr) {1477; GFX900-LABEL: v_shuffle_v2i16_v3i16__2_3:1478; GFX900:       ; %bb.0:1479; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1480; GFX900-NEXT:    v_mov_b32_e32 v2, 01481; GFX900-NEXT:    ;;#ASMSTART1482; GFX900-NEXT:    ; def v[0:1]1483; GFX900-NEXT:    ;;#ASMEND1484; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]1485; GFX900-NEXT:    s_waitcnt vmcnt(0)1486; GFX900-NEXT:    s_setpc_b64 s[30:31]1487;1488; GFX90A-LABEL: v_shuffle_v2i16_v3i16__2_3:1489; GFX90A:       ; %bb.0:1490; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1491; GFX90A-NEXT:    v_mov_b32_e32 v2, 01492; GFX90A-NEXT:    ;;#ASMSTART1493; GFX90A-NEXT:    ; def v[0:1]1494; GFX90A-NEXT:    ;;#ASMEND1495; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]1496; GFX90A-NEXT:    s_waitcnt vmcnt(0)1497; GFX90A-NEXT:    s_setpc_b64 s[30:31]1498;1499; GFX942-LABEL: v_shuffle_v2i16_v3i16__2_3:1500; GFX942:       ; %bb.0:1501; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1502; GFX942-NEXT:    v_mov_b32_e32 v2, 01503; GFX942-NEXT:    ;;#ASMSTART1504; GFX942-NEXT:    ; def v[0:1]1505; GFX942-NEXT:    ;;#ASMEND1506; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]1507; GFX942-NEXT:    s_waitcnt vmcnt(0)1508; GFX942-NEXT:    s_setpc_b64 s[30:31]1509  %vec0 = call <4 x i16> asm "; def $0", "=v"()1510  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1511  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 2, i32 3>1512  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41513  ret void1514}1515 1516define void @v_shuffle_v2i16_v3i16__3_3(ptr addrspace(1) inreg %ptr) {1517; GFX9-LABEL: v_shuffle_v2i16_v3i16__3_3:1518; GFX9:       ; %bb.0:1519; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1520; GFX9-NEXT:    s_setpc_b64 s[30:31]1521  %vec0 = call <4 x i16> asm "; def $0", "=v"()1522  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1523  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 3, i32 3>1524  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41525  ret void1526}1527 1528define void @v_shuffle_v2i16_v3i16__4_3(ptr addrspace(1) inreg %ptr) {1529; GFX900-LABEL: v_shuffle_v2i16_v3i16__4_3:1530; GFX900:       ; %bb.0:1531; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1532; GFX900-NEXT:    ;;#ASMSTART1533; GFX900-NEXT:    ; def v[0:1]1534; GFX900-NEXT:    ;;#ASMEND1535; GFX900-NEXT:    v_mov_b32_e32 v2, 01536; GFX900-NEXT:    v_alignbit_b32 v0, v0, v0, 161537; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]1538; GFX900-NEXT:    s_waitcnt vmcnt(0)1539; GFX900-NEXT:    s_setpc_b64 s[30:31]1540;1541; GFX90A-LABEL: v_shuffle_v2i16_v3i16__4_3:1542; GFX90A:       ; %bb.0:1543; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1544; GFX90A-NEXT:    ;;#ASMSTART1545; GFX90A-NEXT:    ; def v[0:1]1546; GFX90A-NEXT:    ;;#ASMEND1547; GFX90A-NEXT:    v_mov_b32_e32 v2, 01548; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v0, 161549; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]1550; GFX90A-NEXT:    s_waitcnt vmcnt(0)1551; GFX90A-NEXT:    s_setpc_b64 s[30:31]1552;1553; GFX942-LABEL: v_shuffle_v2i16_v3i16__4_3:1554; GFX942:       ; %bb.0:1555; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1556; GFX942-NEXT:    ;;#ASMSTART1557; GFX942-NEXT:    ; def v[0:1]1558; GFX942-NEXT:    ;;#ASMEND1559; GFX942-NEXT:    v_mov_b32_e32 v2, 01560; GFX942-NEXT:    v_alignbit_b32 v0, v0, v0, 161561; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]1562; GFX942-NEXT:    s_waitcnt vmcnt(0)1563; GFX942-NEXT:    s_setpc_b64 s[30:31]1564  %vec0 = call <4 x i16> asm "; def $0", "=v"()1565  %vec1 = call <4 x i16> asm "; def $0", "=v"()1566  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1567  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1568  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 4, i32 3>1569  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41570  ret void1571}1572 1573define void @v_shuffle_v2i16_v3i16__u_4(ptr addrspace(1) inreg %ptr) {1574; GFX900-LABEL: v_shuffle_v2i16_v3i16__u_4:1575; GFX900:       ; %bb.0:1576; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1577; GFX900-NEXT:    v_mov_b32_e32 v2, 01578; GFX900-NEXT:    ;;#ASMSTART1579; GFX900-NEXT:    ; def v[0:1]1580; GFX900-NEXT:    ;;#ASMEND1581; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]1582; GFX900-NEXT:    s_waitcnt vmcnt(0)1583; GFX900-NEXT:    s_setpc_b64 s[30:31]1584;1585; GFX90A-LABEL: v_shuffle_v2i16_v3i16__u_4:1586; GFX90A:       ; %bb.0:1587; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1588; GFX90A-NEXT:    v_mov_b32_e32 v2, 01589; GFX90A-NEXT:    ;;#ASMSTART1590; GFX90A-NEXT:    ; def v[0:1]1591; GFX90A-NEXT:    ;;#ASMEND1592; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]1593; GFX90A-NEXT:    s_waitcnt vmcnt(0)1594; GFX90A-NEXT:    s_setpc_b64 s[30:31]1595;1596; GFX942-LABEL: v_shuffle_v2i16_v3i16__u_4:1597; GFX942:       ; %bb.0:1598; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1599; GFX942-NEXT:    v_mov_b32_e32 v2, 01600; GFX942-NEXT:    ;;#ASMSTART1601; GFX942-NEXT:    ; def v[0:1]1602; GFX942-NEXT:    ;;#ASMEND1603; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]1604; GFX942-NEXT:    s_waitcnt vmcnt(0)1605; GFX942-NEXT:    s_setpc_b64 s[30:31]1606  %vec0 = call <4 x i16> asm "; def $0", "=v"()1607  %vec1 = call <4 x i16> asm "; def $0", "=v"()1608  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1609  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1610  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 poison, i32 4>1611  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41612  ret void1613}1614 1615define void @v_shuffle_v2i16_v3i16__0_4(ptr addrspace(1) inreg %ptr) {1616; GFX900-LABEL: v_shuffle_v2i16_v3i16__0_4:1617; GFX900:       ; %bb.0:1618; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1619; GFX900-NEXT:    ;;#ASMSTART1620; GFX900-NEXT:    ; def v[0:1]1621; GFX900-NEXT:    ;;#ASMEND1622; GFX900-NEXT:    s_mov_b32 s4, 0xffff1623; GFX900-NEXT:    v_mov_b32_e32 v3, 01624; GFX900-NEXT:    ;;#ASMSTART1625; GFX900-NEXT:    ; def v[1:2]1626; GFX900-NEXT:    ;;#ASMEND1627; GFX900-NEXT:    v_bfi_b32 v0, s4, v0, v11628; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]1629; GFX900-NEXT:    s_waitcnt vmcnt(0)1630; GFX900-NEXT:    s_setpc_b64 s[30:31]1631;1632; GFX90A-LABEL: v_shuffle_v2i16_v3i16__0_4:1633; GFX90A:       ; %bb.0:1634; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1635; GFX90A-NEXT:    ;;#ASMSTART1636; GFX90A-NEXT:    ; def v[0:1]1637; GFX90A-NEXT:    ;;#ASMEND1638; GFX90A-NEXT:    s_mov_b32 s4, 0xffff1639; GFX90A-NEXT:    v_mov_b32_e32 v4, 01640; GFX90A-NEXT:    ;;#ASMSTART1641; GFX90A-NEXT:    ; def v[2:3]1642; GFX90A-NEXT:    ;;#ASMEND1643; GFX90A-NEXT:    v_bfi_b32 v0, s4, v0, v21644; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]1645; GFX90A-NEXT:    s_waitcnt vmcnt(0)1646; GFX90A-NEXT:    s_setpc_b64 s[30:31]1647;1648; GFX942-LABEL: v_shuffle_v2i16_v3i16__0_4:1649; GFX942:       ; %bb.0:1650; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1651; GFX942-NEXT:    ;;#ASMSTART1652; GFX942-NEXT:    ; def v[0:1]1653; GFX942-NEXT:    ;;#ASMEND1654; GFX942-NEXT:    s_mov_b32 s2, 0xffff1655; GFX942-NEXT:    v_mov_b32_e32 v4, 01656; GFX942-NEXT:    ;;#ASMSTART1657; GFX942-NEXT:    ; def v[2:3]1658; GFX942-NEXT:    ;;#ASMEND1659; GFX942-NEXT:    s_nop 01660; GFX942-NEXT:    v_bfi_b32 v0, s2, v0, v21661; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]1662; GFX942-NEXT:    s_waitcnt vmcnt(0)1663; GFX942-NEXT:    s_setpc_b64 s[30:31]1664  %vec0 = call <4 x i16> asm "; def $0", "=v"()1665  %vec1 = call <4 x i16> asm "; def $0", "=v"()1666  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1667  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1668  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 0, i32 4>1669  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41670  ret void1671}1672 1673define void @v_shuffle_v2i16_v3i16__1_4(ptr addrspace(1) inreg %ptr) {1674; GFX900-LABEL: v_shuffle_v2i16_v3i16__1_4:1675; GFX900:       ; %bb.0:1676; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1677; GFX900-NEXT:    ;;#ASMSTART1678; GFX900-NEXT:    ; def v[0:1]1679; GFX900-NEXT:    ;;#ASMEND1680; GFX900-NEXT:    s_mov_b32 s4, 0x70603021681; GFX900-NEXT:    v_mov_b32_e32 v3, 01682; GFX900-NEXT:    ;;#ASMSTART1683; GFX900-NEXT:    ; def v[1:2]1684; GFX900-NEXT:    ;;#ASMEND1685; GFX900-NEXT:    v_perm_b32 v0, v1, v0, s41686; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]1687; GFX900-NEXT:    s_waitcnt vmcnt(0)1688; GFX900-NEXT:    s_setpc_b64 s[30:31]1689;1690; GFX90A-LABEL: v_shuffle_v2i16_v3i16__1_4:1691; GFX90A:       ; %bb.0:1692; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1693; GFX90A-NEXT:    ;;#ASMSTART1694; GFX90A-NEXT:    ; def v[0:1]1695; GFX90A-NEXT:    ;;#ASMEND1696; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021697; GFX90A-NEXT:    v_mov_b32_e32 v4, 01698; GFX90A-NEXT:    ;;#ASMSTART1699; GFX90A-NEXT:    ; def v[2:3]1700; GFX90A-NEXT:    ;;#ASMEND1701; GFX90A-NEXT:    v_perm_b32 v0, v2, v0, s41702; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]1703; GFX90A-NEXT:    s_waitcnt vmcnt(0)1704; GFX90A-NEXT:    s_setpc_b64 s[30:31]1705;1706; GFX942-LABEL: v_shuffle_v2i16_v3i16__1_4:1707; GFX942:       ; %bb.0:1708; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1709; GFX942-NEXT:    ;;#ASMSTART1710; GFX942-NEXT:    ; def v[0:1]1711; GFX942-NEXT:    ;;#ASMEND1712; GFX942-NEXT:    s_mov_b32 s2, 0x70603021713; GFX942-NEXT:    v_mov_b32_e32 v4, 01714; GFX942-NEXT:    ;;#ASMSTART1715; GFX942-NEXT:    ; def v[2:3]1716; GFX942-NEXT:    ;;#ASMEND1717; GFX942-NEXT:    s_nop 01718; GFX942-NEXT:    v_perm_b32 v0, v2, v0, s21719; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]1720; GFX942-NEXT:    s_waitcnt vmcnt(0)1721; GFX942-NEXT:    s_setpc_b64 s[30:31]1722  %vec0 = call <4 x i16> asm "; def $0", "=v"()1723  %vec1 = call <4 x i16> asm "; def $0", "=v"()1724  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1725  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1726  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 1, i32 4>1727  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41728  ret void1729}1730 1731define void @v_shuffle_v2i16_v3i16__2_4(ptr addrspace(1) inreg %ptr) {1732; GFX900-LABEL: v_shuffle_v2i16_v3i16__2_4:1733; GFX900:       ; %bb.0:1734; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1735; GFX900-NEXT:    ;;#ASMSTART1736; GFX900-NEXT:    ; def v[0:1]1737; GFX900-NEXT:    ;;#ASMEND1738; GFX900-NEXT:    s_mov_b32 s4, 0xffff1739; GFX900-NEXT:    v_mov_b32_e32 v4, 01740; GFX900-NEXT:    ;;#ASMSTART1741; GFX900-NEXT:    ; def v[2:3]1742; GFX900-NEXT:    ;;#ASMEND1743; GFX900-NEXT:    v_bfi_b32 v0, s4, v1, v21744; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]1745; GFX900-NEXT:    s_waitcnt vmcnt(0)1746; GFX900-NEXT:    s_setpc_b64 s[30:31]1747;1748; GFX90A-LABEL: v_shuffle_v2i16_v3i16__2_4:1749; GFX90A:       ; %bb.0:1750; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1751; GFX90A-NEXT:    ;;#ASMSTART1752; GFX90A-NEXT:    ; def v[0:1]1753; GFX90A-NEXT:    ;;#ASMEND1754; GFX90A-NEXT:    s_mov_b32 s4, 0xffff1755; GFX90A-NEXT:    v_mov_b32_e32 v4, 01756; GFX90A-NEXT:    ;;#ASMSTART1757; GFX90A-NEXT:    ; def v[2:3]1758; GFX90A-NEXT:    ;;#ASMEND1759; GFX90A-NEXT:    v_bfi_b32 v0, s4, v1, v21760; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]1761; GFX90A-NEXT:    s_waitcnt vmcnt(0)1762; GFX90A-NEXT:    s_setpc_b64 s[30:31]1763;1764; GFX942-LABEL: v_shuffle_v2i16_v3i16__2_4:1765; GFX942:       ; %bb.0:1766; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1767; GFX942-NEXT:    ;;#ASMSTART1768; GFX942-NEXT:    ; def v[0:1]1769; GFX942-NEXT:    ;;#ASMEND1770; GFX942-NEXT:    s_mov_b32 s2, 0xffff1771; GFX942-NEXT:    v_mov_b32_e32 v4, 01772; GFX942-NEXT:    ;;#ASMSTART1773; GFX942-NEXT:    ; def v[2:3]1774; GFX942-NEXT:    ;;#ASMEND1775; GFX942-NEXT:    s_nop 01776; GFX942-NEXT:    v_bfi_b32 v0, s2, v1, v21777; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]1778; GFX942-NEXT:    s_waitcnt vmcnt(0)1779; GFX942-NEXT:    s_setpc_b64 s[30:31]1780  %vec0 = call <4 x i16> asm "; def $0", "=v"()1781  %vec1 = call <4 x i16> asm "; def $0", "=v"()1782  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1783  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1784  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 2, i32 4>1785  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41786  ret void1787}1788 1789define void @v_shuffle_v2i16_v3i16__3_4(ptr addrspace(1) inreg %ptr) {1790; GFX900-LABEL: v_shuffle_v2i16_v3i16__3_4:1791; GFX900:       ; %bb.0:1792; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1793; GFX900-NEXT:    v_mov_b32_e32 v2, 01794; GFX900-NEXT:    ;;#ASMSTART1795; GFX900-NEXT:    ; def v[0:1]1796; GFX900-NEXT:    ;;#ASMEND1797; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]1798; GFX900-NEXT:    s_waitcnt vmcnt(0)1799; GFX900-NEXT:    s_setpc_b64 s[30:31]1800;1801; GFX90A-LABEL: v_shuffle_v2i16_v3i16__3_4:1802; GFX90A:       ; %bb.0:1803; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1804; GFX90A-NEXT:    v_mov_b32_e32 v2, 01805; GFX90A-NEXT:    ;;#ASMSTART1806; GFX90A-NEXT:    ; def v[0:1]1807; GFX90A-NEXT:    ;;#ASMEND1808; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]1809; GFX90A-NEXT:    s_waitcnt vmcnt(0)1810; GFX90A-NEXT:    s_setpc_b64 s[30:31]1811;1812; GFX942-LABEL: v_shuffle_v2i16_v3i16__3_4:1813; GFX942:       ; %bb.0:1814; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1815; GFX942-NEXT:    v_mov_b32_e32 v2, 01816; GFX942-NEXT:    ;;#ASMSTART1817; GFX942-NEXT:    ; def v[0:1]1818; GFX942-NEXT:    ;;#ASMEND1819; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]1820; GFX942-NEXT:    s_waitcnt vmcnt(0)1821; GFX942-NEXT:    s_setpc_b64 s[30:31]1822  %vec0 = call <4 x i16> asm "; def $0", "=v"()1823  %vec1 = call <4 x i16> asm "; def $0", "=v"()1824  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1825  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1826  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 3, i32 4>1827  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41828  ret void1829}1830 1831define void @v_shuffle_v2i16_v3i16__4_4(ptr addrspace(1) inreg %ptr) {1832; GFX900-LABEL: v_shuffle_v2i16_v3i16__4_4:1833; GFX900:       ; %bb.0:1834; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1835; GFX900-NEXT:    ;;#ASMSTART1836; GFX900-NEXT:    ; def v[0:1]1837; GFX900-NEXT:    ;;#ASMEND1838; GFX900-NEXT:    s_mov_b32 s4, 0x70603021839; GFX900-NEXT:    v_mov_b32_e32 v2, 01840; GFX900-NEXT:    v_perm_b32 v0, v0, v0, s41841; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]1842; GFX900-NEXT:    s_waitcnt vmcnt(0)1843; GFX900-NEXT:    s_setpc_b64 s[30:31]1844;1845; GFX90A-LABEL: v_shuffle_v2i16_v3i16__4_4:1846; GFX90A:       ; %bb.0:1847; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1848; GFX90A-NEXT:    ;;#ASMSTART1849; GFX90A-NEXT:    ; def v[0:1]1850; GFX90A-NEXT:    ;;#ASMEND1851; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021852; GFX90A-NEXT:    v_mov_b32_e32 v2, 01853; GFX90A-NEXT:    v_perm_b32 v0, v0, v0, s41854; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]1855; GFX90A-NEXT:    s_waitcnt vmcnt(0)1856; GFX90A-NEXT:    s_setpc_b64 s[30:31]1857;1858; GFX942-LABEL: v_shuffle_v2i16_v3i16__4_4:1859; GFX942:       ; %bb.0:1860; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1861; GFX942-NEXT:    ;;#ASMSTART1862; GFX942-NEXT:    ; def v[0:1]1863; GFX942-NEXT:    ;;#ASMEND1864; GFX942-NEXT:    s_mov_b32 s2, 0x70603021865; GFX942-NEXT:    v_mov_b32_e32 v2, 01866; GFX942-NEXT:    v_perm_b32 v0, v0, v0, s21867; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]1868; GFX942-NEXT:    s_waitcnt vmcnt(0)1869; GFX942-NEXT:    s_setpc_b64 s[30:31]1870  %vec0 = call <4 x i16> asm "; def $0", "=v"()1871  %vec1 = call <4 x i16> asm "; def $0", "=v"()1872  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1873  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1874  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 4, i32 4>1875  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41876  ret void1877}1878 1879define void @v_shuffle_v2i16_v3i16__u_5(ptr addrspace(1) inreg %ptr) {1880; GFX900-LABEL: v_shuffle_v2i16_v3i16__u_5:1881; GFX900:       ; %bb.0:1882; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1883; GFX900-NEXT:    ;;#ASMSTART1884; GFX900-NEXT:    ; def v[0:1]1885; GFX900-NEXT:    ;;#ASMEND1886; GFX900-NEXT:    v_mov_b32_e32 v2, 01887; GFX900-NEXT:    v_lshlrev_b32_e32 v0, 16, v11888; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]1889; GFX900-NEXT:    s_waitcnt vmcnt(0)1890; GFX900-NEXT:    s_setpc_b64 s[30:31]1891;1892; GFX90A-LABEL: v_shuffle_v2i16_v3i16__u_5:1893; GFX90A:       ; %bb.0:1894; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1895; GFX90A-NEXT:    ;;#ASMSTART1896; GFX90A-NEXT:    ; def v[0:1]1897; GFX90A-NEXT:    ;;#ASMEND1898; GFX90A-NEXT:    v_mov_b32_e32 v2, 01899; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 16, v11900; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]1901; GFX90A-NEXT:    s_waitcnt vmcnt(0)1902; GFX90A-NEXT:    s_setpc_b64 s[30:31]1903;1904; GFX942-LABEL: v_shuffle_v2i16_v3i16__u_5:1905; GFX942:       ; %bb.0:1906; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1907; GFX942-NEXT:    ;;#ASMSTART1908; GFX942-NEXT:    ; def v[0:1]1909; GFX942-NEXT:    ;;#ASMEND1910; GFX942-NEXT:    v_mov_b32_e32 v2, 01911; GFX942-NEXT:    v_lshlrev_b32_e32 v0, 16, v11912; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]1913; GFX942-NEXT:    s_waitcnt vmcnt(0)1914; GFX942-NEXT:    s_setpc_b64 s[30:31]1915  %vec0 = call <4 x i16> asm "; def $0", "=v"()1916  %vec1 = call <4 x i16> asm "; def $0", "=v"()1917  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1918  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1919  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 poison, i32 5>1920  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41921  ret void1922}1923 1924define void @v_shuffle_v2i16_v3i16__0_5(ptr addrspace(1) inreg %ptr) {1925; GFX900-LABEL: v_shuffle_v2i16_v3i16__0_5:1926; GFX900:       ; %bb.0:1927; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1928; GFX900-NEXT:    ;;#ASMSTART1929; GFX900-NEXT:    ; def v[0:1]1930; GFX900-NEXT:    ;;#ASMEND1931; GFX900-NEXT:    s_mov_b32 s4, 0x50401001932; GFX900-NEXT:    v_mov_b32_e32 v3, 01933; GFX900-NEXT:    ;;#ASMSTART1934; GFX900-NEXT:    ; def v[1:2]1935; GFX900-NEXT:    ;;#ASMEND1936; GFX900-NEXT:    v_perm_b32 v0, v2, v0, s41937; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]1938; GFX900-NEXT:    s_waitcnt vmcnt(0)1939; GFX900-NEXT:    s_setpc_b64 s[30:31]1940;1941; GFX90A-LABEL: v_shuffle_v2i16_v3i16__0_5:1942; GFX90A:       ; %bb.0:1943; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1944; GFX90A-NEXT:    ;;#ASMSTART1945; GFX90A-NEXT:    ; def v[0:1]1946; GFX90A-NEXT:    ;;#ASMEND1947; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001948; GFX90A-NEXT:    v_mov_b32_e32 v4, 01949; GFX90A-NEXT:    ;;#ASMSTART1950; GFX90A-NEXT:    ; def v[2:3]1951; GFX90A-NEXT:    ;;#ASMEND1952; GFX90A-NEXT:    v_perm_b32 v0, v3, v0, s41953; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]1954; GFX90A-NEXT:    s_waitcnt vmcnt(0)1955; GFX90A-NEXT:    s_setpc_b64 s[30:31]1956;1957; GFX942-LABEL: v_shuffle_v2i16_v3i16__0_5:1958; GFX942:       ; %bb.0:1959; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1960; GFX942-NEXT:    ;;#ASMSTART1961; GFX942-NEXT:    ; def v[0:1]1962; GFX942-NEXT:    ;;#ASMEND1963; GFX942-NEXT:    s_mov_b32 s2, 0x50401001964; GFX942-NEXT:    v_mov_b32_e32 v4, 01965; GFX942-NEXT:    ;;#ASMSTART1966; GFX942-NEXT:    ; def v[2:3]1967; GFX942-NEXT:    ;;#ASMEND1968; GFX942-NEXT:    s_nop 01969; GFX942-NEXT:    v_perm_b32 v0, v3, v0, s21970; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]1971; GFX942-NEXT:    s_waitcnt vmcnt(0)1972; GFX942-NEXT:    s_setpc_b64 s[30:31]1973  %vec0 = call <4 x i16> asm "; def $0", "=v"()1974  %vec1 = call <4 x i16> asm "; def $0", "=v"()1975  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1976  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1977  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 0, i32 5>1978  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41979  ret void1980}1981 1982define void @v_shuffle_v2i16_v3i16__1_5(ptr addrspace(1) inreg %ptr) {1983; GFX900-LABEL: v_shuffle_v2i16_v3i16__1_5:1984; GFX900:       ; %bb.0:1985; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1986; GFX900-NEXT:    ;;#ASMSTART1987; GFX900-NEXT:    ; def v[0:1]1988; GFX900-NEXT:    ;;#ASMEND1989; GFX900-NEXT:    v_mov_b32_e32 v3, 01990; GFX900-NEXT:    ;;#ASMSTART1991; GFX900-NEXT:    ; def v[1:2]1992; GFX900-NEXT:    ;;#ASMEND1993; GFX900-NEXT:    v_alignbit_b32 v0, v2, v0, 161994; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]1995; GFX900-NEXT:    s_waitcnt vmcnt(0)1996; GFX900-NEXT:    s_setpc_b64 s[30:31]1997;1998; GFX90A-LABEL: v_shuffle_v2i16_v3i16__1_5:1999; GFX90A:       ; %bb.0:2000; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2001; GFX90A-NEXT:    ;;#ASMSTART2002; GFX90A-NEXT:    ; def v[0:1]2003; GFX90A-NEXT:    ;;#ASMEND2004; GFX90A-NEXT:    v_mov_b32_e32 v4, 02005; GFX90A-NEXT:    ;;#ASMSTART2006; GFX90A-NEXT:    ; def v[2:3]2007; GFX90A-NEXT:    ;;#ASMEND2008; GFX90A-NEXT:    v_alignbit_b32 v0, v3, v0, 162009; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]2010; GFX90A-NEXT:    s_waitcnt vmcnt(0)2011; GFX90A-NEXT:    s_setpc_b64 s[30:31]2012;2013; GFX942-LABEL: v_shuffle_v2i16_v3i16__1_5:2014; GFX942:       ; %bb.0:2015; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2016; GFX942-NEXT:    ;;#ASMSTART2017; GFX942-NEXT:    ; def v[0:1]2018; GFX942-NEXT:    ;;#ASMEND2019; GFX942-NEXT:    v_mov_b32_e32 v4, 02020; GFX942-NEXT:    ;;#ASMSTART2021; GFX942-NEXT:    ; def v[2:3]2022; GFX942-NEXT:    ;;#ASMEND2023; GFX942-NEXT:    s_nop 02024; GFX942-NEXT:    v_alignbit_b32 v0, v3, v0, 162025; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]2026; GFX942-NEXT:    s_waitcnt vmcnt(0)2027; GFX942-NEXT:    s_setpc_b64 s[30:31]2028  %vec0 = call <4 x i16> asm "; def $0", "=v"()2029  %vec1 = call <4 x i16> asm "; def $0", "=v"()2030  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2031  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2032  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 1, i32 5>2033  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 42034  ret void2035}2036 2037define void @v_shuffle_v2i16_v3i16__2_5(ptr addrspace(1) inreg %ptr) {2038; GFX900-LABEL: v_shuffle_v2i16_v3i16__2_5:2039; GFX900:       ; %bb.0:2040; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2041; GFX900-NEXT:    ;;#ASMSTART2042; GFX900-NEXT:    ; def v[0:1]2043; GFX900-NEXT:    ;;#ASMEND2044; GFX900-NEXT:    s_mov_b32 s4, 0x50401002045; GFX900-NEXT:    v_mov_b32_e32 v4, 02046; GFX900-NEXT:    ;;#ASMSTART2047; GFX900-NEXT:    ; def v[2:3]2048; GFX900-NEXT:    ;;#ASMEND2049; GFX900-NEXT:    v_perm_b32 v0, v3, v1, s42050; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]2051; GFX900-NEXT:    s_waitcnt vmcnt(0)2052; GFX900-NEXT:    s_setpc_b64 s[30:31]2053;2054; GFX90A-LABEL: v_shuffle_v2i16_v3i16__2_5:2055; GFX90A:       ; %bb.0:2056; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2057; GFX90A-NEXT:    ;;#ASMSTART2058; GFX90A-NEXT:    ; def v[0:1]2059; GFX90A-NEXT:    ;;#ASMEND2060; GFX90A-NEXT:    s_mov_b32 s4, 0x50401002061; GFX90A-NEXT:    v_mov_b32_e32 v4, 02062; GFX90A-NEXT:    ;;#ASMSTART2063; GFX90A-NEXT:    ; def v[2:3]2064; GFX90A-NEXT:    ;;#ASMEND2065; GFX90A-NEXT:    v_perm_b32 v0, v3, v1, s42066; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]2067; GFX90A-NEXT:    s_waitcnt vmcnt(0)2068; GFX90A-NEXT:    s_setpc_b64 s[30:31]2069;2070; GFX942-LABEL: v_shuffle_v2i16_v3i16__2_5:2071; GFX942:       ; %bb.0:2072; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2073; GFX942-NEXT:    ;;#ASMSTART2074; GFX942-NEXT:    ; def v[0:1]2075; GFX942-NEXT:    ;;#ASMEND2076; GFX942-NEXT:    s_mov_b32 s2, 0x50401002077; GFX942-NEXT:    v_mov_b32_e32 v4, 02078; GFX942-NEXT:    ;;#ASMSTART2079; GFX942-NEXT:    ; def v[2:3]2080; GFX942-NEXT:    ;;#ASMEND2081; GFX942-NEXT:    s_nop 02082; GFX942-NEXT:    v_perm_b32 v0, v3, v1, s22083; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]2084; GFX942-NEXT:    s_waitcnt vmcnt(0)2085; GFX942-NEXT:    s_setpc_b64 s[30:31]2086  %vec0 = call <4 x i16> asm "; def $0", "=v"()2087  %vec1 = call <4 x i16> asm "; def $0", "=v"()2088  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2089  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2090  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 2, i32 5>2091  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 42092  ret void2093}2094 2095define void @v_shuffle_v2i16_v3i16__3_5(ptr addrspace(1) inreg %ptr) {2096; GFX900-LABEL: v_shuffle_v2i16_v3i16__3_5:2097; GFX900:       ; %bb.0:2098; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2099; GFX900-NEXT:    ;;#ASMSTART2100; GFX900-NEXT:    ; def v[0:1]2101; GFX900-NEXT:    ;;#ASMEND2102; GFX900-NEXT:    s_mov_b32 s4, 0x50401002103; GFX900-NEXT:    v_mov_b32_e32 v2, 02104; GFX900-NEXT:    v_perm_b32 v0, v1, v0, s42105; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]2106; GFX900-NEXT:    s_waitcnt vmcnt(0)2107; GFX900-NEXT:    s_setpc_b64 s[30:31]2108;2109; GFX90A-LABEL: v_shuffle_v2i16_v3i16__3_5:2110; GFX90A:       ; %bb.0:2111; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2112; GFX90A-NEXT:    ;;#ASMSTART2113; GFX90A-NEXT:    ; def v[0:1]2114; GFX90A-NEXT:    ;;#ASMEND2115; GFX90A-NEXT:    s_mov_b32 s4, 0x50401002116; GFX90A-NEXT:    v_mov_b32_e32 v2, 02117; GFX90A-NEXT:    v_perm_b32 v0, v1, v0, s42118; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]2119; GFX90A-NEXT:    s_waitcnt vmcnt(0)2120; GFX90A-NEXT:    s_setpc_b64 s[30:31]2121;2122; GFX942-LABEL: v_shuffle_v2i16_v3i16__3_5:2123; GFX942:       ; %bb.0:2124; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2125; GFX942-NEXT:    ;;#ASMSTART2126; GFX942-NEXT:    ; def v[0:1]2127; GFX942-NEXT:    ;;#ASMEND2128; GFX942-NEXT:    s_mov_b32 s2, 0x50401002129; GFX942-NEXT:    v_mov_b32_e32 v2, 02130; GFX942-NEXT:    v_perm_b32 v0, v1, v0, s22131; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]2132; GFX942-NEXT:    s_waitcnt vmcnt(0)2133; GFX942-NEXT:    s_setpc_b64 s[30:31]2134  %vec0 = call <4 x i16> asm "; def $0", "=v"()2135  %vec1 = call <4 x i16> asm "; def $0", "=v"()2136  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2137  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2138  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 3, i32 5>2139  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 42140  ret void2141}2142 2143define void @v_shuffle_v2i16_v3i16__4_5(ptr addrspace(1) inreg %ptr) {2144; GFX900-LABEL: v_shuffle_v2i16_v3i16__4_5:2145; GFX900:       ; %bb.0:2146; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2147; GFX900-NEXT:    ;;#ASMSTART2148; GFX900-NEXT:    ; def v[0:1]2149; GFX900-NEXT:    ;;#ASMEND2150; GFX900-NEXT:    v_mov_b32_e32 v2, 02151; GFX900-NEXT:    v_alignbit_b32 v0, v1, v0, 162152; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]2153; GFX900-NEXT:    s_waitcnt vmcnt(0)2154; GFX900-NEXT:    s_setpc_b64 s[30:31]2155;2156; GFX90A-LABEL: v_shuffle_v2i16_v3i16__4_5:2157; GFX90A:       ; %bb.0:2158; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2159; GFX90A-NEXT:    ;;#ASMSTART2160; GFX90A-NEXT:    ; def v[0:1]2161; GFX90A-NEXT:    ;;#ASMEND2162; GFX90A-NEXT:    v_mov_b32_e32 v2, 02163; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v0, 162164; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]2165; GFX90A-NEXT:    s_waitcnt vmcnt(0)2166; GFX90A-NEXT:    s_setpc_b64 s[30:31]2167;2168; GFX942-LABEL: v_shuffle_v2i16_v3i16__4_5:2169; GFX942:       ; %bb.0:2170; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2171; GFX942-NEXT:    ;;#ASMSTART2172; GFX942-NEXT:    ; def v[0:1]2173; GFX942-NEXT:    ;;#ASMEND2174; GFX942-NEXT:    v_mov_b32_e32 v2, 02175; GFX942-NEXT:    v_alignbit_b32 v0, v1, v0, 162176; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]2177; GFX942-NEXT:    s_waitcnt vmcnt(0)2178; GFX942-NEXT:    s_setpc_b64 s[30:31]2179  %vec0 = call <4 x i16> asm "; def $0", "=v"()2180  %vec1 = call <4 x i16> asm "; def $0", "=v"()2181  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2182  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2183  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 4, i32 5>2184  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 42185  ret void2186}2187 2188define void @s_shuffle_v2i16_v3i16__u_u() {2189; GFX9-LABEL: s_shuffle_v2i16_v3i16__u_u:2190; GFX9:       ; %bb.0:2191; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2192; GFX9-NEXT:    ;;#ASMSTART2193; GFX9-NEXT:    ; use s82194; GFX9-NEXT:    ;;#ASMEND2195; GFX9-NEXT:    s_setpc_b64 s[30:31]2196  %vec0 = call <4 x i16> asm "; def $0", "=s"()2197  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2198  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> poison2199  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)2200  ret void2201}2202 2203define void @s_shuffle_v2i16_v3i16__0_u() {2204; GFX900-LABEL: s_shuffle_v2i16_v3i16__0_u:2205; GFX900:       ; %bb.0:2206; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2207; GFX900-NEXT:    ;;#ASMSTART2208; GFX900-NEXT:    ; def s[8:9]2209; GFX900-NEXT:    ;;#ASMEND2210; GFX900-NEXT:    ;;#ASMSTART2211; GFX900-NEXT:    ; use s82212; GFX900-NEXT:    ;;#ASMEND2213; GFX900-NEXT:    s_setpc_b64 s[30:31]2214;2215; GFX90A-LABEL: s_shuffle_v2i16_v3i16__0_u:2216; GFX90A:       ; %bb.0:2217; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2218; GFX90A-NEXT:    ;;#ASMSTART2219; GFX90A-NEXT:    ; def s[8:9]2220; GFX90A-NEXT:    ;;#ASMEND2221; GFX90A-NEXT:    ;;#ASMSTART2222; GFX90A-NEXT:    ; use s82223; GFX90A-NEXT:    ;;#ASMEND2224; GFX90A-NEXT:    s_setpc_b64 s[30:31]2225;2226; GFX942-LABEL: s_shuffle_v2i16_v3i16__0_u:2227; GFX942:       ; %bb.0:2228; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2229; GFX942-NEXT:    ;;#ASMSTART2230; GFX942-NEXT:    ; def s[8:9]2231; GFX942-NEXT:    ;;#ASMEND2232; GFX942-NEXT:    s_nop 02233; GFX942-NEXT:    ;;#ASMSTART2234; GFX942-NEXT:    ; use s82235; GFX942-NEXT:    ;;#ASMEND2236; GFX942-NEXT:    s_setpc_b64 s[30:31]2237  %vec0 = call <4 x i16> asm "; def $0", "=s"()2238  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2239  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 0, i32 poison>2240  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)2241  ret void2242}2243 2244define void @s_shuffle_v2i16_v3i16__1_u() {2245; GFX900-LABEL: s_shuffle_v2i16_v3i16__1_u:2246; GFX900:       ; %bb.0:2247; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2248; GFX900-NEXT:    ;;#ASMSTART2249; GFX900-NEXT:    ; def s[4:5]2250; GFX900-NEXT:    ;;#ASMEND2251; GFX900-NEXT:    s_lshr_b32 s8, s4, 162252; GFX900-NEXT:    ;;#ASMSTART2253; GFX900-NEXT:    ; use s82254; GFX900-NEXT:    ;;#ASMEND2255; GFX900-NEXT:    s_setpc_b64 s[30:31]2256;2257; GFX90A-LABEL: s_shuffle_v2i16_v3i16__1_u:2258; GFX90A:       ; %bb.0:2259; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2260; GFX90A-NEXT:    ;;#ASMSTART2261; GFX90A-NEXT:    ; def s[4:5]2262; GFX90A-NEXT:    ;;#ASMEND2263; GFX90A-NEXT:    s_lshr_b32 s8, s4, 162264; GFX90A-NEXT:    ;;#ASMSTART2265; GFX90A-NEXT:    ; use s82266; GFX90A-NEXT:    ;;#ASMEND2267; GFX90A-NEXT:    s_setpc_b64 s[30:31]2268;2269; GFX942-LABEL: s_shuffle_v2i16_v3i16__1_u:2270; GFX942:       ; %bb.0:2271; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2272; GFX942-NEXT:    ;;#ASMSTART2273; GFX942-NEXT:    ; def s[0:1]2274; GFX942-NEXT:    ;;#ASMEND2275; GFX942-NEXT:    s_lshr_b32 s8, s0, 162276; GFX942-NEXT:    ;;#ASMSTART2277; GFX942-NEXT:    ; use s82278; GFX942-NEXT:    ;;#ASMEND2279; GFX942-NEXT:    s_setpc_b64 s[30:31]2280  %vec0 = call <4 x i16> asm "; def $0", "=s"()2281  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2282  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 1, i32 poison>2283  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)2284  ret void2285}2286 2287define void @s_shuffle_v2i16_v3i16__2_u() {2288; GFX900-LABEL: s_shuffle_v2i16_v3i16__2_u:2289; GFX900:       ; %bb.0:2290; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2291; GFX900-NEXT:    ;;#ASMSTART2292; GFX900-NEXT:    ; def s[4:5]2293; GFX900-NEXT:    ;;#ASMEND2294; GFX900-NEXT:    s_mov_b32 s8, s52295; GFX900-NEXT:    ;;#ASMSTART2296; GFX900-NEXT:    ; use s82297; GFX900-NEXT:    ;;#ASMEND2298; GFX900-NEXT:    s_setpc_b64 s[30:31]2299;2300; GFX90A-LABEL: s_shuffle_v2i16_v3i16__2_u:2301; GFX90A:       ; %bb.0:2302; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2303; GFX90A-NEXT:    ;;#ASMSTART2304; GFX90A-NEXT:    ; def s[4:5]2305; GFX90A-NEXT:    ;;#ASMEND2306; GFX90A-NEXT:    s_mov_b32 s8, s52307; GFX90A-NEXT:    ;;#ASMSTART2308; GFX90A-NEXT:    ; use s82309; GFX90A-NEXT:    ;;#ASMEND2310; GFX90A-NEXT:    s_setpc_b64 s[30:31]2311;2312; GFX942-LABEL: s_shuffle_v2i16_v3i16__2_u:2313; GFX942:       ; %bb.0:2314; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2315; GFX942-NEXT:    ;;#ASMSTART2316; GFX942-NEXT:    ; def s[0:1]2317; GFX942-NEXT:    ;;#ASMEND2318; GFX942-NEXT:    s_mov_b32 s8, s12319; GFX942-NEXT:    ;;#ASMSTART2320; GFX942-NEXT:    ; use s82321; GFX942-NEXT:    ;;#ASMEND2322; GFX942-NEXT:    s_setpc_b64 s[30:31]2323  %vec0 = call <4 x i16> asm "; def $0", "=s"()2324  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2325  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 2, i32 poison>2326  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)2327  ret void2328}2329 2330define void @s_shuffle_v2i16_v3i16__3_u() {2331; GFX9-LABEL: s_shuffle_v2i16_v3i16__3_u:2332; GFX9:       ; %bb.0:2333; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2334; GFX9-NEXT:    ;;#ASMSTART2335; GFX9-NEXT:    ; use s82336; GFX9-NEXT:    ;;#ASMEND2337; GFX9-NEXT:    s_setpc_b64 s[30:31]2338  %vec0 = call <4 x i16> asm "; def $0", "=s"()2339  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2340  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 3, i32 poison>2341  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)2342  ret void2343}2344 2345define void @s_shuffle_v2i16_v3i16__4_u() {2346; GFX900-LABEL: s_shuffle_v2i16_v3i16__4_u:2347; GFX900:       ; %bb.0:2348; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2349; GFX900-NEXT:    ;;#ASMSTART2350; GFX900-NEXT:    ; def s[4:5]2351; GFX900-NEXT:    ;;#ASMEND2352; GFX900-NEXT:    s_lshr_b32 s8, s4, 162353; GFX900-NEXT:    ;;#ASMSTART2354; GFX900-NEXT:    ; use s82355; GFX900-NEXT:    ;;#ASMEND2356; GFX900-NEXT:    s_setpc_b64 s[30:31]2357;2358; GFX90A-LABEL: s_shuffle_v2i16_v3i16__4_u:2359; GFX90A:       ; %bb.0:2360; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2361; GFX90A-NEXT:    ;;#ASMSTART2362; GFX90A-NEXT:    ; def s[4:5]2363; GFX90A-NEXT:    ;;#ASMEND2364; GFX90A-NEXT:    s_lshr_b32 s8, s4, 162365; GFX90A-NEXT:    ;;#ASMSTART2366; GFX90A-NEXT:    ; use s82367; GFX90A-NEXT:    ;;#ASMEND2368; GFX90A-NEXT:    s_setpc_b64 s[30:31]2369;2370; GFX942-LABEL: s_shuffle_v2i16_v3i16__4_u:2371; GFX942:       ; %bb.0:2372; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2373; GFX942-NEXT:    ;;#ASMSTART2374; GFX942-NEXT:    ; def s[0:1]2375; GFX942-NEXT:    ;;#ASMEND2376; GFX942-NEXT:    s_lshr_b32 s8, s0, 162377; GFX942-NEXT:    ;;#ASMSTART2378; GFX942-NEXT:    ; use s82379; GFX942-NEXT:    ;;#ASMEND2380; GFX942-NEXT:    s_setpc_b64 s[30:31]2381  %vec0 = call <4 x i16> asm "; def $0", "=s"()2382  %vec1 = call <4 x i16> asm "; def $0", "=s"()2383  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2384  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2385  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 4, i32 poison>2386  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)2387  ret void2388}2389 2390define void @s_shuffle_v2i16_v3i16__5_u() {2391; GFX900-LABEL: s_shuffle_v2i16_v3i16__5_u:2392; GFX900:       ; %bb.0:2393; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2394; GFX900-NEXT:    ;;#ASMSTART2395; GFX900-NEXT:    ; def s[4:5]2396; GFX900-NEXT:    ;;#ASMEND2397; GFX900-NEXT:    s_mov_b32 s8, s52398; GFX900-NEXT:    ;;#ASMSTART2399; GFX900-NEXT:    ; use s82400; GFX900-NEXT:    ;;#ASMEND2401; GFX900-NEXT:    s_setpc_b64 s[30:31]2402;2403; GFX90A-LABEL: s_shuffle_v2i16_v3i16__5_u:2404; GFX90A:       ; %bb.0:2405; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2406; GFX90A-NEXT:    ;;#ASMSTART2407; GFX90A-NEXT:    ; def s[4:5]2408; GFX90A-NEXT:    ;;#ASMEND2409; GFX90A-NEXT:    s_mov_b32 s8, s52410; GFX90A-NEXT:    ;;#ASMSTART2411; GFX90A-NEXT:    ; use s82412; GFX90A-NEXT:    ;;#ASMEND2413; GFX90A-NEXT:    s_setpc_b64 s[30:31]2414;2415; GFX942-LABEL: s_shuffle_v2i16_v3i16__5_u:2416; GFX942:       ; %bb.0:2417; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2418; GFX942-NEXT:    ;;#ASMSTART2419; GFX942-NEXT:    ; def s[0:1]2420; GFX942-NEXT:    ;;#ASMEND2421; GFX942-NEXT:    s_mov_b32 s8, s12422; GFX942-NEXT:    ;;#ASMSTART2423; GFX942-NEXT:    ; use s82424; GFX942-NEXT:    ;;#ASMEND2425; GFX942-NEXT:    s_setpc_b64 s[30:31]2426  %vec0 = call <4 x i16> asm "; def $0", "=s"()2427  %vec1 = call <4 x i16> asm "; def $0", "=s"()2428  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2429  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2430  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 5, i32 poison>2431  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)2432  ret void2433}2434 2435define void @s_shuffle_v2i16_v3i16__5_0() {2436; GFX900-LABEL: s_shuffle_v2i16_v3i16__5_0:2437; GFX900:       ; %bb.0:2438; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2439; GFX900-NEXT:    ;;#ASMSTART2440; GFX900-NEXT:    ; def s[4:5]2441; GFX900-NEXT:    ;;#ASMEND2442; GFX900-NEXT:    ;;#ASMSTART2443; GFX900-NEXT:    ; def s[6:7]2444; GFX900-NEXT:    ;;#ASMEND2445; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s42446; GFX900-NEXT:    ;;#ASMSTART2447; GFX900-NEXT:    ; use s82448; GFX900-NEXT:    ;;#ASMEND2449; GFX900-NEXT:    s_setpc_b64 s[30:31]2450;2451; GFX90A-LABEL: s_shuffle_v2i16_v3i16__5_0:2452; GFX90A:       ; %bb.0:2453; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2454; GFX90A-NEXT:    ;;#ASMSTART2455; GFX90A-NEXT:    ; def s[4:5]2456; GFX90A-NEXT:    ;;#ASMEND2457; GFX90A-NEXT:    ;;#ASMSTART2458; GFX90A-NEXT:    ; def s[6:7]2459; GFX90A-NEXT:    ;;#ASMEND2460; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s42461; GFX90A-NEXT:    ;;#ASMSTART2462; GFX90A-NEXT:    ; use s82463; GFX90A-NEXT:    ;;#ASMEND2464; GFX90A-NEXT:    s_setpc_b64 s[30:31]2465;2466; GFX942-LABEL: s_shuffle_v2i16_v3i16__5_0:2467; GFX942:       ; %bb.0:2468; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2469; GFX942-NEXT:    ;;#ASMSTART2470; GFX942-NEXT:    ; def s[0:1]2471; GFX942-NEXT:    ;;#ASMEND2472; GFX942-NEXT:    ;;#ASMSTART2473; GFX942-NEXT:    ; def s[2:3]2474; GFX942-NEXT:    ;;#ASMEND2475; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s02476; GFX942-NEXT:    ;;#ASMSTART2477; GFX942-NEXT:    ; use s82478; GFX942-NEXT:    ;;#ASMEND2479; GFX942-NEXT:    s_setpc_b64 s[30:31]2480  %vec0 = call <4 x i16> asm "; def $0", "=s"()2481  %vec1 = call <4 x i16> asm "; def $0", "=s"()2482  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2483  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2484  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 5, i32 0>2485  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)2486  ret void2487}2488 2489define void @s_shuffle_v2i16_v3i16__5_1() {2490; GFX900-LABEL: s_shuffle_v2i16_v3i16__5_1:2491; GFX900:       ; %bb.0:2492; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2493; GFX900-NEXT:    ;;#ASMSTART2494; GFX900-NEXT:    ; def s[4:5]2495; GFX900-NEXT:    ;;#ASMEND2496; GFX900-NEXT:    ;;#ASMSTART2497; GFX900-NEXT:    ; def s[6:7]2498; GFX900-NEXT:    ;;#ASMEND2499; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s7, s42500; GFX900-NEXT:    ;;#ASMSTART2501; GFX900-NEXT:    ; use s82502; GFX900-NEXT:    ;;#ASMEND2503; GFX900-NEXT:    s_setpc_b64 s[30:31]2504;2505; GFX90A-LABEL: s_shuffle_v2i16_v3i16__5_1:2506; GFX90A:       ; %bb.0:2507; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2508; GFX90A-NEXT:    ;;#ASMSTART2509; GFX90A-NEXT:    ; def s[4:5]2510; GFX90A-NEXT:    ;;#ASMEND2511; GFX90A-NEXT:    ;;#ASMSTART2512; GFX90A-NEXT:    ; def s[6:7]2513; GFX90A-NEXT:    ;;#ASMEND2514; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s7, s42515; GFX90A-NEXT:    ;;#ASMSTART2516; GFX90A-NEXT:    ; use s82517; GFX90A-NEXT:    ;;#ASMEND2518; GFX90A-NEXT:    s_setpc_b64 s[30:31]2519;2520; GFX942-LABEL: s_shuffle_v2i16_v3i16__5_1:2521; GFX942:       ; %bb.0:2522; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2523; GFX942-NEXT:    ;;#ASMSTART2524; GFX942-NEXT:    ; def s[0:1]2525; GFX942-NEXT:    ;;#ASMEND2526; GFX942-NEXT:    ;;#ASMSTART2527; GFX942-NEXT:    ; def s[2:3]2528; GFX942-NEXT:    ;;#ASMEND2529; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s3, s02530; GFX942-NEXT:    ;;#ASMSTART2531; GFX942-NEXT:    ; use s82532; GFX942-NEXT:    ;;#ASMEND2533; GFX942-NEXT:    s_setpc_b64 s[30:31]2534  %vec0 = call <4 x i16> asm "; def $0", "=s"()2535  %vec1 = call <4 x i16> asm "; def $0", "=s"()2536  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2537  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2538  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 5, i32 1>2539  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)2540  ret void2541}2542 2543define void @s_shuffle_v2i16_v3i16__5_2() {2544; GFX900-LABEL: s_shuffle_v2i16_v3i16__5_2:2545; GFX900:       ; %bb.0:2546; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2547; GFX900-NEXT:    ;;#ASMSTART2548; GFX900-NEXT:    ; def s[4:5]2549; GFX900-NEXT:    ;;#ASMEND2550; GFX900-NEXT:    ;;#ASMSTART2551; GFX900-NEXT:    ; def s[6:7]2552; GFX900-NEXT:    ;;#ASMEND2553; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s52554; GFX900-NEXT:    ;;#ASMSTART2555; GFX900-NEXT:    ; use s82556; GFX900-NEXT:    ;;#ASMEND2557; GFX900-NEXT:    s_setpc_b64 s[30:31]2558;2559; GFX90A-LABEL: s_shuffle_v2i16_v3i16__5_2:2560; GFX90A:       ; %bb.0:2561; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2562; GFX90A-NEXT:    ;;#ASMSTART2563; GFX90A-NEXT:    ; def s[4:5]2564; GFX90A-NEXT:    ;;#ASMEND2565; GFX90A-NEXT:    ;;#ASMSTART2566; GFX90A-NEXT:    ; def s[6:7]2567; GFX90A-NEXT:    ;;#ASMEND2568; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s52569; GFX90A-NEXT:    ;;#ASMSTART2570; GFX90A-NEXT:    ; use s82571; GFX90A-NEXT:    ;;#ASMEND2572; GFX90A-NEXT:    s_setpc_b64 s[30:31]2573;2574; GFX942-LABEL: s_shuffle_v2i16_v3i16__5_2:2575; GFX942:       ; %bb.0:2576; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2577; GFX942-NEXT:    ;;#ASMSTART2578; GFX942-NEXT:    ; def s[0:1]2579; GFX942-NEXT:    ;;#ASMEND2580; GFX942-NEXT:    ;;#ASMSTART2581; GFX942-NEXT:    ; def s[2:3]2582; GFX942-NEXT:    ;;#ASMEND2583; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s12584; GFX942-NEXT:    ;;#ASMSTART2585; GFX942-NEXT:    ; use s82586; GFX942-NEXT:    ;;#ASMEND2587; GFX942-NEXT:    s_setpc_b64 s[30:31]2588  %vec0 = call <4 x i16> asm "; def $0", "=s"()2589  %vec1 = call <4 x i16> asm "; def $0", "=s"()2590  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2591  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2592  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 5, i32 2>2593  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)2594  ret void2595}2596 2597define void @s_shuffle_v2i16_v3i16__5_3() {2598; GFX900-LABEL: s_shuffle_v2i16_v3i16__5_3:2599; GFX900:       ; %bb.0:2600; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2601; GFX900-NEXT:    ;;#ASMSTART2602; GFX900-NEXT:    ; def s[4:5]2603; GFX900-NEXT:    ;;#ASMEND2604; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s42605; GFX900-NEXT:    ;;#ASMSTART2606; GFX900-NEXT:    ; use s82607; GFX900-NEXT:    ;;#ASMEND2608; GFX900-NEXT:    s_setpc_b64 s[30:31]2609;2610; GFX90A-LABEL: s_shuffle_v2i16_v3i16__5_3:2611; GFX90A:       ; %bb.0:2612; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2613; GFX90A-NEXT:    ;;#ASMSTART2614; GFX90A-NEXT:    ; def s[4:5]2615; GFX90A-NEXT:    ;;#ASMEND2616; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s42617; GFX90A-NEXT:    ;;#ASMSTART2618; GFX90A-NEXT:    ; use s82619; GFX90A-NEXT:    ;;#ASMEND2620; GFX90A-NEXT:    s_setpc_b64 s[30:31]2621;2622; GFX942-LABEL: s_shuffle_v2i16_v3i16__5_3:2623; GFX942:       ; %bb.0:2624; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2625; GFX942-NEXT:    ;;#ASMSTART2626; GFX942-NEXT:    ; def s[0:1]2627; GFX942-NEXT:    ;;#ASMEND2628; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s02629; GFX942-NEXT:    ;;#ASMSTART2630; GFX942-NEXT:    ; use s82631; GFX942-NEXT:    ;;#ASMEND2632; GFX942-NEXT:    s_setpc_b64 s[30:31]2633  %vec0 = call <4 x i16> asm "; def $0", "=s"()2634  %vec1 = call <4 x i16> asm "; def $0", "=s"()2635  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2636  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2637  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 5, i32 3>2638  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)2639  ret void2640}2641 2642define void @s_shuffle_v2i16_v3i16__5_4() {2643; GFX900-LABEL: s_shuffle_v2i16_v3i16__5_4:2644; GFX900:       ; %bb.0:2645; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2646; GFX900-NEXT:    ;;#ASMSTART2647; GFX900-NEXT:    ; def s[4:5]2648; GFX900-NEXT:    ;;#ASMEND2649; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s5, s42650; GFX900-NEXT:    ;;#ASMSTART2651; GFX900-NEXT:    ; use s82652; GFX900-NEXT:    ;;#ASMEND2653; GFX900-NEXT:    s_setpc_b64 s[30:31]2654;2655; GFX90A-LABEL: s_shuffle_v2i16_v3i16__5_4:2656; GFX90A:       ; %bb.0:2657; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2658; GFX90A-NEXT:    ;;#ASMSTART2659; GFX90A-NEXT:    ; def s[4:5]2660; GFX90A-NEXT:    ;;#ASMEND2661; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s5, s42662; GFX90A-NEXT:    ;;#ASMSTART2663; GFX90A-NEXT:    ; use s82664; GFX90A-NEXT:    ;;#ASMEND2665; GFX90A-NEXT:    s_setpc_b64 s[30:31]2666;2667; GFX942-LABEL: s_shuffle_v2i16_v3i16__5_4:2668; GFX942:       ; %bb.0:2669; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2670; GFX942-NEXT:    ;;#ASMSTART2671; GFX942-NEXT:    ; def s[0:1]2672; GFX942-NEXT:    ;;#ASMEND2673; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s1, s02674; GFX942-NEXT:    ;;#ASMSTART2675; GFX942-NEXT:    ; use s82676; GFX942-NEXT:    ;;#ASMEND2677; GFX942-NEXT:    s_setpc_b64 s[30:31]2678  %vec0 = call <4 x i16> asm "; def $0", "=s"()2679  %vec1 = call <4 x i16> asm "; def $0", "=s"()2680  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2681  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2682  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 5, i32 4>2683  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)2684  ret void2685}2686 2687define void @s_shuffle_v2i16_v3i16__5_5() {2688; GFX900-LABEL: s_shuffle_v2i16_v3i16__5_5:2689; GFX900:       ; %bb.0:2690; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2691; GFX900-NEXT:    ;;#ASMSTART2692; GFX900-NEXT:    ; def s[4:5]2693; GFX900-NEXT:    ;;#ASMEND2694; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s52695; GFX900-NEXT:    ;;#ASMSTART2696; GFX900-NEXT:    ; use s82697; GFX900-NEXT:    ;;#ASMEND2698; GFX900-NEXT:    s_setpc_b64 s[30:31]2699;2700; GFX90A-LABEL: s_shuffle_v2i16_v3i16__5_5:2701; GFX90A:       ; %bb.0:2702; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2703; GFX90A-NEXT:    ;;#ASMSTART2704; GFX90A-NEXT:    ; def s[4:5]2705; GFX90A-NEXT:    ;;#ASMEND2706; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s52707; GFX90A-NEXT:    ;;#ASMSTART2708; GFX90A-NEXT:    ; use s82709; GFX90A-NEXT:    ;;#ASMEND2710; GFX90A-NEXT:    s_setpc_b64 s[30:31]2711;2712; GFX942-LABEL: s_shuffle_v2i16_v3i16__5_5:2713; GFX942:       ; %bb.0:2714; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2715; GFX942-NEXT:    ;;#ASMSTART2716; GFX942-NEXT:    ; def s[0:1]2717; GFX942-NEXT:    ;;#ASMEND2718; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s12719; GFX942-NEXT:    ;;#ASMSTART2720; GFX942-NEXT:    ; use s82721; GFX942-NEXT:    ;;#ASMEND2722; GFX942-NEXT:    s_setpc_b64 s[30:31]2723  %vec0 = call <4 x i16> asm "; def $0", "=s"()2724  %vec1 = call <4 x i16> asm "; def $0", "=s"()2725  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2726  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2727  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 5, i32 5>2728  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)2729  ret void2730}2731 2732define void @s_shuffle_v2i16_v3i16__u_0() {2733; GFX900-LABEL: s_shuffle_v2i16_v3i16__u_0:2734; GFX900:       ; %bb.0:2735; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2736; GFX900-NEXT:    ;;#ASMSTART2737; GFX900-NEXT:    ; def s[4:5]2738; GFX900-NEXT:    ;;#ASMEND2739; GFX900-NEXT:    s_lshl_b32 s8, s4, 162740; GFX900-NEXT:    ;;#ASMSTART2741; GFX900-NEXT:    ; use s82742; GFX900-NEXT:    ;;#ASMEND2743; GFX900-NEXT:    s_setpc_b64 s[30:31]2744;2745; GFX90A-LABEL: s_shuffle_v2i16_v3i16__u_0:2746; GFX90A:       ; %bb.0:2747; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2748; GFX90A-NEXT:    ;;#ASMSTART2749; GFX90A-NEXT:    ; def s[4:5]2750; GFX90A-NEXT:    ;;#ASMEND2751; GFX90A-NEXT:    s_lshl_b32 s8, s4, 162752; GFX90A-NEXT:    ;;#ASMSTART2753; GFX90A-NEXT:    ; use s82754; GFX90A-NEXT:    ;;#ASMEND2755; GFX90A-NEXT:    s_setpc_b64 s[30:31]2756;2757; GFX942-LABEL: s_shuffle_v2i16_v3i16__u_0:2758; GFX942:       ; %bb.0:2759; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2760; GFX942-NEXT:    ;;#ASMSTART2761; GFX942-NEXT:    ; def s[0:1]2762; GFX942-NEXT:    ;;#ASMEND2763; GFX942-NEXT:    s_lshl_b32 s8, s0, 162764; GFX942-NEXT:    ;;#ASMSTART2765; GFX942-NEXT:    ; use s82766; GFX942-NEXT:    ;;#ASMEND2767; GFX942-NEXT:    s_setpc_b64 s[30:31]2768  %vec0 = call <4 x i16> asm "; def $0", "=s"()2769  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2770  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 poison, i32 0>2771  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)2772  ret void2773}2774 2775define void @s_shuffle_v2i16_v3i16__0_0() {2776; GFX900-LABEL: s_shuffle_v2i16_v3i16__0_0:2777; GFX900:       ; %bb.0:2778; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2779; GFX900-NEXT:    ;;#ASMSTART2780; GFX900-NEXT:    ; def s[4:5]2781; GFX900-NEXT:    ;;#ASMEND2782; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s42783; GFX900-NEXT:    ;;#ASMSTART2784; GFX900-NEXT:    ; use s82785; GFX900-NEXT:    ;;#ASMEND2786; GFX900-NEXT:    s_setpc_b64 s[30:31]2787;2788; GFX90A-LABEL: s_shuffle_v2i16_v3i16__0_0:2789; GFX90A:       ; %bb.0:2790; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2791; GFX90A-NEXT:    ;;#ASMSTART2792; GFX90A-NEXT:    ; def s[4:5]2793; GFX90A-NEXT:    ;;#ASMEND2794; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s42795; GFX90A-NEXT:    ;;#ASMSTART2796; GFX90A-NEXT:    ; use s82797; GFX90A-NEXT:    ;;#ASMEND2798; GFX90A-NEXT:    s_setpc_b64 s[30:31]2799;2800; GFX942-LABEL: s_shuffle_v2i16_v3i16__0_0:2801; GFX942:       ; %bb.0:2802; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2803; GFX942-NEXT:    ;;#ASMSTART2804; GFX942-NEXT:    ; def s[0:1]2805; GFX942-NEXT:    ;;#ASMEND2806; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s02807; GFX942-NEXT:    ;;#ASMSTART2808; GFX942-NEXT:    ; use s82809; GFX942-NEXT:    ;;#ASMEND2810; GFX942-NEXT:    s_setpc_b64 s[30:31]2811  %vec0 = call <4 x i16> asm "; def $0", "=s"()2812  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2813  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> zeroinitializer2814  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)2815  ret void2816}2817 2818define void @s_shuffle_v2i16_v3i16__1_0() {2819; GFX900-LABEL: s_shuffle_v2i16_v3i16__1_0:2820; GFX900:       ; %bb.0:2821; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2822; GFX900-NEXT:    ;;#ASMSTART2823; GFX900-NEXT:    ; def s[4:5]2824; GFX900-NEXT:    ;;#ASMEND2825; GFX900-NEXT:    s_lshr_b32 s5, s4, 162826; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s42827; GFX900-NEXT:    ;;#ASMSTART2828; GFX900-NEXT:    ; use s82829; GFX900-NEXT:    ;;#ASMEND2830; GFX900-NEXT:    s_setpc_b64 s[30:31]2831;2832; GFX90A-LABEL: s_shuffle_v2i16_v3i16__1_0:2833; GFX90A:       ; %bb.0:2834; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2835; GFX90A-NEXT:    ;;#ASMSTART2836; GFX90A-NEXT:    ; def s[4:5]2837; GFX90A-NEXT:    ;;#ASMEND2838; GFX90A-NEXT:    s_lshr_b32 s5, s4, 162839; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s42840; GFX90A-NEXT:    ;;#ASMSTART2841; GFX90A-NEXT:    ; use s82842; GFX90A-NEXT:    ;;#ASMEND2843; GFX90A-NEXT:    s_setpc_b64 s[30:31]2844;2845; GFX942-LABEL: s_shuffle_v2i16_v3i16__1_0:2846; GFX942:       ; %bb.0:2847; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2848; GFX942-NEXT:    ;;#ASMSTART2849; GFX942-NEXT:    ; def s[0:1]2850; GFX942-NEXT:    ;;#ASMEND2851; GFX942-NEXT:    s_lshr_b32 s1, s0, 162852; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s02853; GFX942-NEXT:    ;;#ASMSTART2854; GFX942-NEXT:    ; use s82855; GFX942-NEXT:    ;;#ASMEND2856; GFX942-NEXT:    s_setpc_b64 s[30:31]2857  %vec0 = call <4 x i16> asm "; def $0", "=s"()2858  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2859  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 1, i32 0>2860  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)2861  ret void2862}2863 2864define void @s_shuffle_v2i16_v3i16__2_0() {2865; GFX900-LABEL: s_shuffle_v2i16_v3i16__2_0:2866; GFX900:       ; %bb.0:2867; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2868; GFX900-NEXT:    ;;#ASMSTART2869; GFX900-NEXT:    ; def s[4:5]2870; GFX900-NEXT:    ;;#ASMEND2871; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s42872; GFX900-NEXT:    ;;#ASMSTART2873; GFX900-NEXT:    ; use s82874; GFX900-NEXT:    ;;#ASMEND2875; GFX900-NEXT:    s_setpc_b64 s[30:31]2876;2877; GFX90A-LABEL: s_shuffle_v2i16_v3i16__2_0:2878; GFX90A:       ; %bb.0:2879; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2880; GFX90A-NEXT:    ;;#ASMSTART2881; GFX90A-NEXT:    ; def s[4:5]2882; GFX90A-NEXT:    ;;#ASMEND2883; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s42884; GFX90A-NEXT:    ;;#ASMSTART2885; GFX90A-NEXT:    ; use s82886; GFX90A-NEXT:    ;;#ASMEND2887; GFX90A-NEXT:    s_setpc_b64 s[30:31]2888;2889; GFX942-LABEL: s_shuffle_v2i16_v3i16__2_0:2890; GFX942:       ; %bb.0:2891; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2892; GFX942-NEXT:    ;;#ASMSTART2893; GFX942-NEXT:    ; def s[0:1]2894; GFX942-NEXT:    ;;#ASMEND2895; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s02896; GFX942-NEXT:    ;;#ASMSTART2897; GFX942-NEXT:    ; use s82898; GFX942-NEXT:    ;;#ASMEND2899; GFX942-NEXT:    s_setpc_b64 s[30:31]2900  %vec0 = call <4 x i16> asm "; def $0", "=s"()2901  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2902  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 2, i32 0>2903  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)2904  ret void2905}2906 2907define void @s_shuffle_v2i16_v3i16__3_0() {2908; GFX900-LABEL: s_shuffle_v2i16_v3i16__3_0:2909; GFX900:       ; %bb.0:2910; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2911; GFX900-NEXT:    ;;#ASMSTART2912; GFX900-NEXT:    ; def s[4:5]2913; GFX900-NEXT:    ;;#ASMEND2914; GFX900-NEXT:    s_lshl_b32 s8, s4, 162915; GFX900-NEXT:    ;;#ASMSTART2916; GFX900-NEXT:    ; use s82917; GFX900-NEXT:    ;;#ASMEND2918; GFX900-NEXT:    s_setpc_b64 s[30:31]2919;2920; GFX90A-LABEL: s_shuffle_v2i16_v3i16__3_0:2921; GFX90A:       ; %bb.0:2922; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2923; GFX90A-NEXT:    ;;#ASMSTART2924; GFX90A-NEXT:    ; def s[4:5]2925; GFX90A-NEXT:    ;;#ASMEND2926; GFX90A-NEXT:    s_lshl_b32 s8, s4, 162927; GFX90A-NEXT:    ;;#ASMSTART2928; GFX90A-NEXT:    ; use s82929; GFX90A-NEXT:    ;;#ASMEND2930; GFX90A-NEXT:    s_setpc_b64 s[30:31]2931;2932; GFX942-LABEL: s_shuffle_v2i16_v3i16__3_0:2933; GFX942:       ; %bb.0:2934; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2935; GFX942-NEXT:    ;;#ASMSTART2936; GFX942-NEXT:    ; def s[0:1]2937; GFX942-NEXT:    ;;#ASMEND2938; GFX942-NEXT:    s_lshl_b32 s8, s0, 162939; GFX942-NEXT:    ;;#ASMSTART2940; GFX942-NEXT:    ; use s82941; GFX942-NEXT:    ;;#ASMEND2942; GFX942-NEXT:    s_setpc_b64 s[30:31]2943  %vec0 = call <4 x i16> asm "; def $0", "=s"()2944  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2945  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 3, i32 0>2946  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)2947  ret void2948}2949 2950define void @s_shuffle_v2i16_v3i16__4_0() {2951; GFX900-LABEL: s_shuffle_v2i16_v3i16__4_0:2952; GFX900:       ; %bb.0:2953; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2954; GFX900-NEXT:    ;;#ASMSTART2955; GFX900-NEXT:    ; def s[4:5]2956; GFX900-NEXT:    ;;#ASMEND2957; GFX900-NEXT:    ;;#ASMSTART2958; GFX900-NEXT:    ; def s[6:7]2959; GFX900-NEXT:    ;;#ASMEND2960; GFX900-NEXT:    s_lshr_b32 s5, s6, 162961; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s42962; GFX900-NEXT:    ;;#ASMSTART2963; GFX900-NEXT:    ; use s82964; GFX900-NEXT:    ;;#ASMEND2965; GFX900-NEXT:    s_setpc_b64 s[30:31]2966;2967; GFX90A-LABEL: s_shuffle_v2i16_v3i16__4_0:2968; GFX90A:       ; %bb.0:2969; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2970; GFX90A-NEXT:    ;;#ASMSTART2971; GFX90A-NEXT:    ; def s[4:5]2972; GFX90A-NEXT:    ;;#ASMEND2973; GFX90A-NEXT:    ;;#ASMSTART2974; GFX90A-NEXT:    ; def s[6:7]2975; GFX90A-NEXT:    ;;#ASMEND2976; GFX90A-NEXT:    s_lshr_b32 s5, s6, 162977; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s42978; GFX90A-NEXT:    ;;#ASMSTART2979; GFX90A-NEXT:    ; use s82980; GFX90A-NEXT:    ;;#ASMEND2981; GFX90A-NEXT:    s_setpc_b64 s[30:31]2982;2983; GFX942-LABEL: s_shuffle_v2i16_v3i16__4_0:2984; GFX942:       ; %bb.0:2985; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2986; GFX942-NEXT:    ;;#ASMSTART2987; GFX942-NEXT:    ; def s[0:1]2988; GFX942-NEXT:    ;;#ASMEND2989; GFX942-NEXT:    ;;#ASMSTART2990; GFX942-NEXT:    ; def s[2:3]2991; GFX942-NEXT:    ;;#ASMEND2992; GFX942-NEXT:    s_lshr_b32 s1, s2, 162993; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s02994; GFX942-NEXT:    ;;#ASMSTART2995; GFX942-NEXT:    ; use s82996; GFX942-NEXT:    ;;#ASMEND2997; GFX942-NEXT:    s_setpc_b64 s[30:31]2998  %vec0 = call <4 x i16> asm "; def $0", "=s"()2999  %vec1 = call <4 x i16> asm "; def $0", "=s"()3000  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3001  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3002  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 4, i32 0>3003  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3004  ret void3005}3006 3007define void @s_shuffle_v2i16_v3i16__u_1() {3008; GFX900-LABEL: s_shuffle_v2i16_v3i16__u_1:3009; GFX900:       ; %bb.0:3010; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3011; GFX900-NEXT:    ;;#ASMSTART3012; GFX900-NEXT:    ; def s[8:9]3013; GFX900-NEXT:    ;;#ASMEND3014; GFX900-NEXT:    ;;#ASMSTART3015; GFX900-NEXT:    ; use s83016; GFX900-NEXT:    ;;#ASMEND3017; GFX900-NEXT:    s_setpc_b64 s[30:31]3018;3019; GFX90A-LABEL: s_shuffle_v2i16_v3i16__u_1:3020; GFX90A:       ; %bb.0:3021; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3022; GFX90A-NEXT:    ;;#ASMSTART3023; GFX90A-NEXT:    ; def s[8:9]3024; GFX90A-NEXT:    ;;#ASMEND3025; GFX90A-NEXT:    ;;#ASMSTART3026; GFX90A-NEXT:    ; use s83027; GFX90A-NEXT:    ;;#ASMEND3028; GFX90A-NEXT:    s_setpc_b64 s[30:31]3029;3030; GFX942-LABEL: s_shuffle_v2i16_v3i16__u_1:3031; GFX942:       ; %bb.0:3032; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3033; GFX942-NEXT:    ;;#ASMSTART3034; GFX942-NEXT:    ; def s[8:9]3035; GFX942-NEXT:    ;;#ASMEND3036; GFX942-NEXT:    s_nop 03037; GFX942-NEXT:    ;;#ASMSTART3038; GFX942-NEXT:    ; use s83039; GFX942-NEXT:    ;;#ASMEND3040; GFX942-NEXT:    s_setpc_b64 s[30:31]3041  %vec0 = call <4 x i16> asm "; def $0", "=s"()3042  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3043  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 poison, i32 1>3044  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3045  ret void3046}3047 3048define void @s_shuffle_v2i16_v3i16__0_1() {3049; GFX900-LABEL: s_shuffle_v2i16_v3i16__0_1:3050; GFX900:       ; %bb.0:3051; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3052; GFX900-NEXT:    ;;#ASMSTART3053; GFX900-NEXT:    ; def s[8:9]3054; GFX900-NEXT:    ;;#ASMEND3055; GFX900-NEXT:    ;;#ASMSTART3056; GFX900-NEXT:    ; use s83057; GFX900-NEXT:    ;;#ASMEND3058; GFX900-NEXT:    s_setpc_b64 s[30:31]3059;3060; GFX90A-LABEL: s_shuffle_v2i16_v3i16__0_1:3061; GFX90A:       ; %bb.0:3062; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3063; GFX90A-NEXT:    ;;#ASMSTART3064; GFX90A-NEXT:    ; def s[8:9]3065; GFX90A-NEXT:    ;;#ASMEND3066; GFX90A-NEXT:    ;;#ASMSTART3067; GFX90A-NEXT:    ; use s83068; GFX90A-NEXT:    ;;#ASMEND3069; GFX90A-NEXT:    s_setpc_b64 s[30:31]3070;3071; GFX942-LABEL: s_shuffle_v2i16_v3i16__0_1:3072; GFX942:       ; %bb.0:3073; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3074; GFX942-NEXT:    ;;#ASMSTART3075; GFX942-NEXT:    ; def s[8:9]3076; GFX942-NEXT:    ;;#ASMEND3077; GFX942-NEXT:    s_nop 03078; GFX942-NEXT:    ;;#ASMSTART3079; GFX942-NEXT:    ; use s83080; GFX942-NEXT:    ;;#ASMEND3081; GFX942-NEXT:    s_setpc_b64 s[30:31]3082  %vec0 = call <4 x i16> asm "; def $0", "=s"()3083  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3084  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 0, i32 1>3085  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3086  ret void3087}3088 3089define void @s_shuffle_v2i16_v3i16__1_1() {3090; GFX900-LABEL: s_shuffle_v2i16_v3i16__1_1:3091; GFX900:       ; %bb.0:3092; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3093; GFX900-NEXT:    ;;#ASMSTART3094; GFX900-NEXT:    ; def s[4:5]3095; GFX900-NEXT:    ;;#ASMEND3096; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s43097; GFX900-NEXT:    ;;#ASMSTART3098; GFX900-NEXT:    ; use s83099; GFX900-NEXT:    ;;#ASMEND3100; GFX900-NEXT:    s_setpc_b64 s[30:31]3101;3102; GFX90A-LABEL: s_shuffle_v2i16_v3i16__1_1:3103; GFX90A:       ; %bb.0:3104; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3105; GFX90A-NEXT:    ;;#ASMSTART3106; GFX90A-NEXT:    ; def s[4:5]3107; GFX90A-NEXT:    ;;#ASMEND3108; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s43109; GFX90A-NEXT:    ;;#ASMSTART3110; GFX90A-NEXT:    ; use s83111; GFX90A-NEXT:    ;;#ASMEND3112; GFX90A-NEXT:    s_setpc_b64 s[30:31]3113;3114; GFX942-LABEL: s_shuffle_v2i16_v3i16__1_1:3115; GFX942:       ; %bb.0:3116; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3117; GFX942-NEXT:    ;;#ASMSTART3118; GFX942-NEXT:    ; def s[0:1]3119; GFX942-NEXT:    ;;#ASMEND3120; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s03121; GFX942-NEXT:    ;;#ASMSTART3122; GFX942-NEXT:    ; use s83123; GFX942-NEXT:    ;;#ASMEND3124; GFX942-NEXT:    s_setpc_b64 s[30:31]3125  %vec0 = call <4 x i16> asm "; def $0", "=s"()3126  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3127  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 1, i32 1>3128  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3129  ret void3130}3131 3132define void @s_shuffle_v2i16_v3i16__2_1() {3133; GFX900-LABEL: s_shuffle_v2i16_v3i16__2_1:3134; GFX900:       ; %bb.0:3135; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3136; GFX900-NEXT:    ;;#ASMSTART3137; GFX900-NEXT:    ; def s[4:5]3138; GFX900-NEXT:    ;;#ASMEND3139; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s5, s43140; GFX900-NEXT:    ;;#ASMSTART3141; GFX900-NEXT:    ; use s83142; GFX900-NEXT:    ;;#ASMEND3143; GFX900-NEXT:    s_setpc_b64 s[30:31]3144;3145; GFX90A-LABEL: s_shuffle_v2i16_v3i16__2_1:3146; GFX90A:       ; %bb.0:3147; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3148; GFX90A-NEXT:    ;;#ASMSTART3149; GFX90A-NEXT:    ; def s[4:5]3150; GFX90A-NEXT:    ;;#ASMEND3151; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s5, s43152; GFX90A-NEXT:    ;;#ASMSTART3153; GFX90A-NEXT:    ; use s83154; GFX90A-NEXT:    ;;#ASMEND3155; GFX90A-NEXT:    s_setpc_b64 s[30:31]3156;3157; GFX942-LABEL: s_shuffle_v2i16_v3i16__2_1:3158; GFX942:       ; %bb.0:3159; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3160; GFX942-NEXT:    ;;#ASMSTART3161; GFX942-NEXT:    ; def s[0:1]3162; GFX942-NEXT:    ;;#ASMEND3163; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s1, s03164; GFX942-NEXT:    ;;#ASMSTART3165; GFX942-NEXT:    ; use s83166; GFX942-NEXT:    ;;#ASMEND3167; GFX942-NEXT:    s_setpc_b64 s[30:31]3168  %vec0 = call <4 x i16> asm "; def $0", "=s"()3169  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3170  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 2, i32 1>3171  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3172  ret void3173}3174 3175define void @s_shuffle_v2i16_v3i16__3_1() {3176; GFX900-LABEL: s_shuffle_v2i16_v3i16__3_1:3177; GFX900:       ; %bb.0:3178; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3179; GFX900-NEXT:    ;;#ASMSTART3180; GFX900-NEXT:    ; def s[8:9]3181; GFX900-NEXT:    ;;#ASMEND3182; GFX900-NEXT:    ;;#ASMSTART3183; GFX900-NEXT:    ; use s83184; GFX900-NEXT:    ;;#ASMEND3185; GFX900-NEXT:    s_setpc_b64 s[30:31]3186;3187; GFX90A-LABEL: s_shuffle_v2i16_v3i16__3_1:3188; GFX90A:       ; %bb.0:3189; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3190; GFX90A-NEXT:    ;;#ASMSTART3191; GFX90A-NEXT:    ; def s[8:9]3192; GFX90A-NEXT:    ;;#ASMEND3193; GFX90A-NEXT:    ;;#ASMSTART3194; GFX90A-NEXT:    ; use s83195; GFX90A-NEXT:    ;;#ASMEND3196; GFX90A-NEXT:    s_setpc_b64 s[30:31]3197;3198; GFX942-LABEL: s_shuffle_v2i16_v3i16__3_1:3199; GFX942:       ; %bb.0:3200; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3201; GFX942-NEXT:    ;;#ASMSTART3202; GFX942-NEXT:    ; def s[8:9]3203; GFX942-NEXT:    ;;#ASMEND3204; GFX942-NEXT:    s_nop 03205; GFX942-NEXT:    ;;#ASMSTART3206; GFX942-NEXT:    ; use s83207; GFX942-NEXT:    ;;#ASMEND3208; GFX942-NEXT:    s_setpc_b64 s[30:31]3209  %vec0 = call <4 x i16> asm "; def $0", "=s"()3210  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3211  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 3, i32 1>3212  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3213  ret void3214}3215 3216define void @s_shuffle_v2i16_v3i16__4_1() {3217; GFX900-LABEL: s_shuffle_v2i16_v3i16__4_1:3218; GFX900:       ; %bb.0:3219; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3220; GFX900-NEXT:    ;;#ASMSTART3221; GFX900-NEXT:    ; def s[4:5]3222; GFX900-NEXT:    ;;#ASMEND3223; GFX900-NEXT:    ;;#ASMSTART3224; GFX900-NEXT:    ; def s[6:7]3225; GFX900-NEXT:    ;;#ASMEND3226; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s6, s43227; GFX900-NEXT:    ;;#ASMSTART3228; GFX900-NEXT:    ; use s83229; GFX900-NEXT:    ;;#ASMEND3230; GFX900-NEXT:    s_setpc_b64 s[30:31]3231;3232; GFX90A-LABEL: s_shuffle_v2i16_v3i16__4_1:3233; GFX90A:       ; %bb.0:3234; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3235; GFX90A-NEXT:    ;;#ASMSTART3236; GFX90A-NEXT:    ; def s[4:5]3237; GFX90A-NEXT:    ;;#ASMEND3238; GFX90A-NEXT:    ;;#ASMSTART3239; GFX90A-NEXT:    ; def s[6:7]3240; GFX90A-NEXT:    ;;#ASMEND3241; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s6, s43242; GFX90A-NEXT:    ;;#ASMSTART3243; GFX90A-NEXT:    ; use s83244; GFX90A-NEXT:    ;;#ASMEND3245; GFX90A-NEXT:    s_setpc_b64 s[30:31]3246;3247; GFX942-LABEL: s_shuffle_v2i16_v3i16__4_1:3248; GFX942:       ; %bb.0:3249; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3250; GFX942-NEXT:    ;;#ASMSTART3251; GFX942-NEXT:    ; def s[0:1]3252; GFX942-NEXT:    ;;#ASMEND3253; GFX942-NEXT:    ;;#ASMSTART3254; GFX942-NEXT:    ; def s[2:3]3255; GFX942-NEXT:    ;;#ASMEND3256; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s2, s03257; GFX942-NEXT:    ;;#ASMSTART3258; GFX942-NEXT:    ; use s83259; GFX942-NEXT:    ;;#ASMEND3260; GFX942-NEXT:    s_setpc_b64 s[30:31]3261  %vec0 = call <4 x i16> asm "; def $0", "=s"()3262  %vec1 = call <4 x i16> asm "; def $0", "=s"()3263  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3264  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3265  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 4, i32 1>3266  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3267  ret void3268}3269 3270define void @s_shuffle_v2i16_v3i16__u_2() {3271; GFX900-LABEL: s_shuffle_v2i16_v3i16__u_2:3272; GFX900:       ; %bb.0:3273; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3274; GFX900-NEXT:    ;;#ASMSTART3275; GFX900-NEXT:    ; def s[4:5]3276; GFX900-NEXT:    ;;#ASMEND3277; GFX900-NEXT:    s_lshl_b32 s8, s5, 163278; GFX900-NEXT:    ;;#ASMSTART3279; GFX900-NEXT:    ; use s83280; GFX900-NEXT:    ;;#ASMEND3281; GFX900-NEXT:    s_setpc_b64 s[30:31]3282;3283; GFX90A-LABEL: s_shuffle_v2i16_v3i16__u_2:3284; GFX90A:       ; %bb.0:3285; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3286; GFX90A-NEXT:    ;;#ASMSTART3287; GFX90A-NEXT:    ; def s[4:5]3288; GFX90A-NEXT:    ;;#ASMEND3289; GFX90A-NEXT:    s_lshl_b32 s8, s5, 163290; GFX90A-NEXT:    ;;#ASMSTART3291; GFX90A-NEXT:    ; use s83292; GFX90A-NEXT:    ;;#ASMEND3293; GFX90A-NEXT:    s_setpc_b64 s[30:31]3294;3295; GFX942-LABEL: s_shuffle_v2i16_v3i16__u_2:3296; GFX942:       ; %bb.0:3297; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3298; GFX942-NEXT:    ;;#ASMSTART3299; GFX942-NEXT:    ; def s[0:1]3300; GFX942-NEXT:    ;;#ASMEND3301; GFX942-NEXT:    s_lshl_b32 s8, s1, 163302; GFX942-NEXT:    ;;#ASMSTART3303; GFX942-NEXT:    ; use s83304; GFX942-NEXT:    ;;#ASMEND3305; GFX942-NEXT:    s_setpc_b64 s[30:31]3306  %vec0 = call <4 x i16> asm "; def $0", "=s"()3307  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3308  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 poison, i32 2>3309  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3310  ret void3311}3312 3313define void @s_shuffle_v2i16_v3i16__0_2() {3314; GFX900-LABEL: s_shuffle_v2i16_v3i16__0_2:3315; GFX900:       ; %bb.0:3316; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3317; GFX900-NEXT:    ;;#ASMSTART3318; GFX900-NEXT:    ; def s[4:5]3319; GFX900-NEXT:    ;;#ASMEND3320; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s53321; GFX900-NEXT:    ;;#ASMSTART3322; GFX900-NEXT:    ; use s83323; GFX900-NEXT:    ;;#ASMEND3324; GFX900-NEXT:    s_setpc_b64 s[30:31]3325;3326; GFX90A-LABEL: s_shuffle_v2i16_v3i16__0_2:3327; GFX90A:       ; %bb.0:3328; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3329; GFX90A-NEXT:    ;;#ASMSTART3330; GFX90A-NEXT:    ; def s[4:5]3331; GFX90A-NEXT:    ;;#ASMEND3332; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s53333; GFX90A-NEXT:    ;;#ASMSTART3334; GFX90A-NEXT:    ; use s83335; GFX90A-NEXT:    ;;#ASMEND3336; GFX90A-NEXT:    s_setpc_b64 s[30:31]3337;3338; GFX942-LABEL: s_shuffle_v2i16_v3i16__0_2:3339; GFX942:       ; %bb.0:3340; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3341; GFX942-NEXT:    ;;#ASMSTART3342; GFX942-NEXT:    ; def s[0:1]3343; GFX942-NEXT:    ;;#ASMEND3344; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s13345; GFX942-NEXT:    ;;#ASMSTART3346; GFX942-NEXT:    ; use s83347; GFX942-NEXT:    ;;#ASMEND3348; GFX942-NEXT:    s_setpc_b64 s[30:31]3349  %vec0 = call <4 x i16> asm "; def $0", "=s"()3350  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3351  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 0, i32 2>3352  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3353  ret void3354}3355 3356define void @s_shuffle_v2i16_v3i16__1_2() {3357; GFX900-LABEL: s_shuffle_v2i16_v3i16__1_2:3358; GFX900:       ; %bb.0:3359; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3360; GFX900-NEXT:    ;;#ASMSTART3361; GFX900-NEXT:    ; def s[4:5]3362; GFX900-NEXT:    ;;#ASMEND3363; GFX900-NEXT:    s_lshr_b32 s4, s4, 163364; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s53365; GFX900-NEXT:    ;;#ASMSTART3366; GFX900-NEXT:    ; use s83367; GFX900-NEXT:    ;;#ASMEND3368; GFX900-NEXT:    s_setpc_b64 s[30:31]3369;3370; GFX90A-LABEL: s_shuffle_v2i16_v3i16__1_2:3371; GFX90A:       ; %bb.0:3372; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3373; GFX90A-NEXT:    ;;#ASMSTART3374; GFX90A-NEXT:    ; def s[4:5]3375; GFX90A-NEXT:    ;;#ASMEND3376; GFX90A-NEXT:    s_lshr_b32 s4, s4, 163377; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s53378; GFX90A-NEXT:    ;;#ASMSTART3379; GFX90A-NEXT:    ; use s83380; GFX90A-NEXT:    ;;#ASMEND3381; GFX90A-NEXT:    s_setpc_b64 s[30:31]3382;3383; GFX942-LABEL: s_shuffle_v2i16_v3i16__1_2:3384; GFX942:       ; %bb.0:3385; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3386; GFX942-NEXT:    ;;#ASMSTART3387; GFX942-NEXT:    ; def s[0:1]3388; GFX942-NEXT:    ;;#ASMEND3389; GFX942-NEXT:    s_lshr_b32 s0, s0, 163390; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s13391; GFX942-NEXT:    ;;#ASMSTART3392; GFX942-NEXT:    ; use s83393; GFX942-NEXT:    ;;#ASMEND3394; GFX942-NEXT:    s_setpc_b64 s[30:31]3395  %vec0 = call <4 x i16> asm "; def $0", "=s"()3396  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3397  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 1, i32 2>3398  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3399  ret void3400}3401 3402define void @s_shuffle_v2i16_v3i16__2_2() {3403; GFX900-LABEL: s_shuffle_v2i16_v3i16__2_2:3404; GFX900:       ; %bb.0:3405; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3406; GFX900-NEXT:    ;;#ASMSTART3407; GFX900-NEXT:    ; def s[4:5]3408; GFX900-NEXT:    ;;#ASMEND3409; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s53410; GFX900-NEXT:    ;;#ASMSTART3411; GFX900-NEXT:    ; use s83412; GFX900-NEXT:    ;;#ASMEND3413; GFX900-NEXT:    s_setpc_b64 s[30:31]3414;3415; GFX90A-LABEL: s_shuffle_v2i16_v3i16__2_2:3416; GFX90A:       ; %bb.0:3417; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3418; GFX90A-NEXT:    ;;#ASMSTART3419; GFX90A-NEXT:    ; def s[4:5]3420; GFX90A-NEXT:    ;;#ASMEND3421; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s53422; GFX90A-NEXT:    ;;#ASMSTART3423; GFX90A-NEXT:    ; use s83424; GFX90A-NEXT:    ;;#ASMEND3425; GFX90A-NEXT:    s_setpc_b64 s[30:31]3426;3427; GFX942-LABEL: s_shuffle_v2i16_v3i16__2_2:3428; GFX942:       ; %bb.0:3429; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3430; GFX942-NEXT:    ;;#ASMSTART3431; GFX942-NEXT:    ; def s[0:1]3432; GFX942-NEXT:    ;;#ASMEND3433; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s13434; GFX942-NEXT:    ;;#ASMSTART3435; GFX942-NEXT:    ; use s83436; GFX942-NEXT:    ;;#ASMEND3437; GFX942-NEXT:    s_setpc_b64 s[30:31]3438  %vec0 = call <4 x i16> asm "; def $0", "=s"()3439  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3440  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 2, i32 2>3441  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3442  ret void3443}3444 3445define void @s_shuffle_v2i16_v3i16__3_2() {3446; GFX900-LABEL: s_shuffle_v2i16_v3i16__3_2:3447; GFX900:       ; %bb.0:3448; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3449; GFX900-NEXT:    ;;#ASMSTART3450; GFX900-NEXT:    ; def s[4:5]3451; GFX900-NEXT:    ;;#ASMEND3452; GFX900-NEXT:    s_lshl_b32 s8, s5, 163453; GFX900-NEXT:    ;;#ASMSTART3454; GFX900-NEXT:    ; use s83455; GFX900-NEXT:    ;;#ASMEND3456; GFX900-NEXT:    s_setpc_b64 s[30:31]3457;3458; GFX90A-LABEL: s_shuffle_v2i16_v3i16__3_2:3459; GFX90A:       ; %bb.0:3460; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3461; GFX90A-NEXT:    ;;#ASMSTART3462; GFX90A-NEXT:    ; def s[4:5]3463; GFX90A-NEXT:    ;;#ASMEND3464; GFX90A-NEXT:    s_lshl_b32 s8, s5, 163465; GFX90A-NEXT:    ;;#ASMSTART3466; GFX90A-NEXT:    ; use s83467; GFX90A-NEXT:    ;;#ASMEND3468; GFX90A-NEXT:    s_setpc_b64 s[30:31]3469;3470; GFX942-LABEL: s_shuffle_v2i16_v3i16__3_2:3471; GFX942:       ; %bb.0:3472; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3473; GFX942-NEXT:    ;;#ASMSTART3474; GFX942-NEXT:    ; def s[0:1]3475; GFX942-NEXT:    ;;#ASMEND3476; GFX942-NEXT:    s_lshl_b32 s8, s1, 163477; GFX942-NEXT:    ;;#ASMSTART3478; GFX942-NEXT:    ; use s83479; GFX942-NEXT:    ;;#ASMEND3480; GFX942-NEXT:    s_setpc_b64 s[30:31]3481  %vec0 = call <4 x i16> asm "; def $0", "=s"()3482  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3483  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 3, i32 2>3484  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3485  ret void3486}3487 3488define void @s_shuffle_v2i16_v3i16__4_2() {3489; GFX900-LABEL: s_shuffle_v2i16_v3i16__4_2:3490; GFX900:       ; %bb.0:3491; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3492; GFX900-NEXT:    ;;#ASMSTART3493; GFX900-NEXT:    ; def s[4:5]3494; GFX900-NEXT:    ;;#ASMEND3495; GFX900-NEXT:    ;;#ASMSTART3496; GFX900-NEXT:    ; def s[6:7]3497; GFX900-NEXT:    ;;#ASMEND3498; GFX900-NEXT:    s_lshr_b32 s4, s6, 163499; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s53500; GFX900-NEXT:    ;;#ASMSTART3501; GFX900-NEXT:    ; use s83502; GFX900-NEXT:    ;;#ASMEND3503; GFX900-NEXT:    s_setpc_b64 s[30:31]3504;3505; GFX90A-LABEL: s_shuffle_v2i16_v3i16__4_2:3506; GFX90A:       ; %bb.0:3507; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3508; GFX90A-NEXT:    ;;#ASMSTART3509; GFX90A-NEXT:    ; def s[4:5]3510; GFX90A-NEXT:    ;;#ASMEND3511; GFX90A-NEXT:    ;;#ASMSTART3512; GFX90A-NEXT:    ; def s[6:7]3513; GFX90A-NEXT:    ;;#ASMEND3514; GFX90A-NEXT:    s_lshr_b32 s4, s6, 163515; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s53516; GFX90A-NEXT:    ;;#ASMSTART3517; GFX90A-NEXT:    ; use s83518; GFX90A-NEXT:    ;;#ASMEND3519; GFX90A-NEXT:    s_setpc_b64 s[30:31]3520;3521; GFX942-LABEL: s_shuffle_v2i16_v3i16__4_2:3522; GFX942:       ; %bb.0:3523; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3524; GFX942-NEXT:    ;;#ASMSTART3525; GFX942-NEXT:    ; def s[0:1]3526; GFX942-NEXT:    ;;#ASMEND3527; GFX942-NEXT:    ;;#ASMSTART3528; GFX942-NEXT:    ; def s[2:3]3529; GFX942-NEXT:    ;;#ASMEND3530; GFX942-NEXT:    s_lshr_b32 s0, s2, 163531; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s13532; GFX942-NEXT:    ;;#ASMSTART3533; GFX942-NEXT:    ; use s83534; GFX942-NEXT:    ;;#ASMEND3535; GFX942-NEXT:    s_setpc_b64 s[30:31]3536  %vec0 = call <4 x i16> asm "; def $0", "=s"()3537  %vec1 = call <4 x i16> asm "; def $0", "=s"()3538  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3539  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3540  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 4, i32 2>3541  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3542  ret void3543}3544 3545define void @s_shuffle_v2i16_v3i16__u_3() {3546; GFX9-LABEL: s_shuffle_v2i16_v3i16__u_3:3547; GFX9:       ; %bb.0:3548; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3549; GFX9-NEXT:    ;;#ASMSTART3550; GFX9-NEXT:    ; use s83551; GFX9-NEXT:    ;;#ASMEND3552; GFX9-NEXT:    s_setpc_b64 s[30:31]3553  %vec0 = call <4 x i16> asm "; def $0", "=s"()3554  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3555  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 poison, i32 3>3556  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3557  ret void3558}3559 3560define void @s_shuffle_v2i16_v3i16__0_3() {3561; GFX900-LABEL: s_shuffle_v2i16_v3i16__0_3:3562; GFX900:       ; %bb.0:3563; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3564; GFX900-NEXT:    ;;#ASMSTART3565; GFX900-NEXT:    ; def s[8:9]3566; GFX900-NEXT:    ;;#ASMEND3567; GFX900-NEXT:    ;;#ASMSTART3568; GFX900-NEXT:    ; use s83569; GFX900-NEXT:    ;;#ASMEND3570; GFX900-NEXT:    s_setpc_b64 s[30:31]3571;3572; GFX90A-LABEL: s_shuffle_v2i16_v3i16__0_3:3573; GFX90A:       ; %bb.0:3574; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3575; GFX90A-NEXT:    ;;#ASMSTART3576; GFX90A-NEXT:    ; def s[8:9]3577; GFX90A-NEXT:    ;;#ASMEND3578; GFX90A-NEXT:    ;;#ASMSTART3579; GFX90A-NEXT:    ; use s83580; GFX90A-NEXT:    ;;#ASMEND3581; GFX90A-NEXT:    s_setpc_b64 s[30:31]3582;3583; GFX942-LABEL: s_shuffle_v2i16_v3i16__0_3:3584; GFX942:       ; %bb.0:3585; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3586; GFX942-NEXT:    ;;#ASMSTART3587; GFX942-NEXT:    ; def s[8:9]3588; GFX942-NEXT:    ;;#ASMEND3589; GFX942-NEXT:    s_nop 03590; GFX942-NEXT:    ;;#ASMSTART3591; GFX942-NEXT:    ; use s83592; GFX942-NEXT:    ;;#ASMEND3593; GFX942-NEXT:    s_setpc_b64 s[30:31]3594  %vec0 = call <4 x i16> asm "; def $0", "=s"()3595  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3596  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 0, i32 3>3597  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3598  ret void3599}3600 3601define void @s_shuffle_v2i16_v3i16__1_3() {3602; GFX900-LABEL: s_shuffle_v2i16_v3i16__1_3:3603; GFX900:       ; %bb.0:3604; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3605; GFX900-NEXT:    ;;#ASMSTART3606; GFX900-NEXT:    ; def s[4:5]3607; GFX900-NEXT:    ;;#ASMEND3608; GFX900-NEXT:    s_lshr_b32 s8, s4, 163609; GFX900-NEXT:    ;;#ASMSTART3610; GFX900-NEXT:    ; use s83611; GFX900-NEXT:    ;;#ASMEND3612; GFX900-NEXT:    s_setpc_b64 s[30:31]3613;3614; GFX90A-LABEL: s_shuffle_v2i16_v3i16__1_3:3615; GFX90A:       ; %bb.0:3616; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3617; GFX90A-NEXT:    ;;#ASMSTART3618; GFX90A-NEXT:    ; def s[4:5]3619; GFX90A-NEXT:    ;;#ASMEND3620; GFX90A-NEXT:    s_lshr_b32 s8, s4, 163621; GFX90A-NEXT:    ;;#ASMSTART3622; GFX90A-NEXT:    ; use s83623; GFX90A-NEXT:    ;;#ASMEND3624; GFX90A-NEXT:    s_setpc_b64 s[30:31]3625;3626; GFX942-LABEL: s_shuffle_v2i16_v3i16__1_3:3627; GFX942:       ; %bb.0:3628; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3629; GFX942-NEXT:    ;;#ASMSTART3630; GFX942-NEXT:    ; def s[0:1]3631; GFX942-NEXT:    ;;#ASMEND3632; GFX942-NEXT:    s_lshr_b32 s8, s0, 163633; GFX942-NEXT:    ;;#ASMSTART3634; GFX942-NEXT:    ; use s83635; GFX942-NEXT:    ;;#ASMEND3636; GFX942-NEXT:    s_setpc_b64 s[30:31]3637  %vec0 = call <4 x i16> asm "; def $0", "=s"()3638  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3639  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 1, i32 3>3640  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3641  ret void3642}3643 3644define void @s_shuffle_v2i16_v3i16__2_3() {3645; GFX900-LABEL: s_shuffle_v2i16_v3i16__2_3:3646; GFX900:       ; %bb.0:3647; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3648; GFX900-NEXT:    ;;#ASMSTART3649; GFX900-NEXT:    ; def s[4:5]3650; GFX900-NEXT:    ;;#ASMEND3651; GFX900-NEXT:    s_mov_b32 s8, s53652; GFX900-NEXT:    ;;#ASMSTART3653; GFX900-NEXT:    ; use s83654; GFX900-NEXT:    ;;#ASMEND3655; GFX900-NEXT:    s_setpc_b64 s[30:31]3656;3657; GFX90A-LABEL: s_shuffle_v2i16_v3i16__2_3:3658; GFX90A:       ; %bb.0:3659; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3660; GFX90A-NEXT:    ;;#ASMSTART3661; GFX90A-NEXT:    ; def s[4:5]3662; GFX90A-NEXT:    ;;#ASMEND3663; GFX90A-NEXT:    s_mov_b32 s8, s53664; GFX90A-NEXT:    ;;#ASMSTART3665; GFX90A-NEXT:    ; use s83666; GFX90A-NEXT:    ;;#ASMEND3667; GFX90A-NEXT:    s_setpc_b64 s[30:31]3668;3669; GFX942-LABEL: s_shuffle_v2i16_v3i16__2_3:3670; GFX942:       ; %bb.0:3671; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3672; GFX942-NEXT:    ;;#ASMSTART3673; GFX942-NEXT:    ; def s[0:1]3674; GFX942-NEXT:    ;;#ASMEND3675; GFX942-NEXT:    s_mov_b32 s8, s13676; GFX942-NEXT:    ;;#ASMSTART3677; GFX942-NEXT:    ; use s83678; GFX942-NEXT:    ;;#ASMEND3679; GFX942-NEXT:    s_setpc_b64 s[30:31]3680  %vec0 = call <4 x i16> asm "; def $0", "=s"()3681  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3682  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 2, i32 3>3683  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3684  ret void3685}3686 3687define void @s_shuffle_v2i16_v3i16__3_3() {3688; GFX9-LABEL: s_shuffle_v2i16_v3i16__3_3:3689; GFX9:       ; %bb.0:3690; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3691; GFX9-NEXT:    ;;#ASMSTART3692; GFX9-NEXT:    ; use s83693; GFX9-NEXT:    ;;#ASMEND3694; GFX9-NEXT:    s_setpc_b64 s[30:31]3695  %vec0 = call <4 x i16> asm "; def $0", "=s"()3696  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3697  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <2 x i32> <i32 3, i32 3>3698  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3699  ret void3700}3701 3702define void @s_shuffle_v2i16_v3i16__4_3() {3703; GFX900-LABEL: s_shuffle_v2i16_v3i16__4_3:3704; GFX900:       ; %bb.0:3705; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3706; GFX900-NEXT:    ;;#ASMSTART3707; GFX900-NEXT:    ; def s[4:5]3708; GFX900-NEXT:    ;;#ASMEND3709; GFX900-NEXT:    s_lshr_b32 s5, s4, 163710; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s43711; GFX900-NEXT:    ;;#ASMSTART3712; GFX900-NEXT:    ; use s83713; GFX900-NEXT:    ;;#ASMEND3714; GFX900-NEXT:    s_setpc_b64 s[30:31]3715;3716; GFX90A-LABEL: s_shuffle_v2i16_v3i16__4_3:3717; GFX90A:       ; %bb.0:3718; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3719; GFX90A-NEXT:    ;;#ASMSTART3720; GFX90A-NEXT:    ; def s[4:5]3721; GFX90A-NEXT:    ;;#ASMEND3722; GFX90A-NEXT:    s_lshr_b32 s5, s4, 163723; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s43724; GFX90A-NEXT:    ;;#ASMSTART3725; GFX90A-NEXT:    ; use s83726; GFX90A-NEXT:    ;;#ASMEND3727; GFX90A-NEXT:    s_setpc_b64 s[30:31]3728;3729; GFX942-LABEL: s_shuffle_v2i16_v3i16__4_3:3730; GFX942:       ; %bb.0:3731; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3732; GFX942-NEXT:    ;;#ASMSTART3733; GFX942-NEXT:    ; def s[0:1]3734; GFX942-NEXT:    ;;#ASMEND3735; GFX942-NEXT:    s_lshr_b32 s1, s0, 163736; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s03737; GFX942-NEXT:    ;;#ASMSTART3738; GFX942-NEXT:    ; use s83739; GFX942-NEXT:    ;;#ASMEND3740; GFX942-NEXT:    s_setpc_b64 s[30:31]3741  %vec0 = call <4 x i16> asm "; def $0", "=s"()3742  %vec1 = call <4 x i16> asm "; def $0", "=s"()3743  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3744  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3745  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 4, i32 3>3746  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3747  ret void3748}3749 3750define void @s_shuffle_v2i16_v3i16__u_4() {3751; GFX900-LABEL: s_shuffle_v2i16_v3i16__u_4:3752; GFX900:       ; %bb.0:3753; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3754; GFX900-NEXT:    ;;#ASMSTART3755; GFX900-NEXT:    ; def s[8:9]3756; GFX900-NEXT:    ;;#ASMEND3757; GFX900-NEXT:    ;;#ASMSTART3758; GFX900-NEXT:    ; use s83759; GFX900-NEXT:    ;;#ASMEND3760; GFX900-NEXT:    s_setpc_b64 s[30:31]3761;3762; GFX90A-LABEL: s_shuffle_v2i16_v3i16__u_4:3763; GFX90A:       ; %bb.0:3764; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3765; GFX90A-NEXT:    ;;#ASMSTART3766; GFX90A-NEXT:    ; def s[8:9]3767; GFX90A-NEXT:    ;;#ASMEND3768; GFX90A-NEXT:    ;;#ASMSTART3769; GFX90A-NEXT:    ; use s83770; GFX90A-NEXT:    ;;#ASMEND3771; GFX90A-NEXT:    s_setpc_b64 s[30:31]3772;3773; GFX942-LABEL: s_shuffle_v2i16_v3i16__u_4:3774; GFX942:       ; %bb.0:3775; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3776; GFX942-NEXT:    ;;#ASMSTART3777; GFX942-NEXT:    ; def s[8:9]3778; GFX942-NEXT:    ;;#ASMEND3779; GFX942-NEXT:    s_nop 03780; GFX942-NEXT:    ;;#ASMSTART3781; GFX942-NEXT:    ; use s83782; GFX942-NEXT:    ;;#ASMEND3783; GFX942-NEXT:    s_setpc_b64 s[30:31]3784  %vec0 = call <4 x i16> asm "; def $0", "=s"()3785  %vec1 = call <4 x i16> asm "; def $0", "=s"()3786  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3787  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3788  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 poison, i32 4>3789  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3790  ret void3791}3792 3793define void @s_shuffle_v2i16_v3i16__0_4() {3794; GFX900-LABEL: s_shuffle_v2i16_v3i16__0_4:3795; GFX900:       ; %bb.0:3796; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3797; GFX900-NEXT:    ;;#ASMSTART3798; GFX900-NEXT:    ; def s[4:5]3799; GFX900-NEXT:    ;;#ASMEND3800; GFX900-NEXT:    ;;#ASMSTART3801; GFX900-NEXT:    ; def s[6:7]3802; GFX900-NEXT:    ;;#ASMEND3803; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s4, s63804; GFX900-NEXT:    ;;#ASMSTART3805; GFX900-NEXT:    ; use s83806; GFX900-NEXT:    ;;#ASMEND3807; GFX900-NEXT:    s_setpc_b64 s[30:31]3808;3809; GFX90A-LABEL: s_shuffle_v2i16_v3i16__0_4:3810; GFX90A:       ; %bb.0:3811; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3812; GFX90A-NEXT:    ;;#ASMSTART3813; GFX90A-NEXT:    ; def s[4:5]3814; GFX90A-NEXT:    ;;#ASMEND3815; GFX90A-NEXT:    ;;#ASMSTART3816; GFX90A-NEXT:    ; def s[6:7]3817; GFX90A-NEXT:    ;;#ASMEND3818; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s4, s63819; GFX90A-NEXT:    ;;#ASMSTART3820; GFX90A-NEXT:    ; use s83821; GFX90A-NEXT:    ;;#ASMEND3822; GFX90A-NEXT:    s_setpc_b64 s[30:31]3823;3824; GFX942-LABEL: s_shuffle_v2i16_v3i16__0_4:3825; GFX942:       ; %bb.0:3826; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3827; GFX942-NEXT:    ;;#ASMSTART3828; GFX942-NEXT:    ; def s[0:1]3829; GFX942-NEXT:    ;;#ASMEND3830; GFX942-NEXT:    ;;#ASMSTART3831; GFX942-NEXT:    ; def s[2:3]3832; GFX942-NEXT:    ;;#ASMEND3833; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s0, s23834; GFX942-NEXT:    ;;#ASMSTART3835; GFX942-NEXT:    ; use s83836; GFX942-NEXT:    ;;#ASMEND3837; GFX942-NEXT:    s_setpc_b64 s[30:31]3838  %vec0 = call <4 x i16> asm "; def $0", "=s"()3839  %vec1 = call <4 x i16> asm "; def $0", "=s"()3840  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3841  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3842  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 0, i32 4>3843  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3844  ret void3845}3846 3847define void @s_shuffle_v2i16_v3i16__1_4() {3848; GFX900-LABEL: s_shuffle_v2i16_v3i16__1_4:3849; GFX900:       ; %bb.0:3850; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3851; GFX900-NEXT:    ;;#ASMSTART3852; GFX900-NEXT:    ; def s[4:5]3853; GFX900-NEXT:    ;;#ASMEND3854; GFX900-NEXT:    ;;#ASMSTART3855; GFX900-NEXT:    ; def s[6:7]3856; GFX900-NEXT:    ;;#ASMEND3857; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s63858; GFX900-NEXT:    ;;#ASMSTART3859; GFX900-NEXT:    ; use s83860; GFX900-NEXT:    ;;#ASMEND3861; GFX900-NEXT:    s_setpc_b64 s[30:31]3862;3863; GFX90A-LABEL: s_shuffle_v2i16_v3i16__1_4:3864; GFX90A:       ; %bb.0:3865; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3866; GFX90A-NEXT:    ;;#ASMSTART3867; GFX90A-NEXT:    ; def s[4:5]3868; GFX90A-NEXT:    ;;#ASMEND3869; GFX90A-NEXT:    ;;#ASMSTART3870; GFX90A-NEXT:    ; def s[6:7]3871; GFX90A-NEXT:    ;;#ASMEND3872; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s63873; GFX90A-NEXT:    ;;#ASMSTART3874; GFX90A-NEXT:    ; use s83875; GFX90A-NEXT:    ;;#ASMEND3876; GFX90A-NEXT:    s_setpc_b64 s[30:31]3877;3878; GFX942-LABEL: s_shuffle_v2i16_v3i16__1_4:3879; GFX942:       ; %bb.0:3880; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3881; GFX942-NEXT:    ;;#ASMSTART3882; GFX942-NEXT:    ; def s[0:1]3883; GFX942-NEXT:    ;;#ASMEND3884; GFX942-NEXT:    ;;#ASMSTART3885; GFX942-NEXT:    ; def s[2:3]3886; GFX942-NEXT:    ;;#ASMEND3887; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s23888; GFX942-NEXT:    ;;#ASMSTART3889; GFX942-NEXT:    ; use s83890; GFX942-NEXT:    ;;#ASMEND3891; GFX942-NEXT:    s_setpc_b64 s[30:31]3892  %vec0 = call <4 x i16> asm "; def $0", "=s"()3893  %vec1 = call <4 x i16> asm "; def $0", "=s"()3894  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3895  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3896  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 1, i32 4>3897  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3898  ret void3899}3900 3901define void @s_shuffle_v2i16_v3i16__2_4() {3902; GFX900-LABEL: s_shuffle_v2i16_v3i16__2_4:3903; GFX900:       ; %bb.0:3904; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3905; GFX900-NEXT:    ;;#ASMSTART3906; GFX900-NEXT:    ; def s[4:5]3907; GFX900-NEXT:    ;;#ASMEND3908; GFX900-NEXT:    ;;#ASMSTART3909; GFX900-NEXT:    ; def s[6:7]3910; GFX900-NEXT:    ;;#ASMEND3911; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s5, s63912; GFX900-NEXT:    ;;#ASMSTART3913; GFX900-NEXT:    ; use s83914; GFX900-NEXT:    ;;#ASMEND3915; GFX900-NEXT:    s_setpc_b64 s[30:31]3916;3917; GFX90A-LABEL: s_shuffle_v2i16_v3i16__2_4:3918; GFX90A:       ; %bb.0:3919; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3920; GFX90A-NEXT:    ;;#ASMSTART3921; GFX90A-NEXT:    ; def s[4:5]3922; GFX90A-NEXT:    ;;#ASMEND3923; GFX90A-NEXT:    ;;#ASMSTART3924; GFX90A-NEXT:    ; def s[6:7]3925; GFX90A-NEXT:    ;;#ASMEND3926; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s5, s63927; GFX90A-NEXT:    ;;#ASMSTART3928; GFX90A-NEXT:    ; use s83929; GFX90A-NEXT:    ;;#ASMEND3930; GFX90A-NEXT:    s_setpc_b64 s[30:31]3931;3932; GFX942-LABEL: s_shuffle_v2i16_v3i16__2_4:3933; GFX942:       ; %bb.0:3934; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3935; GFX942-NEXT:    ;;#ASMSTART3936; GFX942-NEXT:    ; def s[0:1]3937; GFX942-NEXT:    ;;#ASMEND3938; GFX942-NEXT:    ;;#ASMSTART3939; GFX942-NEXT:    ; def s[2:3]3940; GFX942-NEXT:    ;;#ASMEND3941; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s1, s23942; GFX942-NEXT:    ;;#ASMSTART3943; GFX942-NEXT:    ; use s83944; GFX942-NEXT:    ;;#ASMEND3945; GFX942-NEXT:    s_setpc_b64 s[30:31]3946  %vec0 = call <4 x i16> asm "; def $0", "=s"()3947  %vec1 = call <4 x i16> asm "; def $0", "=s"()3948  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3949  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3950  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 2, i32 4>3951  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3952  ret void3953}3954 3955define void @s_shuffle_v2i16_v3i16__3_4() {3956; GFX900-LABEL: s_shuffle_v2i16_v3i16__3_4:3957; GFX900:       ; %bb.0:3958; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3959; GFX900-NEXT:    ;;#ASMSTART3960; GFX900-NEXT:    ; def s[8:9]3961; GFX900-NEXT:    ;;#ASMEND3962; GFX900-NEXT:    ;;#ASMSTART3963; GFX900-NEXT:    ; use s83964; GFX900-NEXT:    ;;#ASMEND3965; GFX900-NEXT:    s_setpc_b64 s[30:31]3966;3967; GFX90A-LABEL: s_shuffle_v2i16_v3i16__3_4:3968; GFX90A:       ; %bb.0:3969; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3970; GFX90A-NEXT:    ;;#ASMSTART3971; GFX90A-NEXT:    ; def s[8:9]3972; GFX90A-NEXT:    ;;#ASMEND3973; GFX90A-NEXT:    ;;#ASMSTART3974; GFX90A-NEXT:    ; use s83975; GFX90A-NEXT:    ;;#ASMEND3976; GFX90A-NEXT:    s_setpc_b64 s[30:31]3977;3978; GFX942-LABEL: s_shuffle_v2i16_v3i16__3_4:3979; GFX942:       ; %bb.0:3980; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3981; GFX942-NEXT:    ;;#ASMSTART3982; GFX942-NEXT:    ; def s[8:9]3983; GFX942-NEXT:    ;;#ASMEND3984; GFX942-NEXT:    s_nop 03985; GFX942-NEXT:    ;;#ASMSTART3986; GFX942-NEXT:    ; use s83987; GFX942-NEXT:    ;;#ASMEND3988; GFX942-NEXT:    s_setpc_b64 s[30:31]3989  %vec0 = call <4 x i16> asm "; def $0", "=s"()3990  %vec1 = call <4 x i16> asm "; def $0", "=s"()3991  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3992  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3993  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 3, i32 4>3994  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3995  ret void3996}3997 3998define void @s_shuffle_v2i16_v3i16__4_4() {3999; GFX900-LABEL: s_shuffle_v2i16_v3i16__4_4:4000; GFX900:       ; %bb.0:4001; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4002; GFX900-NEXT:    ;;#ASMSTART4003; GFX900-NEXT:    ; def s[4:5]4004; GFX900-NEXT:    ;;#ASMEND4005; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s44006; GFX900-NEXT:    ;;#ASMSTART4007; GFX900-NEXT:    ; use s84008; GFX900-NEXT:    ;;#ASMEND4009; GFX900-NEXT:    s_setpc_b64 s[30:31]4010;4011; GFX90A-LABEL: s_shuffle_v2i16_v3i16__4_4:4012; GFX90A:       ; %bb.0:4013; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4014; GFX90A-NEXT:    ;;#ASMSTART4015; GFX90A-NEXT:    ; def s[4:5]4016; GFX90A-NEXT:    ;;#ASMEND4017; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s44018; GFX90A-NEXT:    ;;#ASMSTART4019; GFX90A-NEXT:    ; use s84020; GFX90A-NEXT:    ;;#ASMEND4021; GFX90A-NEXT:    s_setpc_b64 s[30:31]4022;4023; GFX942-LABEL: s_shuffle_v2i16_v3i16__4_4:4024; GFX942:       ; %bb.0:4025; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4026; GFX942-NEXT:    ;;#ASMSTART4027; GFX942-NEXT:    ; def s[0:1]4028; GFX942-NEXT:    ;;#ASMEND4029; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s04030; GFX942-NEXT:    ;;#ASMSTART4031; GFX942-NEXT:    ; use s84032; GFX942-NEXT:    ;;#ASMEND4033; GFX942-NEXT:    s_setpc_b64 s[30:31]4034  %vec0 = call <4 x i16> asm "; def $0", "=s"()4035  %vec1 = call <4 x i16> asm "; def $0", "=s"()4036  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4037  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4038  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 4, i32 4>4039  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)4040  ret void4041}4042 4043define void @s_shuffle_v2i16_v3i16__u_5() {4044; GFX900-LABEL: s_shuffle_v2i16_v3i16__u_5:4045; GFX900:       ; %bb.0:4046; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4047; GFX900-NEXT:    ;;#ASMSTART4048; GFX900-NEXT:    ; def s[4:5]4049; GFX900-NEXT:    ;;#ASMEND4050; GFX900-NEXT:    s_lshl_b32 s8, s5, 164051; GFX900-NEXT:    ;;#ASMSTART4052; GFX900-NEXT:    ; use s84053; GFX900-NEXT:    ;;#ASMEND4054; GFX900-NEXT:    s_setpc_b64 s[30:31]4055;4056; GFX90A-LABEL: s_shuffle_v2i16_v3i16__u_5:4057; GFX90A:       ; %bb.0:4058; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4059; GFX90A-NEXT:    ;;#ASMSTART4060; GFX90A-NEXT:    ; def s[4:5]4061; GFX90A-NEXT:    ;;#ASMEND4062; GFX90A-NEXT:    s_lshl_b32 s8, s5, 164063; GFX90A-NEXT:    ;;#ASMSTART4064; GFX90A-NEXT:    ; use s84065; GFX90A-NEXT:    ;;#ASMEND4066; GFX90A-NEXT:    s_setpc_b64 s[30:31]4067;4068; GFX942-LABEL: s_shuffle_v2i16_v3i16__u_5:4069; GFX942:       ; %bb.0:4070; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4071; GFX942-NEXT:    ;;#ASMSTART4072; GFX942-NEXT:    ; def s[0:1]4073; GFX942-NEXT:    ;;#ASMEND4074; GFX942-NEXT:    s_lshl_b32 s8, s1, 164075; GFX942-NEXT:    ;;#ASMSTART4076; GFX942-NEXT:    ; use s84077; GFX942-NEXT:    ;;#ASMEND4078; GFX942-NEXT:    s_setpc_b64 s[30:31]4079  %vec0 = call <4 x i16> asm "; def $0", "=s"()4080  %vec1 = call <4 x i16> asm "; def $0", "=s"()4081  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4082  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4083  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 poison, i32 5>4084  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)4085  ret void4086}4087 4088define void @s_shuffle_v2i16_v3i16__0_5() {4089; GFX900-LABEL: s_shuffle_v2i16_v3i16__0_5:4090; GFX900:       ; %bb.0:4091; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4092; GFX900-NEXT:    ;;#ASMSTART4093; GFX900-NEXT:    ; def s[4:5]4094; GFX900-NEXT:    ;;#ASMEND4095; GFX900-NEXT:    ;;#ASMSTART4096; GFX900-NEXT:    ; def s[6:7]4097; GFX900-NEXT:    ;;#ASMEND4098; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s74099; GFX900-NEXT:    ;;#ASMSTART4100; GFX900-NEXT:    ; use s84101; GFX900-NEXT:    ;;#ASMEND4102; GFX900-NEXT:    s_setpc_b64 s[30:31]4103;4104; GFX90A-LABEL: s_shuffle_v2i16_v3i16__0_5:4105; GFX90A:       ; %bb.0:4106; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4107; GFX90A-NEXT:    ;;#ASMSTART4108; GFX90A-NEXT:    ; def s[4:5]4109; GFX90A-NEXT:    ;;#ASMEND4110; GFX90A-NEXT:    ;;#ASMSTART4111; GFX90A-NEXT:    ; def s[6:7]4112; GFX90A-NEXT:    ;;#ASMEND4113; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s74114; GFX90A-NEXT:    ;;#ASMSTART4115; GFX90A-NEXT:    ; use s84116; GFX90A-NEXT:    ;;#ASMEND4117; GFX90A-NEXT:    s_setpc_b64 s[30:31]4118;4119; GFX942-LABEL: s_shuffle_v2i16_v3i16__0_5:4120; GFX942:       ; %bb.0:4121; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4122; GFX942-NEXT:    ;;#ASMSTART4123; GFX942-NEXT:    ; def s[0:1]4124; GFX942-NEXT:    ;;#ASMEND4125; GFX942-NEXT:    ;;#ASMSTART4126; GFX942-NEXT:    ; def s[2:3]4127; GFX942-NEXT:    ;;#ASMEND4128; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s34129; GFX942-NEXT:    ;;#ASMSTART4130; GFX942-NEXT:    ; use s84131; GFX942-NEXT:    ;;#ASMEND4132; GFX942-NEXT:    s_setpc_b64 s[30:31]4133  %vec0 = call <4 x i16> asm "; def $0", "=s"()4134  %vec1 = call <4 x i16> asm "; def $0", "=s"()4135  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4136  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4137  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 0, i32 5>4138  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)4139  ret void4140}4141 4142define void @s_shuffle_v2i16_v3i16__1_5() {4143; GFX900-LABEL: s_shuffle_v2i16_v3i16__1_5:4144; GFX900:       ; %bb.0:4145; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4146; GFX900-NEXT:    ;;#ASMSTART4147; GFX900-NEXT:    ; def s[4:5]4148; GFX900-NEXT:    ;;#ASMEND4149; GFX900-NEXT:    s_lshr_b32 s4, s4, 164150; GFX900-NEXT:    ;;#ASMSTART4151; GFX900-NEXT:    ; def s[6:7]4152; GFX900-NEXT:    ;;#ASMEND4153; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s74154; GFX900-NEXT:    ;;#ASMSTART4155; GFX900-NEXT:    ; use s84156; GFX900-NEXT:    ;;#ASMEND4157; GFX900-NEXT:    s_setpc_b64 s[30:31]4158;4159; GFX90A-LABEL: s_shuffle_v2i16_v3i16__1_5:4160; GFX90A:       ; %bb.0:4161; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4162; GFX90A-NEXT:    ;;#ASMSTART4163; GFX90A-NEXT:    ; def s[4:5]4164; GFX90A-NEXT:    ;;#ASMEND4165; GFX90A-NEXT:    s_lshr_b32 s4, s4, 164166; GFX90A-NEXT:    ;;#ASMSTART4167; GFX90A-NEXT:    ; def s[6:7]4168; GFX90A-NEXT:    ;;#ASMEND4169; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s74170; GFX90A-NEXT:    ;;#ASMSTART4171; GFX90A-NEXT:    ; use s84172; GFX90A-NEXT:    ;;#ASMEND4173; GFX90A-NEXT:    s_setpc_b64 s[30:31]4174;4175; GFX942-LABEL: s_shuffle_v2i16_v3i16__1_5:4176; GFX942:       ; %bb.0:4177; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4178; GFX942-NEXT:    ;;#ASMSTART4179; GFX942-NEXT:    ; def s[0:1]4180; GFX942-NEXT:    ;;#ASMEND4181; GFX942-NEXT:    s_lshr_b32 s0, s0, 164182; GFX942-NEXT:    ;;#ASMSTART4183; GFX942-NEXT:    ; def s[2:3]4184; GFX942-NEXT:    ;;#ASMEND4185; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s34186; GFX942-NEXT:    ;;#ASMSTART4187; GFX942-NEXT:    ; use s84188; GFX942-NEXT:    ;;#ASMEND4189; GFX942-NEXT:    s_setpc_b64 s[30:31]4190  %vec0 = call <4 x i16> asm "; def $0", "=s"()4191  %vec1 = call <4 x i16> asm "; def $0", "=s"()4192  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4193  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4194  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 1, i32 5>4195  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)4196  ret void4197}4198 4199define void @s_shuffle_v2i16_v3i16__2_5() {4200; GFX900-LABEL: s_shuffle_v2i16_v3i16__2_5:4201; GFX900:       ; %bb.0:4202; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4203; GFX900-NEXT:    ;;#ASMSTART4204; GFX900-NEXT:    ; def s[4:5]4205; GFX900-NEXT:    ;;#ASMEND4206; GFX900-NEXT:    ;;#ASMSTART4207; GFX900-NEXT:    ; def s[6:7]4208; GFX900-NEXT:    ;;#ASMEND4209; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s74210; GFX900-NEXT:    ;;#ASMSTART4211; GFX900-NEXT:    ; use s84212; GFX900-NEXT:    ;;#ASMEND4213; GFX900-NEXT:    s_setpc_b64 s[30:31]4214;4215; GFX90A-LABEL: s_shuffle_v2i16_v3i16__2_5:4216; GFX90A:       ; %bb.0:4217; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4218; GFX90A-NEXT:    ;;#ASMSTART4219; GFX90A-NEXT:    ; def s[4:5]4220; GFX90A-NEXT:    ;;#ASMEND4221; GFX90A-NEXT:    ;;#ASMSTART4222; GFX90A-NEXT:    ; def s[6:7]4223; GFX90A-NEXT:    ;;#ASMEND4224; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s74225; GFX90A-NEXT:    ;;#ASMSTART4226; GFX90A-NEXT:    ; use s84227; GFX90A-NEXT:    ;;#ASMEND4228; GFX90A-NEXT:    s_setpc_b64 s[30:31]4229;4230; GFX942-LABEL: s_shuffle_v2i16_v3i16__2_5:4231; GFX942:       ; %bb.0:4232; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4233; GFX942-NEXT:    ;;#ASMSTART4234; GFX942-NEXT:    ; def s[0:1]4235; GFX942-NEXT:    ;;#ASMEND4236; GFX942-NEXT:    ;;#ASMSTART4237; GFX942-NEXT:    ; def s[2:3]4238; GFX942-NEXT:    ;;#ASMEND4239; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s34240; GFX942-NEXT:    ;;#ASMSTART4241; GFX942-NEXT:    ; use s84242; GFX942-NEXT:    ;;#ASMEND4243; GFX942-NEXT:    s_setpc_b64 s[30:31]4244  %vec0 = call <4 x i16> asm "; def $0", "=s"()4245  %vec1 = call <4 x i16> asm "; def $0", "=s"()4246  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4247  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4248  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 2, i32 5>4249  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)4250  ret void4251}4252 4253define void @s_shuffle_v2i16_v3i16__3_5() {4254; GFX900-LABEL: s_shuffle_v2i16_v3i16__3_5:4255; GFX900:       ; %bb.0:4256; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4257; GFX900-NEXT:    ;;#ASMSTART4258; GFX900-NEXT:    ; def s[4:5]4259; GFX900-NEXT:    ;;#ASMEND4260; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s54261; GFX900-NEXT:    ;;#ASMSTART4262; GFX900-NEXT:    ; use s84263; GFX900-NEXT:    ;;#ASMEND4264; GFX900-NEXT:    s_setpc_b64 s[30:31]4265;4266; GFX90A-LABEL: s_shuffle_v2i16_v3i16__3_5:4267; GFX90A:       ; %bb.0:4268; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4269; GFX90A-NEXT:    ;;#ASMSTART4270; GFX90A-NEXT:    ; def s[4:5]4271; GFX90A-NEXT:    ;;#ASMEND4272; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s54273; GFX90A-NEXT:    ;;#ASMSTART4274; GFX90A-NEXT:    ; use s84275; GFX90A-NEXT:    ;;#ASMEND4276; GFX90A-NEXT:    s_setpc_b64 s[30:31]4277;4278; GFX942-LABEL: s_shuffle_v2i16_v3i16__3_5:4279; GFX942:       ; %bb.0:4280; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4281; GFX942-NEXT:    ;;#ASMSTART4282; GFX942-NEXT:    ; def s[0:1]4283; GFX942-NEXT:    ;;#ASMEND4284; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s14285; GFX942-NEXT:    ;;#ASMSTART4286; GFX942-NEXT:    ; use s84287; GFX942-NEXT:    ;;#ASMEND4288; GFX942-NEXT:    s_setpc_b64 s[30:31]4289  %vec0 = call <4 x i16> asm "; def $0", "=s"()4290  %vec1 = call <4 x i16> asm "; def $0", "=s"()4291  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4292  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4293  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 3, i32 5>4294  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)4295  ret void4296}4297 4298define void @s_shuffle_v2i16_v3i16__4_5() {4299; GFX900-LABEL: s_shuffle_v2i16_v3i16__4_5:4300; GFX900:       ; %bb.0:4301; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4302; GFX900-NEXT:    ;;#ASMSTART4303; GFX900-NEXT:    ; def s[4:5]4304; GFX900-NEXT:    ;;#ASMEND4305; GFX900-NEXT:    s_lshr_b32 s4, s4, 164306; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s54307; GFX900-NEXT:    ;;#ASMSTART4308; GFX900-NEXT:    ; use s84309; GFX900-NEXT:    ;;#ASMEND4310; GFX900-NEXT:    s_setpc_b64 s[30:31]4311;4312; GFX90A-LABEL: s_shuffle_v2i16_v3i16__4_5:4313; GFX90A:       ; %bb.0:4314; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4315; GFX90A-NEXT:    ;;#ASMSTART4316; GFX90A-NEXT:    ; def s[4:5]4317; GFX90A-NEXT:    ;;#ASMEND4318; GFX90A-NEXT:    s_lshr_b32 s4, s4, 164319; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s54320; GFX90A-NEXT:    ;;#ASMSTART4321; GFX90A-NEXT:    ; use s84322; GFX90A-NEXT:    ;;#ASMEND4323; GFX90A-NEXT:    s_setpc_b64 s[30:31]4324;4325; GFX942-LABEL: s_shuffle_v2i16_v3i16__4_5:4326; GFX942:       ; %bb.0:4327; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4328; GFX942-NEXT:    ;;#ASMSTART4329; GFX942-NEXT:    ; def s[0:1]4330; GFX942-NEXT:    ;;#ASMEND4331; GFX942-NEXT:    s_lshr_b32 s0, s0, 164332; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s14333; GFX942-NEXT:    ;;#ASMSTART4334; GFX942-NEXT:    ; use s84335; GFX942-NEXT:    ;;#ASMEND4336; GFX942-NEXT:    s_setpc_b64 s[30:31]4337  %vec0 = call <4 x i16> asm "; def $0", "=s"()4338  %vec1 = call <4 x i16> asm "; def $0", "=s"()4339  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4340  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4341  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <2 x i32> <i32 4, i32 5>4342  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)4343  ret void4344}4345;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:4346; GFX90APLUS: {{.*}}4347