brintos

brintos / llvm-project-archived public Read only

0
0
Text · 529.7 KiB · 1a7e281 Raw
13972 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_v4i16_v3i16__u_u_u_u(ptr addrspace(1) inreg %ptr) {8; GFX9-LABEL: v_shuffle_v4i16_v3i16__u_u_u_u:9; GFX9:       ; %bb.0:10; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11; GFX9-NEXT:    s_setpc_b64 s[30:31]12  %vec0 = call <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, <4 x i32> poison15  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 816  ret void17}18 19define void @v_shuffle_v4i16_v3i16__0_u_u_u(ptr addrspace(1) inreg %ptr) {20; GFX900-LABEL: v_shuffle_v4i16_v3i16__0_u_u_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_dwordx2 v2, v[0:1], 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_v4i16_v3i16__0_u_u_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_dwordx2 v2, v[0:1], 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_v4i16_v3i16__0_u_u_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_dwordx2 v2, v[0:1], 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, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>55  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 856  ret void57}58 59define void @v_shuffle_v4i16_v3i16__1_u_u_u(ptr addrspace(1) inreg %ptr) {60; GFX900-LABEL: v_shuffle_v4i16_v3i16__1_u_u_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_dwordx2 v2, v[0:1], 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_v4i16_v3i16__1_u_u_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_dwordx2 v2, v[0:1], 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_v4i16_v3i16__1_u_u_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_dwordx2 v2, v[0:1], 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, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>98  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 899  ret void100}101 102define void @v_shuffle_v4i16_v3i16__2_u_u_u(ptr addrspace(1) inreg %ptr) {103; GFX900-LABEL: v_shuffle_v4i16_v3i16__2_u_u_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_dwordx2 v2, v[1:2], 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_v4i16_v3i16__2_u_u_u:115; GFX90A:       ; %bb.0:116; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)117; GFX90A-NEXT:    ;;#ASMSTART118; GFX90A-NEXT:    ; def v[0:1]119; GFX90A-NEXT:    ;;#ASMEND120; GFX90A-NEXT:    v_mov_b32_e32 v2, 0121; GFX90A-NEXT:    v_mov_b32_e32 v0, v1122; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]123; GFX90A-NEXT:    s_waitcnt vmcnt(0)124; GFX90A-NEXT:    s_setpc_b64 s[30:31]125;126; GFX942-LABEL: v_shuffle_v4i16_v3i16__2_u_u_u:127; GFX942:       ; %bb.0:128; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)129; GFX942-NEXT:    ;;#ASMSTART130; GFX942-NEXT:    ; def v[0:1]131; GFX942-NEXT:    ;;#ASMEND132; GFX942-NEXT:    v_mov_b32_e32 v2, 0133; GFX942-NEXT:    v_mov_b32_e32 v0, v1134; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]135; GFX942-NEXT:    s_waitcnt vmcnt(0)136; GFX942-NEXT:    s_setpc_b64 s[30:31]137  %vec0 = call <4 x i16> asm "; def $0", "=v"()138  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>139  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison>140  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8141  ret void142}143 144define void @v_shuffle_v4i16_v3i16__3_u_u_u(ptr addrspace(1) inreg %ptr) {145; GFX9-LABEL: v_shuffle_v4i16_v3i16__3_u_u_u:146; GFX9:       ; %bb.0:147; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)148; GFX9-NEXT:    s_setpc_b64 s[30:31]149  %vec0 = call <4 x i16> asm "; def $0", "=v"()150  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>151  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison>152  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8153  ret void154}155 156define void @v_shuffle_v4i16_v3i16__4_u_u_u(ptr addrspace(1) inreg %ptr) {157; GFX900-LABEL: v_shuffle_v4i16_v3i16__4_u_u_u:158; GFX900:       ; %bb.0:159; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)160; GFX900-NEXT:    ;;#ASMSTART161; GFX900-NEXT:    ; def v[0:1]162; GFX900-NEXT:    ;;#ASMEND163; GFX900-NEXT:    v_mov_b32_e32 v2, 0164; GFX900-NEXT:    v_alignbit_b32 v0, s4, v0, 16165; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]166; GFX900-NEXT:    s_waitcnt vmcnt(0)167; GFX900-NEXT:    s_setpc_b64 s[30:31]168;169; GFX90A-LABEL: v_shuffle_v4i16_v3i16__4_u_u_u:170; GFX90A:       ; %bb.0:171; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)172; GFX90A-NEXT:    ;;#ASMSTART173; GFX90A-NEXT:    ; def v[0:1]174; GFX90A-NEXT:    ;;#ASMEND175; GFX90A-NEXT:    v_mov_b32_e32 v2, 0176; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v0, 16177; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]178; GFX90A-NEXT:    s_waitcnt vmcnt(0)179; GFX90A-NEXT:    s_setpc_b64 s[30:31]180;181; GFX942-LABEL: v_shuffle_v4i16_v3i16__4_u_u_u:182; GFX942:       ; %bb.0:183; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)184; GFX942-NEXT:    ;;#ASMSTART185; GFX942-NEXT:    ; def v[0:1]186; GFX942-NEXT:    ;;#ASMEND187; GFX942-NEXT:    v_mov_b32_e32 v2, 0188; GFX942-NEXT:    v_alignbit_b32 v0, s0, v0, 16189; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]190; GFX942-NEXT:    s_waitcnt vmcnt(0)191; GFX942-NEXT:    s_setpc_b64 s[30:31]192  %vec0 = call <4 x i16> asm "; def $0", "=v"()193  %vec1 = call <4 x i16> asm "; def $0", "=v"()194  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>195  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>196  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 4, i32 poison, i32 poison, i32 poison>197  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8198  ret void199}200 201define void @v_shuffle_v4i16_v3i16__5_u_u_u(ptr addrspace(1) inreg %ptr) {202; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_u_u_u:203; GFX900:       ; %bb.0:204; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)205; GFX900-NEXT:    v_mov_b32_e32 v2, 0206; GFX900-NEXT:    ;;#ASMSTART207; GFX900-NEXT:    ; def v[0:1]208; GFX900-NEXT:    ;;#ASMEND209; GFX900-NEXT:    global_store_dwordx2 v2, v[1:2], s[16:17]210; GFX900-NEXT:    s_waitcnt vmcnt(0)211; GFX900-NEXT:    s_setpc_b64 s[30:31]212;213; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_u_u_u:214; GFX90A:       ; %bb.0:215; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)216; GFX90A-NEXT:    ;;#ASMSTART217; GFX90A-NEXT:    ; def v[0:1]218; GFX90A-NEXT:    ;;#ASMEND219; GFX90A-NEXT:    v_mov_b32_e32 v2, 0220; GFX90A-NEXT:    v_mov_b32_e32 v0, v1221; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]222; GFX90A-NEXT:    s_waitcnt vmcnt(0)223; GFX90A-NEXT:    s_setpc_b64 s[30:31]224;225; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_u_u_u:226; GFX942:       ; %bb.0:227; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)228; GFX942-NEXT:    ;;#ASMSTART229; GFX942-NEXT:    ; def v[0:1]230; GFX942-NEXT:    ;;#ASMEND231; GFX942-NEXT:    v_mov_b32_e32 v2, 0232; GFX942-NEXT:    v_mov_b32_e32 v0, v1233; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]234; GFX942-NEXT:    s_waitcnt vmcnt(0)235; GFX942-NEXT:    s_setpc_b64 s[30:31]236  %vec0 = call <4 x i16> asm "; def $0", "=v"()237  %vec1 = call <4 x i16> asm "; def $0", "=v"()238  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>239  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>240  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 poison, i32 poison, i32 poison>241  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8242  ret void243}244 245define void @v_shuffle_v4i16_v3i16__5_0_u_u(ptr addrspace(1) inreg %ptr) {246; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_0_u_u:247; GFX900:       ; %bb.0:248; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)249; GFX900-NEXT:    ;;#ASMSTART250; GFX900-NEXT:    ; def v[0:1]251; GFX900-NEXT:    ;;#ASMEND252; GFX900-NEXT:    s_mov_b32 s4, 0x5040100253; GFX900-NEXT:    v_mov_b32_e32 v3, 0254; GFX900-NEXT:    ;;#ASMSTART255; GFX900-NEXT:    ; def v[1:2]256; GFX900-NEXT:    ;;#ASMEND257; GFX900-NEXT:    v_perm_b32 v0, v0, v2, s4258; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]259; GFX900-NEXT:    s_waitcnt vmcnt(0)260; GFX900-NEXT:    s_setpc_b64 s[30:31]261;262; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_0_u_u:263; GFX90A:       ; %bb.0:264; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)265; GFX90A-NEXT:    ;;#ASMSTART266; GFX90A-NEXT:    ; def v[0:1]267; GFX90A-NEXT:    ;;#ASMEND268; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100269; GFX90A-NEXT:    v_mov_b32_e32 v4, 0270; GFX90A-NEXT:    ;;#ASMSTART271; GFX90A-NEXT:    ; def v[2:3]272; GFX90A-NEXT:    ;;#ASMEND273; GFX90A-NEXT:    v_perm_b32 v0, v0, v3, s4274; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]275; GFX90A-NEXT:    s_waitcnt vmcnt(0)276; GFX90A-NEXT:    s_setpc_b64 s[30:31]277;278; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_0_u_u:279; GFX942:       ; %bb.0:280; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)281; GFX942-NEXT:    ;;#ASMSTART282; GFX942-NEXT:    ; def v[0:1]283; GFX942-NEXT:    ;;#ASMEND284; GFX942-NEXT:    s_mov_b32 s2, 0x5040100285; GFX942-NEXT:    v_mov_b32_e32 v4, 0286; GFX942-NEXT:    ;;#ASMSTART287; GFX942-NEXT:    ; def v[2:3]288; GFX942-NEXT:    ;;#ASMEND289; GFX942-NEXT:    s_nop 0290; GFX942-NEXT:    v_perm_b32 v0, v0, v3, s2291; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]292; GFX942-NEXT:    s_waitcnt vmcnt(0)293; GFX942-NEXT:    s_setpc_b64 s[30:31]294  %vec0 = call <4 x i16> asm "; def $0", "=v"()295  %vec1 = call <4 x i16> asm "; def $0", "=v"()296  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>297  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>298  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 0, i32 poison, i32 poison>299  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8300  ret void301}302 303define void @v_shuffle_v4i16_v3i16__5_1_u_u(ptr addrspace(1) inreg %ptr) {304; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_1_u_u:305; GFX900:       ; %bb.0:306; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)307; GFX900-NEXT:    ;;#ASMSTART308; GFX900-NEXT:    ; def v[0:1]309; GFX900-NEXT:    ;;#ASMEND310; GFX900-NEXT:    s_mov_b32 s4, 0xffff311; GFX900-NEXT:    v_mov_b32_e32 v3, 0312; GFX900-NEXT:    ;;#ASMSTART313; GFX900-NEXT:    ; def v[1:2]314; GFX900-NEXT:    ;;#ASMEND315; GFX900-NEXT:    v_bfi_b32 v0, s4, v2, v0316; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]317; GFX900-NEXT:    s_waitcnt vmcnt(0)318; GFX900-NEXT:    s_setpc_b64 s[30:31]319;320; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_1_u_u:321; GFX90A:       ; %bb.0:322; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)323; GFX90A-NEXT:    ;;#ASMSTART324; GFX90A-NEXT:    ; def v[0:1]325; GFX90A-NEXT:    ;;#ASMEND326; GFX90A-NEXT:    s_mov_b32 s4, 0xffff327; GFX90A-NEXT:    v_mov_b32_e32 v4, 0328; GFX90A-NEXT:    ;;#ASMSTART329; GFX90A-NEXT:    ; def v[2:3]330; GFX90A-NEXT:    ;;#ASMEND331; GFX90A-NEXT:    v_bfi_b32 v0, s4, v3, v0332; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]333; GFX90A-NEXT:    s_waitcnt vmcnt(0)334; GFX90A-NEXT:    s_setpc_b64 s[30:31]335;336; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_1_u_u:337; GFX942:       ; %bb.0:338; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)339; GFX942-NEXT:    ;;#ASMSTART340; GFX942-NEXT:    ; def v[0:1]341; GFX942-NEXT:    ;;#ASMEND342; GFX942-NEXT:    s_mov_b32 s2, 0xffff343; GFX942-NEXT:    v_mov_b32_e32 v4, 0344; GFX942-NEXT:    ;;#ASMSTART345; GFX942-NEXT:    ; def v[2:3]346; GFX942-NEXT:    ;;#ASMEND347; GFX942-NEXT:    s_nop 0348; GFX942-NEXT:    v_bfi_b32 v0, s2, v3, v0349; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]350; GFX942-NEXT:    s_waitcnt vmcnt(0)351; GFX942-NEXT:    s_setpc_b64 s[30:31]352  %vec0 = call <4 x i16> asm "; def $0", "=v"()353  %vec1 = call <4 x i16> asm "; def $0", "=v"()354  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>355  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>356  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 1, i32 poison, i32 poison>357  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8358  ret void359}360 361define void @v_shuffle_v4i16_v3i16__5_2_u_u(ptr addrspace(1) inreg %ptr) {362; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_2_u_u:363; GFX900:       ; %bb.0:364; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)365; GFX900-NEXT:    ;;#ASMSTART366; GFX900-NEXT:    ; def v[0:1]367; GFX900-NEXT:    ;;#ASMEND368; GFX900-NEXT:    s_mov_b32 s4, 0x5040100369; GFX900-NEXT:    v_mov_b32_e32 v4, 0370; GFX900-NEXT:    ;;#ASMSTART371; GFX900-NEXT:    ; def v[2:3]372; GFX900-NEXT:    ;;#ASMEND373; GFX900-NEXT:    v_perm_b32 v0, v1, v3, s4374; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]375; GFX900-NEXT:    s_waitcnt vmcnt(0)376; GFX900-NEXT:    s_setpc_b64 s[30:31]377;378; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_2_u_u:379; GFX90A:       ; %bb.0:380; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)381; GFX90A-NEXT:    ;;#ASMSTART382; GFX90A-NEXT:    ; def v[0:1]383; GFX90A-NEXT:    ;;#ASMEND384; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100385; GFX90A-NEXT:    v_mov_b32_e32 v4, 0386; GFX90A-NEXT:    ;;#ASMSTART387; GFX90A-NEXT:    ; def v[2:3]388; GFX90A-NEXT:    ;;#ASMEND389; GFX90A-NEXT:    v_perm_b32 v0, v1, v3, s4390; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]391; GFX90A-NEXT:    s_waitcnt vmcnt(0)392; GFX90A-NEXT:    s_setpc_b64 s[30:31]393;394; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_2_u_u:395; GFX942:       ; %bb.0:396; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)397; GFX942-NEXT:    ;;#ASMSTART398; GFX942-NEXT:    ; def v[0:1]399; GFX942-NEXT:    ;;#ASMEND400; GFX942-NEXT:    s_mov_b32 s2, 0x5040100401; GFX942-NEXT:    v_mov_b32_e32 v4, 0402; GFX942-NEXT:    ;;#ASMSTART403; GFX942-NEXT:    ; def v[2:3]404; GFX942-NEXT:    ;;#ASMEND405; GFX942-NEXT:    s_nop 0406; GFX942-NEXT:    v_perm_b32 v0, v1, v3, s2407; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]408; GFX942-NEXT:    s_waitcnt vmcnt(0)409; GFX942-NEXT:    s_setpc_b64 s[30:31]410  %vec0 = call <4 x i16> asm "; def $0", "=v"()411  %vec1 = call <4 x i16> asm "; def $0", "=v"()412  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>413  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>414  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 2, i32 poison, i32 poison>415  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8416  ret void417}418 419define void @v_shuffle_v4i16_v3i16__5_3_u_u(ptr addrspace(1) inreg %ptr) {420; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_3_u_u:421; GFX900:       ; %bb.0:422; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)423; GFX900-NEXT:    ;;#ASMSTART424; GFX900-NEXT:    ; def v[0:1]425; GFX900-NEXT:    ;;#ASMEND426; GFX900-NEXT:    s_mov_b32 s4, 0x5040100427; GFX900-NEXT:    v_mov_b32_e32 v2, 0428; GFX900-NEXT:    v_perm_b32 v0, v0, v1, s4429; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]430; GFX900-NEXT:    s_waitcnt vmcnt(0)431; GFX900-NEXT:    s_setpc_b64 s[30:31]432;433; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_3_u_u:434; GFX90A:       ; %bb.0:435; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)436; GFX90A-NEXT:    ;;#ASMSTART437; GFX90A-NEXT:    ; def v[0:1]438; GFX90A-NEXT:    ;;#ASMEND439; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100440; GFX90A-NEXT:    v_mov_b32_e32 v2, 0441; GFX90A-NEXT:    v_perm_b32 v0, v0, v1, s4442; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]443; GFX90A-NEXT:    s_waitcnt vmcnt(0)444; GFX90A-NEXT:    s_setpc_b64 s[30:31]445;446; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_3_u_u:447; GFX942:       ; %bb.0:448; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)449; GFX942-NEXT:    ;;#ASMSTART450; GFX942-NEXT:    ; def v[0:1]451; GFX942-NEXT:    ;;#ASMEND452; GFX942-NEXT:    s_mov_b32 s2, 0x5040100453; GFX942-NEXT:    v_mov_b32_e32 v2, 0454; GFX942-NEXT:    v_perm_b32 v0, v0, v1, s2455; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]456; GFX942-NEXT:    s_waitcnt vmcnt(0)457; GFX942-NEXT:    s_setpc_b64 s[30:31]458  %vec0 = call <4 x i16> asm "; def $0", "=v"()459  %vec1 = call <4 x i16> asm "; def $0", "=v"()460  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>461  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>462  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 3, i32 poison, i32 poison>463  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8464  ret void465}466 467define void @v_shuffle_v4i16_v3i16__5_4_u_u(ptr addrspace(1) inreg %ptr) {468; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_4_u_u:469; GFX900:       ; %bb.0:470; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)471; GFX900-NEXT:    ;;#ASMSTART472; GFX900-NEXT:    ; def v[0:1]473; GFX900-NEXT:    ;;#ASMEND474; GFX900-NEXT:    s_mov_b32 s4, 0xffff475; GFX900-NEXT:    v_mov_b32_e32 v2, 0476; GFX900-NEXT:    v_bfi_b32 v0, s4, v1, v0477; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]478; GFX900-NEXT:    s_waitcnt vmcnt(0)479; GFX900-NEXT:    s_setpc_b64 s[30:31]480;481; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_4_u_u:482; GFX90A:       ; %bb.0:483; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)484; GFX90A-NEXT:    ;;#ASMSTART485; GFX90A-NEXT:    ; def v[0:1]486; GFX90A-NEXT:    ;;#ASMEND487; GFX90A-NEXT:    s_mov_b32 s4, 0xffff488; GFX90A-NEXT:    v_mov_b32_e32 v2, 0489; GFX90A-NEXT:    v_bfi_b32 v0, s4, v1, v0490; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]491; GFX90A-NEXT:    s_waitcnt vmcnt(0)492; GFX90A-NEXT:    s_setpc_b64 s[30:31]493;494; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_4_u_u:495; GFX942:       ; %bb.0:496; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)497; GFX942-NEXT:    ;;#ASMSTART498; GFX942-NEXT:    ; def v[0:1]499; GFX942-NEXT:    ;;#ASMEND500; GFX942-NEXT:    s_mov_b32 s2, 0xffff501; GFX942-NEXT:    v_mov_b32_e32 v2, 0502; GFX942-NEXT:    v_bfi_b32 v0, s2, v1, v0503; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]504; GFX942-NEXT:    s_waitcnt vmcnt(0)505; GFX942-NEXT:    s_setpc_b64 s[30:31]506  %vec0 = call <4 x i16> asm "; def $0", "=v"()507  %vec1 = call <4 x i16> asm "; def $0", "=v"()508  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>509  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>510  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 4, i32 poison, i32 poison>511  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8512  ret void513}514 515define void @v_shuffle_v4i16_v3i16__5_5_u_u(ptr addrspace(1) inreg %ptr) {516; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_u_u:517; GFX900:       ; %bb.0:518; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)519; GFX900-NEXT:    ;;#ASMSTART520; GFX900-NEXT:    ; def v[0:1]521; GFX900-NEXT:    ;;#ASMEND522; GFX900-NEXT:    s_mov_b32 s4, 0x5040100523; GFX900-NEXT:    v_mov_b32_e32 v2, 0524; GFX900-NEXT:    v_perm_b32 v0, v1, v1, s4525; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]526; GFX900-NEXT:    s_waitcnt vmcnt(0)527; GFX900-NEXT:    s_setpc_b64 s[30:31]528;529; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_u_u:530; GFX90A:       ; %bb.0:531; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)532; GFX90A-NEXT:    ;;#ASMSTART533; GFX90A-NEXT:    ; def v[0:1]534; GFX90A-NEXT:    ;;#ASMEND535; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100536; GFX90A-NEXT:    v_mov_b32_e32 v2, 0537; GFX90A-NEXT:    v_perm_b32 v0, v1, v1, s4538; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]539; GFX90A-NEXT:    s_waitcnt vmcnt(0)540; GFX90A-NEXT:    s_setpc_b64 s[30:31]541;542; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_u_u:543; GFX942:       ; %bb.0:544; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)545; GFX942-NEXT:    ;;#ASMSTART546; GFX942-NEXT:    ; def v[0:1]547; GFX942-NEXT:    ;;#ASMEND548; GFX942-NEXT:    s_mov_b32 s2, 0x5040100549; GFX942-NEXT:    v_mov_b32_e32 v2, 0550; GFX942-NEXT:    v_perm_b32 v0, v1, v1, s2551; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]552; GFX942-NEXT:    s_waitcnt vmcnt(0)553; GFX942-NEXT:    s_setpc_b64 s[30:31]554  %vec0 = call <4 x i16> asm "; def $0", "=v"()555  %vec1 = call <4 x i16> asm "; def $0", "=v"()556  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>557  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>558  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 poison, i32 poison>559  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8560  ret void561}562 563define void @v_shuffle_v4i16_v3i16__5_5_0_u(ptr addrspace(1) inreg %ptr) {564; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_0_u:565; GFX900:       ; %bb.0:566; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)567; GFX900-NEXT:    ;;#ASMSTART568; GFX900-NEXT:    ; def v[1:2]569; GFX900-NEXT:    ;;#ASMEND570; GFX900-NEXT:    s_mov_b32 s4, 0x5040100571; GFX900-NEXT:    v_mov_b32_e32 v4, 0572; GFX900-NEXT:    ;;#ASMSTART573; GFX900-NEXT:    ; def v[2:3]574; GFX900-NEXT:    ;;#ASMEND575; GFX900-NEXT:    v_perm_b32 v0, v3, v3, s4576; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]577; GFX900-NEXT:    s_waitcnt vmcnt(0)578; GFX900-NEXT:    s_setpc_b64 s[30:31]579;580; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_0_u:581; GFX90A:       ; %bb.0:582; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)583; GFX90A-NEXT:    ;;#ASMSTART584; GFX90A-NEXT:    ; def v[2:3]585; GFX90A-NEXT:    ;;#ASMEND586; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100587; GFX90A-NEXT:    v_mov_b32_e32 v4, 0588; GFX90A-NEXT:    ;;#ASMSTART589; GFX90A-NEXT:    ; def v[0:1]590; GFX90A-NEXT:    ;;#ASMEND591; GFX90A-NEXT:    v_perm_b32 v2, v3, v3, s4592; GFX90A-NEXT:    v_mov_b32_e32 v3, v0593; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]594; GFX90A-NEXT:    s_waitcnt vmcnt(0)595; GFX90A-NEXT:    s_setpc_b64 s[30:31]596;597; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_0_u:598; GFX942:       ; %bb.0:599; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)600; GFX942-NEXT:    ;;#ASMSTART601; GFX942-NEXT:    ; def v[2:3]602; GFX942-NEXT:    ;;#ASMEND603; GFX942-NEXT:    s_mov_b32 s2, 0x5040100604; GFX942-NEXT:    v_mov_b32_e32 v4, 0605; GFX942-NEXT:    ;;#ASMSTART606; GFX942-NEXT:    ; def v[0:1]607; GFX942-NEXT:    ;;#ASMEND608; GFX942-NEXT:    v_perm_b32 v2, v3, v3, s2609; GFX942-NEXT:    v_mov_b32_e32 v3, v0610; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]611; GFX942-NEXT:    s_waitcnt vmcnt(0)612; GFX942-NEXT:    s_setpc_b64 s[30:31]613  %vec0 = call <4 x i16> asm "; def $0", "=v"()614  %vec1 = call <4 x i16> asm "; def $0", "=v"()615  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>616  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>617  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 0, i32 poison>618  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8619  ret void620}621 622define void @v_shuffle_v4i16_v3i16__5_5_1_u(ptr addrspace(1) inreg %ptr) {623; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_1_u:624; GFX900:       ; %bb.0:625; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)626; GFX900-NEXT:    ;;#ASMSTART627; GFX900-NEXT:    ; def v[0:1]628; GFX900-NEXT:    ;;#ASMEND629; GFX900-NEXT:    ;;#ASMSTART630; GFX900-NEXT:    ; def v[1:2]631; GFX900-NEXT:    ;;#ASMEND632; GFX900-NEXT:    v_alignbit_b32 v1, s4, v0, 16633; GFX900-NEXT:    s_mov_b32 s4, 0x5040100634; GFX900-NEXT:    v_mov_b32_e32 v3, 0635; GFX900-NEXT:    v_perm_b32 v0, v2, v2, s4636; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]637; GFX900-NEXT:    s_waitcnt vmcnt(0)638; GFX900-NEXT:    s_setpc_b64 s[30:31]639;640; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_1_u:641; GFX90A:       ; %bb.0:642; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)643; GFX90A-NEXT:    ;;#ASMSTART644; GFX90A-NEXT:    ; def v[0:1]645; GFX90A-NEXT:    ;;#ASMEND646; GFX90A-NEXT:    v_alignbit_b32 v1, s4, v0, 16647; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100648; GFX90A-NEXT:    v_mov_b32_e32 v4, 0649; GFX90A-NEXT:    ;;#ASMSTART650; GFX90A-NEXT:    ; def v[2:3]651; GFX90A-NEXT:    ;;#ASMEND652; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s4653; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]654; GFX90A-NEXT:    s_waitcnt vmcnt(0)655; GFX90A-NEXT:    s_setpc_b64 s[30:31]656;657; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_1_u:658; GFX942:       ; %bb.0:659; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)660; GFX942-NEXT:    ;;#ASMSTART661; GFX942-NEXT:    ; def v[0:1]662; GFX942-NEXT:    ;;#ASMEND663; GFX942-NEXT:    s_mov_b32 s2, 0x5040100664; GFX942-NEXT:    v_mov_b32_e32 v4, 0665; GFX942-NEXT:    ;;#ASMSTART666; GFX942-NEXT:    ; def v[2:3]667; GFX942-NEXT:    ;;#ASMEND668; GFX942-NEXT:    v_alignbit_b32 v1, s0, v0, 16669; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s2670; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]671; GFX942-NEXT:    s_waitcnt vmcnt(0)672; GFX942-NEXT:    s_setpc_b64 s[30:31]673  %vec0 = call <4 x i16> asm "; def $0", "=v"()674  %vec1 = call <4 x i16> asm "; def $0", "=v"()675  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>676  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>677  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 1, i32 poison>678  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8679  ret void680}681 682define void @v_shuffle_v4i16_v3i16__5_5_2_u(ptr addrspace(1) inreg %ptr) {683; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_2_u:684; GFX900:       ; %bb.0:685; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)686; GFX900-NEXT:    ;;#ASMSTART687; GFX900-NEXT:    ; def v[0:1]688; GFX900-NEXT:    ;;#ASMEND689; GFX900-NEXT:    s_mov_b32 s4, 0x5040100690; GFX900-NEXT:    v_mov_b32_e32 v4, 0691; GFX900-NEXT:    ;;#ASMSTART692; GFX900-NEXT:    ; def v[2:3]693; GFX900-NEXT:    ;;#ASMEND694; GFX900-NEXT:    v_perm_b32 v0, v3, v3, s4695; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]696; GFX900-NEXT:    s_waitcnt vmcnt(0)697; GFX900-NEXT:    s_setpc_b64 s[30:31]698;699; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_2_u:700; GFX90A:       ; %bb.0:701; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)702; GFX90A-NEXT:    ;;#ASMSTART703; GFX90A-NEXT:    ; def v[0:1]704; GFX90A-NEXT:    ;;#ASMEND705; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100706; GFX90A-NEXT:    v_mov_b32_e32 v4, 0707; GFX90A-NEXT:    ;;#ASMSTART708; GFX90A-NEXT:    ; def v[2:3]709; GFX90A-NEXT:    ;;#ASMEND710; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s4711; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]712; GFX90A-NEXT:    s_waitcnt vmcnt(0)713; GFX90A-NEXT:    s_setpc_b64 s[30:31]714;715; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_2_u:716; GFX942:       ; %bb.0:717; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)718; GFX942-NEXT:    ;;#ASMSTART719; GFX942-NEXT:    ; def v[0:1]720; GFX942-NEXT:    ;;#ASMEND721; GFX942-NEXT:    s_mov_b32 s2, 0x5040100722; GFX942-NEXT:    v_mov_b32_e32 v4, 0723; GFX942-NEXT:    ;;#ASMSTART724; GFX942-NEXT:    ; def v[2:3]725; GFX942-NEXT:    ;;#ASMEND726; GFX942-NEXT:    s_nop 0727; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s2728; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]729; GFX942-NEXT:    s_waitcnt vmcnt(0)730; GFX942-NEXT:    s_setpc_b64 s[30:31]731  %vec0 = call <4 x i16> asm "; def $0", "=v"()732  %vec1 = call <4 x i16> asm "; def $0", "=v"()733  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>734  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>735  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 2, i32 poison>736  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8737  ret void738}739 740define void @v_shuffle_v4i16_v3i16__5_5_3_u(ptr addrspace(1) inreg %ptr) {741; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_3_u:742; GFX900:       ; %bb.0:743; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)744; GFX900-NEXT:    s_mov_b32 s4, 0x5040100745; GFX900-NEXT:    v_mov_b32_e32 v3, 0746; GFX900-NEXT:    ;;#ASMSTART747; GFX900-NEXT:    ; def v[1:2]748; GFX900-NEXT:    ;;#ASMEND749; GFX900-NEXT:    v_perm_b32 v0, v2, v2, s4750; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]751; GFX900-NEXT:    s_waitcnt vmcnt(0)752; GFX900-NEXT:    s_setpc_b64 s[30:31]753;754; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_3_u:755; GFX90A:       ; %bb.0:756; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)757; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100758; GFX90A-NEXT:    v_mov_b32_e32 v4, 0759; GFX90A-NEXT:    ;;#ASMSTART760; GFX90A-NEXT:    ; def v[0:1]761; GFX90A-NEXT:    ;;#ASMEND762; GFX90A-NEXT:    v_perm_b32 v2, v1, v1, s4763; GFX90A-NEXT:    v_mov_b32_e32 v3, v0764; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]765; GFX90A-NEXT:    s_waitcnt vmcnt(0)766; GFX90A-NEXT:    s_setpc_b64 s[30:31]767;768; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_3_u:769; GFX942:       ; %bb.0:770; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)771; GFX942-NEXT:    s_mov_b32 s2, 0x5040100772; GFX942-NEXT:    v_mov_b32_e32 v4, 0773; GFX942-NEXT:    ;;#ASMSTART774; GFX942-NEXT:    ; def v[0:1]775; GFX942-NEXT:    ;;#ASMEND776; GFX942-NEXT:    s_nop 0777; GFX942-NEXT:    v_perm_b32 v2, v1, v1, s2778; GFX942-NEXT:    v_mov_b32_e32 v3, v0779; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]780; GFX942-NEXT:    s_waitcnt vmcnt(0)781; GFX942-NEXT:    s_setpc_b64 s[30:31]782  %vec0 = call <4 x i16> asm "; def $0", "=v"()783  %vec1 = call <4 x i16> asm "; def $0", "=v"()784  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>785  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>786  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 3, i32 poison>787  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8788  ret void789}790 791define void @v_shuffle_v4i16_v3i16__5_5_4_u(ptr addrspace(1) inreg %ptr) {792; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_4_u:793; GFX900:       ; %bb.0:794; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)795; GFX900-NEXT:    ;;#ASMSTART796; GFX900-NEXT:    ; def v[0:1]797; GFX900-NEXT:    ;;#ASMEND798; GFX900-NEXT:    v_alignbit_b32 v2, s4, v0, 16799; GFX900-NEXT:    s_mov_b32 s4, 0x5040100800; GFX900-NEXT:    v_mov_b32_e32 v3, 0801; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s4802; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]803; GFX900-NEXT:    s_waitcnt vmcnt(0)804; GFX900-NEXT:    s_setpc_b64 s[30:31]805;806; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_4_u:807; GFX90A:       ; %bb.0:808; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)809; GFX90A-NEXT:    ;;#ASMSTART810; GFX90A-NEXT:    ; def v[0:1]811; GFX90A-NEXT:    ;;#ASMEND812; GFX90A-NEXT:    v_alignbit_b32 v3, s4, v0, 16813; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100814; GFX90A-NEXT:    v_mov_b32_e32 v4, 0815; GFX90A-NEXT:    v_perm_b32 v2, v1, v1, s4816; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]817; GFX90A-NEXT:    s_waitcnt vmcnt(0)818; GFX90A-NEXT:    s_setpc_b64 s[30:31]819;820; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_4_u:821; GFX942:       ; %bb.0:822; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)823; GFX942-NEXT:    s_mov_b32 s2, 0x5040100824; GFX942-NEXT:    v_mov_b32_e32 v4, 0825; GFX942-NEXT:    ;;#ASMSTART826; GFX942-NEXT:    ; def v[0:1]827; GFX942-NEXT:    ;;#ASMEND828; GFX942-NEXT:    s_nop 0829; GFX942-NEXT:    v_alignbit_b32 v3, s0, v0, 16830; GFX942-NEXT:    v_perm_b32 v2, v1, v1, s2831; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]832; GFX942-NEXT:    s_waitcnt vmcnt(0)833; GFX942-NEXT:    s_setpc_b64 s[30:31]834  %vec0 = call <4 x i16> asm "; def $0", "=v"()835  %vec1 = call <4 x i16> asm "; def $0", "=v"()836  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>837  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>838  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 4, i32 poison>839  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8840  ret void841}842 843define void @v_shuffle_v4i16_v3i16__5_5_5_u(ptr addrspace(1) inreg %ptr) {844; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_5_u:845; GFX900:       ; %bb.0:846; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)847; GFX900-NEXT:    ;;#ASMSTART848; GFX900-NEXT:    ; def v[0:1]849; GFX900-NEXT:    ;;#ASMEND850; GFX900-NEXT:    s_mov_b32 s4, 0x5040100851; GFX900-NEXT:    v_mov_b32_e32 v2, 0852; GFX900-NEXT:    v_perm_b32 v0, v1, v1, s4853; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]854; GFX900-NEXT:    s_waitcnt vmcnt(0)855; GFX900-NEXT:    s_setpc_b64 s[30:31]856;857; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_5_u:858; GFX90A:       ; %bb.0:859; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)860; GFX90A-NEXT:    ;;#ASMSTART861; GFX90A-NEXT:    ; def v[0:1]862; GFX90A-NEXT:    ;;#ASMEND863; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100864; GFX90A-NEXT:    v_mov_b32_e32 v2, 0865; GFX90A-NEXT:    v_perm_b32 v0, v1, v1, s4866; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]867; GFX90A-NEXT:    s_waitcnt vmcnt(0)868; GFX90A-NEXT:    s_setpc_b64 s[30:31]869;870; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_5_u:871; GFX942:       ; %bb.0:872; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)873; GFX942-NEXT:    ;;#ASMSTART874; GFX942-NEXT:    ; def v[0:1]875; GFX942-NEXT:    ;;#ASMEND876; GFX942-NEXT:    s_mov_b32 s2, 0x5040100877; GFX942-NEXT:    v_mov_b32_e32 v2, 0878; GFX942-NEXT:    v_perm_b32 v0, v1, v1, s2879; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]880; GFX942-NEXT:    s_waitcnt vmcnt(0)881; GFX942-NEXT:    s_setpc_b64 s[30:31]882  %vec0 = call <4 x i16> asm "; def $0", "=v"()883  %vec1 = call <4 x i16> asm "; def $0", "=v"()884  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>885  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>886  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 5, i32 poison>887  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8888  ret void889}890 891define void @v_shuffle_v4i16_v3i16__5_5_5_0(ptr addrspace(1) inreg %ptr) {892; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_5_0:893; GFX900:       ; %bb.0:894; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)895; GFX900-NEXT:    ;;#ASMSTART896; GFX900-NEXT:    ; def v[0:1]897; GFX900-NEXT:    ;;#ASMEND898; GFX900-NEXT:    ;;#ASMSTART899; GFX900-NEXT:    ; def v[1:2]900; GFX900-NEXT:    ;;#ASMEND901; GFX900-NEXT:    s_mov_b32 s4, 0x5040100902; GFX900-NEXT:    v_mov_b32_e32 v3, 0903; GFX900-NEXT:    v_perm_b32 v1, v0, v2, s4904; GFX900-NEXT:    v_perm_b32 v0, v2, v2, s4905; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]906; GFX900-NEXT:    s_waitcnt vmcnt(0)907; GFX900-NEXT:    s_setpc_b64 s[30:31]908;909; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_5_0:910; GFX90A:       ; %bb.0:911; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)912; GFX90A-NEXT:    ;;#ASMSTART913; GFX90A-NEXT:    ; def v[0:1]914; GFX90A-NEXT:    ;;#ASMEND915; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100916; GFX90A-NEXT:    v_mov_b32_e32 v4, 0917; GFX90A-NEXT:    ;;#ASMSTART918; GFX90A-NEXT:    ; def v[2:3]919; GFX90A-NEXT:    ;;#ASMEND920; GFX90A-NEXT:    v_perm_b32 v1, v0, v3, s4921; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s4922; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]923; GFX90A-NEXT:    s_waitcnt vmcnt(0)924; GFX90A-NEXT:    s_setpc_b64 s[30:31]925;926; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_5_0:927; GFX942:       ; %bb.0:928; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)929; GFX942-NEXT:    ;;#ASMSTART930; GFX942-NEXT:    ; def v[0:1]931; GFX942-NEXT:    ;;#ASMEND932; GFX942-NEXT:    s_mov_b32 s2, 0x5040100933; GFX942-NEXT:    v_mov_b32_e32 v4, 0934; GFX942-NEXT:    ;;#ASMSTART935; GFX942-NEXT:    ; def v[2:3]936; GFX942-NEXT:    ;;#ASMEND937; GFX942-NEXT:    s_nop 0938; GFX942-NEXT:    v_perm_b32 v1, v0, v3, s2939; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s2940; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]941; GFX942-NEXT:    s_waitcnt vmcnt(0)942; GFX942-NEXT:    s_setpc_b64 s[30:31]943  %vec0 = call <4 x i16> asm "; def $0", "=v"()944  %vec1 = call <4 x i16> asm "; def $0", "=v"()945  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>946  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>947  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 5, i32 0>948  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8949  ret void950}951 952define void @v_shuffle_v4i16_v3i16__5_5_5_1(ptr addrspace(1) inreg %ptr) {953; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_5_1:954; GFX900:       ; %bb.0:955; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)956; GFX900-NEXT:    ;;#ASMSTART957; GFX900-NEXT:    ; def v[0:1]958; GFX900-NEXT:    ;;#ASMEND959; GFX900-NEXT:    ;;#ASMSTART960; GFX900-NEXT:    ; def v[1:2]961; GFX900-NEXT:    ;;#ASMEND962; GFX900-NEXT:    s_mov_b32 s4, 0xffff963; GFX900-NEXT:    v_bfi_b32 v1, s4, v2, v0964; GFX900-NEXT:    s_mov_b32 s4, 0x5040100965; GFX900-NEXT:    v_mov_b32_e32 v3, 0966; GFX900-NEXT:    v_perm_b32 v0, v2, v2, s4967; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]968; GFX900-NEXT:    s_waitcnt vmcnt(0)969; GFX900-NEXT:    s_setpc_b64 s[30:31]970;971; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_5_1:972; GFX90A:       ; %bb.0:973; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)974; GFX90A-NEXT:    ;;#ASMSTART975; GFX90A-NEXT:    ; def v[0:1]976; GFX90A-NEXT:    ;;#ASMEND977; GFX90A-NEXT:    s_mov_b32 s4, 0xffff978; GFX90A-NEXT:    ;;#ASMSTART979; GFX90A-NEXT:    ; def v[2:3]980; GFX90A-NEXT:    ;;#ASMEND981; GFX90A-NEXT:    v_bfi_b32 v1, s4, v3, v0982; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100983; GFX90A-NEXT:    v_mov_b32_e32 v4, 0984; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s4985; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]986; GFX90A-NEXT:    s_waitcnt vmcnt(0)987; GFX90A-NEXT:    s_setpc_b64 s[30:31]988;989; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_5_1:990; GFX942:       ; %bb.0:991; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)992; GFX942-NEXT:    ;;#ASMSTART993; GFX942-NEXT:    ; def v[0:1]994; GFX942-NEXT:    ;;#ASMEND995; GFX942-NEXT:    s_mov_b32 s2, 0xffff996; GFX942-NEXT:    ;;#ASMSTART997; GFX942-NEXT:    ; def v[2:3]998; GFX942-NEXT:    ;;#ASMEND999; GFX942-NEXT:    v_mov_b32_e32 v4, 01000; GFX942-NEXT:    v_bfi_b32 v1, s2, v3, v01001; GFX942-NEXT:    s_mov_b32 s2, 0x50401001002; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s21003; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]1004; GFX942-NEXT:    s_waitcnt vmcnt(0)1005; GFX942-NEXT:    s_setpc_b64 s[30:31]1006  %vec0 = call <4 x i16> asm "; def $0", "=v"()1007  %vec1 = call <4 x i16> asm "; def $0", "=v"()1008  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1009  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1010  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 5, i32 1>1011  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81012  ret void1013}1014 1015define void @v_shuffle_v4i16_v3i16__5_5_5_2(ptr addrspace(1) inreg %ptr) {1016; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_5_2:1017; GFX900:       ; %bb.0:1018; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1019; GFX900-NEXT:    ;;#ASMSTART1020; GFX900-NEXT:    ; def v[0:1]1021; GFX900-NEXT:    ;;#ASMEND1022; GFX900-NEXT:    s_mov_b32 s4, 0x50401001023; GFX900-NEXT:    v_mov_b32_e32 v4, 01024; GFX900-NEXT:    ;;#ASMSTART1025; GFX900-NEXT:    ; def v[2:3]1026; GFX900-NEXT:    ;;#ASMEND1027; GFX900-NEXT:    v_perm_b32 v1, v1, v3, s41028; GFX900-NEXT:    v_perm_b32 v0, v3, v3, s41029; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]1030; GFX900-NEXT:    s_waitcnt vmcnt(0)1031; GFX900-NEXT:    s_setpc_b64 s[30:31]1032;1033; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_5_2:1034; GFX90A:       ; %bb.0:1035; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1036; GFX90A-NEXT:    ;;#ASMSTART1037; GFX90A-NEXT:    ; def v[0:1]1038; GFX90A-NEXT:    ;;#ASMEND1039; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001040; GFX90A-NEXT:    v_mov_b32_e32 v4, 01041; GFX90A-NEXT:    ;;#ASMSTART1042; GFX90A-NEXT:    ; def v[2:3]1043; GFX90A-NEXT:    ;;#ASMEND1044; GFX90A-NEXT:    v_perm_b32 v1, v1, v3, s41045; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s41046; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]1047; GFX90A-NEXT:    s_waitcnt vmcnt(0)1048; GFX90A-NEXT:    s_setpc_b64 s[30:31]1049;1050; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_5_2:1051; GFX942:       ; %bb.0:1052; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1053; GFX942-NEXT:    ;;#ASMSTART1054; GFX942-NEXT:    ; def v[0:1]1055; GFX942-NEXT:    ;;#ASMEND1056; GFX942-NEXT:    s_mov_b32 s2, 0x50401001057; GFX942-NEXT:    v_mov_b32_e32 v4, 01058; GFX942-NEXT:    ;;#ASMSTART1059; GFX942-NEXT:    ; def v[2:3]1060; GFX942-NEXT:    ;;#ASMEND1061; GFX942-NEXT:    s_nop 01062; GFX942-NEXT:    v_perm_b32 v1, v1, v3, s21063; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s21064; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]1065; GFX942-NEXT:    s_waitcnt vmcnt(0)1066; GFX942-NEXT:    s_setpc_b64 s[30:31]1067  %vec0 = call <4 x i16> asm "; def $0", "=v"()1068  %vec1 = call <4 x i16> asm "; def $0", "=v"()1069  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1070  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1071  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 5, i32 2>1072  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81073  ret void1074}1075 1076define void @v_shuffle_v4i16_v3i16__5_5_5_3(ptr addrspace(1) inreg %ptr) {1077; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_5_3:1078; GFX900:       ; %bb.0:1079; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1080; GFX900-NEXT:    ;;#ASMSTART1081; GFX900-NEXT:    ; def v[0:1]1082; GFX900-NEXT:    ;;#ASMEND1083; GFX900-NEXT:    s_mov_b32 s4, 0x50401001084; GFX900-NEXT:    v_mov_b32_e32 v3, 01085; GFX900-NEXT:    v_perm_b32 v2, v0, v1, s41086; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s41087; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]1088; GFX900-NEXT:    s_waitcnt vmcnt(0)1089; GFX900-NEXT:    s_setpc_b64 s[30:31]1090;1091; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_5_3:1092; GFX90A:       ; %bb.0:1093; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1094; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001095; GFX90A-NEXT:    v_mov_b32_e32 v4, 01096; GFX90A-NEXT:    ;;#ASMSTART1097; GFX90A-NEXT:    ; def v[0:1]1098; GFX90A-NEXT:    ;;#ASMEND1099; GFX90A-NEXT:    v_perm_b32 v3, v0, v1, s41100; GFX90A-NEXT:    v_perm_b32 v2, v1, v1, s41101; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]1102; GFX90A-NEXT:    s_waitcnt vmcnt(0)1103; GFX90A-NEXT:    s_setpc_b64 s[30:31]1104;1105; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_5_3:1106; GFX942:       ; %bb.0:1107; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1108; GFX942-NEXT:    s_mov_b32 s2, 0x50401001109; GFX942-NEXT:    v_mov_b32_e32 v4, 01110; GFX942-NEXT:    ;;#ASMSTART1111; GFX942-NEXT:    ; def v[0:1]1112; GFX942-NEXT:    ;;#ASMEND1113; GFX942-NEXT:    s_nop 01114; GFX942-NEXT:    v_perm_b32 v3, v0, v1, s21115; GFX942-NEXT:    v_perm_b32 v2, v1, v1, s21116; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]1117; GFX942-NEXT:    s_waitcnt vmcnt(0)1118; GFX942-NEXT:    s_setpc_b64 s[30:31]1119  %vec0 = call <4 x i16> asm "; def $0", "=v"()1120  %vec1 = call <4 x i16> asm "; def $0", "=v"()1121  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1122  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1123  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 5, i32 3>1124  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81125  ret void1126}1127 1128define void @v_shuffle_v4i16_v3i16__5_5_5_4(ptr addrspace(1) inreg %ptr) {1129; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_5_4:1130; GFX900:       ; %bb.0:1131; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1132; GFX900-NEXT:    s_mov_b32 s4, 0xffff1133; GFX900-NEXT:    ;;#ASMSTART1134; GFX900-NEXT:    ; def v[0:1]1135; GFX900-NEXT:    ;;#ASMEND1136; GFX900-NEXT:    v_bfi_b32 v2, s4, v1, v01137; GFX900-NEXT:    s_mov_b32 s4, 0x50401001138; GFX900-NEXT:    v_mov_b32_e32 v3, 01139; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s41140; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]1141; GFX900-NEXT:    s_waitcnt vmcnt(0)1142; GFX900-NEXT:    s_setpc_b64 s[30:31]1143;1144; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_5_4:1145; GFX90A:       ; %bb.0:1146; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1147; GFX90A-NEXT:    s_mov_b32 s4, 0xffff1148; GFX90A-NEXT:    ;;#ASMSTART1149; GFX90A-NEXT:    ; def v[0:1]1150; GFX90A-NEXT:    ;;#ASMEND1151; GFX90A-NEXT:    v_bfi_b32 v3, s4, v1, v01152; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001153; GFX90A-NEXT:    v_mov_b32_e32 v4, 01154; GFX90A-NEXT:    v_perm_b32 v2, v1, v1, s41155; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]1156; GFX90A-NEXT:    s_waitcnt vmcnt(0)1157; GFX90A-NEXT:    s_setpc_b64 s[30:31]1158;1159; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_5_4:1160; GFX942:       ; %bb.0:1161; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1162; GFX942-NEXT:    s_mov_b32 s2, 0xffff1163; GFX942-NEXT:    ;;#ASMSTART1164; GFX942-NEXT:    ; def v[0:1]1165; GFX942-NEXT:    ;;#ASMEND1166; GFX942-NEXT:    v_mov_b32_e32 v4, 01167; GFX942-NEXT:    v_bfi_b32 v3, s2, v1, v01168; GFX942-NEXT:    s_mov_b32 s2, 0x50401001169; GFX942-NEXT:    v_perm_b32 v2, v1, v1, s21170; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]1171; GFX942-NEXT:    s_waitcnt vmcnt(0)1172; GFX942-NEXT:    s_setpc_b64 s[30:31]1173  %vec0 = call <4 x i16> asm "; def $0", "=v"()1174  %vec1 = call <4 x i16> asm "; def $0", "=v"()1175  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1176  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1177  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 5, i32 4>1178  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81179  ret void1180}1181 1182define void @v_shuffle_v4i16_v3i16__5_5_5_5(ptr addrspace(1) inreg %ptr) {1183; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_5_5:1184; GFX900:       ; %bb.0:1185; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1186; GFX900-NEXT:    ;;#ASMSTART1187; GFX900-NEXT:    ; def v[0:1]1188; GFX900-NEXT:    ;;#ASMEND1189; GFX900-NEXT:    s_mov_b32 s4, 0x50401001190; GFX900-NEXT:    v_perm_b32 v0, v1, v1, s41191; GFX900-NEXT:    v_mov_b32_e32 v2, 01192; GFX900-NEXT:    v_mov_b32_e32 v1, v01193; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1194; GFX900-NEXT:    s_waitcnt vmcnt(0)1195; GFX900-NEXT:    s_setpc_b64 s[30:31]1196;1197; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_5_5:1198; GFX90A:       ; %bb.0:1199; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1200; GFX90A-NEXT:    ;;#ASMSTART1201; GFX90A-NEXT:    ; def v[0:1]1202; GFX90A-NEXT:    ;;#ASMEND1203; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001204; GFX90A-NEXT:    v_perm_b32 v0, v1, v1, s41205; GFX90A-NEXT:    v_mov_b32_e32 v2, 01206; GFX90A-NEXT:    v_mov_b32_e32 v1, v01207; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1208; GFX90A-NEXT:    s_waitcnt vmcnt(0)1209; GFX90A-NEXT:    s_setpc_b64 s[30:31]1210;1211; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_5_5:1212; GFX942:       ; %bb.0:1213; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1214; GFX942-NEXT:    ;;#ASMSTART1215; GFX942-NEXT:    ; def v[0:1]1216; GFX942-NEXT:    ;;#ASMEND1217; GFX942-NEXT:    s_mov_b32 s2, 0x50401001218; GFX942-NEXT:    v_perm_b32 v0, v1, v1, s21219; GFX942-NEXT:    v_mov_b32_e32 v2, 01220; GFX942-NEXT:    v_mov_b32_e32 v1, v01221; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1222; GFX942-NEXT:    s_waitcnt vmcnt(0)1223; GFX942-NEXT:    s_setpc_b64 s[30:31]1224  %vec0 = call <4 x i16> asm "; def $0", "=v"()1225  %vec1 = call <4 x i16> asm "; def $0", "=v"()1226  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1227  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1228  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 5, i32 5>1229  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81230  ret void1231}1232 1233define void @v_shuffle_v4i16_v3i16__u_0_0_0(ptr addrspace(1) inreg %ptr) {1234; GFX900-LABEL: v_shuffle_v4i16_v3i16__u_0_0_0:1235; GFX900:       ; %bb.0:1236; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1237; GFX900-NEXT:    ;;#ASMSTART1238; GFX900-NEXT:    ; def v[0:1]1239; GFX900-NEXT:    ;;#ASMEND1240; GFX900-NEXT:    s_mov_b32 s4, 0x50401001241; GFX900-NEXT:    v_mov_b32_e32 v2, 01242; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s41243; GFX900-NEXT:    v_lshlrev_b32_e32 v0, 16, v01244; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1245; GFX900-NEXT:    s_waitcnt vmcnt(0)1246; GFX900-NEXT:    s_setpc_b64 s[30:31]1247;1248; GFX90A-LABEL: v_shuffle_v4i16_v3i16__u_0_0_0:1249; GFX90A:       ; %bb.0:1250; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1251; GFX90A-NEXT:    ;;#ASMSTART1252; GFX90A-NEXT:    ; def v[0:1]1253; GFX90A-NEXT:    ;;#ASMEND1254; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001255; GFX90A-NEXT:    v_mov_b32_e32 v2, 01256; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s41257; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 16, v01258; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1259; GFX90A-NEXT:    s_waitcnt vmcnt(0)1260; GFX90A-NEXT:    s_setpc_b64 s[30:31]1261;1262; GFX942-LABEL: v_shuffle_v4i16_v3i16__u_0_0_0:1263; GFX942:       ; %bb.0:1264; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1265; GFX942-NEXT:    ;;#ASMSTART1266; GFX942-NEXT:    ; def v[0:1]1267; GFX942-NEXT:    ;;#ASMEND1268; GFX942-NEXT:    s_mov_b32 s2, 0x50401001269; GFX942-NEXT:    v_mov_b32_e32 v2, 01270; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s21271; GFX942-NEXT:    v_lshlrev_b32_e32 v0, 16, v01272; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1273; GFX942-NEXT:    s_waitcnt vmcnt(0)1274; GFX942-NEXT:    s_setpc_b64 s[30:31]1275  %vec0 = call <4 x i16> asm "; def $0", "=v"()1276  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1277  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0>1278  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81279  ret void1280}1281 1282define void @v_shuffle_v4i16_v3i16__0_0_0_0(ptr addrspace(1) inreg %ptr) {1283; GFX900-LABEL: v_shuffle_v4i16_v3i16__0_0_0_0:1284; GFX900:       ; %bb.0:1285; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1286; GFX900-NEXT:    ;;#ASMSTART1287; GFX900-NEXT:    ; def v[0:1]1288; GFX900-NEXT:    ;;#ASMEND1289; GFX900-NEXT:    s_mov_b32 s4, 0x50401001290; GFX900-NEXT:    v_perm_b32 v0, v0, v0, s41291; GFX900-NEXT:    v_mov_b32_e32 v2, 01292; GFX900-NEXT:    v_mov_b32_e32 v1, v01293; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1294; GFX900-NEXT:    s_waitcnt vmcnt(0)1295; GFX900-NEXT:    s_setpc_b64 s[30:31]1296;1297; GFX90A-LABEL: v_shuffle_v4i16_v3i16__0_0_0_0:1298; GFX90A:       ; %bb.0:1299; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1300; GFX90A-NEXT:    ;;#ASMSTART1301; GFX90A-NEXT:    ; def v[0:1]1302; GFX90A-NEXT:    ;;#ASMEND1303; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001304; GFX90A-NEXT:    v_perm_b32 v0, v0, v0, s41305; GFX90A-NEXT:    v_mov_b32_e32 v2, 01306; GFX90A-NEXT:    v_mov_b32_e32 v1, v01307; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1308; GFX90A-NEXT:    s_waitcnt vmcnt(0)1309; GFX90A-NEXT:    s_setpc_b64 s[30:31]1310;1311; GFX942-LABEL: v_shuffle_v4i16_v3i16__0_0_0_0:1312; GFX942:       ; %bb.0:1313; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1314; GFX942-NEXT:    ;;#ASMSTART1315; GFX942-NEXT:    ; def v[0:1]1316; GFX942-NEXT:    ;;#ASMEND1317; GFX942-NEXT:    s_mov_b32 s2, 0x50401001318; GFX942-NEXT:    v_perm_b32 v0, v0, v0, s21319; GFX942-NEXT:    v_mov_b32_e32 v2, 01320; GFX942-NEXT:    v_mov_b32_e32 v1, v01321; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1322; GFX942-NEXT:    s_waitcnt vmcnt(0)1323; GFX942-NEXT:    s_setpc_b64 s[30:31]1324  %vec0 = call <4 x i16> asm "; def $0", "=v"()1325  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1326  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> zeroinitializer1327  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81328  ret void1329}1330 1331define void @v_shuffle_v4i16_v3i16__1_0_0_0(ptr addrspace(1) inreg %ptr) {1332; GFX900-LABEL: v_shuffle_v4i16_v3i16__1_0_0_0:1333; GFX900:       ; %bb.0:1334; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1335; GFX900-NEXT:    ;;#ASMSTART1336; GFX900-NEXT:    ; def v[0:1]1337; GFX900-NEXT:    ;;#ASMEND1338; GFX900-NEXT:    s_mov_b32 s4, 0x50401001339; GFX900-NEXT:    v_mov_b32_e32 v2, 01340; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s41341; GFX900-NEXT:    v_alignbit_b32 v0, v0, v0, 161342; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1343; GFX900-NEXT:    s_waitcnt vmcnt(0)1344; GFX900-NEXT:    s_setpc_b64 s[30:31]1345;1346; GFX90A-LABEL: v_shuffle_v4i16_v3i16__1_0_0_0:1347; GFX90A:       ; %bb.0:1348; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1349; GFX90A-NEXT:    ;;#ASMSTART1350; GFX90A-NEXT:    ; def v[0:1]1351; GFX90A-NEXT:    ;;#ASMEND1352; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001353; GFX90A-NEXT:    v_mov_b32_e32 v2, 01354; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s41355; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v0, 161356; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1357; GFX90A-NEXT:    s_waitcnt vmcnt(0)1358; GFX90A-NEXT:    s_setpc_b64 s[30:31]1359;1360; GFX942-LABEL: v_shuffle_v4i16_v3i16__1_0_0_0:1361; GFX942:       ; %bb.0:1362; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1363; GFX942-NEXT:    ;;#ASMSTART1364; GFX942-NEXT:    ; def v[0:1]1365; GFX942-NEXT:    ;;#ASMEND1366; GFX942-NEXT:    s_mov_b32 s2, 0x50401001367; GFX942-NEXT:    v_mov_b32_e32 v2, 01368; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s21369; GFX942-NEXT:    v_alignbit_b32 v0, v0, v0, 161370; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1371; GFX942-NEXT:    s_waitcnt vmcnt(0)1372; GFX942-NEXT:    s_setpc_b64 s[30:31]1373  %vec0 = 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  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>1376  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81377  ret void1378}1379 1380define void @v_shuffle_v4i16_v3i16__2_0_0_0(ptr addrspace(1) inreg %ptr) {1381; GFX900-LABEL: v_shuffle_v4i16_v3i16__2_0_0_0:1382; GFX900:       ; %bb.0:1383; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1384; GFX900-NEXT:    ;;#ASMSTART1385; GFX900-NEXT:    ; def v[0:1]1386; GFX900-NEXT:    ;;#ASMEND1387; GFX900-NEXT:    s_mov_b32 s4, 0x50401001388; GFX900-NEXT:    v_mov_b32_e32 v3, 01389; GFX900-NEXT:    v_perm_b32 v1, v0, v1, s41390; GFX900-NEXT:    v_perm_b32 v2, v0, v0, s41391; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]1392; GFX900-NEXT:    s_waitcnt vmcnt(0)1393; GFX900-NEXT:    s_setpc_b64 s[30:31]1394;1395; GFX90A-LABEL: v_shuffle_v4i16_v3i16__2_0_0_0:1396; GFX90A:       ; %bb.0:1397; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1398; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001399; GFX90A-NEXT:    v_mov_b32_e32 v4, 01400; GFX90A-NEXT:    ;;#ASMSTART1401; GFX90A-NEXT:    ; def v[0:1]1402; GFX90A-NEXT:    ;;#ASMEND1403; GFX90A-NEXT:    v_perm_b32 v2, v0, v1, s41404; GFX90A-NEXT:    v_perm_b32 v3, v0, v0, s41405; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]1406; GFX90A-NEXT:    s_waitcnt vmcnt(0)1407; GFX90A-NEXT:    s_setpc_b64 s[30:31]1408;1409; GFX942-LABEL: v_shuffle_v4i16_v3i16__2_0_0_0:1410; GFX942:       ; %bb.0:1411; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1412; GFX942-NEXT:    s_mov_b32 s2, 0x50401001413; GFX942-NEXT:    v_mov_b32_e32 v4, 01414; GFX942-NEXT:    ;;#ASMSTART1415; GFX942-NEXT:    ; def v[0:1]1416; GFX942-NEXT:    ;;#ASMEND1417; GFX942-NEXT:    s_nop 01418; GFX942-NEXT:    v_perm_b32 v2, v0, v1, s21419; GFX942-NEXT:    v_perm_b32 v3, v0, v0, s21420; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]1421; GFX942-NEXT:    s_waitcnt vmcnt(0)1422; GFX942-NEXT:    s_setpc_b64 s[30:31]1423  %vec0 = call <4 x i16> asm "; def $0", "=v"()1424  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1425  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0>1426  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81427  ret void1428}1429 1430define void @v_shuffle_v4i16_v3i16__3_0_0_0(ptr addrspace(1) inreg %ptr) {1431; GFX900-LABEL: v_shuffle_v4i16_v3i16__3_0_0_0:1432; GFX900:       ; %bb.0:1433; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1434; GFX900-NEXT:    ;;#ASMSTART1435; GFX900-NEXT:    ; def v[0:1]1436; GFX900-NEXT:    ;;#ASMEND1437; GFX900-NEXT:    s_mov_b32 s4, 0x50401001438; GFX900-NEXT:    v_mov_b32_e32 v2, 01439; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s41440; GFX900-NEXT:    v_lshlrev_b32_e32 v0, 16, v01441; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1442; GFX900-NEXT:    s_waitcnt vmcnt(0)1443; GFX900-NEXT:    s_setpc_b64 s[30:31]1444;1445; GFX90A-LABEL: v_shuffle_v4i16_v3i16__3_0_0_0:1446; GFX90A:       ; %bb.0:1447; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1448; GFX90A-NEXT:    ;;#ASMSTART1449; GFX90A-NEXT:    ; def v[0:1]1450; GFX90A-NEXT:    ;;#ASMEND1451; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001452; GFX90A-NEXT:    v_mov_b32_e32 v2, 01453; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s41454; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 16, v01455; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1456; GFX90A-NEXT:    s_waitcnt vmcnt(0)1457; GFX90A-NEXT:    s_setpc_b64 s[30:31]1458;1459; GFX942-LABEL: v_shuffle_v4i16_v3i16__3_0_0_0:1460; GFX942:       ; %bb.0:1461; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1462; GFX942-NEXT:    ;;#ASMSTART1463; GFX942-NEXT:    ; def v[0:1]1464; GFX942-NEXT:    ;;#ASMEND1465; GFX942-NEXT:    s_mov_b32 s2, 0x50401001466; GFX942-NEXT:    v_mov_b32_e32 v2, 01467; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s21468; GFX942-NEXT:    v_lshlrev_b32_e32 v0, 16, v01469; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1470; GFX942-NEXT:    s_waitcnt vmcnt(0)1471; GFX942-NEXT:    s_setpc_b64 s[30:31]1472  %vec0 = call <4 x i16> asm "; def $0", "=v"()1473  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1474  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 3, i32 0, i32 0, i32 0>1475  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81476  ret void1477}1478 1479define void @v_shuffle_v4i16_v3i16__4_0_0_0(ptr addrspace(1) inreg %ptr) {1480; GFX900-LABEL: v_shuffle_v4i16_v3i16__4_0_0_0:1481; GFX900:       ; %bb.0:1482; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1483; GFX900-NEXT:    ;;#ASMSTART1484; GFX900-NEXT:    ; def v[0:1]1485; GFX900-NEXT:    ;;#ASMEND1486; GFX900-NEXT:    ;;#ASMSTART1487; GFX900-NEXT:    ; def v[1:2]1488; GFX900-NEXT:    ;;#ASMEND1489; GFX900-NEXT:    s_mov_b32 s4, 0x50401001490; GFX900-NEXT:    v_mov_b32_e32 v3, 01491; GFX900-NEXT:    v_perm_b32 v2, v0, v0, s41492; GFX900-NEXT:    v_alignbit_b32 v1, v0, v1, 161493; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]1494; GFX900-NEXT:    s_waitcnt vmcnt(0)1495; GFX900-NEXT:    s_setpc_b64 s[30:31]1496;1497; GFX90A-LABEL: v_shuffle_v4i16_v3i16__4_0_0_0:1498; GFX90A:       ; %bb.0:1499; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1500; GFX90A-NEXT:    ;;#ASMSTART1501; GFX90A-NEXT:    ; def v[0:1]1502; GFX90A-NEXT:    ;;#ASMEND1503; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001504; GFX90A-NEXT:    v_mov_b32_e32 v4, 01505; GFX90A-NEXT:    ;;#ASMSTART1506; GFX90A-NEXT:    ; def v[2:3]1507; GFX90A-NEXT:    ;;#ASMEND1508; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s41509; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v2, 161510; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]1511; GFX90A-NEXT:    s_waitcnt vmcnt(0)1512; GFX90A-NEXT:    s_setpc_b64 s[30:31]1513;1514; GFX942-LABEL: v_shuffle_v4i16_v3i16__4_0_0_0:1515; GFX942:       ; %bb.0:1516; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1517; GFX942-NEXT:    ;;#ASMSTART1518; GFX942-NEXT:    ; def v[0:1]1519; GFX942-NEXT:    ;;#ASMEND1520; GFX942-NEXT:    s_mov_b32 s2, 0x50401001521; GFX942-NEXT:    v_mov_b32_e32 v4, 01522; GFX942-NEXT:    ;;#ASMSTART1523; GFX942-NEXT:    ; def v[2:3]1524; GFX942-NEXT:    ;;#ASMEND1525; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s21526; GFX942-NEXT:    v_alignbit_b32 v0, v0, v2, 161527; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]1528; GFX942-NEXT:    s_waitcnt vmcnt(0)1529; GFX942-NEXT:    s_setpc_b64 s[30:31]1530  %vec0 = call <4 x i16> asm "; def $0", "=v"()1531  %vec1 = call <4 x i16> asm "; def $0", "=v"()1532  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1533  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1534  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 4, i32 0, i32 0, i32 0>1535  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81536  ret void1537}1538 1539define void @v_shuffle_v4i16_v3i16__5_0_0_0(ptr addrspace(1) inreg %ptr) {1540; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_0_0_0:1541; GFX900:       ; %bb.0:1542; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1543; GFX900-NEXT:    ;;#ASMSTART1544; GFX900-NEXT:    ; def v[0:1]1545; GFX900-NEXT:    ;;#ASMEND1546; GFX900-NEXT:    ;;#ASMSTART1547; GFX900-NEXT:    ; def v[1:2]1548; GFX900-NEXT:    ;;#ASMEND1549; GFX900-NEXT:    s_mov_b32 s4, 0x50401001550; GFX900-NEXT:    v_mov_b32_e32 v3, 01551; GFX900-NEXT:    v_perm_b32 v1, v0, v2, s41552; GFX900-NEXT:    v_perm_b32 v2, v0, v0, s41553; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]1554; GFX900-NEXT:    s_waitcnt vmcnt(0)1555; GFX900-NEXT:    s_setpc_b64 s[30:31]1556;1557; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_0_0_0:1558; GFX90A:       ; %bb.0:1559; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1560; GFX90A-NEXT:    ;;#ASMSTART1561; GFX90A-NEXT:    ; def v[2:3]1562; GFX90A-NEXT:    ;;#ASMEND1563; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001564; GFX90A-NEXT:    v_mov_b32_e32 v4, 01565; GFX90A-NEXT:    ;;#ASMSTART1566; GFX90A-NEXT:    ; def v[0:1]1567; GFX90A-NEXT:    ;;#ASMEND1568; GFX90A-NEXT:    v_perm_b32 v2, v0, v3, s41569; GFX90A-NEXT:    v_perm_b32 v3, v0, v0, s41570; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]1571; GFX90A-NEXT:    s_waitcnt vmcnt(0)1572; GFX90A-NEXT:    s_setpc_b64 s[30:31]1573;1574; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_0_0_0:1575; GFX942:       ; %bb.0:1576; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1577; GFX942-NEXT:    ;;#ASMSTART1578; GFX942-NEXT:    ; def v[2:3]1579; GFX942-NEXT:    ;;#ASMEND1580; GFX942-NEXT:    s_mov_b32 s2, 0x50401001581; GFX942-NEXT:    v_mov_b32_e32 v4, 01582; GFX942-NEXT:    ;;#ASMSTART1583; GFX942-NEXT:    ; def v[0:1]1584; GFX942-NEXT:    ;;#ASMEND1585; GFX942-NEXT:    s_nop 01586; GFX942-NEXT:    v_perm_b32 v2, v0, v3, s21587; GFX942-NEXT:    v_perm_b32 v3, v0, v0, s21588; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]1589; GFX942-NEXT:    s_waitcnt vmcnt(0)1590; GFX942-NEXT:    s_setpc_b64 s[30:31]1591  %vec0 = call <4 x i16> asm "; def $0", "=v"()1592  %vec1 = call <4 x i16> asm "; def $0", "=v"()1593  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1594  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1595  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 0, i32 0, i32 0>1596  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81597  ret void1598}1599 1600define void @v_shuffle_v4i16_v3i16__5_u_0_0(ptr addrspace(1) inreg %ptr) {1601; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_u_0_0:1602; GFX900:       ; %bb.0:1603; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1604; GFX900-NEXT:    ;;#ASMSTART1605; GFX900-NEXT:    ; def v[2:3]1606; GFX900-NEXT:    ;;#ASMEND1607; GFX900-NEXT:    s_mov_b32 s4, 0x50401001608; GFX900-NEXT:    v_mov_b32_e32 v4, 01609; GFX900-NEXT:    v_perm_b32 v2, v2, v2, s41610; GFX900-NEXT:    ;;#ASMSTART1611; GFX900-NEXT:    ; def v[0:1]1612; GFX900-NEXT:    ;;#ASMEND1613; GFX900-NEXT:    global_store_dwordx2 v4, v[1:2], s[16:17]1614; GFX900-NEXT:    s_waitcnt vmcnt(0)1615; GFX900-NEXT:    s_setpc_b64 s[30:31]1616;1617; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_u_0_0:1618; GFX90A:       ; %bb.0:1619; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1620; GFX90A-NEXT:    ;;#ASMSTART1621; GFX90A-NEXT:    ; def v[0:1]1622; GFX90A-NEXT:    ;;#ASMEND1623; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001624; GFX90A-NEXT:    v_mov_b32_e32 v4, 01625; GFX90A-NEXT:    ;;#ASMSTART1626; GFX90A-NEXT:    ; def v[2:3]1627; GFX90A-NEXT:    ;;#ASMEND1628; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s41629; GFX90A-NEXT:    v_mov_b32_e32 v0, v31630; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]1631; GFX90A-NEXT:    s_waitcnt vmcnt(0)1632; GFX90A-NEXT:    s_setpc_b64 s[30:31]1633;1634; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_u_0_0:1635; GFX942:       ; %bb.0:1636; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1637; GFX942-NEXT:    ;;#ASMSTART1638; GFX942-NEXT:    ; def v[0:1]1639; GFX942-NEXT:    ;;#ASMEND1640; GFX942-NEXT:    s_mov_b32 s2, 0x50401001641; GFX942-NEXT:    v_mov_b32_e32 v4, 01642; GFX942-NEXT:    ;;#ASMSTART1643; GFX942-NEXT:    ; def v[2:3]1644; GFX942-NEXT:    ;;#ASMEND1645; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s21646; GFX942-NEXT:    v_mov_b32_e32 v0, v31647; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]1648; GFX942-NEXT:    s_waitcnt vmcnt(0)1649; GFX942-NEXT:    s_setpc_b64 s[30:31]1650  %vec0 = call <4 x i16> asm "; def $0", "=v"()1651  %vec1 = call <4 x i16> asm "; def $0", "=v"()1652  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1653  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1654  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 poison, i32 0, i32 0>1655  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81656  ret void1657}1658 1659define void @v_shuffle_v4i16_v3i16__5_1_0_0(ptr addrspace(1) inreg %ptr) {1660; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_1_0_0:1661; GFX900:       ; %bb.0:1662; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1663; GFX900-NEXT:    ;;#ASMSTART1664; GFX900-NEXT:    ; def v[0:1]1665; GFX900-NEXT:    ;;#ASMEND1666; GFX900-NEXT:    ;;#ASMSTART1667; GFX900-NEXT:    ; def v[1:2]1668; GFX900-NEXT:    ;;#ASMEND1669; GFX900-NEXT:    s_mov_b32 s4, 0xffff1670; GFX900-NEXT:    v_bfi_b32 v1, s4, v2, v01671; GFX900-NEXT:    s_mov_b32 s4, 0x50401001672; GFX900-NEXT:    v_mov_b32_e32 v3, 01673; GFX900-NEXT:    v_perm_b32 v2, v0, v0, s41674; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]1675; GFX900-NEXT:    s_waitcnt vmcnt(0)1676; GFX900-NEXT:    s_setpc_b64 s[30:31]1677;1678; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_1_0_0:1679; GFX90A:       ; %bb.0:1680; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1681; GFX90A-NEXT:    ;;#ASMSTART1682; GFX90A-NEXT:    ; def v[2:3]1683; GFX90A-NEXT:    ;;#ASMEND1684; GFX90A-NEXT:    s_mov_b32 s4, 0xffff1685; GFX90A-NEXT:    ;;#ASMSTART1686; GFX90A-NEXT:    ; def v[0:1]1687; GFX90A-NEXT:    ;;#ASMEND1688; GFX90A-NEXT:    v_bfi_b32 v2, s4, v3, v01689; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001690; GFX90A-NEXT:    v_mov_b32_e32 v4, 01691; GFX90A-NEXT:    v_perm_b32 v3, v0, v0, s41692; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]1693; GFX90A-NEXT:    s_waitcnt vmcnt(0)1694; GFX90A-NEXT:    s_setpc_b64 s[30:31]1695;1696; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_1_0_0:1697; GFX942:       ; %bb.0:1698; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1699; GFX942-NEXT:    ;;#ASMSTART1700; GFX942-NEXT:    ; def v[2:3]1701; GFX942-NEXT:    ;;#ASMEND1702; GFX942-NEXT:    s_mov_b32 s2, 0xffff1703; GFX942-NEXT:    ;;#ASMSTART1704; GFX942-NEXT:    ; def v[0:1]1705; GFX942-NEXT:    ;;#ASMEND1706; GFX942-NEXT:    v_mov_b32_e32 v4, 01707; GFX942-NEXT:    v_bfi_b32 v2, s2, v3, v01708; GFX942-NEXT:    s_mov_b32 s2, 0x50401001709; GFX942-NEXT:    v_perm_b32 v3, v0, v0, s21710; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]1711; GFX942-NEXT:    s_waitcnt vmcnt(0)1712; GFX942-NEXT:    s_setpc_b64 s[30:31]1713  %vec0 = call <4 x i16> asm "; def $0", "=v"()1714  %vec1 = call <4 x i16> asm "; def $0", "=v"()1715  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1716  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1717  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 1, i32 0, i32 0>1718  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81719  ret void1720}1721 1722define void @v_shuffle_v4i16_v3i16__5_2_0_0(ptr addrspace(1) inreg %ptr) {1723; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_2_0_0:1724; GFX900:       ; %bb.0:1725; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1726; GFX900-NEXT:    ;;#ASMSTART1727; GFX900-NEXT:    ; def v[0:1]1728; GFX900-NEXT:    ;;#ASMEND1729; GFX900-NEXT:    ;;#ASMSTART1730; GFX900-NEXT:    ; def v[2:3]1731; GFX900-NEXT:    ;;#ASMEND1732; GFX900-NEXT:    s_mov_b32 s4, 0x50401001733; GFX900-NEXT:    v_mov_b32_e32 v4, 01734; GFX900-NEXT:    v_perm_b32 v1, v1, v3, s41735; GFX900-NEXT:    v_perm_b32 v2, v0, v0, s41736; GFX900-NEXT:    global_store_dwordx2 v4, v[1:2], s[16:17]1737; GFX900-NEXT:    s_waitcnt vmcnt(0)1738; GFX900-NEXT:    s_setpc_b64 s[30:31]1739;1740; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_2_0_0:1741; GFX90A:       ; %bb.0:1742; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1743; GFX90A-NEXT:    ;;#ASMSTART1744; GFX90A-NEXT:    ; def v[2:3]1745; GFX90A-NEXT:    ;;#ASMEND1746; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001747; GFX90A-NEXT:    v_mov_b32_e32 v4, 01748; GFX90A-NEXT:    ;;#ASMSTART1749; GFX90A-NEXT:    ; def v[0:1]1750; GFX90A-NEXT:    ;;#ASMEND1751; GFX90A-NEXT:    v_perm_b32 v2, v1, v3, s41752; GFX90A-NEXT:    v_perm_b32 v3, v0, v0, s41753; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]1754; GFX90A-NEXT:    s_waitcnt vmcnt(0)1755; GFX90A-NEXT:    s_setpc_b64 s[30:31]1756;1757; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_2_0_0:1758; GFX942:       ; %bb.0:1759; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1760; GFX942-NEXT:    ;;#ASMSTART1761; GFX942-NEXT:    ; def v[2:3]1762; GFX942-NEXT:    ;;#ASMEND1763; GFX942-NEXT:    s_mov_b32 s2, 0x50401001764; GFX942-NEXT:    v_mov_b32_e32 v4, 01765; GFX942-NEXT:    ;;#ASMSTART1766; GFX942-NEXT:    ; def v[0:1]1767; GFX942-NEXT:    ;;#ASMEND1768; GFX942-NEXT:    s_nop 01769; GFX942-NEXT:    v_perm_b32 v2, v1, v3, s21770; GFX942-NEXT:    v_perm_b32 v3, v0, v0, s21771; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]1772; GFX942-NEXT:    s_waitcnt vmcnt(0)1773; GFX942-NEXT:    s_setpc_b64 s[30:31]1774  %vec0 = call <4 x i16> asm "; def $0", "=v"()1775  %vec1 = call <4 x i16> asm "; def $0", "=v"()1776  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1777  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1778  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 2, i32 0, i32 0>1779  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81780  ret void1781}1782 1783define void @v_shuffle_v4i16_v3i16__5_3_0_0(ptr addrspace(1) inreg %ptr) {1784; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_3_0_0:1785; GFX900:       ; %bb.0:1786; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1787; GFX900-NEXT:    ;;#ASMSTART1788; GFX900-NEXT:    ; def v[0:1]1789; GFX900-NEXT:    ;;#ASMEND1790; GFX900-NEXT:    ;;#ASMSTART1791; GFX900-NEXT:    ; def v[1:2]1792; GFX900-NEXT:    ;;#ASMEND1793; GFX900-NEXT:    s_mov_b32 s4, 0x50401001794; GFX900-NEXT:    v_mov_b32_e32 v3, 01795; GFX900-NEXT:    v_perm_b32 v1, v1, v2, s41796; GFX900-NEXT:    v_perm_b32 v2, v0, v0, s41797; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], 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_v4i16_v3i16__5_3_0_0:1802; GFX90A:       ; %bb.0:1803; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1804; GFX90A-NEXT:    ;;#ASMSTART1805; GFX90A-NEXT:    ; def v[2:3]1806; GFX90A-NEXT:    ;;#ASMEND1807; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001808; GFX90A-NEXT:    v_mov_b32_e32 v4, 01809; GFX90A-NEXT:    ;;#ASMSTART1810; GFX90A-NEXT:    ; def v[0:1]1811; GFX90A-NEXT:    ;;#ASMEND1812; GFX90A-NEXT:    v_perm_b32 v2, v2, v3, s41813; GFX90A-NEXT:    v_perm_b32 v3, v0, v0, s41814; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]1815; GFX90A-NEXT:    s_waitcnt vmcnt(0)1816; GFX90A-NEXT:    s_setpc_b64 s[30:31]1817;1818; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_3_0_0:1819; GFX942:       ; %bb.0:1820; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1821; GFX942-NEXT:    ;;#ASMSTART1822; GFX942-NEXT:    ; def v[2:3]1823; GFX942-NEXT:    ;;#ASMEND1824; GFX942-NEXT:    s_mov_b32 s2, 0x50401001825; GFX942-NEXT:    v_mov_b32_e32 v4, 01826; GFX942-NEXT:    ;;#ASMSTART1827; GFX942-NEXT:    ; def v[0:1]1828; GFX942-NEXT:    ;;#ASMEND1829; GFX942-NEXT:    v_perm_b32 v2, v2, v3, s21830; GFX942-NEXT:    v_perm_b32 v3, v0, v0, s21831; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]1832; GFX942-NEXT:    s_waitcnt vmcnt(0)1833; GFX942-NEXT:    s_setpc_b64 s[30:31]1834  %vec0 = call <4 x i16> asm "; def $0", "=v"()1835  %vec1 = call <4 x i16> asm "; def $0", "=v"()1836  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1837  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1838  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 3, i32 0, i32 0>1839  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81840  ret void1841}1842 1843define void @v_shuffle_v4i16_v3i16__5_4_0_0(ptr addrspace(1) inreg %ptr) {1844; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_4_0_0:1845; GFX900:       ; %bb.0:1846; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1847; GFX900-NEXT:    ;;#ASMSTART1848; GFX900-NEXT:    ; def v[0:1]1849; GFX900-NEXT:    ;;#ASMEND1850; GFX900-NEXT:    ;;#ASMSTART1851; GFX900-NEXT:    ; def v[1:2]1852; GFX900-NEXT:    ;;#ASMEND1853; GFX900-NEXT:    s_mov_b32 s4, 0xffff1854; GFX900-NEXT:    v_bfi_b32 v1, s4, v2, v11855; GFX900-NEXT:    s_mov_b32 s4, 0x50401001856; GFX900-NEXT:    v_mov_b32_e32 v3, 01857; GFX900-NEXT:    v_perm_b32 v2, v0, v0, s41858; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]1859; GFX900-NEXT:    s_waitcnt vmcnt(0)1860; GFX900-NEXT:    s_setpc_b64 s[30:31]1861;1862; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_4_0_0:1863; GFX90A:       ; %bb.0:1864; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1865; GFX90A-NEXT:    ;;#ASMSTART1866; GFX90A-NEXT:    ; def v[2:3]1867; GFX90A-NEXT:    ;;#ASMEND1868; GFX90A-NEXT:    s_mov_b32 s4, 0xffff1869; GFX90A-NEXT:    v_bfi_b32 v2, s4, v3, v21870; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001871; GFX90A-NEXT:    v_mov_b32_e32 v4, 01872; GFX90A-NEXT:    ;;#ASMSTART1873; GFX90A-NEXT:    ; def v[0:1]1874; GFX90A-NEXT:    ;;#ASMEND1875; GFX90A-NEXT:    v_perm_b32 v3, v0, v0, s41876; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]1877; GFX90A-NEXT:    s_waitcnt vmcnt(0)1878; GFX90A-NEXT:    s_setpc_b64 s[30:31]1879;1880; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_4_0_0:1881; GFX942:       ; %bb.0:1882; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1883; GFX942-NEXT:    ;;#ASMSTART1884; GFX942-NEXT:    ; def v[2:3]1885; GFX942-NEXT:    ;;#ASMEND1886; GFX942-NEXT:    s_mov_b32 s2, 0xffff1887; GFX942-NEXT:    v_bfi_b32 v2, s2, v3, v21888; GFX942-NEXT:    s_mov_b32 s2, 0x50401001889; GFX942-NEXT:    v_mov_b32_e32 v4, 01890; GFX942-NEXT:    ;;#ASMSTART1891; GFX942-NEXT:    ; def v[0:1]1892; GFX942-NEXT:    ;;#ASMEND1893; GFX942-NEXT:    s_nop 01894; GFX942-NEXT:    v_perm_b32 v3, v0, v0, s21895; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]1896; GFX942-NEXT:    s_waitcnt vmcnt(0)1897; GFX942-NEXT:    s_setpc_b64 s[30:31]1898  %vec0 = call <4 x i16> asm "; def $0", "=v"()1899  %vec1 = call <4 x i16> asm "; def $0", "=v"()1900  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1901  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1902  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 4, i32 0, i32 0>1903  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81904  ret void1905}1906 1907define void @v_shuffle_v4i16_v3i16__5_5_0_0(ptr addrspace(1) inreg %ptr) {1908; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_0_0:1909; GFX900:       ; %bb.0:1910; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1911; GFX900-NEXT:    ;;#ASMSTART1912; GFX900-NEXT:    ; def v[0:1]1913; GFX900-NEXT:    ;;#ASMEND1914; GFX900-NEXT:    ;;#ASMSTART1915; GFX900-NEXT:    ; def v[1:2]1916; GFX900-NEXT:    ;;#ASMEND1917; GFX900-NEXT:    s_mov_b32 s4, 0x50401001918; GFX900-NEXT:    v_mov_b32_e32 v3, 01919; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s41920; GFX900-NEXT:    v_perm_b32 v0, v2, v2, s41921; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]1922; GFX900-NEXT:    s_waitcnt vmcnt(0)1923; GFX900-NEXT:    s_setpc_b64 s[30:31]1924;1925; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_0_0:1926; GFX90A:       ; %bb.0:1927; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1928; GFX90A-NEXT:    ;;#ASMSTART1929; GFX90A-NEXT:    ; def v[0:1]1930; GFX90A-NEXT:    ;;#ASMEND1931; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001932; GFX90A-NEXT:    v_mov_b32_e32 v4, 01933; GFX90A-NEXT:    ;;#ASMSTART1934; GFX90A-NEXT:    ; def v[2:3]1935; GFX90A-NEXT:    ;;#ASMEND1936; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s41937; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s41938; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]1939; GFX90A-NEXT:    s_waitcnt vmcnt(0)1940; GFX90A-NEXT:    s_setpc_b64 s[30:31]1941;1942; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_0_0:1943; GFX942:       ; %bb.0:1944; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1945; GFX942-NEXT:    ;;#ASMSTART1946; GFX942-NEXT:    ; def v[0:1]1947; GFX942-NEXT:    ;;#ASMEND1948; GFX942-NEXT:    s_mov_b32 s2, 0x50401001949; GFX942-NEXT:    v_mov_b32_e32 v4, 01950; GFX942-NEXT:    ;;#ASMSTART1951; GFX942-NEXT:    ; def v[2:3]1952; GFX942-NEXT:    ;;#ASMEND1953; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s21954; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s21955; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]1956; GFX942-NEXT:    s_waitcnt vmcnt(0)1957; GFX942-NEXT:    s_setpc_b64 s[30:31]1958  %vec0 = call <4 x i16> asm "; def $0", "=v"()1959  %vec1 = call <4 x i16> asm "; def $0", "=v"()1960  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1961  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>1962  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 0, i32 0>1963  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81964  ret void1965}1966 1967define void @v_shuffle_v4i16_v3i16__5_5_u_0(ptr addrspace(1) inreg %ptr) {1968; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_u_0:1969; GFX900:       ; %bb.0:1970; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1971; GFX900-NEXT:    ;;#ASMSTART1972; GFX900-NEXT:    ; def v[0:1]1973; GFX900-NEXT:    ;;#ASMEND1974; GFX900-NEXT:    ;;#ASMSTART1975; GFX900-NEXT:    ; def v[1:2]1976; GFX900-NEXT:    ;;#ASMEND1977; GFX900-NEXT:    s_mov_b32 s4, 0x50401001978; GFX900-NEXT:    v_mov_b32_e32 v3, 01979; GFX900-NEXT:    v_perm_b32 v1, v2, v2, s41980; GFX900-NEXT:    v_lshlrev_b32_e32 v2, 16, v01981; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]1982; GFX900-NEXT:    s_waitcnt vmcnt(0)1983; GFX900-NEXT:    s_setpc_b64 s[30:31]1984;1985; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_u_0:1986; GFX90A:       ; %bb.0:1987; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1988; GFX90A-NEXT:    ;;#ASMSTART1989; GFX90A-NEXT:    ; def v[2:3]1990; GFX90A-NEXT:    ;;#ASMEND1991; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001992; GFX90A-NEXT:    v_mov_b32_e32 v4, 01993; GFX90A-NEXT:    ;;#ASMSTART1994; GFX90A-NEXT:    ; def v[0:1]1995; GFX90A-NEXT:    ;;#ASMEND1996; GFX90A-NEXT:    v_perm_b32 v2, v3, v3, s41997; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 16, v01998; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]1999; GFX90A-NEXT:    s_waitcnt vmcnt(0)2000; GFX90A-NEXT:    s_setpc_b64 s[30:31]2001;2002; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_u_0:2003; GFX942:       ; %bb.0:2004; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2005; GFX942-NEXT:    ;;#ASMSTART2006; GFX942-NEXT:    ; def v[2:3]2007; GFX942-NEXT:    ;;#ASMEND2008; GFX942-NEXT:    s_mov_b32 s2, 0x50401002009; GFX942-NEXT:    v_mov_b32_e32 v4, 02010; GFX942-NEXT:    ;;#ASMSTART2011; GFX942-NEXT:    ; def v[0:1]2012; GFX942-NEXT:    ;;#ASMEND2013; GFX942-NEXT:    v_perm_b32 v2, v3, v3, s22014; GFX942-NEXT:    v_lshlrev_b32_e32 v3, 16, v02015; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]2016; GFX942-NEXT:    s_waitcnt vmcnt(0)2017; GFX942-NEXT:    s_setpc_b64 s[30:31]2018  %vec0 = call <4 x i16> asm "; def $0", "=v"()2019  %vec1 = call <4 x i16> asm "; def $0", "=v"()2020  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2021  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2022  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 poison, i32 0>2023  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82024  ret void2025}2026 2027define void @v_shuffle_v4i16_v3i16__5_5_1_0(ptr addrspace(1) inreg %ptr) {2028; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_1_0:2029; GFX900:       ; %bb.0:2030; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2031; GFX900-NEXT:    ;;#ASMSTART2032; GFX900-NEXT:    ; def v[0:1]2033; GFX900-NEXT:    ;;#ASMEND2034; GFX900-NEXT:    ;;#ASMSTART2035; GFX900-NEXT:    ; def v[1:2]2036; GFX900-NEXT:    ;;#ASMEND2037; GFX900-NEXT:    s_mov_b32 s4, 0x50401002038; GFX900-NEXT:    v_mov_b32_e32 v3, 02039; GFX900-NEXT:    v_alignbit_b32 v1, v0, v0, 162040; GFX900-NEXT:    v_perm_b32 v0, v2, v2, s42041; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]2042; GFX900-NEXT:    s_waitcnt vmcnt(0)2043; GFX900-NEXT:    s_setpc_b64 s[30:31]2044;2045; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_1_0:2046; GFX90A:       ; %bb.0:2047; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2048; GFX90A-NEXT:    ;;#ASMSTART2049; GFX90A-NEXT:    ; def v[0:1]2050; GFX90A-NEXT:    ;;#ASMEND2051; GFX90A-NEXT:    s_mov_b32 s4, 0x50401002052; GFX90A-NEXT:    v_mov_b32_e32 v4, 02053; GFX90A-NEXT:    ;;#ASMSTART2054; GFX90A-NEXT:    ; def v[2:3]2055; GFX90A-NEXT:    ;;#ASMEND2056; GFX90A-NEXT:    v_alignbit_b32 v1, v0, v0, 162057; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s42058; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]2059; GFX90A-NEXT:    s_waitcnt vmcnt(0)2060; GFX90A-NEXT:    s_setpc_b64 s[30:31]2061;2062; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_1_0:2063; GFX942:       ; %bb.0:2064; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2065; GFX942-NEXT:    ;;#ASMSTART2066; GFX942-NEXT:    ; def v[0:1]2067; GFX942-NEXT:    ;;#ASMEND2068; GFX942-NEXT:    s_mov_b32 s2, 0x50401002069; GFX942-NEXT:    v_mov_b32_e32 v4, 02070; GFX942-NEXT:    ;;#ASMSTART2071; GFX942-NEXT:    ; def v[2:3]2072; GFX942-NEXT:    ;;#ASMEND2073; GFX942-NEXT:    v_alignbit_b32 v1, v0, v0, 162074; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s22075; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]2076; GFX942-NEXT:    s_waitcnt vmcnt(0)2077; GFX942-NEXT:    s_setpc_b64 s[30:31]2078  %vec0 = call <4 x i16> asm "; def $0", "=v"()2079  %vec1 = call <4 x i16> asm "; def $0", "=v"()2080  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2081  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2082  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 1, i32 0>2083  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82084  ret void2085}2086 2087define void @v_shuffle_v4i16_v3i16__5_5_2_0(ptr addrspace(1) inreg %ptr) {2088; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_2_0:2089; GFX900:       ; %bb.0:2090; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2091; GFX900-NEXT:    ;;#ASMSTART2092; GFX900-NEXT:    ; def v[0:1]2093; GFX900-NEXT:    ;;#ASMEND2094; GFX900-NEXT:    s_mov_b32 s4, 0x50401002095; GFX900-NEXT:    v_mov_b32_e32 v4, 02096; GFX900-NEXT:    ;;#ASMSTART2097; GFX900-NEXT:    ; def v[2:3]2098; GFX900-NEXT:    ;;#ASMEND2099; GFX900-NEXT:    v_perm_b32 v1, v0, v1, s42100; GFX900-NEXT:    v_perm_b32 v0, v3, v3, s42101; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]2102; GFX900-NEXT:    s_waitcnt vmcnt(0)2103; GFX900-NEXT:    s_setpc_b64 s[30:31]2104;2105; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_2_0:2106; GFX90A:       ; %bb.0:2107; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2108; GFX90A-NEXT:    ;;#ASMSTART2109; GFX90A-NEXT:    ; def v[0:1]2110; GFX90A-NEXT:    ;;#ASMEND2111; GFX90A-NEXT:    s_mov_b32 s4, 0x50401002112; GFX90A-NEXT:    v_mov_b32_e32 v4, 02113; GFX90A-NEXT:    ;;#ASMSTART2114; GFX90A-NEXT:    ; def v[2:3]2115; GFX90A-NEXT:    ;;#ASMEND2116; GFX90A-NEXT:    v_perm_b32 v1, v0, v1, s42117; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s42118; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], 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_v4i16_v3i16__5_5_2_0: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 v4, 02130; GFX942-NEXT:    ;;#ASMSTART2131; GFX942-NEXT:    ; def v[2:3]2132; GFX942-NEXT:    ;;#ASMEND2133; GFX942-NEXT:    v_perm_b32 v1, v0, v1, s22134; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s22135; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]2136; GFX942-NEXT:    s_waitcnt vmcnt(0)2137; GFX942-NEXT:    s_setpc_b64 s[30:31]2138  %vec0 = call <4 x i16> asm "; def $0", "=v"()2139  %vec1 = call <4 x i16> asm "; def $0", "=v"()2140  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2141  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2142  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 2, i32 0>2143  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82144  ret void2145}2146 2147define void @v_shuffle_v4i16_v3i16__5_5_3_0(ptr addrspace(1) inreg %ptr) {2148; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_3_0:2149; GFX900:       ; %bb.0:2150; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2151; GFX900-NEXT:    ;;#ASMSTART2152; GFX900-NEXT:    ; def v[0:1]2153; GFX900-NEXT:    ;;#ASMEND2154; GFX900-NEXT:    ;;#ASMSTART2155; GFX900-NEXT:    ; def v[1:2]2156; GFX900-NEXT:    ;;#ASMEND2157; GFX900-NEXT:    s_mov_b32 s4, 0x50401002158; GFX900-NEXT:    v_mov_b32_e32 v3, 02159; GFX900-NEXT:    v_perm_b32 v1, v0, v1, s42160; GFX900-NEXT:    v_perm_b32 v0, v2, v2, s42161; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]2162; GFX900-NEXT:    s_waitcnt vmcnt(0)2163; GFX900-NEXT:    s_setpc_b64 s[30:31]2164;2165; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_3_0:2166; GFX90A:       ; %bb.0:2167; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2168; GFX90A-NEXT:    ;;#ASMSTART2169; GFX90A-NEXT:    ; def v[0:1]2170; GFX90A-NEXT:    ;;#ASMEND2171; GFX90A-NEXT:    s_mov_b32 s4, 0x50401002172; GFX90A-NEXT:    v_mov_b32_e32 v4, 02173; GFX90A-NEXT:    ;;#ASMSTART2174; GFX90A-NEXT:    ; def v[2:3]2175; GFX90A-NEXT:    ;;#ASMEND2176; GFX90A-NEXT:    v_perm_b32 v1, v0, v2, s42177; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s42178; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]2179; GFX90A-NEXT:    s_waitcnt vmcnt(0)2180; GFX90A-NEXT:    s_setpc_b64 s[30:31]2181;2182; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_3_0:2183; GFX942:       ; %bb.0:2184; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2185; GFX942-NEXT:    ;;#ASMSTART2186; GFX942-NEXT:    ; def v[0:1]2187; GFX942-NEXT:    ;;#ASMEND2188; GFX942-NEXT:    s_mov_b32 s2, 0x50401002189; GFX942-NEXT:    v_mov_b32_e32 v4, 02190; GFX942-NEXT:    ;;#ASMSTART2191; GFX942-NEXT:    ; def v[2:3]2192; GFX942-NEXT:    ;;#ASMEND2193; GFX942-NEXT:    s_nop 02194; GFX942-NEXT:    v_perm_b32 v1, v0, v2, s22195; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s22196; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]2197; GFX942-NEXT:    s_waitcnt vmcnt(0)2198; GFX942-NEXT:    s_setpc_b64 s[30:31]2199  %vec0 = call <4 x i16> asm "; def $0", "=v"()2200  %vec1 = call <4 x i16> asm "; def $0", "=v"()2201  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2202  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2203  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 3, i32 0>2204  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82205  ret void2206}2207 2208define void @v_shuffle_v4i16_v3i16__5_5_4_0(ptr addrspace(1) inreg %ptr) {2209; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_4_0:2210; GFX900:       ; %bb.0:2211; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2212; GFX900-NEXT:    ;;#ASMSTART2213; GFX900-NEXT:    ; def v[0:1]2214; GFX900-NEXT:    ;;#ASMEND2215; GFX900-NEXT:    ;;#ASMSTART2216; GFX900-NEXT:    ; def v[1:2]2217; GFX900-NEXT:    ;;#ASMEND2218; GFX900-NEXT:    s_mov_b32 s4, 0x50401002219; GFX900-NEXT:    v_mov_b32_e32 v3, 02220; GFX900-NEXT:    v_alignbit_b32 v1, v0, v1, 162221; GFX900-NEXT:    v_perm_b32 v0, v2, v2, s42222; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]2223; GFX900-NEXT:    s_waitcnt vmcnt(0)2224; GFX900-NEXT:    s_setpc_b64 s[30:31]2225;2226; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_4_0:2227; GFX90A:       ; %bb.0:2228; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2229; GFX90A-NEXT:    ;;#ASMSTART2230; GFX90A-NEXT:    ; def v[0:1]2231; GFX90A-NEXT:    ;;#ASMEND2232; GFX90A-NEXT:    s_mov_b32 s4, 0x50401002233; GFX90A-NEXT:    v_mov_b32_e32 v4, 02234; GFX90A-NEXT:    ;;#ASMSTART2235; GFX90A-NEXT:    ; def v[2:3]2236; GFX90A-NEXT:    ;;#ASMEND2237; GFX90A-NEXT:    v_alignbit_b32 v1, v0, v2, 162238; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s42239; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]2240; GFX90A-NEXT:    s_waitcnt vmcnt(0)2241; GFX90A-NEXT:    s_setpc_b64 s[30:31]2242;2243; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_4_0:2244; GFX942:       ; %bb.0:2245; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2246; GFX942-NEXT:    ;;#ASMSTART2247; GFX942-NEXT:    ; def v[0:1]2248; GFX942-NEXT:    ;;#ASMEND2249; GFX942-NEXT:    s_mov_b32 s2, 0x50401002250; GFX942-NEXT:    v_mov_b32_e32 v4, 02251; GFX942-NEXT:    ;;#ASMSTART2252; GFX942-NEXT:    ; def v[2:3]2253; GFX942-NEXT:    ;;#ASMEND2254; GFX942-NEXT:    s_nop 02255; GFX942-NEXT:    v_alignbit_b32 v1, v0, v2, 162256; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s22257; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]2258; GFX942-NEXT:    s_waitcnt vmcnt(0)2259; GFX942-NEXT:    s_setpc_b64 s[30:31]2260  %vec0 = call <4 x i16> asm "; def $0", "=v"()2261  %vec1 = call <4 x i16> asm "; def $0", "=v"()2262  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2263  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2264  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 4, i32 0>2265  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82266  ret void2267}2268 2269define void @v_shuffle_v4i16_v3i16__u_1_1_1(ptr addrspace(1) inreg %ptr) {2270; GFX900-LABEL: v_shuffle_v4i16_v3i16__u_1_1_1:2271; GFX900:       ; %bb.0:2272; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2273; GFX900-NEXT:    ;;#ASMSTART2274; GFX900-NEXT:    ; def v[0:1]2275; GFX900-NEXT:    ;;#ASMEND2276; GFX900-NEXT:    s_mov_b32 s4, 0x70603022277; GFX900-NEXT:    v_mov_b32_e32 v2, 02278; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s42279; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2280; GFX900-NEXT:    s_waitcnt vmcnt(0)2281; GFX900-NEXT:    s_setpc_b64 s[30:31]2282;2283; GFX90A-LABEL: v_shuffle_v4i16_v3i16__u_1_1_1:2284; GFX90A:       ; %bb.0:2285; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2286; GFX90A-NEXT:    ;;#ASMSTART2287; GFX90A-NEXT:    ; def v[0:1]2288; GFX90A-NEXT:    ;;#ASMEND2289; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022290; GFX90A-NEXT:    v_mov_b32_e32 v2, 02291; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s42292; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2293; GFX90A-NEXT:    s_waitcnt vmcnt(0)2294; GFX90A-NEXT:    s_setpc_b64 s[30:31]2295;2296; GFX942-LABEL: v_shuffle_v4i16_v3i16__u_1_1_1:2297; GFX942:       ; %bb.0:2298; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2299; GFX942-NEXT:    ;;#ASMSTART2300; GFX942-NEXT:    ; def v[0:1]2301; GFX942-NEXT:    ;;#ASMEND2302; GFX942-NEXT:    s_mov_b32 s2, 0x70603022303; GFX942-NEXT:    v_mov_b32_e32 v2, 02304; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s22305; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]2306; GFX942-NEXT:    s_waitcnt vmcnt(0)2307; GFX942-NEXT:    s_setpc_b64 s[30:31]2308  %vec0 = call <4 x i16> asm "; def $0", "=v"()2309  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2310  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1>2311  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82312  ret void2313}2314 2315define void @v_shuffle_v4i16_v3i16__0_1_1_1(ptr addrspace(1) inreg %ptr) {2316; GFX900-LABEL: v_shuffle_v4i16_v3i16__0_1_1_1:2317; GFX900:       ; %bb.0:2318; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2319; GFX900-NEXT:    ;;#ASMSTART2320; GFX900-NEXT:    ; def v[0:1]2321; GFX900-NEXT:    ;;#ASMEND2322; GFX900-NEXT:    s_mov_b32 s4, 0x70603022323; GFX900-NEXT:    v_mov_b32_e32 v2, 02324; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s42325; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2326; GFX900-NEXT:    s_waitcnt vmcnt(0)2327; GFX900-NEXT:    s_setpc_b64 s[30:31]2328;2329; GFX90A-LABEL: v_shuffle_v4i16_v3i16__0_1_1_1:2330; GFX90A:       ; %bb.0:2331; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2332; GFX90A-NEXT:    ;;#ASMSTART2333; GFX90A-NEXT:    ; def v[0:1]2334; GFX90A-NEXT:    ;;#ASMEND2335; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022336; GFX90A-NEXT:    v_mov_b32_e32 v2, 02337; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s42338; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2339; GFX90A-NEXT:    s_waitcnt vmcnt(0)2340; GFX90A-NEXT:    s_setpc_b64 s[30:31]2341;2342; GFX942-LABEL: v_shuffle_v4i16_v3i16__0_1_1_1:2343; GFX942:       ; %bb.0:2344; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2345; GFX942-NEXT:    ;;#ASMSTART2346; GFX942-NEXT:    ; def v[0:1]2347; GFX942-NEXT:    ;;#ASMEND2348; GFX942-NEXT:    s_mov_b32 s2, 0x70603022349; GFX942-NEXT:    v_mov_b32_e32 v2, 02350; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s22351; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]2352; GFX942-NEXT:    s_waitcnt vmcnt(0)2353; GFX942-NEXT:    s_setpc_b64 s[30:31]2354  %vec0 = call <4 x i16> asm "; def $0", "=v"()2355  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2356  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1>2357  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82358  ret void2359}2360 2361define void @v_shuffle_v4i16_v3i16__1_1_1_1(ptr addrspace(1) inreg %ptr) {2362; GFX900-LABEL: v_shuffle_v4i16_v3i16__1_1_1_1:2363; GFX900:       ; %bb.0:2364; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2365; GFX900-NEXT:    ;;#ASMSTART2366; GFX900-NEXT:    ; def v[0:1]2367; GFX900-NEXT:    ;;#ASMEND2368; GFX900-NEXT:    s_mov_b32 s4, 0x70603022369; GFX900-NEXT:    v_perm_b32 v0, v0, v0, s42370; GFX900-NEXT:    v_mov_b32_e32 v2, 02371; GFX900-NEXT:    v_mov_b32_e32 v1, v02372; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2373; GFX900-NEXT:    s_waitcnt vmcnt(0)2374; GFX900-NEXT:    s_setpc_b64 s[30:31]2375;2376; GFX90A-LABEL: v_shuffle_v4i16_v3i16__1_1_1_1:2377; GFX90A:       ; %bb.0:2378; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2379; GFX90A-NEXT:    ;;#ASMSTART2380; GFX90A-NEXT:    ; def v[0:1]2381; GFX90A-NEXT:    ;;#ASMEND2382; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022383; GFX90A-NEXT:    v_perm_b32 v0, v0, v0, s42384; GFX90A-NEXT:    v_mov_b32_e32 v2, 02385; GFX90A-NEXT:    v_mov_b32_e32 v1, v02386; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2387; GFX90A-NEXT:    s_waitcnt vmcnt(0)2388; GFX90A-NEXT:    s_setpc_b64 s[30:31]2389;2390; GFX942-LABEL: v_shuffle_v4i16_v3i16__1_1_1_1:2391; GFX942:       ; %bb.0:2392; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2393; GFX942-NEXT:    ;;#ASMSTART2394; GFX942-NEXT:    ; def v[0:1]2395; GFX942-NEXT:    ;;#ASMEND2396; GFX942-NEXT:    s_mov_b32 s2, 0x70603022397; GFX942-NEXT:    v_perm_b32 v0, v0, v0, s22398; GFX942-NEXT:    v_mov_b32_e32 v2, 02399; GFX942-NEXT:    v_mov_b32_e32 v1, v02400; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]2401; GFX942-NEXT:    s_waitcnt vmcnt(0)2402; GFX942-NEXT:    s_setpc_b64 s[30:31]2403  %vec0 = call <4 x i16> asm "; def $0", "=v"()2404  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2405  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>2406  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82407  ret void2408}2409 2410define void @v_shuffle_v4i16_v3i16__2_1_1_1(ptr addrspace(1) inreg %ptr) {2411; GFX900-LABEL: v_shuffle_v4i16_v3i16__2_1_1_1:2412; GFX900:       ; %bb.0:2413; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2414; GFX900-NEXT:    ;;#ASMSTART2415; GFX900-NEXT:    ; def v[0:1]2416; GFX900-NEXT:    ;;#ASMEND2417; GFX900-NEXT:    s_mov_b32 s4, 0xffff2418; GFX900-NEXT:    v_bfi_b32 v1, s4, v1, v02419; GFX900-NEXT:    s_mov_b32 s4, 0x70603022420; GFX900-NEXT:    v_mov_b32_e32 v3, 02421; GFX900-NEXT:    v_perm_b32 v2, v0, v0, s42422; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]2423; GFX900-NEXT:    s_waitcnt vmcnt(0)2424; GFX900-NEXT:    s_setpc_b64 s[30:31]2425;2426; GFX90A-LABEL: v_shuffle_v4i16_v3i16__2_1_1_1:2427; GFX90A:       ; %bb.0:2428; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2429; GFX90A-NEXT:    s_mov_b32 s4, 0xffff2430; GFX90A-NEXT:    ;;#ASMSTART2431; GFX90A-NEXT:    ; def v[0:1]2432; GFX90A-NEXT:    ;;#ASMEND2433; GFX90A-NEXT:    v_bfi_b32 v2, s4, v1, v02434; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022435; GFX90A-NEXT:    v_mov_b32_e32 v4, 02436; GFX90A-NEXT:    v_perm_b32 v3, v0, v0, s42437; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]2438; GFX90A-NEXT:    s_waitcnt vmcnt(0)2439; GFX90A-NEXT:    s_setpc_b64 s[30:31]2440;2441; GFX942-LABEL: v_shuffle_v4i16_v3i16__2_1_1_1:2442; GFX942:       ; %bb.0:2443; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2444; GFX942-NEXT:    s_mov_b32 s2, 0xffff2445; GFX942-NEXT:    ;;#ASMSTART2446; GFX942-NEXT:    ; def v[0:1]2447; GFX942-NEXT:    ;;#ASMEND2448; GFX942-NEXT:    v_mov_b32_e32 v4, 02449; GFX942-NEXT:    v_bfi_b32 v2, s2, v1, v02450; GFX942-NEXT:    s_mov_b32 s2, 0x70603022451; GFX942-NEXT:    v_perm_b32 v3, v0, v0, s22452; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]2453; GFX942-NEXT:    s_waitcnt vmcnt(0)2454; GFX942-NEXT:    s_setpc_b64 s[30:31]2455  %vec0 = call <4 x i16> asm "; def $0", "=v"()2456  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2457  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1>2458  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82459  ret void2460}2461 2462define void @v_shuffle_v4i16_v3i16__3_1_1_1(ptr addrspace(1) inreg %ptr) {2463; GFX900-LABEL: v_shuffle_v4i16_v3i16__3_1_1_1:2464; GFX900:       ; %bb.0:2465; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2466; GFX900-NEXT:    ;;#ASMSTART2467; GFX900-NEXT:    ; def v[0:1]2468; GFX900-NEXT:    ;;#ASMEND2469; GFX900-NEXT:    s_mov_b32 s4, 0x70603022470; GFX900-NEXT:    v_mov_b32_e32 v2, 02471; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s42472; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2473; GFX900-NEXT:    s_waitcnt vmcnt(0)2474; GFX900-NEXT:    s_setpc_b64 s[30:31]2475;2476; GFX90A-LABEL: v_shuffle_v4i16_v3i16__3_1_1_1:2477; GFX90A:       ; %bb.0:2478; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2479; GFX90A-NEXT:    ;;#ASMSTART2480; GFX90A-NEXT:    ; def v[0:1]2481; GFX90A-NEXT:    ;;#ASMEND2482; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022483; GFX90A-NEXT:    v_mov_b32_e32 v2, 02484; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s42485; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2486; GFX90A-NEXT:    s_waitcnt vmcnt(0)2487; GFX90A-NEXT:    s_setpc_b64 s[30:31]2488;2489; GFX942-LABEL: v_shuffle_v4i16_v3i16__3_1_1_1:2490; GFX942:       ; %bb.0:2491; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2492; GFX942-NEXT:    ;;#ASMSTART2493; GFX942-NEXT:    ; def v[0:1]2494; GFX942-NEXT:    ;;#ASMEND2495; GFX942-NEXT:    s_mov_b32 s2, 0x70603022496; GFX942-NEXT:    v_mov_b32_e32 v2, 02497; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s22498; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]2499; GFX942-NEXT:    s_waitcnt vmcnt(0)2500; GFX942-NEXT:    s_setpc_b64 s[30:31]2501  %vec0 = call <4 x i16> asm "; def $0", "=v"()2502  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2503  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 3, i32 1, i32 1, i32 1>2504  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82505  ret void2506}2507 2508define void @v_shuffle_v4i16_v3i16__4_1_1_1(ptr addrspace(1) inreg %ptr) {2509; GFX900-LABEL: v_shuffle_v4i16_v3i16__4_1_1_1:2510; GFX900:       ; %bb.0:2511; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2512; GFX900-NEXT:    ;;#ASMSTART2513; GFX900-NEXT:    ; def v[0:1]2514; GFX900-NEXT:    ;;#ASMEND2515; GFX900-NEXT:    ;;#ASMSTART2516; GFX900-NEXT:    ; def v[1:2]2517; GFX900-NEXT:    ;;#ASMEND2518; GFX900-NEXT:    s_mov_b32 s4, 0x70603022519; GFX900-NEXT:    v_mov_b32_e32 v3, 02520; GFX900-NEXT:    v_perm_b32 v1, v0, v1, s42521; GFX900-NEXT:    v_perm_b32 v2, v0, v0, s42522; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]2523; GFX900-NEXT:    s_waitcnt vmcnt(0)2524; GFX900-NEXT:    s_setpc_b64 s[30:31]2525;2526; GFX90A-LABEL: v_shuffle_v4i16_v3i16__4_1_1_1:2527; GFX90A:       ; %bb.0:2528; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2529; GFX90A-NEXT:    ;;#ASMSTART2530; GFX90A-NEXT:    ; def v[2:3]2531; GFX90A-NEXT:    ;;#ASMEND2532; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022533; GFX90A-NEXT:    v_mov_b32_e32 v4, 02534; GFX90A-NEXT:    ;;#ASMSTART2535; GFX90A-NEXT:    ; def v[0:1]2536; GFX90A-NEXT:    ;;#ASMEND2537; GFX90A-NEXT:    v_perm_b32 v2, v0, v2, s42538; GFX90A-NEXT:    v_perm_b32 v3, v0, v0, s42539; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]2540; GFX90A-NEXT:    s_waitcnt vmcnt(0)2541; GFX90A-NEXT:    s_setpc_b64 s[30:31]2542;2543; GFX942-LABEL: v_shuffle_v4i16_v3i16__4_1_1_1:2544; GFX942:       ; %bb.0:2545; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2546; GFX942-NEXT:    ;;#ASMSTART2547; GFX942-NEXT:    ; def v[2:3]2548; GFX942-NEXT:    ;;#ASMEND2549; GFX942-NEXT:    s_mov_b32 s2, 0x70603022550; GFX942-NEXT:    v_mov_b32_e32 v4, 02551; GFX942-NEXT:    ;;#ASMSTART2552; GFX942-NEXT:    ; def v[0:1]2553; GFX942-NEXT:    ;;#ASMEND2554; GFX942-NEXT:    s_nop 02555; GFX942-NEXT:    v_perm_b32 v2, v0, v2, s22556; GFX942-NEXT:    v_perm_b32 v3, v0, v0, s22557; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]2558; GFX942-NEXT:    s_waitcnt vmcnt(0)2559; GFX942-NEXT:    s_setpc_b64 s[30:31]2560  %vec0 = call <4 x i16> asm "; def $0", "=v"()2561  %vec1 = call <4 x i16> asm "; def $0", "=v"()2562  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2563  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2564  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 4, i32 1, i32 1, i32 1>2565  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82566  ret void2567}2568 2569define void @v_shuffle_v4i16_v3i16__5_1_1_1(ptr addrspace(1) inreg %ptr) {2570; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_1_1_1:2571; GFX900:       ; %bb.0:2572; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2573; GFX900-NEXT:    ;;#ASMSTART2574; GFX900-NEXT:    ; def v[0:1]2575; GFX900-NEXT:    ;;#ASMEND2576; GFX900-NEXT:    ;;#ASMSTART2577; GFX900-NEXT:    ; def v[1:2]2578; GFX900-NEXT:    ;;#ASMEND2579; GFX900-NEXT:    s_mov_b32 s4, 0xffff2580; GFX900-NEXT:    v_bfi_b32 v1, s4, v2, v02581; GFX900-NEXT:    s_mov_b32 s4, 0x70603022582; GFX900-NEXT:    v_mov_b32_e32 v3, 02583; GFX900-NEXT:    v_perm_b32 v2, v0, v0, s42584; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]2585; GFX900-NEXT:    s_waitcnt vmcnt(0)2586; GFX900-NEXT:    s_setpc_b64 s[30:31]2587;2588; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_1_1_1:2589; GFX90A:       ; %bb.0:2590; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2591; GFX90A-NEXT:    ;;#ASMSTART2592; GFX90A-NEXT:    ; def v[2:3]2593; GFX90A-NEXT:    ;;#ASMEND2594; GFX90A-NEXT:    s_mov_b32 s4, 0xffff2595; GFX90A-NEXT:    ;;#ASMSTART2596; GFX90A-NEXT:    ; def v[0:1]2597; GFX90A-NEXT:    ;;#ASMEND2598; GFX90A-NEXT:    v_bfi_b32 v2, s4, v3, v02599; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022600; GFX90A-NEXT:    v_mov_b32_e32 v4, 02601; GFX90A-NEXT:    v_perm_b32 v3, v0, v0, s42602; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]2603; GFX90A-NEXT:    s_waitcnt vmcnt(0)2604; GFX90A-NEXT:    s_setpc_b64 s[30:31]2605;2606; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_1_1_1:2607; GFX942:       ; %bb.0:2608; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2609; GFX942-NEXT:    ;;#ASMSTART2610; GFX942-NEXT:    ; def v[2:3]2611; GFX942-NEXT:    ;;#ASMEND2612; GFX942-NEXT:    s_mov_b32 s2, 0xffff2613; GFX942-NEXT:    ;;#ASMSTART2614; GFX942-NEXT:    ; def v[0:1]2615; GFX942-NEXT:    ;;#ASMEND2616; GFX942-NEXT:    v_mov_b32_e32 v4, 02617; GFX942-NEXT:    v_bfi_b32 v2, s2, v3, v02618; GFX942-NEXT:    s_mov_b32 s2, 0x70603022619; GFX942-NEXT:    v_perm_b32 v3, v0, v0, s22620; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]2621; GFX942-NEXT:    s_waitcnt vmcnt(0)2622; GFX942-NEXT:    s_setpc_b64 s[30:31]2623  %vec0 = call <4 x i16> asm "; def $0", "=v"()2624  %vec1 = call <4 x i16> asm "; def $0", "=v"()2625  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2626  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2627  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 1, i32 1, i32 1>2628  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82629  ret void2630}2631 2632define void @v_shuffle_v4i16_v3i16__5_u_1_1(ptr addrspace(1) inreg %ptr) {2633; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_u_1_1:2634; GFX900:       ; %bb.0:2635; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2636; GFX900-NEXT:    ;;#ASMSTART2637; GFX900-NEXT:    ; def v[2:3]2638; GFX900-NEXT:    ;;#ASMEND2639; GFX900-NEXT:    s_mov_b32 s4, 0x70603022640; GFX900-NEXT:    v_mov_b32_e32 v4, 02641; GFX900-NEXT:    v_perm_b32 v2, v2, v2, s42642; GFX900-NEXT:    ;;#ASMSTART2643; GFX900-NEXT:    ; def v[0:1]2644; GFX900-NEXT:    ;;#ASMEND2645; GFX900-NEXT:    global_store_dwordx2 v4, v[1:2], s[16:17]2646; GFX900-NEXT:    s_waitcnt vmcnt(0)2647; GFX900-NEXT:    s_setpc_b64 s[30:31]2648;2649; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_u_1_1:2650; GFX90A:       ; %bb.0:2651; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2652; GFX90A-NEXT:    ;;#ASMSTART2653; GFX90A-NEXT:    ; def v[0:1]2654; GFX90A-NEXT:    ;;#ASMEND2655; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022656; GFX90A-NEXT:    v_mov_b32_e32 v4, 02657; GFX90A-NEXT:    ;;#ASMSTART2658; GFX90A-NEXT:    ; def v[2:3]2659; GFX90A-NEXT:    ;;#ASMEND2660; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s42661; GFX90A-NEXT:    v_mov_b32_e32 v0, v32662; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]2663; GFX90A-NEXT:    s_waitcnt vmcnt(0)2664; GFX90A-NEXT:    s_setpc_b64 s[30:31]2665;2666; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_u_1_1:2667; GFX942:       ; %bb.0:2668; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2669; GFX942-NEXT:    ;;#ASMSTART2670; GFX942-NEXT:    ; def v[0:1]2671; GFX942-NEXT:    ;;#ASMEND2672; GFX942-NEXT:    s_mov_b32 s2, 0x70603022673; GFX942-NEXT:    v_mov_b32_e32 v4, 02674; GFX942-NEXT:    ;;#ASMSTART2675; GFX942-NEXT:    ; def v[2:3]2676; GFX942-NEXT:    ;;#ASMEND2677; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s22678; GFX942-NEXT:    v_mov_b32_e32 v0, v32679; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]2680; GFX942-NEXT:    s_waitcnt vmcnt(0)2681; GFX942-NEXT:    s_setpc_b64 s[30:31]2682  %vec0 = call <4 x i16> asm "; def $0", "=v"()2683  %vec1 = call <4 x i16> asm "; def $0", "=v"()2684  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2685  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2686  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 poison, i32 1, i32 1>2687  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82688  ret void2689}2690 2691define void @v_shuffle_v4i16_v3i16__5_0_1_1(ptr addrspace(1) inreg %ptr) {2692; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_0_1_1:2693; GFX900:       ; %bb.0:2694; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2695; GFX900-NEXT:    ;;#ASMSTART2696; GFX900-NEXT:    ; def v[0:1]2697; GFX900-NEXT:    ;;#ASMEND2698; GFX900-NEXT:    ;;#ASMSTART2699; GFX900-NEXT:    ; def v[1:2]2700; GFX900-NEXT:    ;;#ASMEND2701; GFX900-NEXT:    s_mov_b32 s4, 0x50401002702; GFX900-NEXT:    v_perm_b32 v1, v0, v2, s42703; GFX900-NEXT:    s_mov_b32 s4, 0x70603022704; GFX900-NEXT:    v_mov_b32_e32 v3, 02705; GFX900-NEXT:    v_perm_b32 v2, v0, v0, s42706; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]2707; GFX900-NEXT:    s_waitcnt vmcnt(0)2708; GFX900-NEXT:    s_setpc_b64 s[30:31]2709;2710; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_0_1_1:2711; GFX90A:       ; %bb.0:2712; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2713; GFX90A-NEXT:    ;;#ASMSTART2714; GFX90A-NEXT:    ; def v[2:3]2715; GFX90A-NEXT:    ;;#ASMEND2716; GFX90A-NEXT:    s_mov_b32 s4, 0x50401002717; GFX90A-NEXT:    ;;#ASMSTART2718; GFX90A-NEXT:    ; def v[0:1]2719; GFX90A-NEXT:    ;;#ASMEND2720; GFX90A-NEXT:    v_perm_b32 v2, v0, v3, s42721; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022722; GFX90A-NEXT:    v_mov_b32_e32 v4, 02723; GFX90A-NEXT:    v_perm_b32 v3, v0, v0, s42724; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]2725; GFX90A-NEXT:    s_waitcnt vmcnt(0)2726; GFX90A-NEXT:    s_setpc_b64 s[30:31]2727;2728; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_0_1_1:2729; GFX942:       ; %bb.0:2730; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2731; GFX942-NEXT:    ;;#ASMSTART2732; GFX942-NEXT:    ; def v[2:3]2733; GFX942-NEXT:    ;;#ASMEND2734; GFX942-NEXT:    s_mov_b32 s2, 0x50401002735; GFX942-NEXT:    ;;#ASMSTART2736; GFX942-NEXT:    ; def v[0:1]2737; GFX942-NEXT:    ;;#ASMEND2738; GFX942-NEXT:    v_mov_b32_e32 v4, 02739; GFX942-NEXT:    v_perm_b32 v2, v0, v3, s22740; GFX942-NEXT:    s_mov_b32 s2, 0x70603022741; GFX942-NEXT:    v_perm_b32 v3, v0, v0, s22742; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]2743; GFX942-NEXT:    s_waitcnt vmcnt(0)2744; GFX942-NEXT:    s_setpc_b64 s[30:31]2745  %vec0 = call <4 x i16> asm "; def $0", "=v"()2746  %vec1 = call <4 x i16> asm "; def $0", "=v"()2747  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2748  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2749  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 0, i32 1, i32 1>2750  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82751  ret void2752}2753 2754define void @v_shuffle_v4i16_v3i16__5_2_1_1(ptr addrspace(1) inreg %ptr) {2755; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_2_1_1:2756; GFX900:       ; %bb.0:2757; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2758; GFX900-NEXT:    ;;#ASMSTART2759; GFX900-NEXT:    ; def v[0:1]2760; GFX900-NEXT:    ;;#ASMEND2761; GFX900-NEXT:    s_mov_b32 s4, 0x50401002762; GFX900-NEXT:    ;;#ASMSTART2763; GFX900-NEXT:    ; def v[2:3]2764; GFX900-NEXT:    ;;#ASMEND2765; GFX900-NEXT:    v_perm_b32 v1, v1, v3, s42766; GFX900-NEXT:    s_mov_b32 s4, 0x70603022767; GFX900-NEXT:    v_mov_b32_e32 v4, 02768; GFX900-NEXT:    v_perm_b32 v2, v0, v0, s42769; GFX900-NEXT:    global_store_dwordx2 v4, v[1:2], s[16:17]2770; GFX900-NEXT:    s_waitcnt vmcnt(0)2771; GFX900-NEXT:    s_setpc_b64 s[30:31]2772;2773; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_2_1_1:2774; GFX90A:       ; %bb.0:2775; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2776; GFX90A-NEXT:    ;;#ASMSTART2777; GFX90A-NEXT:    ; def v[2:3]2778; GFX90A-NEXT:    ;;#ASMEND2779; GFX90A-NEXT:    s_mov_b32 s4, 0x50401002780; GFX90A-NEXT:    ;;#ASMSTART2781; GFX90A-NEXT:    ; def v[0:1]2782; GFX90A-NEXT:    ;;#ASMEND2783; GFX90A-NEXT:    v_perm_b32 v2, v1, v3, s42784; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022785; GFX90A-NEXT:    v_mov_b32_e32 v4, 02786; GFX90A-NEXT:    v_perm_b32 v3, v0, v0, s42787; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]2788; GFX90A-NEXT:    s_waitcnt vmcnt(0)2789; GFX90A-NEXT:    s_setpc_b64 s[30:31]2790;2791; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_2_1_1:2792; GFX942:       ; %bb.0:2793; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2794; GFX942-NEXT:    ;;#ASMSTART2795; GFX942-NEXT:    ; def v[2:3]2796; GFX942-NEXT:    ;;#ASMEND2797; GFX942-NEXT:    s_mov_b32 s2, 0x50401002798; GFX942-NEXT:    ;;#ASMSTART2799; GFX942-NEXT:    ; def v[0:1]2800; GFX942-NEXT:    ;;#ASMEND2801; GFX942-NEXT:    v_mov_b32_e32 v4, 02802; GFX942-NEXT:    v_perm_b32 v2, v1, v3, s22803; GFX942-NEXT:    s_mov_b32 s2, 0x70603022804; GFX942-NEXT:    v_perm_b32 v3, v0, v0, s22805; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]2806; GFX942-NEXT:    s_waitcnt vmcnt(0)2807; GFX942-NEXT:    s_setpc_b64 s[30:31]2808  %vec0 = call <4 x i16> asm "; def $0", "=v"()2809  %vec1 = call <4 x i16> asm "; def $0", "=v"()2810  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2811  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2812  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 2, i32 1, i32 1>2813  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82814  ret void2815}2816 2817define void @v_shuffle_v4i16_v3i16__5_3_1_1(ptr addrspace(1) inreg %ptr) {2818; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_3_1_1:2819; GFX900:       ; %bb.0:2820; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2821; GFX900-NEXT:    ;;#ASMSTART2822; GFX900-NEXT:    ; def v[0:1]2823; GFX900-NEXT:    ;;#ASMEND2824; GFX900-NEXT:    ;;#ASMSTART2825; GFX900-NEXT:    ; def v[1:2]2826; GFX900-NEXT:    ;;#ASMEND2827; GFX900-NEXT:    s_mov_b32 s4, 0x50401002828; GFX900-NEXT:    v_perm_b32 v1, v1, v2, s42829; GFX900-NEXT:    s_mov_b32 s4, 0x70603022830; GFX900-NEXT:    v_mov_b32_e32 v3, 02831; GFX900-NEXT:    v_perm_b32 v2, v0, v0, s42832; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]2833; GFX900-NEXT:    s_waitcnt vmcnt(0)2834; GFX900-NEXT:    s_setpc_b64 s[30:31]2835;2836; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_3_1_1:2837; GFX90A:       ; %bb.0:2838; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2839; GFX90A-NEXT:    ;;#ASMSTART2840; GFX90A-NEXT:    ; def v[2:3]2841; GFX90A-NEXT:    ;;#ASMEND2842; GFX90A-NEXT:    s_mov_b32 s4, 0x50401002843; GFX90A-NEXT:    v_perm_b32 v2, v2, v3, s42844; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022845; GFX90A-NEXT:    v_mov_b32_e32 v4, 02846; GFX90A-NEXT:    ;;#ASMSTART2847; GFX90A-NEXT:    ; def v[0:1]2848; GFX90A-NEXT:    ;;#ASMEND2849; GFX90A-NEXT:    v_perm_b32 v3, v0, v0, s42850; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]2851; GFX90A-NEXT:    s_waitcnt vmcnt(0)2852; GFX90A-NEXT:    s_setpc_b64 s[30:31]2853;2854; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_3_1_1:2855; GFX942:       ; %bb.0:2856; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2857; GFX942-NEXT:    ;;#ASMSTART2858; GFX942-NEXT:    ; def v[2:3]2859; GFX942-NEXT:    ;;#ASMEND2860; GFX942-NEXT:    s_mov_b32 s2, 0x50401002861; GFX942-NEXT:    v_perm_b32 v2, v2, v3, s22862; GFX942-NEXT:    s_mov_b32 s2, 0x70603022863; GFX942-NEXT:    v_mov_b32_e32 v4, 02864; GFX942-NEXT:    ;;#ASMSTART2865; GFX942-NEXT:    ; def v[0:1]2866; GFX942-NEXT:    ;;#ASMEND2867; GFX942-NEXT:    s_nop 02868; GFX942-NEXT:    v_perm_b32 v3, v0, v0, s22869; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]2870; GFX942-NEXT:    s_waitcnt vmcnt(0)2871; GFX942-NEXT:    s_setpc_b64 s[30:31]2872  %vec0 = call <4 x i16> asm "; def $0", "=v"()2873  %vec1 = call <4 x i16> asm "; def $0", "=v"()2874  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2875  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2876  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 3, i32 1, i32 1>2877  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82878  ret void2879}2880 2881define void @v_shuffle_v4i16_v3i16__5_4_1_1(ptr addrspace(1) inreg %ptr) {2882; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_4_1_1:2883; GFX900:       ; %bb.0:2884; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2885; GFX900-NEXT:    ;;#ASMSTART2886; GFX900-NEXT:    ; def v[0:1]2887; GFX900-NEXT:    ;;#ASMEND2888; GFX900-NEXT:    ;;#ASMSTART2889; GFX900-NEXT:    ; def v[1:2]2890; GFX900-NEXT:    ;;#ASMEND2891; GFX900-NEXT:    s_mov_b32 s4, 0xffff2892; GFX900-NEXT:    v_bfi_b32 v1, s4, v2, v12893; GFX900-NEXT:    s_mov_b32 s4, 0x70603022894; GFX900-NEXT:    v_mov_b32_e32 v3, 02895; GFX900-NEXT:    v_perm_b32 v2, v0, v0, s42896; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]2897; GFX900-NEXT:    s_waitcnt vmcnt(0)2898; GFX900-NEXT:    s_setpc_b64 s[30:31]2899;2900; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_4_1_1:2901; GFX90A:       ; %bb.0:2902; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2903; GFX90A-NEXT:    ;;#ASMSTART2904; GFX90A-NEXT:    ; def v[2:3]2905; GFX90A-NEXT:    ;;#ASMEND2906; GFX90A-NEXT:    s_mov_b32 s4, 0xffff2907; GFX90A-NEXT:    v_bfi_b32 v2, s4, v3, v22908; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022909; GFX90A-NEXT:    v_mov_b32_e32 v4, 02910; GFX90A-NEXT:    ;;#ASMSTART2911; GFX90A-NEXT:    ; def v[0:1]2912; GFX90A-NEXT:    ;;#ASMEND2913; GFX90A-NEXT:    v_perm_b32 v3, v0, v0, s42914; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]2915; GFX90A-NEXT:    s_waitcnt vmcnt(0)2916; GFX90A-NEXT:    s_setpc_b64 s[30:31]2917;2918; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_4_1_1:2919; GFX942:       ; %bb.0:2920; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2921; GFX942-NEXT:    ;;#ASMSTART2922; GFX942-NEXT:    ; def v[2:3]2923; GFX942-NEXT:    ;;#ASMEND2924; GFX942-NEXT:    s_mov_b32 s2, 0xffff2925; GFX942-NEXT:    v_bfi_b32 v2, s2, v3, v22926; GFX942-NEXT:    s_mov_b32 s2, 0x70603022927; GFX942-NEXT:    v_mov_b32_e32 v4, 02928; GFX942-NEXT:    ;;#ASMSTART2929; GFX942-NEXT:    ; def v[0:1]2930; GFX942-NEXT:    ;;#ASMEND2931; GFX942-NEXT:    s_nop 02932; GFX942-NEXT:    v_perm_b32 v3, v0, v0, s22933; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]2934; GFX942-NEXT:    s_waitcnt vmcnt(0)2935; GFX942-NEXT:    s_setpc_b64 s[30:31]2936  %vec0 = call <4 x i16> asm "; def $0", "=v"()2937  %vec1 = call <4 x i16> asm "; def $0", "=v"()2938  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2939  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>2940  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 4, i32 1, i32 1>2941  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82942  ret void2943}2944 2945define void @v_shuffle_v4i16_v3i16__5_5_1_1(ptr addrspace(1) inreg %ptr) {2946; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_1_1:2947; GFX900:       ; %bb.0:2948; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2949; GFX900-NEXT:    ;;#ASMSTART2950; GFX900-NEXT:    ; def v[0:1]2951; GFX900-NEXT:    ;;#ASMEND2952; GFX900-NEXT:    ;;#ASMSTART2953; GFX900-NEXT:    ; def v[1:2]2954; GFX900-NEXT:    ;;#ASMEND2955; GFX900-NEXT:    s_mov_b32 s4, 0x70603022956; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s42957; GFX900-NEXT:    s_mov_b32 s4, 0x50401002958; GFX900-NEXT:    v_mov_b32_e32 v3, 02959; GFX900-NEXT:    v_perm_b32 v0, v2, v2, s42960; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]2961; GFX900-NEXT:    s_waitcnt vmcnt(0)2962; GFX900-NEXT:    s_setpc_b64 s[30:31]2963;2964; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_1_1:2965; GFX90A:       ; %bb.0:2966; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2967; GFX90A-NEXT:    ;;#ASMSTART2968; GFX90A-NEXT:    ; def v[0:1]2969; GFX90A-NEXT:    ;;#ASMEND2970; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022971; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s42972; GFX90A-NEXT:    s_mov_b32 s4, 0x50401002973; GFX90A-NEXT:    v_mov_b32_e32 v4, 02974; GFX90A-NEXT:    ;;#ASMSTART2975; GFX90A-NEXT:    ; def v[2:3]2976; GFX90A-NEXT:    ;;#ASMEND2977; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s42978; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]2979; GFX90A-NEXT:    s_waitcnt vmcnt(0)2980; GFX90A-NEXT:    s_setpc_b64 s[30:31]2981;2982; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_1_1:2983; GFX942:       ; %bb.0:2984; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2985; GFX942-NEXT:    ;;#ASMSTART2986; GFX942-NEXT:    ; def v[0:1]2987; GFX942-NEXT:    ;;#ASMEND2988; GFX942-NEXT:    s_mov_b32 s2, 0x70603022989; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s22990; GFX942-NEXT:    s_mov_b32 s2, 0x50401002991; GFX942-NEXT:    v_mov_b32_e32 v4, 02992; GFX942-NEXT:    ;;#ASMSTART2993; GFX942-NEXT:    ; def v[2:3]2994; GFX942-NEXT:    ;;#ASMEND2995; GFX942-NEXT:    s_nop 02996; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s22997; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]2998; GFX942-NEXT:    s_waitcnt vmcnt(0)2999; GFX942-NEXT:    s_setpc_b64 s[30:31]3000  %vec0 = call <4 x i16> asm "; def $0", "=v"()3001  %vec1 = call <4 x i16> asm "; def $0", "=v"()3002  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3003  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3004  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 1, i32 1>3005  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 83006  ret void3007}3008 3009define void @v_shuffle_v4i16_v3i16__5_5_u_1(ptr addrspace(1) inreg %ptr) {3010; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_u_1:3011; GFX900:       ; %bb.0:3012; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3013; GFX900-NEXT:    ;;#ASMSTART3014; GFX900-NEXT:    ; def v[1:2]3015; GFX900-NEXT:    ;;#ASMEND3016; GFX900-NEXT:    s_mov_b32 s4, 0x50401003017; GFX900-NEXT:    v_mov_b32_e32 v4, 03018; GFX900-NEXT:    ;;#ASMSTART3019; GFX900-NEXT:    ; def v[2:3]3020; GFX900-NEXT:    ;;#ASMEND3021; GFX900-NEXT:    v_perm_b32 v0, v3, v3, s43022; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]3023; GFX900-NEXT:    s_waitcnt vmcnt(0)3024; GFX900-NEXT:    s_setpc_b64 s[30:31]3025;3026; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_u_1:3027; GFX90A:       ; %bb.0:3028; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3029; GFX90A-NEXT:    ;;#ASMSTART3030; GFX90A-NEXT:    ; def v[2:3]3031; GFX90A-NEXT:    ;;#ASMEND3032; GFX90A-NEXT:    s_mov_b32 s4, 0x50401003033; GFX90A-NEXT:    v_mov_b32_e32 v4, 03034; GFX90A-NEXT:    ;;#ASMSTART3035; GFX90A-NEXT:    ; def v[0:1]3036; GFX90A-NEXT:    ;;#ASMEND3037; GFX90A-NEXT:    v_perm_b32 v2, v3, v3, s43038; GFX90A-NEXT:    v_mov_b32_e32 v3, v03039; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]3040; GFX90A-NEXT:    s_waitcnt vmcnt(0)3041; GFX90A-NEXT:    s_setpc_b64 s[30:31]3042;3043; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_u_1:3044; GFX942:       ; %bb.0:3045; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3046; GFX942-NEXT:    ;;#ASMSTART3047; GFX942-NEXT:    ; def v[2:3]3048; GFX942-NEXT:    ;;#ASMEND3049; GFX942-NEXT:    s_mov_b32 s2, 0x50401003050; GFX942-NEXT:    v_mov_b32_e32 v4, 03051; GFX942-NEXT:    ;;#ASMSTART3052; GFX942-NEXT:    ; def v[0:1]3053; GFX942-NEXT:    ;;#ASMEND3054; GFX942-NEXT:    v_perm_b32 v2, v3, v3, s23055; GFX942-NEXT:    v_mov_b32_e32 v3, v03056; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]3057; GFX942-NEXT:    s_waitcnt vmcnt(0)3058; GFX942-NEXT:    s_setpc_b64 s[30:31]3059  %vec0 = call <4 x i16> asm "; def $0", "=v"()3060  %vec1 = call <4 x i16> asm "; def $0", "=v"()3061  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3062  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3063  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 poison, i32 1>3064  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 83065  ret void3066}3067 3068define void @v_shuffle_v4i16_v3i16__5_5_0_1(ptr addrspace(1) inreg %ptr) {3069; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_0_1:3070; GFX900:       ; %bb.0:3071; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3072; GFX900-NEXT:    ;;#ASMSTART3073; GFX900-NEXT:    ; def v[1:2]3074; GFX900-NEXT:    ;;#ASMEND3075; GFX900-NEXT:    s_mov_b32 s4, 0x50401003076; GFX900-NEXT:    v_mov_b32_e32 v4, 03077; GFX900-NEXT:    ;;#ASMSTART3078; GFX900-NEXT:    ; def v[2:3]3079; GFX900-NEXT:    ;;#ASMEND3080; GFX900-NEXT:    v_perm_b32 v0, v3, v3, s43081; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]3082; GFX900-NEXT:    s_waitcnt vmcnt(0)3083; GFX900-NEXT:    s_setpc_b64 s[30:31]3084;3085; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_0_1:3086; GFX90A:       ; %bb.0:3087; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3088; GFX90A-NEXT:    ;;#ASMSTART3089; GFX90A-NEXT:    ; def v[2:3]3090; GFX90A-NEXT:    ;;#ASMEND3091; GFX90A-NEXT:    s_mov_b32 s4, 0x50401003092; GFX90A-NEXT:    v_mov_b32_e32 v4, 03093; GFX90A-NEXT:    ;;#ASMSTART3094; GFX90A-NEXT:    ; def v[0:1]3095; GFX90A-NEXT:    ;;#ASMEND3096; GFX90A-NEXT:    v_perm_b32 v2, v3, v3, s43097; GFX90A-NEXT:    v_mov_b32_e32 v3, v03098; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]3099; GFX90A-NEXT:    s_waitcnt vmcnt(0)3100; GFX90A-NEXT:    s_setpc_b64 s[30:31]3101;3102; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_0_1:3103; GFX942:       ; %bb.0:3104; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3105; GFX942-NEXT:    ;;#ASMSTART3106; GFX942-NEXT:    ; def v[2:3]3107; GFX942-NEXT:    ;;#ASMEND3108; GFX942-NEXT:    s_mov_b32 s2, 0x50401003109; GFX942-NEXT:    v_mov_b32_e32 v4, 03110; GFX942-NEXT:    ;;#ASMSTART3111; GFX942-NEXT:    ; def v[0:1]3112; GFX942-NEXT:    ;;#ASMEND3113; GFX942-NEXT:    v_perm_b32 v2, v3, v3, s23114; GFX942-NEXT:    v_mov_b32_e32 v3, v03115; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]3116; GFX942-NEXT:    s_waitcnt vmcnt(0)3117; GFX942-NEXT:    s_setpc_b64 s[30:31]3118  %vec0 = call <4 x i16> asm "; def $0", "=v"()3119  %vec1 = call <4 x i16> asm "; def $0", "=v"()3120  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3121  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3122  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 0, i32 1>3123  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 83124  ret void3125}3126 3127define void @v_shuffle_v4i16_v3i16__5_5_2_1(ptr addrspace(1) inreg %ptr) {3128; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_2_1:3129; GFX900:       ; %bb.0:3130; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3131; GFX900-NEXT:    ;;#ASMSTART3132; GFX900-NEXT:    ; def v[0:1]3133; GFX900-NEXT:    ;;#ASMEND3134; GFX900-NEXT:    s_mov_b32 s4, 0xffff3135; GFX900-NEXT:    v_bfi_b32 v1, s4, v1, v03136; GFX900-NEXT:    s_mov_b32 s4, 0x50401003137; GFX900-NEXT:    v_mov_b32_e32 v4, 03138; GFX900-NEXT:    ;;#ASMSTART3139; GFX900-NEXT:    ; def v[2:3]3140; GFX900-NEXT:    ;;#ASMEND3141; GFX900-NEXT:    v_perm_b32 v0, v3, v3, s43142; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]3143; GFX900-NEXT:    s_waitcnt vmcnt(0)3144; GFX900-NEXT:    s_setpc_b64 s[30:31]3145;3146; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_2_1:3147; GFX90A:       ; %bb.0:3148; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3149; GFX90A-NEXT:    ;;#ASMSTART3150; GFX90A-NEXT:    ; def v[0:1]3151; GFX90A-NEXT:    ;;#ASMEND3152; GFX90A-NEXT:    s_mov_b32 s4, 0xffff3153; GFX90A-NEXT:    v_bfi_b32 v1, s4, v1, v03154; GFX90A-NEXT:    s_mov_b32 s4, 0x50401003155; GFX90A-NEXT:    v_mov_b32_e32 v4, 03156; GFX90A-NEXT:    ;;#ASMSTART3157; GFX90A-NEXT:    ; def v[2:3]3158; GFX90A-NEXT:    ;;#ASMEND3159; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s43160; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]3161; GFX90A-NEXT:    s_waitcnt vmcnt(0)3162; GFX90A-NEXT:    s_setpc_b64 s[30:31]3163;3164; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_2_1:3165; GFX942:       ; %bb.0:3166; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3167; GFX942-NEXT:    ;;#ASMSTART3168; GFX942-NEXT:    ; def v[0:1]3169; GFX942-NEXT:    ;;#ASMEND3170; GFX942-NEXT:    s_mov_b32 s2, 0xffff3171; GFX942-NEXT:    v_bfi_b32 v1, s2, v1, v03172; GFX942-NEXT:    s_mov_b32 s2, 0x50401003173; GFX942-NEXT:    v_mov_b32_e32 v4, 03174; GFX942-NEXT:    ;;#ASMSTART3175; GFX942-NEXT:    ; def v[2:3]3176; GFX942-NEXT:    ;;#ASMEND3177; GFX942-NEXT:    s_nop 03178; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s23179; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]3180; GFX942-NEXT:    s_waitcnt vmcnt(0)3181; GFX942-NEXT:    s_setpc_b64 s[30:31]3182  %vec0 = call <4 x i16> asm "; def $0", "=v"()3183  %vec1 = call <4 x i16> asm "; def $0", "=v"()3184  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3185  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3186  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 2, i32 1>3187  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 83188  ret void3189}3190 3191define void @v_shuffle_v4i16_v3i16__5_5_3_1(ptr addrspace(1) inreg %ptr) {3192; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_3_1:3193; GFX900:       ; %bb.0:3194; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3195; GFX900-NEXT:    ;;#ASMSTART3196; GFX900-NEXT:    ; def v[0:1]3197; GFX900-NEXT:    ;;#ASMEND3198; GFX900-NEXT:    ;;#ASMSTART3199; GFX900-NEXT:    ; def v[1:2]3200; GFX900-NEXT:    ;;#ASMEND3201; GFX900-NEXT:    s_mov_b32 s4, 0xffff3202; GFX900-NEXT:    v_bfi_b32 v1, s4, v1, v03203; GFX900-NEXT:    s_mov_b32 s4, 0x50401003204; GFX900-NEXT:    v_mov_b32_e32 v3, 03205; GFX900-NEXT:    v_perm_b32 v0, v2, v2, s43206; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]3207; GFX900-NEXT:    s_waitcnt vmcnt(0)3208; GFX900-NEXT:    s_setpc_b64 s[30:31]3209;3210; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_3_1:3211; GFX90A:       ; %bb.0:3212; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3213; GFX90A-NEXT:    ;;#ASMSTART3214; GFX90A-NEXT:    ; def v[0:1]3215; GFX90A-NEXT:    ;;#ASMEND3216; GFX90A-NEXT:    s_mov_b32 s4, 0xffff3217; GFX90A-NEXT:    ;;#ASMSTART3218; GFX90A-NEXT:    ; def v[2:3]3219; GFX90A-NEXT:    ;;#ASMEND3220; GFX90A-NEXT:    v_bfi_b32 v1, s4, v2, v03221; GFX90A-NEXT:    s_mov_b32 s4, 0x50401003222; GFX90A-NEXT:    v_mov_b32_e32 v4, 03223; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s43224; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]3225; GFX90A-NEXT:    s_waitcnt vmcnt(0)3226; GFX90A-NEXT:    s_setpc_b64 s[30:31]3227;3228; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_3_1:3229; GFX942:       ; %bb.0:3230; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3231; GFX942-NEXT:    ;;#ASMSTART3232; GFX942-NEXT:    ; def v[0:1]3233; GFX942-NEXT:    ;;#ASMEND3234; GFX942-NEXT:    s_mov_b32 s2, 0xffff3235; GFX942-NEXT:    ;;#ASMSTART3236; GFX942-NEXT:    ; def v[2:3]3237; GFX942-NEXT:    ;;#ASMEND3238; GFX942-NEXT:    v_mov_b32_e32 v4, 03239; GFX942-NEXT:    v_bfi_b32 v1, s2, v2, v03240; GFX942-NEXT:    s_mov_b32 s2, 0x50401003241; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s23242; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]3243; GFX942-NEXT:    s_waitcnt vmcnt(0)3244; GFX942-NEXT:    s_setpc_b64 s[30:31]3245  %vec0 = call <4 x i16> asm "; def $0", "=v"()3246  %vec1 = call <4 x i16> asm "; def $0", "=v"()3247  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3248  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3249  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 3, i32 1>3250  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 83251  ret void3252}3253 3254define void @v_shuffle_v4i16_v3i16__5_5_4_1(ptr addrspace(1) inreg %ptr) {3255; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_4_1:3256; GFX900:       ; %bb.0:3257; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3258; GFX900-NEXT:    ;;#ASMSTART3259; GFX900-NEXT:    ; def v[0:1]3260; GFX900-NEXT:    ;;#ASMEND3261; GFX900-NEXT:    ;;#ASMSTART3262; GFX900-NEXT:    ; def v[1:2]3263; GFX900-NEXT:    ;;#ASMEND3264; GFX900-NEXT:    s_mov_b32 s4, 0x70603023265; GFX900-NEXT:    v_perm_b32 v1, v0, v1, s43266; GFX900-NEXT:    s_mov_b32 s4, 0x50401003267; GFX900-NEXT:    v_mov_b32_e32 v3, 03268; GFX900-NEXT:    v_perm_b32 v0, v2, v2, s43269; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]3270; GFX900-NEXT:    s_waitcnt vmcnt(0)3271; GFX900-NEXT:    s_setpc_b64 s[30:31]3272;3273; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_4_1:3274; GFX90A:       ; %bb.0:3275; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3276; GFX90A-NEXT:    ;;#ASMSTART3277; GFX90A-NEXT:    ; def v[0:1]3278; GFX90A-NEXT:    ;;#ASMEND3279; GFX90A-NEXT:    s_mov_b32 s4, 0x70603023280; GFX90A-NEXT:    ;;#ASMSTART3281; GFX90A-NEXT:    ; def v[2:3]3282; GFX90A-NEXT:    ;;#ASMEND3283; GFX90A-NEXT:    v_perm_b32 v1, v0, v2, s43284; GFX90A-NEXT:    s_mov_b32 s4, 0x50401003285; GFX90A-NEXT:    v_mov_b32_e32 v4, 03286; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s43287; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]3288; GFX90A-NEXT:    s_waitcnt vmcnt(0)3289; GFX90A-NEXT:    s_setpc_b64 s[30:31]3290;3291; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_4_1:3292; GFX942:       ; %bb.0:3293; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3294; GFX942-NEXT:    ;;#ASMSTART3295; GFX942-NEXT:    ; def v[0:1]3296; GFX942-NEXT:    ;;#ASMEND3297; GFX942-NEXT:    s_mov_b32 s2, 0x70603023298; GFX942-NEXT:    ;;#ASMSTART3299; GFX942-NEXT:    ; def v[2:3]3300; GFX942-NEXT:    ;;#ASMEND3301; GFX942-NEXT:    v_mov_b32_e32 v4, 03302; GFX942-NEXT:    v_perm_b32 v1, v0, v2, s23303; GFX942-NEXT:    s_mov_b32 s2, 0x50401003304; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s23305; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]3306; GFX942-NEXT:    s_waitcnt vmcnt(0)3307; GFX942-NEXT:    s_setpc_b64 s[30:31]3308  %vec0 = call <4 x i16> asm "; def $0", "=v"()3309  %vec1 = call <4 x i16> asm "; def $0", "=v"()3310  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3311  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3312  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 4, i32 1>3313  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 83314  ret void3315}3316 3317define void @v_shuffle_v4i16_v3i16__u_2_2_2(ptr addrspace(1) inreg %ptr) {3318; GFX900-LABEL: v_shuffle_v4i16_v3i16__u_2_2_2:3319; GFX900:       ; %bb.0:3320; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3321; GFX900-NEXT:    ;;#ASMSTART3322; GFX900-NEXT:    ; def v[0:1]3323; GFX900-NEXT:    ;;#ASMEND3324; GFX900-NEXT:    s_mov_b32 s4, 0x50401003325; GFX900-NEXT:    v_mov_b32_e32 v3, 03326; GFX900-NEXT:    v_perm_b32 v2, v1, v1, s43327; GFX900-NEXT:    v_lshlrev_b32_e32 v1, 16, v13328; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]3329; GFX900-NEXT:    s_waitcnt vmcnt(0)3330; GFX900-NEXT:    s_setpc_b64 s[30:31]3331;3332; GFX90A-LABEL: v_shuffle_v4i16_v3i16__u_2_2_2:3333; GFX90A:       ; %bb.0:3334; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3335; GFX90A-NEXT:    s_mov_b32 s4, 0x50401003336; GFX90A-NEXT:    v_mov_b32_e32 v4, 03337; GFX90A-NEXT:    ;;#ASMSTART3338; GFX90A-NEXT:    ; def v[0:1]3339; GFX90A-NEXT:    ;;#ASMEND3340; GFX90A-NEXT:    v_perm_b32 v3, v1, v1, s43341; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v13342; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]3343; GFX90A-NEXT:    s_waitcnt vmcnt(0)3344; GFX90A-NEXT:    s_setpc_b64 s[30:31]3345;3346; GFX942-LABEL: v_shuffle_v4i16_v3i16__u_2_2_2:3347; GFX942:       ; %bb.0:3348; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3349; GFX942-NEXT:    s_mov_b32 s2, 0x50401003350; GFX942-NEXT:    v_mov_b32_e32 v4, 03351; GFX942-NEXT:    ;;#ASMSTART3352; GFX942-NEXT:    ; def v[0:1]3353; GFX942-NEXT:    ;;#ASMEND3354; GFX942-NEXT:    s_nop 03355; GFX942-NEXT:    v_perm_b32 v3, v1, v1, s23356; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v13357; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]3358; GFX942-NEXT:    s_waitcnt vmcnt(0)3359; GFX942-NEXT:    s_setpc_b64 s[30:31]3360  %vec0 = call <4 x i16> asm "; def $0", "=v"()3361  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3362  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2>3363  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 83364  ret void3365}3366 3367define void @v_shuffle_v4i16_v3i16__0_2_2_2(ptr addrspace(1) inreg %ptr) {3368; GFX900-LABEL: v_shuffle_v4i16_v3i16__0_2_2_2:3369; GFX900:       ; %bb.0:3370; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3371; GFX900-NEXT:    ;;#ASMSTART3372; GFX900-NEXT:    ; def v[0:1]3373; GFX900-NEXT:    ;;#ASMEND3374; GFX900-NEXT:    s_mov_b32 s4, 0x50401003375; GFX900-NEXT:    v_mov_b32_e32 v2, 03376; GFX900-NEXT:    v_perm_b32 v0, v1, v0, s43377; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s43378; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]3379; GFX900-NEXT:    s_waitcnt vmcnt(0)3380; GFX900-NEXT:    s_setpc_b64 s[30:31]3381;3382; GFX90A-LABEL: v_shuffle_v4i16_v3i16__0_2_2_2:3383; GFX90A:       ; %bb.0:3384; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3385; GFX90A-NEXT:    ;;#ASMSTART3386; GFX90A-NEXT:    ; def v[0:1]3387; GFX90A-NEXT:    ;;#ASMEND3388; GFX90A-NEXT:    s_mov_b32 s4, 0x50401003389; GFX90A-NEXT:    v_mov_b32_e32 v2, 03390; GFX90A-NEXT:    v_perm_b32 v0, v1, v0, s43391; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s43392; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]3393; GFX90A-NEXT:    s_waitcnt vmcnt(0)3394; GFX90A-NEXT:    s_setpc_b64 s[30:31]3395;3396; GFX942-LABEL: v_shuffle_v4i16_v3i16__0_2_2_2:3397; GFX942:       ; %bb.0:3398; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3399; GFX942-NEXT:    ;;#ASMSTART3400; GFX942-NEXT:    ; def v[0:1]3401; GFX942-NEXT:    ;;#ASMEND3402; GFX942-NEXT:    s_mov_b32 s2, 0x50401003403; GFX942-NEXT:    v_mov_b32_e32 v2, 03404; GFX942-NEXT:    v_perm_b32 v0, v1, v0, s23405; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s23406; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]3407; GFX942-NEXT:    s_waitcnt vmcnt(0)3408; GFX942-NEXT:    s_setpc_b64 s[30:31]3409  %vec0 = call <4 x i16> asm "; def $0", "=v"()3410  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3411  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2>3412  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 83413  ret void3414}3415 3416define void @v_shuffle_v4i16_v3i16__1_2_2_2(ptr addrspace(1) inreg %ptr) {3417; GFX900-LABEL: v_shuffle_v4i16_v3i16__1_2_2_2:3418; GFX900:       ; %bb.0:3419; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3420; GFX900-NEXT:    ;;#ASMSTART3421; GFX900-NEXT:    ; def v[0:1]3422; GFX900-NEXT:    ;;#ASMEND3423; GFX900-NEXT:    s_mov_b32 s4, 0x50401003424; GFX900-NEXT:    v_mov_b32_e32 v3, 03425; GFX900-NEXT:    v_perm_b32 v2, v1, v1, s43426; GFX900-NEXT:    v_alignbit_b32 v1, v1, v0, 163427; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]3428; GFX900-NEXT:    s_waitcnt vmcnt(0)3429; GFX900-NEXT:    s_setpc_b64 s[30:31]3430;3431; GFX90A-LABEL: v_shuffle_v4i16_v3i16__1_2_2_2:3432; GFX90A:       ; %bb.0:3433; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3434; GFX90A-NEXT:    s_mov_b32 s4, 0x50401003435; GFX90A-NEXT:    v_mov_b32_e32 v4, 03436; GFX90A-NEXT:    ;;#ASMSTART3437; GFX90A-NEXT:    ; def v[0:1]3438; GFX90A-NEXT:    ;;#ASMEND3439; GFX90A-NEXT:    v_perm_b32 v3, v1, v1, s43440; GFX90A-NEXT:    v_alignbit_b32 v2, v1, v0, 163441; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]3442; GFX90A-NEXT:    s_waitcnt vmcnt(0)3443; GFX90A-NEXT:    s_setpc_b64 s[30:31]3444;3445; GFX942-LABEL: v_shuffle_v4i16_v3i16__1_2_2_2:3446; GFX942:       ; %bb.0:3447; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3448; GFX942-NEXT:    s_mov_b32 s2, 0x50401003449; GFX942-NEXT:    v_mov_b32_e32 v4, 03450; GFX942-NEXT:    ;;#ASMSTART3451; GFX942-NEXT:    ; def v[0:1]3452; GFX942-NEXT:    ;;#ASMEND3453; GFX942-NEXT:    s_nop 03454; GFX942-NEXT:    v_perm_b32 v3, v1, v1, s23455; GFX942-NEXT:    v_alignbit_b32 v2, v1, v0, 163456; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]3457; GFX942-NEXT:    s_waitcnt vmcnt(0)3458; GFX942-NEXT:    s_setpc_b64 s[30:31]3459  %vec0 = call <4 x i16> asm "; def $0", "=v"()3460  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3461  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2>3462  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 83463  ret void3464}3465 3466define void @v_shuffle_v4i16_v3i16__2_2_2_2(ptr addrspace(1) inreg %ptr) {3467; GFX900-LABEL: v_shuffle_v4i16_v3i16__2_2_2_2:3468; GFX900:       ; %bb.0:3469; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3470; GFX900-NEXT:    ;;#ASMSTART3471; GFX900-NEXT:    ; def v[0:1]3472; GFX900-NEXT:    ;;#ASMEND3473; GFX900-NEXT:    s_mov_b32 s4, 0x50401003474; GFX900-NEXT:    v_perm_b32 v0, v1, v1, s43475; GFX900-NEXT:    v_mov_b32_e32 v2, 03476; GFX900-NEXT:    v_mov_b32_e32 v1, v03477; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]3478; GFX900-NEXT:    s_waitcnt vmcnt(0)3479; GFX900-NEXT:    s_setpc_b64 s[30:31]3480;3481; GFX90A-LABEL: v_shuffle_v4i16_v3i16__2_2_2_2:3482; GFX90A:       ; %bb.0:3483; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3484; GFX90A-NEXT:    ;;#ASMSTART3485; GFX90A-NEXT:    ; def v[0:1]3486; GFX90A-NEXT:    ;;#ASMEND3487; GFX90A-NEXT:    s_mov_b32 s4, 0x50401003488; GFX90A-NEXT:    v_perm_b32 v0, v1, v1, s43489; GFX90A-NEXT:    v_mov_b32_e32 v2, 03490; GFX90A-NEXT:    v_mov_b32_e32 v1, v03491; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]3492; GFX90A-NEXT:    s_waitcnt vmcnt(0)3493; GFX90A-NEXT:    s_setpc_b64 s[30:31]3494;3495; GFX942-LABEL: v_shuffle_v4i16_v3i16__2_2_2_2:3496; GFX942:       ; %bb.0:3497; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3498; GFX942-NEXT:    ;;#ASMSTART3499; GFX942-NEXT:    ; def v[0:1]3500; GFX942-NEXT:    ;;#ASMEND3501; GFX942-NEXT:    s_mov_b32 s2, 0x50401003502; GFX942-NEXT:    v_perm_b32 v0, v1, v1, s23503; GFX942-NEXT:    v_mov_b32_e32 v2, 03504; GFX942-NEXT:    v_mov_b32_e32 v1, v03505; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]3506; GFX942-NEXT:    s_waitcnt vmcnt(0)3507; GFX942-NEXT:    s_setpc_b64 s[30:31]3508  %vec0 = call <4 x i16> asm "; def $0", "=v"()3509  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3510  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2>3511  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 83512  ret void3513}3514 3515define void @v_shuffle_v4i16_v3i16__3_2_2_2(ptr addrspace(1) inreg %ptr) {3516; GFX900-LABEL: v_shuffle_v4i16_v3i16__3_2_2_2:3517; GFX900:       ; %bb.0:3518; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3519; GFX900-NEXT:    ;;#ASMSTART3520; GFX900-NEXT:    ; def v[0:1]3521; GFX900-NEXT:    ;;#ASMEND3522; GFX900-NEXT:    s_mov_b32 s4, 0x50401003523; GFX900-NEXT:    v_mov_b32_e32 v3, 03524; GFX900-NEXT:    v_perm_b32 v2, v1, v1, s43525; GFX900-NEXT:    v_lshlrev_b32_e32 v1, 16, v13526; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]3527; GFX900-NEXT:    s_waitcnt vmcnt(0)3528; GFX900-NEXT:    s_setpc_b64 s[30:31]3529;3530; GFX90A-LABEL: v_shuffle_v4i16_v3i16__3_2_2_2:3531; GFX90A:       ; %bb.0:3532; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3533; GFX90A-NEXT:    s_mov_b32 s4, 0x50401003534; GFX90A-NEXT:    v_mov_b32_e32 v4, 03535; GFX90A-NEXT:    ;;#ASMSTART3536; GFX90A-NEXT:    ; def v[0:1]3537; GFX90A-NEXT:    ;;#ASMEND3538; GFX90A-NEXT:    v_perm_b32 v3, v1, v1, s43539; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v13540; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]3541; GFX90A-NEXT:    s_waitcnt vmcnt(0)3542; GFX90A-NEXT:    s_setpc_b64 s[30:31]3543;3544; GFX942-LABEL: v_shuffle_v4i16_v3i16__3_2_2_2:3545; GFX942:       ; %bb.0:3546; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3547; GFX942-NEXT:    s_mov_b32 s2, 0x50401003548; GFX942-NEXT:    v_mov_b32_e32 v4, 03549; GFX942-NEXT:    ;;#ASMSTART3550; GFX942-NEXT:    ; def v[0:1]3551; GFX942-NEXT:    ;;#ASMEND3552; GFX942-NEXT:    s_nop 03553; GFX942-NEXT:    v_perm_b32 v3, v1, v1, s23554; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v13555; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]3556; GFX942-NEXT:    s_waitcnt vmcnt(0)3557; GFX942-NEXT:    s_setpc_b64 s[30:31]3558  %vec0 = call <4 x i16> asm "; def $0", "=v"()3559  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3560  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 3, i32 2, i32 2, i32 2>3561  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 83562  ret void3563}3564 3565define void @v_shuffle_v4i16_v3i16__4_2_2_2(ptr addrspace(1) inreg %ptr) {3566; GFX900-LABEL: v_shuffle_v4i16_v3i16__4_2_2_2:3567; GFX900:       ; %bb.0:3568; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3569; GFX900-NEXT:    ;;#ASMSTART3570; GFX900-NEXT:    ; def v[2:3]3571; GFX900-NEXT:    ;;#ASMEND3572; GFX900-NEXT:    s_mov_b32 s4, 0x50401003573; GFX900-NEXT:    v_mov_b32_e32 v4, 03574; GFX900-NEXT:    ;;#ASMSTART3575; GFX900-NEXT:    ; def v[0:1]3576; GFX900-NEXT:    ;;#ASMEND3577; GFX900-NEXT:    v_perm_b32 v3, v1, v1, s43578; GFX900-NEXT:    v_alignbit_b32 v2, v1, v2, 163579; GFX900-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]3580; GFX900-NEXT:    s_waitcnt vmcnt(0)3581; GFX900-NEXT:    s_setpc_b64 s[30:31]3582;3583; GFX90A-LABEL: v_shuffle_v4i16_v3i16__4_2_2_2:3584; GFX90A:       ; %bb.0:3585; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3586; GFX90A-NEXT:    ;;#ASMSTART3587; GFX90A-NEXT:    ; def v[2:3]3588; GFX90A-NEXT:    ;;#ASMEND3589; GFX90A-NEXT:    s_mov_b32 s4, 0x50401003590; GFX90A-NEXT:    v_mov_b32_e32 v4, 03591; GFX90A-NEXT:    ;;#ASMSTART3592; GFX90A-NEXT:    ; def v[0:1]3593; GFX90A-NEXT:    ;;#ASMEND3594; GFX90A-NEXT:    v_perm_b32 v3, v1, v1, s43595; GFX90A-NEXT:    v_alignbit_b32 v2, v1, v2, 163596; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]3597; GFX90A-NEXT:    s_waitcnt vmcnt(0)3598; GFX90A-NEXT:    s_setpc_b64 s[30:31]3599;3600; GFX942-LABEL: v_shuffle_v4i16_v3i16__4_2_2_2:3601; GFX942:       ; %bb.0:3602; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3603; GFX942-NEXT:    ;;#ASMSTART3604; GFX942-NEXT:    ; def v[2:3]3605; GFX942-NEXT:    ;;#ASMEND3606; GFX942-NEXT:    s_mov_b32 s2, 0x50401003607; GFX942-NEXT:    v_mov_b32_e32 v4, 03608; GFX942-NEXT:    ;;#ASMSTART3609; GFX942-NEXT:    ; def v[0:1]3610; GFX942-NEXT:    ;;#ASMEND3611; GFX942-NEXT:    s_nop 03612; GFX942-NEXT:    v_perm_b32 v3, v1, v1, s23613; GFX942-NEXT:    v_alignbit_b32 v2, v1, v2, 163614; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]3615; GFX942-NEXT:    s_waitcnt vmcnt(0)3616; GFX942-NEXT:    s_setpc_b64 s[30:31]3617  %vec0 = call <4 x i16> asm "; def $0", "=v"()3618  %vec1 = call <4 x i16> asm "; def $0", "=v"()3619  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3620  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3621  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 4, i32 2, i32 2, i32 2>3622  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 83623  ret void3624}3625 3626define void @v_shuffle_v4i16_v3i16__5_2_2_2(ptr addrspace(1) inreg %ptr) {3627; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_2_2_2:3628; GFX900:       ; %bb.0:3629; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3630; GFX900-NEXT:    ;;#ASMSTART3631; GFX900-NEXT:    ; def v[0:1]3632; GFX900-NEXT:    ;;#ASMEND3633; GFX900-NEXT:    s_mov_b32 s4, 0x50401003634; GFX900-NEXT:    v_mov_b32_e32 v4, 03635; GFX900-NEXT:    ;;#ASMSTART3636; GFX900-NEXT:    ; def v[2:3]3637; GFX900-NEXT:    ;;#ASMEND3638; GFX900-NEXT:    v_perm_b32 v0, v1, v3, s43639; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s43640; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]3641; GFX900-NEXT:    s_waitcnt vmcnt(0)3642; GFX900-NEXT:    s_setpc_b64 s[30:31]3643;3644; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_2_2_2:3645; GFX90A:       ; %bb.0:3646; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3647; GFX90A-NEXT:    ;;#ASMSTART3648; GFX90A-NEXT:    ; def v[0:1]3649; GFX90A-NEXT:    ;;#ASMEND3650; GFX90A-NEXT:    s_mov_b32 s4, 0x50401003651; GFX90A-NEXT:    v_mov_b32_e32 v4, 03652; GFX90A-NEXT:    ;;#ASMSTART3653; GFX90A-NEXT:    ; def v[2:3]3654; GFX90A-NEXT:    ;;#ASMEND3655; GFX90A-NEXT:    v_perm_b32 v0, v1, v3, s43656; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s43657; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]3658; GFX90A-NEXT:    s_waitcnt vmcnt(0)3659; GFX90A-NEXT:    s_setpc_b64 s[30:31]3660;3661; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_2_2_2:3662; GFX942:       ; %bb.0:3663; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3664; GFX942-NEXT:    ;;#ASMSTART3665; GFX942-NEXT:    ; def v[0:1]3666; GFX942-NEXT:    ;;#ASMEND3667; GFX942-NEXT:    s_mov_b32 s2, 0x50401003668; GFX942-NEXT:    v_mov_b32_e32 v4, 03669; GFX942-NEXT:    ;;#ASMSTART3670; GFX942-NEXT:    ; def v[2:3]3671; GFX942-NEXT:    ;;#ASMEND3672; GFX942-NEXT:    s_nop 03673; GFX942-NEXT:    v_perm_b32 v0, v1, v3, s23674; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s23675; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]3676; GFX942-NEXT:    s_waitcnt vmcnt(0)3677; GFX942-NEXT:    s_setpc_b64 s[30:31]3678  %vec0 = call <4 x i16> asm "; def $0", "=v"()3679  %vec1 = call <4 x i16> asm "; def $0", "=v"()3680  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3681  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3682  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 2, i32 2, i32 2>3683  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 83684  ret void3685}3686 3687define void @v_shuffle_v4i16_v3i16__5_u_2_2(ptr addrspace(1) inreg %ptr) {3688; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_u_2_2:3689; GFX900:       ; %bb.0:3690; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3691; GFX900-NEXT:    ;;#ASMSTART3692; GFX900-NEXT:    ; def v[1:2]3693; GFX900-NEXT:    ;;#ASMEND3694; GFX900-NEXT:    s_mov_b32 s4, 0x50401003695; GFX900-NEXT:    v_mov_b32_e32 v3, 03696; GFX900-NEXT:    v_perm_b32 v2, v2, v2, s43697; GFX900-NEXT:    ;;#ASMSTART3698; GFX900-NEXT:    ; def v[0:1]3699; GFX900-NEXT:    ;;#ASMEND3700; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]3701; GFX900-NEXT:    s_waitcnt vmcnt(0)3702; GFX900-NEXT:    s_setpc_b64 s[30:31]3703;3704; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_u_2_2:3705; GFX90A:       ; %bb.0:3706; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3707; GFX90A-NEXT:    ;;#ASMSTART3708; GFX90A-NEXT:    ; def v[0:1]3709; GFX90A-NEXT:    ;;#ASMEND3710; GFX90A-NEXT:    s_mov_b32 s4, 0x50401003711; GFX90A-NEXT:    v_mov_b32_e32 v4, 03712; GFX90A-NEXT:    ;;#ASMSTART3713; GFX90A-NEXT:    ; def v[2:3]3714; GFX90A-NEXT:    ;;#ASMEND3715; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s43716; GFX90A-NEXT:    v_mov_b32_e32 v0, v33717; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]3718; GFX90A-NEXT:    s_waitcnt vmcnt(0)3719; GFX90A-NEXT:    s_setpc_b64 s[30:31]3720;3721; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_u_2_2:3722; GFX942:       ; %bb.0:3723; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3724; GFX942-NEXT:    ;;#ASMSTART3725; GFX942-NEXT:    ; def v[0:1]3726; GFX942-NEXT:    ;;#ASMEND3727; GFX942-NEXT:    s_mov_b32 s2, 0x50401003728; GFX942-NEXT:    v_mov_b32_e32 v4, 03729; GFX942-NEXT:    ;;#ASMSTART3730; GFX942-NEXT:    ; def v[2:3]3731; GFX942-NEXT:    ;;#ASMEND3732; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s23733; GFX942-NEXT:    v_mov_b32_e32 v0, v33734; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]3735; GFX942-NEXT:    s_waitcnt vmcnt(0)3736; GFX942-NEXT:    s_setpc_b64 s[30:31]3737  %vec0 = call <4 x i16> asm "; def $0", "=v"()3738  %vec1 = call <4 x i16> asm "; def $0", "=v"()3739  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3740  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3741  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 poison, i32 2, i32 2>3742  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 83743  ret void3744}3745 3746define void @v_shuffle_v4i16_v3i16__5_0_2_2(ptr addrspace(1) inreg %ptr) {3747; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_0_2_2:3748; GFX900:       ; %bb.0:3749; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3750; GFX900-NEXT:    ;;#ASMSTART3751; GFX900-NEXT:    ; def v[0:1]3752; GFX900-NEXT:    ;;#ASMEND3753; GFX900-NEXT:    s_mov_b32 s4, 0x50401003754; GFX900-NEXT:    v_mov_b32_e32 v4, 03755; GFX900-NEXT:    ;;#ASMSTART3756; GFX900-NEXT:    ; def v[2:3]3757; GFX900-NEXT:    ;;#ASMEND3758; GFX900-NEXT:    v_perm_b32 v0, v0, v3, s43759; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s43760; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]3761; GFX900-NEXT:    s_waitcnt vmcnt(0)3762; GFX900-NEXT:    s_setpc_b64 s[30:31]3763;3764; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_0_2_2:3765; GFX90A:       ; %bb.0:3766; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3767; GFX90A-NEXT:    ;;#ASMSTART3768; GFX90A-NEXT:    ; def v[0:1]3769; GFX90A-NEXT:    ;;#ASMEND3770; GFX90A-NEXT:    s_mov_b32 s4, 0x50401003771; GFX90A-NEXT:    v_mov_b32_e32 v4, 03772; GFX90A-NEXT:    ;;#ASMSTART3773; GFX90A-NEXT:    ; def v[2:3]3774; GFX90A-NEXT:    ;;#ASMEND3775; GFX90A-NEXT:    v_perm_b32 v0, v0, v3, s43776; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s43777; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]3778; GFX90A-NEXT:    s_waitcnt vmcnt(0)3779; GFX90A-NEXT:    s_setpc_b64 s[30:31]3780;3781; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_0_2_2:3782; GFX942:       ; %bb.0:3783; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3784; GFX942-NEXT:    ;;#ASMSTART3785; GFX942-NEXT:    ; def v[0:1]3786; GFX942-NEXT:    ;;#ASMEND3787; GFX942-NEXT:    s_mov_b32 s2, 0x50401003788; GFX942-NEXT:    v_mov_b32_e32 v4, 03789; GFX942-NEXT:    ;;#ASMSTART3790; GFX942-NEXT:    ; def v[2:3]3791; GFX942-NEXT:    ;;#ASMEND3792; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s23793; GFX942-NEXT:    v_perm_b32 v0, v0, v3, s23794; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]3795; GFX942-NEXT:    s_waitcnt vmcnt(0)3796; GFX942-NEXT:    s_setpc_b64 s[30:31]3797  %vec0 = call <4 x i16> asm "; def $0", "=v"()3798  %vec1 = call <4 x i16> asm "; def $0", "=v"()3799  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3800  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3801  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 0, i32 2, i32 2>3802  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 83803  ret void3804}3805 3806define void @v_shuffle_v4i16_v3i16__5_1_2_2(ptr addrspace(1) inreg %ptr) {3807; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_1_2_2:3808; GFX900:       ; %bb.0:3809; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3810; GFX900-NEXT:    ;;#ASMSTART3811; GFX900-NEXT:    ; def v[0:1]3812; GFX900-NEXT:    ;;#ASMEND3813; GFX900-NEXT:    s_mov_b32 s4, 0xffff3814; GFX900-NEXT:    ;;#ASMSTART3815; GFX900-NEXT:    ; def v[2:3]3816; GFX900-NEXT:    ;;#ASMEND3817; GFX900-NEXT:    v_bfi_b32 v0, s4, v3, v03818; GFX900-NEXT:    s_mov_b32 s4, 0x50401003819; GFX900-NEXT:    v_mov_b32_e32 v4, 03820; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s43821; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]3822; GFX900-NEXT:    s_waitcnt vmcnt(0)3823; GFX900-NEXT:    s_setpc_b64 s[30:31]3824;3825; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_1_2_2:3826; GFX90A:       ; %bb.0:3827; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3828; GFX90A-NEXT:    ;;#ASMSTART3829; GFX90A-NEXT:    ; def v[0:1]3830; GFX90A-NEXT:    ;;#ASMEND3831; GFX90A-NEXT:    s_mov_b32 s4, 0xffff3832; GFX90A-NEXT:    ;;#ASMSTART3833; GFX90A-NEXT:    ; def v[2:3]3834; GFX90A-NEXT:    ;;#ASMEND3835; GFX90A-NEXT:    v_bfi_b32 v0, s4, v3, v03836; GFX90A-NEXT:    s_mov_b32 s4, 0x50401003837; GFX90A-NEXT:    v_mov_b32_e32 v4, 03838; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s43839; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]3840; GFX90A-NEXT:    s_waitcnt vmcnt(0)3841; GFX90A-NEXT:    s_setpc_b64 s[30:31]3842;3843; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_1_2_2:3844; GFX942:       ; %bb.0:3845; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3846; GFX942-NEXT:    ;;#ASMSTART3847; GFX942-NEXT:    ; def v[0:1]3848; GFX942-NEXT:    ;;#ASMEND3849; GFX942-NEXT:    s_mov_b32 s2, 0xffff3850; GFX942-NEXT:    ;;#ASMSTART3851; GFX942-NEXT:    ; def v[2:3]3852; GFX942-NEXT:    ;;#ASMEND3853; GFX942-NEXT:    v_mov_b32_e32 v4, 03854; GFX942-NEXT:    v_bfi_b32 v0, s2, v3, v03855; GFX942-NEXT:    s_mov_b32 s2, 0x50401003856; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s23857; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]3858; GFX942-NEXT:    s_waitcnt vmcnt(0)3859; GFX942-NEXT:    s_setpc_b64 s[30:31]3860  %vec0 = call <4 x i16> asm "; def $0", "=v"()3861  %vec1 = call <4 x i16> asm "; def $0", "=v"()3862  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3863  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3864  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 1, i32 2, i32 2>3865  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 83866  ret void3867}3868 3869define void @v_shuffle_v4i16_v3i16__5_3_2_2(ptr addrspace(1) inreg %ptr) {3870; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_3_2_2:3871; GFX900:       ; %bb.0:3872; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3873; GFX900-NEXT:    ;;#ASMSTART3874; GFX900-NEXT:    ; def v[0:1]3875; GFX900-NEXT:    ;;#ASMEND3876; GFX900-NEXT:    s_mov_b32 s4, 0x50401003877; GFX900-NEXT:    v_mov_b32_e32 v4, 03878; GFX900-NEXT:    ;;#ASMSTART3879; GFX900-NEXT:    ; def v[2:3]3880; GFX900-NEXT:    ;;#ASMEND3881; GFX900-NEXT:    v_perm_b32 v0, v2, v3, s43882; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s43883; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]3884; GFX900-NEXT:    s_waitcnt vmcnt(0)3885; GFX900-NEXT:    s_setpc_b64 s[30:31]3886;3887; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_3_2_2:3888; GFX90A:       ; %bb.0:3889; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3890; GFX90A-NEXT:    ;;#ASMSTART3891; GFX90A-NEXT:    ; def v[0:1]3892; GFX90A-NEXT:    ;;#ASMEND3893; GFX90A-NEXT:    s_mov_b32 s4, 0x50401003894; GFX90A-NEXT:    v_mov_b32_e32 v4, 03895; GFX90A-NEXT:    ;;#ASMSTART3896; GFX90A-NEXT:    ; def v[2:3]3897; GFX90A-NEXT:    ;;#ASMEND3898; GFX90A-NEXT:    v_perm_b32 v0, v2, v3, s43899; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s43900; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]3901; GFX90A-NEXT:    s_waitcnt vmcnt(0)3902; GFX90A-NEXT:    s_setpc_b64 s[30:31]3903;3904; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_3_2_2:3905; GFX942:       ; %bb.0:3906; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3907; GFX942-NEXT:    ;;#ASMSTART3908; GFX942-NEXT:    ; def v[0:1]3909; GFX942-NEXT:    ;;#ASMEND3910; GFX942-NEXT:    s_mov_b32 s2, 0x50401003911; GFX942-NEXT:    v_mov_b32_e32 v4, 03912; GFX942-NEXT:    ;;#ASMSTART3913; GFX942-NEXT:    ; def v[2:3]3914; GFX942-NEXT:    ;;#ASMEND3915; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s23916; GFX942-NEXT:    v_perm_b32 v0, v2, v3, s23917; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]3918; GFX942-NEXT:    s_waitcnt vmcnt(0)3919; GFX942-NEXT:    s_setpc_b64 s[30:31]3920  %vec0 = call <4 x i16> asm "; def $0", "=v"()3921  %vec1 = call <4 x i16> asm "; def $0", "=v"()3922  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3923  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3924  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 3, i32 2, i32 2>3925  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 83926  ret void3927}3928 3929define void @v_shuffle_v4i16_v3i16__5_4_2_2(ptr addrspace(1) inreg %ptr) {3930; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_4_2_2:3931; GFX900:       ; %bb.0:3932; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3933; GFX900-NEXT:    ;;#ASMSTART3934; GFX900-NEXT:    ; def v[0:1]3935; GFX900-NEXT:    ;;#ASMEND3936; GFX900-NEXT:    s_mov_b32 s4, 0xffff3937; GFX900-NEXT:    ;;#ASMSTART3938; GFX900-NEXT:    ; def v[2:3]3939; GFX900-NEXT:    ;;#ASMEND3940; GFX900-NEXT:    v_bfi_b32 v0, s4, v3, v23941; GFX900-NEXT:    s_mov_b32 s4, 0x50401003942; GFX900-NEXT:    v_mov_b32_e32 v4, 03943; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s43944; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]3945; GFX900-NEXT:    s_waitcnt vmcnt(0)3946; GFX900-NEXT:    s_setpc_b64 s[30:31]3947;3948; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_4_2_2:3949; GFX90A:       ; %bb.0:3950; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3951; GFX90A-NEXT:    ;;#ASMSTART3952; GFX90A-NEXT:    ; def v[0:1]3953; GFX90A-NEXT:    ;;#ASMEND3954; GFX90A-NEXT:    s_mov_b32 s4, 0xffff3955; GFX90A-NEXT:    ;;#ASMSTART3956; GFX90A-NEXT:    ; def v[2:3]3957; GFX90A-NEXT:    ;;#ASMEND3958; GFX90A-NEXT:    v_bfi_b32 v0, s4, v3, v23959; GFX90A-NEXT:    s_mov_b32 s4, 0x50401003960; GFX90A-NEXT:    v_mov_b32_e32 v4, 03961; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s43962; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]3963; GFX90A-NEXT:    s_waitcnt vmcnt(0)3964; GFX90A-NEXT:    s_setpc_b64 s[30:31]3965;3966; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_4_2_2:3967; GFX942:       ; %bb.0:3968; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3969; GFX942-NEXT:    ;;#ASMSTART3970; GFX942-NEXT:    ; def v[0:1]3971; GFX942-NEXT:    ;;#ASMEND3972; GFX942-NEXT:    s_mov_b32 s2, 0xffff3973; GFX942-NEXT:    ;;#ASMSTART3974; GFX942-NEXT:    ; def v[2:3]3975; GFX942-NEXT:    ;;#ASMEND3976; GFX942-NEXT:    v_mov_b32_e32 v4, 03977; GFX942-NEXT:    v_bfi_b32 v0, s2, v3, v23978; GFX942-NEXT:    s_mov_b32 s2, 0x50401003979; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s23980; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]3981; GFX942-NEXT:    s_waitcnt vmcnt(0)3982; GFX942-NEXT:    s_setpc_b64 s[30:31]3983  %vec0 = call <4 x i16> asm "; def $0", "=v"()3984  %vec1 = call <4 x i16> asm "; def $0", "=v"()3985  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3986  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>3987  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 4, i32 2, i32 2>3988  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 83989  ret void3990}3991 3992define void @v_shuffle_v4i16_v3i16__5_5_2_2(ptr addrspace(1) inreg %ptr) {3993; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_2_2:3994; GFX900:       ; %bb.0:3995; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3996; GFX900-NEXT:    ;;#ASMSTART3997; GFX900-NEXT:    ; def v[0:1]3998; GFX900-NEXT:    ;;#ASMEND3999; GFX900-NEXT:    s_mov_b32 s4, 0x50401004000; GFX900-NEXT:    v_mov_b32_e32 v4, 04001; GFX900-NEXT:    ;;#ASMSTART4002; GFX900-NEXT:    ; def v[2:3]4003; GFX900-NEXT:    ;;#ASMEND4004; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s44005; GFX900-NEXT:    v_perm_b32 v0, v3, v3, s44006; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]4007; GFX900-NEXT:    s_waitcnt vmcnt(0)4008; GFX900-NEXT:    s_setpc_b64 s[30:31]4009;4010; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_2_2:4011; GFX90A:       ; %bb.0:4012; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4013; GFX90A-NEXT:    ;;#ASMSTART4014; GFX90A-NEXT:    ; def v[0:1]4015; GFX90A-NEXT:    ;;#ASMEND4016; GFX90A-NEXT:    s_mov_b32 s4, 0x50401004017; GFX90A-NEXT:    v_mov_b32_e32 v4, 04018; GFX90A-NEXT:    ;;#ASMSTART4019; GFX90A-NEXT:    ; def v[2:3]4020; GFX90A-NEXT:    ;;#ASMEND4021; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s44022; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s44023; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]4024; GFX90A-NEXT:    s_waitcnt vmcnt(0)4025; GFX90A-NEXT:    s_setpc_b64 s[30:31]4026;4027; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_2_2:4028; GFX942:       ; %bb.0:4029; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4030; GFX942-NEXT:    ;;#ASMSTART4031; GFX942-NEXT:    ; def v[0:1]4032; GFX942-NEXT:    ;;#ASMEND4033; GFX942-NEXT:    s_mov_b32 s2, 0x50401004034; GFX942-NEXT:    v_mov_b32_e32 v4, 04035; GFX942-NEXT:    ;;#ASMSTART4036; GFX942-NEXT:    ; def v[2:3]4037; GFX942-NEXT:    ;;#ASMEND4038; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s24039; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s24040; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]4041; GFX942-NEXT:    s_waitcnt vmcnt(0)4042; GFX942-NEXT:    s_setpc_b64 s[30:31]4043  %vec0 = call <4 x i16> asm "; def $0", "=v"()4044  %vec1 = call <4 x i16> asm "; def $0", "=v"()4045  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4046  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4047  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 2, i32 2>4048  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 84049  ret void4050}4051 4052define void @v_shuffle_v4i16_v3i16__5_5_u_2(ptr addrspace(1) inreg %ptr) {4053; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_u_2:4054; GFX900:       ; %bb.0:4055; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4056; GFX900-NEXT:    ;;#ASMSTART4057; GFX900-NEXT:    ; def v[0:1]4058; GFX900-NEXT:    ;;#ASMEND4059; GFX900-NEXT:    s_mov_b32 s4, 0x50401004060; GFX900-NEXT:    v_mov_b32_e32 v4, 04061; GFX900-NEXT:    ;;#ASMSTART4062; GFX900-NEXT:    ; def v[2:3]4063; GFX900-NEXT:    ;;#ASMEND4064; GFX900-NEXT:    v_perm_b32 v0, v3, v3, s44065; GFX900-NEXT:    v_lshlrev_b32_e32 v1, 16, v14066; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]4067; GFX900-NEXT:    s_waitcnt vmcnt(0)4068; GFX900-NEXT:    s_setpc_b64 s[30:31]4069;4070; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_u_2:4071; GFX90A:       ; %bb.0:4072; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4073; GFX90A-NEXT:    ;;#ASMSTART4074; GFX90A-NEXT:    ; def v[0:1]4075; GFX90A-NEXT:    ;;#ASMEND4076; GFX90A-NEXT:    s_mov_b32 s4, 0x50401004077; GFX90A-NEXT:    v_mov_b32_e32 v4, 04078; GFX90A-NEXT:    ;;#ASMSTART4079; GFX90A-NEXT:    ; def v[2:3]4080; GFX90A-NEXT:    ;;#ASMEND4081; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s44082; GFX90A-NEXT:    v_lshlrev_b32_e32 v1, 16, v14083; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]4084; GFX90A-NEXT:    s_waitcnt vmcnt(0)4085; GFX90A-NEXT:    s_setpc_b64 s[30:31]4086;4087; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_u_2:4088; GFX942:       ; %bb.0:4089; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4090; GFX942-NEXT:    ;;#ASMSTART4091; GFX942-NEXT:    ; def v[0:1]4092; GFX942-NEXT:    ;;#ASMEND4093; GFX942-NEXT:    s_mov_b32 s2, 0x50401004094; GFX942-NEXT:    v_mov_b32_e32 v4, 04095; GFX942-NEXT:    ;;#ASMSTART4096; GFX942-NEXT:    ; def v[2:3]4097; GFX942-NEXT:    ;;#ASMEND4098; GFX942-NEXT:    v_lshlrev_b32_e32 v1, 16, v14099; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s24100; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]4101; GFX942-NEXT:    s_waitcnt vmcnt(0)4102; GFX942-NEXT:    s_setpc_b64 s[30:31]4103  %vec0 = call <4 x i16> asm "; def $0", "=v"()4104  %vec1 = call <4 x i16> asm "; def $0", "=v"()4105  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4106  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4107  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 poison, i32 2>4108  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 84109  ret void4110}4111 4112define void @v_shuffle_v4i16_v3i16__5_5_0_2(ptr addrspace(1) inreg %ptr) {4113; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_0_2:4114; GFX900:       ; %bb.0:4115; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4116; GFX900-NEXT:    ;;#ASMSTART4117; GFX900-NEXT:    ; def v[0:1]4118; GFX900-NEXT:    ;;#ASMEND4119; GFX900-NEXT:    s_mov_b32 s4, 0x50401004120; GFX900-NEXT:    v_mov_b32_e32 v4, 04121; GFX900-NEXT:    ;;#ASMSTART4122; GFX900-NEXT:    ; def v[2:3]4123; GFX900-NEXT:    ;;#ASMEND4124; GFX900-NEXT:    v_perm_b32 v1, v1, v0, s44125; GFX900-NEXT:    v_perm_b32 v0, v3, v3, s44126; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]4127; GFX900-NEXT:    s_waitcnt vmcnt(0)4128; GFX900-NEXT:    s_setpc_b64 s[30:31]4129;4130; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_0_2:4131; GFX90A:       ; %bb.0:4132; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4133; GFX90A-NEXT:    ;;#ASMSTART4134; GFX90A-NEXT:    ; def v[0:1]4135; GFX90A-NEXT:    ;;#ASMEND4136; GFX90A-NEXT:    s_mov_b32 s4, 0x50401004137; GFX90A-NEXT:    v_mov_b32_e32 v4, 04138; GFX90A-NEXT:    ;;#ASMSTART4139; GFX90A-NEXT:    ; def v[2:3]4140; GFX90A-NEXT:    ;;#ASMEND4141; GFX90A-NEXT:    v_perm_b32 v1, v1, v0, s44142; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s44143; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]4144; GFX90A-NEXT:    s_waitcnt vmcnt(0)4145; GFX90A-NEXT:    s_setpc_b64 s[30:31]4146;4147; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_0_2:4148; GFX942:       ; %bb.0:4149; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4150; GFX942-NEXT:    ;;#ASMSTART4151; GFX942-NEXT:    ; def v[0:1]4152; GFX942-NEXT:    ;;#ASMEND4153; GFX942-NEXT:    s_mov_b32 s2, 0x50401004154; GFX942-NEXT:    v_mov_b32_e32 v4, 04155; GFX942-NEXT:    ;;#ASMSTART4156; GFX942-NEXT:    ; def v[2:3]4157; GFX942-NEXT:    ;;#ASMEND4158; GFX942-NEXT:    v_perm_b32 v1, v1, v0, s24159; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s24160; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]4161; GFX942-NEXT:    s_waitcnt vmcnt(0)4162; GFX942-NEXT:    s_setpc_b64 s[30:31]4163  %vec0 = call <4 x i16> asm "; def $0", "=v"()4164  %vec1 = call <4 x i16> asm "; def $0", "=v"()4165  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4166  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4167  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 0, i32 2>4168  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 84169  ret void4170}4171 4172define void @v_shuffle_v4i16_v3i16__5_5_1_2(ptr addrspace(1) inreg %ptr) {4173; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_1_2:4174; GFX900:       ; %bb.0:4175; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4176; GFX900-NEXT:    ;;#ASMSTART4177; GFX900-NEXT:    ; def v[0:1]4178; GFX900-NEXT:    ;;#ASMEND4179; GFX900-NEXT:    s_mov_b32 s4, 0x50401004180; GFX900-NEXT:    v_mov_b32_e32 v4, 04181; GFX900-NEXT:    ;;#ASMSTART4182; GFX900-NEXT:    ; def v[2:3]4183; GFX900-NEXT:    ;;#ASMEND4184; GFX900-NEXT:    v_alignbit_b32 v1, v1, v0, 164185; GFX900-NEXT:    v_perm_b32 v0, v3, v3, s44186; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]4187; GFX900-NEXT:    s_waitcnt vmcnt(0)4188; GFX900-NEXT:    s_setpc_b64 s[30:31]4189;4190; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_1_2:4191; GFX90A:       ; %bb.0:4192; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4193; GFX90A-NEXT:    ;;#ASMSTART4194; GFX90A-NEXT:    ; def v[0:1]4195; GFX90A-NEXT:    ;;#ASMEND4196; GFX90A-NEXT:    s_mov_b32 s4, 0x50401004197; GFX90A-NEXT:    v_mov_b32_e32 v4, 04198; GFX90A-NEXT:    ;;#ASMSTART4199; GFX90A-NEXT:    ; def v[2:3]4200; GFX90A-NEXT:    ;;#ASMEND4201; GFX90A-NEXT:    v_alignbit_b32 v1, v1, v0, 164202; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s44203; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]4204; GFX90A-NEXT:    s_waitcnt vmcnt(0)4205; GFX90A-NEXT:    s_setpc_b64 s[30:31]4206;4207; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_1_2:4208; GFX942:       ; %bb.0:4209; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4210; GFX942-NEXT:    ;;#ASMSTART4211; GFX942-NEXT:    ; def v[0:1]4212; GFX942-NEXT:    ;;#ASMEND4213; GFX942-NEXT:    s_mov_b32 s2, 0x50401004214; GFX942-NEXT:    v_mov_b32_e32 v4, 04215; GFX942-NEXT:    ;;#ASMSTART4216; GFX942-NEXT:    ; def v[2:3]4217; GFX942-NEXT:    ;;#ASMEND4218; GFX942-NEXT:    v_alignbit_b32 v1, v1, v0, 164219; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s24220; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]4221; GFX942-NEXT:    s_waitcnt vmcnt(0)4222; GFX942-NEXT:    s_setpc_b64 s[30:31]4223  %vec0 = call <4 x i16> asm "; def $0", "=v"()4224  %vec1 = call <4 x i16> asm "; def $0", "=v"()4225  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4226  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4227  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 1, i32 2>4228  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 84229  ret void4230}4231 4232define void @v_shuffle_v4i16_v3i16__5_5_3_2(ptr addrspace(1) inreg %ptr) {4233; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_3_2:4234; GFX900:       ; %bb.0:4235; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4236; GFX900-NEXT:    ;;#ASMSTART4237; GFX900-NEXT:    ; def v[0:1]4238; GFX900-NEXT:    ;;#ASMEND4239; GFX900-NEXT:    s_mov_b32 s4, 0x50401004240; GFX900-NEXT:    v_mov_b32_e32 v4, 04241; GFX900-NEXT:    ;;#ASMSTART4242; GFX900-NEXT:    ; def v[2:3]4243; GFX900-NEXT:    ;;#ASMEND4244; GFX900-NEXT:    v_perm_b32 v1, v1, v2, s44245; GFX900-NEXT:    v_perm_b32 v0, v3, v3, s44246; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]4247; GFX900-NEXT:    s_waitcnt vmcnt(0)4248; GFX900-NEXT:    s_setpc_b64 s[30:31]4249;4250; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_3_2:4251; GFX90A:       ; %bb.0:4252; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4253; GFX90A-NEXT:    ;;#ASMSTART4254; GFX90A-NEXT:    ; def v[0:1]4255; GFX90A-NEXT:    ;;#ASMEND4256; GFX90A-NEXT:    s_mov_b32 s4, 0x50401004257; GFX90A-NEXT:    v_mov_b32_e32 v4, 04258; GFX90A-NEXT:    ;;#ASMSTART4259; GFX90A-NEXT:    ; def v[2:3]4260; GFX90A-NEXT:    ;;#ASMEND4261; GFX90A-NEXT:    v_perm_b32 v1, v1, v2, s44262; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s44263; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]4264; GFX90A-NEXT:    s_waitcnt vmcnt(0)4265; GFX90A-NEXT:    s_setpc_b64 s[30:31]4266;4267; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_3_2:4268; GFX942:       ; %bb.0:4269; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4270; GFX942-NEXT:    ;;#ASMSTART4271; GFX942-NEXT:    ; def v[0:1]4272; GFX942-NEXT:    ;;#ASMEND4273; GFX942-NEXT:    s_mov_b32 s2, 0x50401004274; GFX942-NEXT:    v_mov_b32_e32 v4, 04275; GFX942-NEXT:    ;;#ASMSTART4276; GFX942-NEXT:    ; def v[2:3]4277; GFX942-NEXT:    ;;#ASMEND4278; GFX942-NEXT:    s_nop 04279; GFX942-NEXT:    v_perm_b32 v1, v1, v2, s24280; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s24281; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]4282; GFX942-NEXT:    s_waitcnt vmcnt(0)4283; GFX942-NEXT:    s_setpc_b64 s[30:31]4284  %vec0 = call <4 x i16> asm "; def $0", "=v"()4285  %vec1 = call <4 x i16> asm "; def $0", "=v"()4286  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4287  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4288  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 3, i32 2>4289  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 84290  ret void4291}4292 4293define void @v_shuffle_v4i16_v3i16__5_5_4_2(ptr addrspace(1) inreg %ptr) {4294; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_4_2:4295; GFX900:       ; %bb.0:4296; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4297; GFX900-NEXT:    ;;#ASMSTART4298; GFX900-NEXT:    ; def v[0:1]4299; GFX900-NEXT:    ;;#ASMEND4300; GFX900-NEXT:    s_mov_b32 s4, 0x50401004301; GFX900-NEXT:    v_mov_b32_e32 v4, 04302; GFX900-NEXT:    ;;#ASMSTART4303; GFX900-NEXT:    ; def v[2:3]4304; GFX900-NEXT:    ;;#ASMEND4305; GFX900-NEXT:    v_alignbit_b32 v1, v1, v2, 164306; GFX900-NEXT:    v_perm_b32 v0, v3, v3, s44307; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]4308; GFX900-NEXT:    s_waitcnt vmcnt(0)4309; GFX900-NEXT:    s_setpc_b64 s[30:31]4310;4311; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_4_2:4312; GFX90A:       ; %bb.0:4313; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4314; GFX90A-NEXT:    ;;#ASMSTART4315; GFX90A-NEXT:    ; def v[0:1]4316; GFX90A-NEXT:    ;;#ASMEND4317; GFX90A-NEXT:    s_mov_b32 s4, 0x50401004318; GFX90A-NEXT:    v_mov_b32_e32 v4, 04319; GFX90A-NEXT:    ;;#ASMSTART4320; GFX90A-NEXT:    ; def v[2:3]4321; GFX90A-NEXT:    ;;#ASMEND4322; GFX90A-NEXT:    v_alignbit_b32 v1, v1, v2, 164323; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s44324; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]4325; GFX90A-NEXT:    s_waitcnt vmcnt(0)4326; GFX90A-NEXT:    s_setpc_b64 s[30:31]4327;4328; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_4_2:4329; GFX942:       ; %bb.0:4330; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4331; GFX942-NEXT:    ;;#ASMSTART4332; GFX942-NEXT:    ; def v[0:1]4333; GFX942-NEXT:    ;;#ASMEND4334; GFX942-NEXT:    s_mov_b32 s2, 0x50401004335; GFX942-NEXT:    v_mov_b32_e32 v4, 04336; GFX942-NEXT:    ;;#ASMSTART4337; GFX942-NEXT:    ; def v[2:3]4338; GFX942-NEXT:    ;;#ASMEND4339; GFX942-NEXT:    s_nop 04340; GFX942-NEXT:    v_alignbit_b32 v1, v1, v2, 164341; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s24342; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]4343; GFX942-NEXT:    s_waitcnt vmcnt(0)4344; GFX942-NEXT:    s_setpc_b64 s[30:31]4345  %vec0 = call <4 x i16> asm "; def $0", "=v"()4346  %vec1 = call <4 x i16> asm "; def $0", "=v"()4347  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4348  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4349  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 4, i32 2>4350  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 84351  ret void4352}4353 4354define void @v_shuffle_v4i16_v3i16__u_3_3_3(ptr addrspace(1) inreg %ptr) {4355; GFX9-LABEL: v_shuffle_v4i16_v3i16__u_3_3_3:4356; GFX9:       ; %bb.0:4357; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4358; GFX9-NEXT:    s_setpc_b64 s[30:31]4359  %vec0 = call <4 x i16> asm "; def $0", "=v"()4360  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4361  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 poison, i32 3, i32 3, i32 3>4362  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 84363  ret void4364}4365 4366define void @v_shuffle_v4i16_v3i16__0_3_3_3(ptr addrspace(1) inreg %ptr) {4367; GFX900-LABEL: v_shuffle_v4i16_v3i16__0_3_3_3:4368; GFX900:       ; %bb.0:4369; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4370; GFX900-NEXT:    v_mov_b32_e32 v2, 04371; GFX900-NEXT:    ;;#ASMSTART4372; GFX900-NEXT:    ; def v[0:1]4373; GFX900-NEXT:    ;;#ASMEND4374; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]4375; GFX900-NEXT:    s_waitcnt vmcnt(0)4376; GFX900-NEXT:    s_setpc_b64 s[30:31]4377;4378; GFX90A-LABEL: v_shuffle_v4i16_v3i16__0_3_3_3:4379; GFX90A:       ; %bb.0:4380; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4381; GFX90A-NEXT:    v_mov_b32_e32 v2, 04382; GFX90A-NEXT:    ;;#ASMSTART4383; GFX90A-NEXT:    ; def v[0:1]4384; GFX90A-NEXT:    ;;#ASMEND4385; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]4386; GFX90A-NEXT:    s_waitcnt vmcnt(0)4387; GFX90A-NEXT:    s_setpc_b64 s[30:31]4388;4389; GFX942-LABEL: v_shuffle_v4i16_v3i16__0_3_3_3:4390; GFX942:       ; %bb.0:4391; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4392; GFX942-NEXT:    v_mov_b32_e32 v2, 04393; GFX942-NEXT:    ;;#ASMSTART4394; GFX942-NEXT:    ; def v[0:1]4395; GFX942-NEXT:    ;;#ASMEND4396; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]4397; GFX942-NEXT:    s_waitcnt vmcnt(0)4398; GFX942-NEXT:    s_setpc_b64 s[30:31]4399  %vec0 = call <4 x i16> asm "; def $0", "=v"()4400  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4401  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 0, i32 3, i32 3, i32 3>4402  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 84403  ret void4404}4405 4406define void @v_shuffle_v4i16_v3i16__1_3_3_3(ptr addrspace(1) inreg %ptr) {4407; GFX900-LABEL: v_shuffle_v4i16_v3i16__1_3_3_3:4408; GFX900:       ; %bb.0:4409; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4410; GFX900-NEXT:    ;;#ASMSTART4411; GFX900-NEXT:    ; def v[0:1]4412; GFX900-NEXT:    ;;#ASMEND4413; GFX900-NEXT:    v_mov_b32_e32 v2, 04414; GFX900-NEXT:    v_alignbit_b32 v0, s4, v0, 164415; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]4416; GFX900-NEXT:    s_waitcnt vmcnt(0)4417; GFX900-NEXT:    s_setpc_b64 s[30:31]4418;4419; GFX90A-LABEL: v_shuffle_v4i16_v3i16__1_3_3_3:4420; GFX90A:       ; %bb.0:4421; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4422; GFX90A-NEXT:    ;;#ASMSTART4423; GFX90A-NEXT:    ; def v[0:1]4424; GFX90A-NEXT:    ;;#ASMEND4425; GFX90A-NEXT:    v_mov_b32_e32 v2, 04426; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v0, 164427; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]4428; GFX90A-NEXT:    s_waitcnt vmcnt(0)4429; GFX90A-NEXT:    s_setpc_b64 s[30:31]4430;4431; GFX942-LABEL: v_shuffle_v4i16_v3i16__1_3_3_3:4432; GFX942:       ; %bb.0:4433; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4434; GFX942-NEXT:    ;;#ASMSTART4435; GFX942-NEXT:    ; def v[0:1]4436; GFX942-NEXT:    ;;#ASMEND4437; GFX942-NEXT:    v_mov_b32_e32 v2, 04438; GFX942-NEXT:    v_alignbit_b32 v0, s0, v0, 164439; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]4440; GFX942-NEXT:    s_waitcnt vmcnt(0)4441; GFX942-NEXT:    s_setpc_b64 s[30:31]4442  %vec0 = call <4 x i16> asm "; def $0", "=v"()4443  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4444  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 1, i32 3, i32 3, i32 3>4445  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 84446  ret void4447}4448 4449define void @v_shuffle_v4i16_v3i16__2_3_3_3(ptr addrspace(1) inreg %ptr) {4450; GFX900-LABEL: v_shuffle_v4i16_v3i16__2_3_3_3:4451; GFX900:       ; %bb.0:4452; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4453; GFX900-NEXT:    v_mov_b32_e32 v2, 04454; GFX900-NEXT:    ;;#ASMSTART4455; GFX900-NEXT:    ; def v[0:1]4456; GFX900-NEXT:    ;;#ASMEND4457; GFX900-NEXT:    global_store_dwordx2 v2, v[1:2], s[16:17]4458; GFX900-NEXT:    s_waitcnt vmcnt(0)4459; GFX900-NEXT:    s_setpc_b64 s[30:31]4460;4461; GFX90A-LABEL: v_shuffle_v4i16_v3i16__2_3_3_3:4462; GFX90A:       ; %bb.0:4463; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4464; GFX90A-NEXT:    ;;#ASMSTART4465; GFX90A-NEXT:    ; def v[0:1]4466; GFX90A-NEXT:    ;;#ASMEND4467; GFX90A-NEXT:    v_mov_b32_e32 v2, 04468; GFX90A-NEXT:    v_mov_b32_e32 v0, v14469; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]4470; GFX90A-NEXT:    s_waitcnt vmcnt(0)4471; GFX90A-NEXT:    s_setpc_b64 s[30:31]4472;4473; GFX942-LABEL: v_shuffle_v4i16_v3i16__2_3_3_3:4474; GFX942:       ; %bb.0:4475; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4476; GFX942-NEXT:    ;;#ASMSTART4477; GFX942-NEXT:    ; def v[0:1]4478; GFX942-NEXT:    ;;#ASMEND4479; GFX942-NEXT:    v_mov_b32_e32 v2, 04480; GFX942-NEXT:    v_mov_b32_e32 v0, v14481; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]4482; GFX942-NEXT:    s_waitcnt vmcnt(0)4483; GFX942-NEXT:    s_setpc_b64 s[30:31]4484  %vec0 = call <4 x i16> asm "; def $0", "=v"()4485  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4486  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 2, i32 3, i32 3, i32 3>4487  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 84488  ret void4489}4490 4491define void @v_shuffle_v4i16_v3i16__3_3_3_3(ptr addrspace(1) inreg %ptr) {4492; GFX9-LABEL: v_shuffle_v4i16_v3i16__3_3_3_3:4493; GFX9:       ; %bb.0:4494; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4495; GFX9-NEXT:    s_setpc_b64 s[30:31]4496  %vec0 = call <4 x i16> asm "; def $0", "=v"()4497  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4498  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 3, i32 3, i32 3, i32 3>4499  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 84500  ret void4501}4502 4503define void @v_shuffle_v4i16_v3i16__4_3_3_3(ptr addrspace(1) inreg %ptr) {4504; GFX900-LABEL: v_shuffle_v4i16_v3i16__4_3_3_3:4505; GFX900:       ; %bb.0:4506; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4507; GFX900-NEXT:    ;;#ASMSTART4508; GFX900-NEXT:    ; def v[0:1]4509; GFX900-NEXT:    ;;#ASMEND4510; GFX900-NEXT:    s_mov_b32 s4, 0x50401004511; GFX900-NEXT:    v_mov_b32_e32 v2, 04512; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s44513; GFX900-NEXT:    v_alignbit_b32 v0, v0, v0, 164514; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]4515; GFX900-NEXT:    s_waitcnt vmcnt(0)4516; GFX900-NEXT:    s_setpc_b64 s[30:31]4517;4518; GFX90A-LABEL: v_shuffle_v4i16_v3i16__4_3_3_3:4519; GFX90A:       ; %bb.0:4520; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4521; GFX90A-NEXT:    ;;#ASMSTART4522; GFX90A-NEXT:    ; def v[0:1]4523; GFX90A-NEXT:    ;;#ASMEND4524; GFX90A-NEXT:    s_mov_b32 s4, 0x50401004525; GFX90A-NEXT:    v_mov_b32_e32 v2, 04526; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s44527; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v0, 164528; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]4529; GFX90A-NEXT:    s_waitcnt vmcnt(0)4530; GFX90A-NEXT:    s_setpc_b64 s[30:31]4531;4532; GFX942-LABEL: v_shuffle_v4i16_v3i16__4_3_3_3:4533; GFX942:       ; %bb.0:4534; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4535; GFX942-NEXT:    ;;#ASMSTART4536; GFX942-NEXT:    ; def v[0:1]4537; GFX942-NEXT:    ;;#ASMEND4538; GFX942-NEXT:    s_mov_b32 s2, 0x50401004539; GFX942-NEXT:    v_mov_b32_e32 v2, 04540; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s24541; GFX942-NEXT:    v_alignbit_b32 v0, v0, v0, 164542; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]4543; GFX942-NEXT:    s_waitcnt vmcnt(0)4544; GFX942-NEXT:    s_setpc_b64 s[30:31]4545  %vec0 = call <4 x i16> asm "; def $0", "=v"()4546  %vec1 = call <4 x i16> asm "; def $0", "=v"()4547  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4548  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4549  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 4, i32 3, i32 3, i32 3>4550  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 84551  ret void4552}4553 4554define void @v_shuffle_v4i16_v3i16__5_3_3_3(ptr addrspace(1) inreg %ptr) {4555; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_3_3_3:4556; GFX900:       ; %bb.0:4557; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4558; GFX900-NEXT:    ;;#ASMSTART4559; GFX900-NEXT:    ; def v[0:1]4560; GFX900-NEXT:    ;;#ASMEND4561; GFX900-NEXT:    s_mov_b32 s4, 0x50401004562; GFX900-NEXT:    v_mov_b32_e32 v3, 04563; GFX900-NEXT:    v_perm_b32 v1, v0, v1, s44564; GFX900-NEXT:    v_perm_b32 v2, v0, v0, s44565; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]4566; GFX900-NEXT:    s_waitcnt vmcnt(0)4567; GFX900-NEXT:    s_setpc_b64 s[30:31]4568;4569; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_3_3_3:4570; GFX90A:       ; %bb.0:4571; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4572; GFX90A-NEXT:    s_mov_b32 s4, 0x50401004573; GFX90A-NEXT:    v_mov_b32_e32 v4, 04574; GFX90A-NEXT:    ;;#ASMSTART4575; GFX90A-NEXT:    ; def v[0:1]4576; GFX90A-NEXT:    ;;#ASMEND4577; GFX90A-NEXT:    v_perm_b32 v2, v0, v1, s44578; GFX90A-NEXT:    v_perm_b32 v3, v0, v0, s44579; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]4580; GFX90A-NEXT:    s_waitcnt vmcnt(0)4581; GFX90A-NEXT:    s_setpc_b64 s[30:31]4582;4583; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_3_3_3:4584; GFX942:       ; %bb.0:4585; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4586; GFX942-NEXT:    s_mov_b32 s2, 0x50401004587; GFX942-NEXT:    v_mov_b32_e32 v4, 04588; GFX942-NEXT:    ;;#ASMSTART4589; GFX942-NEXT:    ; def v[0:1]4590; GFX942-NEXT:    ;;#ASMEND4591; GFX942-NEXT:    s_nop 04592; GFX942-NEXT:    v_perm_b32 v2, v0, v1, s24593; GFX942-NEXT:    v_perm_b32 v3, v0, v0, s24594; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]4595; GFX942-NEXT:    s_waitcnt vmcnt(0)4596; GFX942-NEXT:    s_setpc_b64 s[30:31]4597  %vec0 = call <4 x i16> asm "; def $0", "=v"()4598  %vec1 = call <4 x i16> asm "; def $0", "=v"()4599  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4600  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4601  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 3, i32 3, i32 3>4602  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 84603  ret void4604}4605 4606define void @v_shuffle_v4i16_v3i16__5_u_3_3(ptr addrspace(1) inreg %ptr) {4607; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_u_3_3:4608; GFX900:       ; %bb.0:4609; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4610; GFX900-NEXT:    s_mov_b32 s4, 0x50401004611; GFX900-NEXT:    v_mov_b32_e32 v3, 04612; GFX900-NEXT:    ;;#ASMSTART4613; GFX900-NEXT:    ; def v[0:1]4614; GFX900-NEXT:    ;;#ASMEND4615; GFX900-NEXT:    v_perm_b32 v2, v0, v0, s44616; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]4617; GFX900-NEXT:    s_waitcnt vmcnt(0)4618; GFX900-NEXT:    s_setpc_b64 s[30:31]4619;4620; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_u_3_3:4621; GFX90A:       ; %bb.0:4622; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4623; GFX90A-NEXT:    s_mov_b32 s4, 0x50401004624; GFX90A-NEXT:    v_mov_b32_e32 v4, 04625; GFX90A-NEXT:    ;;#ASMSTART4626; GFX90A-NEXT:    ; def v[0:1]4627; GFX90A-NEXT:    ;;#ASMEND4628; GFX90A-NEXT:    v_perm_b32 v3, v0, v0, s44629; GFX90A-NEXT:    v_mov_b32_e32 v2, v14630; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]4631; GFX90A-NEXT:    s_waitcnt vmcnt(0)4632; GFX90A-NEXT:    s_setpc_b64 s[30:31]4633;4634; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_u_3_3:4635; GFX942:       ; %bb.0:4636; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4637; GFX942-NEXT:    s_mov_b32 s2, 0x50401004638; GFX942-NEXT:    v_mov_b32_e32 v4, 04639; GFX942-NEXT:    ;;#ASMSTART4640; GFX942-NEXT:    ; def v[0:1]4641; GFX942-NEXT:    ;;#ASMEND4642; GFX942-NEXT:    s_nop 04643; GFX942-NEXT:    v_perm_b32 v3, v0, v0, s24644; GFX942-NEXT:    v_mov_b32_e32 v2, v14645; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]4646; GFX942-NEXT:    s_waitcnt vmcnt(0)4647; GFX942-NEXT:    s_setpc_b64 s[30:31]4648  %vec0 = call <4 x i16> asm "; def $0", "=v"()4649  %vec1 = call <4 x i16> asm "; def $0", "=v"()4650  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4651  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4652  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 poison, i32 3, i32 3>4653  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 84654  ret void4655}4656 4657define void @v_shuffle_v4i16_v3i16__5_0_3_3(ptr addrspace(1) inreg %ptr) {4658; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_0_3_3:4659; GFX900:       ; %bb.0:4660; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4661; GFX900-NEXT:    ;;#ASMSTART4662; GFX900-NEXT:    ; def v[0:1]4663; GFX900-NEXT:    ;;#ASMEND4664; GFX900-NEXT:    ;;#ASMSTART4665; GFX900-NEXT:    ; def v[1:2]4666; GFX900-NEXT:    ;;#ASMEND4667; GFX900-NEXT:    s_mov_b32 s4, 0x50401004668; GFX900-NEXT:    v_mov_b32_e32 v3, 04669; GFX900-NEXT:    v_perm_b32 v0, v0, v2, s44670; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s44671; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]4672; GFX900-NEXT:    s_waitcnt vmcnt(0)4673; GFX900-NEXT:    s_setpc_b64 s[30:31]4674;4675; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_0_3_3:4676; GFX90A:       ; %bb.0:4677; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4678; GFX90A-NEXT:    ;;#ASMSTART4679; GFX90A-NEXT:    ; def v[0:1]4680; GFX90A-NEXT:    ;;#ASMEND4681; GFX90A-NEXT:    s_mov_b32 s4, 0x50401004682; GFX90A-NEXT:    v_mov_b32_e32 v4, 04683; GFX90A-NEXT:    ;;#ASMSTART4684; GFX90A-NEXT:    ; def v[2:3]4685; GFX90A-NEXT:    ;;#ASMEND4686; GFX90A-NEXT:    v_perm_b32 v0, v0, v3, s44687; GFX90A-NEXT:    v_perm_b32 v1, v2, v2, s44688; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]4689; GFX90A-NEXT:    s_waitcnt vmcnt(0)4690; GFX90A-NEXT:    s_setpc_b64 s[30:31]4691;4692; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_0_3_3:4693; GFX942:       ; %bb.0:4694; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4695; GFX942-NEXT:    ;;#ASMSTART4696; GFX942-NEXT:    ; def v[0:1]4697; GFX942-NEXT:    ;;#ASMEND4698; GFX942-NEXT:    s_mov_b32 s2, 0x50401004699; GFX942-NEXT:    v_mov_b32_e32 v4, 04700; GFX942-NEXT:    ;;#ASMSTART4701; GFX942-NEXT:    ; def v[2:3]4702; GFX942-NEXT:    ;;#ASMEND4703; GFX942-NEXT:    s_nop 04704; GFX942-NEXT:    v_perm_b32 v0, v0, v3, s24705; GFX942-NEXT:    v_perm_b32 v1, v2, v2, s24706; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]4707; GFX942-NEXT:    s_waitcnt vmcnt(0)4708; GFX942-NEXT:    s_setpc_b64 s[30:31]4709  %vec0 = call <4 x i16> asm "; def $0", "=v"()4710  %vec1 = call <4 x i16> asm "; def $0", "=v"()4711  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4712  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4713  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 0, i32 3, i32 3>4714  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 84715  ret void4716}4717 4718define void @v_shuffle_v4i16_v3i16__5_1_3_3(ptr addrspace(1) inreg %ptr) {4719; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_1_3_3:4720; GFX900:       ; %bb.0:4721; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4722; GFX900-NEXT:    ;;#ASMSTART4723; GFX900-NEXT:    ; def v[0:1]4724; GFX900-NEXT:    ;;#ASMEND4725; GFX900-NEXT:    s_mov_b32 s4, 0xffff4726; GFX900-NEXT:    ;;#ASMSTART4727; GFX900-NEXT:    ; def v[1:2]4728; GFX900-NEXT:    ;;#ASMEND4729; GFX900-NEXT:    v_bfi_b32 v0, s4, v2, v04730; GFX900-NEXT:    s_mov_b32 s4, 0x50401004731; GFX900-NEXT:    v_mov_b32_e32 v3, 04732; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s44733; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]4734; GFX900-NEXT:    s_waitcnt vmcnt(0)4735; GFX900-NEXT:    s_setpc_b64 s[30:31]4736;4737; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_1_3_3:4738; GFX90A:       ; %bb.0:4739; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4740; GFX90A-NEXT:    ;;#ASMSTART4741; GFX90A-NEXT:    ; def v[0:1]4742; GFX90A-NEXT:    ;;#ASMEND4743; GFX90A-NEXT:    s_mov_b32 s4, 0xffff4744; GFX90A-NEXT:    ;;#ASMSTART4745; GFX90A-NEXT:    ; def v[2:3]4746; GFX90A-NEXT:    ;;#ASMEND4747; GFX90A-NEXT:    v_bfi_b32 v0, s4, v3, v04748; GFX90A-NEXT:    s_mov_b32 s4, 0x50401004749; GFX90A-NEXT:    v_mov_b32_e32 v4, 04750; GFX90A-NEXT:    v_perm_b32 v1, v2, v2, s44751; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]4752; GFX90A-NEXT:    s_waitcnt vmcnt(0)4753; GFX90A-NEXT:    s_setpc_b64 s[30:31]4754;4755; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_1_3_3:4756; GFX942:       ; %bb.0:4757; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4758; GFX942-NEXT:    ;;#ASMSTART4759; GFX942-NEXT:    ; def v[0:1]4760; GFX942-NEXT:    ;;#ASMEND4761; GFX942-NEXT:    s_mov_b32 s2, 0xffff4762; GFX942-NEXT:    ;;#ASMSTART4763; GFX942-NEXT:    ; def v[2:3]4764; GFX942-NEXT:    ;;#ASMEND4765; GFX942-NEXT:    v_mov_b32_e32 v4, 04766; GFX942-NEXT:    v_bfi_b32 v0, s2, v3, v04767; GFX942-NEXT:    s_mov_b32 s2, 0x50401004768; GFX942-NEXT:    v_perm_b32 v1, v2, v2, s24769; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]4770; GFX942-NEXT:    s_waitcnt vmcnt(0)4771; GFX942-NEXT:    s_setpc_b64 s[30:31]4772  %vec0 = call <4 x i16> asm "; def $0", "=v"()4773  %vec1 = call <4 x i16> asm "; def $0", "=v"()4774  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4775  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4776  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 1, i32 3, i32 3>4777  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 84778  ret void4779}4780 4781define void @v_shuffle_v4i16_v3i16__5_2_3_3(ptr addrspace(1) inreg %ptr) {4782; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_2_3_3:4783; GFX900:       ; %bb.0:4784; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4785; GFX900-NEXT:    ;;#ASMSTART4786; GFX900-NEXT:    ; def v[0:1]4787; GFX900-NEXT:    ;;#ASMEND4788; GFX900-NEXT:    s_mov_b32 s4, 0x50401004789; GFX900-NEXT:    v_mov_b32_e32 v4, 04790; GFX900-NEXT:    ;;#ASMSTART4791; GFX900-NEXT:    ; def v[2:3]4792; GFX900-NEXT:    ;;#ASMEND4793; GFX900-NEXT:    v_perm_b32 v0, v1, v3, s44794; GFX900-NEXT:    v_perm_b32 v1, v2, v2, s44795; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]4796; GFX900-NEXT:    s_waitcnt vmcnt(0)4797; GFX900-NEXT:    s_setpc_b64 s[30:31]4798;4799; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_2_3_3:4800; GFX90A:       ; %bb.0:4801; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4802; GFX90A-NEXT:    ;;#ASMSTART4803; GFX90A-NEXT:    ; def v[0:1]4804; GFX90A-NEXT:    ;;#ASMEND4805; GFX90A-NEXT:    s_mov_b32 s4, 0x50401004806; GFX90A-NEXT:    v_mov_b32_e32 v4, 04807; GFX90A-NEXT:    ;;#ASMSTART4808; GFX90A-NEXT:    ; def v[2:3]4809; GFX90A-NEXT:    ;;#ASMEND4810; GFX90A-NEXT:    v_perm_b32 v0, v1, v3, s44811; GFX90A-NEXT:    v_perm_b32 v1, v2, v2, s44812; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]4813; GFX90A-NEXT:    s_waitcnt vmcnt(0)4814; GFX90A-NEXT:    s_setpc_b64 s[30:31]4815;4816; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_2_3_3:4817; GFX942:       ; %bb.0:4818; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4819; GFX942-NEXT:    ;;#ASMSTART4820; GFX942-NEXT:    ; def v[0:1]4821; GFX942-NEXT:    ;;#ASMEND4822; GFX942-NEXT:    s_mov_b32 s2, 0x50401004823; GFX942-NEXT:    v_mov_b32_e32 v4, 04824; GFX942-NEXT:    ;;#ASMSTART4825; GFX942-NEXT:    ; def v[2:3]4826; GFX942-NEXT:    ;;#ASMEND4827; GFX942-NEXT:    s_nop 04828; GFX942-NEXT:    v_perm_b32 v0, v1, v3, s24829; GFX942-NEXT:    v_perm_b32 v1, v2, v2, s24830; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]4831; GFX942-NEXT:    s_waitcnt vmcnt(0)4832; GFX942-NEXT:    s_setpc_b64 s[30:31]4833  %vec0 = call <4 x i16> asm "; def $0", "=v"()4834  %vec1 = call <4 x i16> asm "; def $0", "=v"()4835  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4836  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4837  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 2, i32 3, i32 3>4838  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 84839  ret void4840}4841 4842define void @v_shuffle_v4i16_v3i16__5_4_3_3(ptr addrspace(1) inreg %ptr) {4843; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_4_3_3:4844; GFX900:       ; %bb.0:4845; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4846; GFX900-NEXT:    ;;#ASMSTART4847; GFX900-NEXT:    ; def v[0:1]4848; GFX900-NEXT:    ;;#ASMEND4849; GFX900-NEXT:    s_mov_b32 s4, 0xffff4850; GFX900-NEXT:    v_bfi_b32 v1, s4, v1, v04851; GFX900-NEXT:    s_mov_b32 s4, 0x50401004852; GFX900-NEXT:    v_mov_b32_e32 v3, 04853; GFX900-NEXT:    v_perm_b32 v2, v0, v0, s44854; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]4855; GFX900-NEXT:    s_waitcnt vmcnt(0)4856; GFX900-NEXT:    s_setpc_b64 s[30:31]4857;4858; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_4_3_3:4859; GFX90A:       ; %bb.0:4860; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4861; GFX90A-NEXT:    s_mov_b32 s4, 0xffff4862; GFX90A-NEXT:    ;;#ASMSTART4863; GFX90A-NEXT:    ; def v[0:1]4864; GFX90A-NEXT:    ;;#ASMEND4865; GFX90A-NEXT:    v_bfi_b32 v2, s4, v1, v04866; GFX90A-NEXT:    s_mov_b32 s4, 0x50401004867; GFX90A-NEXT:    v_mov_b32_e32 v4, 04868; GFX90A-NEXT:    v_perm_b32 v3, v0, v0, s44869; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]4870; GFX90A-NEXT:    s_waitcnt vmcnt(0)4871; GFX90A-NEXT:    s_setpc_b64 s[30:31]4872;4873; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_4_3_3:4874; GFX942:       ; %bb.0:4875; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4876; GFX942-NEXT:    s_mov_b32 s2, 0xffff4877; GFX942-NEXT:    ;;#ASMSTART4878; GFX942-NEXT:    ; def v[0:1]4879; GFX942-NEXT:    ;;#ASMEND4880; GFX942-NEXT:    v_mov_b32_e32 v4, 04881; GFX942-NEXT:    v_bfi_b32 v2, s2, v1, v04882; GFX942-NEXT:    s_mov_b32 s2, 0x50401004883; GFX942-NEXT:    v_perm_b32 v3, v0, v0, s24884; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]4885; GFX942-NEXT:    s_waitcnt vmcnt(0)4886; GFX942-NEXT:    s_setpc_b64 s[30:31]4887  %vec0 = call <4 x i16> asm "; def $0", "=v"()4888  %vec1 = call <4 x i16> asm "; def $0", "=v"()4889  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4890  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4891  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 4, i32 3, i32 3>4892  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 84893  ret void4894}4895 4896define void @v_shuffle_v4i16_v3i16__5_5_3_3(ptr addrspace(1) inreg %ptr) {4897; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_3_3:4898; GFX900:       ; %bb.0:4899; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4900; GFX900-NEXT:    ;;#ASMSTART4901; GFX900-NEXT:    ; def v[0:1]4902; GFX900-NEXT:    ;;#ASMEND4903; GFX900-NEXT:    s_mov_b32 s4, 0x50401004904; GFX900-NEXT:    v_mov_b32_e32 v3, 04905; GFX900-NEXT:    v_perm_b32 v2, v0, v0, s44906; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s44907; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]4908; GFX900-NEXT:    s_waitcnt vmcnt(0)4909; GFX900-NEXT:    s_setpc_b64 s[30:31]4910;4911; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_3_3:4912; GFX90A:       ; %bb.0:4913; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4914; GFX90A-NEXT:    s_mov_b32 s4, 0x50401004915; GFX90A-NEXT:    v_mov_b32_e32 v4, 04916; GFX90A-NEXT:    ;;#ASMSTART4917; GFX90A-NEXT:    ; def v[0:1]4918; GFX90A-NEXT:    ;;#ASMEND4919; GFX90A-NEXT:    v_perm_b32 v3, v0, v0, s44920; GFX90A-NEXT:    v_perm_b32 v2, v1, v1, s44921; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]4922; GFX90A-NEXT:    s_waitcnt vmcnt(0)4923; GFX90A-NEXT:    s_setpc_b64 s[30:31]4924;4925; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_3_3:4926; GFX942:       ; %bb.0:4927; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4928; GFX942-NEXT:    s_mov_b32 s2, 0x50401004929; GFX942-NEXT:    v_mov_b32_e32 v4, 04930; GFX942-NEXT:    ;;#ASMSTART4931; GFX942-NEXT:    ; def v[0:1]4932; GFX942-NEXT:    ;;#ASMEND4933; GFX942-NEXT:    s_nop 04934; GFX942-NEXT:    v_perm_b32 v3, v0, v0, s24935; GFX942-NEXT:    v_perm_b32 v2, v1, v1, s24936; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]4937; GFX942-NEXT:    s_waitcnt vmcnt(0)4938; GFX942-NEXT:    s_setpc_b64 s[30:31]4939  %vec0 = call <4 x i16> asm "; def $0", "=v"()4940  %vec1 = call <4 x i16> asm "; def $0", "=v"()4941  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4942  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4943  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 3, i32 3>4944  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 84945  ret void4946}4947 4948define void @v_shuffle_v4i16_v3i16__5_5_u_3(ptr addrspace(1) inreg %ptr) {4949; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_u_3:4950; GFX900:       ; %bb.0:4951; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4952; GFX900-NEXT:    ;;#ASMSTART4953; GFX900-NEXT:    ; def v[0:1]4954; GFX900-NEXT:    ;;#ASMEND4955; GFX900-NEXT:    s_mov_b32 s4, 0x50401004956; GFX900-NEXT:    v_mov_b32_e32 v3, 04957; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s44958; GFX900-NEXT:    v_lshlrev_b32_e32 v2, 16, v04959; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]4960; GFX900-NEXT:    s_waitcnt vmcnt(0)4961; GFX900-NEXT:    s_setpc_b64 s[30:31]4962;4963; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_u_3:4964; GFX90A:       ; %bb.0:4965; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4966; GFX90A-NEXT:    s_mov_b32 s4, 0x50401004967; GFX90A-NEXT:    v_mov_b32_e32 v4, 04968; GFX90A-NEXT:    ;;#ASMSTART4969; GFX90A-NEXT:    ; def v[0:1]4970; GFX90A-NEXT:    ;;#ASMEND4971; GFX90A-NEXT:    v_perm_b32 v2, v1, v1, s44972; GFX90A-NEXT:    v_lshlrev_b32_e32 v3, 16, v04973; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]4974; GFX90A-NEXT:    s_waitcnt vmcnt(0)4975; GFX90A-NEXT:    s_setpc_b64 s[30:31]4976;4977; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_u_3:4978; GFX942:       ; %bb.0:4979; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4980; GFX942-NEXT:    s_mov_b32 s2, 0x50401004981; GFX942-NEXT:    v_mov_b32_e32 v4, 04982; GFX942-NEXT:    ;;#ASMSTART4983; GFX942-NEXT:    ; def v[0:1]4984; GFX942-NEXT:    ;;#ASMEND4985; GFX942-NEXT:    s_nop 04986; GFX942-NEXT:    v_perm_b32 v2, v1, v1, s24987; GFX942-NEXT:    v_lshlrev_b32_e32 v3, 16, v04988; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]4989; GFX942-NEXT:    s_waitcnt vmcnt(0)4990; GFX942-NEXT:    s_setpc_b64 s[30:31]4991  %vec0 = call <4 x i16> asm "; def $0", "=v"()4992  %vec1 = call <4 x i16> asm "; def $0", "=v"()4993  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4994  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>4995  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 poison, i32 3>4996  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 84997  ret void4998}4999 5000define void @v_shuffle_v4i16_v3i16__5_5_0_3(ptr addrspace(1) inreg %ptr) {5001; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_0_3:5002; GFX900:       ; %bb.0:5003; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5004; GFX900-NEXT:    ;;#ASMSTART5005; GFX900-NEXT:    ; def v[0:1]5006; GFX900-NEXT:    ;;#ASMEND5007; GFX900-NEXT:    ;;#ASMSTART5008; GFX900-NEXT:    ; def v[1:2]5009; GFX900-NEXT:    ;;#ASMEND5010; GFX900-NEXT:    s_mov_b32 s4, 0x50401005011; GFX900-NEXT:    v_mov_b32_e32 v3, 05012; GFX900-NEXT:    v_perm_b32 v1, v1, v0, s45013; GFX900-NEXT:    v_perm_b32 v0, v2, v2, s45014; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]5015; GFX900-NEXT:    s_waitcnt vmcnt(0)5016; GFX900-NEXT:    s_setpc_b64 s[30:31]5017;5018; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_0_3:5019; GFX90A:       ; %bb.0:5020; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5021; GFX90A-NEXT:    ;;#ASMSTART5022; GFX90A-NEXT:    ; def v[0:1]5023; GFX90A-NEXT:    ;;#ASMEND5024; GFX90A-NEXT:    s_mov_b32 s4, 0x50401005025; GFX90A-NEXT:    v_mov_b32_e32 v4, 05026; GFX90A-NEXT:    ;;#ASMSTART5027; GFX90A-NEXT:    ; def v[2:3]5028; GFX90A-NEXT:    ;;#ASMEND5029; GFX90A-NEXT:    v_perm_b32 v1, v2, v0, s45030; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s45031; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]5032; GFX90A-NEXT:    s_waitcnt vmcnt(0)5033; GFX90A-NEXT:    s_setpc_b64 s[30:31]5034;5035; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_0_3:5036; GFX942:       ; %bb.0:5037; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5038; GFX942-NEXT:    ;;#ASMSTART5039; GFX942-NEXT:    ; def v[0:1]5040; GFX942-NEXT:    ;;#ASMEND5041; GFX942-NEXT:    s_mov_b32 s2, 0x50401005042; GFX942-NEXT:    v_mov_b32_e32 v4, 05043; GFX942-NEXT:    ;;#ASMSTART5044; GFX942-NEXT:    ; def v[2:3]5045; GFX942-NEXT:    ;;#ASMEND5046; GFX942-NEXT:    s_nop 05047; GFX942-NEXT:    v_perm_b32 v1, v2, v0, s25048; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s25049; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]5050; GFX942-NEXT:    s_waitcnt vmcnt(0)5051; GFX942-NEXT:    s_setpc_b64 s[30:31]5052  %vec0 = call <4 x i16> asm "; def $0", "=v"()5053  %vec1 = call <4 x i16> asm "; def $0", "=v"()5054  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5055  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5056  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 0, i32 3>5057  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 85058  ret void5059}5060 5061define void @v_shuffle_v4i16_v3i16__5_5_1_3(ptr addrspace(1) inreg %ptr) {5062; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_1_3:5063; GFX900:       ; %bb.0:5064; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5065; GFX900-NEXT:    ;;#ASMSTART5066; GFX900-NEXT:    ; def v[0:1]5067; GFX900-NEXT:    ;;#ASMEND5068; GFX900-NEXT:    ;;#ASMSTART5069; GFX900-NEXT:    ; def v[1:2]5070; GFX900-NEXT:    ;;#ASMEND5071; GFX900-NEXT:    s_mov_b32 s4, 0x50401005072; GFX900-NEXT:    v_mov_b32_e32 v3, 05073; GFX900-NEXT:    v_alignbit_b32 v1, v1, v0, 165074; GFX900-NEXT:    v_perm_b32 v0, v2, v2, s45075; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]5076; GFX900-NEXT:    s_waitcnt vmcnt(0)5077; GFX900-NEXT:    s_setpc_b64 s[30:31]5078;5079; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_1_3:5080; GFX90A:       ; %bb.0:5081; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5082; GFX90A-NEXT:    ;;#ASMSTART5083; GFX90A-NEXT:    ; def v[0:1]5084; GFX90A-NEXT:    ;;#ASMEND5085; GFX90A-NEXT:    s_mov_b32 s4, 0x50401005086; GFX90A-NEXT:    v_mov_b32_e32 v4, 05087; GFX90A-NEXT:    ;;#ASMSTART5088; GFX90A-NEXT:    ; def v[2:3]5089; GFX90A-NEXT:    ;;#ASMEND5090; GFX90A-NEXT:    v_alignbit_b32 v1, v2, v0, 165091; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s45092; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]5093; GFX90A-NEXT:    s_waitcnt vmcnt(0)5094; GFX90A-NEXT:    s_setpc_b64 s[30:31]5095;5096; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_1_3:5097; GFX942:       ; %bb.0:5098; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5099; GFX942-NEXT:    ;;#ASMSTART5100; GFX942-NEXT:    ; def v[0:1]5101; GFX942-NEXT:    ;;#ASMEND5102; GFX942-NEXT:    s_mov_b32 s2, 0x50401005103; GFX942-NEXT:    v_mov_b32_e32 v4, 05104; GFX942-NEXT:    ;;#ASMSTART5105; GFX942-NEXT:    ; def v[2:3]5106; GFX942-NEXT:    ;;#ASMEND5107; GFX942-NEXT:    s_nop 05108; GFX942-NEXT:    v_alignbit_b32 v1, v2, v0, 165109; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s25110; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]5111; GFX942-NEXT:    s_waitcnt vmcnt(0)5112; GFX942-NEXT:    s_setpc_b64 s[30:31]5113  %vec0 = call <4 x i16> asm "; def $0", "=v"()5114  %vec1 = call <4 x i16> asm "; def $0", "=v"()5115  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5116  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5117  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 1, i32 3>5118  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 85119  ret void5120}5121 5122define void @v_shuffle_v4i16_v3i16__5_5_2_3(ptr addrspace(1) inreg %ptr) {5123; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_2_3:5124; GFX900:       ; %bb.0:5125; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5126; GFX900-NEXT:    ;;#ASMSTART5127; GFX900-NEXT:    ; def v[0:1]5128; GFX900-NEXT:    ;;#ASMEND5129; GFX900-NEXT:    s_mov_b32 s4, 0x50401005130; GFX900-NEXT:    v_mov_b32_e32 v4, 05131; GFX900-NEXT:    ;;#ASMSTART5132; GFX900-NEXT:    ; def v[2:3]5133; GFX900-NEXT:    ;;#ASMEND5134; GFX900-NEXT:    v_perm_b32 v1, v2, v1, s45135; GFX900-NEXT:    v_perm_b32 v0, v3, v3, s45136; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]5137; GFX900-NEXT:    s_waitcnt vmcnt(0)5138; GFX900-NEXT:    s_setpc_b64 s[30:31]5139;5140; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_2_3:5141; GFX90A:       ; %bb.0:5142; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5143; GFX90A-NEXT:    ;;#ASMSTART5144; GFX90A-NEXT:    ; def v[0:1]5145; GFX90A-NEXT:    ;;#ASMEND5146; GFX90A-NEXT:    s_mov_b32 s4, 0x50401005147; GFX90A-NEXT:    v_mov_b32_e32 v4, 05148; GFX90A-NEXT:    ;;#ASMSTART5149; GFX90A-NEXT:    ; def v[2:3]5150; GFX90A-NEXT:    ;;#ASMEND5151; GFX90A-NEXT:    v_perm_b32 v1, v2, v1, s45152; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s45153; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]5154; GFX90A-NEXT:    s_waitcnt vmcnt(0)5155; GFX90A-NEXT:    s_setpc_b64 s[30:31]5156;5157; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_2_3:5158; GFX942:       ; %bb.0:5159; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5160; GFX942-NEXT:    ;;#ASMSTART5161; GFX942-NEXT:    ; def v[0:1]5162; GFX942-NEXT:    ;;#ASMEND5163; GFX942-NEXT:    s_mov_b32 s2, 0x50401005164; GFX942-NEXT:    v_mov_b32_e32 v4, 05165; GFX942-NEXT:    ;;#ASMSTART5166; GFX942-NEXT:    ; def v[2:3]5167; GFX942-NEXT:    ;;#ASMEND5168; GFX942-NEXT:    s_nop 05169; GFX942-NEXT:    v_perm_b32 v1, v2, v1, s25170; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s25171; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]5172; GFX942-NEXT:    s_waitcnt vmcnt(0)5173; GFX942-NEXT:    s_setpc_b64 s[30:31]5174  %vec0 = call <4 x i16> asm "; def $0", "=v"()5175  %vec1 = call <4 x i16> asm "; def $0", "=v"()5176  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5177  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5178  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 2, i32 3>5179  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 85180  ret void5181}5182 5183define void @v_shuffle_v4i16_v3i16__5_5_4_3(ptr addrspace(1) inreg %ptr) {5184; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_4_3:5185; GFX900:       ; %bb.0:5186; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5187; GFX900-NEXT:    ;;#ASMSTART5188; GFX900-NEXT:    ; def v[0:1]5189; GFX900-NEXT:    ;;#ASMEND5190; GFX900-NEXT:    s_mov_b32 s4, 0x50401005191; GFX900-NEXT:    v_mov_b32_e32 v3, 05192; GFX900-NEXT:    v_alignbit_b32 v2, v0, v0, 165193; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s45194; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]5195; GFX900-NEXT:    s_waitcnt vmcnt(0)5196; GFX900-NEXT:    s_setpc_b64 s[30:31]5197;5198; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_4_3:5199; GFX90A:       ; %bb.0:5200; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5201; GFX90A-NEXT:    s_mov_b32 s4, 0x50401005202; GFX90A-NEXT:    v_mov_b32_e32 v4, 05203; GFX90A-NEXT:    ;;#ASMSTART5204; GFX90A-NEXT:    ; def v[0:1]5205; GFX90A-NEXT:    ;;#ASMEND5206; GFX90A-NEXT:    v_alignbit_b32 v3, v0, v0, 165207; GFX90A-NEXT:    v_perm_b32 v2, v1, v1, s45208; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]5209; GFX90A-NEXT:    s_waitcnt vmcnt(0)5210; GFX90A-NEXT:    s_setpc_b64 s[30:31]5211;5212; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_4_3:5213; GFX942:       ; %bb.0:5214; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5215; GFX942-NEXT:    s_mov_b32 s2, 0x50401005216; GFX942-NEXT:    v_mov_b32_e32 v4, 05217; GFX942-NEXT:    ;;#ASMSTART5218; GFX942-NEXT:    ; def v[0:1]5219; GFX942-NEXT:    ;;#ASMEND5220; GFX942-NEXT:    s_nop 05221; GFX942-NEXT:    v_alignbit_b32 v3, v0, v0, 165222; GFX942-NEXT:    v_perm_b32 v2, v1, v1, s25223; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]5224; GFX942-NEXT:    s_waitcnt vmcnt(0)5225; GFX942-NEXT:    s_setpc_b64 s[30:31]5226  %vec0 = call <4 x i16> asm "; def $0", "=v"()5227  %vec1 = call <4 x i16> asm "; def $0", "=v"()5228  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5229  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5230  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 4, i32 3>5231  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 85232  ret void5233}5234 5235define void @v_shuffle_v4i16_v3i16__u_4_4_4(ptr addrspace(1) inreg %ptr) {5236; GFX900-LABEL: v_shuffle_v4i16_v3i16__u_4_4_4:5237; GFX900:       ; %bb.0:5238; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5239; GFX900-NEXT:    ;;#ASMSTART5240; GFX900-NEXT:    ; def v[0:1]5241; GFX900-NEXT:    ;;#ASMEND5242; GFX900-NEXT:    s_mov_b32 s4, 0x70603025243; GFX900-NEXT:    v_mov_b32_e32 v2, 05244; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s45245; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]5246; GFX900-NEXT:    s_waitcnt vmcnt(0)5247; GFX900-NEXT:    s_setpc_b64 s[30:31]5248;5249; GFX90A-LABEL: v_shuffle_v4i16_v3i16__u_4_4_4:5250; GFX90A:       ; %bb.0:5251; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5252; GFX90A-NEXT:    ;;#ASMSTART5253; GFX90A-NEXT:    ; def v[0:1]5254; GFX90A-NEXT:    ;;#ASMEND5255; GFX90A-NEXT:    s_mov_b32 s4, 0x70603025256; GFX90A-NEXT:    v_mov_b32_e32 v2, 05257; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s45258; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]5259; GFX90A-NEXT:    s_waitcnt vmcnt(0)5260; GFX90A-NEXT:    s_setpc_b64 s[30:31]5261;5262; GFX942-LABEL: v_shuffle_v4i16_v3i16__u_4_4_4:5263; GFX942:       ; %bb.0:5264; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5265; GFX942-NEXT:    ;;#ASMSTART5266; GFX942-NEXT:    ; def v[0:1]5267; GFX942-NEXT:    ;;#ASMEND5268; GFX942-NEXT:    s_mov_b32 s2, 0x70603025269; GFX942-NEXT:    v_mov_b32_e32 v2, 05270; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s25271; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]5272; GFX942-NEXT:    s_waitcnt vmcnt(0)5273; GFX942-NEXT:    s_setpc_b64 s[30:31]5274  %vec0 = call <4 x i16> asm "; def $0", "=v"()5275  %vec1 = call <4 x i16> asm "; def $0", "=v"()5276  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5277  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5278  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 poison, i32 4, i32 4, i32 4>5279  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 85280  ret void5281}5282 5283define void @v_shuffle_v4i16_v3i16__0_4_4_4(ptr addrspace(1) inreg %ptr) {5284; GFX900-LABEL: v_shuffle_v4i16_v3i16__0_4_4_4:5285; GFX900:       ; %bb.0:5286; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5287; GFX900-NEXT:    ;;#ASMSTART5288; GFX900-NEXT:    ; def v[0:1]5289; GFX900-NEXT:    ;;#ASMEND5290; GFX900-NEXT:    s_mov_b32 s4, 0xffff5291; GFX900-NEXT:    ;;#ASMSTART5292; GFX900-NEXT:    ; def v[1:2]5293; GFX900-NEXT:    ;;#ASMEND5294; GFX900-NEXT:    v_bfi_b32 v0, s4, v0, v15295; GFX900-NEXT:    s_mov_b32 s4, 0x70603025296; GFX900-NEXT:    v_mov_b32_e32 v3, 05297; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s45298; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]5299; GFX900-NEXT:    s_waitcnt vmcnt(0)5300; GFX900-NEXT:    s_setpc_b64 s[30:31]5301;5302; GFX90A-LABEL: v_shuffle_v4i16_v3i16__0_4_4_4:5303; GFX90A:       ; %bb.0:5304; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5305; GFX90A-NEXT:    ;;#ASMSTART5306; GFX90A-NEXT:    ; def v[0:1]5307; GFX90A-NEXT:    ;;#ASMEND5308; GFX90A-NEXT:    s_mov_b32 s4, 0xffff5309; GFX90A-NEXT:    ;;#ASMSTART5310; GFX90A-NEXT:    ; def v[2:3]5311; GFX90A-NEXT:    ;;#ASMEND5312; GFX90A-NEXT:    v_bfi_b32 v0, s4, v0, v25313; GFX90A-NEXT:    s_mov_b32 s4, 0x70603025314; GFX90A-NEXT:    v_mov_b32_e32 v4, 05315; GFX90A-NEXT:    v_perm_b32 v1, v2, v2, s45316; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]5317; GFX90A-NEXT:    s_waitcnt vmcnt(0)5318; GFX90A-NEXT:    s_setpc_b64 s[30:31]5319;5320; GFX942-LABEL: v_shuffle_v4i16_v3i16__0_4_4_4:5321; GFX942:       ; %bb.0:5322; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5323; GFX942-NEXT:    ;;#ASMSTART5324; GFX942-NEXT:    ; def v[0:1]5325; GFX942-NEXT:    ;;#ASMEND5326; GFX942-NEXT:    s_mov_b32 s2, 0xffff5327; GFX942-NEXT:    ;;#ASMSTART5328; GFX942-NEXT:    ; def v[2:3]5329; GFX942-NEXT:    ;;#ASMEND5330; GFX942-NEXT:    v_mov_b32_e32 v4, 05331; GFX942-NEXT:    v_bfi_b32 v0, s2, v0, v25332; GFX942-NEXT:    s_mov_b32 s2, 0x70603025333; GFX942-NEXT:    v_perm_b32 v1, v2, v2, s25334; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]5335; GFX942-NEXT:    s_waitcnt vmcnt(0)5336; GFX942-NEXT:    s_setpc_b64 s[30:31]5337  %vec0 = call <4 x i16> asm "; def $0", "=v"()5338  %vec1 = call <4 x i16> asm "; def $0", "=v"()5339  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5340  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5341  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 0, i32 4, i32 4, i32 4>5342  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 85343  ret void5344}5345 5346define void @v_shuffle_v4i16_v3i16__1_4_4_4(ptr addrspace(1) inreg %ptr) {5347; GFX900-LABEL: v_shuffle_v4i16_v3i16__1_4_4_4:5348; GFX900:       ; %bb.0:5349; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5350; GFX900-NEXT:    ;;#ASMSTART5351; GFX900-NEXT:    ; def v[0:1]5352; GFX900-NEXT:    ;;#ASMEND5353; GFX900-NEXT:    ;;#ASMSTART5354; GFX900-NEXT:    ; def v[1:2]5355; GFX900-NEXT:    ;;#ASMEND5356; GFX900-NEXT:    s_mov_b32 s4, 0x70603025357; GFX900-NEXT:    v_mov_b32_e32 v3, 05358; GFX900-NEXT:    v_perm_b32 v0, v1, v0, s45359; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s45360; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]5361; GFX900-NEXT:    s_waitcnt vmcnt(0)5362; GFX900-NEXT:    s_setpc_b64 s[30:31]5363;5364; GFX90A-LABEL: v_shuffle_v4i16_v3i16__1_4_4_4:5365; GFX90A:       ; %bb.0:5366; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5367; GFX90A-NEXT:    ;;#ASMSTART5368; GFX90A-NEXT:    ; def v[0:1]5369; GFX90A-NEXT:    ;;#ASMEND5370; GFX90A-NEXT:    s_mov_b32 s4, 0x70603025371; GFX90A-NEXT:    v_mov_b32_e32 v4, 05372; GFX90A-NEXT:    ;;#ASMSTART5373; GFX90A-NEXT:    ; def v[2:3]5374; GFX90A-NEXT:    ;;#ASMEND5375; GFX90A-NEXT:    v_perm_b32 v0, v2, v0, s45376; GFX90A-NEXT:    v_perm_b32 v1, v2, v2, s45377; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]5378; GFX90A-NEXT:    s_waitcnt vmcnt(0)5379; GFX90A-NEXT:    s_setpc_b64 s[30:31]5380;5381; GFX942-LABEL: v_shuffle_v4i16_v3i16__1_4_4_4:5382; GFX942:       ; %bb.0:5383; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5384; GFX942-NEXT:    ;;#ASMSTART5385; GFX942-NEXT:    ; def v[0:1]5386; GFX942-NEXT:    ;;#ASMEND5387; GFX942-NEXT:    s_mov_b32 s2, 0x70603025388; GFX942-NEXT:    v_mov_b32_e32 v4, 05389; GFX942-NEXT:    ;;#ASMSTART5390; GFX942-NEXT:    ; def v[2:3]5391; GFX942-NEXT:    ;;#ASMEND5392; GFX942-NEXT:    s_nop 05393; GFX942-NEXT:    v_perm_b32 v0, v2, v0, s25394; GFX942-NEXT:    v_perm_b32 v1, v2, v2, s25395; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]5396; GFX942-NEXT:    s_waitcnt vmcnt(0)5397; GFX942-NEXT:    s_setpc_b64 s[30:31]5398  %vec0 = call <4 x i16> asm "; def $0", "=v"()5399  %vec1 = call <4 x i16> asm "; def $0", "=v"()5400  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5401  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5402  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 1, i32 4, i32 4, i32 4>5403  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 85404  ret void5405}5406 5407define void @v_shuffle_v4i16_v3i16__2_4_4_4(ptr addrspace(1) inreg %ptr) {5408; GFX900-LABEL: v_shuffle_v4i16_v3i16__2_4_4_4:5409; GFX900:       ; %bb.0:5410; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5411; GFX900-NEXT:    ;;#ASMSTART5412; GFX900-NEXT:    ; def v[0:1]5413; GFX900-NEXT:    ;;#ASMEND5414; GFX900-NEXT:    s_mov_b32 s4, 0xffff5415; GFX900-NEXT:    ;;#ASMSTART5416; GFX900-NEXT:    ; def v[2:3]5417; GFX900-NEXT:    ;;#ASMEND5418; GFX900-NEXT:    v_bfi_b32 v0, s4, v1, v25419; GFX900-NEXT:    s_mov_b32 s4, 0x70603025420; GFX900-NEXT:    v_mov_b32_e32 v4, 05421; GFX900-NEXT:    v_perm_b32 v1, v2, v2, s45422; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]5423; GFX900-NEXT:    s_waitcnt vmcnt(0)5424; GFX900-NEXT:    s_setpc_b64 s[30:31]5425;5426; GFX90A-LABEL: v_shuffle_v4i16_v3i16__2_4_4_4:5427; GFX90A:       ; %bb.0:5428; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5429; GFX90A-NEXT:    ;;#ASMSTART5430; GFX90A-NEXT:    ; def v[0:1]5431; GFX90A-NEXT:    ;;#ASMEND5432; GFX90A-NEXT:    s_mov_b32 s4, 0xffff5433; GFX90A-NEXT:    ;;#ASMSTART5434; GFX90A-NEXT:    ; def v[2:3]5435; GFX90A-NEXT:    ;;#ASMEND5436; GFX90A-NEXT:    v_bfi_b32 v0, s4, v1, v25437; GFX90A-NEXT:    s_mov_b32 s4, 0x70603025438; GFX90A-NEXT:    v_mov_b32_e32 v4, 05439; GFX90A-NEXT:    v_perm_b32 v1, v2, v2, s45440; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]5441; GFX90A-NEXT:    s_waitcnt vmcnt(0)5442; GFX90A-NEXT:    s_setpc_b64 s[30:31]5443;5444; GFX942-LABEL: v_shuffle_v4i16_v3i16__2_4_4_4:5445; GFX942:       ; %bb.0:5446; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5447; GFX942-NEXT:    ;;#ASMSTART5448; GFX942-NEXT:    ; def v[0:1]5449; GFX942-NEXT:    ;;#ASMEND5450; GFX942-NEXT:    s_mov_b32 s2, 0xffff5451; GFX942-NEXT:    ;;#ASMSTART5452; GFX942-NEXT:    ; def v[2:3]5453; GFX942-NEXT:    ;;#ASMEND5454; GFX942-NEXT:    v_mov_b32_e32 v4, 05455; GFX942-NEXT:    v_bfi_b32 v0, s2, v1, v25456; GFX942-NEXT:    s_mov_b32 s2, 0x70603025457; GFX942-NEXT:    v_perm_b32 v1, v2, v2, s25458; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]5459; GFX942-NEXT:    s_waitcnt vmcnt(0)5460; GFX942-NEXT:    s_setpc_b64 s[30:31]5461  %vec0 = call <4 x i16> asm "; def $0", "=v"()5462  %vec1 = call <4 x i16> asm "; def $0", "=v"()5463  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5464  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5465  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 2, i32 4, i32 4, i32 4>5466  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 85467  ret void5468}5469 5470define void @v_shuffle_v4i16_v3i16__3_4_4_4(ptr addrspace(1) inreg %ptr) {5471; GFX900-LABEL: v_shuffle_v4i16_v3i16__3_4_4_4:5472; GFX900:       ; %bb.0:5473; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5474; GFX900-NEXT:    ;;#ASMSTART5475; GFX900-NEXT:    ; def v[0:1]5476; GFX900-NEXT:    ;;#ASMEND5477; GFX900-NEXT:    s_mov_b32 s4, 0x70603025478; GFX900-NEXT:    v_mov_b32_e32 v2, 05479; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s45480; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]5481; GFX900-NEXT:    s_waitcnt vmcnt(0)5482; GFX900-NEXT:    s_setpc_b64 s[30:31]5483;5484; GFX90A-LABEL: v_shuffle_v4i16_v3i16__3_4_4_4:5485; GFX90A:       ; %bb.0:5486; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5487; GFX90A-NEXT:    ;;#ASMSTART5488; GFX90A-NEXT:    ; def v[0:1]5489; GFX90A-NEXT:    ;;#ASMEND5490; GFX90A-NEXT:    s_mov_b32 s4, 0x70603025491; GFX90A-NEXT:    v_mov_b32_e32 v2, 05492; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s45493; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]5494; GFX90A-NEXT:    s_waitcnt vmcnt(0)5495; GFX90A-NEXT:    s_setpc_b64 s[30:31]5496;5497; GFX942-LABEL: v_shuffle_v4i16_v3i16__3_4_4_4:5498; GFX942:       ; %bb.0:5499; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5500; GFX942-NEXT:    ;;#ASMSTART5501; GFX942-NEXT:    ; def v[0:1]5502; GFX942-NEXT:    ;;#ASMEND5503; GFX942-NEXT:    s_mov_b32 s2, 0x70603025504; GFX942-NEXT:    v_mov_b32_e32 v2, 05505; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s25506; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]5507; GFX942-NEXT:    s_waitcnt vmcnt(0)5508; GFX942-NEXT:    s_setpc_b64 s[30:31]5509  %vec0 = call <4 x i16> asm "; def $0", "=v"()5510  %vec1 = call <4 x i16> asm "; def $0", "=v"()5511  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5512  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5513  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 3, i32 4, i32 4, i32 4>5514  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 85515  ret void5516}5517 5518define void @v_shuffle_v4i16_v3i16__4_4_4_4(ptr addrspace(1) inreg %ptr) {5519; GFX900-LABEL: v_shuffle_v4i16_v3i16__4_4_4_4:5520; GFX900:       ; %bb.0:5521; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5522; GFX900-NEXT:    ;;#ASMSTART5523; GFX900-NEXT:    ; def v[0:1]5524; GFX900-NEXT:    ;;#ASMEND5525; GFX900-NEXT:    s_mov_b32 s4, 0x70603025526; GFX900-NEXT:    v_perm_b32 v0, v0, v0, s45527; GFX900-NEXT:    v_mov_b32_e32 v2, 05528; GFX900-NEXT:    v_mov_b32_e32 v1, v05529; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]5530; GFX900-NEXT:    s_waitcnt vmcnt(0)5531; GFX900-NEXT:    s_setpc_b64 s[30:31]5532;5533; GFX90A-LABEL: v_shuffle_v4i16_v3i16__4_4_4_4:5534; GFX90A:       ; %bb.0:5535; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5536; GFX90A-NEXT:    ;;#ASMSTART5537; GFX90A-NEXT:    ; def v[0:1]5538; GFX90A-NEXT:    ;;#ASMEND5539; GFX90A-NEXT:    s_mov_b32 s4, 0x70603025540; GFX90A-NEXT:    v_perm_b32 v0, v0, v0, s45541; GFX90A-NEXT:    v_mov_b32_e32 v2, 05542; GFX90A-NEXT:    v_mov_b32_e32 v1, v05543; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]5544; GFX90A-NEXT:    s_waitcnt vmcnt(0)5545; GFX90A-NEXT:    s_setpc_b64 s[30:31]5546;5547; GFX942-LABEL: v_shuffle_v4i16_v3i16__4_4_4_4:5548; GFX942:       ; %bb.0:5549; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5550; GFX942-NEXT:    ;;#ASMSTART5551; GFX942-NEXT:    ; def v[0:1]5552; GFX942-NEXT:    ;;#ASMEND5553; GFX942-NEXT:    s_mov_b32 s2, 0x70603025554; GFX942-NEXT:    v_perm_b32 v0, v0, v0, s25555; GFX942-NEXT:    v_mov_b32_e32 v2, 05556; GFX942-NEXT:    v_mov_b32_e32 v1, v05557; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]5558; GFX942-NEXT:    s_waitcnt vmcnt(0)5559; GFX942-NEXT:    s_setpc_b64 s[30:31]5560  %vec0 = call <4 x i16> asm "; def $0", "=v"()5561  %vec1 = call <4 x i16> asm "; def $0", "=v"()5562  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5563  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5564  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 4, i32 4, i32 4, i32 4>5565  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 85566  ret void5567}5568 5569define void @v_shuffle_v4i16_v3i16__5_4_4_4(ptr addrspace(1) inreg %ptr) {5570; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_4_4_4:5571; GFX900:       ; %bb.0:5572; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5573; GFX900-NEXT:    ;;#ASMSTART5574; GFX900-NEXT:    ; def v[0:1]5575; GFX900-NEXT:    ;;#ASMEND5576; GFX900-NEXT:    s_mov_b32 s4, 0xffff5577; GFX900-NEXT:    v_bfi_b32 v1, s4, v1, v05578; GFX900-NEXT:    s_mov_b32 s4, 0x70603025579; GFX900-NEXT:    v_mov_b32_e32 v3, 05580; GFX900-NEXT:    v_perm_b32 v2, v0, v0, s45581; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]5582; GFX900-NEXT:    s_waitcnt vmcnt(0)5583; GFX900-NEXT:    s_setpc_b64 s[30:31]5584;5585; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_4_4_4:5586; GFX90A:       ; %bb.0:5587; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5588; GFX90A-NEXT:    s_mov_b32 s4, 0xffff5589; GFX90A-NEXT:    ;;#ASMSTART5590; GFX90A-NEXT:    ; def v[0:1]5591; GFX90A-NEXT:    ;;#ASMEND5592; GFX90A-NEXT:    v_bfi_b32 v2, s4, v1, v05593; GFX90A-NEXT:    s_mov_b32 s4, 0x70603025594; GFX90A-NEXT:    v_mov_b32_e32 v4, 05595; GFX90A-NEXT:    v_perm_b32 v3, v0, v0, s45596; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]5597; GFX90A-NEXT:    s_waitcnt vmcnt(0)5598; GFX90A-NEXT:    s_setpc_b64 s[30:31]5599;5600; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_4_4_4:5601; GFX942:       ; %bb.0:5602; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5603; GFX942-NEXT:    s_mov_b32 s2, 0xffff5604; GFX942-NEXT:    ;;#ASMSTART5605; GFX942-NEXT:    ; def v[0:1]5606; GFX942-NEXT:    ;;#ASMEND5607; GFX942-NEXT:    v_mov_b32_e32 v4, 05608; GFX942-NEXT:    v_bfi_b32 v2, s2, v1, v05609; GFX942-NEXT:    s_mov_b32 s2, 0x70603025610; GFX942-NEXT:    v_perm_b32 v3, v0, v0, s25611; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]5612; GFX942-NEXT:    s_waitcnt vmcnt(0)5613; GFX942-NEXT:    s_setpc_b64 s[30:31]5614  %vec0 = call <4 x i16> asm "; def $0", "=v"()5615  %vec1 = call <4 x i16> asm "; def $0", "=v"()5616  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5617  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5618  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 4, i32 4, i32 4>5619  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 85620  ret void5621}5622 5623define void @v_shuffle_v4i16_v3i16__5_u_4_4(ptr addrspace(1) inreg %ptr) {5624; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_u_4_4:5625; GFX900:       ; %bb.0:5626; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5627; GFX900-NEXT:    s_mov_b32 s4, 0x70603025628; GFX900-NEXT:    v_mov_b32_e32 v3, 05629; GFX900-NEXT:    ;;#ASMSTART5630; GFX900-NEXT:    ; def v[0:1]5631; GFX900-NEXT:    ;;#ASMEND5632; GFX900-NEXT:    v_perm_b32 v2, v0, v0, s45633; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]5634; GFX900-NEXT:    s_waitcnt vmcnt(0)5635; GFX900-NEXT:    s_setpc_b64 s[30:31]5636;5637; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_u_4_4:5638; GFX90A:       ; %bb.0:5639; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5640; GFX90A-NEXT:    s_mov_b32 s4, 0x70603025641; GFX90A-NEXT:    v_mov_b32_e32 v4, 05642; GFX90A-NEXT:    ;;#ASMSTART5643; GFX90A-NEXT:    ; def v[0:1]5644; GFX90A-NEXT:    ;;#ASMEND5645; GFX90A-NEXT:    v_perm_b32 v3, v0, v0, s45646; GFX90A-NEXT:    v_mov_b32_e32 v2, v15647; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]5648; GFX90A-NEXT:    s_waitcnt vmcnt(0)5649; GFX90A-NEXT:    s_setpc_b64 s[30:31]5650;5651; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_u_4_4:5652; GFX942:       ; %bb.0:5653; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5654; GFX942-NEXT:    s_mov_b32 s2, 0x70603025655; GFX942-NEXT:    v_mov_b32_e32 v4, 05656; GFX942-NEXT:    ;;#ASMSTART5657; GFX942-NEXT:    ; def v[0:1]5658; GFX942-NEXT:    ;;#ASMEND5659; GFX942-NEXT:    s_nop 05660; GFX942-NEXT:    v_perm_b32 v3, v0, v0, s25661; GFX942-NEXT:    v_mov_b32_e32 v2, v15662; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]5663; GFX942-NEXT:    s_waitcnt vmcnt(0)5664; GFX942-NEXT:    s_setpc_b64 s[30:31]5665  %vec0 = call <4 x i16> asm "; def $0", "=v"()5666  %vec1 = call <4 x i16> asm "; def $0", "=v"()5667  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5668  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5669  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 poison, i32 4, i32 4>5670  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 85671  ret void5672}5673 5674define void @v_shuffle_v4i16_v3i16__5_0_4_4(ptr addrspace(1) inreg %ptr) {5675; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_0_4_4:5676; GFX900:       ; %bb.0:5677; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5678; GFX900-NEXT:    ;;#ASMSTART5679; GFX900-NEXT:    ; def v[0:1]5680; GFX900-NEXT:    ;;#ASMEND5681; GFX900-NEXT:    s_mov_b32 s4, 0x50401005682; GFX900-NEXT:    ;;#ASMSTART5683; GFX900-NEXT:    ; def v[1:2]5684; GFX900-NEXT:    ;;#ASMEND5685; GFX900-NEXT:    v_perm_b32 v0, v0, v2, s45686; GFX900-NEXT:    s_mov_b32 s4, 0x70603025687; GFX900-NEXT:    v_mov_b32_e32 v3, 05688; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s45689; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]5690; GFX900-NEXT:    s_waitcnt vmcnt(0)5691; GFX900-NEXT:    s_setpc_b64 s[30:31]5692;5693; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_0_4_4:5694; GFX90A:       ; %bb.0:5695; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5696; GFX90A-NEXT:    ;;#ASMSTART5697; GFX90A-NEXT:    ; def v[0:1]5698; GFX90A-NEXT:    ;;#ASMEND5699; GFX90A-NEXT:    s_mov_b32 s4, 0x50401005700; GFX90A-NEXT:    ;;#ASMSTART5701; GFX90A-NEXT:    ; def v[2:3]5702; GFX90A-NEXT:    ;;#ASMEND5703; GFX90A-NEXT:    v_perm_b32 v0, v0, v3, s45704; GFX90A-NEXT:    s_mov_b32 s4, 0x70603025705; GFX90A-NEXT:    v_mov_b32_e32 v4, 05706; GFX90A-NEXT:    v_perm_b32 v1, v2, v2, s45707; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]5708; GFX90A-NEXT:    s_waitcnt vmcnt(0)5709; GFX90A-NEXT:    s_setpc_b64 s[30:31]5710;5711; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_0_4_4:5712; GFX942:       ; %bb.0:5713; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5714; GFX942-NEXT:    ;;#ASMSTART5715; GFX942-NEXT:    ; def v[0:1]5716; GFX942-NEXT:    ;;#ASMEND5717; GFX942-NEXT:    s_mov_b32 s2, 0x50401005718; GFX942-NEXT:    ;;#ASMSTART5719; GFX942-NEXT:    ; def v[2:3]5720; GFX942-NEXT:    ;;#ASMEND5721; GFX942-NEXT:    v_mov_b32_e32 v4, 05722; GFX942-NEXT:    v_perm_b32 v0, v0, v3, s25723; GFX942-NEXT:    s_mov_b32 s2, 0x70603025724; GFX942-NEXT:    v_perm_b32 v1, v2, v2, s25725; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]5726; GFX942-NEXT:    s_waitcnt vmcnt(0)5727; GFX942-NEXT:    s_setpc_b64 s[30:31]5728  %vec0 = call <4 x i16> asm "; def $0", "=v"()5729  %vec1 = call <4 x i16> asm "; def $0", "=v"()5730  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5731  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5732  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 0, i32 4, i32 4>5733  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 85734  ret void5735}5736 5737define void @v_shuffle_v4i16_v3i16__5_1_4_4(ptr addrspace(1) inreg %ptr) {5738; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_1_4_4:5739; GFX900:       ; %bb.0:5740; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5741; GFX900-NEXT:    ;;#ASMSTART5742; GFX900-NEXT:    ; def v[0:1]5743; GFX900-NEXT:    ;;#ASMEND5744; GFX900-NEXT:    s_mov_b32 s4, 0xffff5745; GFX900-NEXT:    ;;#ASMSTART5746; GFX900-NEXT:    ; def v[1:2]5747; GFX900-NEXT:    ;;#ASMEND5748; GFX900-NEXT:    v_bfi_b32 v0, s4, v2, v05749; GFX900-NEXT:    s_mov_b32 s4, 0x70603025750; GFX900-NEXT:    v_mov_b32_e32 v3, 05751; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s45752; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]5753; GFX900-NEXT:    s_waitcnt vmcnt(0)5754; GFX900-NEXT:    s_setpc_b64 s[30:31]5755;5756; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_1_4_4:5757; GFX90A:       ; %bb.0:5758; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5759; GFX90A-NEXT:    ;;#ASMSTART5760; GFX90A-NEXT:    ; def v[0:1]5761; GFX90A-NEXT:    ;;#ASMEND5762; GFX90A-NEXT:    s_mov_b32 s4, 0xffff5763; GFX90A-NEXT:    ;;#ASMSTART5764; GFX90A-NEXT:    ; def v[2:3]5765; GFX90A-NEXT:    ;;#ASMEND5766; GFX90A-NEXT:    v_bfi_b32 v0, s4, v3, v05767; GFX90A-NEXT:    s_mov_b32 s4, 0x70603025768; GFX90A-NEXT:    v_mov_b32_e32 v4, 05769; GFX90A-NEXT:    v_perm_b32 v1, v2, v2, s45770; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]5771; GFX90A-NEXT:    s_waitcnt vmcnt(0)5772; GFX90A-NEXT:    s_setpc_b64 s[30:31]5773;5774; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_1_4_4:5775; GFX942:       ; %bb.0:5776; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5777; GFX942-NEXT:    ;;#ASMSTART5778; GFX942-NEXT:    ; def v[0:1]5779; GFX942-NEXT:    ;;#ASMEND5780; GFX942-NEXT:    s_mov_b32 s2, 0xffff5781; GFX942-NEXT:    ;;#ASMSTART5782; GFX942-NEXT:    ; def v[2:3]5783; GFX942-NEXT:    ;;#ASMEND5784; GFX942-NEXT:    v_mov_b32_e32 v4, 05785; GFX942-NEXT:    v_bfi_b32 v0, s2, v3, v05786; GFX942-NEXT:    s_mov_b32 s2, 0x70603025787; GFX942-NEXT:    v_perm_b32 v1, v2, v2, s25788; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]5789; GFX942-NEXT:    s_waitcnt vmcnt(0)5790; GFX942-NEXT:    s_setpc_b64 s[30:31]5791  %vec0 = call <4 x i16> asm "; def $0", "=v"()5792  %vec1 = call <4 x i16> asm "; def $0", "=v"()5793  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5794  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5795  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 1, i32 4, i32 4>5796  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 85797  ret void5798}5799 5800define void @v_shuffle_v4i16_v3i16__5_2_4_4(ptr addrspace(1) inreg %ptr) {5801; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_2_4_4:5802; GFX900:       ; %bb.0:5803; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5804; GFX900-NEXT:    ;;#ASMSTART5805; GFX900-NEXT:    ; def v[0:1]5806; GFX900-NEXT:    ;;#ASMEND5807; GFX900-NEXT:    s_mov_b32 s4, 0x50401005808; GFX900-NEXT:    ;;#ASMSTART5809; GFX900-NEXT:    ; def v[2:3]5810; GFX900-NEXT:    ;;#ASMEND5811; GFX900-NEXT:    v_perm_b32 v0, v1, v3, s45812; GFX900-NEXT:    s_mov_b32 s4, 0x70603025813; GFX900-NEXT:    v_mov_b32_e32 v4, 05814; GFX900-NEXT:    v_perm_b32 v1, v2, v2, s45815; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]5816; GFX900-NEXT:    s_waitcnt vmcnt(0)5817; GFX900-NEXT:    s_setpc_b64 s[30:31]5818;5819; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_2_4_4:5820; GFX90A:       ; %bb.0:5821; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5822; GFX90A-NEXT:    ;;#ASMSTART5823; GFX90A-NEXT:    ; def v[0:1]5824; GFX90A-NEXT:    ;;#ASMEND5825; GFX90A-NEXT:    s_mov_b32 s4, 0x50401005826; GFX90A-NEXT:    ;;#ASMSTART5827; GFX90A-NEXT:    ; def v[2:3]5828; GFX90A-NEXT:    ;;#ASMEND5829; GFX90A-NEXT:    v_perm_b32 v0, v1, v3, s45830; GFX90A-NEXT:    s_mov_b32 s4, 0x70603025831; GFX90A-NEXT:    v_mov_b32_e32 v4, 05832; GFX90A-NEXT:    v_perm_b32 v1, v2, v2, s45833; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]5834; GFX90A-NEXT:    s_waitcnt vmcnt(0)5835; GFX90A-NEXT:    s_setpc_b64 s[30:31]5836;5837; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_2_4_4:5838; GFX942:       ; %bb.0:5839; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5840; GFX942-NEXT:    ;;#ASMSTART5841; GFX942-NEXT:    ; def v[0:1]5842; GFX942-NEXT:    ;;#ASMEND5843; GFX942-NEXT:    s_mov_b32 s2, 0x50401005844; GFX942-NEXT:    ;;#ASMSTART5845; GFX942-NEXT:    ; def v[2:3]5846; GFX942-NEXT:    ;;#ASMEND5847; GFX942-NEXT:    v_mov_b32_e32 v4, 05848; GFX942-NEXT:    v_perm_b32 v0, v1, v3, s25849; GFX942-NEXT:    s_mov_b32 s2, 0x70603025850; GFX942-NEXT:    v_perm_b32 v1, v2, v2, s25851; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]5852; GFX942-NEXT:    s_waitcnt vmcnt(0)5853; GFX942-NEXT:    s_setpc_b64 s[30:31]5854  %vec0 = call <4 x i16> asm "; def $0", "=v"()5855  %vec1 = call <4 x i16> asm "; def $0", "=v"()5856  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5857  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5858  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 2, i32 4, i32 4>5859  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 85860  ret void5861}5862 5863define void @v_shuffle_v4i16_v3i16__5_3_4_4(ptr addrspace(1) inreg %ptr) {5864; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_3_4_4:5865; GFX900:       ; %bb.0:5866; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5867; GFX900-NEXT:    ;;#ASMSTART5868; GFX900-NEXT:    ; def v[0:1]5869; GFX900-NEXT:    ;;#ASMEND5870; GFX900-NEXT:    s_mov_b32 s4, 0x50401005871; GFX900-NEXT:    v_perm_b32 v1, v0, v1, s45872; GFX900-NEXT:    s_mov_b32 s4, 0x70603025873; GFX900-NEXT:    v_mov_b32_e32 v3, 05874; GFX900-NEXT:    v_perm_b32 v2, v0, v0, s45875; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]5876; GFX900-NEXT:    s_waitcnt vmcnt(0)5877; GFX900-NEXT:    s_setpc_b64 s[30:31]5878;5879; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_3_4_4:5880; GFX90A:       ; %bb.0:5881; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5882; GFX90A-NEXT:    s_mov_b32 s4, 0x50401005883; GFX90A-NEXT:    ;;#ASMSTART5884; GFX90A-NEXT:    ; def v[0:1]5885; GFX90A-NEXT:    ;;#ASMEND5886; GFX90A-NEXT:    v_perm_b32 v2, v0, v1, s45887; GFX90A-NEXT:    s_mov_b32 s4, 0x70603025888; GFX90A-NEXT:    v_mov_b32_e32 v4, 05889; GFX90A-NEXT:    v_perm_b32 v3, v0, v0, s45890; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]5891; GFX90A-NEXT:    s_waitcnt vmcnt(0)5892; GFX90A-NEXT:    s_setpc_b64 s[30:31]5893;5894; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_3_4_4:5895; GFX942:       ; %bb.0:5896; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5897; GFX942-NEXT:    s_mov_b32 s2, 0x50401005898; GFX942-NEXT:    ;;#ASMSTART5899; GFX942-NEXT:    ; def v[0:1]5900; GFX942-NEXT:    ;;#ASMEND5901; GFX942-NEXT:    v_mov_b32_e32 v4, 05902; GFX942-NEXT:    v_perm_b32 v2, v0, v1, s25903; GFX942-NEXT:    s_mov_b32 s2, 0x70603025904; GFX942-NEXT:    v_perm_b32 v3, v0, v0, s25905; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]5906; GFX942-NEXT:    s_waitcnt vmcnt(0)5907; GFX942-NEXT:    s_setpc_b64 s[30:31]5908  %vec0 = call <4 x i16> asm "; def $0", "=v"()5909  %vec1 = call <4 x i16> asm "; def $0", "=v"()5910  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5911  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5912  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 3, i32 4, i32 4>5913  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 85914  ret void5915}5916 5917define void @v_shuffle_v4i16_v3i16__5_5_4_4(ptr addrspace(1) inreg %ptr) {5918; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_4_4:5919; GFX900:       ; %bb.0:5920; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5921; GFX900-NEXT:    s_mov_b32 s4, 0x70603025922; GFX900-NEXT:    ;;#ASMSTART5923; GFX900-NEXT:    ; def v[0:1]5924; GFX900-NEXT:    ;;#ASMEND5925; GFX900-NEXT:    v_perm_b32 v2, v0, v0, s45926; GFX900-NEXT:    s_mov_b32 s4, 0x50401005927; GFX900-NEXT:    v_mov_b32_e32 v3, 05928; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s45929; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]5930; GFX900-NEXT:    s_waitcnt vmcnt(0)5931; GFX900-NEXT:    s_setpc_b64 s[30:31]5932;5933; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_4_4:5934; GFX90A:       ; %bb.0:5935; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5936; GFX90A-NEXT:    s_mov_b32 s4, 0x70603025937; GFX90A-NEXT:    ;;#ASMSTART5938; GFX90A-NEXT:    ; def v[0:1]5939; GFX90A-NEXT:    ;;#ASMEND5940; GFX90A-NEXT:    v_perm_b32 v3, v0, v0, s45941; GFX90A-NEXT:    s_mov_b32 s4, 0x50401005942; GFX90A-NEXT:    v_mov_b32_e32 v4, 05943; GFX90A-NEXT:    v_perm_b32 v2, v1, v1, s45944; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]5945; GFX90A-NEXT:    s_waitcnt vmcnt(0)5946; GFX90A-NEXT:    s_setpc_b64 s[30:31]5947;5948; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_4_4:5949; GFX942:       ; %bb.0:5950; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5951; GFX942-NEXT:    s_mov_b32 s2, 0x70603025952; GFX942-NEXT:    ;;#ASMSTART5953; GFX942-NEXT:    ; def v[0:1]5954; GFX942-NEXT:    ;;#ASMEND5955; GFX942-NEXT:    v_mov_b32_e32 v4, 05956; GFX942-NEXT:    v_perm_b32 v3, v0, v0, s25957; GFX942-NEXT:    s_mov_b32 s2, 0x50401005958; GFX942-NEXT:    v_perm_b32 v2, v1, v1, s25959; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]5960; GFX942-NEXT:    s_waitcnt vmcnt(0)5961; GFX942-NEXT:    s_setpc_b64 s[30:31]5962  %vec0 = call <4 x i16> asm "; def $0", "=v"()5963  %vec1 = call <4 x i16> asm "; def $0", "=v"()5964  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5965  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>5966  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 4, i32 4>5967  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 85968  ret void5969}5970 5971define void @v_shuffle_v4i16_v3i16__5_5_u_4(ptr addrspace(1) inreg %ptr) {5972; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_u_4:5973; GFX900:       ; %bb.0:5974; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5975; GFX900-NEXT:    s_mov_b32 s4, 0x50401005976; GFX900-NEXT:    v_mov_b32_e32 v3, 05977; GFX900-NEXT:    ;;#ASMSTART5978; GFX900-NEXT:    ; def v[1:2]5979; GFX900-NEXT:    ;;#ASMEND5980; GFX900-NEXT:    v_perm_b32 v0, v2, v2, s45981; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]5982; GFX900-NEXT:    s_waitcnt vmcnt(0)5983; GFX900-NEXT:    s_setpc_b64 s[30:31]5984;5985; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_u_4:5986; GFX90A:       ; %bb.0:5987; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5988; GFX90A-NEXT:    s_mov_b32 s4, 0x50401005989; GFX90A-NEXT:    v_mov_b32_e32 v4, 05990; GFX90A-NEXT:    ;;#ASMSTART5991; GFX90A-NEXT:    ; def v[0:1]5992; GFX90A-NEXT:    ;;#ASMEND5993; GFX90A-NEXT:    v_perm_b32 v2, v1, v1, s45994; GFX90A-NEXT:    v_mov_b32_e32 v3, v05995; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]5996; GFX90A-NEXT:    s_waitcnt vmcnt(0)5997; GFX90A-NEXT:    s_setpc_b64 s[30:31]5998;5999; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_u_4:6000; GFX942:       ; %bb.0:6001; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6002; GFX942-NEXT:    s_mov_b32 s2, 0x50401006003; GFX942-NEXT:    v_mov_b32_e32 v4, 06004; GFX942-NEXT:    ;;#ASMSTART6005; GFX942-NEXT:    ; def v[0:1]6006; GFX942-NEXT:    ;;#ASMEND6007; GFX942-NEXT:    s_nop 06008; GFX942-NEXT:    v_perm_b32 v2, v1, v1, s26009; GFX942-NEXT:    v_mov_b32_e32 v3, v06010; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]6011; GFX942-NEXT:    s_waitcnt vmcnt(0)6012; GFX942-NEXT:    s_setpc_b64 s[30:31]6013  %vec0 = call <4 x i16> asm "; def $0", "=v"()6014  %vec1 = call <4 x i16> asm "; def $0", "=v"()6015  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6016  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6017  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 poison, i32 4>6018  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 86019  ret void6020}6021 6022define void @v_shuffle_v4i16_v3i16__5_5_0_4(ptr addrspace(1) inreg %ptr) {6023; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_0_4:6024; GFX900:       ; %bb.0:6025; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6026; GFX900-NEXT:    ;;#ASMSTART6027; GFX900-NEXT:    ; def v[0:1]6028; GFX900-NEXT:    ;;#ASMEND6029; GFX900-NEXT:    ;;#ASMSTART6030; GFX900-NEXT:    ; def v[1:2]6031; GFX900-NEXT:    ;;#ASMEND6032; GFX900-NEXT:    s_mov_b32 s4, 0xffff6033; GFX900-NEXT:    v_bfi_b32 v1, s4, v0, v16034; GFX900-NEXT:    s_mov_b32 s4, 0x50401006035; GFX900-NEXT:    v_mov_b32_e32 v3, 06036; GFX900-NEXT:    v_perm_b32 v0, v2, v2, s46037; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]6038; GFX900-NEXT:    s_waitcnt vmcnt(0)6039; GFX900-NEXT:    s_setpc_b64 s[30:31]6040;6041; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_0_4:6042; GFX90A:       ; %bb.0:6043; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6044; GFX90A-NEXT:    ;;#ASMSTART6045; GFX90A-NEXT:    ; def v[0:1]6046; GFX90A-NEXT:    ;;#ASMEND6047; GFX90A-NEXT:    s_mov_b32 s4, 0xffff6048; GFX90A-NEXT:    ;;#ASMSTART6049; GFX90A-NEXT:    ; def v[2:3]6050; GFX90A-NEXT:    ;;#ASMEND6051; GFX90A-NEXT:    v_bfi_b32 v1, s4, v0, v26052; GFX90A-NEXT:    s_mov_b32 s4, 0x50401006053; GFX90A-NEXT:    v_mov_b32_e32 v4, 06054; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s46055; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]6056; GFX90A-NEXT:    s_waitcnt vmcnt(0)6057; GFX90A-NEXT:    s_setpc_b64 s[30:31]6058;6059; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_0_4:6060; GFX942:       ; %bb.0:6061; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6062; GFX942-NEXT:    ;;#ASMSTART6063; GFX942-NEXT:    ; def v[0:1]6064; GFX942-NEXT:    ;;#ASMEND6065; GFX942-NEXT:    s_mov_b32 s2, 0xffff6066; GFX942-NEXT:    ;;#ASMSTART6067; GFX942-NEXT:    ; def v[2:3]6068; GFX942-NEXT:    ;;#ASMEND6069; GFX942-NEXT:    v_mov_b32_e32 v4, 06070; GFX942-NEXT:    v_bfi_b32 v1, s2, v0, v26071; GFX942-NEXT:    s_mov_b32 s2, 0x50401006072; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s26073; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]6074; GFX942-NEXT:    s_waitcnt vmcnt(0)6075; GFX942-NEXT:    s_setpc_b64 s[30:31]6076  %vec0 = call <4 x i16> asm "; def $0", "=v"()6077  %vec1 = call <4 x i16> asm "; def $0", "=v"()6078  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6079  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6080  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 0, i32 4>6081  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 86082  ret void6083}6084 6085define void @v_shuffle_v4i16_v3i16__5_5_1_4(ptr addrspace(1) inreg %ptr) {6086; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_1_4:6087; GFX900:       ; %bb.0:6088; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6089; GFX900-NEXT:    ;;#ASMSTART6090; GFX900-NEXT:    ; def v[0:1]6091; GFX900-NEXT:    ;;#ASMEND6092; GFX900-NEXT:    ;;#ASMSTART6093; GFX900-NEXT:    ; def v[1:2]6094; GFX900-NEXT:    ;;#ASMEND6095; GFX900-NEXT:    s_mov_b32 s4, 0x70603026096; GFX900-NEXT:    v_perm_b32 v1, v1, v0, s46097; GFX900-NEXT:    s_mov_b32 s4, 0x50401006098; GFX900-NEXT:    v_mov_b32_e32 v3, 06099; GFX900-NEXT:    v_perm_b32 v0, v2, v2, s46100; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]6101; GFX900-NEXT:    s_waitcnt vmcnt(0)6102; GFX900-NEXT:    s_setpc_b64 s[30:31]6103;6104; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_1_4:6105; GFX90A:       ; %bb.0:6106; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6107; GFX90A-NEXT:    ;;#ASMSTART6108; GFX90A-NEXT:    ; def v[0:1]6109; GFX90A-NEXT:    ;;#ASMEND6110; GFX90A-NEXT:    s_mov_b32 s4, 0x70603026111; GFX90A-NEXT:    ;;#ASMSTART6112; GFX90A-NEXT:    ; def v[2:3]6113; GFX90A-NEXT:    ;;#ASMEND6114; GFX90A-NEXT:    v_perm_b32 v1, v2, v0, s46115; GFX90A-NEXT:    s_mov_b32 s4, 0x50401006116; GFX90A-NEXT:    v_mov_b32_e32 v4, 06117; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s46118; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]6119; GFX90A-NEXT:    s_waitcnt vmcnt(0)6120; GFX90A-NEXT:    s_setpc_b64 s[30:31]6121;6122; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_1_4:6123; GFX942:       ; %bb.0:6124; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6125; GFX942-NEXT:    ;;#ASMSTART6126; GFX942-NEXT:    ; def v[0:1]6127; GFX942-NEXT:    ;;#ASMEND6128; GFX942-NEXT:    s_mov_b32 s2, 0x70603026129; GFX942-NEXT:    ;;#ASMSTART6130; GFX942-NEXT:    ; def v[2:3]6131; GFX942-NEXT:    ;;#ASMEND6132; GFX942-NEXT:    v_mov_b32_e32 v4, 06133; GFX942-NEXT:    v_perm_b32 v1, v2, v0, s26134; GFX942-NEXT:    s_mov_b32 s2, 0x50401006135; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s26136; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]6137; GFX942-NEXT:    s_waitcnt vmcnt(0)6138; GFX942-NEXT:    s_setpc_b64 s[30:31]6139  %vec0 = call <4 x i16> asm "; def $0", "=v"()6140  %vec1 = call <4 x i16> asm "; def $0", "=v"()6141  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6142  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6143  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 1, i32 4>6144  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 86145  ret void6146}6147 6148define void @v_shuffle_v4i16_v3i16__5_5_2_4(ptr addrspace(1) inreg %ptr) {6149; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_2_4:6150; GFX900:       ; %bb.0:6151; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6152; GFX900-NEXT:    ;;#ASMSTART6153; GFX900-NEXT:    ; def v[0:1]6154; GFX900-NEXT:    ;;#ASMEND6155; GFX900-NEXT:    s_mov_b32 s4, 0xffff6156; GFX900-NEXT:    ;;#ASMSTART6157; GFX900-NEXT:    ; def v[2:3]6158; GFX900-NEXT:    ;;#ASMEND6159; GFX900-NEXT:    v_bfi_b32 v1, s4, v1, v26160; GFX900-NEXT:    s_mov_b32 s4, 0x50401006161; GFX900-NEXT:    v_mov_b32_e32 v4, 06162; GFX900-NEXT:    v_perm_b32 v0, v3, v3, s46163; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]6164; GFX900-NEXT:    s_waitcnt vmcnt(0)6165; GFX900-NEXT:    s_setpc_b64 s[30:31]6166;6167; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_2_4:6168; GFX90A:       ; %bb.0:6169; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6170; GFX90A-NEXT:    ;;#ASMSTART6171; GFX90A-NEXT:    ; def v[0:1]6172; GFX90A-NEXT:    ;;#ASMEND6173; GFX90A-NEXT:    s_mov_b32 s4, 0xffff6174; GFX90A-NEXT:    ;;#ASMSTART6175; GFX90A-NEXT:    ; def v[2:3]6176; GFX90A-NEXT:    ;;#ASMEND6177; GFX90A-NEXT:    v_bfi_b32 v1, s4, v1, v26178; GFX90A-NEXT:    s_mov_b32 s4, 0x50401006179; GFX90A-NEXT:    v_mov_b32_e32 v4, 06180; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s46181; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]6182; GFX90A-NEXT:    s_waitcnt vmcnt(0)6183; GFX90A-NEXT:    s_setpc_b64 s[30:31]6184;6185; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_2_4:6186; GFX942:       ; %bb.0:6187; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6188; GFX942-NEXT:    ;;#ASMSTART6189; GFX942-NEXT:    ; def v[0:1]6190; GFX942-NEXT:    ;;#ASMEND6191; GFX942-NEXT:    s_mov_b32 s2, 0xffff6192; GFX942-NEXT:    ;;#ASMSTART6193; GFX942-NEXT:    ; def v[2:3]6194; GFX942-NEXT:    ;;#ASMEND6195; GFX942-NEXT:    v_mov_b32_e32 v4, 06196; GFX942-NEXT:    v_bfi_b32 v1, s2, v1, v26197; GFX942-NEXT:    s_mov_b32 s2, 0x50401006198; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s26199; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]6200; GFX942-NEXT:    s_waitcnt vmcnt(0)6201; GFX942-NEXT:    s_setpc_b64 s[30:31]6202  %vec0 = call <4 x i16> asm "; def $0", "=v"()6203  %vec1 = call <4 x i16> asm "; def $0", "=v"()6204  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6205  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6206  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 2, i32 4>6207  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 86208  ret void6209}6210 6211define void @v_shuffle_v4i16_v3i16__5_5_3_4(ptr addrspace(1) inreg %ptr) {6212; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_3_4:6213; GFX900:       ; %bb.0:6214; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6215; GFX900-NEXT:    s_mov_b32 s4, 0x50401006216; GFX900-NEXT:    v_mov_b32_e32 v3, 06217; GFX900-NEXT:    ;;#ASMSTART6218; GFX900-NEXT:    ; def v[1:2]6219; GFX900-NEXT:    ;;#ASMEND6220; GFX900-NEXT:    v_perm_b32 v0, v2, v2, s46221; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]6222; GFX900-NEXT:    s_waitcnt vmcnt(0)6223; GFX900-NEXT:    s_setpc_b64 s[30:31]6224;6225; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_3_4:6226; GFX90A:       ; %bb.0:6227; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6228; GFX90A-NEXT:    s_mov_b32 s4, 0x50401006229; GFX90A-NEXT:    v_mov_b32_e32 v4, 06230; GFX90A-NEXT:    ;;#ASMSTART6231; GFX90A-NEXT:    ; def v[0:1]6232; GFX90A-NEXT:    ;;#ASMEND6233; GFX90A-NEXT:    v_perm_b32 v2, v1, v1, s46234; GFX90A-NEXT:    v_mov_b32_e32 v3, v06235; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]6236; GFX90A-NEXT:    s_waitcnt vmcnt(0)6237; GFX90A-NEXT:    s_setpc_b64 s[30:31]6238;6239; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_3_4:6240; GFX942:       ; %bb.0:6241; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6242; GFX942-NEXT:    s_mov_b32 s2, 0x50401006243; GFX942-NEXT:    v_mov_b32_e32 v4, 06244; GFX942-NEXT:    ;;#ASMSTART6245; GFX942-NEXT:    ; def v[0:1]6246; GFX942-NEXT:    ;;#ASMEND6247; GFX942-NEXT:    s_nop 06248; GFX942-NEXT:    v_perm_b32 v2, v1, v1, s26249; GFX942-NEXT:    v_mov_b32_e32 v3, v06250; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]6251; GFX942-NEXT:    s_waitcnt vmcnt(0)6252; GFX942-NEXT:    s_setpc_b64 s[30:31]6253  %vec0 = call <4 x i16> asm "; def $0", "=v"()6254  %vec1 = call <4 x i16> asm "; def $0", "=v"()6255  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6256  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6257  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 3, i32 4>6258  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 86259  ret void6260}6261 6262define void @v_shuffle_v4i16_v3i16__u_5_5_5(ptr addrspace(1) inreg %ptr) {6263; GFX900-LABEL: v_shuffle_v4i16_v3i16__u_5_5_5:6264; GFX900:       ; %bb.0:6265; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6266; GFX900-NEXT:    ;;#ASMSTART6267; GFX900-NEXT:    ; def v[0:1]6268; GFX900-NEXT:    ;;#ASMEND6269; GFX900-NEXT:    s_mov_b32 s4, 0x50401006270; GFX900-NEXT:    v_mov_b32_e32 v3, 06271; GFX900-NEXT:    v_perm_b32 v2, v1, v1, s46272; GFX900-NEXT:    v_lshlrev_b32_e32 v1, 16, v16273; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]6274; GFX900-NEXT:    s_waitcnt vmcnt(0)6275; GFX900-NEXT:    s_setpc_b64 s[30:31]6276;6277; GFX90A-LABEL: v_shuffle_v4i16_v3i16__u_5_5_5:6278; GFX90A:       ; %bb.0:6279; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6280; GFX90A-NEXT:    s_mov_b32 s4, 0x50401006281; GFX90A-NEXT:    v_mov_b32_e32 v4, 06282; GFX90A-NEXT:    ;;#ASMSTART6283; GFX90A-NEXT:    ; def v[0:1]6284; GFX90A-NEXT:    ;;#ASMEND6285; GFX90A-NEXT:    v_perm_b32 v3, v1, v1, s46286; GFX90A-NEXT:    v_lshlrev_b32_e32 v2, 16, v16287; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]6288; GFX90A-NEXT:    s_waitcnt vmcnt(0)6289; GFX90A-NEXT:    s_setpc_b64 s[30:31]6290;6291; GFX942-LABEL: v_shuffle_v4i16_v3i16__u_5_5_5:6292; GFX942:       ; %bb.0:6293; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6294; GFX942-NEXT:    s_mov_b32 s2, 0x50401006295; GFX942-NEXT:    v_mov_b32_e32 v4, 06296; GFX942-NEXT:    ;;#ASMSTART6297; GFX942-NEXT:    ; def v[0:1]6298; GFX942-NEXT:    ;;#ASMEND6299; GFX942-NEXT:    s_nop 06300; GFX942-NEXT:    v_perm_b32 v3, v1, v1, s26301; GFX942-NEXT:    v_lshlrev_b32_e32 v2, 16, v16302; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]6303; GFX942-NEXT:    s_waitcnt vmcnt(0)6304; GFX942-NEXT:    s_setpc_b64 s[30:31]6305  %vec0 = call <4 x i16> asm "; def $0", "=v"()6306  %vec1 = call <4 x i16> asm "; def $0", "=v"()6307  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6308  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6309  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 poison, i32 5, i32 5, i32 5>6310  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 86311  ret void6312}6313 6314define void @v_shuffle_v4i16_v3i16__0_5_5_5(ptr addrspace(1) inreg %ptr) {6315; GFX900-LABEL: v_shuffle_v4i16_v3i16__0_5_5_5:6316; GFX900:       ; %bb.0:6317; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6318; GFX900-NEXT:    ;;#ASMSTART6319; GFX900-NEXT:    ; def v[0:1]6320; GFX900-NEXT:    ;;#ASMEND6321; GFX900-NEXT:    ;;#ASMSTART6322; GFX900-NEXT:    ; def v[1:2]6323; GFX900-NEXT:    ;;#ASMEND6324; GFX900-NEXT:    s_mov_b32 s4, 0x50401006325; GFX900-NEXT:    v_mov_b32_e32 v3, 06326; GFX900-NEXT:    v_perm_b32 v0, v2, v0, s46327; GFX900-NEXT:    v_perm_b32 v1, v2, v2, s46328; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]6329; GFX900-NEXT:    s_waitcnt vmcnt(0)6330; GFX900-NEXT:    s_setpc_b64 s[30:31]6331;6332; GFX90A-LABEL: v_shuffle_v4i16_v3i16__0_5_5_5:6333; GFX90A:       ; %bb.0:6334; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6335; GFX90A-NEXT:    ;;#ASMSTART6336; GFX90A-NEXT:    ; def v[0:1]6337; GFX90A-NEXT:    ;;#ASMEND6338; GFX90A-NEXT:    s_mov_b32 s4, 0x50401006339; GFX90A-NEXT:    v_mov_b32_e32 v4, 06340; GFX90A-NEXT:    ;;#ASMSTART6341; GFX90A-NEXT:    ; def v[2:3]6342; GFX90A-NEXT:    ;;#ASMEND6343; GFX90A-NEXT:    v_perm_b32 v0, v3, v0, s46344; GFX90A-NEXT:    v_perm_b32 v1, v3, v3, s46345; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]6346; GFX90A-NEXT:    s_waitcnt vmcnt(0)6347; GFX90A-NEXT:    s_setpc_b64 s[30:31]6348;6349; GFX942-LABEL: v_shuffle_v4i16_v3i16__0_5_5_5:6350; GFX942:       ; %bb.0:6351; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6352; GFX942-NEXT:    ;;#ASMSTART6353; GFX942-NEXT:    ; def v[0:1]6354; GFX942-NEXT:    ;;#ASMEND6355; GFX942-NEXT:    s_mov_b32 s2, 0x50401006356; GFX942-NEXT:    v_mov_b32_e32 v4, 06357; GFX942-NEXT:    ;;#ASMSTART6358; GFX942-NEXT:    ; def v[2:3]6359; GFX942-NEXT:    ;;#ASMEND6360; GFX942-NEXT:    s_nop 06361; GFX942-NEXT:    v_perm_b32 v0, v3, v0, s26362; GFX942-NEXT:    v_perm_b32 v1, v3, v3, s26363; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]6364; GFX942-NEXT:    s_waitcnt vmcnt(0)6365; GFX942-NEXT:    s_setpc_b64 s[30:31]6366  %vec0 = call <4 x i16> asm "; def $0", "=v"()6367  %vec1 = call <4 x i16> asm "; def $0", "=v"()6368  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6369  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6370  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 0, i32 5, i32 5, i32 5>6371  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 86372  ret void6373}6374 6375define void @v_shuffle_v4i16_v3i16__1_5_5_5(ptr addrspace(1) inreg %ptr) {6376; GFX900-LABEL: v_shuffle_v4i16_v3i16__1_5_5_5:6377; GFX900:       ; %bb.0:6378; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6379; GFX900-NEXT:    ;;#ASMSTART6380; GFX900-NEXT:    ; def v[0:1]6381; GFX900-NEXT:    ;;#ASMEND6382; GFX900-NEXT:    ;;#ASMSTART6383; GFX900-NEXT:    ; def v[1:2]6384; GFX900-NEXT:    ;;#ASMEND6385; GFX900-NEXT:    s_mov_b32 s4, 0x50401006386; GFX900-NEXT:    v_mov_b32_e32 v3, 06387; GFX900-NEXT:    v_perm_b32 v1, v2, v2, s46388; GFX900-NEXT:    v_alignbit_b32 v0, v2, v0, 166389; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]6390; GFX900-NEXT:    s_waitcnt vmcnt(0)6391; GFX900-NEXT:    s_setpc_b64 s[30:31]6392;6393; GFX90A-LABEL: v_shuffle_v4i16_v3i16__1_5_5_5:6394; GFX90A:       ; %bb.0:6395; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6396; GFX90A-NEXT:    ;;#ASMSTART6397; GFX90A-NEXT:    ; def v[0:1]6398; GFX90A-NEXT:    ;;#ASMEND6399; GFX90A-NEXT:    s_mov_b32 s4, 0x50401006400; GFX90A-NEXT:    v_mov_b32_e32 v4, 06401; GFX90A-NEXT:    ;;#ASMSTART6402; GFX90A-NEXT:    ; def v[2:3]6403; GFX90A-NEXT:    ;;#ASMEND6404; GFX90A-NEXT:    v_perm_b32 v1, v3, v3, s46405; GFX90A-NEXT:    v_alignbit_b32 v0, v3, v0, 166406; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]6407; GFX90A-NEXT:    s_waitcnt vmcnt(0)6408; GFX90A-NEXT:    s_setpc_b64 s[30:31]6409;6410; GFX942-LABEL: v_shuffle_v4i16_v3i16__1_5_5_5:6411; GFX942:       ; %bb.0:6412; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6413; GFX942-NEXT:    ;;#ASMSTART6414; GFX942-NEXT:    ; def v[0:1]6415; GFX942-NEXT:    ;;#ASMEND6416; GFX942-NEXT:    s_mov_b32 s2, 0x50401006417; GFX942-NEXT:    v_mov_b32_e32 v4, 06418; GFX942-NEXT:    ;;#ASMSTART6419; GFX942-NEXT:    ; def v[2:3]6420; GFX942-NEXT:    ;;#ASMEND6421; GFX942-NEXT:    s_nop 06422; GFX942-NEXT:    v_perm_b32 v1, v3, v3, s26423; GFX942-NEXT:    v_alignbit_b32 v0, v3, v0, 166424; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]6425; GFX942-NEXT:    s_waitcnt vmcnt(0)6426; GFX942-NEXT:    s_setpc_b64 s[30:31]6427  %vec0 = call <4 x i16> asm "; def $0", "=v"()6428  %vec1 = call <4 x i16> asm "; def $0", "=v"()6429  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6430  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6431  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 1, i32 5, i32 5, i32 5>6432  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 86433  ret void6434}6435 6436define void @v_shuffle_v4i16_v3i16__2_5_5_5(ptr addrspace(1) inreg %ptr) {6437; GFX900-LABEL: v_shuffle_v4i16_v3i16__2_5_5_5:6438; GFX900:       ; %bb.0:6439; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6440; GFX900-NEXT:    ;;#ASMSTART6441; GFX900-NEXT:    ; def v[0:1]6442; GFX900-NEXT:    ;;#ASMEND6443; GFX900-NEXT:    s_mov_b32 s4, 0x50401006444; GFX900-NEXT:    v_mov_b32_e32 v4, 06445; GFX900-NEXT:    ;;#ASMSTART6446; GFX900-NEXT:    ; def v[2:3]6447; GFX900-NEXT:    ;;#ASMEND6448; GFX900-NEXT:    v_perm_b32 v0, v3, v1, s46449; GFX900-NEXT:    v_perm_b32 v1, v3, v3, s46450; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]6451; GFX900-NEXT:    s_waitcnt vmcnt(0)6452; GFX900-NEXT:    s_setpc_b64 s[30:31]6453;6454; GFX90A-LABEL: v_shuffle_v4i16_v3i16__2_5_5_5:6455; GFX90A:       ; %bb.0:6456; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6457; GFX90A-NEXT:    ;;#ASMSTART6458; GFX90A-NEXT:    ; def v[0:1]6459; GFX90A-NEXT:    ;;#ASMEND6460; GFX90A-NEXT:    s_mov_b32 s4, 0x50401006461; GFX90A-NEXT:    v_mov_b32_e32 v4, 06462; GFX90A-NEXT:    ;;#ASMSTART6463; GFX90A-NEXT:    ; def v[2:3]6464; GFX90A-NEXT:    ;;#ASMEND6465; GFX90A-NEXT:    v_perm_b32 v0, v3, v1, s46466; GFX90A-NEXT:    v_perm_b32 v1, v3, v3, s46467; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]6468; GFX90A-NEXT:    s_waitcnt vmcnt(0)6469; GFX90A-NEXT:    s_setpc_b64 s[30:31]6470;6471; GFX942-LABEL: v_shuffle_v4i16_v3i16__2_5_5_5:6472; GFX942:       ; %bb.0:6473; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6474; GFX942-NEXT:    ;;#ASMSTART6475; GFX942-NEXT:    ; def v[0:1]6476; GFX942-NEXT:    ;;#ASMEND6477; GFX942-NEXT:    s_mov_b32 s2, 0x50401006478; GFX942-NEXT:    v_mov_b32_e32 v4, 06479; GFX942-NEXT:    ;;#ASMSTART6480; GFX942-NEXT:    ; def v[2:3]6481; GFX942-NEXT:    ;;#ASMEND6482; GFX942-NEXT:    s_nop 06483; GFX942-NEXT:    v_perm_b32 v0, v3, v1, s26484; GFX942-NEXT:    v_perm_b32 v1, v3, v3, s26485; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]6486; GFX942-NEXT:    s_waitcnt vmcnt(0)6487; GFX942-NEXT:    s_setpc_b64 s[30:31]6488  %vec0 = call <4 x i16> asm "; def $0", "=v"()6489  %vec1 = call <4 x i16> asm "; def $0", "=v"()6490  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6491  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6492  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 2, i32 5, i32 5, i32 5>6493  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 86494  ret void6495}6496 6497define void @v_shuffle_v4i16_v3i16__3_5_5_5(ptr addrspace(1) inreg %ptr) {6498; GFX900-LABEL: v_shuffle_v4i16_v3i16__3_5_5_5:6499; GFX900:       ; %bb.0:6500; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6501; GFX900-NEXT:    ;;#ASMSTART6502; GFX900-NEXT:    ; def v[0:1]6503; GFX900-NEXT:    ;;#ASMEND6504; GFX900-NEXT:    s_mov_b32 s4, 0x50401006505; GFX900-NEXT:    v_mov_b32_e32 v2, 06506; GFX900-NEXT:    v_perm_b32 v0, v1, v0, s46507; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s46508; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]6509; GFX900-NEXT:    s_waitcnt vmcnt(0)6510; GFX900-NEXT:    s_setpc_b64 s[30:31]6511;6512; GFX90A-LABEL: v_shuffle_v4i16_v3i16__3_5_5_5:6513; GFX90A:       ; %bb.0:6514; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6515; GFX90A-NEXT:    ;;#ASMSTART6516; GFX90A-NEXT:    ; def v[0:1]6517; GFX90A-NEXT:    ;;#ASMEND6518; GFX90A-NEXT:    s_mov_b32 s4, 0x50401006519; GFX90A-NEXT:    v_mov_b32_e32 v2, 06520; GFX90A-NEXT:    v_perm_b32 v0, v1, v0, s46521; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s46522; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]6523; GFX90A-NEXT:    s_waitcnt vmcnt(0)6524; GFX90A-NEXT:    s_setpc_b64 s[30:31]6525;6526; GFX942-LABEL: v_shuffle_v4i16_v3i16__3_5_5_5:6527; GFX942:       ; %bb.0:6528; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6529; GFX942-NEXT:    ;;#ASMSTART6530; GFX942-NEXT:    ; def v[0:1]6531; GFX942-NEXT:    ;;#ASMEND6532; GFX942-NEXT:    s_mov_b32 s2, 0x50401006533; GFX942-NEXT:    v_mov_b32_e32 v2, 06534; GFX942-NEXT:    v_perm_b32 v0, v1, v0, s26535; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s26536; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]6537; GFX942-NEXT:    s_waitcnt vmcnt(0)6538; GFX942-NEXT:    s_setpc_b64 s[30:31]6539  %vec0 = call <4 x i16> asm "; def $0", "=v"()6540  %vec1 = call <4 x i16> asm "; def $0", "=v"()6541  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6542  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6543  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 3, i32 5, i32 5, i32 5>6544  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 86545  ret void6546}6547 6548define void @v_shuffle_v4i16_v3i16__4_5_5_5(ptr addrspace(1) inreg %ptr) {6549; GFX900-LABEL: v_shuffle_v4i16_v3i16__4_5_5_5:6550; GFX900:       ; %bb.0:6551; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6552; GFX900-NEXT:    ;;#ASMSTART6553; GFX900-NEXT:    ; def v[0:1]6554; GFX900-NEXT:    ;;#ASMEND6555; GFX900-NEXT:    s_mov_b32 s4, 0x50401006556; GFX900-NEXT:    v_mov_b32_e32 v3, 06557; GFX900-NEXT:    v_perm_b32 v2, v1, v1, s46558; GFX900-NEXT:    v_alignbit_b32 v1, v1, v0, 166559; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]6560; GFX900-NEXT:    s_waitcnt vmcnt(0)6561; GFX900-NEXT:    s_setpc_b64 s[30:31]6562;6563; GFX90A-LABEL: v_shuffle_v4i16_v3i16__4_5_5_5:6564; GFX90A:       ; %bb.0:6565; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6566; GFX90A-NEXT:    s_mov_b32 s4, 0x50401006567; GFX90A-NEXT:    v_mov_b32_e32 v4, 06568; GFX90A-NEXT:    ;;#ASMSTART6569; GFX90A-NEXT:    ; def v[0:1]6570; GFX90A-NEXT:    ;;#ASMEND6571; GFX90A-NEXT:    v_perm_b32 v3, v1, v1, s46572; GFX90A-NEXT:    v_alignbit_b32 v2, v1, v0, 166573; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]6574; GFX90A-NEXT:    s_waitcnt vmcnt(0)6575; GFX90A-NEXT:    s_setpc_b64 s[30:31]6576;6577; GFX942-LABEL: v_shuffle_v4i16_v3i16__4_5_5_5:6578; GFX942:       ; %bb.0:6579; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6580; GFX942-NEXT:    s_mov_b32 s2, 0x50401006581; GFX942-NEXT:    v_mov_b32_e32 v4, 06582; GFX942-NEXT:    ;;#ASMSTART6583; GFX942-NEXT:    ; def v[0:1]6584; GFX942-NEXT:    ;;#ASMEND6585; GFX942-NEXT:    s_nop 06586; GFX942-NEXT:    v_perm_b32 v3, v1, v1, s26587; GFX942-NEXT:    v_alignbit_b32 v2, v1, v0, 166588; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]6589; GFX942-NEXT:    s_waitcnt vmcnt(0)6590; GFX942-NEXT:    s_setpc_b64 s[30:31]6591  %vec0 = call <4 x i16> asm "; def $0", "=v"()6592  %vec1 = call <4 x i16> asm "; def $0", "=v"()6593  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6594  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6595  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 4, i32 5, i32 5, i32 5>6596  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 86597  ret void6598}6599 6600define void @v_shuffle_v4i16_v3i16__5_u_5_5(ptr addrspace(1) inreg %ptr) {6601; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_u_5_5:6602; GFX900:       ; %bb.0:6603; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6604; GFX900-NEXT:    s_mov_b32 s4, 0x50401006605; GFX900-NEXT:    v_mov_b32_e32 v3, 06606; GFX900-NEXT:    ;;#ASMSTART6607; GFX900-NEXT:    ; def v[0:1]6608; GFX900-NEXT:    ;;#ASMEND6609; GFX900-NEXT:    v_perm_b32 v2, v1, v1, s46610; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]6611; GFX900-NEXT:    s_waitcnt vmcnt(0)6612; GFX900-NEXT:    s_setpc_b64 s[30:31]6613;6614; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_u_5_5:6615; GFX90A:       ; %bb.0:6616; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6617; GFX90A-NEXT:    s_mov_b32 s4, 0x50401006618; GFX90A-NEXT:    v_mov_b32_e32 v4, 06619; GFX90A-NEXT:    ;;#ASMSTART6620; GFX90A-NEXT:    ; def v[0:1]6621; GFX90A-NEXT:    ;;#ASMEND6622; GFX90A-NEXT:    v_perm_b32 v3, v1, v1, s46623; GFX90A-NEXT:    v_mov_b32_e32 v2, v16624; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]6625; GFX90A-NEXT:    s_waitcnt vmcnt(0)6626; GFX90A-NEXT:    s_setpc_b64 s[30:31]6627;6628; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_u_5_5:6629; GFX942:       ; %bb.0:6630; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6631; GFX942-NEXT:    s_mov_b32 s2, 0x50401006632; GFX942-NEXT:    v_mov_b32_e32 v4, 06633; GFX942-NEXT:    ;;#ASMSTART6634; GFX942-NEXT:    ; def v[0:1]6635; GFX942-NEXT:    ;;#ASMEND6636; GFX942-NEXT:    s_nop 06637; GFX942-NEXT:    v_perm_b32 v3, v1, v1, s26638; GFX942-NEXT:    v_mov_b32_e32 v2, v16639; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]6640; GFX942-NEXT:    s_waitcnt vmcnt(0)6641; GFX942-NEXT:    s_setpc_b64 s[30:31]6642  %vec0 = call <4 x i16> asm "; def $0", "=v"()6643  %vec1 = call <4 x i16> asm "; def $0", "=v"()6644  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6645  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6646  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 poison, i32 5, i32 5>6647  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 86648  ret void6649}6650 6651define void @v_shuffle_v4i16_v3i16__5_0_5_5(ptr addrspace(1) inreg %ptr) {6652; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_0_5_5:6653; GFX900:       ; %bb.0:6654; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6655; GFX900-NEXT:    ;;#ASMSTART6656; GFX900-NEXT:    ; def v[0:1]6657; GFX900-NEXT:    ;;#ASMEND6658; GFX900-NEXT:    ;;#ASMSTART6659; GFX900-NEXT:    ; def v[1:2]6660; GFX900-NEXT:    ;;#ASMEND6661; GFX900-NEXT:    s_mov_b32 s4, 0x50401006662; GFX900-NEXT:    v_mov_b32_e32 v3, 06663; GFX900-NEXT:    v_perm_b32 v0, v0, v2, s46664; GFX900-NEXT:    v_perm_b32 v1, v2, v2, s46665; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]6666; GFX900-NEXT:    s_waitcnt vmcnt(0)6667; GFX900-NEXT:    s_setpc_b64 s[30:31]6668;6669; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_0_5_5:6670; GFX90A:       ; %bb.0:6671; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6672; GFX90A-NEXT:    ;;#ASMSTART6673; GFX90A-NEXT:    ; def v[0:1]6674; GFX90A-NEXT:    ;;#ASMEND6675; GFX90A-NEXT:    s_mov_b32 s4, 0x50401006676; GFX90A-NEXT:    v_mov_b32_e32 v4, 06677; GFX90A-NEXT:    ;;#ASMSTART6678; GFX90A-NEXT:    ; def v[2:3]6679; GFX90A-NEXT:    ;;#ASMEND6680; GFX90A-NEXT:    v_perm_b32 v0, v0, v3, s46681; GFX90A-NEXT:    v_perm_b32 v1, v3, v3, s46682; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]6683; GFX90A-NEXT:    s_waitcnt vmcnt(0)6684; GFX90A-NEXT:    s_setpc_b64 s[30:31]6685;6686; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_0_5_5:6687; GFX942:       ; %bb.0:6688; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6689; GFX942-NEXT:    ;;#ASMSTART6690; GFX942-NEXT:    ; def v[0:1]6691; GFX942-NEXT:    ;;#ASMEND6692; GFX942-NEXT:    s_mov_b32 s2, 0x50401006693; GFX942-NEXT:    v_mov_b32_e32 v4, 06694; GFX942-NEXT:    ;;#ASMSTART6695; GFX942-NEXT:    ; def v[2:3]6696; GFX942-NEXT:    ;;#ASMEND6697; GFX942-NEXT:    s_nop 06698; GFX942-NEXT:    v_perm_b32 v0, v0, v3, s26699; GFX942-NEXT:    v_perm_b32 v1, v3, v3, s26700; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]6701; GFX942-NEXT:    s_waitcnt vmcnt(0)6702; GFX942-NEXT:    s_setpc_b64 s[30:31]6703  %vec0 = call <4 x i16> asm "; def $0", "=v"()6704  %vec1 = call <4 x i16> asm "; def $0", "=v"()6705  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6706  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6707  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 0, i32 5, i32 5>6708  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 86709  ret void6710}6711 6712define void @v_shuffle_v4i16_v3i16__5_1_5_5(ptr addrspace(1) inreg %ptr) {6713; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_1_5_5:6714; GFX900:       ; %bb.0:6715; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6716; GFX900-NEXT:    ;;#ASMSTART6717; GFX900-NEXT:    ; def v[0:1]6718; GFX900-NEXT:    ;;#ASMEND6719; GFX900-NEXT:    s_mov_b32 s4, 0xffff6720; GFX900-NEXT:    ;;#ASMSTART6721; GFX900-NEXT:    ; def v[1:2]6722; GFX900-NEXT:    ;;#ASMEND6723; GFX900-NEXT:    v_bfi_b32 v0, s4, v2, v06724; GFX900-NEXT:    s_mov_b32 s4, 0x50401006725; GFX900-NEXT:    v_mov_b32_e32 v3, 06726; GFX900-NEXT:    v_perm_b32 v1, v2, v2, s46727; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]6728; GFX900-NEXT:    s_waitcnt vmcnt(0)6729; GFX900-NEXT:    s_setpc_b64 s[30:31]6730;6731; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_1_5_5:6732; GFX90A:       ; %bb.0:6733; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6734; GFX90A-NEXT:    ;;#ASMSTART6735; GFX90A-NEXT:    ; def v[0:1]6736; GFX90A-NEXT:    ;;#ASMEND6737; GFX90A-NEXT:    s_mov_b32 s4, 0xffff6738; GFX90A-NEXT:    ;;#ASMSTART6739; GFX90A-NEXT:    ; def v[2:3]6740; GFX90A-NEXT:    ;;#ASMEND6741; GFX90A-NEXT:    v_bfi_b32 v0, s4, v3, v06742; GFX90A-NEXT:    s_mov_b32 s4, 0x50401006743; GFX90A-NEXT:    v_mov_b32_e32 v4, 06744; GFX90A-NEXT:    v_perm_b32 v1, v3, v3, s46745; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]6746; GFX90A-NEXT:    s_waitcnt vmcnt(0)6747; GFX90A-NEXT:    s_setpc_b64 s[30:31]6748;6749; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_1_5_5:6750; GFX942:       ; %bb.0:6751; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6752; GFX942-NEXT:    ;;#ASMSTART6753; GFX942-NEXT:    ; def v[0:1]6754; GFX942-NEXT:    ;;#ASMEND6755; GFX942-NEXT:    s_mov_b32 s2, 0xffff6756; GFX942-NEXT:    ;;#ASMSTART6757; GFX942-NEXT:    ; def v[2:3]6758; GFX942-NEXT:    ;;#ASMEND6759; GFX942-NEXT:    v_mov_b32_e32 v4, 06760; GFX942-NEXT:    v_bfi_b32 v0, s2, v3, v06761; GFX942-NEXT:    s_mov_b32 s2, 0x50401006762; GFX942-NEXT:    v_perm_b32 v1, v3, v3, s26763; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]6764; GFX942-NEXT:    s_waitcnt vmcnt(0)6765; GFX942-NEXT:    s_setpc_b64 s[30:31]6766  %vec0 = call <4 x i16> asm "; def $0", "=v"()6767  %vec1 = call <4 x i16> asm "; def $0", "=v"()6768  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6769  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6770  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 1, i32 5, i32 5>6771  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 86772  ret void6773}6774 6775define void @v_shuffle_v4i16_v3i16__5_2_5_5(ptr addrspace(1) inreg %ptr) {6776; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_2_5_5:6777; GFX900:       ; %bb.0:6778; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6779; GFX900-NEXT:    ;;#ASMSTART6780; GFX900-NEXT:    ; def v[0:1]6781; GFX900-NEXT:    ;;#ASMEND6782; GFX900-NEXT:    s_mov_b32 s4, 0x50401006783; GFX900-NEXT:    v_mov_b32_e32 v4, 06784; GFX900-NEXT:    ;;#ASMSTART6785; GFX900-NEXT:    ; def v[2:3]6786; GFX900-NEXT:    ;;#ASMEND6787; GFX900-NEXT:    v_perm_b32 v0, v1, v3, s46788; GFX900-NEXT:    v_perm_b32 v1, v3, v3, s46789; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]6790; GFX900-NEXT:    s_waitcnt vmcnt(0)6791; GFX900-NEXT:    s_setpc_b64 s[30:31]6792;6793; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_2_5_5:6794; GFX90A:       ; %bb.0:6795; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6796; GFX90A-NEXT:    ;;#ASMSTART6797; GFX90A-NEXT:    ; def v[0:1]6798; GFX90A-NEXT:    ;;#ASMEND6799; GFX90A-NEXT:    s_mov_b32 s4, 0x50401006800; GFX90A-NEXT:    v_mov_b32_e32 v4, 06801; GFX90A-NEXT:    ;;#ASMSTART6802; GFX90A-NEXT:    ; def v[2:3]6803; GFX90A-NEXT:    ;;#ASMEND6804; GFX90A-NEXT:    v_perm_b32 v0, v1, v3, s46805; GFX90A-NEXT:    v_perm_b32 v1, v3, v3, s46806; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]6807; GFX90A-NEXT:    s_waitcnt vmcnt(0)6808; GFX90A-NEXT:    s_setpc_b64 s[30:31]6809;6810; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_2_5_5:6811; GFX942:       ; %bb.0:6812; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6813; GFX942-NEXT:    ;;#ASMSTART6814; GFX942-NEXT:    ; def v[0:1]6815; GFX942-NEXT:    ;;#ASMEND6816; GFX942-NEXT:    s_mov_b32 s2, 0x50401006817; GFX942-NEXT:    v_mov_b32_e32 v4, 06818; GFX942-NEXT:    ;;#ASMSTART6819; GFX942-NEXT:    ; def v[2:3]6820; GFX942-NEXT:    ;;#ASMEND6821; GFX942-NEXT:    s_nop 06822; GFX942-NEXT:    v_perm_b32 v0, v1, v3, s26823; GFX942-NEXT:    v_perm_b32 v1, v3, v3, s26824; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]6825; GFX942-NEXT:    s_waitcnt vmcnt(0)6826; GFX942-NEXT:    s_setpc_b64 s[30:31]6827  %vec0 = call <4 x i16> asm "; def $0", "=v"()6828  %vec1 = call <4 x i16> asm "; def $0", "=v"()6829  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6830  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6831  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 2, i32 5, i32 5>6832  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 86833  ret void6834}6835 6836define void @v_shuffle_v4i16_v3i16__5_3_5_5(ptr addrspace(1) inreg %ptr) {6837; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_3_5_5:6838; GFX900:       ; %bb.0:6839; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6840; GFX900-NEXT:    ;;#ASMSTART6841; GFX900-NEXT:    ; def v[0:1]6842; GFX900-NEXT:    ;;#ASMEND6843; GFX900-NEXT:    s_mov_b32 s4, 0x50401006844; GFX900-NEXT:    v_mov_b32_e32 v2, 06845; GFX900-NEXT:    v_perm_b32 v0, v0, v1, s46846; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s46847; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]6848; GFX900-NEXT:    s_waitcnt vmcnt(0)6849; GFX900-NEXT:    s_setpc_b64 s[30:31]6850;6851; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_3_5_5:6852; GFX90A:       ; %bb.0:6853; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6854; GFX90A-NEXT:    ;;#ASMSTART6855; GFX90A-NEXT:    ; def v[0:1]6856; GFX90A-NEXT:    ;;#ASMEND6857; GFX90A-NEXT:    s_mov_b32 s4, 0x50401006858; GFX90A-NEXT:    v_mov_b32_e32 v2, 06859; GFX90A-NEXT:    v_perm_b32 v0, v0, v1, s46860; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s46861; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]6862; GFX90A-NEXT:    s_waitcnt vmcnt(0)6863; GFX90A-NEXT:    s_setpc_b64 s[30:31]6864;6865; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_3_5_5:6866; GFX942:       ; %bb.0:6867; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6868; GFX942-NEXT:    ;;#ASMSTART6869; GFX942-NEXT:    ; def v[0:1]6870; GFX942-NEXT:    ;;#ASMEND6871; GFX942-NEXT:    s_mov_b32 s2, 0x50401006872; GFX942-NEXT:    v_mov_b32_e32 v2, 06873; GFX942-NEXT:    v_perm_b32 v0, v0, v1, s26874; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s26875; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]6876; GFX942-NEXT:    s_waitcnt vmcnt(0)6877; GFX942-NEXT:    s_setpc_b64 s[30:31]6878  %vec0 = call <4 x i16> asm "; def $0", "=v"()6879  %vec1 = call <4 x i16> asm "; def $0", "=v"()6880  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6881  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6882  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 3, i32 5, i32 5>6883  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 86884  ret void6885}6886 6887define void @v_shuffle_v4i16_v3i16__5_4_5_5(ptr addrspace(1) inreg %ptr) {6888; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_4_5_5:6889; GFX900:       ; %bb.0:6890; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6891; GFX900-NEXT:    ;;#ASMSTART6892; GFX900-NEXT:    ; def v[0:1]6893; GFX900-NEXT:    ;;#ASMEND6894; GFX900-NEXT:    s_mov_b32 s4, 0xffff6895; GFX900-NEXT:    v_bfi_b32 v0, s4, v1, v06896; GFX900-NEXT:    s_mov_b32 s4, 0x50401006897; GFX900-NEXT:    v_mov_b32_e32 v2, 06898; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s46899; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]6900; GFX900-NEXT:    s_waitcnt vmcnt(0)6901; GFX900-NEXT:    s_setpc_b64 s[30:31]6902;6903; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_4_5_5:6904; GFX90A:       ; %bb.0:6905; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6906; GFX90A-NEXT:    ;;#ASMSTART6907; GFX90A-NEXT:    ; def v[0:1]6908; GFX90A-NEXT:    ;;#ASMEND6909; GFX90A-NEXT:    s_mov_b32 s4, 0xffff6910; GFX90A-NEXT:    v_bfi_b32 v0, s4, v1, v06911; GFX90A-NEXT:    s_mov_b32 s4, 0x50401006912; GFX90A-NEXT:    v_mov_b32_e32 v2, 06913; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s46914; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]6915; GFX90A-NEXT:    s_waitcnt vmcnt(0)6916; GFX90A-NEXT:    s_setpc_b64 s[30:31]6917;6918; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_4_5_5:6919; GFX942:       ; %bb.0:6920; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6921; GFX942-NEXT:    ;;#ASMSTART6922; GFX942-NEXT:    ; def v[0:1]6923; GFX942-NEXT:    ;;#ASMEND6924; GFX942-NEXT:    s_mov_b32 s2, 0xffff6925; GFX942-NEXT:    v_bfi_b32 v0, s2, v1, v06926; GFX942-NEXT:    s_mov_b32 s2, 0x50401006927; GFX942-NEXT:    v_mov_b32_e32 v2, 06928; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s26929; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]6930; GFX942-NEXT:    s_waitcnt vmcnt(0)6931; GFX942-NEXT:    s_setpc_b64 s[30:31]6932  %vec0 = call <4 x i16> asm "; def $0", "=v"()6933  %vec1 = call <4 x i16> asm "; def $0", "=v"()6934  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6935  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6936  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 4, i32 5, i32 5>6937  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 86938  ret void6939}6940 6941define void @v_shuffle_v4i16_v3i16__5_5_u_5(ptr addrspace(1) inreg %ptr) {6942; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_u_5:6943; GFX900:       ; %bb.0:6944; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6945; GFX900-NEXT:    ;;#ASMSTART6946; GFX900-NEXT:    ; def v[0:1]6947; GFX900-NEXT:    ;;#ASMEND6948; GFX900-NEXT:    s_mov_b32 s4, 0x50401006949; GFX900-NEXT:    v_mov_b32_e32 v2, 06950; GFX900-NEXT:    v_perm_b32 v0, v1, v1, s46951; GFX900-NEXT:    v_lshlrev_b32_e32 v1, 16, v16952; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]6953; GFX900-NEXT:    s_waitcnt vmcnt(0)6954; GFX900-NEXT:    s_setpc_b64 s[30:31]6955;6956; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_u_5:6957; GFX90A:       ; %bb.0:6958; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6959; GFX90A-NEXT:    ;;#ASMSTART6960; GFX90A-NEXT:    ; def v[0:1]6961; GFX90A-NEXT:    ;;#ASMEND6962; GFX90A-NEXT:    s_mov_b32 s4, 0x50401006963; GFX90A-NEXT:    v_mov_b32_e32 v2, 06964; GFX90A-NEXT:    v_perm_b32 v0, v1, v1, s46965; GFX90A-NEXT:    v_lshlrev_b32_e32 v1, 16, v16966; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]6967; GFX90A-NEXT:    s_waitcnt vmcnt(0)6968; GFX90A-NEXT:    s_setpc_b64 s[30:31]6969;6970; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_u_5:6971; GFX942:       ; %bb.0:6972; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6973; GFX942-NEXT:    ;;#ASMSTART6974; GFX942-NEXT:    ; def v[0:1]6975; GFX942-NEXT:    ;;#ASMEND6976; GFX942-NEXT:    s_mov_b32 s2, 0x50401006977; GFX942-NEXT:    v_mov_b32_e32 v2, 06978; GFX942-NEXT:    v_perm_b32 v0, v1, v1, s26979; GFX942-NEXT:    v_lshlrev_b32_e32 v1, 16, v16980; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]6981; GFX942-NEXT:    s_waitcnt vmcnt(0)6982; GFX942-NEXT:    s_setpc_b64 s[30:31]6983  %vec0 = call <4 x i16> asm "; def $0", "=v"()6984  %vec1 = call <4 x i16> asm "; def $0", "=v"()6985  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6986  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>6987  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 poison, i32 5>6988  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 86989  ret void6990}6991 6992define void @v_shuffle_v4i16_v3i16__5_5_0_5(ptr addrspace(1) inreg %ptr) {6993; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_0_5:6994; GFX900:       ; %bb.0:6995; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6996; GFX900-NEXT:    ;;#ASMSTART6997; GFX900-NEXT:    ; def v[0:1]6998; GFX900-NEXT:    ;;#ASMEND6999; GFX900-NEXT:    ;;#ASMSTART7000; GFX900-NEXT:    ; def v[1:2]7001; GFX900-NEXT:    ;;#ASMEND7002; GFX900-NEXT:    s_mov_b32 s4, 0x50401007003; GFX900-NEXT:    v_mov_b32_e32 v3, 07004; GFX900-NEXT:    v_perm_b32 v1, v2, v0, s47005; GFX900-NEXT:    v_perm_b32 v0, v2, v2, s47006; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]7007; GFX900-NEXT:    s_waitcnt vmcnt(0)7008; GFX900-NEXT:    s_setpc_b64 s[30:31]7009;7010; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_0_5:7011; GFX90A:       ; %bb.0:7012; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7013; GFX90A-NEXT:    ;;#ASMSTART7014; GFX90A-NEXT:    ; def v[0:1]7015; GFX90A-NEXT:    ;;#ASMEND7016; GFX90A-NEXT:    s_mov_b32 s4, 0x50401007017; GFX90A-NEXT:    v_mov_b32_e32 v4, 07018; GFX90A-NEXT:    ;;#ASMSTART7019; GFX90A-NEXT:    ; def v[2:3]7020; GFX90A-NEXT:    ;;#ASMEND7021; GFX90A-NEXT:    v_perm_b32 v1, v3, v0, s47022; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s47023; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]7024; GFX90A-NEXT:    s_waitcnt vmcnt(0)7025; GFX90A-NEXT:    s_setpc_b64 s[30:31]7026;7027; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_0_5:7028; GFX942:       ; %bb.0:7029; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7030; GFX942-NEXT:    ;;#ASMSTART7031; GFX942-NEXT:    ; def v[0:1]7032; GFX942-NEXT:    ;;#ASMEND7033; GFX942-NEXT:    s_mov_b32 s2, 0x50401007034; GFX942-NEXT:    v_mov_b32_e32 v4, 07035; GFX942-NEXT:    ;;#ASMSTART7036; GFX942-NEXT:    ; def v[2:3]7037; GFX942-NEXT:    ;;#ASMEND7038; GFX942-NEXT:    s_nop 07039; GFX942-NEXT:    v_perm_b32 v1, v3, v0, s27040; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s27041; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]7042; GFX942-NEXT:    s_waitcnt vmcnt(0)7043; GFX942-NEXT:    s_setpc_b64 s[30:31]7044  %vec0 = call <4 x i16> asm "; def $0", "=v"()7045  %vec1 = call <4 x i16> asm "; def $0", "=v"()7046  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7047  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7048  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 0, i32 5>7049  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 87050  ret void7051}7052 7053define void @v_shuffle_v4i16_v3i16__5_5_1_5(ptr addrspace(1) inreg %ptr) {7054; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_1_5:7055; GFX900:       ; %bb.0:7056; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7057; GFX900-NEXT:    ;;#ASMSTART7058; GFX900-NEXT:    ; def v[0:1]7059; GFX900-NEXT:    ;;#ASMEND7060; GFX900-NEXT:    ;;#ASMSTART7061; GFX900-NEXT:    ; def v[1:2]7062; GFX900-NEXT:    ;;#ASMEND7063; GFX900-NEXT:    s_mov_b32 s4, 0x50401007064; GFX900-NEXT:    v_mov_b32_e32 v3, 07065; GFX900-NEXT:    v_alignbit_b32 v1, v2, v0, 167066; GFX900-NEXT:    v_perm_b32 v0, v2, v2, s47067; GFX900-NEXT:    global_store_dwordx2 v3, v[0:1], s[16:17]7068; GFX900-NEXT:    s_waitcnt vmcnt(0)7069; GFX900-NEXT:    s_setpc_b64 s[30:31]7070;7071; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_1_5:7072; GFX90A:       ; %bb.0:7073; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7074; GFX90A-NEXT:    ;;#ASMSTART7075; GFX90A-NEXT:    ; def v[0:1]7076; GFX90A-NEXT:    ;;#ASMEND7077; GFX90A-NEXT:    s_mov_b32 s4, 0x50401007078; GFX90A-NEXT:    v_mov_b32_e32 v4, 07079; GFX90A-NEXT:    ;;#ASMSTART7080; GFX90A-NEXT:    ; def v[2:3]7081; GFX90A-NEXT:    ;;#ASMEND7082; GFX90A-NEXT:    v_alignbit_b32 v1, v3, v0, 167083; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s47084; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]7085; GFX90A-NEXT:    s_waitcnt vmcnt(0)7086; GFX90A-NEXT:    s_setpc_b64 s[30:31]7087;7088; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_1_5:7089; GFX942:       ; %bb.0:7090; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7091; GFX942-NEXT:    ;;#ASMSTART7092; GFX942-NEXT:    ; def v[0:1]7093; GFX942-NEXT:    ;;#ASMEND7094; GFX942-NEXT:    s_mov_b32 s2, 0x50401007095; GFX942-NEXT:    v_mov_b32_e32 v4, 07096; GFX942-NEXT:    ;;#ASMSTART7097; GFX942-NEXT:    ; def v[2:3]7098; GFX942-NEXT:    ;;#ASMEND7099; GFX942-NEXT:    s_nop 07100; GFX942-NEXT:    v_alignbit_b32 v1, v3, v0, 167101; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s27102; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]7103; GFX942-NEXT:    s_waitcnt vmcnt(0)7104; GFX942-NEXT:    s_setpc_b64 s[30:31]7105  %vec0 = call <4 x i16> asm "; def $0", "=v"()7106  %vec1 = call <4 x i16> asm "; def $0", "=v"()7107  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7108  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7109  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 1, i32 5>7110  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 87111  ret void7112}7113 7114define void @v_shuffle_v4i16_v3i16__5_5_2_5(ptr addrspace(1) inreg %ptr) {7115; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_2_5:7116; GFX900:       ; %bb.0:7117; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7118; GFX900-NEXT:    ;;#ASMSTART7119; GFX900-NEXT:    ; def v[0:1]7120; GFX900-NEXT:    ;;#ASMEND7121; GFX900-NEXT:    s_mov_b32 s4, 0x50401007122; GFX900-NEXT:    v_mov_b32_e32 v4, 07123; GFX900-NEXT:    ;;#ASMSTART7124; GFX900-NEXT:    ; def v[2:3]7125; GFX900-NEXT:    ;;#ASMEND7126; GFX900-NEXT:    v_perm_b32 v1, v3, v1, s47127; GFX900-NEXT:    v_perm_b32 v0, v3, v3, s47128; GFX900-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]7129; GFX900-NEXT:    s_waitcnt vmcnt(0)7130; GFX900-NEXT:    s_setpc_b64 s[30:31]7131;7132; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_2_5:7133; GFX90A:       ; %bb.0:7134; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7135; GFX90A-NEXT:    ;;#ASMSTART7136; GFX90A-NEXT:    ; def v[0:1]7137; GFX90A-NEXT:    ;;#ASMEND7138; GFX90A-NEXT:    s_mov_b32 s4, 0x50401007139; GFX90A-NEXT:    v_mov_b32_e32 v4, 07140; GFX90A-NEXT:    ;;#ASMSTART7141; GFX90A-NEXT:    ; def v[2:3]7142; GFX90A-NEXT:    ;;#ASMEND7143; GFX90A-NEXT:    v_perm_b32 v1, v3, v1, s47144; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s47145; GFX90A-NEXT:    global_store_dwordx2 v4, v[0:1], s[16:17]7146; GFX90A-NEXT:    s_waitcnt vmcnt(0)7147; GFX90A-NEXT:    s_setpc_b64 s[30:31]7148;7149; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_2_5:7150; GFX942:       ; %bb.0:7151; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7152; GFX942-NEXT:    ;;#ASMSTART7153; GFX942-NEXT:    ; def v[0:1]7154; GFX942-NEXT:    ;;#ASMEND7155; GFX942-NEXT:    s_mov_b32 s2, 0x50401007156; GFX942-NEXT:    v_mov_b32_e32 v4, 07157; GFX942-NEXT:    ;;#ASMSTART7158; GFX942-NEXT:    ; def v[2:3]7159; GFX942-NEXT:    ;;#ASMEND7160; GFX942-NEXT:    s_nop 07161; GFX942-NEXT:    v_perm_b32 v1, v3, v1, s27162; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s27163; GFX942-NEXT:    global_store_dwordx2 v4, v[0:1], s[0:1]7164; GFX942-NEXT:    s_waitcnt vmcnt(0)7165; GFX942-NEXT:    s_setpc_b64 s[30:31]7166  %vec0 = call <4 x i16> asm "; def $0", "=v"()7167  %vec1 = call <4 x i16> asm "; def $0", "=v"()7168  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7169  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7170  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 2, i32 5>7171  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 87172  ret void7173}7174 7175define void @v_shuffle_v4i16_v3i16__5_5_3_5(ptr addrspace(1) inreg %ptr) {7176; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_3_5:7177; GFX900:       ; %bb.0:7178; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7179; GFX900-NEXT:    ;;#ASMSTART7180; GFX900-NEXT:    ; def v[0:1]7181; GFX900-NEXT:    ;;#ASMEND7182; GFX900-NEXT:    s_mov_b32 s4, 0x50401007183; GFX900-NEXT:    v_mov_b32_e32 v3, 07184; GFX900-NEXT:    v_perm_b32 v2, v1, v0, s47185; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s47186; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]7187; GFX900-NEXT:    s_waitcnt vmcnt(0)7188; GFX900-NEXT:    s_setpc_b64 s[30:31]7189;7190; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_3_5:7191; GFX90A:       ; %bb.0:7192; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7193; GFX90A-NEXT:    s_mov_b32 s4, 0x50401007194; GFX90A-NEXT:    v_mov_b32_e32 v4, 07195; GFX90A-NEXT:    ;;#ASMSTART7196; GFX90A-NEXT:    ; def v[0:1]7197; GFX90A-NEXT:    ;;#ASMEND7198; GFX90A-NEXT:    v_perm_b32 v3, v1, v0, s47199; GFX90A-NEXT:    v_perm_b32 v2, v1, v1, s47200; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]7201; GFX90A-NEXT:    s_waitcnt vmcnt(0)7202; GFX90A-NEXT:    s_setpc_b64 s[30:31]7203;7204; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_3_5:7205; GFX942:       ; %bb.0:7206; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7207; GFX942-NEXT:    s_mov_b32 s2, 0x50401007208; GFX942-NEXT:    v_mov_b32_e32 v4, 07209; GFX942-NEXT:    ;;#ASMSTART7210; GFX942-NEXT:    ; def v[0:1]7211; GFX942-NEXT:    ;;#ASMEND7212; GFX942-NEXT:    s_nop 07213; GFX942-NEXT:    v_perm_b32 v3, v1, v0, s27214; GFX942-NEXT:    v_perm_b32 v2, v1, v1, s27215; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]7216; GFX942-NEXT:    s_waitcnt vmcnt(0)7217; GFX942-NEXT:    s_setpc_b64 s[30:31]7218  %vec0 = call <4 x i16> asm "; def $0", "=v"()7219  %vec1 = call <4 x i16> asm "; def $0", "=v"()7220  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7221  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7222  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 3, i32 5>7223  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 87224  ret void7225}7226 7227define void @v_shuffle_v4i16_v3i16__5_5_4_5(ptr addrspace(1) inreg %ptr) {7228; GFX900-LABEL: v_shuffle_v4i16_v3i16__5_5_4_5:7229; GFX900:       ; %bb.0:7230; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7231; GFX900-NEXT:    ;;#ASMSTART7232; GFX900-NEXT:    ; def v[0:1]7233; GFX900-NEXT:    ;;#ASMEND7234; GFX900-NEXT:    s_mov_b32 s4, 0x50401007235; GFX900-NEXT:    v_mov_b32_e32 v3, 07236; GFX900-NEXT:    v_alignbit_b32 v2, v1, v0, 167237; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s47238; GFX900-NEXT:    global_store_dwordx2 v3, v[1:2], s[16:17]7239; GFX900-NEXT:    s_waitcnt vmcnt(0)7240; GFX900-NEXT:    s_setpc_b64 s[30:31]7241;7242; GFX90A-LABEL: v_shuffle_v4i16_v3i16__5_5_4_5:7243; GFX90A:       ; %bb.0:7244; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7245; GFX90A-NEXT:    s_mov_b32 s4, 0x50401007246; GFX90A-NEXT:    v_mov_b32_e32 v4, 07247; GFX90A-NEXT:    ;;#ASMSTART7248; GFX90A-NEXT:    ; def v[0:1]7249; GFX90A-NEXT:    ;;#ASMEND7250; GFX90A-NEXT:    v_alignbit_b32 v3, v1, v0, 167251; GFX90A-NEXT:    v_perm_b32 v2, v1, v1, s47252; GFX90A-NEXT:    global_store_dwordx2 v4, v[2:3], s[16:17]7253; GFX90A-NEXT:    s_waitcnt vmcnt(0)7254; GFX90A-NEXT:    s_setpc_b64 s[30:31]7255;7256; GFX942-LABEL: v_shuffle_v4i16_v3i16__5_5_4_5:7257; GFX942:       ; %bb.0:7258; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7259; GFX942-NEXT:    s_mov_b32 s2, 0x50401007260; GFX942-NEXT:    v_mov_b32_e32 v4, 07261; GFX942-NEXT:    ;;#ASMSTART7262; GFX942-NEXT:    ; def v[0:1]7263; GFX942-NEXT:    ;;#ASMEND7264; GFX942-NEXT:    s_nop 07265; GFX942-NEXT:    v_alignbit_b32 v3, v1, v0, 167266; GFX942-NEXT:    v_perm_b32 v2, v1, v1, s27267; GFX942-NEXT:    global_store_dwordx2 v4, v[2:3], s[0:1]7268; GFX942-NEXT:    s_waitcnt vmcnt(0)7269; GFX942-NEXT:    s_setpc_b64 s[30:31]7270  %vec0 = call <4 x i16> asm "; def $0", "=v"()7271  %vec1 = call <4 x i16> asm "; def $0", "=v"()7272  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7273  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7274  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 4, i32 5>7275  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 87276  ret void7277}7278 7279define void @s_shuffle_v4i16_v3i16__u_u_u_u() {7280; GFX9-LABEL: s_shuffle_v4i16_v3i16__u_u_u_u:7281; GFX9:       ; %bb.0:7282; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7283; GFX9-NEXT:    ;;#ASMSTART7284; GFX9-NEXT:    ; use s[8:9]7285; GFX9-NEXT:    ;;#ASMEND7286; GFX9-NEXT:    s_setpc_b64 s[30:31]7287  %vec0 = call <4 x i16> asm "; def $0", "=s"()7288  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7289  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> poison7290  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)7291  ret void7292}7293 7294define void @s_shuffle_v4i16_v3i16__0_u_u_u() {7295; GFX900-LABEL: s_shuffle_v4i16_v3i16__0_u_u_u:7296; GFX900:       ; %bb.0:7297; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7298; GFX900-NEXT:    ;;#ASMSTART7299; GFX900-NEXT:    ; def s[8:9]7300; GFX900-NEXT:    ;;#ASMEND7301; GFX900-NEXT:    ;;#ASMSTART7302; GFX900-NEXT:    ; use s[8:9]7303; GFX900-NEXT:    ;;#ASMEND7304; GFX900-NEXT:    s_setpc_b64 s[30:31]7305;7306; GFX90A-LABEL: s_shuffle_v4i16_v3i16__0_u_u_u:7307; GFX90A:       ; %bb.0:7308; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7309; GFX90A-NEXT:    ;;#ASMSTART7310; GFX90A-NEXT:    ; def s[8:9]7311; GFX90A-NEXT:    ;;#ASMEND7312; GFX90A-NEXT:    ;;#ASMSTART7313; GFX90A-NEXT:    ; use s[8:9]7314; GFX90A-NEXT:    ;;#ASMEND7315; GFX90A-NEXT:    s_setpc_b64 s[30:31]7316;7317; GFX942-LABEL: s_shuffle_v4i16_v3i16__0_u_u_u:7318; GFX942:       ; %bb.0:7319; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7320; GFX942-NEXT:    ;;#ASMSTART7321; GFX942-NEXT:    ; def s[8:9]7322; GFX942-NEXT:    ;;#ASMEND7323; GFX942-NEXT:    s_nop 07324; GFX942-NEXT:    ;;#ASMSTART7325; GFX942-NEXT:    ; use s[8:9]7326; GFX942-NEXT:    ;;#ASMEND7327; GFX942-NEXT:    s_setpc_b64 s[30:31]7328  %vec0 = call <4 x i16> asm "; def $0", "=s"()7329  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7330  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>7331  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)7332  ret void7333}7334 7335define void @s_shuffle_v4i16_v3i16__1_u_u_u() {7336; GFX900-LABEL: s_shuffle_v4i16_v3i16__1_u_u_u:7337; GFX900:       ; %bb.0:7338; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7339; GFX900-NEXT:    ;;#ASMSTART7340; GFX900-NEXT:    ; def s[4:5]7341; GFX900-NEXT:    ;;#ASMEND7342; GFX900-NEXT:    s_lshr_b32 s8, s4, 167343; GFX900-NEXT:    ;;#ASMSTART7344; GFX900-NEXT:    ; use s[8:9]7345; GFX900-NEXT:    ;;#ASMEND7346; GFX900-NEXT:    s_setpc_b64 s[30:31]7347;7348; GFX90A-LABEL: s_shuffle_v4i16_v3i16__1_u_u_u:7349; GFX90A:       ; %bb.0:7350; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7351; GFX90A-NEXT:    ;;#ASMSTART7352; GFX90A-NEXT:    ; def s[4:5]7353; GFX90A-NEXT:    ;;#ASMEND7354; GFX90A-NEXT:    s_lshr_b32 s8, s4, 167355; GFX90A-NEXT:    ;;#ASMSTART7356; GFX90A-NEXT:    ; use s[8:9]7357; GFX90A-NEXT:    ;;#ASMEND7358; GFX90A-NEXT:    s_setpc_b64 s[30:31]7359;7360; GFX942-LABEL: s_shuffle_v4i16_v3i16__1_u_u_u:7361; GFX942:       ; %bb.0:7362; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7363; GFX942-NEXT:    ;;#ASMSTART7364; GFX942-NEXT:    ; def s[0:1]7365; GFX942-NEXT:    ;;#ASMEND7366; GFX942-NEXT:    s_lshr_b32 s8, s0, 167367; GFX942-NEXT:    ;;#ASMSTART7368; GFX942-NEXT:    ; use s[8:9]7369; GFX942-NEXT:    ;;#ASMEND7370; GFX942-NEXT:    s_setpc_b64 s[30:31]7371  %vec0 = call <4 x i16> asm "; def $0", "=s"()7372  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7373  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>7374  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)7375  ret void7376}7377 7378define void @s_shuffle_v4i16_v3i16__2_u_u_u() {7379; GFX900-LABEL: s_shuffle_v4i16_v3i16__2_u_u_u:7380; GFX900:       ; %bb.0:7381; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7382; GFX900-NEXT:    ;;#ASMSTART7383; GFX900-NEXT:    ; def s[4:5]7384; GFX900-NEXT:    ;;#ASMEND7385; GFX900-NEXT:    s_mov_b32 s8, s57386; GFX900-NEXT:    ;;#ASMSTART7387; GFX900-NEXT:    ; use s[8:9]7388; GFX900-NEXT:    ;;#ASMEND7389; GFX900-NEXT:    s_setpc_b64 s[30:31]7390;7391; GFX90A-LABEL: s_shuffle_v4i16_v3i16__2_u_u_u:7392; GFX90A:       ; %bb.0:7393; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7394; GFX90A-NEXT:    ;;#ASMSTART7395; GFX90A-NEXT:    ; def s[4:5]7396; GFX90A-NEXT:    ;;#ASMEND7397; GFX90A-NEXT:    s_mov_b32 s8, s57398; GFX90A-NEXT:    ;;#ASMSTART7399; GFX90A-NEXT:    ; use s[8:9]7400; GFX90A-NEXT:    ;;#ASMEND7401; GFX90A-NEXT:    s_setpc_b64 s[30:31]7402;7403; GFX942-LABEL: s_shuffle_v4i16_v3i16__2_u_u_u:7404; GFX942:       ; %bb.0:7405; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7406; GFX942-NEXT:    ;;#ASMSTART7407; GFX942-NEXT:    ; def s[0:1]7408; GFX942-NEXT:    ;;#ASMEND7409; GFX942-NEXT:    s_mov_b32 s8, s17410; GFX942-NEXT:    ;;#ASMSTART7411; GFX942-NEXT:    ; use s[8:9]7412; GFX942-NEXT:    ;;#ASMEND7413; GFX942-NEXT:    s_setpc_b64 s[30:31]7414  %vec0 = call <4 x i16> asm "; def $0", "=s"()7415  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7416  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison>7417  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)7418  ret void7419}7420 7421define void @s_shuffle_v4i16_v3i16__3_u_u_u() {7422; GFX9-LABEL: s_shuffle_v4i16_v3i16__3_u_u_u:7423; GFX9:       ; %bb.0:7424; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7425; GFX9-NEXT:    ;;#ASMSTART7426; GFX9-NEXT:    ; use s[8:9]7427; GFX9-NEXT:    ;;#ASMEND7428; GFX9-NEXT:    s_setpc_b64 s[30:31]7429  %vec0 = call <4 x i16> asm "; def $0", "=s"()7430  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7431  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison>7432  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)7433  ret void7434}7435 7436define void @s_shuffle_v4i16_v3i16__4_u_u_u() {7437; GFX900-LABEL: s_shuffle_v4i16_v3i16__4_u_u_u:7438; GFX900:       ; %bb.0:7439; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7440; GFX900-NEXT:    ;;#ASMSTART7441; GFX900-NEXT:    ; def s[4:5]7442; GFX900-NEXT:    ;;#ASMEND7443; GFX900-NEXT:    s_lshr_b32 s8, s4, 167444; GFX900-NEXT:    ;;#ASMSTART7445; GFX900-NEXT:    ; use s[8:9]7446; GFX900-NEXT:    ;;#ASMEND7447; GFX900-NEXT:    s_setpc_b64 s[30:31]7448;7449; GFX90A-LABEL: s_shuffle_v4i16_v3i16__4_u_u_u:7450; GFX90A:       ; %bb.0:7451; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7452; GFX90A-NEXT:    ;;#ASMSTART7453; GFX90A-NEXT:    ; def s[4:5]7454; GFX90A-NEXT:    ;;#ASMEND7455; GFX90A-NEXT:    s_lshr_b32 s8, s4, 167456; GFX90A-NEXT:    ;;#ASMSTART7457; GFX90A-NEXT:    ; use s[8:9]7458; GFX90A-NEXT:    ;;#ASMEND7459; GFX90A-NEXT:    s_setpc_b64 s[30:31]7460;7461; GFX942-LABEL: s_shuffle_v4i16_v3i16__4_u_u_u:7462; GFX942:       ; %bb.0:7463; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7464; GFX942-NEXT:    ;;#ASMSTART7465; GFX942-NEXT:    ; def s[0:1]7466; GFX942-NEXT:    ;;#ASMEND7467; GFX942-NEXT:    s_lshr_b32 s8, s0, 167468; GFX942-NEXT:    ;;#ASMSTART7469; GFX942-NEXT:    ; use s[8:9]7470; GFX942-NEXT:    ;;#ASMEND7471; GFX942-NEXT:    s_setpc_b64 s[30:31]7472  %vec0 = call <4 x i16> asm "; def $0", "=s"()7473  %vec1 = call <4 x i16> asm "; def $0", "=s"()7474  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7475  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7476  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 4, i32 poison, i32 poison, i32 poison>7477  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)7478  ret void7479}7480 7481define void @s_shuffle_v4i16_v3i16__5_u_u_u() {7482; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_u_u_u:7483; GFX900:       ; %bb.0:7484; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7485; GFX900-NEXT:    ;;#ASMSTART7486; GFX900-NEXT:    ; def s[4:5]7487; GFX900-NEXT:    ;;#ASMEND7488; GFX900-NEXT:    s_mov_b32 s8, s57489; GFX900-NEXT:    ;;#ASMSTART7490; GFX900-NEXT:    ; use s[8:9]7491; GFX900-NEXT:    ;;#ASMEND7492; GFX900-NEXT:    s_setpc_b64 s[30:31]7493;7494; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_u_u_u:7495; GFX90A:       ; %bb.0:7496; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7497; GFX90A-NEXT:    ;;#ASMSTART7498; GFX90A-NEXT:    ; def s[4:5]7499; GFX90A-NEXT:    ;;#ASMEND7500; GFX90A-NEXT:    s_mov_b32 s8, s57501; GFX90A-NEXT:    ;;#ASMSTART7502; GFX90A-NEXT:    ; use s[8:9]7503; GFX90A-NEXT:    ;;#ASMEND7504; GFX90A-NEXT:    s_setpc_b64 s[30:31]7505;7506; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_u_u_u:7507; GFX942:       ; %bb.0:7508; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7509; GFX942-NEXT:    ;;#ASMSTART7510; GFX942-NEXT:    ; def s[0:1]7511; GFX942-NEXT:    ;;#ASMEND7512; GFX942-NEXT:    s_mov_b32 s8, s17513; GFX942-NEXT:    ;;#ASMSTART7514; GFX942-NEXT:    ; use s[8:9]7515; GFX942-NEXT:    ;;#ASMEND7516; GFX942-NEXT:    s_setpc_b64 s[30:31]7517  %vec0 = call <4 x i16> asm "; def $0", "=s"()7518  %vec1 = call <4 x i16> asm "; def $0", "=s"()7519  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7520  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7521  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 poison, i32 poison, i32 poison>7522  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)7523  ret void7524}7525 7526define void @s_shuffle_v4i16_v3i16__5_0_u_u() {7527; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_0_u_u:7528; GFX900:       ; %bb.0:7529; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7530; GFX900-NEXT:    ;;#ASMSTART7531; GFX900-NEXT:    ; def s[4:5]7532; GFX900-NEXT:    ;;#ASMEND7533; GFX900-NEXT:    ;;#ASMSTART7534; GFX900-NEXT:    ; def s[6:7]7535; GFX900-NEXT:    ;;#ASMEND7536; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s47537; GFX900-NEXT:    ;;#ASMSTART7538; GFX900-NEXT:    ; use s[8:9]7539; GFX900-NEXT:    ;;#ASMEND7540; GFX900-NEXT:    s_setpc_b64 s[30:31]7541;7542; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_0_u_u:7543; GFX90A:       ; %bb.0:7544; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7545; GFX90A-NEXT:    ;;#ASMSTART7546; GFX90A-NEXT:    ; def s[4:5]7547; GFX90A-NEXT:    ;;#ASMEND7548; GFX90A-NEXT:    ;;#ASMSTART7549; GFX90A-NEXT:    ; def s[6:7]7550; GFX90A-NEXT:    ;;#ASMEND7551; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s47552; GFX90A-NEXT:    ;;#ASMSTART7553; GFX90A-NEXT:    ; use s[8:9]7554; GFX90A-NEXT:    ;;#ASMEND7555; GFX90A-NEXT:    s_setpc_b64 s[30:31]7556;7557; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_0_u_u:7558; GFX942:       ; %bb.0:7559; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7560; GFX942-NEXT:    ;;#ASMSTART7561; GFX942-NEXT:    ; def s[0:1]7562; GFX942-NEXT:    ;;#ASMEND7563; GFX942-NEXT:    ;;#ASMSTART7564; GFX942-NEXT:    ; def s[2:3]7565; GFX942-NEXT:    ;;#ASMEND7566; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s07567; GFX942-NEXT:    ;;#ASMSTART7568; GFX942-NEXT:    ; use s[8:9]7569; GFX942-NEXT:    ;;#ASMEND7570; GFX942-NEXT:    s_setpc_b64 s[30:31]7571  %vec0 = call <4 x i16> asm "; def $0", "=s"()7572  %vec1 = call <4 x i16> asm "; def $0", "=s"()7573  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7574  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7575  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 0, i32 poison, i32 poison>7576  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)7577  ret void7578}7579 7580define void @s_shuffle_v4i16_v3i16__5_1_u_u() {7581; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_1_u_u:7582; GFX900:       ; %bb.0:7583; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7584; GFX900-NEXT:    ;;#ASMSTART7585; GFX900-NEXT:    ; def s[4:5]7586; GFX900-NEXT:    ;;#ASMEND7587; GFX900-NEXT:    ;;#ASMSTART7588; GFX900-NEXT:    ; def s[6:7]7589; GFX900-NEXT:    ;;#ASMEND7590; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s7, s47591; GFX900-NEXT:    ;;#ASMSTART7592; GFX900-NEXT:    ; use s[8:9]7593; GFX900-NEXT:    ;;#ASMEND7594; GFX900-NEXT:    s_setpc_b64 s[30:31]7595;7596; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_1_u_u:7597; GFX90A:       ; %bb.0:7598; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7599; GFX90A-NEXT:    ;;#ASMSTART7600; GFX90A-NEXT:    ; def s[4:5]7601; GFX90A-NEXT:    ;;#ASMEND7602; GFX90A-NEXT:    ;;#ASMSTART7603; GFX90A-NEXT:    ; def s[6:7]7604; GFX90A-NEXT:    ;;#ASMEND7605; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s7, s47606; GFX90A-NEXT:    ;;#ASMSTART7607; GFX90A-NEXT:    ; use s[8:9]7608; GFX90A-NEXT:    ;;#ASMEND7609; GFX90A-NEXT:    s_setpc_b64 s[30:31]7610;7611; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_1_u_u:7612; GFX942:       ; %bb.0:7613; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7614; GFX942-NEXT:    ;;#ASMSTART7615; GFX942-NEXT:    ; def s[0:1]7616; GFX942-NEXT:    ;;#ASMEND7617; GFX942-NEXT:    ;;#ASMSTART7618; GFX942-NEXT:    ; def s[2:3]7619; GFX942-NEXT:    ;;#ASMEND7620; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s3, s07621; GFX942-NEXT:    ;;#ASMSTART7622; GFX942-NEXT:    ; use s[8:9]7623; GFX942-NEXT:    ;;#ASMEND7624; GFX942-NEXT:    s_setpc_b64 s[30:31]7625  %vec0 = call <4 x i16> asm "; def $0", "=s"()7626  %vec1 = call <4 x i16> asm "; def $0", "=s"()7627  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7628  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7629  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 1, i32 poison, i32 poison>7630  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)7631  ret void7632}7633 7634define void @s_shuffle_v4i16_v3i16__5_2_u_u() {7635; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_2_u_u:7636; GFX900:       ; %bb.0:7637; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7638; GFX900-NEXT:    ;;#ASMSTART7639; GFX900-NEXT:    ; def s[4:5]7640; GFX900-NEXT:    ;;#ASMEND7641; GFX900-NEXT:    ;;#ASMSTART7642; GFX900-NEXT:    ; def s[6:7]7643; GFX900-NEXT:    ;;#ASMEND7644; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s57645; GFX900-NEXT:    ;;#ASMSTART7646; GFX900-NEXT:    ; use s[8:9]7647; GFX900-NEXT:    ;;#ASMEND7648; GFX900-NEXT:    s_setpc_b64 s[30:31]7649;7650; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_2_u_u:7651; GFX90A:       ; %bb.0:7652; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7653; GFX90A-NEXT:    ;;#ASMSTART7654; GFX90A-NEXT:    ; def s[4:5]7655; GFX90A-NEXT:    ;;#ASMEND7656; GFX90A-NEXT:    ;;#ASMSTART7657; GFX90A-NEXT:    ; def s[6:7]7658; GFX90A-NEXT:    ;;#ASMEND7659; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s57660; GFX90A-NEXT:    ;;#ASMSTART7661; GFX90A-NEXT:    ; use s[8:9]7662; GFX90A-NEXT:    ;;#ASMEND7663; GFX90A-NEXT:    s_setpc_b64 s[30:31]7664;7665; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_2_u_u:7666; GFX942:       ; %bb.0:7667; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7668; GFX942-NEXT:    ;;#ASMSTART7669; GFX942-NEXT:    ; def s[0:1]7670; GFX942-NEXT:    ;;#ASMEND7671; GFX942-NEXT:    ;;#ASMSTART7672; GFX942-NEXT:    ; def s[2:3]7673; GFX942-NEXT:    ;;#ASMEND7674; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s17675; GFX942-NEXT:    ;;#ASMSTART7676; GFX942-NEXT:    ; use s[8:9]7677; GFX942-NEXT:    ;;#ASMEND7678; GFX942-NEXT:    s_setpc_b64 s[30:31]7679  %vec0 = call <4 x i16> asm "; def $0", "=s"()7680  %vec1 = call <4 x i16> asm "; def $0", "=s"()7681  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7682  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7683  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 2, i32 poison, i32 poison>7684  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)7685  ret void7686}7687 7688define void @s_shuffle_v4i16_v3i16__5_3_u_u() {7689; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_3_u_u:7690; GFX900:       ; %bb.0:7691; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7692; GFX900-NEXT:    ;;#ASMSTART7693; GFX900-NEXT:    ; def s[4:5]7694; GFX900-NEXT:    ;;#ASMEND7695; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s47696; GFX900-NEXT:    ;;#ASMSTART7697; GFX900-NEXT:    ; use s[8:9]7698; GFX900-NEXT:    ;;#ASMEND7699; GFX900-NEXT:    s_setpc_b64 s[30:31]7700;7701; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_3_u_u:7702; GFX90A:       ; %bb.0:7703; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7704; GFX90A-NEXT:    ;;#ASMSTART7705; GFX90A-NEXT:    ; def s[4:5]7706; GFX90A-NEXT:    ;;#ASMEND7707; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s47708; GFX90A-NEXT:    ;;#ASMSTART7709; GFX90A-NEXT:    ; use s[8:9]7710; GFX90A-NEXT:    ;;#ASMEND7711; GFX90A-NEXT:    s_setpc_b64 s[30:31]7712;7713; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_3_u_u:7714; GFX942:       ; %bb.0:7715; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7716; GFX942-NEXT:    ;;#ASMSTART7717; GFX942-NEXT:    ; def s[0:1]7718; GFX942-NEXT:    ;;#ASMEND7719; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s07720; GFX942-NEXT:    ;;#ASMSTART7721; GFX942-NEXT:    ; use s[8:9]7722; GFX942-NEXT:    ;;#ASMEND7723; GFX942-NEXT:    s_setpc_b64 s[30:31]7724  %vec0 = call <4 x i16> asm "; def $0", "=s"()7725  %vec1 = call <4 x i16> asm "; def $0", "=s"()7726  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7727  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7728  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 3, i32 poison, i32 poison>7729  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)7730  ret void7731}7732 7733define void @s_shuffle_v4i16_v3i16__5_4_u_u() {7734; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_4_u_u:7735; GFX900:       ; %bb.0:7736; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7737; GFX900-NEXT:    ;;#ASMSTART7738; GFX900-NEXT:    ; def s[4:5]7739; GFX900-NEXT:    ;;#ASMEND7740; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s5, s47741; GFX900-NEXT:    ;;#ASMSTART7742; GFX900-NEXT:    ; use s[8:9]7743; GFX900-NEXT:    ;;#ASMEND7744; GFX900-NEXT:    s_setpc_b64 s[30:31]7745;7746; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_4_u_u:7747; GFX90A:       ; %bb.0:7748; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7749; GFX90A-NEXT:    ;;#ASMSTART7750; GFX90A-NEXT:    ; def s[4:5]7751; GFX90A-NEXT:    ;;#ASMEND7752; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s5, s47753; GFX90A-NEXT:    ;;#ASMSTART7754; GFX90A-NEXT:    ; use s[8:9]7755; GFX90A-NEXT:    ;;#ASMEND7756; GFX90A-NEXT:    s_setpc_b64 s[30:31]7757;7758; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_4_u_u:7759; GFX942:       ; %bb.0:7760; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7761; GFX942-NEXT:    ;;#ASMSTART7762; GFX942-NEXT:    ; def s[0:1]7763; GFX942-NEXT:    ;;#ASMEND7764; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s1, s07765; GFX942-NEXT:    ;;#ASMSTART7766; GFX942-NEXT:    ; use s[8:9]7767; GFX942-NEXT:    ;;#ASMEND7768; GFX942-NEXT:    s_setpc_b64 s[30:31]7769  %vec0 = call <4 x i16> asm "; def $0", "=s"()7770  %vec1 = call <4 x i16> asm "; def $0", "=s"()7771  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7772  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7773  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 4, i32 poison, i32 poison>7774  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)7775  ret void7776}7777 7778define void @s_shuffle_v4i16_v3i16__5_5_u_u() {7779; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_u_u:7780; GFX900:       ; %bb.0:7781; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7782; GFX900-NEXT:    ;;#ASMSTART7783; GFX900-NEXT:    ; def s[4:5]7784; GFX900-NEXT:    ;;#ASMEND7785; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s57786; GFX900-NEXT:    ;;#ASMSTART7787; GFX900-NEXT:    ; use s[8:9]7788; GFX900-NEXT:    ;;#ASMEND7789; GFX900-NEXT:    s_setpc_b64 s[30:31]7790;7791; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_u_u:7792; GFX90A:       ; %bb.0:7793; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7794; GFX90A-NEXT:    ;;#ASMSTART7795; GFX90A-NEXT:    ; def s[4:5]7796; GFX90A-NEXT:    ;;#ASMEND7797; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s57798; GFX90A-NEXT:    ;;#ASMSTART7799; GFX90A-NEXT:    ; use s[8:9]7800; GFX90A-NEXT:    ;;#ASMEND7801; GFX90A-NEXT:    s_setpc_b64 s[30:31]7802;7803; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_u_u:7804; GFX942:       ; %bb.0:7805; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7806; GFX942-NEXT:    ;;#ASMSTART7807; GFX942-NEXT:    ; def s[0:1]7808; GFX942-NEXT:    ;;#ASMEND7809; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s17810; GFX942-NEXT:    ;;#ASMSTART7811; GFX942-NEXT:    ; use s[8:9]7812; GFX942-NEXT:    ;;#ASMEND7813; GFX942-NEXT:    s_setpc_b64 s[30:31]7814  %vec0 = call <4 x i16> asm "; def $0", "=s"()7815  %vec1 = call <4 x i16> asm "; def $0", "=s"()7816  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7817  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7818  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 poison, i32 poison>7819  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)7820  ret void7821}7822 7823define void @s_shuffle_v4i16_v3i16__5_5_0_u() {7824; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_0_u:7825; GFX900:       ; %bb.0:7826; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7827; GFX900-NEXT:    ;;#ASMSTART7828; GFX900-NEXT:    ; def s[4:5]7829; GFX900-NEXT:    ;;#ASMEND7830; GFX900-NEXT:    ;;#ASMSTART7831; GFX900-NEXT:    ; def s[6:7]7832; GFX900-NEXT:    ;;#ASMEND7833; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s77834; GFX900-NEXT:    s_mov_b32 s9, s47835; GFX900-NEXT:    ;;#ASMSTART7836; GFX900-NEXT:    ; use s[8:9]7837; GFX900-NEXT:    ;;#ASMEND7838; GFX900-NEXT:    s_setpc_b64 s[30:31]7839;7840; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_0_u:7841; GFX90A:       ; %bb.0:7842; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7843; GFX90A-NEXT:    ;;#ASMSTART7844; GFX90A-NEXT:    ; def s[4:5]7845; GFX90A-NEXT:    ;;#ASMEND7846; GFX90A-NEXT:    ;;#ASMSTART7847; GFX90A-NEXT:    ; def s[6:7]7848; GFX90A-NEXT:    ;;#ASMEND7849; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s77850; GFX90A-NEXT:    s_mov_b32 s9, s47851; GFX90A-NEXT:    ;;#ASMSTART7852; GFX90A-NEXT:    ; use s[8:9]7853; GFX90A-NEXT:    ;;#ASMEND7854; GFX90A-NEXT:    s_setpc_b64 s[30:31]7855;7856; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_0_u:7857; GFX942:       ; %bb.0:7858; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7859; GFX942-NEXT:    ;;#ASMSTART7860; GFX942-NEXT:    ; def s[0:1]7861; GFX942-NEXT:    ;;#ASMEND7862; GFX942-NEXT:    ;;#ASMSTART7863; GFX942-NEXT:    ; def s[2:3]7864; GFX942-NEXT:    ;;#ASMEND7865; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s37866; GFX942-NEXT:    s_mov_b32 s9, s07867; GFX942-NEXT:    ;;#ASMSTART7868; GFX942-NEXT:    ; use s[8:9]7869; GFX942-NEXT:    ;;#ASMEND7870; GFX942-NEXT:    s_setpc_b64 s[30:31]7871  %vec0 = call <4 x i16> asm "; def $0", "=s"()7872  %vec1 = call <4 x i16> asm "; def $0", "=s"()7873  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7874  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7875  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 0, i32 poison>7876  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)7877  ret void7878}7879 7880define void @s_shuffle_v4i16_v3i16__5_5_1_u() {7881; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_1_u:7882; GFX900:       ; %bb.0:7883; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7884; GFX900-NEXT:    ;;#ASMSTART7885; GFX900-NEXT:    ; def s[4:5]7886; GFX900-NEXT:    ;;#ASMEND7887; GFX900-NEXT:    ;;#ASMSTART7888; GFX900-NEXT:    ; def s[6:7]7889; GFX900-NEXT:    ;;#ASMEND7890; GFX900-NEXT:    s_lshr_b32 s9, s4, 167891; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s77892; GFX900-NEXT:    ;;#ASMSTART7893; GFX900-NEXT:    ; use s[8:9]7894; GFX900-NEXT:    ;;#ASMEND7895; GFX900-NEXT:    s_setpc_b64 s[30:31]7896;7897; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_1_u:7898; GFX90A:       ; %bb.0:7899; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7900; GFX90A-NEXT:    ;;#ASMSTART7901; GFX90A-NEXT:    ; def s[4:5]7902; GFX90A-NEXT:    ;;#ASMEND7903; GFX90A-NEXT:    ;;#ASMSTART7904; GFX90A-NEXT:    ; def s[6:7]7905; GFX90A-NEXT:    ;;#ASMEND7906; GFX90A-NEXT:    s_lshr_b32 s9, s4, 167907; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s77908; GFX90A-NEXT:    ;;#ASMSTART7909; GFX90A-NEXT:    ; use s[8:9]7910; GFX90A-NEXT:    ;;#ASMEND7911; GFX90A-NEXT:    s_setpc_b64 s[30:31]7912;7913; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_1_u:7914; GFX942:       ; %bb.0:7915; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7916; GFX942-NEXT:    ;;#ASMSTART7917; GFX942-NEXT:    ; def s[0:1]7918; GFX942-NEXT:    ;;#ASMEND7919; GFX942-NEXT:    ;;#ASMSTART7920; GFX942-NEXT:    ; def s[2:3]7921; GFX942-NEXT:    ;;#ASMEND7922; GFX942-NEXT:    s_lshr_b32 s9, s0, 167923; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s37924; GFX942-NEXT:    ;;#ASMSTART7925; GFX942-NEXT:    ; use s[8:9]7926; GFX942-NEXT:    ;;#ASMEND7927; GFX942-NEXT:    s_setpc_b64 s[30:31]7928  %vec0 = call <4 x i16> asm "; def $0", "=s"()7929  %vec1 = call <4 x i16> asm "; def $0", "=s"()7930  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7931  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7932  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 1, i32 poison>7933  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)7934  ret void7935}7936 7937define void @s_shuffle_v4i16_v3i16__5_5_2_u() {7938; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_2_u:7939; GFX900:       ; %bb.0:7940; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7941; GFX900-NEXT:    ;;#ASMSTART7942; GFX900-NEXT:    ; def s[8:9]7943; GFX900-NEXT:    ;;#ASMEND7944; GFX900-NEXT:    ;;#ASMSTART7945; GFX900-NEXT:    ; def s[4:5]7946; GFX900-NEXT:    ;;#ASMEND7947; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s57948; GFX900-NEXT:    ;;#ASMSTART7949; GFX900-NEXT:    ; use s[8:9]7950; GFX900-NEXT:    ;;#ASMEND7951; GFX900-NEXT:    s_setpc_b64 s[30:31]7952;7953; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_2_u:7954; GFX90A:       ; %bb.0:7955; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7956; GFX90A-NEXT:    ;;#ASMSTART7957; GFX90A-NEXT:    ; def s[8:9]7958; GFX90A-NEXT:    ;;#ASMEND7959; GFX90A-NEXT:    ;;#ASMSTART7960; GFX90A-NEXT:    ; def s[4:5]7961; GFX90A-NEXT:    ;;#ASMEND7962; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s57963; GFX90A-NEXT:    ;;#ASMSTART7964; GFX90A-NEXT:    ; use s[8:9]7965; GFX90A-NEXT:    ;;#ASMEND7966; GFX90A-NEXT:    s_setpc_b64 s[30:31]7967;7968; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_2_u:7969; GFX942:       ; %bb.0:7970; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7971; GFX942-NEXT:    ;;#ASMSTART7972; GFX942-NEXT:    ; def s[8:9]7973; GFX942-NEXT:    ;;#ASMEND7974; GFX942-NEXT:    ;;#ASMSTART7975; GFX942-NEXT:    ; def s[0:1]7976; GFX942-NEXT:    ;;#ASMEND7977; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s17978; GFX942-NEXT:    ;;#ASMSTART7979; GFX942-NEXT:    ; use s[8:9]7980; GFX942-NEXT:    ;;#ASMEND7981; GFX942-NEXT:    s_setpc_b64 s[30:31]7982  %vec0 = call <4 x i16> asm "; def $0", "=s"()7983  %vec1 = call <4 x i16> asm "; def $0", "=s"()7984  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7985  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>7986  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 2, i32 poison>7987  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)7988  ret void7989}7990 7991define void @s_shuffle_v4i16_v3i16__5_5_3_u() {7992; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_3_u:7993; GFX900:       ; %bb.0:7994; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7995; GFX900-NEXT:    ;;#ASMSTART7996; GFX900-NEXT:    ; def s[4:5]7997; GFX900-NEXT:    ;;#ASMEND7998; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s57999; GFX900-NEXT:    s_mov_b32 s9, s48000; GFX900-NEXT:    ;;#ASMSTART8001; GFX900-NEXT:    ; use s[8:9]8002; GFX900-NEXT:    ;;#ASMEND8003; GFX900-NEXT:    s_setpc_b64 s[30:31]8004;8005; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_3_u:8006; GFX90A:       ; %bb.0:8007; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8008; GFX90A-NEXT:    ;;#ASMSTART8009; GFX90A-NEXT:    ; def s[4:5]8010; GFX90A-NEXT:    ;;#ASMEND8011; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s58012; GFX90A-NEXT:    s_mov_b32 s9, s48013; GFX90A-NEXT:    ;;#ASMSTART8014; GFX90A-NEXT:    ; use s[8:9]8015; GFX90A-NEXT:    ;;#ASMEND8016; GFX90A-NEXT:    s_setpc_b64 s[30:31]8017;8018; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_3_u:8019; GFX942:       ; %bb.0:8020; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8021; GFX942-NEXT:    ;;#ASMSTART8022; GFX942-NEXT:    ; def s[0:1]8023; GFX942-NEXT:    ;;#ASMEND8024; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s18025; GFX942-NEXT:    s_mov_b32 s9, s08026; GFX942-NEXT:    ;;#ASMSTART8027; GFX942-NEXT:    ; use s[8:9]8028; GFX942-NEXT:    ;;#ASMEND8029; GFX942-NEXT:    s_setpc_b64 s[30:31]8030  %vec0 = call <4 x i16> asm "; def $0", "=s"()8031  %vec1 = call <4 x i16> asm "; def $0", "=s"()8032  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8033  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8034  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 3, i32 poison>8035  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)8036  ret void8037}8038 8039define void @s_shuffle_v4i16_v3i16__5_5_4_u() {8040; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_4_u:8041; GFX900:       ; %bb.0:8042; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8043; GFX900-NEXT:    ;;#ASMSTART8044; GFX900-NEXT:    ; def s[4:5]8045; GFX900-NEXT:    ;;#ASMEND8046; GFX900-NEXT:    s_lshr_b32 s9, s4, 168047; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s58048; GFX900-NEXT:    ;;#ASMSTART8049; GFX900-NEXT:    ; use s[8:9]8050; GFX900-NEXT:    ;;#ASMEND8051; GFX900-NEXT:    s_setpc_b64 s[30:31]8052;8053; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_4_u:8054; GFX90A:       ; %bb.0:8055; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8056; GFX90A-NEXT:    ;;#ASMSTART8057; GFX90A-NEXT:    ; def s[4:5]8058; GFX90A-NEXT:    ;;#ASMEND8059; GFX90A-NEXT:    s_lshr_b32 s9, s4, 168060; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s58061; GFX90A-NEXT:    ;;#ASMSTART8062; GFX90A-NEXT:    ; use s[8:9]8063; GFX90A-NEXT:    ;;#ASMEND8064; GFX90A-NEXT:    s_setpc_b64 s[30:31]8065;8066; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_4_u:8067; GFX942:       ; %bb.0:8068; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8069; GFX942-NEXT:    ;;#ASMSTART8070; GFX942-NEXT:    ; def s[0:1]8071; GFX942-NEXT:    ;;#ASMEND8072; GFX942-NEXT:    s_lshr_b32 s9, s0, 168073; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s18074; GFX942-NEXT:    ;;#ASMSTART8075; GFX942-NEXT:    ; use s[8:9]8076; GFX942-NEXT:    ;;#ASMEND8077; GFX942-NEXT:    s_setpc_b64 s[30:31]8078  %vec0 = call <4 x i16> asm "; def $0", "=s"()8079  %vec1 = call <4 x i16> asm "; def $0", "=s"()8080  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8081  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8082  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 4, i32 poison>8083  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)8084  ret void8085}8086 8087define void @s_shuffle_v4i16_v3i16__5_5_5_u() {8088; GFX9-LABEL: s_shuffle_v4i16_v3i16__5_5_5_u:8089; GFX9:       ; %bb.0:8090; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8091; GFX9-NEXT:    ;;#ASMSTART8092; GFX9-NEXT:    ; def s[8:9]8093; GFX9-NEXT:    ;;#ASMEND8094; GFX9-NEXT:    s_pack_ll_b32_b16 s8, s9, s98095; GFX9-NEXT:    ;;#ASMSTART8096; GFX9-NEXT:    ; use s[8:9]8097; GFX9-NEXT:    ;;#ASMEND8098; GFX9-NEXT:    s_setpc_b64 s[30:31]8099  %vec0 = call <4 x i16> asm "; def $0", "=s"()8100  %vec1 = call <4 x i16> asm "; def $0", "=s"()8101  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8102  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8103  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 5, i32 poison>8104  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)8105  ret void8106}8107 8108define void @s_shuffle_v4i16_v3i16__5_5_5_0() {8109; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_5_0:8110; GFX900:       ; %bb.0:8111; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8112; GFX900-NEXT:    ;;#ASMSTART8113; GFX900-NEXT:    ; def s[4:5]8114; GFX900-NEXT:    ;;#ASMEND8115; GFX900-NEXT:    ;;#ASMSTART8116; GFX900-NEXT:    ; def s[6:7]8117; GFX900-NEXT:    ;;#ASMEND8118; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s7, s48119; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s78120; GFX900-NEXT:    ;;#ASMSTART8121; GFX900-NEXT:    ; use s[8:9]8122; GFX900-NEXT:    ;;#ASMEND8123; GFX900-NEXT:    s_setpc_b64 s[30:31]8124;8125; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_5_0:8126; GFX90A:       ; %bb.0:8127; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8128; GFX90A-NEXT:    ;;#ASMSTART8129; GFX90A-NEXT:    ; def s[4:5]8130; GFX90A-NEXT:    ;;#ASMEND8131; GFX90A-NEXT:    ;;#ASMSTART8132; GFX90A-NEXT:    ; def s[6:7]8133; GFX90A-NEXT:    ;;#ASMEND8134; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s7, s48135; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s78136; GFX90A-NEXT:    ;;#ASMSTART8137; GFX90A-NEXT:    ; use s[8:9]8138; GFX90A-NEXT:    ;;#ASMEND8139; GFX90A-NEXT:    s_setpc_b64 s[30:31]8140;8141; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_5_0:8142; GFX942:       ; %bb.0:8143; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8144; GFX942-NEXT:    ;;#ASMSTART8145; GFX942-NEXT:    ; def s[0:1]8146; GFX942-NEXT:    ;;#ASMEND8147; GFX942-NEXT:    ;;#ASMSTART8148; GFX942-NEXT:    ; def s[2:3]8149; GFX942-NEXT:    ;;#ASMEND8150; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s3, s08151; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s38152; GFX942-NEXT:    ;;#ASMSTART8153; GFX942-NEXT:    ; use s[8:9]8154; GFX942-NEXT:    ;;#ASMEND8155; GFX942-NEXT:    s_setpc_b64 s[30:31]8156  %vec0 = call <4 x i16> asm "; def $0", "=s"()8157  %vec1 = call <4 x i16> asm "; def $0", "=s"()8158  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8159  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8160  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 5, i32 0>8161  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)8162  ret void8163}8164 8165define void @s_shuffle_v4i16_v3i16__5_5_5_1() {8166; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_5_1:8167; GFX900:       ; %bb.0:8168; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8169; GFX900-NEXT:    ;;#ASMSTART8170; GFX900-NEXT:    ; def s[4:5]8171; GFX900-NEXT:    ;;#ASMEND8172; GFX900-NEXT:    ;;#ASMSTART8173; GFX900-NEXT:    ; def s[6:7]8174; GFX900-NEXT:    ;;#ASMEND8175; GFX900-NEXT:    s_pack_lh_b32_b16 s9, s7, s48176; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s78177; GFX900-NEXT:    ;;#ASMSTART8178; GFX900-NEXT:    ; use s[8:9]8179; GFX900-NEXT:    ;;#ASMEND8180; GFX900-NEXT:    s_setpc_b64 s[30:31]8181;8182; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_5_1:8183; GFX90A:       ; %bb.0:8184; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8185; GFX90A-NEXT:    ;;#ASMSTART8186; GFX90A-NEXT:    ; def s[4:5]8187; GFX90A-NEXT:    ;;#ASMEND8188; GFX90A-NEXT:    ;;#ASMSTART8189; GFX90A-NEXT:    ; def s[6:7]8190; GFX90A-NEXT:    ;;#ASMEND8191; GFX90A-NEXT:    s_pack_lh_b32_b16 s9, s7, s48192; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s78193; GFX90A-NEXT:    ;;#ASMSTART8194; GFX90A-NEXT:    ; use s[8:9]8195; GFX90A-NEXT:    ;;#ASMEND8196; GFX90A-NEXT:    s_setpc_b64 s[30:31]8197;8198; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_5_1:8199; GFX942:       ; %bb.0:8200; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8201; GFX942-NEXT:    ;;#ASMSTART8202; GFX942-NEXT:    ; def s[0:1]8203; GFX942-NEXT:    ;;#ASMEND8204; GFX942-NEXT:    ;;#ASMSTART8205; GFX942-NEXT:    ; def s[2:3]8206; GFX942-NEXT:    ;;#ASMEND8207; GFX942-NEXT:    s_pack_lh_b32_b16 s9, s3, s08208; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s38209; GFX942-NEXT:    ;;#ASMSTART8210; GFX942-NEXT:    ; use s[8:9]8211; GFX942-NEXT:    ;;#ASMEND8212; GFX942-NEXT:    s_setpc_b64 s[30:31]8213  %vec0 = call <4 x i16> asm "; def $0", "=s"()8214  %vec1 = call <4 x i16> asm "; def $0", "=s"()8215  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8216  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8217  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 5, i32 1>8218  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)8219  ret void8220}8221 8222define void @s_shuffle_v4i16_v3i16__5_5_5_2() {8223; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_5_2:8224; GFX900:       ; %bb.0:8225; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8226; GFX900-NEXT:    ;;#ASMSTART8227; GFX900-NEXT:    ; def s[4:5]8228; GFX900-NEXT:    ;;#ASMEND8229; GFX900-NEXT:    ;;#ASMSTART8230; GFX900-NEXT:    ; def s[6:7]8231; GFX900-NEXT:    ;;#ASMEND8232; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s7, s58233; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s78234; GFX900-NEXT:    ;;#ASMSTART8235; GFX900-NEXT:    ; use s[8:9]8236; GFX900-NEXT:    ;;#ASMEND8237; GFX900-NEXT:    s_setpc_b64 s[30:31]8238;8239; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_5_2:8240; GFX90A:       ; %bb.0:8241; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8242; GFX90A-NEXT:    ;;#ASMSTART8243; GFX90A-NEXT:    ; def s[4:5]8244; GFX90A-NEXT:    ;;#ASMEND8245; GFX90A-NEXT:    ;;#ASMSTART8246; GFX90A-NEXT:    ; def s[6:7]8247; GFX90A-NEXT:    ;;#ASMEND8248; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s7, s58249; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s78250; GFX90A-NEXT:    ;;#ASMSTART8251; GFX90A-NEXT:    ; use s[8:9]8252; GFX90A-NEXT:    ;;#ASMEND8253; GFX90A-NEXT:    s_setpc_b64 s[30:31]8254;8255; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_5_2:8256; GFX942:       ; %bb.0:8257; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8258; GFX942-NEXT:    ;;#ASMSTART8259; GFX942-NEXT:    ; def s[0:1]8260; GFX942-NEXT:    ;;#ASMEND8261; GFX942-NEXT:    ;;#ASMSTART8262; GFX942-NEXT:    ; def s[2:3]8263; GFX942-NEXT:    ;;#ASMEND8264; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s3, s18265; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s38266; GFX942-NEXT:    ;;#ASMSTART8267; GFX942-NEXT:    ; use s[8:9]8268; GFX942-NEXT:    ;;#ASMEND8269; GFX942-NEXT:    s_setpc_b64 s[30:31]8270  %vec0 = call <4 x i16> asm "; def $0", "=s"()8271  %vec1 = call <4 x i16> asm "; def $0", "=s"()8272  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8273  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8274  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 5, i32 2>8275  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)8276  ret void8277}8278 8279define void @s_shuffle_v4i16_v3i16__5_5_5_3() {8280; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_5_3:8281; GFX900:       ; %bb.0:8282; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8283; GFX900-NEXT:    ;;#ASMSTART8284; GFX900-NEXT:    ; def s[4:5]8285; GFX900-NEXT:    ;;#ASMEND8286; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s5, s48287; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s58288; GFX900-NEXT:    ;;#ASMSTART8289; GFX900-NEXT:    ; use s[8:9]8290; GFX900-NEXT:    ;;#ASMEND8291; GFX900-NEXT:    s_setpc_b64 s[30:31]8292;8293; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_5_3:8294; GFX90A:       ; %bb.0:8295; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8296; GFX90A-NEXT:    ;;#ASMSTART8297; GFX90A-NEXT:    ; def s[4:5]8298; GFX90A-NEXT:    ;;#ASMEND8299; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s5, s48300; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s58301; GFX90A-NEXT:    ;;#ASMSTART8302; GFX90A-NEXT:    ; use s[8:9]8303; GFX90A-NEXT:    ;;#ASMEND8304; GFX90A-NEXT:    s_setpc_b64 s[30:31]8305;8306; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_5_3:8307; GFX942:       ; %bb.0:8308; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8309; GFX942-NEXT:    ;;#ASMSTART8310; GFX942-NEXT:    ; def s[0:1]8311; GFX942-NEXT:    ;;#ASMEND8312; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s1, s08313; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s18314; GFX942-NEXT:    ;;#ASMSTART8315; GFX942-NEXT:    ; use s[8:9]8316; GFX942-NEXT:    ;;#ASMEND8317; GFX942-NEXT:    s_setpc_b64 s[30:31]8318  %vec0 = call <4 x i16> asm "; def $0", "=s"()8319  %vec1 = call <4 x i16> asm "; def $0", "=s"()8320  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8321  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8322  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 5, i32 3>8323  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)8324  ret void8325}8326 8327define void @s_shuffle_v4i16_v3i16__5_5_5_4() {8328; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_5_4:8329; GFX900:       ; %bb.0:8330; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8331; GFX900-NEXT:    ;;#ASMSTART8332; GFX900-NEXT:    ; def s[4:5]8333; GFX900-NEXT:    ;;#ASMEND8334; GFX900-NEXT:    s_pack_lh_b32_b16 s9, s5, s48335; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s58336; GFX900-NEXT:    ;;#ASMSTART8337; GFX900-NEXT:    ; use s[8:9]8338; GFX900-NEXT:    ;;#ASMEND8339; GFX900-NEXT:    s_setpc_b64 s[30:31]8340;8341; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_5_4:8342; GFX90A:       ; %bb.0:8343; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8344; GFX90A-NEXT:    ;;#ASMSTART8345; GFX90A-NEXT:    ; def s[4:5]8346; GFX90A-NEXT:    ;;#ASMEND8347; GFX90A-NEXT:    s_pack_lh_b32_b16 s9, s5, s48348; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s58349; GFX90A-NEXT:    ;;#ASMSTART8350; GFX90A-NEXT:    ; use s[8:9]8351; GFX90A-NEXT:    ;;#ASMEND8352; GFX90A-NEXT:    s_setpc_b64 s[30:31]8353;8354; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_5_4:8355; GFX942:       ; %bb.0:8356; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8357; GFX942-NEXT:    ;;#ASMSTART8358; GFX942-NEXT:    ; def s[0:1]8359; GFX942-NEXT:    ;;#ASMEND8360; GFX942-NEXT:    s_pack_lh_b32_b16 s9, s1, s08361; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s18362; GFX942-NEXT:    ;;#ASMSTART8363; GFX942-NEXT:    ; use s[8:9]8364; GFX942-NEXT:    ;;#ASMEND8365; GFX942-NEXT:    s_setpc_b64 s[30:31]8366  %vec0 = call <4 x i16> asm "; def $0", "=s"()8367  %vec1 = call <4 x i16> asm "; def $0", "=s"()8368  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8369  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8370  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 5, i32 4>8371  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)8372  ret void8373}8374 8375define void @s_shuffle_v4i16_v3i16__5_5_5_5() {8376; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_5_5:8377; GFX900:       ; %bb.0:8378; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8379; GFX900-NEXT:    ;;#ASMSTART8380; GFX900-NEXT:    ; def s[4:5]8381; GFX900-NEXT:    ;;#ASMEND8382; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s58383; GFX900-NEXT:    s_mov_b32 s9, s88384; GFX900-NEXT:    ;;#ASMSTART8385; GFX900-NEXT:    ; use s[8:9]8386; GFX900-NEXT:    ;;#ASMEND8387; GFX900-NEXT:    s_setpc_b64 s[30:31]8388;8389; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_5_5:8390; GFX90A:       ; %bb.0:8391; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8392; GFX90A-NEXT:    ;;#ASMSTART8393; GFX90A-NEXT:    ; def s[4:5]8394; GFX90A-NEXT:    ;;#ASMEND8395; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s58396; GFX90A-NEXT:    s_mov_b32 s9, s88397; GFX90A-NEXT:    ;;#ASMSTART8398; GFX90A-NEXT:    ; use s[8:9]8399; GFX90A-NEXT:    ;;#ASMEND8400; GFX90A-NEXT:    s_setpc_b64 s[30:31]8401;8402; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_5_5:8403; GFX942:       ; %bb.0:8404; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8405; GFX942-NEXT:    ;;#ASMSTART8406; GFX942-NEXT:    ; def s[0:1]8407; GFX942-NEXT:    ;;#ASMEND8408; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s18409; GFX942-NEXT:    s_mov_b32 s9, s88410; GFX942-NEXT:    ;;#ASMSTART8411; GFX942-NEXT:    ; use s[8:9]8412; GFX942-NEXT:    ;;#ASMEND8413; GFX942-NEXT:    s_setpc_b64 s[30:31]8414  %vec0 = call <4 x i16> asm "; def $0", "=s"()8415  %vec1 = call <4 x i16> asm "; def $0", "=s"()8416  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8417  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8418  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 5, i32 5>8419  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)8420  ret void8421}8422 8423define void @s_shuffle_v4i16_v3i16__u_0_0_0() {8424; GFX900-LABEL: s_shuffle_v4i16_v3i16__u_0_0_0:8425; GFX900:       ; %bb.0:8426; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8427; GFX900-NEXT:    ;;#ASMSTART8428; GFX900-NEXT:    ; def s[4:5]8429; GFX900-NEXT:    ;;#ASMEND8430; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s48431; GFX900-NEXT:    s_lshl_b32 s8, s4, 168432; GFX900-NEXT:    ;;#ASMSTART8433; GFX900-NEXT:    ; use s[8:9]8434; GFX900-NEXT:    ;;#ASMEND8435; GFX900-NEXT:    s_setpc_b64 s[30:31]8436;8437; GFX90A-LABEL: s_shuffle_v4i16_v3i16__u_0_0_0:8438; GFX90A:       ; %bb.0:8439; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8440; GFX90A-NEXT:    ;;#ASMSTART8441; GFX90A-NEXT:    ; def s[4:5]8442; GFX90A-NEXT:    ;;#ASMEND8443; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s48444; GFX90A-NEXT:    s_lshl_b32 s8, s4, 168445; GFX90A-NEXT:    ;;#ASMSTART8446; GFX90A-NEXT:    ; use s[8:9]8447; GFX90A-NEXT:    ;;#ASMEND8448; GFX90A-NEXT:    s_setpc_b64 s[30:31]8449;8450; GFX942-LABEL: s_shuffle_v4i16_v3i16__u_0_0_0:8451; GFX942:       ; %bb.0:8452; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8453; GFX942-NEXT:    ;;#ASMSTART8454; GFX942-NEXT:    ; def s[0:1]8455; GFX942-NEXT:    ;;#ASMEND8456; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s08457; GFX942-NEXT:    s_lshl_b32 s8, s0, 168458; GFX942-NEXT:    ;;#ASMSTART8459; GFX942-NEXT:    ; use s[8:9]8460; GFX942-NEXT:    ;;#ASMEND8461; GFX942-NEXT:    s_setpc_b64 s[30:31]8462  %vec0 = call <4 x i16> asm "; def $0", "=s"()8463  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8464  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0>8465  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)8466  ret void8467}8468 8469define void @s_shuffle_v4i16_v3i16__0_0_0_0() {8470; GFX900-LABEL: s_shuffle_v4i16_v3i16__0_0_0_0:8471; GFX900:       ; %bb.0:8472; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8473; GFX900-NEXT:    ;;#ASMSTART8474; GFX900-NEXT:    ; def s[4:5]8475; GFX900-NEXT:    ;;#ASMEND8476; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s48477; GFX900-NEXT:    s_mov_b32 s9, s88478; GFX900-NEXT:    ;;#ASMSTART8479; GFX900-NEXT:    ; use s[8:9]8480; GFX900-NEXT:    ;;#ASMEND8481; GFX900-NEXT:    s_setpc_b64 s[30:31]8482;8483; GFX90A-LABEL: s_shuffle_v4i16_v3i16__0_0_0_0:8484; GFX90A:       ; %bb.0:8485; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8486; GFX90A-NEXT:    ;;#ASMSTART8487; GFX90A-NEXT:    ; def s[4:5]8488; GFX90A-NEXT:    ;;#ASMEND8489; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s48490; GFX90A-NEXT:    s_mov_b32 s9, s88491; GFX90A-NEXT:    ;;#ASMSTART8492; GFX90A-NEXT:    ; use s[8:9]8493; GFX90A-NEXT:    ;;#ASMEND8494; GFX90A-NEXT:    s_setpc_b64 s[30:31]8495;8496; GFX942-LABEL: s_shuffle_v4i16_v3i16__0_0_0_0:8497; GFX942:       ; %bb.0:8498; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8499; GFX942-NEXT:    ;;#ASMSTART8500; GFX942-NEXT:    ; def s[0:1]8501; GFX942-NEXT:    ;;#ASMEND8502; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s08503; GFX942-NEXT:    s_mov_b32 s9, s88504; GFX942-NEXT:    ;;#ASMSTART8505; GFX942-NEXT:    ; use s[8:9]8506; GFX942-NEXT:    ;;#ASMEND8507; GFX942-NEXT:    s_setpc_b64 s[30:31]8508  %vec0 = call <4 x i16> asm "; def $0", "=s"()8509  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8510  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> zeroinitializer8511  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)8512  ret void8513}8514 8515define void @s_shuffle_v4i16_v3i16__1_0_0_0() {8516; GFX900-LABEL: s_shuffle_v4i16_v3i16__1_0_0_0:8517; GFX900:       ; %bb.0:8518; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8519; GFX900-NEXT:    ;;#ASMSTART8520; GFX900-NEXT:    ; def s[4:5]8521; GFX900-NEXT:    ;;#ASMEND8522; GFX900-NEXT:    s_lshr_b32 s5, s4, 168523; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s48524; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s48525; GFX900-NEXT:    ;;#ASMSTART8526; GFX900-NEXT:    ; use s[8:9]8527; GFX900-NEXT:    ;;#ASMEND8528; GFX900-NEXT:    s_setpc_b64 s[30:31]8529;8530; GFX90A-LABEL: s_shuffle_v4i16_v3i16__1_0_0_0:8531; GFX90A:       ; %bb.0:8532; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8533; GFX90A-NEXT:    ;;#ASMSTART8534; GFX90A-NEXT:    ; def s[4:5]8535; GFX90A-NEXT:    ;;#ASMEND8536; GFX90A-NEXT:    s_lshr_b32 s5, s4, 168537; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s48538; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s48539; GFX90A-NEXT:    ;;#ASMSTART8540; GFX90A-NEXT:    ; use s[8:9]8541; GFX90A-NEXT:    ;;#ASMEND8542; GFX90A-NEXT:    s_setpc_b64 s[30:31]8543;8544; GFX942-LABEL: s_shuffle_v4i16_v3i16__1_0_0_0:8545; GFX942:       ; %bb.0:8546; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8547; GFX942-NEXT:    ;;#ASMSTART8548; GFX942-NEXT:    ; def s[0:1]8549; GFX942-NEXT:    ;;#ASMEND8550; GFX942-NEXT:    s_lshr_b32 s1, s0, 168551; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s08552; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s08553; GFX942-NEXT:    ;;#ASMSTART8554; GFX942-NEXT:    ; use s[8:9]8555; GFX942-NEXT:    ;;#ASMEND8556; GFX942-NEXT:    s_setpc_b64 s[30:31]8557  %vec0 = call <4 x i16> asm "; def $0", "=s"()8558  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8559  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>8560  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)8561  ret void8562}8563 8564define void @s_shuffle_v4i16_v3i16__2_0_0_0() {8565; GFX900-LABEL: s_shuffle_v4i16_v3i16__2_0_0_0:8566; GFX900:       ; %bb.0:8567; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8568; GFX900-NEXT:    ;;#ASMSTART8569; GFX900-NEXT:    ; def s[4:5]8570; GFX900-NEXT:    ;;#ASMEND8571; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s48572; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s48573; GFX900-NEXT:    ;;#ASMSTART8574; GFX900-NEXT:    ; use s[8:9]8575; GFX900-NEXT:    ;;#ASMEND8576; GFX900-NEXT:    s_setpc_b64 s[30:31]8577;8578; GFX90A-LABEL: s_shuffle_v4i16_v3i16__2_0_0_0:8579; GFX90A:       ; %bb.0:8580; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8581; GFX90A-NEXT:    ;;#ASMSTART8582; GFX90A-NEXT:    ; def s[4:5]8583; GFX90A-NEXT:    ;;#ASMEND8584; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s48585; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s48586; GFX90A-NEXT:    ;;#ASMSTART8587; GFX90A-NEXT:    ; use s[8:9]8588; GFX90A-NEXT:    ;;#ASMEND8589; GFX90A-NEXT:    s_setpc_b64 s[30:31]8590;8591; GFX942-LABEL: s_shuffle_v4i16_v3i16__2_0_0_0:8592; GFX942:       ; %bb.0:8593; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8594; GFX942-NEXT:    ;;#ASMSTART8595; GFX942-NEXT:    ; def s[0:1]8596; GFX942-NEXT:    ;;#ASMEND8597; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s08598; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s08599; GFX942-NEXT:    ;;#ASMSTART8600; GFX942-NEXT:    ; use s[8:9]8601; GFX942-NEXT:    ;;#ASMEND8602; GFX942-NEXT:    s_setpc_b64 s[30:31]8603  %vec0 = call <4 x i16> asm "; def $0", "=s"()8604  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8605  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0>8606  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)8607  ret void8608}8609 8610define void @s_shuffle_v4i16_v3i16__3_0_0_0() {8611; GFX900-LABEL: s_shuffle_v4i16_v3i16__3_0_0_0:8612; GFX900:       ; %bb.0:8613; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8614; GFX900-NEXT:    ;;#ASMSTART8615; GFX900-NEXT:    ; def s[4:5]8616; GFX900-NEXT:    ;;#ASMEND8617; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s48618; GFX900-NEXT:    s_lshl_b32 s8, s4, 168619; GFX900-NEXT:    ;;#ASMSTART8620; GFX900-NEXT:    ; use s[8:9]8621; GFX900-NEXT:    ;;#ASMEND8622; GFX900-NEXT:    s_setpc_b64 s[30:31]8623;8624; GFX90A-LABEL: s_shuffle_v4i16_v3i16__3_0_0_0:8625; GFX90A:       ; %bb.0:8626; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8627; GFX90A-NEXT:    ;;#ASMSTART8628; GFX90A-NEXT:    ; def s[4:5]8629; GFX90A-NEXT:    ;;#ASMEND8630; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s48631; GFX90A-NEXT:    s_lshl_b32 s8, s4, 168632; GFX90A-NEXT:    ;;#ASMSTART8633; GFX90A-NEXT:    ; use s[8:9]8634; GFX90A-NEXT:    ;;#ASMEND8635; GFX90A-NEXT:    s_setpc_b64 s[30:31]8636;8637; GFX942-LABEL: s_shuffle_v4i16_v3i16__3_0_0_0:8638; GFX942:       ; %bb.0:8639; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8640; GFX942-NEXT:    ;;#ASMSTART8641; GFX942-NEXT:    ; def s[0:1]8642; GFX942-NEXT:    ;;#ASMEND8643; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s08644; GFX942-NEXT:    s_lshl_b32 s8, s0, 168645; GFX942-NEXT:    ;;#ASMSTART8646; GFX942-NEXT:    ; use s[8:9]8647; GFX942-NEXT:    ;;#ASMEND8648; GFX942-NEXT:    s_setpc_b64 s[30:31]8649  %vec0 = call <4 x i16> asm "; def $0", "=s"()8650  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8651  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 3, i32 0, i32 0, i32 0>8652  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)8653  ret void8654}8655 8656define void @s_shuffle_v4i16_v3i16__4_0_0_0() {8657; GFX900-LABEL: s_shuffle_v4i16_v3i16__4_0_0_0:8658; GFX900:       ; %bb.0:8659; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8660; GFX900-NEXT:    ;;#ASMSTART8661; GFX900-NEXT:    ; def s[4:5]8662; GFX900-NEXT:    ;;#ASMEND8663; GFX900-NEXT:    ;;#ASMSTART8664; GFX900-NEXT:    ; def s[6:7]8665; GFX900-NEXT:    ;;#ASMEND8666; GFX900-NEXT:    s_lshr_b32 s5, s6, 168667; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s48668; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s48669; GFX900-NEXT:    ;;#ASMSTART8670; GFX900-NEXT:    ; use s[8:9]8671; GFX900-NEXT:    ;;#ASMEND8672; GFX900-NEXT:    s_setpc_b64 s[30:31]8673;8674; GFX90A-LABEL: s_shuffle_v4i16_v3i16__4_0_0_0:8675; GFX90A:       ; %bb.0:8676; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8677; GFX90A-NEXT:    ;;#ASMSTART8678; GFX90A-NEXT:    ; def s[4:5]8679; GFX90A-NEXT:    ;;#ASMEND8680; GFX90A-NEXT:    ;;#ASMSTART8681; GFX90A-NEXT:    ; def s[6:7]8682; GFX90A-NEXT:    ;;#ASMEND8683; GFX90A-NEXT:    s_lshr_b32 s5, s6, 168684; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s48685; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s48686; GFX90A-NEXT:    ;;#ASMSTART8687; GFX90A-NEXT:    ; use s[8:9]8688; GFX90A-NEXT:    ;;#ASMEND8689; GFX90A-NEXT:    s_setpc_b64 s[30:31]8690;8691; GFX942-LABEL: s_shuffle_v4i16_v3i16__4_0_0_0:8692; GFX942:       ; %bb.0:8693; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8694; GFX942-NEXT:    ;;#ASMSTART8695; GFX942-NEXT:    ; def s[0:1]8696; GFX942-NEXT:    ;;#ASMEND8697; GFX942-NEXT:    ;;#ASMSTART8698; GFX942-NEXT:    ; def s[2:3]8699; GFX942-NEXT:    ;;#ASMEND8700; GFX942-NEXT:    s_lshr_b32 s1, s2, 168701; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s08702; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s08703; GFX942-NEXT:    ;;#ASMSTART8704; GFX942-NEXT:    ; use s[8:9]8705; GFX942-NEXT:    ;;#ASMEND8706; GFX942-NEXT:    s_setpc_b64 s[30:31]8707  %vec0 = call <4 x i16> asm "; def $0", "=s"()8708  %vec1 = call <4 x i16> asm "; def $0", "=s"()8709  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8710  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8711  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 4, i32 0, i32 0, i32 0>8712  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)8713  ret void8714}8715 8716define void @s_shuffle_v4i16_v3i16__5_0_0_0() {8717; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_0_0_0:8718; GFX900:       ; %bb.0:8719; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8720; GFX900-NEXT:    ;;#ASMSTART8721; GFX900-NEXT:    ; def s[4:5]8722; GFX900-NEXT:    ;;#ASMEND8723; GFX900-NEXT:    ;;#ASMSTART8724; GFX900-NEXT:    ; def s[6:7]8725; GFX900-NEXT:    ;;#ASMEND8726; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s48727; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s48728; GFX900-NEXT:    ;;#ASMSTART8729; GFX900-NEXT:    ; use s[8:9]8730; GFX900-NEXT:    ;;#ASMEND8731; GFX900-NEXT:    s_setpc_b64 s[30:31]8732;8733; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_0_0_0:8734; GFX90A:       ; %bb.0:8735; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8736; GFX90A-NEXT:    ;;#ASMSTART8737; GFX90A-NEXT:    ; def s[4:5]8738; GFX90A-NEXT:    ;;#ASMEND8739; GFX90A-NEXT:    ;;#ASMSTART8740; GFX90A-NEXT:    ; def s[6:7]8741; GFX90A-NEXT:    ;;#ASMEND8742; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s48743; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s48744; GFX90A-NEXT:    ;;#ASMSTART8745; GFX90A-NEXT:    ; use s[8:9]8746; GFX90A-NEXT:    ;;#ASMEND8747; GFX90A-NEXT:    s_setpc_b64 s[30:31]8748;8749; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_0_0_0:8750; GFX942:       ; %bb.0:8751; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8752; GFX942-NEXT:    ;;#ASMSTART8753; GFX942-NEXT:    ; def s[0:1]8754; GFX942-NEXT:    ;;#ASMEND8755; GFX942-NEXT:    ;;#ASMSTART8756; GFX942-NEXT:    ; def s[2:3]8757; GFX942-NEXT:    ;;#ASMEND8758; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s08759; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s08760; GFX942-NEXT:    ;;#ASMSTART8761; GFX942-NEXT:    ; use s[8:9]8762; GFX942-NEXT:    ;;#ASMEND8763; GFX942-NEXT:    s_setpc_b64 s[30:31]8764  %vec0 = call <4 x i16> asm "; def $0", "=s"()8765  %vec1 = call <4 x i16> asm "; def $0", "=s"()8766  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8767  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8768  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 0, i32 0, i32 0>8769  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)8770  ret void8771}8772 8773define void @s_shuffle_v4i16_v3i16__5_u_0_0() {8774; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_u_0_0:8775; GFX900:       ; %bb.0:8776; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8777; GFX900-NEXT:    ;;#ASMSTART8778; GFX900-NEXT:    ; def s[4:5]8779; GFX900-NEXT:    ;;#ASMEND8780; GFX900-NEXT:    ;;#ASMSTART8781; GFX900-NEXT:    ; def s[6:7]8782; GFX900-NEXT:    ;;#ASMEND8783; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s48784; GFX900-NEXT:    s_mov_b32 s8, s78785; GFX900-NEXT:    ;;#ASMSTART8786; GFX900-NEXT:    ; use s[8:9]8787; GFX900-NEXT:    ;;#ASMEND8788; GFX900-NEXT:    s_setpc_b64 s[30:31]8789;8790; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_u_0_0:8791; GFX90A:       ; %bb.0:8792; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8793; GFX90A-NEXT:    ;;#ASMSTART8794; GFX90A-NEXT:    ; def s[4:5]8795; GFX90A-NEXT:    ;;#ASMEND8796; GFX90A-NEXT:    ;;#ASMSTART8797; GFX90A-NEXT:    ; def s[6:7]8798; GFX90A-NEXT:    ;;#ASMEND8799; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s48800; GFX90A-NEXT:    s_mov_b32 s8, s78801; GFX90A-NEXT:    ;;#ASMSTART8802; GFX90A-NEXT:    ; use s[8:9]8803; GFX90A-NEXT:    ;;#ASMEND8804; GFX90A-NEXT:    s_setpc_b64 s[30:31]8805;8806; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_u_0_0:8807; GFX942:       ; %bb.0:8808; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8809; GFX942-NEXT:    ;;#ASMSTART8810; GFX942-NEXT:    ; def s[0:1]8811; GFX942-NEXT:    ;;#ASMEND8812; GFX942-NEXT:    ;;#ASMSTART8813; GFX942-NEXT:    ; def s[2:3]8814; GFX942-NEXT:    ;;#ASMEND8815; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s08816; GFX942-NEXT:    s_mov_b32 s8, s38817; GFX942-NEXT:    ;;#ASMSTART8818; GFX942-NEXT:    ; use s[8:9]8819; GFX942-NEXT:    ;;#ASMEND8820; GFX942-NEXT:    s_setpc_b64 s[30:31]8821  %vec0 = call <4 x i16> asm "; def $0", "=s"()8822  %vec1 = call <4 x i16> asm "; def $0", "=s"()8823  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8824  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8825  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 poison, i32 0, i32 0>8826  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)8827  ret void8828}8829 8830define void @s_shuffle_v4i16_v3i16__5_1_0_0() {8831; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_1_0_0:8832; GFX900:       ; %bb.0:8833; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8834; GFX900-NEXT:    ;;#ASMSTART8835; GFX900-NEXT:    ; def s[4:5]8836; GFX900-NEXT:    ;;#ASMEND8837; GFX900-NEXT:    ;;#ASMSTART8838; GFX900-NEXT:    ; def s[6:7]8839; GFX900-NEXT:    ;;#ASMEND8840; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s7, s48841; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s48842; GFX900-NEXT:    ;;#ASMSTART8843; GFX900-NEXT:    ; use s[8:9]8844; GFX900-NEXT:    ;;#ASMEND8845; GFX900-NEXT:    s_setpc_b64 s[30:31]8846;8847; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_1_0_0:8848; GFX90A:       ; %bb.0:8849; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8850; GFX90A-NEXT:    ;;#ASMSTART8851; GFX90A-NEXT:    ; def s[4:5]8852; GFX90A-NEXT:    ;;#ASMEND8853; GFX90A-NEXT:    ;;#ASMSTART8854; GFX90A-NEXT:    ; def s[6:7]8855; GFX90A-NEXT:    ;;#ASMEND8856; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s7, s48857; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s48858; GFX90A-NEXT:    ;;#ASMSTART8859; GFX90A-NEXT:    ; use s[8:9]8860; GFX90A-NEXT:    ;;#ASMEND8861; GFX90A-NEXT:    s_setpc_b64 s[30:31]8862;8863; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_1_0_0:8864; GFX942:       ; %bb.0:8865; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8866; GFX942-NEXT:    ;;#ASMSTART8867; GFX942-NEXT:    ; def s[0:1]8868; GFX942-NEXT:    ;;#ASMEND8869; GFX942-NEXT:    ;;#ASMSTART8870; GFX942-NEXT:    ; def s[2:3]8871; GFX942-NEXT:    ;;#ASMEND8872; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s3, s08873; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s08874; GFX942-NEXT:    ;;#ASMSTART8875; GFX942-NEXT:    ; use s[8:9]8876; GFX942-NEXT:    ;;#ASMEND8877; GFX942-NEXT:    s_setpc_b64 s[30:31]8878  %vec0 = call <4 x i16> asm "; def $0", "=s"()8879  %vec1 = call <4 x i16> asm "; def $0", "=s"()8880  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8881  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8882  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 1, i32 0, i32 0>8883  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)8884  ret void8885}8886 8887define void @s_shuffle_v4i16_v3i16__5_2_0_0() {8888; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_2_0_0:8889; GFX900:       ; %bb.0:8890; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8891; GFX900-NEXT:    ;;#ASMSTART8892; GFX900-NEXT:    ; def s[4:5]8893; GFX900-NEXT:    ;;#ASMEND8894; GFX900-NEXT:    ;;#ASMSTART8895; GFX900-NEXT:    ; def s[6:7]8896; GFX900-NEXT:    ;;#ASMEND8897; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s58898; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s48899; GFX900-NEXT:    ;;#ASMSTART8900; GFX900-NEXT:    ; use s[8:9]8901; GFX900-NEXT:    ;;#ASMEND8902; GFX900-NEXT:    s_setpc_b64 s[30:31]8903;8904; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_2_0_0:8905; GFX90A:       ; %bb.0:8906; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8907; GFX90A-NEXT:    ;;#ASMSTART8908; GFX90A-NEXT:    ; def s[4:5]8909; GFX90A-NEXT:    ;;#ASMEND8910; GFX90A-NEXT:    ;;#ASMSTART8911; GFX90A-NEXT:    ; def s[6:7]8912; GFX90A-NEXT:    ;;#ASMEND8913; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s58914; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s48915; GFX90A-NEXT:    ;;#ASMSTART8916; GFX90A-NEXT:    ; use s[8:9]8917; GFX90A-NEXT:    ;;#ASMEND8918; GFX90A-NEXT:    s_setpc_b64 s[30:31]8919;8920; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_2_0_0:8921; GFX942:       ; %bb.0:8922; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8923; GFX942-NEXT:    ;;#ASMSTART8924; GFX942-NEXT:    ; def s[0:1]8925; GFX942-NEXT:    ;;#ASMEND8926; GFX942-NEXT:    ;;#ASMSTART8927; GFX942-NEXT:    ; def s[2:3]8928; GFX942-NEXT:    ;;#ASMEND8929; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s18930; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s08931; GFX942-NEXT:    ;;#ASMSTART8932; GFX942-NEXT:    ; use s[8:9]8933; GFX942-NEXT:    ;;#ASMEND8934; GFX942-NEXT:    s_setpc_b64 s[30:31]8935  %vec0 = call <4 x i16> asm "; def $0", "=s"()8936  %vec1 = call <4 x i16> asm "; def $0", "=s"()8937  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8938  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8939  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 2, i32 0, i32 0>8940  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)8941  ret void8942}8943 8944define void @s_shuffle_v4i16_v3i16__5_3_0_0() {8945; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_3_0_0:8946; GFX900:       ; %bb.0:8947; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8948; GFX900-NEXT:    ;;#ASMSTART8949; GFX900-NEXT:    ; def s[4:5]8950; GFX900-NEXT:    ;;#ASMEND8951; GFX900-NEXT:    ;;#ASMSTART8952; GFX900-NEXT:    ; def s[6:7]8953; GFX900-NEXT:    ;;#ASMEND8954; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s68955; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s48956; GFX900-NEXT:    ;;#ASMSTART8957; GFX900-NEXT:    ; use s[8:9]8958; GFX900-NEXT:    ;;#ASMEND8959; GFX900-NEXT:    s_setpc_b64 s[30:31]8960;8961; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_3_0_0:8962; GFX90A:       ; %bb.0:8963; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8964; GFX90A-NEXT:    ;;#ASMSTART8965; GFX90A-NEXT:    ; def s[4:5]8966; GFX90A-NEXT:    ;;#ASMEND8967; GFX90A-NEXT:    ;;#ASMSTART8968; GFX90A-NEXT:    ; def s[6:7]8969; GFX90A-NEXT:    ;;#ASMEND8970; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s68971; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s48972; GFX90A-NEXT:    ;;#ASMSTART8973; GFX90A-NEXT:    ; use s[8:9]8974; GFX90A-NEXT:    ;;#ASMEND8975; GFX90A-NEXT:    s_setpc_b64 s[30:31]8976;8977; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_3_0_0:8978; GFX942:       ; %bb.0:8979; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8980; GFX942-NEXT:    ;;#ASMSTART8981; GFX942-NEXT:    ; def s[0:1]8982; GFX942-NEXT:    ;;#ASMEND8983; GFX942-NEXT:    ;;#ASMSTART8984; GFX942-NEXT:    ; def s[2:3]8985; GFX942-NEXT:    ;;#ASMEND8986; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s28987; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s08988; GFX942-NEXT:    ;;#ASMSTART8989; GFX942-NEXT:    ; use s[8:9]8990; GFX942-NEXT:    ;;#ASMEND8991; GFX942-NEXT:    s_setpc_b64 s[30:31]8992  %vec0 = call <4 x i16> asm "; def $0", "=s"()8993  %vec1 = call <4 x i16> asm "; def $0", "=s"()8994  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8995  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>8996  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 3, i32 0, i32 0>8997  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)8998  ret void8999}9000 9001define void @s_shuffle_v4i16_v3i16__5_4_0_0() {9002; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_4_0_0:9003; GFX900:       ; %bb.0:9004; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9005; GFX900-NEXT:    ;;#ASMSTART9006; GFX900-NEXT:    ; def s[4:5]9007; GFX900-NEXT:    ;;#ASMEND9008; GFX900-NEXT:    ;;#ASMSTART9009; GFX900-NEXT:    ; def s[6:7]9010; GFX900-NEXT:    ;;#ASMEND9011; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s7, s69012; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s49013; GFX900-NEXT:    ;;#ASMSTART9014; GFX900-NEXT:    ; use s[8:9]9015; GFX900-NEXT:    ;;#ASMEND9016; GFX900-NEXT:    s_setpc_b64 s[30:31]9017;9018; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_4_0_0:9019; GFX90A:       ; %bb.0:9020; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9021; GFX90A-NEXT:    ;;#ASMSTART9022; GFX90A-NEXT:    ; def s[4:5]9023; GFX90A-NEXT:    ;;#ASMEND9024; GFX90A-NEXT:    ;;#ASMSTART9025; GFX90A-NEXT:    ; def s[6:7]9026; GFX90A-NEXT:    ;;#ASMEND9027; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s7, s69028; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s49029; GFX90A-NEXT:    ;;#ASMSTART9030; GFX90A-NEXT:    ; use s[8:9]9031; GFX90A-NEXT:    ;;#ASMEND9032; GFX90A-NEXT:    s_setpc_b64 s[30:31]9033;9034; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_4_0_0:9035; GFX942:       ; %bb.0:9036; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9037; GFX942-NEXT:    ;;#ASMSTART9038; GFX942-NEXT:    ; def s[0:1]9039; GFX942-NEXT:    ;;#ASMEND9040; GFX942-NEXT:    ;;#ASMSTART9041; GFX942-NEXT:    ; def s[2:3]9042; GFX942-NEXT:    ;;#ASMEND9043; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s3, s29044; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s09045; GFX942-NEXT:    ;;#ASMSTART9046; GFX942-NEXT:    ; use s[8:9]9047; GFX942-NEXT:    ;;#ASMEND9048; GFX942-NEXT:    s_setpc_b64 s[30:31]9049  %vec0 = call <4 x i16> asm "; def $0", "=s"()9050  %vec1 = call <4 x i16> asm "; def $0", "=s"()9051  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9052  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9053  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 4, i32 0, i32 0>9054  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)9055  ret void9056}9057 9058define void @s_shuffle_v4i16_v3i16__5_5_0_0() {9059; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_0_0:9060; GFX900:       ; %bb.0:9061; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9062; GFX900-NEXT:    ;;#ASMSTART9063; GFX900-NEXT:    ; def s[4:5]9064; GFX900-NEXT:    ;;#ASMEND9065; GFX900-NEXT:    ;;#ASMSTART9066; GFX900-NEXT:    ; def s[6:7]9067; GFX900-NEXT:    ;;#ASMEND9068; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s49069; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s79070; GFX900-NEXT:    ;;#ASMSTART9071; GFX900-NEXT:    ; use s[8:9]9072; GFX900-NEXT:    ;;#ASMEND9073; GFX900-NEXT:    s_setpc_b64 s[30:31]9074;9075; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_0_0:9076; GFX90A:       ; %bb.0:9077; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9078; GFX90A-NEXT:    ;;#ASMSTART9079; GFX90A-NEXT:    ; def s[4:5]9080; GFX90A-NEXT:    ;;#ASMEND9081; GFX90A-NEXT:    ;;#ASMSTART9082; GFX90A-NEXT:    ; def s[6:7]9083; GFX90A-NEXT:    ;;#ASMEND9084; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s49085; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s79086; GFX90A-NEXT:    ;;#ASMSTART9087; GFX90A-NEXT:    ; use s[8:9]9088; GFX90A-NEXT:    ;;#ASMEND9089; GFX90A-NEXT:    s_setpc_b64 s[30:31]9090;9091; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_0_0:9092; GFX942:       ; %bb.0:9093; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9094; GFX942-NEXT:    ;;#ASMSTART9095; GFX942-NEXT:    ; def s[0:1]9096; GFX942-NEXT:    ;;#ASMEND9097; GFX942-NEXT:    ;;#ASMSTART9098; GFX942-NEXT:    ; def s[2:3]9099; GFX942-NEXT:    ;;#ASMEND9100; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s09101; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s39102; GFX942-NEXT:    ;;#ASMSTART9103; GFX942-NEXT:    ; use s[8:9]9104; GFX942-NEXT:    ;;#ASMEND9105; GFX942-NEXT:    s_setpc_b64 s[30:31]9106  %vec0 = call <4 x i16> asm "; def $0", "=s"()9107  %vec1 = call <4 x i16> asm "; def $0", "=s"()9108  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9109  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9110  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 0, i32 0>9111  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)9112  ret void9113}9114 9115define void @s_shuffle_v4i16_v3i16__5_5_u_0() {9116; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_u_0:9117; GFX900:       ; %bb.0:9118; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9119; GFX900-NEXT:    ;;#ASMSTART9120; GFX900-NEXT:    ; def s[4:5]9121; GFX900-NEXT:    ;;#ASMEND9122; GFX900-NEXT:    ;;#ASMSTART9123; GFX900-NEXT:    ; def s[6:7]9124; GFX900-NEXT:    ;;#ASMEND9125; GFX900-NEXT:    s_lshl_b32 s9, s4, 169126; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s79127; GFX900-NEXT:    ;;#ASMSTART9128; GFX900-NEXT:    ; use s[8:9]9129; GFX900-NEXT:    ;;#ASMEND9130; GFX900-NEXT:    s_setpc_b64 s[30:31]9131;9132; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_u_0:9133; GFX90A:       ; %bb.0:9134; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9135; GFX90A-NEXT:    ;;#ASMSTART9136; GFX90A-NEXT:    ; def s[4:5]9137; GFX90A-NEXT:    ;;#ASMEND9138; GFX90A-NEXT:    ;;#ASMSTART9139; GFX90A-NEXT:    ; def s[6:7]9140; GFX90A-NEXT:    ;;#ASMEND9141; GFX90A-NEXT:    s_lshl_b32 s9, s4, 169142; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s79143; GFX90A-NEXT:    ;;#ASMSTART9144; GFX90A-NEXT:    ; use s[8:9]9145; GFX90A-NEXT:    ;;#ASMEND9146; GFX90A-NEXT:    s_setpc_b64 s[30:31]9147;9148; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_u_0:9149; GFX942:       ; %bb.0:9150; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9151; GFX942-NEXT:    ;;#ASMSTART9152; GFX942-NEXT:    ; def s[0:1]9153; GFX942-NEXT:    ;;#ASMEND9154; GFX942-NEXT:    ;;#ASMSTART9155; GFX942-NEXT:    ; def s[2:3]9156; GFX942-NEXT:    ;;#ASMEND9157; GFX942-NEXT:    s_lshl_b32 s9, s0, 169158; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s39159; GFX942-NEXT:    ;;#ASMSTART9160; GFX942-NEXT:    ; use s[8:9]9161; GFX942-NEXT:    ;;#ASMEND9162; GFX942-NEXT:    s_setpc_b64 s[30:31]9163  %vec0 = call <4 x i16> asm "; def $0", "=s"()9164  %vec1 = call <4 x i16> asm "; def $0", "=s"()9165  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9166  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9167  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 poison, i32 0>9168  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)9169  ret void9170}9171 9172define void @s_shuffle_v4i16_v3i16__5_5_1_0() {9173; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_1_0:9174; GFX900:       ; %bb.0:9175; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9176; GFX900-NEXT:    ;;#ASMSTART9177; GFX900-NEXT:    ; def s[4:5]9178; GFX900-NEXT:    ;;#ASMEND9179; GFX900-NEXT:    s_lshr_b32 s5, s4, 169180; GFX900-NEXT:    ;;#ASMSTART9181; GFX900-NEXT:    ; def s[6:7]9182; GFX900-NEXT:    ;;#ASMEND9183; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s5, s49184; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s79185; GFX900-NEXT:    ;;#ASMSTART9186; GFX900-NEXT:    ; use s[8:9]9187; GFX900-NEXT:    ;;#ASMEND9188; GFX900-NEXT:    s_setpc_b64 s[30:31]9189;9190; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_1_0:9191; GFX90A:       ; %bb.0:9192; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9193; GFX90A-NEXT:    ;;#ASMSTART9194; GFX90A-NEXT:    ; def s[4:5]9195; GFX90A-NEXT:    ;;#ASMEND9196; GFX90A-NEXT:    s_lshr_b32 s5, s4, 169197; GFX90A-NEXT:    ;;#ASMSTART9198; GFX90A-NEXT:    ; def s[6:7]9199; GFX90A-NEXT:    ;;#ASMEND9200; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s5, s49201; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s79202; GFX90A-NEXT:    ;;#ASMSTART9203; GFX90A-NEXT:    ; use s[8:9]9204; GFX90A-NEXT:    ;;#ASMEND9205; GFX90A-NEXT:    s_setpc_b64 s[30:31]9206;9207; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_1_0:9208; GFX942:       ; %bb.0:9209; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9210; GFX942-NEXT:    ;;#ASMSTART9211; GFX942-NEXT:    ; def s[0:1]9212; GFX942-NEXT:    ;;#ASMEND9213; GFX942-NEXT:    s_lshr_b32 s1, s0, 169214; GFX942-NEXT:    ;;#ASMSTART9215; GFX942-NEXT:    ; def s[2:3]9216; GFX942-NEXT:    ;;#ASMEND9217; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s1, s09218; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s39219; GFX942-NEXT:    ;;#ASMSTART9220; GFX942-NEXT:    ; use s[8:9]9221; GFX942-NEXT:    ;;#ASMEND9222; GFX942-NEXT:    s_setpc_b64 s[30:31]9223  %vec0 = call <4 x i16> asm "; def $0", "=s"()9224  %vec1 = call <4 x i16> asm "; def $0", "=s"()9225  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9226  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9227  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 1, i32 0>9228  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)9229  ret void9230}9231 9232define void @s_shuffle_v4i16_v3i16__5_5_2_0() {9233; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_2_0:9234; GFX900:       ; %bb.0:9235; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9236; GFX900-NEXT:    ;;#ASMSTART9237; GFX900-NEXT:    ; def s[4:5]9238; GFX900-NEXT:    ;;#ASMEND9239; GFX900-NEXT:    ;;#ASMSTART9240; GFX900-NEXT:    ; def s[6:7]9241; GFX900-NEXT:    ;;#ASMEND9242; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s5, s49243; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s79244; GFX900-NEXT:    ;;#ASMSTART9245; GFX900-NEXT:    ; use s[8:9]9246; GFX900-NEXT:    ;;#ASMEND9247; GFX900-NEXT:    s_setpc_b64 s[30:31]9248;9249; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_2_0:9250; GFX90A:       ; %bb.0:9251; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9252; GFX90A-NEXT:    ;;#ASMSTART9253; GFX90A-NEXT:    ; def s[4:5]9254; GFX90A-NEXT:    ;;#ASMEND9255; GFX90A-NEXT:    ;;#ASMSTART9256; GFX90A-NEXT:    ; def s[6:7]9257; GFX90A-NEXT:    ;;#ASMEND9258; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s5, s49259; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s79260; GFX90A-NEXT:    ;;#ASMSTART9261; GFX90A-NEXT:    ; use s[8:9]9262; GFX90A-NEXT:    ;;#ASMEND9263; GFX90A-NEXT:    s_setpc_b64 s[30:31]9264;9265; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_2_0:9266; GFX942:       ; %bb.0:9267; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9268; GFX942-NEXT:    ;;#ASMSTART9269; GFX942-NEXT:    ; def s[0:1]9270; GFX942-NEXT:    ;;#ASMEND9271; GFX942-NEXT:    ;;#ASMSTART9272; GFX942-NEXT:    ; def s[2:3]9273; GFX942-NEXT:    ;;#ASMEND9274; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s1, s09275; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s39276; GFX942-NEXT:    ;;#ASMSTART9277; GFX942-NEXT:    ; use s[8:9]9278; GFX942-NEXT:    ;;#ASMEND9279; GFX942-NEXT:    s_setpc_b64 s[30:31]9280  %vec0 = call <4 x i16> asm "; def $0", "=s"()9281  %vec1 = call <4 x i16> asm "; def $0", "=s"()9282  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9283  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9284  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 2, i32 0>9285  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)9286  ret void9287}9288 9289define void @s_shuffle_v4i16_v3i16__5_5_3_0() {9290; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_3_0:9291; GFX900:       ; %bb.0:9292; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9293; GFX900-NEXT:    ;;#ASMSTART9294; GFX900-NEXT:    ; def s[4:5]9295; GFX900-NEXT:    ;;#ASMEND9296; GFX900-NEXT:    ;;#ASMSTART9297; GFX900-NEXT:    ; def s[6:7]9298; GFX900-NEXT:    ;;#ASMEND9299; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s6, s49300; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s79301; GFX900-NEXT:    ;;#ASMSTART9302; GFX900-NEXT:    ; use s[8:9]9303; GFX900-NEXT:    ;;#ASMEND9304; GFX900-NEXT:    s_setpc_b64 s[30:31]9305;9306; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_3_0:9307; GFX90A:       ; %bb.0:9308; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9309; GFX90A-NEXT:    ;;#ASMSTART9310; GFX90A-NEXT:    ; def s[4:5]9311; GFX90A-NEXT:    ;;#ASMEND9312; GFX90A-NEXT:    ;;#ASMSTART9313; GFX90A-NEXT:    ; def s[6:7]9314; GFX90A-NEXT:    ;;#ASMEND9315; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s6, s49316; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s79317; GFX90A-NEXT:    ;;#ASMSTART9318; GFX90A-NEXT:    ; use s[8:9]9319; GFX90A-NEXT:    ;;#ASMEND9320; GFX90A-NEXT:    s_setpc_b64 s[30:31]9321;9322; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_3_0:9323; GFX942:       ; %bb.0:9324; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9325; GFX942-NEXT:    ;;#ASMSTART9326; GFX942-NEXT:    ; def s[0:1]9327; GFX942-NEXT:    ;;#ASMEND9328; GFX942-NEXT:    ;;#ASMSTART9329; GFX942-NEXT:    ; def s[2:3]9330; GFX942-NEXT:    ;;#ASMEND9331; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s2, s09332; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s39333; GFX942-NEXT:    ;;#ASMSTART9334; GFX942-NEXT:    ; use s[8:9]9335; GFX942-NEXT:    ;;#ASMEND9336; GFX942-NEXT:    s_setpc_b64 s[30:31]9337  %vec0 = call <4 x i16> asm "; def $0", "=s"()9338  %vec1 = call <4 x i16> asm "; def $0", "=s"()9339  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9340  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9341  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 3, i32 0>9342  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)9343  ret void9344}9345 9346define void @s_shuffle_v4i16_v3i16__5_5_4_0() {9347; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_4_0:9348; GFX900:       ; %bb.0:9349; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9350; GFX900-NEXT:    ;;#ASMSTART9351; GFX900-NEXT:    ; def s[4:5]9352; GFX900-NEXT:    ;;#ASMEND9353; GFX900-NEXT:    ;;#ASMSTART9354; GFX900-NEXT:    ; def s[6:7]9355; GFX900-NEXT:    ;;#ASMEND9356; GFX900-NEXT:    s_lshr_b32 s5, s6, 169357; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s5, s49358; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s79359; GFX900-NEXT:    ;;#ASMSTART9360; GFX900-NEXT:    ; use s[8:9]9361; GFX900-NEXT:    ;;#ASMEND9362; GFX900-NEXT:    s_setpc_b64 s[30:31]9363;9364; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_4_0:9365; GFX90A:       ; %bb.0:9366; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9367; GFX90A-NEXT:    ;;#ASMSTART9368; GFX90A-NEXT:    ; def s[4:5]9369; GFX90A-NEXT:    ;;#ASMEND9370; GFX90A-NEXT:    ;;#ASMSTART9371; GFX90A-NEXT:    ; def s[6:7]9372; GFX90A-NEXT:    ;;#ASMEND9373; GFX90A-NEXT:    s_lshr_b32 s5, s6, 169374; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s5, s49375; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s79376; GFX90A-NEXT:    ;;#ASMSTART9377; GFX90A-NEXT:    ; use s[8:9]9378; GFX90A-NEXT:    ;;#ASMEND9379; GFX90A-NEXT:    s_setpc_b64 s[30:31]9380;9381; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_4_0:9382; GFX942:       ; %bb.0:9383; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9384; GFX942-NEXT:    ;;#ASMSTART9385; GFX942-NEXT:    ; def s[0:1]9386; GFX942-NEXT:    ;;#ASMEND9387; GFX942-NEXT:    ;;#ASMSTART9388; GFX942-NEXT:    ; def s[2:3]9389; GFX942-NEXT:    ;;#ASMEND9390; GFX942-NEXT:    s_lshr_b32 s1, s2, 169391; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s1, s09392; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s39393; GFX942-NEXT:    ;;#ASMSTART9394; GFX942-NEXT:    ; use s[8:9]9395; GFX942-NEXT:    ;;#ASMEND9396; GFX942-NEXT:    s_setpc_b64 s[30:31]9397  %vec0 = call <4 x i16> asm "; def $0", "=s"()9398  %vec1 = call <4 x i16> asm "; def $0", "=s"()9399  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9400  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9401  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 4, i32 0>9402  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)9403  ret void9404}9405 9406define void @s_shuffle_v4i16_v3i16__u_1_1_1() {9407; GFX9-LABEL: s_shuffle_v4i16_v3i16__u_1_1_1:9408; GFX9:       ; %bb.0:9409; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9410; GFX9-NEXT:    ;;#ASMSTART9411; GFX9-NEXT:    ; def s[8:9]9412; GFX9-NEXT:    ;;#ASMEND9413; GFX9-NEXT:    s_pack_hh_b32_b16 s9, s8, s89414; GFX9-NEXT:    ;;#ASMSTART9415; GFX9-NEXT:    ; use s[8:9]9416; GFX9-NEXT:    ;;#ASMEND9417; GFX9-NEXT:    s_setpc_b64 s[30:31]9418  %vec0 = call <4 x i16> asm "; def $0", "=s"()9419  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9420  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1>9421  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)9422  ret void9423}9424 9425define void @s_shuffle_v4i16_v3i16__0_1_1_1() {9426; GFX9-LABEL: s_shuffle_v4i16_v3i16__0_1_1_1:9427; GFX9:       ; %bb.0:9428; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9429; GFX9-NEXT:    ;;#ASMSTART9430; GFX9-NEXT:    ; def s[8:9]9431; GFX9-NEXT:    ;;#ASMEND9432; GFX9-NEXT:    s_pack_hh_b32_b16 s9, s8, s89433; GFX9-NEXT:    ;;#ASMSTART9434; GFX9-NEXT:    ; use s[8:9]9435; GFX9-NEXT:    ;;#ASMEND9436; GFX9-NEXT:    s_setpc_b64 s[30:31]9437  %vec0 = call <4 x i16> asm "; def $0", "=s"()9438  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9439  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1>9440  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)9441  ret void9442}9443 9444define void @s_shuffle_v4i16_v3i16__1_1_1_1() {9445; GFX900-LABEL: s_shuffle_v4i16_v3i16__1_1_1_1:9446; GFX900:       ; %bb.0:9447; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9448; GFX900-NEXT:    ;;#ASMSTART9449; GFX900-NEXT:    ; def s[4:5]9450; GFX900-NEXT:    ;;#ASMEND9451; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s49452; GFX900-NEXT:    s_mov_b32 s9, s89453; GFX900-NEXT:    ;;#ASMSTART9454; GFX900-NEXT:    ; use s[8:9]9455; GFX900-NEXT:    ;;#ASMEND9456; GFX900-NEXT:    s_setpc_b64 s[30:31]9457;9458; GFX90A-LABEL: s_shuffle_v4i16_v3i16__1_1_1_1:9459; GFX90A:       ; %bb.0:9460; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9461; GFX90A-NEXT:    ;;#ASMSTART9462; GFX90A-NEXT:    ; def s[4:5]9463; GFX90A-NEXT:    ;;#ASMEND9464; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s49465; GFX90A-NEXT:    s_mov_b32 s9, s89466; GFX90A-NEXT:    ;;#ASMSTART9467; GFX90A-NEXT:    ; use s[8:9]9468; GFX90A-NEXT:    ;;#ASMEND9469; GFX90A-NEXT:    s_setpc_b64 s[30:31]9470;9471; GFX942-LABEL: s_shuffle_v4i16_v3i16__1_1_1_1:9472; GFX942:       ; %bb.0:9473; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9474; GFX942-NEXT:    ;;#ASMSTART9475; GFX942-NEXT:    ; def s[0:1]9476; GFX942-NEXT:    ;;#ASMEND9477; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s09478; GFX942-NEXT:    s_mov_b32 s9, s89479; GFX942-NEXT:    ;;#ASMSTART9480; GFX942-NEXT:    ; use s[8:9]9481; GFX942-NEXT:    ;;#ASMEND9482; GFX942-NEXT:    s_setpc_b64 s[30:31]9483  %vec0 = call <4 x i16> asm "; def $0", "=s"()9484  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9485  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>9486  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)9487  ret void9488}9489 9490define void @s_shuffle_v4i16_v3i16__2_1_1_1() {9491; GFX900-LABEL: s_shuffle_v4i16_v3i16__2_1_1_1:9492; GFX900:       ; %bb.0:9493; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9494; GFX900-NEXT:    ;;#ASMSTART9495; GFX900-NEXT:    ; def s[4:5]9496; GFX900-NEXT:    ;;#ASMEND9497; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s5, s49498; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s4, s49499; GFX900-NEXT:    ;;#ASMSTART9500; GFX900-NEXT:    ; use s[8:9]9501; GFX900-NEXT:    ;;#ASMEND9502; GFX900-NEXT:    s_setpc_b64 s[30:31]9503;9504; GFX90A-LABEL: s_shuffle_v4i16_v3i16__2_1_1_1:9505; GFX90A:       ; %bb.0:9506; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9507; GFX90A-NEXT:    ;;#ASMSTART9508; GFX90A-NEXT:    ; def s[4:5]9509; GFX90A-NEXT:    ;;#ASMEND9510; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s5, s49511; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s4, s49512; GFX90A-NEXT:    ;;#ASMSTART9513; GFX90A-NEXT:    ; use s[8:9]9514; GFX90A-NEXT:    ;;#ASMEND9515; GFX90A-NEXT:    s_setpc_b64 s[30:31]9516;9517; GFX942-LABEL: s_shuffle_v4i16_v3i16__2_1_1_1:9518; GFX942:       ; %bb.0:9519; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9520; GFX942-NEXT:    ;;#ASMSTART9521; GFX942-NEXT:    ; def s[0:1]9522; GFX942-NEXT:    ;;#ASMEND9523; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s1, s09524; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s0, s09525; GFX942-NEXT:    ;;#ASMSTART9526; GFX942-NEXT:    ; use s[8:9]9527; GFX942-NEXT:    ;;#ASMEND9528; GFX942-NEXT:    s_setpc_b64 s[30:31]9529  %vec0 = call <4 x i16> asm "; def $0", "=s"()9530  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9531  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1>9532  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)9533  ret void9534}9535 9536define void @s_shuffle_v4i16_v3i16__3_1_1_1() {9537; GFX9-LABEL: s_shuffle_v4i16_v3i16__3_1_1_1:9538; GFX9:       ; %bb.0:9539; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9540; GFX9-NEXT:    ;;#ASMSTART9541; GFX9-NEXT:    ; def s[8:9]9542; GFX9-NEXT:    ;;#ASMEND9543; GFX9-NEXT:    s_pack_hh_b32_b16 s9, s8, s89544; GFX9-NEXT:    ;;#ASMSTART9545; GFX9-NEXT:    ; use s[8:9]9546; GFX9-NEXT:    ;;#ASMEND9547; GFX9-NEXT:    s_setpc_b64 s[30:31]9548  %vec0 = call <4 x i16> asm "; def $0", "=s"()9549  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9550  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 3, i32 1, i32 1, i32 1>9551  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)9552  ret void9553}9554 9555define void @s_shuffle_v4i16_v3i16__4_1_1_1() {9556; GFX900-LABEL: s_shuffle_v4i16_v3i16__4_1_1_1:9557; GFX900:       ; %bb.0:9558; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9559; GFX900-NEXT:    ;;#ASMSTART9560; GFX900-NEXT:    ; def s[4:5]9561; GFX900-NEXT:    ;;#ASMEND9562; GFX900-NEXT:    ;;#ASMSTART9563; GFX900-NEXT:    ; def s[6:7]9564; GFX900-NEXT:    ;;#ASMEND9565; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s6, s49566; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s4, s49567; GFX900-NEXT:    ;;#ASMSTART9568; GFX900-NEXT:    ; use s[8:9]9569; GFX900-NEXT:    ;;#ASMEND9570; GFX900-NEXT:    s_setpc_b64 s[30:31]9571;9572; GFX90A-LABEL: s_shuffle_v4i16_v3i16__4_1_1_1:9573; GFX90A:       ; %bb.0:9574; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9575; GFX90A-NEXT:    ;;#ASMSTART9576; GFX90A-NEXT:    ; def s[4:5]9577; GFX90A-NEXT:    ;;#ASMEND9578; GFX90A-NEXT:    ;;#ASMSTART9579; GFX90A-NEXT:    ; def s[6:7]9580; GFX90A-NEXT:    ;;#ASMEND9581; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s6, s49582; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s4, s49583; GFX90A-NEXT:    ;;#ASMSTART9584; GFX90A-NEXT:    ; use s[8:9]9585; GFX90A-NEXT:    ;;#ASMEND9586; GFX90A-NEXT:    s_setpc_b64 s[30:31]9587;9588; GFX942-LABEL: s_shuffle_v4i16_v3i16__4_1_1_1:9589; GFX942:       ; %bb.0:9590; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9591; GFX942-NEXT:    ;;#ASMSTART9592; GFX942-NEXT:    ; def s[0:1]9593; GFX942-NEXT:    ;;#ASMEND9594; GFX942-NEXT:    ;;#ASMSTART9595; GFX942-NEXT:    ; def s[2:3]9596; GFX942-NEXT:    ;;#ASMEND9597; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s2, s09598; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s0, s09599; GFX942-NEXT:    ;;#ASMSTART9600; GFX942-NEXT:    ; use s[8:9]9601; GFX942-NEXT:    ;;#ASMEND9602; GFX942-NEXT:    s_setpc_b64 s[30:31]9603  %vec0 = call <4 x i16> asm "; def $0", "=s"()9604  %vec1 = call <4 x i16> asm "; def $0", "=s"()9605  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9606  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9607  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 4, i32 1, i32 1, i32 1>9608  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)9609  ret void9610}9611 9612define void @s_shuffle_v4i16_v3i16__5_1_1_1() {9613; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_1_1_1:9614; GFX900:       ; %bb.0:9615; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9616; GFX900-NEXT:    ;;#ASMSTART9617; GFX900-NEXT:    ; def s[4:5]9618; GFX900-NEXT:    ;;#ASMEND9619; GFX900-NEXT:    ;;#ASMSTART9620; GFX900-NEXT:    ; def s[6:7]9621; GFX900-NEXT:    ;;#ASMEND9622; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s7, s49623; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s4, s49624; GFX900-NEXT:    ;;#ASMSTART9625; GFX900-NEXT:    ; use s[8:9]9626; GFX900-NEXT:    ;;#ASMEND9627; GFX900-NEXT:    s_setpc_b64 s[30:31]9628;9629; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_1_1_1:9630; GFX90A:       ; %bb.0:9631; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9632; GFX90A-NEXT:    ;;#ASMSTART9633; GFX90A-NEXT:    ; def s[4:5]9634; GFX90A-NEXT:    ;;#ASMEND9635; GFX90A-NEXT:    ;;#ASMSTART9636; GFX90A-NEXT:    ; def s[6:7]9637; GFX90A-NEXT:    ;;#ASMEND9638; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s7, s49639; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s4, s49640; GFX90A-NEXT:    ;;#ASMSTART9641; GFX90A-NEXT:    ; use s[8:9]9642; GFX90A-NEXT:    ;;#ASMEND9643; GFX90A-NEXT:    s_setpc_b64 s[30:31]9644;9645; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_1_1_1:9646; GFX942:       ; %bb.0:9647; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9648; GFX942-NEXT:    ;;#ASMSTART9649; GFX942-NEXT:    ; def s[0:1]9650; GFX942-NEXT:    ;;#ASMEND9651; GFX942-NEXT:    ;;#ASMSTART9652; GFX942-NEXT:    ; def s[2:3]9653; GFX942-NEXT:    ;;#ASMEND9654; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s3, s09655; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s0, s09656; GFX942-NEXT:    ;;#ASMSTART9657; GFX942-NEXT:    ; use s[8:9]9658; GFX942-NEXT:    ;;#ASMEND9659; GFX942-NEXT:    s_setpc_b64 s[30:31]9660  %vec0 = call <4 x i16> asm "; def $0", "=s"()9661  %vec1 = call <4 x i16> asm "; def $0", "=s"()9662  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9663  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9664  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 1, i32 1, i32 1>9665  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)9666  ret void9667}9668 9669define void @s_shuffle_v4i16_v3i16__5_u_1_1() {9670; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_u_1_1:9671; GFX900:       ; %bb.0:9672; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9673; GFX900-NEXT:    ;;#ASMSTART9674; GFX900-NEXT:    ; def s[4:5]9675; GFX900-NEXT:    ;;#ASMEND9676; GFX900-NEXT:    ;;#ASMSTART9677; GFX900-NEXT:    ; def s[6:7]9678; GFX900-NEXT:    ;;#ASMEND9679; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s4, s49680; GFX900-NEXT:    s_mov_b32 s8, s79681; GFX900-NEXT:    ;;#ASMSTART9682; GFX900-NEXT:    ; use s[8:9]9683; GFX900-NEXT:    ;;#ASMEND9684; GFX900-NEXT:    s_setpc_b64 s[30:31]9685;9686; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_u_1_1:9687; GFX90A:       ; %bb.0:9688; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9689; GFX90A-NEXT:    ;;#ASMSTART9690; GFX90A-NEXT:    ; def s[4:5]9691; GFX90A-NEXT:    ;;#ASMEND9692; GFX90A-NEXT:    ;;#ASMSTART9693; GFX90A-NEXT:    ; def s[6:7]9694; GFX90A-NEXT:    ;;#ASMEND9695; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s4, s49696; GFX90A-NEXT:    s_mov_b32 s8, s79697; GFX90A-NEXT:    ;;#ASMSTART9698; GFX90A-NEXT:    ; use s[8:9]9699; GFX90A-NEXT:    ;;#ASMEND9700; GFX90A-NEXT:    s_setpc_b64 s[30:31]9701;9702; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_u_1_1:9703; GFX942:       ; %bb.0:9704; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9705; GFX942-NEXT:    ;;#ASMSTART9706; GFX942-NEXT:    ; def s[0:1]9707; GFX942-NEXT:    ;;#ASMEND9708; GFX942-NEXT:    ;;#ASMSTART9709; GFX942-NEXT:    ; def s[2:3]9710; GFX942-NEXT:    ;;#ASMEND9711; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s0, s09712; GFX942-NEXT:    s_mov_b32 s8, s39713; GFX942-NEXT:    ;;#ASMSTART9714; GFX942-NEXT:    ; use s[8:9]9715; GFX942-NEXT:    ;;#ASMEND9716; GFX942-NEXT:    s_setpc_b64 s[30:31]9717  %vec0 = call <4 x i16> asm "; def $0", "=s"()9718  %vec1 = call <4 x i16> asm "; def $0", "=s"()9719  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9720  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9721  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 poison, i32 1, i32 1>9722  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)9723  ret void9724}9725 9726define void @s_shuffle_v4i16_v3i16__5_0_1_1() {9727; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_0_1_1:9728; GFX900:       ; %bb.0:9729; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9730; GFX900-NEXT:    ;;#ASMSTART9731; GFX900-NEXT:    ; def s[4:5]9732; GFX900-NEXT:    ;;#ASMEND9733; GFX900-NEXT:    ;;#ASMSTART9734; GFX900-NEXT:    ; def s[6:7]9735; GFX900-NEXT:    ;;#ASMEND9736; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s49737; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s4, s49738; GFX900-NEXT:    ;;#ASMSTART9739; GFX900-NEXT:    ; use s[8:9]9740; GFX900-NEXT:    ;;#ASMEND9741; GFX900-NEXT:    s_setpc_b64 s[30:31]9742;9743; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_0_1_1:9744; GFX90A:       ; %bb.0:9745; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9746; GFX90A-NEXT:    ;;#ASMSTART9747; GFX90A-NEXT:    ; def s[4:5]9748; GFX90A-NEXT:    ;;#ASMEND9749; GFX90A-NEXT:    ;;#ASMSTART9750; GFX90A-NEXT:    ; def s[6:7]9751; GFX90A-NEXT:    ;;#ASMEND9752; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s49753; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s4, s49754; GFX90A-NEXT:    ;;#ASMSTART9755; GFX90A-NEXT:    ; use s[8:9]9756; GFX90A-NEXT:    ;;#ASMEND9757; GFX90A-NEXT:    s_setpc_b64 s[30:31]9758;9759; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_0_1_1:9760; GFX942:       ; %bb.0:9761; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9762; GFX942-NEXT:    ;;#ASMSTART9763; GFX942-NEXT:    ; def s[0:1]9764; GFX942-NEXT:    ;;#ASMEND9765; GFX942-NEXT:    ;;#ASMSTART9766; GFX942-NEXT:    ; def s[2:3]9767; GFX942-NEXT:    ;;#ASMEND9768; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s09769; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s0, s09770; GFX942-NEXT:    ;;#ASMSTART9771; GFX942-NEXT:    ; use s[8:9]9772; GFX942-NEXT:    ;;#ASMEND9773; GFX942-NEXT:    s_setpc_b64 s[30:31]9774  %vec0 = call <4 x i16> asm "; def $0", "=s"()9775  %vec1 = call <4 x i16> asm "; def $0", "=s"()9776  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9777  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9778  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 0, i32 1, i32 1>9779  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)9780  ret void9781}9782 9783define void @s_shuffle_v4i16_v3i16__5_2_1_1() {9784; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_2_1_1:9785; GFX900:       ; %bb.0:9786; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9787; GFX900-NEXT:    ;;#ASMSTART9788; GFX900-NEXT:    ; def s[4:5]9789; GFX900-NEXT:    ;;#ASMEND9790; GFX900-NEXT:    ;;#ASMSTART9791; GFX900-NEXT:    ; def s[6:7]9792; GFX900-NEXT:    ;;#ASMEND9793; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s59794; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s4, s49795; GFX900-NEXT:    ;;#ASMSTART9796; GFX900-NEXT:    ; use s[8:9]9797; GFX900-NEXT:    ;;#ASMEND9798; GFX900-NEXT:    s_setpc_b64 s[30:31]9799;9800; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_2_1_1:9801; GFX90A:       ; %bb.0:9802; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9803; GFX90A-NEXT:    ;;#ASMSTART9804; GFX90A-NEXT:    ; def s[4:5]9805; GFX90A-NEXT:    ;;#ASMEND9806; GFX90A-NEXT:    ;;#ASMSTART9807; GFX90A-NEXT:    ; def s[6:7]9808; GFX90A-NEXT:    ;;#ASMEND9809; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s59810; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s4, s49811; GFX90A-NEXT:    ;;#ASMSTART9812; GFX90A-NEXT:    ; use s[8:9]9813; GFX90A-NEXT:    ;;#ASMEND9814; GFX90A-NEXT:    s_setpc_b64 s[30:31]9815;9816; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_2_1_1:9817; GFX942:       ; %bb.0:9818; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9819; GFX942-NEXT:    ;;#ASMSTART9820; GFX942-NEXT:    ; def s[0:1]9821; GFX942-NEXT:    ;;#ASMEND9822; GFX942-NEXT:    ;;#ASMSTART9823; GFX942-NEXT:    ; def s[2:3]9824; GFX942-NEXT:    ;;#ASMEND9825; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s19826; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s0, s09827; GFX942-NEXT:    ;;#ASMSTART9828; GFX942-NEXT:    ; use s[8:9]9829; GFX942-NEXT:    ;;#ASMEND9830; GFX942-NEXT:    s_setpc_b64 s[30:31]9831  %vec0 = call <4 x i16> asm "; def $0", "=s"()9832  %vec1 = call <4 x i16> asm "; def $0", "=s"()9833  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9834  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9835  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 2, i32 1, i32 1>9836  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)9837  ret void9838}9839 9840define void @s_shuffle_v4i16_v3i16__5_3_1_1() {9841; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_3_1_1:9842; GFX900:       ; %bb.0:9843; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9844; GFX900-NEXT:    ;;#ASMSTART9845; GFX900-NEXT:    ; def s[4:5]9846; GFX900-NEXT:    ;;#ASMEND9847; GFX900-NEXT:    ;;#ASMSTART9848; GFX900-NEXT:    ; def s[6:7]9849; GFX900-NEXT:    ;;#ASMEND9850; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s69851; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s4, s49852; GFX900-NEXT:    ;;#ASMSTART9853; GFX900-NEXT:    ; use s[8:9]9854; GFX900-NEXT:    ;;#ASMEND9855; GFX900-NEXT:    s_setpc_b64 s[30:31]9856;9857; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_3_1_1:9858; GFX90A:       ; %bb.0:9859; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9860; GFX90A-NEXT:    ;;#ASMSTART9861; GFX90A-NEXT:    ; def s[4:5]9862; GFX90A-NEXT:    ;;#ASMEND9863; GFX90A-NEXT:    ;;#ASMSTART9864; GFX90A-NEXT:    ; def s[6:7]9865; GFX90A-NEXT:    ;;#ASMEND9866; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s69867; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s4, s49868; GFX90A-NEXT:    ;;#ASMSTART9869; GFX90A-NEXT:    ; use s[8:9]9870; GFX90A-NEXT:    ;;#ASMEND9871; GFX90A-NEXT:    s_setpc_b64 s[30:31]9872;9873; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_3_1_1:9874; GFX942:       ; %bb.0:9875; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9876; GFX942-NEXT:    ;;#ASMSTART9877; GFX942-NEXT:    ; def s[0:1]9878; GFX942-NEXT:    ;;#ASMEND9879; GFX942-NEXT:    ;;#ASMSTART9880; GFX942-NEXT:    ; def s[2:3]9881; GFX942-NEXT:    ;;#ASMEND9882; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s29883; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s0, s09884; GFX942-NEXT:    ;;#ASMSTART9885; GFX942-NEXT:    ; use s[8:9]9886; GFX942-NEXT:    ;;#ASMEND9887; GFX942-NEXT:    s_setpc_b64 s[30:31]9888  %vec0 = call <4 x i16> asm "; def $0", "=s"()9889  %vec1 = call <4 x i16> asm "; def $0", "=s"()9890  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9891  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9892  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 3, i32 1, i32 1>9893  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)9894  ret void9895}9896 9897define void @s_shuffle_v4i16_v3i16__5_4_1_1() {9898; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_4_1_1:9899; GFX900:       ; %bb.0:9900; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9901; GFX900-NEXT:    ;;#ASMSTART9902; GFX900-NEXT:    ; def s[4:5]9903; GFX900-NEXT:    ;;#ASMEND9904; GFX900-NEXT:    ;;#ASMSTART9905; GFX900-NEXT:    ; def s[6:7]9906; GFX900-NEXT:    ;;#ASMEND9907; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s7, s69908; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s4, s49909; GFX900-NEXT:    ;;#ASMSTART9910; GFX900-NEXT:    ; use s[8:9]9911; GFX900-NEXT:    ;;#ASMEND9912; GFX900-NEXT:    s_setpc_b64 s[30:31]9913;9914; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_4_1_1:9915; GFX90A:       ; %bb.0:9916; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9917; GFX90A-NEXT:    ;;#ASMSTART9918; GFX90A-NEXT:    ; def s[4:5]9919; GFX90A-NEXT:    ;;#ASMEND9920; GFX90A-NEXT:    ;;#ASMSTART9921; GFX90A-NEXT:    ; def s[6:7]9922; GFX90A-NEXT:    ;;#ASMEND9923; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s7, s69924; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s4, s49925; GFX90A-NEXT:    ;;#ASMSTART9926; GFX90A-NEXT:    ; use s[8:9]9927; GFX90A-NEXT:    ;;#ASMEND9928; GFX90A-NEXT:    s_setpc_b64 s[30:31]9929;9930; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_4_1_1:9931; GFX942:       ; %bb.0:9932; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9933; GFX942-NEXT:    ;;#ASMSTART9934; GFX942-NEXT:    ; def s[0:1]9935; GFX942-NEXT:    ;;#ASMEND9936; GFX942-NEXT:    ;;#ASMSTART9937; GFX942-NEXT:    ; def s[2:3]9938; GFX942-NEXT:    ;;#ASMEND9939; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s3, s29940; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s0, s09941; GFX942-NEXT:    ;;#ASMSTART9942; GFX942-NEXT:    ; use s[8:9]9943; GFX942-NEXT:    ;;#ASMEND9944; GFX942-NEXT:    s_setpc_b64 s[30:31]9945  %vec0 = call <4 x i16> asm "; def $0", "=s"()9946  %vec1 = call <4 x i16> asm "; def $0", "=s"()9947  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9948  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>9949  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 4, i32 1, i32 1>9950  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)9951  ret void9952}9953 9954define void @s_shuffle_v4i16_v3i16__5_5_1_1() {9955; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_1_1:9956; GFX900:       ; %bb.0:9957; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9958; GFX900-NEXT:    ;;#ASMSTART9959; GFX900-NEXT:    ; def s[4:5]9960; GFX900-NEXT:    ;;#ASMEND9961; GFX900-NEXT:    ;;#ASMSTART9962; GFX900-NEXT:    ; def s[6:7]9963; GFX900-NEXT:    ;;#ASMEND9964; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s4, s49965; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s79966; GFX900-NEXT:    ;;#ASMSTART9967; GFX900-NEXT:    ; use s[8:9]9968; GFX900-NEXT:    ;;#ASMEND9969; GFX900-NEXT:    s_setpc_b64 s[30:31]9970;9971; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_1_1:9972; GFX90A:       ; %bb.0:9973; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9974; GFX90A-NEXT:    ;;#ASMSTART9975; GFX90A-NEXT:    ; def s[4:5]9976; GFX90A-NEXT:    ;;#ASMEND9977; GFX90A-NEXT:    ;;#ASMSTART9978; GFX90A-NEXT:    ; def s[6:7]9979; GFX90A-NEXT:    ;;#ASMEND9980; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s4, s49981; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s79982; GFX90A-NEXT:    ;;#ASMSTART9983; GFX90A-NEXT:    ; use s[8:9]9984; GFX90A-NEXT:    ;;#ASMEND9985; GFX90A-NEXT:    s_setpc_b64 s[30:31]9986;9987; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_1_1:9988; GFX942:       ; %bb.0:9989; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9990; GFX942-NEXT:    ;;#ASMSTART9991; GFX942-NEXT:    ; def s[0:1]9992; GFX942-NEXT:    ;;#ASMEND9993; GFX942-NEXT:    ;;#ASMSTART9994; GFX942-NEXT:    ; def s[2:3]9995; GFX942-NEXT:    ;;#ASMEND9996; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s0, s09997; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s39998; GFX942-NEXT:    ;;#ASMSTART9999; GFX942-NEXT:    ; use s[8:9]10000; GFX942-NEXT:    ;;#ASMEND10001; GFX942-NEXT:    s_setpc_b64 s[30:31]10002  %vec0 = call <4 x i16> asm "; def $0", "=s"()10003  %vec1 = call <4 x i16> asm "; def $0", "=s"()10004  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10005  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10006  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 1, i32 1>10007  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)10008  ret void10009}10010 10011define void @s_shuffle_v4i16_v3i16__5_5_u_1() {10012; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_u_1:10013; GFX900:       ; %bb.0:10014; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10015; GFX900-NEXT:    ;;#ASMSTART10016; GFX900-NEXT:    ; def s[4:5]10017; GFX900-NEXT:    ;;#ASMEND10018; GFX900-NEXT:    ;;#ASMSTART10019; GFX900-NEXT:    ; def s[6:7]10020; GFX900-NEXT:    ;;#ASMEND10021; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s710022; GFX900-NEXT:    s_mov_b32 s9, s410023; GFX900-NEXT:    ;;#ASMSTART10024; GFX900-NEXT:    ; use s[8:9]10025; GFX900-NEXT:    ;;#ASMEND10026; GFX900-NEXT:    s_setpc_b64 s[30:31]10027;10028; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_u_1:10029; GFX90A:       ; %bb.0:10030; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10031; GFX90A-NEXT:    ;;#ASMSTART10032; GFX90A-NEXT:    ; def s[4:5]10033; GFX90A-NEXT:    ;;#ASMEND10034; GFX90A-NEXT:    ;;#ASMSTART10035; GFX90A-NEXT:    ; def s[6:7]10036; GFX90A-NEXT:    ;;#ASMEND10037; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s710038; GFX90A-NEXT:    s_mov_b32 s9, s410039; GFX90A-NEXT:    ;;#ASMSTART10040; GFX90A-NEXT:    ; use s[8:9]10041; GFX90A-NEXT:    ;;#ASMEND10042; GFX90A-NEXT:    s_setpc_b64 s[30:31]10043;10044; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_u_1:10045; GFX942:       ; %bb.0:10046; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10047; GFX942-NEXT:    ;;#ASMSTART10048; GFX942-NEXT:    ; def s[0:1]10049; GFX942-NEXT:    ;;#ASMEND10050; GFX942-NEXT:    ;;#ASMSTART10051; GFX942-NEXT:    ; def s[2:3]10052; GFX942-NEXT:    ;;#ASMEND10053; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s310054; GFX942-NEXT:    s_mov_b32 s9, s010055; GFX942-NEXT:    ;;#ASMSTART10056; GFX942-NEXT:    ; use s[8:9]10057; GFX942-NEXT:    ;;#ASMEND10058; GFX942-NEXT:    s_setpc_b64 s[30:31]10059  %vec0 = call <4 x i16> asm "; def $0", "=s"()10060  %vec1 = call <4 x i16> asm "; def $0", "=s"()10061  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10062  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10063  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 poison, i32 1>10064  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)10065  ret void10066}10067 10068define void @s_shuffle_v4i16_v3i16__5_5_0_1() {10069; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_0_1:10070; GFX900:       ; %bb.0:10071; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10072; GFX900-NEXT:    ;;#ASMSTART10073; GFX900-NEXT:    ; def s[4:5]10074; GFX900-NEXT:    ;;#ASMEND10075; GFX900-NEXT:    ;;#ASMSTART10076; GFX900-NEXT:    ; def s[6:7]10077; GFX900-NEXT:    ;;#ASMEND10078; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s710079; GFX900-NEXT:    s_mov_b32 s9, s410080; GFX900-NEXT:    ;;#ASMSTART10081; GFX900-NEXT:    ; use s[8:9]10082; GFX900-NEXT:    ;;#ASMEND10083; GFX900-NEXT:    s_setpc_b64 s[30:31]10084;10085; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_0_1:10086; GFX90A:       ; %bb.0:10087; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10088; GFX90A-NEXT:    ;;#ASMSTART10089; GFX90A-NEXT:    ; def s[4:5]10090; GFX90A-NEXT:    ;;#ASMEND10091; GFX90A-NEXT:    ;;#ASMSTART10092; GFX90A-NEXT:    ; def s[6:7]10093; GFX90A-NEXT:    ;;#ASMEND10094; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s710095; GFX90A-NEXT:    s_mov_b32 s9, s410096; GFX90A-NEXT:    ;;#ASMSTART10097; GFX90A-NEXT:    ; use s[8:9]10098; GFX90A-NEXT:    ;;#ASMEND10099; GFX90A-NEXT:    s_setpc_b64 s[30:31]10100;10101; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_0_1:10102; GFX942:       ; %bb.0:10103; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10104; GFX942-NEXT:    ;;#ASMSTART10105; GFX942-NEXT:    ; def s[0:1]10106; GFX942-NEXT:    ;;#ASMEND10107; GFX942-NEXT:    ;;#ASMSTART10108; GFX942-NEXT:    ; def s[2:3]10109; GFX942-NEXT:    ;;#ASMEND10110; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s310111; GFX942-NEXT:    s_mov_b32 s9, s010112; GFX942-NEXT:    ;;#ASMSTART10113; GFX942-NEXT:    ; use s[8:9]10114; GFX942-NEXT:    ;;#ASMEND10115; GFX942-NEXT:    s_setpc_b64 s[30:31]10116  %vec0 = call <4 x i16> asm "; def $0", "=s"()10117  %vec1 = call <4 x i16> asm "; def $0", "=s"()10118  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10119  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10120  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 0, i32 1>10121  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)10122  ret void10123}10124 10125define void @s_shuffle_v4i16_v3i16__5_5_2_1() {10126; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_2_1:10127; GFX900:       ; %bb.0:10128; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10129; GFX900-NEXT:    ;;#ASMSTART10130; GFX900-NEXT:    ; def s[4:5]10131; GFX900-NEXT:    ;;#ASMEND10132; GFX900-NEXT:    ;;#ASMSTART10133; GFX900-NEXT:    ; def s[6:7]10134; GFX900-NEXT:    ;;#ASMEND10135; GFX900-NEXT:    s_pack_lh_b32_b16 s9, s5, s410136; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s710137; GFX900-NEXT:    ;;#ASMSTART10138; GFX900-NEXT:    ; use s[8:9]10139; GFX900-NEXT:    ;;#ASMEND10140; GFX900-NEXT:    s_setpc_b64 s[30:31]10141;10142; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_2_1:10143; GFX90A:       ; %bb.0:10144; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10145; GFX90A-NEXT:    ;;#ASMSTART10146; GFX90A-NEXT:    ; def s[4:5]10147; GFX90A-NEXT:    ;;#ASMEND10148; GFX90A-NEXT:    ;;#ASMSTART10149; GFX90A-NEXT:    ; def s[6:7]10150; GFX90A-NEXT:    ;;#ASMEND10151; GFX90A-NEXT:    s_pack_lh_b32_b16 s9, s5, s410152; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s710153; GFX90A-NEXT:    ;;#ASMSTART10154; GFX90A-NEXT:    ; use s[8:9]10155; GFX90A-NEXT:    ;;#ASMEND10156; GFX90A-NEXT:    s_setpc_b64 s[30:31]10157;10158; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_2_1:10159; GFX942:       ; %bb.0:10160; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10161; GFX942-NEXT:    ;;#ASMSTART10162; GFX942-NEXT:    ; def s[0:1]10163; GFX942-NEXT:    ;;#ASMEND10164; GFX942-NEXT:    ;;#ASMSTART10165; GFX942-NEXT:    ; def s[2:3]10166; GFX942-NEXT:    ;;#ASMEND10167; GFX942-NEXT:    s_pack_lh_b32_b16 s9, s1, s010168; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s310169; GFX942-NEXT:    ;;#ASMSTART10170; GFX942-NEXT:    ; use s[8:9]10171; GFX942-NEXT:    ;;#ASMEND10172; GFX942-NEXT:    s_setpc_b64 s[30:31]10173  %vec0 = call <4 x i16> asm "; def $0", "=s"()10174  %vec1 = call <4 x i16> asm "; def $0", "=s"()10175  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10176  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10177  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 2, i32 1>10178  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)10179  ret void10180}10181 10182define void @s_shuffle_v4i16_v3i16__5_5_3_1() {10183; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_3_1:10184; GFX900:       ; %bb.0:10185; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10186; GFX900-NEXT:    ;;#ASMSTART10187; GFX900-NEXT:    ; def s[4:5]10188; GFX900-NEXT:    ;;#ASMEND10189; GFX900-NEXT:    ;;#ASMSTART10190; GFX900-NEXT:    ; def s[6:7]10191; GFX900-NEXT:    ;;#ASMEND10192; GFX900-NEXT:    s_pack_lh_b32_b16 s9, s6, s410193; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s710194; GFX900-NEXT:    ;;#ASMSTART10195; GFX900-NEXT:    ; use s[8:9]10196; GFX900-NEXT:    ;;#ASMEND10197; GFX900-NEXT:    s_setpc_b64 s[30:31]10198;10199; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_3_1:10200; GFX90A:       ; %bb.0:10201; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10202; GFX90A-NEXT:    ;;#ASMSTART10203; GFX90A-NEXT:    ; def s[4:5]10204; GFX90A-NEXT:    ;;#ASMEND10205; GFX90A-NEXT:    ;;#ASMSTART10206; GFX90A-NEXT:    ; def s[6:7]10207; GFX90A-NEXT:    ;;#ASMEND10208; GFX90A-NEXT:    s_pack_lh_b32_b16 s9, s6, s410209; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s710210; GFX90A-NEXT:    ;;#ASMSTART10211; GFX90A-NEXT:    ; use s[8:9]10212; GFX90A-NEXT:    ;;#ASMEND10213; GFX90A-NEXT:    s_setpc_b64 s[30:31]10214;10215; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_3_1:10216; GFX942:       ; %bb.0:10217; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10218; GFX942-NEXT:    ;;#ASMSTART10219; GFX942-NEXT:    ; def s[0:1]10220; GFX942-NEXT:    ;;#ASMEND10221; GFX942-NEXT:    ;;#ASMSTART10222; GFX942-NEXT:    ; def s[2:3]10223; GFX942-NEXT:    ;;#ASMEND10224; GFX942-NEXT:    s_pack_lh_b32_b16 s9, s2, s010225; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s310226; GFX942-NEXT:    ;;#ASMSTART10227; GFX942-NEXT:    ; use s[8:9]10228; GFX942-NEXT:    ;;#ASMEND10229; GFX942-NEXT:    s_setpc_b64 s[30:31]10230  %vec0 = call <4 x i16> asm "; def $0", "=s"()10231  %vec1 = call <4 x i16> asm "; def $0", "=s"()10232  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10233  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10234  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 3, i32 1>10235  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)10236  ret void10237}10238 10239define void @s_shuffle_v4i16_v3i16__5_5_4_1() {10240; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_4_1:10241; GFX900:       ; %bb.0:10242; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10243; GFX900-NEXT:    ;;#ASMSTART10244; GFX900-NEXT:    ; def s[4:5]10245; GFX900-NEXT:    ;;#ASMEND10246; GFX900-NEXT:    ;;#ASMSTART10247; GFX900-NEXT:    ; def s[6:7]10248; GFX900-NEXT:    ;;#ASMEND10249; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s6, s410250; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s710251; GFX900-NEXT:    ;;#ASMSTART10252; GFX900-NEXT:    ; use s[8:9]10253; GFX900-NEXT:    ;;#ASMEND10254; GFX900-NEXT:    s_setpc_b64 s[30:31]10255;10256; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_4_1:10257; GFX90A:       ; %bb.0:10258; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10259; GFX90A-NEXT:    ;;#ASMSTART10260; GFX90A-NEXT:    ; def s[4:5]10261; GFX90A-NEXT:    ;;#ASMEND10262; GFX90A-NEXT:    ;;#ASMSTART10263; GFX90A-NEXT:    ; def s[6:7]10264; GFX90A-NEXT:    ;;#ASMEND10265; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s6, s410266; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s710267; GFX90A-NEXT:    ;;#ASMSTART10268; GFX90A-NEXT:    ; use s[8:9]10269; GFX90A-NEXT:    ;;#ASMEND10270; GFX90A-NEXT:    s_setpc_b64 s[30:31]10271;10272; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_4_1:10273; GFX942:       ; %bb.0:10274; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10275; GFX942-NEXT:    ;;#ASMSTART10276; GFX942-NEXT:    ; def s[0:1]10277; GFX942-NEXT:    ;;#ASMEND10278; GFX942-NEXT:    ;;#ASMSTART10279; GFX942-NEXT:    ; def s[2:3]10280; GFX942-NEXT:    ;;#ASMEND10281; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s2, s010282; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s310283; GFX942-NEXT:    ;;#ASMSTART10284; GFX942-NEXT:    ; use s[8:9]10285; GFX942-NEXT:    ;;#ASMEND10286; GFX942-NEXT:    s_setpc_b64 s[30:31]10287  %vec0 = call <4 x i16> asm "; def $0", "=s"()10288  %vec1 = call <4 x i16> asm "; def $0", "=s"()10289  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10290  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10291  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 4, i32 1>10292  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)10293  ret void10294}10295 10296define void @s_shuffle_v4i16_v3i16__u_2_2_2() {10297; GFX900-LABEL: s_shuffle_v4i16_v3i16__u_2_2_2:10298; GFX900:       ; %bb.0:10299; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10300; GFX900-NEXT:    ;;#ASMSTART10301; GFX900-NEXT:    ; def s[4:5]10302; GFX900-NEXT:    ;;#ASMEND10303; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s5, s510304; GFX900-NEXT:    s_lshl_b32 s8, s5, 1610305; GFX900-NEXT:    ;;#ASMSTART10306; GFX900-NEXT:    ; use s[8:9]10307; GFX900-NEXT:    ;;#ASMEND10308; GFX900-NEXT:    s_setpc_b64 s[30:31]10309;10310; GFX90A-LABEL: s_shuffle_v4i16_v3i16__u_2_2_2:10311; GFX90A:       ; %bb.0:10312; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10313; GFX90A-NEXT:    ;;#ASMSTART10314; GFX90A-NEXT:    ; def s[4:5]10315; GFX90A-NEXT:    ;;#ASMEND10316; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s5, s510317; GFX90A-NEXT:    s_lshl_b32 s8, s5, 1610318; GFX90A-NEXT:    ;;#ASMSTART10319; GFX90A-NEXT:    ; use s[8:9]10320; GFX90A-NEXT:    ;;#ASMEND10321; GFX90A-NEXT:    s_setpc_b64 s[30:31]10322;10323; GFX942-LABEL: s_shuffle_v4i16_v3i16__u_2_2_2:10324; GFX942:       ; %bb.0:10325; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10326; GFX942-NEXT:    ;;#ASMSTART10327; GFX942-NEXT:    ; def s[0:1]10328; GFX942-NEXT:    ;;#ASMEND10329; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s1, s110330; GFX942-NEXT:    s_lshl_b32 s8, s1, 1610331; GFX942-NEXT:    ;;#ASMSTART10332; GFX942-NEXT:    ; use s[8:9]10333; GFX942-NEXT:    ;;#ASMEND10334; GFX942-NEXT:    s_setpc_b64 s[30:31]10335  %vec0 = call <4 x i16> asm "; def $0", "=s"()10336  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10337  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2>10338  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)10339  ret void10340}10341 10342define void @s_shuffle_v4i16_v3i16__0_2_2_2() {10343; GFX900-LABEL: s_shuffle_v4i16_v3i16__0_2_2_2:10344; GFX900:       ; %bb.0:10345; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10346; GFX900-NEXT:    ;;#ASMSTART10347; GFX900-NEXT:    ; def s[4:5]10348; GFX900-NEXT:    ;;#ASMEND10349; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s510350; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s5, s510351; GFX900-NEXT:    ;;#ASMSTART10352; GFX900-NEXT:    ; use s[8:9]10353; GFX900-NEXT:    ;;#ASMEND10354; GFX900-NEXT:    s_setpc_b64 s[30:31]10355;10356; GFX90A-LABEL: s_shuffle_v4i16_v3i16__0_2_2_2:10357; GFX90A:       ; %bb.0:10358; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10359; GFX90A-NEXT:    ;;#ASMSTART10360; GFX90A-NEXT:    ; def s[4:5]10361; GFX90A-NEXT:    ;;#ASMEND10362; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s510363; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s5, s510364; GFX90A-NEXT:    ;;#ASMSTART10365; GFX90A-NEXT:    ; use s[8:9]10366; GFX90A-NEXT:    ;;#ASMEND10367; GFX90A-NEXT:    s_setpc_b64 s[30:31]10368;10369; GFX942-LABEL: s_shuffle_v4i16_v3i16__0_2_2_2:10370; GFX942:       ; %bb.0:10371; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10372; GFX942-NEXT:    ;;#ASMSTART10373; GFX942-NEXT:    ; def s[0:1]10374; GFX942-NEXT:    ;;#ASMEND10375; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s110376; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s1, s110377; GFX942-NEXT:    ;;#ASMSTART10378; GFX942-NEXT:    ; use s[8:9]10379; GFX942-NEXT:    ;;#ASMEND10380; GFX942-NEXT:    s_setpc_b64 s[30:31]10381  %vec0 = call <4 x i16> asm "; def $0", "=s"()10382  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10383  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2>10384  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)10385  ret void10386}10387 10388define void @s_shuffle_v4i16_v3i16__1_2_2_2() {10389; GFX900-LABEL: s_shuffle_v4i16_v3i16__1_2_2_2:10390; GFX900:       ; %bb.0:10391; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10392; GFX900-NEXT:    ;;#ASMSTART10393; GFX900-NEXT:    ; def s[4:5]10394; GFX900-NEXT:    ;;#ASMEND10395; GFX900-NEXT:    s_lshr_b32 s4, s4, 1610396; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s510397; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s5, s510398; GFX900-NEXT:    ;;#ASMSTART10399; GFX900-NEXT:    ; use s[8:9]10400; GFX900-NEXT:    ;;#ASMEND10401; GFX900-NEXT:    s_setpc_b64 s[30:31]10402;10403; GFX90A-LABEL: s_shuffle_v4i16_v3i16__1_2_2_2:10404; GFX90A:       ; %bb.0:10405; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10406; GFX90A-NEXT:    ;;#ASMSTART10407; GFX90A-NEXT:    ; def s[4:5]10408; GFX90A-NEXT:    ;;#ASMEND10409; GFX90A-NEXT:    s_lshr_b32 s4, s4, 1610410; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s510411; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s5, s510412; GFX90A-NEXT:    ;;#ASMSTART10413; GFX90A-NEXT:    ; use s[8:9]10414; GFX90A-NEXT:    ;;#ASMEND10415; GFX90A-NEXT:    s_setpc_b64 s[30:31]10416;10417; GFX942-LABEL: s_shuffle_v4i16_v3i16__1_2_2_2:10418; GFX942:       ; %bb.0:10419; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10420; GFX942-NEXT:    ;;#ASMSTART10421; GFX942-NEXT:    ; def s[0:1]10422; GFX942-NEXT:    ;;#ASMEND10423; GFX942-NEXT:    s_lshr_b32 s0, s0, 1610424; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s110425; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s1, s110426; GFX942-NEXT:    ;;#ASMSTART10427; GFX942-NEXT:    ; use s[8:9]10428; GFX942-NEXT:    ;;#ASMEND10429; GFX942-NEXT:    s_setpc_b64 s[30:31]10430  %vec0 = call <4 x i16> asm "; def $0", "=s"()10431  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10432  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2>10433  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)10434  ret void10435}10436 10437define void @s_shuffle_v4i16_v3i16__2_2_2_2() {10438; GFX900-LABEL: s_shuffle_v4i16_v3i16__2_2_2_2:10439; GFX900:       ; %bb.0:10440; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10441; GFX900-NEXT:    ;;#ASMSTART10442; GFX900-NEXT:    ; def s[4:5]10443; GFX900-NEXT:    ;;#ASMEND10444; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s510445; GFX900-NEXT:    s_mov_b32 s9, s810446; GFX900-NEXT:    ;;#ASMSTART10447; GFX900-NEXT:    ; use s[8:9]10448; GFX900-NEXT:    ;;#ASMEND10449; GFX900-NEXT:    s_setpc_b64 s[30:31]10450;10451; GFX90A-LABEL: s_shuffle_v4i16_v3i16__2_2_2_2:10452; GFX90A:       ; %bb.0:10453; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10454; GFX90A-NEXT:    ;;#ASMSTART10455; GFX90A-NEXT:    ; def s[4:5]10456; GFX90A-NEXT:    ;;#ASMEND10457; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s510458; GFX90A-NEXT:    s_mov_b32 s9, s810459; GFX90A-NEXT:    ;;#ASMSTART10460; GFX90A-NEXT:    ; use s[8:9]10461; GFX90A-NEXT:    ;;#ASMEND10462; GFX90A-NEXT:    s_setpc_b64 s[30:31]10463;10464; GFX942-LABEL: s_shuffle_v4i16_v3i16__2_2_2_2:10465; GFX942:       ; %bb.0:10466; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10467; GFX942-NEXT:    ;;#ASMSTART10468; GFX942-NEXT:    ; def s[0:1]10469; GFX942-NEXT:    ;;#ASMEND10470; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s110471; GFX942-NEXT:    s_mov_b32 s9, s810472; GFX942-NEXT:    ;;#ASMSTART10473; GFX942-NEXT:    ; use s[8:9]10474; GFX942-NEXT:    ;;#ASMEND10475; GFX942-NEXT:    s_setpc_b64 s[30:31]10476  %vec0 = call <4 x i16> asm "; def $0", "=s"()10477  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10478  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2>10479  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)10480  ret void10481}10482 10483define void @s_shuffle_v4i16_v3i16__3_2_2_2() {10484; GFX900-LABEL: s_shuffle_v4i16_v3i16__3_2_2_2:10485; GFX900:       ; %bb.0:10486; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10487; GFX900-NEXT:    ;;#ASMSTART10488; GFX900-NEXT:    ; def s[4:5]10489; GFX900-NEXT:    ;;#ASMEND10490; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s5, s510491; GFX900-NEXT:    s_lshl_b32 s8, s5, 1610492; GFX900-NEXT:    ;;#ASMSTART10493; GFX900-NEXT:    ; use s[8:9]10494; GFX900-NEXT:    ;;#ASMEND10495; GFX900-NEXT:    s_setpc_b64 s[30:31]10496;10497; GFX90A-LABEL: s_shuffle_v4i16_v3i16__3_2_2_2:10498; GFX90A:       ; %bb.0:10499; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10500; GFX90A-NEXT:    ;;#ASMSTART10501; GFX90A-NEXT:    ; def s[4:5]10502; GFX90A-NEXT:    ;;#ASMEND10503; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s5, s510504; GFX90A-NEXT:    s_lshl_b32 s8, s5, 1610505; GFX90A-NEXT:    ;;#ASMSTART10506; GFX90A-NEXT:    ; use s[8:9]10507; GFX90A-NEXT:    ;;#ASMEND10508; GFX90A-NEXT:    s_setpc_b64 s[30:31]10509;10510; GFX942-LABEL: s_shuffle_v4i16_v3i16__3_2_2_2:10511; GFX942:       ; %bb.0:10512; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10513; GFX942-NEXT:    ;;#ASMSTART10514; GFX942-NEXT:    ; def s[0:1]10515; GFX942-NEXT:    ;;#ASMEND10516; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s1, s110517; GFX942-NEXT:    s_lshl_b32 s8, s1, 1610518; GFX942-NEXT:    ;;#ASMSTART10519; GFX942-NEXT:    ; use s[8:9]10520; GFX942-NEXT:    ;;#ASMEND10521; GFX942-NEXT:    s_setpc_b64 s[30:31]10522  %vec0 = call <4 x i16> asm "; def $0", "=s"()10523  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10524  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 3, i32 2, i32 2, i32 2>10525  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)10526  ret void10527}10528 10529define void @s_shuffle_v4i16_v3i16__4_2_2_2() {10530; GFX900-LABEL: s_shuffle_v4i16_v3i16__4_2_2_2:10531; GFX900:       ; %bb.0:10532; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10533; GFX900-NEXT:    ;;#ASMSTART10534; GFX900-NEXT:    ; def s[4:5]10535; GFX900-NEXT:    ;;#ASMEND10536; GFX900-NEXT:    ;;#ASMSTART10537; GFX900-NEXT:    ; def s[6:7]10538; GFX900-NEXT:    ;;#ASMEND10539; GFX900-NEXT:    s_lshr_b32 s4, s6, 1610540; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s510541; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s5, s510542; GFX900-NEXT:    ;;#ASMSTART10543; GFX900-NEXT:    ; use s[8:9]10544; GFX900-NEXT:    ;;#ASMEND10545; GFX900-NEXT:    s_setpc_b64 s[30:31]10546;10547; GFX90A-LABEL: s_shuffle_v4i16_v3i16__4_2_2_2:10548; GFX90A:       ; %bb.0:10549; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10550; GFX90A-NEXT:    ;;#ASMSTART10551; GFX90A-NEXT:    ; def s[4:5]10552; GFX90A-NEXT:    ;;#ASMEND10553; GFX90A-NEXT:    ;;#ASMSTART10554; GFX90A-NEXT:    ; def s[6:7]10555; GFX90A-NEXT:    ;;#ASMEND10556; GFX90A-NEXT:    s_lshr_b32 s4, s6, 1610557; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s510558; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s5, s510559; GFX90A-NEXT:    ;;#ASMSTART10560; GFX90A-NEXT:    ; use s[8:9]10561; GFX90A-NEXT:    ;;#ASMEND10562; GFX90A-NEXT:    s_setpc_b64 s[30:31]10563;10564; GFX942-LABEL: s_shuffle_v4i16_v3i16__4_2_2_2:10565; GFX942:       ; %bb.0:10566; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10567; GFX942-NEXT:    ;;#ASMSTART10568; GFX942-NEXT:    ; def s[0:1]10569; GFX942-NEXT:    ;;#ASMEND10570; GFX942-NEXT:    ;;#ASMSTART10571; GFX942-NEXT:    ; def s[2:3]10572; GFX942-NEXT:    ;;#ASMEND10573; GFX942-NEXT:    s_lshr_b32 s0, s2, 1610574; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s110575; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s1, s110576; GFX942-NEXT:    ;;#ASMSTART10577; GFX942-NEXT:    ; use s[8:9]10578; GFX942-NEXT:    ;;#ASMEND10579; GFX942-NEXT:    s_setpc_b64 s[30:31]10580  %vec0 = call <4 x i16> asm "; def $0", "=s"()10581  %vec1 = call <4 x i16> asm "; def $0", "=s"()10582  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10583  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10584  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 4, i32 2, i32 2, i32 2>10585  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)10586  ret void10587}10588 10589define void @s_shuffle_v4i16_v3i16__5_2_2_2() {10590; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_2_2_2:10591; GFX900:       ; %bb.0:10592; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10593; GFX900-NEXT:    ;;#ASMSTART10594; GFX900-NEXT:    ; def s[4:5]10595; GFX900-NEXT:    ;;#ASMEND10596; GFX900-NEXT:    ;;#ASMSTART10597; GFX900-NEXT:    ; def s[6:7]10598; GFX900-NEXT:    ;;#ASMEND10599; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s510600; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s5, s510601; GFX900-NEXT:    ;;#ASMSTART10602; GFX900-NEXT:    ; use s[8:9]10603; GFX900-NEXT:    ;;#ASMEND10604; GFX900-NEXT:    s_setpc_b64 s[30:31]10605;10606; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_2_2_2:10607; GFX90A:       ; %bb.0:10608; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10609; GFX90A-NEXT:    ;;#ASMSTART10610; GFX90A-NEXT:    ; def s[4:5]10611; GFX90A-NEXT:    ;;#ASMEND10612; GFX90A-NEXT:    ;;#ASMSTART10613; GFX90A-NEXT:    ; def s[6:7]10614; GFX90A-NEXT:    ;;#ASMEND10615; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s510616; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s5, s510617; GFX90A-NEXT:    ;;#ASMSTART10618; GFX90A-NEXT:    ; use s[8:9]10619; GFX90A-NEXT:    ;;#ASMEND10620; GFX90A-NEXT:    s_setpc_b64 s[30:31]10621;10622; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_2_2_2:10623; GFX942:       ; %bb.0:10624; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10625; GFX942-NEXT:    ;;#ASMSTART10626; GFX942-NEXT:    ; def s[0:1]10627; GFX942-NEXT:    ;;#ASMEND10628; GFX942-NEXT:    ;;#ASMSTART10629; GFX942-NEXT:    ; def s[2:3]10630; GFX942-NEXT:    ;;#ASMEND10631; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s110632; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s1, s110633; GFX942-NEXT:    ;;#ASMSTART10634; GFX942-NEXT:    ; use s[8:9]10635; GFX942-NEXT:    ;;#ASMEND10636; GFX942-NEXT:    s_setpc_b64 s[30:31]10637  %vec0 = call <4 x i16> asm "; def $0", "=s"()10638  %vec1 = call <4 x i16> asm "; def $0", "=s"()10639  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10640  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10641  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 2, i32 2, i32 2>10642  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)10643  ret void10644}10645 10646define void @s_shuffle_v4i16_v3i16__5_u_2_2() {10647; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_u_2_2:10648; GFX900:       ; %bb.0:10649; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10650; GFX900-NEXT:    ;;#ASMSTART10651; GFX900-NEXT:    ; def s[4:5]10652; GFX900-NEXT:    ;;#ASMEND10653; GFX900-NEXT:    ;;#ASMSTART10654; GFX900-NEXT:    ; def s[6:7]10655; GFX900-NEXT:    ;;#ASMEND10656; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s5, s510657; GFX900-NEXT:    s_mov_b32 s8, s710658; GFX900-NEXT:    ;;#ASMSTART10659; GFX900-NEXT:    ; use s[8:9]10660; GFX900-NEXT:    ;;#ASMEND10661; GFX900-NEXT:    s_setpc_b64 s[30:31]10662;10663; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_u_2_2:10664; GFX90A:       ; %bb.0:10665; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10666; GFX90A-NEXT:    ;;#ASMSTART10667; GFX90A-NEXT:    ; def s[4:5]10668; GFX90A-NEXT:    ;;#ASMEND10669; GFX90A-NEXT:    ;;#ASMSTART10670; GFX90A-NEXT:    ; def s[6:7]10671; GFX90A-NEXT:    ;;#ASMEND10672; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s5, s510673; GFX90A-NEXT:    s_mov_b32 s8, s710674; GFX90A-NEXT:    ;;#ASMSTART10675; GFX90A-NEXT:    ; use s[8:9]10676; GFX90A-NEXT:    ;;#ASMEND10677; GFX90A-NEXT:    s_setpc_b64 s[30:31]10678;10679; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_u_2_2:10680; GFX942:       ; %bb.0:10681; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10682; GFX942-NEXT:    ;;#ASMSTART10683; GFX942-NEXT:    ; def s[0:1]10684; GFX942-NEXT:    ;;#ASMEND10685; GFX942-NEXT:    ;;#ASMSTART10686; GFX942-NEXT:    ; def s[2:3]10687; GFX942-NEXT:    ;;#ASMEND10688; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s1, s110689; GFX942-NEXT:    s_mov_b32 s8, s310690; GFX942-NEXT:    ;;#ASMSTART10691; GFX942-NEXT:    ; use s[8:9]10692; GFX942-NEXT:    ;;#ASMEND10693; GFX942-NEXT:    s_setpc_b64 s[30:31]10694  %vec0 = call <4 x i16> asm "; def $0", "=s"()10695  %vec1 = call <4 x i16> asm "; def $0", "=s"()10696  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10697  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10698  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 poison, i32 2, i32 2>10699  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)10700  ret void10701}10702 10703define void @s_shuffle_v4i16_v3i16__5_0_2_2() {10704; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_0_2_2:10705; GFX900:       ; %bb.0:10706; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10707; GFX900-NEXT:    ;;#ASMSTART10708; GFX900-NEXT:    ; def s[4:5]10709; GFX900-NEXT:    ;;#ASMEND10710; GFX900-NEXT:    ;;#ASMSTART10711; GFX900-NEXT:    ; def s[6:7]10712; GFX900-NEXT:    ;;#ASMEND10713; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s410714; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s5, s510715; GFX900-NEXT:    ;;#ASMSTART10716; GFX900-NEXT:    ; use s[8:9]10717; GFX900-NEXT:    ;;#ASMEND10718; GFX900-NEXT:    s_setpc_b64 s[30:31]10719;10720; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_0_2_2:10721; GFX90A:       ; %bb.0:10722; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10723; GFX90A-NEXT:    ;;#ASMSTART10724; GFX90A-NEXT:    ; def s[4:5]10725; GFX90A-NEXT:    ;;#ASMEND10726; GFX90A-NEXT:    ;;#ASMSTART10727; GFX90A-NEXT:    ; def s[6:7]10728; GFX90A-NEXT:    ;;#ASMEND10729; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s410730; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s5, s510731; GFX90A-NEXT:    ;;#ASMSTART10732; GFX90A-NEXT:    ; use s[8:9]10733; GFX90A-NEXT:    ;;#ASMEND10734; GFX90A-NEXT:    s_setpc_b64 s[30:31]10735;10736; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_0_2_2:10737; GFX942:       ; %bb.0:10738; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10739; GFX942-NEXT:    ;;#ASMSTART10740; GFX942-NEXT:    ; def s[0:1]10741; GFX942-NEXT:    ;;#ASMEND10742; GFX942-NEXT:    ;;#ASMSTART10743; GFX942-NEXT:    ; def s[2:3]10744; GFX942-NEXT:    ;;#ASMEND10745; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s010746; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s1, s110747; GFX942-NEXT:    ;;#ASMSTART10748; GFX942-NEXT:    ; use s[8:9]10749; GFX942-NEXT:    ;;#ASMEND10750; GFX942-NEXT:    s_setpc_b64 s[30:31]10751  %vec0 = call <4 x i16> asm "; def $0", "=s"()10752  %vec1 = call <4 x i16> asm "; def $0", "=s"()10753  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10754  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10755  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 0, i32 2, i32 2>10756  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)10757  ret void10758}10759 10760define void @s_shuffle_v4i16_v3i16__5_1_2_2() {10761; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_1_2_2:10762; GFX900:       ; %bb.0:10763; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10764; GFX900-NEXT:    ;;#ASMSTART10765; GFX900-NEXT:    ; def s[4:5]10766; GFX900-NEXT:    ;;#ASMEND10767; GFX900-NEXT:    ;;#ASMSTART10768; GFX900-NEXT:    ; def s[6:7]10769; GFX900-NEXT:    ;;#ASMEND10770; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s7, s410771; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s5, s510772; GFX900-NEXT:    ;;#ASMSTART10773; GFX900-NEXT:    ; use s[8:9]10774; GFX900-NEXT:    ;;#ASMEND10775; GFX900-NEXT:    s_setpc_b64 s[30:31]10776;10777; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_1_2_2:10778; GFX90A:       ; %bb.0:10779; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10780; GFX90A-NEXT:    ;;#ASMSTART10781; GFX90A-NEXT:    ; def s[4:5]10782; GFX90A-NEXT:    ;;#ASMEND10783; GFX90A-NEXT:    ;;#ASMSTART10784; GFX90A-NEXT:    ; def s[6:7]10785; GFX90A-NEXT:    ;;#ASMEND10786; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s7, s410787; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s5, s510788; GFX90A-NEXT:    ;;#ASMSTART10789; GFX90A-NEXT:    ; use s[8:9]10790; GFX90A-NEXT:    ;;#ASMEND10791; GFX90A-NEXT:    s_setpc_b64 s[30:31]10792;10793; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_1_2_2:10794; GFX942:       ; %bb.0:10795; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10796; GFX942-NEXT:    ;;#ASMSTART10797; GFX942-NEXT:    ; def s[0:1]10798; GFX942-NEXT:    ;;#ASMEND10799; GFX942-NEXT:    ;;#ASMSTART10800; GFX942-NEXT:    ; def s[2:3]10801; GFX942-NEXT:    ;;#ASMEND10802; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s3, s010803; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s1, s110804; GFX942-NEXT:    ;;#ASMSTART10805; GFX942-NEXT:    ; use s[8:9]10806; GFX942-NEXT:    ;;#ASMEND10807; GFX942-NEXT:    s_setpc_b64 s[30:31]10808  %vec0 = call <4 x i16> asm "; def $0", "=s"()10809  %vec1 = call <4 x i16> asm "; def $0", "=s"()10810  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10811  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10812  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 1, i32 2, i32 2>10813  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)10814  ret void10815}10816 10817define void @s_shuffle_v4i16_v3i16__5_3_2_2() {10818; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_3_2_2:10819; GFX900:       ; %bb.0:10820; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10821; GFX900-NEXT:    ;;#ASMSTART10822; GFX900-NEXT:    ; def s[4:5]10823; GFX900-NEXT:    ;;#ASMEND10824; GFX900-NEXT:    ;;#ASMSTART10825; GFX900-NEXT:    ; def s[6:7]10826; GFX900-NEXT:    ;;#ASMEND10827; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s610828; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s5, s510829; GFX900-NEXT:    ;;#ASMSTART10830; GFX900-NEXT:    ; use s[8:9]10831; GFX900-NEXT:    ;;#ASMEND10832; GFX900-NEXT:    s_setpc_b64 s[30:31]10833;10834; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_3_2_2:10835; GFX90A:       ; %bb.0:10836; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10837; GFX90A-NEXT:    ;;#ASMSTART10838; GFX90A-NEXT:    ; def s[4:5]10839; GFX90A-NEXT:    ;;#ASMEND10840; GFX90A-NEXT:    ;;#ASMSTART10841; GFX90A-NEXT:    ; def s[6:7]10842; GFX90A-NEXT:    ;;#ASMEND10843; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s610844; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s5, s510845; GFX90A-NEXT:    ;;#ASMSTART10846; GFX90A-NEXT:    ; use s[8:9]10847; GFX90A-NEXT:    ;;#ASMEND10848; GFX90A-NEXT:    s_setpc_b64 s[30:31]10849;10850; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_3_2_2:10851; GFX942:       ; %bb.0:10852; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10853; GFX942-NEXT:    ;;#ASMSTART10854; GFX942-NEXT:    ; def s[0:1]10855; GFX942-NEXT:    ;;#ASMEND10856; GFX942-NEXT:    ;;#ASMSTART10857; GFX942-NEXT:    ; def s[2:3]10858; GFX942-NEXT:    ;;#ASMEND10859; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s210860; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s1, s110861; GFX942-NEXT:    ;;#ASMSTART10862; GFX942-NEXT:    ; use s[8:9]10863; GFX942-NEXT:    ;;#ASMEND10864; GFX942-NEXT:    s_setpc_b64 s[30:31]10865  %vec0 = call <4 x i16> asm "; def $0", "=s"()10866  %vec1 = call <4 x i16> asm "; def $0", "=s"()10867  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10868  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10869  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 3, i32 2, i32 2>10870  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)10871  ret void10872}10873 10874define void @s_shuffle_v4i16_v3i16__5_4_2_2() {10875; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_4_2_2:10876; GFX900:       ; %bb.0:10877; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10878; GFX900-NEXT:    ;;#ASMSTART10879; GFX900-NEXT:    ; def s[4:5]10880; GFX900-NEXT:    ;;#ASMEND10881; GFX900-NEXT:    ;;#ASMSTART10882; GFX900-NEXT:    ; def s[6:7]10883; GFX900-NEXT:    ;;#ASMEND10884; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s7, s610885; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s5, s510886; GFX900-NEXT:    ;;#ASMSTART10887; GFX900-NEXT:    ; use s[8:9]10888; GFX900-NEXT:    ;;#ASMEND10889; GFX900-NEXT:    s_setpc_b64 s[30:31]10890;10891; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_4_2_2:10892; GFX90A:       ; %bb.0:10893; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10894; GFX90A-NEXT:    ;;#ASMSTART10895; GFX90A-NEXT:    ; def s[4:5]10896; GFX90A-NEXT:    ;;#ASMEND10897; GFX90A-NEXT:    ;;#ASMSTART10898; GFX90A-NEXT:    ; def s[6:7]10899; GFX90A-NEXT:    ;;#ASMEND10900; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s7, s610901; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s5, s510902; GFX90A-NEXT:    ;;#ASMSTART10903; GFX90A-NEXT:    ; use s[8:9]10904; GFX90A-NEXT:    ;;#ASMEND10905; GFX90A-NEXT:    s_setpc_b64 s[30:31]10906;10907; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_4_2_2:10908; GFX942:       ; %bb.0:10909; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10910; GFX942-NEXT:    ;;#ASMSTART10911; GFX942-NEXT:    ; def s[0:1]10912; GFX942-NEXT:    ;;#ASMEND10913; GFX942-NEXT:    ;;#ASMSTART10914; GFX942-NEXT:    ; def s[2:3]10915; GFX942-NEXT:    ;;#ASMEND10916; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s3, s210917; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s1, s110918; GFX942-NEXT:    ;;#ASMSTART10919; GFX942-NEXT:    ; use s[8:9]10920; GFX942-NEXT:    ;;#ASMEND10921; GFX942-NEXT:    s_setpc_b64 s[30:31]10922  %vec0 = call <4 x i16> asm "; def $0", "=s"()10923  %vec1 = call <4 x i16> asm "; def $0", "=s"()10924  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10925  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10926  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 4, i32 2, i32 2>10927  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)10928  ret void10929}10930 10931define void @s_shuffle_v4i16_v3i16__5_5_2_2() {10932; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_2_2:10933; GFX900:       ; %bb.0:10934; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10935; GFX900-NEXT:    ;;#ASMSTART10936; GFX900-NEXT:    ; def s[4:5]10937; GFX900-NEXT:    ;;#ASMEND10938; GFX900-NEXT:    ;;#ASMSTART10939; GFX900-NEXT:    ; def s[6:7]10940; GFX900-NEXT:    ;;#ASMEND10941; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s5, s510942; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s710943; GFX900-NEXT:    ;;#ASMSTART10944; GFX900-NEXT:    ; use s[8:9]10945; GFX900-NEXT:    ;;#ASMEND10946; GFX900-NEXT:    s_setpc_b64 s[30:31]10947;10948; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_2_2:10949; GFX90A:       ; %bb.0:10950; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10951; GFX90A-NEXT:    ;;#ASMSTART10952; GFX90A-NEXT:    ; def s[4:5]10953; GFX90A-NEXT:    ;;#ASMEND10954; GFX90A-NEXT:    ;;#ASMSTART10955; GFX90A-NEXT:    ; def s[6:7]10956; GFX90A-NEXT:    ;;#ASMEND10957; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s5, s510958; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s710959; GFX90A-NEXT:    ;;#ASMSTART10960; GFX90A-NEXT:    ; use s[8:9]10961; GFX90A-NEXT:    ;;#ASMEND10962; GFX90A-NEXT:    s_setpc_b64 s[30:31]10963;10964; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_2_2:10965; GFX942:       ; %bb.0:10966; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10967; GFX942-NEXT:    ;;#ASMSTART10968; GFX942-NEXT:    ; def s[0:1]10969; GFX942-NEXT:    ;;#ASMEND10970; GFX942-NEXT:    ;;#ASMSTART10971; GFX942-NEXT:    ; def s[2:3]10972; GFX942-NEXT:    ;;#ASMEND10973; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s1, s110974; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s310975; GFX942-NEXT:    ;;#ASMSTART10976; GFX942-NEXT:    ; use s[8:9]10977; GFX942-NEXT:    ;;#ASMEND10978; GFX942-NEXT:    s_setpc_b64 s[30:31]10979  %vec0 = call <4 x i16> asm "; def $0", "=s"()10980  %vec1 = call <4 x i16> asm "; def $0", "=s"()10981  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10982  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>10983  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 2, i32 2>10984  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)10985  ret void10986}10987 10988define void @s_shuffle_v4i16_v3i16__5_5_u_2() {10989; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_u_2:10990; GFX900:       ; %bb.0:10991; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10992; GFX900-NEXT:    ;;#ASMSTART10993; GFX900-NEXT:    ; def s[4:5]10994; GFX900-NEXT:    ;;#ASMEND10995; GFX900-NEXT:    ;;#ASMSTART10996; GFX900-NEXT:    ; def s[6:7]10997; GFX900-NEXT:    ;;#ASMEND10998; GFX900-NEXT:    s_lshl_b32 s9, s5, 1610999; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s711000; GFX900-NEXT:    ;;#ASMSTART11001; GFX900-NEXT:    ; use s[8:9]11002; GFX900-NEXT:    ;;#ASMEND11003; GFX900-NEXT:    s_setpc_b64 s[30:31]11004;11005; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_u_2:11006; GFX90A:       ; %bb.0:11007; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11008; GFX90A-NEXT:    ;;#ASMSTART11009; GFX90A-NEXT:    ; def s[4:5]11010; GFX90A-NEXT:    ;;#ASMEND11011; GFX90A-NEXT:    ;;#ASMSTART11012; GFX90A-NEXT:    ; def s[6:7]11013; GFX90A-NEXT:    ;;#ASMEND11014; GFX90A-NEXT:    s_lshl_b32 s9, s5, 1611015; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s711016; GFX90A-NEXT:    ;;#ASMSTART11017; GFX90A-NEXT:    ; use s[8:9]11018; GFX90A-NEXT:    ;;#ASMEND11019; GFX90A-NEXT:    s_setpc_b64 s[30:31]11020;11021; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_u_2:11022; GFX942:       ; %bb.0:11023; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11024; GFX942-NEXT:    ;;#ASMSTART11025; GFX942-NEXT:    ; def s[0:1]11026; GFX942-NEXT:    ;;#ASMEND11027; GFX942-NEXT:    ;;#ASMSTART11028; GFX942-NEXT:    ; def s[2:3]11029; GFX942-NEXT:    ;;#ASMEND11030; GFX942-NEXT:    s_lshl_b32 s9, s1, 1611031; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s311032; GFX942-NEXT:    ;;#ASMSTART11033; GFX942-NEXT:    ; use s[8:9]11034; GFX942-NEXT:    ;;#ASMEND11035; GFX942-NEXT:    s_setpc_b64 s[30:31]11036  %vec0 = call <4 x i16> asm "; def $0", "=s"()11037  %vec1 = call <4 x i16> asm "; def $0", "=s"()11038  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11039  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11040  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 poison, i32 2>11041  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)11042  ret void11043}11044 11045define void @s_shuffle_v4i16_v3i16__5_5_0_2() {11046; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_0_2:11047; GFX900:       ; %bb.0:11048; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11049; GFX900-NEXT:    ;;#ASMSTART11050; GFX900-NEXT:    ; def s[4:5]11051; GFX900-NEXT:    ;;#ASMEND11052; GFX900-NEXT:    ;;#ASMSTART11053; GFX900-NEXT:    ; def s[6:7]11054; GFX900-NEXT:    ;;#ASMEND11055; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s511056; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s711057; GFX900-NEXT:    ;;#ASMSTART11058; GFX900-NEXT:    ; use s[8:9]11059; GFX900-NEXT:    ;;#ASMEND11060; GFX900-NEXT:    s_setpc_b64 s[30:31]11061;11062; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_0_2:11063; GFX90A:       ; %bb.0:11064; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11065; GFX90A-NEXT:    ;;#ASMSTART11066; GFX90A-NEXT:    ; def s[4:5]11067; GFX90A-NEXT:    ;;#ASMEND11068; GFX90A-NEXT:    ;;#ASMSTART11069; GFX90A-NEXT:    ; def s[6:7]11070; GFX90A-NEXT:    ;;#ASMEND11071; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s511072; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s711073; GFX90A-NEXT:    ;;#ASMSTART11074; GFX90A-NEXT:    ; use s[8:9]11075; GFX90A-NEXT:    ;;#ASMEND11076; GFX90A-NEXT:    s_setpc_b64 s[30:31]11077;11078; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_0_2:11079; GFX942:       ; %bb.0:11080; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11081; GFX942-NEXT:    ;;#ASMSTART11082; GFX942-NEXT:    ; def s[0:1]11083; GFX942-NEXT:    ;;#ASMEND11084; GFX942-NEXT:    ;;#ASMSTART11085; GFX942-NEXT:    ; def s[2:3]11086; GFX942-NEXT:    ;;#ASMEND11087; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s111088; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s311089; GFX942-NEXT:    ;;#ASMSTART11090; GFX942-NEXT:    ; use s[8:9]11091; GFX942-NEXT:    ;;#ASMEND11092; GFX942-NEXT:    s_setpc_b64 s[30:31]11093  %vec0 = call <4 x i16> asm "; def $0", "=s"()11094  %vec1 = call <4 x i16> asm "; def $0", "=s"()11095  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11096  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11097  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 0, i32 2>11098  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)11099  ret void11100}11101 11102define void @s_shuffle_v4i16_v3i16__5_5_1_2() {11103; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_1_2:11104; GFX900:       ; %bb.0:11105; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11106; GFX900-NEXT:    ;;#ASMSTART11107; GFX900-NEXT:    ; def s[4:5]11108; GFX900-NEXT:    ;;#ASMEND11109; GFX900-NEXT:    s_lshr_b32 s4, s4, 1611110; GFX900-NEXT:    ;;#ASMSTART11111; GFX900-NEXT:    ; def s[6:7]11112; GFX900-NEXT:    ;;#ASMEND11113; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s511114; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s711115; GFX900-NEXT:    ;;#ASMSTART11116; GFX900-NEXT:    ; use s[8:9]11117; GFX900-NEXT:    ;;#ASMEND11118; GFX900-NEXT:    s_setpc_b64 s[30:31]11119;11120; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_1_2:11121; GFX90A:       ; %bb.0:11122; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11123; GFX90A-NEXT:    ;;#ASMSTART11124; GFX90A-NEXT:    ; def s[4:5]11125; GFX90A-NEXT:    ;;#ASMEND11126; GFX90A-NEXT:    s_lshr_b32 s4, s4, 1611127; GFX90A-NEXT:    ;;#ASMSTART11128; GFX90A-NEXT:    ; def s[6:7]11129; GFX90A-NEXT:    ;;#ASMEND11130; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s511131; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s711132; GFX90A-NEXT:    ;;#ASMSTART11133; GFX90A-NEXT:    ; use s[8:9]11134; GFX90A-NEXT:    ;;#ASMEND11135; GFX90A-NEXT:    s_setpc_b64 s[30:31]11136;11137; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_1_2:11138; GFX942:       ; %bb.0:11139; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11140; GFX942-NEXT:    ;;#ASMSTART11141; GFX942-NEXT:    ; def s[0:1]11142; GFX942-NEXT:    ;;#ASMEND11143; GFX942-NEXT:    s_lshr_b32 s0, s0, 1611144; GFX942-NEXT:    ;;#ASMSTART11145; GFX942-NEXT:    ; def s[2:3]11146; GFX942-NEXT:    ;;#ASMEND11147; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s111148; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s311149; GFX942-NEXT:    ;;#ASMSTART11150; GFX942-NEXT:    ; use s[8:9]11151; GFX942-NEXT:    ;;#ASMEND11152; GFX942-NEXT:    s_setpc_b64 s[30:31]11153  %vec0 = call <4 x i16> asm "; def $0", "=s"()11154  %vec1 = call <4 x i16> asm "; def $0", "=s"()11155  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11156  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11157  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 1, i32 2>11158  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)11159  ret void11160}11161 11162define void @s_shuffle_v4i16_v3i16__5_5_3_2() {11163; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_3_2:11164; GFX900:       ; %bb.0:11165; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11166; GFX900-NEXT:    ;;#ASMSTART11167; GFX900-NEXT:    ; def s[4:5]11168; GFX900-NEXT:    ;;#ASMEND11169; GFX900-NEXT:    ;;#ASMSTART11170; GFX900-NEXT:    ; def s[6:7]11171; GFX900-NEXT:    ;;#ASMEND11172; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s6, s511173; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s711174; GFX900-NEXT:    ;;#ASMSTART11175; GFX900-NEXT:    ; use s[8:9]11176; GFX900-NEXT:    ;;#ASMEND11177; GFX900-NEXT:    s_setpc_b64 s[30:31]11178;11179; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_3_2:11180; GFX90A:       ; %bb.0:11181; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11182; GFX90A-NEXT:    ;;#ASMSTART11183; GFX90A-NEXT:    ; def s[4:5]11184; GFX90A-NEXT:    ;;#ASMEND11185; GFX90A-NEXT:    ;;#ASMSTART11186; GFX90A-NEXT:    ; def s[6:7]11187; GFX90A-NEXT:    ;;#ASMEND11188; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s6, s511189; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s711190; GFX90A-NEXT:    ;;#ASMSTART11191; GFX90A-NEXT:    ; use s[8:9]11192; GFX90A-NEXT:    ;;#ASMEND11193; GFX90A-NEXT:    s_setpc_b64 s[30:31]11194;11195; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_3_2:11196; GFX942:       ; %bb.0:11197; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11198; GFX942-NEXT:    ;;#ASMSTART11199; GFX942-NEXT:    ; def s[0:1]11200; GFX942-NEXT:    ;;#ASMEND11201; GFX942-NEXT:    ;;#ASMSTART11202; GFX942-NEXT:    ; def s[2:3]11203; GFX942-NEXT:    ;;#ASMEND11204; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s2, s111205; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s311206; GFX942-NEXT:    ;;#ASMSTART11207; GFX942-NEXT:    ; use s[8:9]11208; GFX942-NEXT:    ;;#ASMEND11209; GFX942-NEXT:    s_setpc_b64 s[30:31]11210  %vec0 = call <4 x i16> asm "; def $0", "=s"()11211  %vec1 = call <4 x i16> asm "; def $0", "=s"()11212  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11213  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11214  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 3, i32 2>11215  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)11216  ret void11217}11218 11219define void @s_shuffle_v4i16_v3i16__5_5_4_2() {11220; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_4_2:11221; GFX900:       ; %bb.0:11222; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11223; GFX900-NEXT:    ;;#ASMSTART11224; GFX900-NEXT:    ; def s[4:5]11225; GFX900-NEXT:    ;;#ASMEND11226; GFX900-NEXT:    ;;#ASMSTART11227; GFX900-NEXT:    ; def s[6:7]11228; GFX900-NEXT:    ;;#ASMEND11229; GFX900-NEXT:    s_lshr_b32 s4, s6, 1611230; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s511231; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s711232; GFX900-NEXT:    ;;#ASMSTART11233; GFX900-NEXT:    ; use s[8:9]11234; GFX900-NEXT:    ;;#ASMEND11235; GFX900-NEXT:    s_setpc_b64 s[30:31]11236;11237; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_4_2:11238; GFX90A:       ; %bb.0:11239; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11240; GFX90A-NEXT:    ;;#ASMSTART11241; GFX90A-NEXT:    ; def s[4:5]11242; GFX90A-NEXT:    ;;#ASMEND11243; GFX90A-NEXT:    ;;#ASMSTART11244; GFX90A-NEXT:    ; def s[6:7]11245; GFX90A-NEXT:    ;;#ASMEND11246; GFX90A-NEXT:    s_lshr_b32 s4, s6, 1611247; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s511248; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s711249; GFX90A-NEXT:    ;;#ASMSTART11250; GFX90A-NEXT:    ; use s[8:9]11251; GFX90A-NEXT:    ;;#ASMEND11252; GFX90A-NEXT:    s_setpc_b64 s[30:31]11253;11254; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_4_2:11255; GFX942:       ; %bb.0:11256; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11257; GFX942-NEXT:    ;;#ASMSTART11258; GFX942-NEXT:    ; def s[0:1]11259; GFX942-NEXT:    ;;#ASMEND11260; GFX942-NEXT:    ;;#ASMSTART11261; GFX942-NEXT:    ; def s[2:3]11262; GFX942-NEXT:    ;;#ASMEND11263; GFX942-NEXT:    s_lshr_b32 s0, s2, 1611264; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s111265; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s311266; GFX942-NEXT:    ;;#ASMSTART11267; GFX942-NEXT:    ; use s[8:9]11268; GFX942-NEXT:    ;;#ASMEND11269; GFX942-NEXT:    s_setpc_b64 s[30:31]11270  %vec0 = call <4 x i16> asm "; def $0", "=s"()11271  %vec1 = call <4 x i16> asm "; def $0", "=s"()11272  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11273  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11274  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 4, i32 2>11275  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)11276  ret void11277}11278 11279define void @s_shuffle_v4i16_v3i16__u_3_3_3() {11280; GFX9-LABEL: s_shuffle_v4i16_v3i16__u_3_3_3:11281; GFX9:       ; %bb.0:11282; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11283; GFX9-NEXT:    ;;#ASMSTART11284; GFX9-NEXT:    ; use s[8:9]11285; GFX9-NEXT:    ;;#ASMEND11286; GFX9-NEXT:    s_setpc_b64 s[30:31]11287  %vec0 = call <4 x i16> asm "; def $0", "=s"()11288  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11289  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 poison, i32 3, i32 3, i32 3>11290  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)11291  ret void11292}11293 11294define void @s_shuffle_v4i16_v3i16__0_3_3_3() {11295; GFX900-LABEL: s_shuffle_v4i16_v3i16__0_3_3_3:11296; GFX900:       ; %bb.0:11297; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11298; GFX900-NEXT:    ;;#ASMSTART11299; GFX900-NEXT:    ; def s[8:9]11300; GFX900-NEXT:    ;;#ASMEND11301; GFX900-NEXT:    ;;#ASMSTART11302; GFX900-NEXT:    ; use s[8:9]11303; GFX900-NEXT:    ;;#ASMEND11304; GFX900-NEXT:    s_setpc_b64 s[30:31]11305;11306; GFX90A-LABEL: s_shuffle_v4i16_v3i16__0_3_3_3:11307; GFX90A:       ; %bb.0:11308; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11309; GFX90A-NEXT:    ;;#ASMSTART11310; GFX90A-NEXT:    ; def s[8:9]11311; GFX90A-NEXT:    ;;#ASMEND11312; GFX90A-NEXT:    ;;#ASMSTART11313; GFX90A-NEXT:    ; use s[8:9]11314; GFX90A-NEXT:    ;;#ASMEND11315; GFX90A-NEXT:    s_setpc_b64 s[30:31]11316;11317; GFX942-LABEL: s_shuffle_v4i16_v3i16__0_3_3_3:11318; GFX942:       ; %bb.0:11319; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11320; GFX942-NEXT:    ;;#ASMSTART11321; GFX942-NEXT:    ; def s[8:9]11322; GFX942-NEXT:    ;;#ASMEND11323; GFX942-NEXT:    s_nop 011324; GFX942-NEXT:    ;;#ASMSTART11325; GFX942-NEXT:    ; use s[8:9]11326; GFX942-NEXT:    ;;#ASMEND11327; GFX942-NEXT:    s_setpc_b64 s[30:31]11328  %vec0 = call <4 x i16> asm "; def $0", "=s"()11329  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11330  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 0, i32 3, i32 3, i32 3>11331  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)11332  ret void11333}11334 11335define void @s_shuffle_v4i16_v3i16__1_3_3_3() {11336; GFX900-LABEL: s_shuffle_v4i16_v3i16__1_3_3_3:11337; GFX900:       ; %bb.0:11338; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11339; GFX900-NEXT:    ;;#ASMSTART11340; GFX900-NEXT:    ; def s[4:5]11341; GFX900-NEXT:    ;;#ASMEND11342; GFX900-NEXT:    s_lshr_b32 s8, s4, 1611343; GFX900-NEXT:    ;;#ASMSTART11344; GFX900-NEXT:    ; use s[8:9]11345; GFX900-NEXT:    ;;#ASMEND11346; GFX900-NEXT:    s_setpc_b64 s[30:31]11347;11348; GFX90A-LABEL: s_shuffle_v4i16_v3i16__1_3_3_3:11349; GFX90A:       ; %bb.0:11350; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11351; GFX90A-NEXT:    ;;#ASMSTART11352; GFX90A-NEXT:    ; def s[4:5]11353; GFX90A-NEXT:    ;;#ASMEND11354; GFX90A-NEXT:    s_lshr_b32 s8, s4, 1611355; GFX90A-NEXT:    ;;#ASMSTART11356; GFX90A-NEXT:    ; use s[8:9]11357; GFX90A-NEXT:    ;;#ASMEND11358; GFX90A-NEXT:    s_setpc_b64 s[30:31]11359;11360; GFX942-LABEL: s_shuffle_v4i16_v3i16__1_3_3_3:11361; GFX942:       ; %bb.0:11362; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11363; GFX942-NEXT:    ;;#ASMSTART11364; GFX942-NEXT:    ; def s[0:1]11365; GFX942-NEXT:    ;;#ASMEND11366; GFX942-NEXT:    s_lshr_b32 s8, s0, 1611367; GFX942-NEXT:    ;;#ASMSTART11368; GFX942-NEXT:    ; use s[8:9]11369; GFX942-NEXT:    ;;#ASMEND11370; GFX942-NEXT:    s_setpc_b64 s[30:31]11371  %vec0 = call <4 x i16> asm "; def $0", "=s"()11372  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11373  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 1, i32 3, i32 3, i32 3>11374  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)11375  ret void11376}11377 11378define void @s_shuffle_v4i16_v3i16__2_3_3_3() {11379; GFX900-LABEL: s_shuffle_v4i16_v3i16__2_3_3_3:11380; GFX900:       ; %bb.0:11381; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11382; GFX900-NEXT:    ;;#ASMSTART11383; GFX900-NEXT:    ; def s[4:5]11384; GFX900-NEXT:    ;;#ASMEND11385; GFX900-NEXT:    s_mov_b32 s8, s511386; GFX900-NEXT:    ;;#ASMSTART11387; GFX900-NEXT:    ; use s[8:9]11388; GFX900-NEXT:    ;;#ASMEND11389; GFX900-NEXT:    s_setpc_b64 s[30:31]11390;11391; GFX90A-LABEL: s_shuffle_v4i16_v3i16__2_3_3_3:11392; GFX90A:       ; %bb.0:11393; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11394; GFX90A-NEXT:    ;;#ASMSTART11395; GFX90A-NEXT:    ; def s[4:5]11396; GFX90A-NEXT:    ;;#ASMEND11397; GFX90A-NEXT:    s_mov_b32 s8, s511398; GFX90A-NEXT:    ;;#ASMSTART11399; GFX90A-NEXT:    ; use s[8:9]11400; GFX90A-NEXT:    ;;#ASMEND11401; GFX90A-NEXT:    s_setpc_b64 s[30:31]11402;11403; GFX942-LABEL: s_shuffle_v4i16_v3i16__2_3_3_3:11404; GFX942:       ; %bb.0:11405; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11406; GFX942-NEXT:    ;;#ASMSTART11407; GFX942-NEXT:    ; def s[0:1]11408; GFX942-NEXT:    ;;#ASMEND11409; GFX942-NEXT:    s_mov_b32 s8, s111410; GFX942-NEXT:    ;;#ASMSTART11411; GFX942-NEXT:    ; use s[8:9]11412; GFX942-NEXT:    ;;#ASMEND11413; GFX942-NEXT:    s_setpc_b64 s[30:31]11414  %vec0 = call <4 x i16> asm "; def $0", "=s"()11415  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11416  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 2, i32 3, i32 3, i32 3>11417  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)11418  ret void11419}11420 11421define void @s_shuffle_v4i16_v3i16__3_3_3_3() {11422; GFX9-LABEL: s_shuffle_v4i16_v3i16__3_3_3_3:11423; GFX9:       ; %bb.0:11424; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11425; GFX9-NEXT:    ;;#ASMSTART11426; GFX9-NEXT:    ; use s[8:9]11427; GFX9-NEXT:    ;;#ASMEND11428; GFX9-NEXT:    s_setpc_b64 s[30:31]11429  %vec0 = call <4 x i16> asm "; def $0", "=s"()11430  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11431  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> poison, <4 x i32> <i32 3, i32 3, i32 3, i32 3>11432  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)11433  ret void11434}11435 11436define void @s_shuffle_v4i16_v3i16__4_3_3_3() {11437; GFX900-LABEL: s_shuffle_v4i16_v3i16__4_3_3_3:11438; GFX900:       ; %bb.0:11439; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11440; GFX900-NEXT:    ;;#ASMSTART11441; GFX900-NEXT:    ; def s[4:5]11442; GFX900-NEXT:    ;;#ASMEND11443; GFX900-NEXT:    s_lshr_b32 s5, s4, 1611444; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s411445; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s411446; GFX900-NEXT:    ;;#ASMSTART11447; GFX900-NEXT:    ; use s[8:9]11448; GFX900-NEXT:    ;;#ASMEND11449; GFX900-NEXT:    s_setpc_b64 s[30:31]11450;11451; GFX90A-LABEL: s_shuffle_v4i16_v3i16__4_3_3_3:11452; GFX90A:       ; %bb.0:11453; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11454; GFX90A-NEXT:    ;;#ASMSTART11455; GFX90A-NEXT:    ; def s[4:5]11456; GFX90A-NEXT:    ;;#ASMEND11457; GFX90A-NEXT:    s_lshr_b32 s5, s4, 1611458; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s411459; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s411460; GFX90A-NEXT:    ;;#ASMSTART11461; GFX90A-NEXT:    ; use s[8:9]11462; GFX90A-NEXT:    ;;#ASMEND11463; GFX90A-NEXT:    s_setpc_b64 s[30:31]11464;11465; GFX942-LABEL: s_shuffle_v4i16_v3i16__4_3_3_3:11466; GFX942:       ; %bb.0:11467; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11468; GFX942-NEXT:    ;;#ASMSTART11469; GFX942-NEXT:    ; def s[0:1]11470; GFX942-NEXT:    ;;#ASMEND11471; GFX942-NEXT:    s_lshr_b32 s1, s0, 1611472; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s011473; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s011474; GFX942-NEXT:    ;;#ASMSTART11475; GFX942-NEXT:    ; use s[8:9]11476; GFX942-NEXT:    ;;#ASMEND11477; GFX942-NEXT:    s_setpc_b64 s[30:31]11478  %vec0 = call <4 x i16> asm "; def $0", "=s"()11479  %vec1 = call <4 x i16> asm "; def $0", "=s"()11480  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11481  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11482  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 4, i32 3, i32 3, i32 3>11483  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)11484  ret void11485}11486 11487define void @s_shuffle_v4i16_v3i16__5_3_3_3() {11488; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_3_3_3:11489; GFX900:       ; %bb.0:11490; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11491; GFX900-NEXT:    ;;#ASMSTART11492; GFX900-NEXT:    ; def s[4:5]11493; GFX900-NEXT:    ;;#ASMEND11494; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s411495; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s411496; GFX900-NEXT:    ;;#ASMSTART11497; GFX900-NEXT:    ; use s[8:9]11498; GFX900-NEXT:    ;;#ASMEND11499; GFX900-NEXT:    s_setpc_b64 s[30:31]11500;11501; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_3_3_3:11502; GFX90A:       ; %bb.0:11503; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11504; GFX90A-NEXT:    ;;#ASMSTART11505; GFX90A-NEXT:    ; def s[4:5]11506; GFX90A-NEXT:    ;;#ASMEND11507; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s411508; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s411509; GFX90A-NEXT:    ;;#ASMSTART11510; GFX90A-NEXT:    ; use s[8:9]11511; GFX90A-NEXT:    ;;#ASMEND11512; GFX90A-NEXT:    s_setpc_b64 s[30:31]11513;11514; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_3_3_3:11515; GFX942:       ; %bb.0:11516; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11517; GFX942-NEXT:    ;;#ASMSTART11518; GFX942-NEXT:    ; def s[0:1]11519; GFX942-NEXT:    ;;#ASMEND11520; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s011521; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s011522; GFX942-NEXT:    ;;#ASMSTART11523; GFX942-NEXT:    ; use s[8:9]11524; GFX942-NEXT:    ;;#ASMEND11525; GFX942-NEXT:    s_setpc_b64 s[30:31]11526  %vec0 = call <4 x i16> asm "; def $0", "=s"()11527  %vec1 = call <4 x i16> asm "; def $0", "=s"()11528  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11529  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11530  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 3, i32 3, i32 3>11531  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)11532  ret void11533}11534 11535define void @s_shuffle_v4i16_v3i16__5_u_3_3() {11536; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_u_3_3:11537; GFX900:       ; %bb.0:11538; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11539; GFX900-NEXT:    ;;#ASMSTART11540; GFX900-NEXT:    ; def s[4:5]11541; GFX900-NEXT:    ;;#ASMEND11542; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s411543; GFX900-NEXT:    s_mov_b32 s8, s511544; GFX900-NEXT:    ;;#ASMSTART11545; GFX900-NEXT:    ; use s[8:9]11546; GFX900-NEXT:    ;;#ASMEND11547; GFX900-NEXT:    s_setpc_b64 s[30:31]11548;11549; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_u_3_3:11550; GFX90A:       ; %bb.0:11551; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11552; GFX90A-NEXT:    ;;#ASMSTART11553; GFX90A-NEXT:    ; def s[4:5]11554; GFX90A-NEXT:    ;;#ASMEND11555; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s411556; GFX90A-NEXT:    s_mov_b32 s8, s511557; GFX90A-NEXT:    ;;#ASMSTART11558; GFX90A-NEXT:    ; use s[8:9]11559; GFX90A-NEXT:    ;;#ASMEND11560; GFX90A-NEXT:    s_setpc_b64 s[30:31]11561;11562; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_u_3_3:11563; GFX942:       ; %bb.0:11564; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11565; GFX942-NEXT:    ;;#ASMSTART11566; GFX942-NEXT:    ; def s[0:1]11567; GFX942-NEXT:    ;;#ASMEND11568; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s011569; GFX942-NEXT:    s_mov_b32 s8, s111570; GFX942-NEXT:    ;;#ASMSTART11571; GFX942-NEXT:    ; use s[8:9]11572; GFX942-NEXT:    ;;#ASMEND11573; GFX942-NEXT:    s_setpc_b64 s[30:31]11574  %vec0 = call <4 x i16> asm "; def $0", "=s"()11575  %vec1 = call <4 x i16> asm "; def $0", "=s"()11576  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11577  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11578  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 poison, i32 3, i32 3>11579  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)11580  ret void11581}11582 11583define void @s_shuffle_v4i16_v3i16__5_0_3_3() {11584; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_0_3_3:11585; GFX900:       ; %bb.0:11586; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11587; GFX900-NEXT:    ;;#ASMSTART11588; GFX900-NEXT:    ; def s[4:5]11589; GFX900-NEXT:    ;;#ASMEND11590; GFX900-NEXT:    ;;#ASMSTART11591; GFX900-NEXT:    ; def s[6:7]11592; GFX900-NEXT:    ;;#ASMEND11593; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s411594; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s6, s611595; GFX900-NEXT:    ;;#ASMSTART11596; GFX900-NEXT:    ; use s[8:9]11597; GFX900-NEXT:    ;;#ASMEND11598; GFX900-NEXT:    s_setpc_b64 s[30:31]11599;11600; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_0_3_3:11601; GFX90A:       ; %bb.0:11602; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11603; GFX90A-NEXT:    ;;#ASMSTART11604; GFX90A-NEXT:    ; def s[4:5]11605; GFX90A-NEXT:    ;;#ASMEND11606; GFX90A-NEXT:    ;;#ASMSTART11607; GFX90A-NEXT:    ; def s[6:7]11608; GFX90A-NEXT:    ;;#ASMEND11609; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s411610; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s6, s611611; GFX90A-NEXT:    ;;#ASMSTART11612; GFX90A-NEXT:    ; use s[8:9]11613; GFX90A-NEXT:    ;;#ASMEND11614; GFX90A-NEXT:    s_setpc_b64 s[30:31]11615;11616; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_0_3_3:11617; GFX942:       ; %bb.0:11618; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11619; GFX942-NEXT:    ;;#ASMSTART11620; GFX942-NEXT:    ; def s[0:1]11621; GFX942-NEXT:    ;;#ASMEND11622; GFX942-NEXT:    ;;#ASMSTART11623; GFX942-NEXT:    ; def s[2:3]11624; GFX942-NEXT:    ;;#ASMEND11625; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s011626; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s2, s211627; GFX942-NEXT:    ;;#ASMSTART11628; GFX942-NEXT:    ; use s[8:9]11629; GFX942-NEXT:    ;;#ASMEND11630; GFX942-NEXT:    s_setpc_b64 s[30:31]11631  %vec0 = call <4 x i16> asm "; def $0", "=s"()11632  %vec1 = call <4 x i16> asm "; def $0", "=s"()11633  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11634  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11635  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 0, i32 3, i32 3>11636  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)11637  ret void11638}11639 11640define void @s_shuffle_v4i16_v3i16__5_1_3_3() {11641; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_1_3_3:11642; GFX900:       ; %bb.0:11643; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11644; GFX900-NEXT:    ;;#ASMSTART11645; GFX900-NEXT:    ; def s[4:5]11646; GFX900-NEXT:    ;;#ASMEND11647; GFX900-NEXT:    ;;#ASMSTART11648; GFX900-NEXT:    ; def s[6:7]11649; GFX900-NEXT:    ;;#ASMEND11650; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s7, s411651; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s6, s611652; GFX900-NEXT:    ;;#ASMSTART11653; GFX900-NEXT:    ; use s[8:9]11654; GFX900-NEXT:    ;;#ASMEND11655; GFX900-NEXT:    s_setpc_b64 s[30:31]11656;11657; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_1_3_3:11658; GFX90A:       ; %bb.0:11659; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11660; GFX90A-NEXT:    ;;#ASMSTART11661; GFX90A-NEXT:    ; def s[4:5]11662; GFX90A-NEXT:    ;;#ASMEND11663; GFX90A-NEXT:    ;;#ASMSTART11664; GFX90A-NEXT:    ; def s[6:7]11665; GFX90A-NEXT:    ;;#ASMEND11666; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s7, s411667; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s6, s611668; GFX90A-NEXT:    ;;#ASMSTART11669; GFX90A-NEXT:    ; use s[8:9]11670; GFX90A-NEXT:    ;;#ASMEND11671; GFX90A-NEXT:    s_setpc_b64 s[30:31]11672;11673; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_1_3_3:11674; GFX942:       ; %bb.0:11675; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11676; GFX942-NEXT:    ;;#ASMSTART11677; GFX942-NEXT:    ; def s[0:1]11678; GFX942-NEXT:    ;;#ASMEND11679; GFX942-NEXT:    ;;#ASMSTART11680; GFX942-NEXT:    ; def s[2:3]11681; GFX942-NEXT:    ;;#ASMEND11682; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s3, s011683; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s2, s211684; GFX942-NEXT:    ;;#ASMSTART11685; GFX942-NEXT:    ; use s[8:9]11686; GFX942-NEXT:    ;;#ASMEND11687; GFX942-NEXT:    s_setpc_b64 s[30:31]11688  %vec0 = call <4 x i16> asm "; def $0", "=s"()11689  %vec1 = call <4 x i16> asm "; def $0", "=s"()11690  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11691  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11692  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 1, i32 3, i32 3>11693  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)11694  ret void11695}11696 11697define void @s_shuffle_v4i16_v3i16__5_2_3_3() {11698; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_2_3_3:11699; GFX900:       ; %bb.0:11700; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11701; GFX900-NEXT:    ;;#ASMSTART11702; GFX900-NEXT:    ; def s[4:5]11703; GFX900-NEXT:    ;;#ASMEND11704; GFX900-NEXT:    ;;#ASMSTART11705; GFX900-NEXT:    ; def s[6:7]11706; GFX900-NEXT:    ;;#ASMEND11707; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s511708; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s6, s611709; GFX900-NEXT:    ;;#ASMSTART11710; GFX900-NEXT:    ; use s[8:9]11711; GFX900-NEXT:    ;;#ASMEND11712; GFX900-NEXT:    s_setpc_b64 s[30:31]11713;11714; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_2_3_3:11715; GFX90A:       ; %bb.0:11716; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11717; GFX90A-NEXT:    ;;#ASMSTART11718; GFX90A-NEXT:    ; def s[4:5]11719; GFX90A-NEXT:    ;;#ASMEND11720; GFX90A-NEXT:    ;;#ASMSTART11721; GFX90A-NEXT:    ; def s[6:7]11722; GFX90A-NEXT:    ;;#ASMEND11723; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s511724; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s6, s611725; GFX90A-NEXT:    ;;#ASMSTART11726; GFX90A-NEXT:    ; use s[8:9]11727; GFX90A-NEXT:    ;;#ASMEND11728; GFX90A-NEXT:    s_setpc_b64 s[30:31]11729;11730; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_2_3_3:11731; GFX942:       ; %bb.0:11732; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11733; GFX942-NEXT:    ;;#ASMSTART11734; GFX942-NEXT:    ; def s[0:1]11735; GFX942-NEXT:    ;;#ASMEND11736; GFX942-NEXT:    ;;#ASMSTART11737; GFX942-NEXT:    ; def s[2:3]11738; GFX942-NEXT:    ;;#ASMEND11739; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s111740; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s2, s211741; GFX942-NEXT:    ;;#ASMSTART11742; GFX942-NEXT:    ; use s[8:9]11743; GFX942-NEXT:    ;;#ASMEND11744; GFX942-NEXT:    s_setpc_b64 s[30:31]11745  %vec0 = call <4 x i16> asm "; def $0", "=s"()11746  %vec1 = call <4 x i16> asm "; def $0", "=s"()11747  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11748  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11749  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 2, i32 3, i32 3>11750  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)11751  ret void11752}11753 11754define void @s_shuffle_v4i16_v3i16__5_4_3_3() {11755; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_4_3_3:11756; GFX900:       ; %bb.0:11757; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11758; GFX900-NEXT:    ;;#ASMSTART11759; GFX900-NEXT:    ; def s[4:5]11760; GFX900-NEXT:    ;;#ASMEND11761; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s5, s411762; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s411763; GFX900-NEXT:    ;;#ASMSTART11764; GFX900-NEXT:    ; use s[8:9]11765; GFX900-NEXT:    ;;#ASMEND11766; GFX900-NEXT:    s_setpc_b64 s[30:31]11767;11768; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_4_3_3:11769; GFX90A:       ; %bb.0:11770; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11771; GFX90A-NEXT:    ;;#ASMSTART11772; GFX90A-NEXT:    ; def s[4:5]11773; GFX90A-NEXT:    ;;#ASMEND11774; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s5, s411775; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s411776; GFX90A-NEXT:    ;;#ASMSTART11777; GFX90A-NEXT:    ; use s[8:9]11778; GFX90A-NEXT:    ;;#ASMEND11779; GFX90A-NEXT:    s_setpc_b64 s[30:31]11780;11781; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_4_3_3:11782; GFX942:       ; %bb.0:11783; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11784; GFX942-NEXT:    ;;#ASMSTART11785; GFX942-NEXT:    ; def s[0:1]11786; GFX942-NEXT:    ;;#ASMEND11787; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s1, s011788; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s011789; GFX942-NEXT:    ;;#ASMSTART11790; GFX942-NEXT:    ; use s[8:9]11791; GFX942-NEXT:    ;;#ASMEND11792; GFX942-NEXT:    s_setpc_b64 s[30:31]11793  %vec0 = call <4 x i16> asm "; def $0", "=s"()11794  %vec1 = call <4 x i16> asm "; def $0", "=s"()11795  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11796  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11797  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 4, i32 3, i32 3>11798  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)11799  ret void11800}11801 11802define void @s_shuffle_v4i16_v3i16__5_5_3_3() {11803; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_3_3:11804; GFX900:       ; %bb.0:11805; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11806; GFX900-NEXT:    ;;#ASMSTART11807; GFX900-NEXT:    ; def s[4:5]11808; GFX900-NEXT:    ;;#ASMEND11809; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s411810; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s511811; GFX900-NEXT:    ;;#ASMSTART11812; GFX900-NEXT:    ; use s[8:9]11813; GFX900-NEXT:    ;;#ASMEND11814; GFX900-NEXT:    s_setpc_b64 s[30:31]11815;11816; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_3_3:11817; GFX90A:       ; %bb.0:11818; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11819; GFX90A-NEXT:    ;;#ASMSTART11820; GFX90A-NEXT:    ; def s[4:5]11821; GFX90A-NEXT:    ;;#ASMEND11822; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s411823; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s511824; GFX90A-NEXT:    ;;#ASMSTART11825; GFX90A-NEXT:    ; use s[8:9]11826; GFX90A-NEXT:    ;;#ASMEND11827; GFX90A-NEXT:    s_setpc_b64 s[30:31]11828;11829; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_3_3:11830; GFX942:       ; %bb.0:11831; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11832; GFX942-NEXT:    ;;#ASMSTART11833; GFX942-NEXT:    ; def s[0:1]11834; GFX942-NEXT:    ;;#ASMEND11835; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s011836; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s111837; GFX942-NEXT:    ;;#ASMSTART11838; GFX942-NEXT:    ; use s[8:9]11839; GFX942-NEXT:    ;;#ASMEND11840; GFX942-NEXT:    s_setpc_b64 s[30:31]11841  %vec0 = call <4 x i16> asm "; def $0", "=s"()11842  %vec1 = call <4 x i16> asm "; def $0", "=s"()11843  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11844  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11845  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 3, i32 3>11846  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)11847  ret void11848}11849 11850define void @s_shuffle_v4i16_v3i16__5_5_u_3() {11851; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_u_3:11852; GFX900:       ; %bb.0:11853; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11854; GFX900-NEXT:    ;;#ASMSTART11855; GFX900-NEXT:    ; def s[4:5]11856; GFX900-NEXT:    ;;#ASMEND11857; GFX900-NEXT:    s_lshl_b32 s9, s4, 1611858; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s511859; GFX900-NEXT:    ;;#ASMSTART11860; GFX900-NEXT:    ; use s[8:9]11861; GFX900-NEXT:    ;;#ASMEND11862; GFX900-NEXT:    s_setpc_b64 s[30:31]11863;11864; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_u_3:11865; GFX90A:       ; %bb.0:11866; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11867; GFX90A-NEXT:    ;;#ASMSTART11868; GFX90A-NEXT:    ; def s[4:5]11869; GFX90A-NEXT:    ;;#ASMEND11870; GFX90A-NEXT:    s_lshl_b32 s9, s4, 1611871; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s511872; GFX90A-NEXT:    ;;#ASMSTART11873; GFX90A-NEXT:    ; use s[8:9]11874; GFX90A-NEXT:    ;;#ASMEND11875; GFX90A-NEXT:    s_setpc_b64 s[30:31]11876;11877; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_u_3:11878; GFX942:       ; %bb.0:11879; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11880; GFX942-NEXT:    ;;#ASMSTART11881; GFX942-NEXT:    ; def s[0:1]11882; GFX942-NEXT:    ;;#ASMEND11883; GFX942-NEXT:    s_lshl_b32 s9, s0, 1611884; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s111885; GFX942-NEXT:    ;;#ASMSTART11886; GFX942-NEXT:    ; use s[8:9]11887; GFX942-NEXT:    ;;#ASMEND11888; GFX942-NEXT:    s_setpc_b64 s[30:31]11889  %vec0 = call <4 x i16> asm "; def $0", "=s"()11890  %vec1 = call <4 x i16> asm "; def $0", "=s"()11891  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11892  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11893  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 poison, i32 3>11894  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)11895  ret void11896}11897 11898define void @s_shuffle_v4i16_v3i16__5_5_0_3() {11899; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_0_3:11900; GFX900:       ; %bb.0:11901; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11902; GFX900-NEXT:    ;;#ASMSTART11903; GFX900-NEXT:    ; def s[4:5]11904; GFX900-NEXT:    ;;#ASMEND11905; GFX900-NEXT:    ;;#ASMSTART11906; GFX900-NEXT:    ; def s[6:7]11907; GFX900-NEXT:    ;;#ASMEND11908; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s611909; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s711910; GFX900-NEXT:    ;;#ASMSTART11911; GFX900-NEXT:    ; use s[8:9]11912; GFX900-NEXT:    ;;#ASMEND11913; GFX900-NEXT:    s_setpc_b64 s[30:31]11914;11915; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_0_3:11916; GFX90A:       ; %bb.0:11917; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11918; GFX90A-NEXT:    ;;#ASMSTART11919; GFX90A-NEXT:    ; def s[4:5]11920; GFX90A-NEXT:    ;;#ASMEND11921; GFX90A-NEXT:    ;;#ASMSTART11922; GFX90A-NEXT:    ; def s[6:7]11923; GFX90A-NEXT:    ;;#ASMEND11924; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s611925; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s711926; GFX90A-NEXT:    ;;#ASMSTART11927; GFX90A-NEXT:    ; use s[8:9]11928; GFX90A-NEXT:    ;;#ASMEND11929; GFX90A-NEXT:    s_setpc_b64 s[30:31]11930;11931; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_0_3:11932; GFX942:       ; %bb.0:11933; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11934; GFX942-NEXT:    ;;#ASMSTART11935; GFX942-NEXT:    ; def s[0:1]11936; GFX942-NEXT:    ;;#ASMEND11937; GFX942-NEXT:    ;;#ASMSTART11938; GFX942-NEXT:    ; def s[2:3]11939; GFX942-NEXT:    ;;#ASMEND11940; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s211941; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s311942; GFX942-NEXT:    ;;#ASMSTART11943; GFX942-NEXT:    ; use s[8:9]11944; GFX942-NEXT:    ;;#ASMEND11945; GFX942-NEXT:    s_setpc_b64 s[30:31]11946  %vec0 = call <4 x i16> asm "; def $0", "=s"()11947  %vec1 = call <4 x i16> asm "; def $0", "=s"()11948  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11949  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>11950  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 0, i32 3>11951  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)11952  ret void11953}11954 11955define void @s_shuffle_v4i16_v3i16__5_5_1_3() {11956; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_1_3:11957; GFX900:       ; %bb.0:11958; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11959; GFX900-NEXT:    ;;#ASMSTART11960; GFX900-NEXT:    ; def s[4:5]11961; GFX900-NEXT:    ;;#ASMEND11962; GFX900-NEXT:    s_lshr_b32 s4, s4, 1611963; GFX900-NEXT:    ;;#ASMSTART11964; GFX900-NEXT:    ; def s[6:7]11965; GFX900-NEXT:    ;;#ASMEND11966; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s611967; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s711968; GFX900-NEXT:    ;;#ASMSTART11969; GFX900-NEXT:    ; use s[8:9]11970; GFX900-NEXT:    ;;#ASMEND11971; GFX900-NEXT:    s_setpc_b64 s[30:31]11972;11973; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_1_3:11974; GFX90A:       ; %bb.0:11975; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11976; GFX90A-NEXT:    ;;#ASMSTART11977; GFX90A-NEXT:    ; def s[4:5]11978; GFX90A-NEXT:    ;;#ASMEND11979; GFX90A-NEXT:    s_lshr_b32 s4, s4, 1611980; GFX90A-NEXT:    ;;#ASMSTART11981; GFX90A-NEXT:    ; def s[6:7]11982; GFX90A-NEXT:    ;;#ASMEND11983; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s611984; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s711985; GFX90A-NEXT:    ;;#ASMSTART11986; GFX90A-NEXT:    ; use s[8:9]11987; GFX90A-NEXT:    ;;#ASMEND11988; GFX90A-NEXT:    s_setpc_b64 s[30:31]11989;11990; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_1_3:11991; GFX942:       ; %bb.0:11992; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11993; GFX942-NEXT:    ;;#ASMSTART11994; GFX942-NEXT:    ; def s[0:1]11995; GFX942-NEXT:    ;;#ASMEND11996; GFX942-NEXT:    s_lshr_b32 s0, s0, 1611997; GFX942-NEXT:    ;;#ASMSTART11998; GFX942-NEXT:    ; def s[2:3]11999; GFX942-NEXT:    ;;#ASMEND12000; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s212001; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s312002; GFX942-NEXT:    ;;#ASMSTART12003; GFX942-NEXT:    ; use s[8:9]12004; GFX942-NEXT:    ;;#ASMEND12005; GFX942-NEXT:    s_setpc_b64 s[30:31]12006  %vec0 = call <4 x i16> asm "; def $0", "=s"()12007  %vec1 = call <4 x i16> asm "; def $0", "=s"()12008  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12009  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12010  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 1, i32 3>12011  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)12012  ret void12013}12014 12015define void @s_shuffle_v4i16_v3i16__5_5_2_3() {12016; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_2_3:12017; GFX900:       ; %bb.0:12018; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12019; GFX900-NEXT:    ;;#ASMSTART12020; GFX900-NEXT:    ; def s[4:5]12021; GFX900-NEXT:    ;;#ASMEND12022; GFX900-NEXT:    ;;#ASMSTART12023; GFX900-NEXT:    ; def s[6:7]12024; GFX900-NEXT:    ;;#ASMEND12025; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s5, s612026; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s712027; GFX900-NEXT:    ;;#ASMSTART12028; GFX900-NEXT:    ; use s[8:9]12029; GFX900-NEXT:    ;;#ASMEND12030; GFX900-NEXT:    s_setpc_b64 s[30:31]12031;12032; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_2_3:12033; GFX90A:       ; %bb.0:12034; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12035; GFX90A-NEXT:    ;;#ASMSTART12036; GFX90A-NEXT:    ; def s[4:5]12037; GFX90A-NEXT:    ;;#ASMEND12038; GFX90A-NEXT:    ;;#ASMSTART12039; GFX90A-NEXT:    ; def s[6:7]12040; GFX90A-NEXT:    ;;#ASMEND12041; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s5, s612042; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s712043; GFX90A-NEXT:    ;;#ASMSTART12044; GFX90A-NEXT:    ; use s[8:9]12045; GFX90A-NEXT:    ;;#ASMEND12046; GFX90A-NEXT:    s_setpc_b64 s[30:31]12047;12048; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_2_3:12049; GFX942:       ; %bb.0:12050; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12051; GFX942-NEXT:    ;;#ASMSTART12052; GFX942-NEXT:    ; def s[0:1]12053; GFX942-NEXT:    ;;#ASMEND12054; GFX942-NEXT:    ;;#ASMSTART12055; GFX942-NEXT:    ; def s[2:3]12056; GFX942-NEXT:    ;;#ASMEND12057; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s1, s212058; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s312059; GFX942-NEXT:    ;;#ASMSTART12060; GFX942-NEXT:    ; use s[8:9]12061; GFX942-NEXT:    ;;#ASMEND12062; GFX942-NEXT:    s_setpc_b64 s[30:31]12063  %vec0 = call <4 x i16> asm "; def $0", "=s"()12064  %vec1 = call <4 x i16> asm "; def $0", "=s"()12065  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12066  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12067  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 2, i32 3>12068  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)12069  ret void12070}12071 12072define void @s_shuffle_v4i16_v3i16__5_5_4_3() {12073; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_4_3:12074; GFX900:       ; %bb.0:12075; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12076; GFX900-NEXT:    ;;#ASMSTART12077; GFX900-NEXT:    ; def s[4:5]12078; GFX900-NEXT:    ;;#ASMEND12079; GFX900-NEXT:    s_lshr_b32 s6, s4, 1612080; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s6, s412081; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s512082; GFX900-NEXT:    ;;#ASMSTART12083; GFX900-NEXT:    ; use s[8:9]12084; GFX900-NEXT:    ;;#ASMEND12085; GFX900-NEXT:    s_setpc_b64 s[30:31]12086;12087; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_4_3:12088; GFX90A:       ; %bb.0:12089; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12090; GFX90A-NEXT:    ;;#ASMSTART12091; GFX90A-NEXT:    ; def s[4:5]12092; GFX90A-NEXT:    ;;#ASMEND12093; GFX90A-NEXT:    s_lshr_b32 s6, s4, 1612094; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s6, s412095; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s512096; GFX90A-NEXT:    ;;#ASMSTART12097; GFX90A-NEXT:    ; use s[8:9]12098; GFX90A-NEXT:    ;;#ASMEND12099; GFX90A-NEXT:    s_setpc_b64 s[30:31]12100;12101; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_4_3:12102; GFX942:       ; %bb.0:12103; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12104; GFX942-NEXT:    ;;#ASMSTART12105; GFX942-NEXT:    ; def s[0:1]12106; GFX942-NEXT:    ;;#ASMEND12107; GFX942-NEXT:    s_lshr_b32 s2, s0, 1612108; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s2, s012109; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s112110; GFX942-NEXT:    ;;#ASMSTART12111; GFX942-NEXT:    ; use s[8:9]12112; GFX942-NEXT:    ;;#ASMEND12113; GFX942-NEXT:    s_setpc_b64 s[30:31]12114  %vec0 = call <4 x i16> asm "; def $0", "=s"()12115  %vec1 = call <4 x i16> asm "; def $0", "=s"()12116  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12117  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12118  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 4, i32 3>12119  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)12120  ret void12121}12122 12123define void @s_shuffle_v4i16_v3i16__u_4_4_4() {12124; GFX9-LABEL: s_shuffle_v4i16_v3i16__u_4_4_4:12125; GFX9:       ; %bb.0:12126; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12127; GFX9-NEXT:    ;;#ASMSTART12128; GFX9-NEXT:    ; def s[8:9]12129; GFX9-NEXT:    ;;#ASMEND12130; GFX9-NEXT:    s_pack_hh_b32_b16 s9, s8, s812131; GFX9-NEXT:    ;;#ASMSTART12132; GFX9-NEXT:    ; use s[8:9]12133; GFX9-NEXT:    ;;#ASMEND12134; GFX9-NEXT:    s_setpc_b64 s[30:31]12135  %vec0 = call <4 x i16> asm "; def $0", "=s"()12136  %vec1 = call <4 x i16> asm "; def $0", "=s"()12137  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12138  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12139  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 poison, i32 4, i32 4, i32 4>12140  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)12141  ret void12142}12143 12144define void @s_shuffle_v4i16_v3i16__0_4_4_4() {12145; GFX900-LABEL: s_shuffle_v4i16_v3i16__0_4_4_4:12146; GFX900:       ; %bb.0:12147; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12148; GFX900-NEXT:    ;;#ASMSTART12149; GFX900-NEXT:    ; def s[4:5]12150; GFX900-NEXT:    ;;#ASMEND12151; GFX900-NEXT:    ;;#ASMSTART12152; GFX900-NEXT:    ; def s[6:7]12153; GFX900-NEXT:    ;;#ASMEND12154; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s4, s612155; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s6, s612156; GFX900-NEXT:    ;;#ASMSTART12157; GFX900-NEXT:    ; use s[8:9]12158; GFX900-NEXT:    ;;#ASMEND12159; GFX900-NEXT:    s_setpc_b64 s[30:31]12160;12161; GFX90A-LABEL: s_shuffle_v4i16_v3i16__0_4_4_4:12162; GFX90A:       ; %bb.0:12163; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12164; GFX90A-NEXT:    ;;#ASMSTART12165; GFX90A-NEXT:    ; def s[4:5]12166; GFX90A-NEXT:    ;;#ASMEND12167; GFX90A-NEXT:    ;;#ASMSTART12168; GFX90A-NEXT:    ; def s[6:7]12169; GFX90A-NEXT:    ;;#ASMEND12170; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s4, s612171; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s6, s612172; GFX90A-NEXT:    ;;#ASMSTART12173; GFX90A-NEXT:    ; use s[8:9]12174; GFX90A-NEXT:    ;;#ASMEND12175; GFX90A-NEXT:    s_setpc_b64 s[30:31]12176;12177; GFX942-LABEL: s_shuffle_v4i16_v3i16__0_4_4_4:12178; GFX942:       ; %bb.0:12179; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12180; GFX942-NEXT:    ;;#ASMSTART12181; GFX942-NEXT:    ; def s[0:1]12182; GFX942-NEXT:    ;;#ASMEND12183; GFX942-NEXT:    ;;#ASMSTART12184; GFX942-NEXT:    ; def s[2:3]12185; GFX942-NEXT:    ;;#ASMEND12186; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s0, s212187; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s2, s212188; GFX942-NEXT:    ;;#ASMSTART12189; GFX942-NEXT:    ; use s[8:9]12190; GFX942-NEXT:    ;;#ASMEND12191; GFX942-NEXT:    s_setpc_b64 s[30:31]12192  %vec0 = call <4 x i16> asm "; def $0", "=s"()12193  %vec1 = call <4 x i16> asm "; def $0", "=s"()12194  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12195  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12196  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 0, i32 4, i32 4, i32 4>12197  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)12198  ret void12199}12200 12201define void @s_shuffle_v4i16_v3i16__1_4_4_4() {12202; GFX900-LABEL: s_shuffle_v4i16_v3i16__1_4_4_4:12203; GFX900:       ; %bb.0:12204; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12205; GFX900-NEXT:    ;;#ASMSTART12206; GFX900-NEXT:    ; def s[4:5]12207; GFX900-NEXT:    ;;#ASMEND12208; GFX900-NEXT:    ;;#ASMSTART12209; GFX900-NEXT:    ; def s[6:7]12210; GFX900-NEXT:    ;;#ASMEND12211; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s612212; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s6, s612213; GFX900-NEXT:    ;;#ASMSTART12214; GFX900-NEXT:    ; use s[8:9]12215; GFX900-NEXT:    ;;#ASMEND12216; GFX900-NEXT:    s_setpc_b64 s[30:31]12217;12218; GFX90A-LABEL: s_shuffle_v4i16_v3i16__1_4_4_4:12219; GFX90A:       ; %bb.0:12220; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12221; GFX90A-NEXT:    ;;#ASMSTART12222; GFX90A-NEXT:    ; def s[4:5]12223; GFX90A-NEXT:    ;;#ASMEND12224; GFX90A-NEXT:    ;;#ASMSTART12225; GFX90A-NEXT:    ; def s[6:7]12226; GFX90A-NEXT:    ;;#ASMEND12227; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s612228; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s6, s612229; GFX90A-NEXT:    ;;#ASMSTART12230; GFX90A-NEXT:    ; use s[8:9]12231; GFX90A-NEXT:    ;;#ASMEND12232; GFX90A-NEXT:    s_setpc_b64 s[30:31]12233;12234; GFX942-LABEL: s_shuffle_v4i16_v3i16__1_4_4_4:12235; GFX942:       ; %bb.0:12236; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12237; GFX942-NEXT:    ;;#ASMSTART12238; GFX942-NEXT:    ; def s[0:1]12239; GFX942-NEXT:    ;;#ASMEND12240; GFX942-NEXT:    ;;#ASMSTART12241; GFX942-NEXT:    ; def s[2:3]12242; GFX942-NEXT:    ;;#ASMEND12243; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s212244; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s2, s212245; GFX942-NEXT:    ;;#ASMSTART12246; GFX942-NEXT:    ; use s[8:9]12247; GFX942-NEXT:    ;;#ASMEND12248; GFX942-NEXT:    s_setpc_b64 s[30:31]12249  %vec0 = call <4 x i16> asm "; def $0", "=s"()12250  %vec1 = call <4 x i16> asm "; def $0", "=s"()12251  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12252  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12253  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 1, i32 4, i32 4, i32 4>12254  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)12255  ret void12256}12257 12258define void @s_shuffle_v4i16_v3i16__2_4_4_4() {12259; GFX900-LABEL: s_shuffle_v4i16_v3i16__2_4_4_4:12260; GFX900:       ; %bb.0:12261; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12262; GFX900-NEXT:    ;;#ASMSTART12263; GFX900-NEXT:    ; def s[4:5]12264; GFX900-NEXT:    ;;#ASMEND12265; GFX900-NEXT:    ;;#ASMSTART12266; GFX900-NEXT:    ; def s[6:7]12267; GFX900-NEXT:    ;;#ASMEND12268; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s5, s612269; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s6, s612270; GFX900-NEXT:    ;;#ASMSTART12271; GFX900-NEXT:    ; use s[8:9]12272; GFX900-NEXT:    ;;#ASMEND12273; GFX900-NEXT:    s_setpc_b64 s[30:31]12274;12275; GFX90A-LABEL: s_shuffle_v4i16_v3i16__2_4_4_4:12276; GFX90A:       ; %bb.0:12277; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12278; GFX90A-NEXT:    ;;#ASMSTART12279; GFX90A-NEXT:    ; def s[4:5]12280; GFX90A-NEXT:    ;;#ASMEND12281; GFX90A-NEXT:    ;;#ASMSTART12282; GFX90A-NEXT:    ; def s[6:7]12283; GFX90A-NEXT:    ;;#ASMEND12284; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s5, s612285; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s6, s612286; GFX90A-NEXT:    ;;#ASMSTART12287; GFX90A-NEXT:    ; use s[8:9]12288; GFX90A-NEXT:    ;;#ASMEND12289; GFX90A-NEXT:    s_setpc_b64 s[30:31]12290;12291; GFX942-LABEL: s_shuffle_v4i16_v3i16__2_4_4_4:12292; GFX942:       ; %bb.0:12293; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12294; GFX942-NEXT:    ;;#ASMSTART12295; GFX942-NEXT:    ; def s[0:1]12296; GFX942-NEXT:    ;;#ASMEND12297; GFX942-NEXT:    ;;#ASMSTART12298; GFX942-NEXT:    ; def s[2:3]12299; GFX942-NEXT:    ;;#ASMEND12300; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s1, s212301; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s2, s212302; GFX942-NEXT:    ;;#ASMSTART12303; GFX942-NEXT:    ; use s[8:9]12304; GFX942-NEXT:    ;;#ASMEND12305; GFX942-NEXT:    s_setpc_b64 s[30:31]12306  %vec0 = call <4 x i16> asm "; def $0", "=s"()12307  %vec1 = call <4 x i16> asm "; def $0", "=s"()12308  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12309  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12310  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 2, i32 4, i32 4, i32 4>12311  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)12312  ret void12313}12314 12315define void @s_shuffle_v4i16_v3i16__3_4_4_4() {12316; GFX9-LABEL: s_shuffle_v4i16_v3i16__3_4_4_4:12317; GFX9:       ; %bb.0:12318; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12319; GFX9-NEXT:    ;;#ASMSTART12320; GFX9-NEXT:    ; def s[8:9]12321; GFX9-NEXT:    ;;#ASMEND12322; GFX9-NEXT:    s_pack_hh_b32_b16 s9, s8, s812323; GFX9-NEXT:    ;;#ASMSTART12324; GFX9-NEXT:    ; use s[8:9]12325; GFX9-NEXT:    ;;#ASMEND12326; GFX9-NEXT:    s_setpc_b64 s[30:31]12327  %vec0 = call <4 x i16> asm "; def $0", "=s"()12328  %vec1 = call <4 x i16> asm "; def $0", "=s"()12329  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12330  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12331  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 3, i32 4, i32 4, i32 4>12332  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)12333  ret void12334}12335 12336define void @s_shuffle_v4i16_v3i16__4_4_4_4() {12337; GFX900-LABEL: s_shuffle_v4i16_v3i16__4_4_4_4:12338; GFX900:       ; %bb.0:12339; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12340; GFX900-NEXT:    ;;#ASMSTART12341; GFX900-NEXT:    ; def s[4:5]12342; GFX900-NEXT:    ;;#ASMEND12343; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s412344; GFX900-NEXT:    s_mov_b32 s9, s812345; GFX900-NEXT:    ;;#ASMSTART12346; GFX900-NEXT:    ; use s[8:9]12347; GFX900-NEXT:    ;;#ASMEND12348; GFX900-NEXT:    s_setpc_b64 s[30:31]12349;12350; GFX90A-LABEL: s_shuffle_v4i16_v3i16__4_4_4_4:12351; GFX90A:       ; %bb.0:12352; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12353; GFX90A-NEXT:    ;;#ASMSTART12354; GFX90A-NEXT:    ; def s[4:5]12355; GFX90A-NEXT:    ;;#ASMEND12356; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s412357; GFX90A-NEXT:    s_mov_b32 s9, s812358; GFX90A-NEXT:    ;;#ASMSTART12359; GFX90A-NEXT:    ; use s[8:9]12360; GFX90A-NEXT:    ;;#ASMEND12361; GFX90A-NEXT:    s_setpc_b64 s[30:31]12362;12363; GFX942-LABEL: s_shuffle_v4i16_v3i16__4_4_4_4:12364; GFX942:       ; %bb.0:12365; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12366; GFX942-NEXT:    ;;#ASMSTART12367; GFX942-NEXT:    ; def s[0:1]12368; GFX942-NEXT:    ;;#ASMEND12369; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s012370; GFX942-NEXT:    s_mov_b32 s9, s812371; GFX942-NEXT:    ;;#ASMSTART12372; GFX942-NEXT:    ; use s[8:9]12373; GFX942-NEXT:    ;;#ASMEND12374; GFX942-NEXT:    s_setpc_b64 s[30:31]12375  %vec0 = call <4 x i16> asm "; def $0", "=s"()12376  %vec1 = call <4 x i16> asm "; def $0", "=s"()12377  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12378  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12379  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 4, i32 4, i32 4, i32 4>12380  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)12381  ret void12382}12383 12384define void @s_shuffle_v4i16_v3i16__5_4_4_4() {12385; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_4_4_4:12386; GFX900:       ; %bb.0:12387; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12388; GFX900-NEXT:    ;;#ASMSTART12389; GFX900-NEXT:    ; def s[4:5]12390; GFX900-NEXT:    ;;#ASMEND12391; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s5, s412392; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s4, s412393; GFX900-NEXT:    ;;#ASMSTART12394; GFX900-NEXT:    ; use s[8:9]12395; GFX900-NEXT:    ;;#ASMEND12396; GFX900-NEXT:    s_setpc_b64 s[30:31]12397;12398; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_4_4_4:12399; GFX90A:       ; %bb.0:12400; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12401; GFX90A-NEXT:    ;;#ASMSTART12402; GFX90A-NEXT:    ; def s[4:5]12403; GFX90A-NEXT:    ;;#ASMEND12404; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s5, s412405; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s4, s412406; GFX90A-NEXT:    ;;#ASMSTART12407; GFX90A-NEXT:    ; use s[8:9]12408; GFX90A-NEXT:    ;;#ASMEND12409; GFX90A-NEXT:    s_setpc_b64 s[30:31]12410;12411; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_4_4_4:12412; GFX942:       ; %bb.0:12413; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12414; GFX942-NEXT:    ;;#ASMSTART12415; GFX942-NEXT:    ; def s[0:1]12416; GFX942-NEXT:    ;;#ASMEND12417; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s1, s012418; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s0, s012419; GFX942-NEXT:    ;;#ASMSTART12420; GFX942-NEXT:    ; use s[8:9]12421; GFX942-NEXT:    ;;#ASMEND12422; GFX942-NEXT:    s_setpc_b64 s[30:31]12423  %vec0 = call <4 x i16> asm "; def $0", "=s"()12424  %vec1 = call <4 x i16> asm "; def $0", "=s"()12425  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12426  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12427  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 4, i32 4, i32 4>12428  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)12429  ret void12430}12431 12432define void @s_shuffle_v4i16_v3i16__5_u_4_4() {12433; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_u_4_4:12434; GFX900:       ; %bb.0:12435; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12436; GFX900-NEXT:    ;;#ASMSTART12437; GFX900-NEXT:    ; def s[4:5]12438; GFX900-NEXT:    ;;#ASMEND12439; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s4, s412440; GFX900-NEXT:    s_mov_b32 s8, s512441; GFX900-NEXT:    ;;#ASMSTART12442; GFX900-NEXT:    ; use s[8:9]12443; GFX900-NEXT:    ;;#ASMEND12444; GFX900-NEXT:    s_setpc_b64 s[30:31]12445;12446; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_u_4_4:12447; GFX90A:       ; %bb.0:12448; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12449; GFX90A-NEXT:    ;;#ASMSTART12450; GFX90A-NEXT:    ; def s[4:5]12451; GFX90A-NEXT:    ;;#ASMEND12452; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s4, s412453; GFX90A-NEXT:    s_mov_b32 s8, s512454; GFX90A-NEXT:    ;;#ASMSTART12455; GFX90A-NEXT:    ; use s[8:9]12456; GFX90A-NEXT:    ;;#ASMEND12457; GFX90A-NEXT:    s_setpc_b64 s[30:31]12458;12459; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_u_4_4:12460; GFX942:       ; %bb.0:12461; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12462; GFX942-NEXT:    ;;#ASMSTART12463; GFX942-NEXT:    ; def s[0:1]12464; GFX942-NEXT:    ;;#ASMEND12465; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s0, s012466; GFX942-NEXT:    s_mov_b32 s8, s112467; GFX942-NEXT:    ;;#ASMSTART12468; GFX942-NEXT:    ; use s[8:9]12469; GFX942-NEXT:    ;;#ASMEND12470; GFX942-NEXT:    s_setpc_b64 s[30:31]12471  %vec0 = call <4 x i16> asm "; def $0", "=s"()12472  %vec1 = call <4 x i16> asm "; def $0", "=s"()12473  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12474  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12475  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 poison, i32 4, i32 4>12476  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)12477  ret void12478}12479 12480define void @s_shuffle_v4i16_v3i16__5_0_4_4() {12481; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_0_4_4:12482; GFX900:       ; %bb.0:12483; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12484; GFX900-NEXT:    ;;#ASMSTART12485; GFX900-NEXT:    ; def s[4:5]12486; GFX900-NEXT:    ;;#ASMEND12487; GFX900-NEXT:    ;;#ASMSTART12488; GFX900-NEXT:    ; def s[6:7]12489; GFX900-NEXT:    ;;#ASMEND12490; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s412491; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s6, s612492; GFX900-NEXT:    ;;#ASMSTART12493; GFX900-NEXT:    ; use s[8:9]12494; GFX900-NEXT:    ;;#ASMEND12495; GFX900-NEXT:    s_setpc_b64 s[30:31]12496;12497; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_0_4_4:12498; GFX90A:       ; %bb.0:12499; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12500; GFX90A-NEXT:    ;;#ASMSTART12501; GFX90A-NEXT:    ; def s[4:5]12502; GFX90A-NEXT:    ;;#ASMEND12503; GFX90A-NEXT:    ;;#ASMSTART12504; GFX90A-NEXT:    ; def s[6:7]12505; GFX90A-NEXT:    ;;#ASMEND12506; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s412507; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s6, s612508; GFX90A-NEXT:    ;;#ASMSTART12509; GFX90A-NEXT:    ; use s[8:9]12510; GFX90A-NEXT:    ;;#ASMEND12511; GFX90A-NEXT:    s_setpc_b64 s[30:31]12512;12513; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_0_4_4:12514; GFX942:       ; %bb.0:12515; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12516; GFX942-NEXT:    ;;#ASMSTART12517; GFX942-NEXT:    ; def s[0:1]12518; GFX942-NEXT:    ;;#ASMEND12519; GFX942-NEXT:    ;;#ASMSTART12520; GFX942-NEXT:    ; def s[2:3]12521; GFX942-NEXT:    ;;#ASMEND12522; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s012523; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s2, s212524; GFX942-NEXT:    ;;#ASMSTART12525; GFX942-NEXT:    ; use s[8:9]12526; GFX942-NEXT:    ;;#ASMEND12527; GFX942-NEXT:    s_setpc_b64 s[30:31]12528  %vec0 = call <4 x i16> asm "; def $0", "=s"()12529  %vec1 = call <4 x i16> asm "; def $0", "=s"()12530  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12531  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12532  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 0, i32 4, i32 4>12533  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)12534  ret void12535}12536 12537define void @s_shuffle_v4i16_v3i16__5_1_4_4() {12538; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_1_4_4:12539; GFX900:       ; %bb.0:12540; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12541; GFX900-NEXT:    ;;#ASMSTART12542; GFX900-NEXT:    ; def s[4:5]12543; GFX900-NEXT:    ;;#ASMEND12544; GFX900-NEXT:    ;;#ASMSTART12545; GFX900-NEXT:    ; def s[6:7]12546; GFX900-NEXT:    ;;#ASMEND12547; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s7, s412548; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s6, s612549; GFX900-NEXT:    ;;#ASMSTART12550; GFX900-NEXT:    ; use s[8:9]12551; GFX900-NEXT:    ;;#ASMEND12552; GFX900-NEXT:    s_setpc_b64 s[30:31]12553;12554; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_1_4_4:12555; GFX90A:       ; %bb.0:12556; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12557; GFX90A-NEXT:    ;;#ASMSTART12558; GFX90A-NEXT:    ; def s[4:5]12559; GFX90A-NEXT:    ;;#ASMEND12560; GFX90A-NEXT:    ;;#ASMSTART12561; GFX90A-NEXT:    ; def s[6:7]12562; GFX90A-NEXT:    ;;#ASMEND12563; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s7, s412564; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s6, s612565; GFX90A-NEXT:    ;;#ASMSTART12566; GFX90A-NEXT:    ; use s[8:9]12567; GFX90A-NEXT:    ;;#ASMEND12568; GFX90A-NEXT:    s_setpc_b64 s[30:31]12569;12570; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_1_4_4:12571; GFX942:       ; %bb.0:12572; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12573; GFX942-NEXT:    ;;#ASMSTART12574; GFX942-NEXT:    ; def s[0:1]12575; GFX942-NEXT:    ;;#ASMEND12576; GFX942-NEXT:    ;;#ASMSTART12577; GFX942-NEXT:    ; def s[2:3]12578; GFX942-NEXT:    ;;#ASMEND12579; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s3, s012580; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s2, s212581; GFX942-NEXT:    ;;#ASMSTART12582; GFX942-NEXT:    ; use s[8:9]12583; GFX942-NEXT:    ;;#ASMEND12584; GFX942-NEXT:    s_setpc_b64 s[30:31]12585  %vec0 = call <4 x i16> asm "; def $0", "=s"()12586  %vec1 = call <4 x i16> asm "; def $0", "=s"()12587  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12588  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12589  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 1, i32 4, i32 4>12590  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)12591  ret void12592}12593 12594define void @s_shuffle_v4i16_v3i16__5_2_4_4() {12595; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_2_4_4:12596; GFX900:       ; %bb.0:12597; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12598; GFX900-NEXT:    ;;#ASMSTART12599; GFX900-NEXT:    ; def s[4:5]12600; GFX900-NEXT:    ;;#ASMEND12601; GFX900-NEXT:    ;;#ASMSTART12602; GFX900-NEXT:    ; def s[6:7]12603; GFX900-NEXT:    ;;#ASMEND12604; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s512605; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s6, s612606; GFX900-NEXT:    ;;#ASMSTART12607; GFX900-NEXT:    ; use s[8:9]12608; GFX900-NEXT:    ;;#ASMEND12609; GFX900-NEXT:    s_setpc_b64 s[30:31]12610;12611; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_2_4_4:12612; GFX90A:       ; %bb.0:12613; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12614; GFX90A-NEXT:    ;;#ASMSTART12615; GFX90A-NEXT:    ; def s[4:5]12616; GFX90A-NEXT:    ;;#ASMEND12617; GFX90A-NEXT:    ;;#ASMSTART12618; GFX90A-NEXT:    ; def s[6:7]12619; GFX90A-NEXT:    ;;#ASMEND12620; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s512621; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s6, s612622; GFX90A-NEXT:    ;;#ASMSTART12623; GFX90A-NEXT:    ; use s[8:9]12624; GFX90A-NEXT:    ;;#ASMEND12625; GFX90A-NEXT:    s_setpc_b64 s[30:31]12626;12627; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_2_4_4:12628; GFX942:       ; %bb.0:12629; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12630; GFX942-NEXT:    ;;#ASMSTART12631; GFX942-NEXT:    ; def s[0:1]12632; GFX942-NEXT:    ;;#ASMEND12633; GFX942-NEXT:    ;;#ASMSTART12634; GFX942-NEXT:    ; def s[2:3]12635; GFX942-NEXT:    ;;#ASMEND12636; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s112637; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s2, s212638; GFX942-NEXT:    ;;#ASMSTART12639; GFX942-NEXT:    ; use s[8:9]12640; GFX942-NEXT:    ;;#ASMEND12641; GFX942-NEXT:    s_setpc_b64 s[30:31]12642  %vec0 = call <4 x i16> asm "; def $0", "=s"()12643  %vec1 = call <4 x i16> asm "; def $0", "=s"()12644  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12645  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12646  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 2, i32 4, i32 4>12647  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)12648  ret void12649}12650 12651define void @s_shuffle_v4i16_v3i16__5_3_4_4() {12652; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_3_4_4:12653; GFX900:       ; %bb.0:12654; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12655; GFX900-NEXT:    ;;#ASMSTART12656; GFX900-NEXT:    ; def s[4:5]12657; GFX900-NEXT:    ;;#ASMEND12658; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s412659; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s4, s412660; GFX900-NEXT:    ;;#ASMSTART12661; GFX900-NEXT:    ; use s[8:9]12662; GFX900-NEXT:    ;;#ASMEND12663; GFX900-NEXT:    s_setpc_b64 s[30:31]12664;12665; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_3_4_4:12666; GFX90A:       ; %bb.0:12667; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12668; GFX90A-NEXT:    ;;#ASMSTART12669; GFX90A-NEXT:    ; def s[4:5]12670; GFX90A-NEXT:    ;;#ASMEND12671; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s412672; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s4, s412673; GFX90A-NEXT:    ;;#ASMSTART12674; GFX90A-NEXT:    ; use s[8:9]12675; GFX90A-NEXT:    ;;#ASMEND12676; GFX90A-NEXT:    s_setpc_b64 s[30:31]12677;12678; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_3_4_4:12679; GFX942:       ; %bb.0:12680; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12681; GFX942-NEXT:    ;;#ASMSTART12682; GFX942-NEXT:    ; def s[0:1]12683; GFX942-NEXT:    ;;#ASMEND12684; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s012685; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s0, s012686; GFX942-NEXT:    ;;#ASMSTART12687; GFX942-NEXT:    ; use s[8:9]12688; GFX942-NEXT:    ;;#ASMEND12689; GFX942-NEXT:    s_setpc_b64 s[30:31]12690  %vec0 = call <4 x i16> asm "; def $0", "=s"()12691  %vec1 = call <4 x i16> asm "; def $0", "=s"()12692  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12693  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12694  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 3, i32 4, i32 4>12695  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)12696  ret void12697}12698 12699define void @s_shuffle_v4i16_v3i16__5_5_4_4() {12700; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_4_4:12701; GFX900:       ; %bb.0:12702; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12703; GFX900-NEXT:    ;;#ASMSTART12704; GFX900-NEXT:    ; def s[4:5]12705; GFX900-NEXT:    ;;#ASMEND12706; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s4, s412707; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s512708; GFX900-NEXT:    ;;#ASMSTART12709; GFX900-NEXT:    ; use s[8:9]12710; GFX900-NEXT:    ;;#ASMEND12711; GFX900-NEXT:    s_setpc_b64 s[30:31]12712;12713; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_4_4:12714; GFX90A:       ; %bb.0:12715; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12716; GFX90A-NEXT:    ;;#ASMSTART12717; GFX90A-NEXT:    ; def s[4:5]12718; GFX90A-NEXT:    ;;#ASMEND12719; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s4, s412720; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s512721; GFX90A-NEXT:    ;;#ASMSTART12722; GFX90A-NEXT:    ; use s[8:9]12723; GFX90A-NEXT:    ;;#ASMEND12724; GFX90A-NEXT:    s_setpc_b64 s[30:31]12725;12726; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_4_4:12727; GFX942:       ; %bb.0:12728; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12729; GFX942-NEXT:    ;;#ASMSTART12730; GFX942-NEXT:    ; def s[0:1]12731; GFX942-NEXT:    ;;#ASMEND12732; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s0, s012733; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s112734; GFX942-NEXT:    ;;#ASMSTART12735; GFX942-NEXT:    ; use s[8:9]12736; GFX942-NEXT:    ;;#ASMEND12737; GFX942-NEXT:    s_setpc_b64 s[30:31]12738  %vec0 = call <4 x i16> asm "; def $0", "=s"()12739  %vec1 = call <4 x i16> asm "; def $0", "=s"()12740  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12741  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12742  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 4, i32 4>12743  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)12744  ret void12745}12746 12747define void @s_shuffle_v4i16_v3i16__5_5_u_4() {12748; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_u_4:12749; GFX900:       ; %bb.0:12750; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12751; GFX900-NEXT:    ;;#ASMSTART12752; GFX900-NEXT:    ; def s[4:5]12753; GFX900-NEXT:    ;;#ASMEND12754; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s512755; GFX900-NEXT:    s_mov_b32 s9, s412756; GFX900-NEXT:    ;;#ASMSTART12757; GFX900-NEXT:    ; use s[8:9]12758; GFX900-NEXT:    ;;#ASMEND12759; GFX900-NEXT:    s_setpc_b64 s[30:31]12760;12761; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_u_4:12762; GFX90A:       ; %bb.0:12763; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12764; GFX90A-NEXT:    ;;#ASMSTART12765; GFX90A-NEXT:    ; def s[4:5]12766; GFX90A-NEXT:    ;;#ASMEND12767; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s512768; GFX90A-NEXT:    s_mov_b32 s9, s412769; GFX90A-NEXT:    ;;#ASMSTART12770; GFX90A-NEXT:    ; use s[8:9]12771; GFX90A-NEXT:    ;;#ASMEND12772; GFX90A-NEXT:    s_setpc_b64 s[30:31]12773;12774; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_u_4:12775; GFX942:       ; %bb.0:12776; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12777; GFX942-NEXT:    ;;#ASMSTART12778; GFX942-NEXT:    ; def s[0:1]12779; GFX942-NEXT:    ;;#ASMEND12780; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s112781; GFX942-NEXT:    s_mov_b32 s9, s012782; GFX942-NEXT:    ;;#ASMSTART12783; GFX942-NEXT:    ; use s[8:9]12784; GFX942-NEXT:    ;;#ASMEND12785; GFX942-NEXT:    s_setpc_b64 s[30:31]12786  %vec0 = call <4 x i16> asm "; def $0", "=s"()12787  %vec1 = call <4 x i16> asm "; def $0", "=s"()12788  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12789  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12790  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 poison, i32 4>12791  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)12792  ret void12793}12794 12795define void @s_shuffle_v4i16_v3i16__5_5_0_4() {12796; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_0_4:12797; GFX900:       ; %bb.0:12798; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12799; GFX900-NEXT:    ;;#ASMSTART12800; GFX900-NEXT:    ; def s[4:5]12801; GFX900-NEXT:    ;;#ASMEND12802; GFX900-NEXT:    ;;#ASMSTART12803; GFX900-NEXT:    ; def s[6:7]12804; GFX900-NEXT:    ;;#ASMEND12805; GFX900-NEXT:    s_pack_lh_b32_b16 s9, s4, s612806; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s712807; GFX900-NEXT:    ;;#ASMSTART12808; GFX900-NEXT:    ; use s[8:9]12809; GFX900-NEXT:    ;;#ASMEND12810; GFX900-NEXT:    s_setpc_b64 s[30:31]12811;12812; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_0_4:12813; GFX90A:       ; %bb.0:12814; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12815; GFX90A-NEXT:    ;;#ASMSTART12816; GFX90A-NEXT:    ; def s[4:5]12817; GFX90A-NEXT:    ;;#ASMEND12818; GFX90A-NEXT:    ;;#ASMSTART12819; GFX90A-NEXT:    ; def s[6:7]12820; GFX90A-NEXT:    ;;#ASMEND12821; GFX90A-NEXT:    s_pack_lh_b32_b16 s9, s4, s612822; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s712823; GFX90A-NEXT:    ;;#ASMSTART12824; GFX90A-NEXT:    ; use s[8:9]12825; GFX90A-NEXT:    ;;#ASMEND12826; GFX90A-NEXT:    s_setpc_b64 s[30:31]12827;12828; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_0_4:12829; GFX942:       ; %bb.0:12830; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12831; GFX942-NEXT:    ;;#ASMSTART12832; GFX942-NEXT:    ; def s[0:1]12833; GFX942-NEXT:    ;;#ASMEND12834; GFX942-NEXT:    ;;#ASMSTART12835; GFX942-NEXT:    ; def s[2:3]12836; GFX942-NEXT:    ;;#ASMEND12837; GFX942-NEXT:    s_pack_lh_b32_b16 s9, s0, s212838; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s312839; GFX942-NEXT:    ;;#ASMSTART12840; GFX942-NEXT:    ; use s[8:9]12841; GFX942-NEXT:    ;;#ASMEND12842; GFX942-NEXT:    s_setpc_b64 s[30:31]12843  %vec0 = call <4 x i16> asm "; def $0", "=s"()12844  %vec1 = call <4 x i16> asm "; def $0", "=s"()12845  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12846  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12847  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 0, i32 4>12848  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)12849  ret void12850}12851 12852define void @s_shuffle_v4i16_v3i16__5_5_1_4() {12853; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_1_4:12854; GFX900:       ; %bb.0:12855; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12856; GFX900-NEXT:    ;;#ASMSTART12857; GFX900-NEXT:    ; def s[4:5]12858; GFX900-NEXT:    ;;#ASMEND12859; GFX900-NEXT:    ;;#ASMSTART12860; GFX900-NEXT:    ; def s[6:7]12861; GFX900-NEXT:    ;;#ASMEND12862; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s4, s612863; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s712864; GFX900-NEXT:    ;;#ASMSTART12865; GFX900-NEXT:    ; use s[8:9]12866; GFX900-NEXT:    ;;#ASMEND12867; GFX900-NEXT:    s_setpc_b64 s[30:31]12868;12869; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_1_4:12870; GFX90A:       ; %bb.0:12871; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12872; GFX90A-NEXT:    ;;#ASMSTART12873; GFX90A-NEXT:    ; def s[4:5]12874; GFX90A-NEXT:    ;;#ASMEND12875; GFX90A-NEXT:    ;;#ASMSTART12876; GFX90A-NEXT:    ; def s[6:7]12877; GFX90A-NEXT:    ;;#ASMEND12878; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s4, s612879; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s712880; GFX90A-NEXT:    ;;#ASMSTART12881; GFX90A-NEXT:    ; use s[8:9]12882; GFX90A-NEXT:    ;;#ASMEND12883; GFX90A-NEXT:    s_setpc_b64 s[30:31]12884;12885; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_1_4:12886; GFX942:       ; %bb.0:12887; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12888; GFX942-NEXT:    ;;#ASMSTART12889; GFX942-NEXT:    ; def s[0:1]12890; GFX942-NEXT:    ;;#ASMEND12891; GFX942-NEXT:    ;;#ASMSTART12892; GFX942-NEXT:    ; def s[2:3]12893; GFX942-NEXT:    ;;#ASMEND12894; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s0, s212895; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s312896; GFX942-NEXT:    ;;#ASMSTART12897; GFX942-NEXT:    ; use s[8:9]12898; GFX942-NEXT:    ;;#ASMEND12899; GFX942-NEXT:    s_setpc_b64 s[30:31]12900  %vec0 = call <4 x i16> asm "; def $0", "=s"()12901  %vec1 = call <4 x i16> asm "; def $0", "=s"()12902  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12903  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12904  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 1, i32 4>12905  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)12906  ret void12907}12908 12909define void @s_shuffle_v4i16_v3i16__5_5_2_4() {12910; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_2_4:12911; GFX900:       ; %bb.0:12912; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12913; GFX900-NEXT:    ;;#ASMSTART12914; GFX900-NEXT:    ; def s[4:5]12915; GFX900-NEXT:    ;;#ASMEND12916; GFX900-NEXT:    ;;#ASMSTART12917; GFX900-NEXT:    ; def s[6:7]12918; GFX900-NEXT:    ;;#ASMEND12919; GFX900-NEXT:    s_pack_lh_b32_b16 s9, s5, s612920; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s712921; GFX900-NEXT:    ;;#ASMSTART12922; GFX900-NEXT:    ; use s[8:9]12923; GFX900-NEXT:    ;;#ASMEND12924; GFX900-NEXT:    s_setpc_b64 s[30:31]12925;12926; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_2_4:12927; GFX90A:       ; %bb.0:12928; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12929; GFX90A-NEXT:    ;;#ASMSTART12930; GFX90A-NEXT:    ; def s[4:5]12931; GFX90A-NEXT:    ;;#ASMEND12932; GFX90A-NEXT:    ;;#ASMSTART12933; GFX90A-NEXT:    ; def s[6:7]12934; GFX90A-NEXT:    ;;#ASMEND12935; GFX90A-NEXT:    s_pack_lh_b32_b16 s9, s5, s612936; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s712937; GFX90A-NEXT:    ;;#ASMSTART12938; GFX90A-NEXT:    ; use s[8:9]12939; GFX90A-NEXT:    ;;#ASMEND12940; GFX90A-NEXT:    s_setpc_b64 s[30:31]12941;12942; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_2_4:12943; GFX942:       ; %bb.0:12944; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12945; GFX942-NEXT:    ;;#ASMSTART12946; GFX942-NEXT:    ; def s[0:1]12947; GFX942-NEXT:    ;;#ASMEND12948; GFX942-NEXT:    ;;#ASMSTART12949; GFX942-NEXT:    ; def s[2:3]12950; GFX942-NEXT:    ;;#ASMEND12951; GFX942-NEXT:    s_pack_lh_b32_b16 s9, s1, s212952; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s312953; GFX942-NEXT:    ;;#ASMSTART12954; GFX942-NEXT:    ; use s[8:9]12955; GFX942-NEXT:    ;;#ASMEND12956; GFX942-NEXT:    s_setpc_b64 s[30:31]12957  %vec0 = call <4 x i16> asm "; def $0", "=s"()12958  %vec1 = call <4 x i16> asm "; def $0", "=s"()12959  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12960  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>12961  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 2, i32 4>12962  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)12963  ret void12964}12965 12966define void @s_shuffle_v4i16_v3i16__5_5_3_4() {12967; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_3_4:12968; GFX900:       ; %bb.0:12969; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12970; GFX900-NEXT:    ;;#ASMSTART12971; GFX900-NEXT:    ; def s[4:5]12972; GFX900-NEXT:    ;;#ASMEND12973; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s512974; GFX900-NEXT:    s_mov_b32 s9, s412975; GFX900-NEXT:    ;;#ASMSTART12976; GFX900-NEXT:    ; use s[8:9]12977; GFX900-NEXT:    ;;#ASMEND12978; GFX900-NEXT:    s_setpc_b64 s[30:31]12979;12980; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_3_4:12981; GFX90A:       ; %bb.0:12982; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12983; GFX90A-NEXT:    ;;#ASMSTART12984; GFX90A-NEXT:    ; def s[4:5]12985; GFX90A-NEXT:    ;;#ASMEND12986; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s512987; GFX90A-NEXT:    s_mov_b32 s9, s412988; GFX90A-NEXT:    ;;#ASMSTART12989; GFX90A-NEXT:    ; use s[8:9]12990; GFX90A-NEXT:    ;;#ASMEND12991; GFX90A-NEXT:    s_setpc_b64 s[30:31]12992;12993; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_3_4:12994; GFX942:       ; %bb.0:12995; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12996; GFX942-NEXT:    ;;#ASMSTART12997; GFX942-NEXT:    ; def s[0:1]12998; GFX942-NEXT:    ;;#ASMEND12999; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s113000; GFX942-NEXT:    s_mov_b32 s9, s013001; GFX942-NEXT:    ;;#ASMSTART13002; GFX942-NEXT:    ; use s[8:9]13003; GFX942-NEXT:    ;;#ASMEND13004; GFX942-NEXT:    s_setpc_b64 s[30:31]13005  %vec0 = call <4 x i16> asm "; def $0", "=s"()13006  %vec1 = call <4 x i16> asm "; def $0", "=s"()13007  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13008  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13009  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 3, i32 4>13010  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)13011  ret void13012}13013 13014define void @s_shuffle_v4i16_v3i16__u_5_5_5() {13015; GFX900-LABEL: s_shuffle_v4i16_v3i16__u_5_5_5:13016; GFX900:       ; %bb.0:13017; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13018; GFX900-NEXT:    ;;#ASMSTART13019; GFX900-NEXT:    ; def s[4:5]13020; GFX900-NEXT:    ;;#ASMEND13021; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s5, s513022; GFX900-NEXT:    s_lshl_b32 s8, s5, 1613023; GFX900-NEXT:    ;;#ASMSTART13024; GFX900-NEXT:    ; use s[8:9]13025; GFX900-NEXT:    ;;#ASMEND13026; GFX900-NEXT:    s_setpc_b64 s[30:31]13027;13028; GFX90A-LABEL: s_shuffle_v4i16_v3i16__u_5_5_5:13029; GFX90A:       ; %bb.0:13030; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13031; GFX90A-NEXT:    ;;#ASMSTART13032; GFX90A-NEXT:    ; def s[4:5]13033; GFX90A-NEXT:    ;;#ASMEND13034; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s5, s513035; GFX90A-NEXT:    s_lshl_b32 s8, s5, 1613036; GFX90A-NEXT:    ;;#ASMSTART13037; GFX90A-NEXT:    ; use s[8:9]13038; GFX90A-NEXT:    ;;#ASMEND13039; GFX90A-NEXT:    s_setpc_b64 s[30:31]13040;13041; GFX942-LABEL: s_shuffle_v4i16_v3i16__u_5_5_5:13042; GFX942:       ; %bb.0:13043; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13044; GFX942-NEXT:    ;;#ASMSTART13045; GFX942-NEXT:    ; def s[0:1]13046; GFX942-NEXT:    ;;#ASMEND13047; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s1, s113048; GFX942-NEXT:    s_lshl_b32 s8, s1, 1613049; GFX942-NEXT:    ;;#ASMSTART13050; GFX942-NEXT:    ; use s[8:9]13051; GFX942-NEXT:    ;;#ASMEND13052; GFX942-NEXT:    s_setpc_b64 s[30:31]13053  %vec0 = call <4 x i16> asm "; def $0", "=s"()13054  %vec1 = call <4 x i16> asm "; def $0", "=s"()13055  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13056  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13057  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 poison, i32 5, i32 5, i32 5>13058  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)13059  ret void13060}13061 13062define void @s_shuffle_v4i16_v3i16__0_5_5_5() {13063; GFX900-LABEL: s_shuffle_v4i16_v3i16__0_5_5_5:13064; GFX900:       ; %bb.0:13065; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13066; GFX900-NEXT:    ;;#ASMSTART13067; GFX900-NEXT:    ; def s[4:5]13068; GFX900-NEXT:    ;;#ASMEND13069; GFX900-NEXT:    ;;#ASMSTART13070; GFX900-NEXT:    ; def s[6:7]13071; GFX900-NEXT:    ;;#ASMEND13072; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s713073; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s7, s713074; GFX900-NEXT:    ;;#ASMSTART13075; GFX900-NEXT:    ; use s[8:9]13076; GFX900-NEXT:    ;;#ASMEND13077; GFX900-NEXT:    s_setpc_b64 s[30:31]13078;13079; GFX90A-LABEL: s_shuffle_v4i16_v3i16__0_5_5_5:13080; GFX90A:       ; %bb.0:13081; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13082; GFX90A-NEXT:    ;;#ASMSTART13083; GFX90A-NEXT:    ; def s[4:5]13084; GFX90A-NEXT:    ;;#ASMEND13085; GFX90A-NEXT:    ;;#ASMSTART13086; GFX90A-NEXT:    ; def s[6:7]13087; GFX90A-NEXT:    ;;#ASMEND13088; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s713089; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s7, s713090; GFX90A-NEXT:    ;;#ASMSTART13091; GFX90A-NEXT:    ; use s[8:9]13092; GFX90A-NEXT:    ;;#ASMEND13093; GFX90A-NEXT:    s_setpc_b64 s[30:31]13094;13095; GFX942-LABEL: s_shuffle_v4i16_v3i16__0_5_5_5:13096; GFX942:       ; %bb.0:13097; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13098; GFX942-NEXT:    ;;#ASMSTART13099; GFX942-NEXT:    ; def s[0:1]13100; GFX942-NEXT:    ;;#ASMEND13101; GFX942-NEXT:    ;;#ASMSTART13102; GFX942-NEXT:    ; def s[2:3]13103; GFX942-NEXT:    ;;#ASMEND13104; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s313105; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s3, s313106; GFX942-NEXT:    ;;#ASMSTART13107; GFX942-NEXT:    ; use s[8:9]13108; GFX942-NEXT:    ;;#ASMEND13109; GFX942-NEXT:    s_setpc_b64 s[30:31]13110  %vec0 = call <4 x i16> asm "; def $0", "=s"()13111  %vec1 = call <4 x i16> asm "; def $0", "=s"()13112  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13113  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13114  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 0, i32 5, i32 5, i32 5>13115  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)13116  ret void13117}13118 13119define void @s_shuffle_v4i16_v3i16__1_5_5_5() {13120; GFX900-LABEL: s_shuffle_v4i16_v3i16__1_5_5_5:13121; GFX900:       ; %bb.0:13122; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13123; GFX900-NEXT:    ;;#ASMSTART13124; GFX900-NEXT:    ; def s[4:5]13125; GFX900-NEXT:    ;;#ASMEND13126; GFX900-NEXT:    s_lshr_b32 s4, s4, 1613127; GFX900-NEXT:    ;;#ASMSTART13128; GFX900-NEXT:    ; def s[6:7]13129; GFX900-NEXT:    ;;#ASMEND13130; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s713131; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s7, s713132; GFX900-NEXT:    ;;#ASMSTART13133; GFX900-NEXT:    ; use s[8:9]13134; GFX900-NEXT:    ;;#ASMEND13135; GFX900-NEXT:    s_setpc_b64 s[30:31]13136;13137; GFX90A-LABEL: s_shuffle_v4i16_v3i16__1_5_5_5:13138; GFX90A:       ; %bb.0:13139; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13140; GFX90A-NEXT:    ;;#ASMSTART13141; GFX90A-NEXT:    ; def s[4:5]13142; GFX90A-NEXT:    ;;#ASMEND13143; GFX90A-NEXT:    s_lshr_b32 s4, s4, 1613144; GFX90A-NEXT:    ;;#ASMSTART13145; GFX90A-NEXT:    ; def s[6:7]13146; GFX90A-NEXT:    ;;#ASMEND13147; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s713148; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s7, s713149; GFX90A-NEXT:    ;;#ASMSTART13150; GFX90A-NEXT:    ; use s[8:9]13151; GFX90A-NEXT:    ;;#ASMEND13152; GFX90A-NEXT:    s_setpc_b64 s[30:31]13153;13154; GFX942-LABEL: s_shuffle_v4i16_v3i16__1_5_5_5:13155; GFX942:       ; %bb.0:13156; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13157; GFX942-NEXT:    ;;#ASMSTART13158; GFX942-NEXT:    ; def s[0:1]13159; GFX942-NEXT:    ;;#ASMEND13160; GFX942-NEXT:    s_lshr_b32 s0, s0, 1613161; GFX942-NEXT:    ;;#ASMSTART13162; GFX942-NEXT:    ; def s[2:3]13163; GFX942-NEXT:    ;;#ASMEND13164; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s313165; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s3, s313166; GFX942-NEXT:    ;;#ASMSTART13167; GFX942-NEXT:    ; use s[8:9]13168; GFX942-NEXT:    ;;#ASMEND13169; GFX942-NEXT:    s_setpc_b64 s[30:31]13170  %vec0 = call <4 x i16> asm "; def $0", "=s"()13171  %vec1 = call <4 x i16> asm "; def $0", "=s"()13172  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13173  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13174  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 1, i32 5, i32 5, i32 5>13175  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)13176  ret void13177}13178 13179define void @s_shuffle_v4i16_v3i16__2_5_5_5() {13180; GFX900-LABEL: s_shuffle_v4i16_v3i16__2_5_5_5:13181; GFX900:       ; %bb.0:13182; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13183; GFX900-NEXT:    ;;#ASMSTART13184; GFX900-NEXT:    ; def s[4:5]13185; GFX900-NEXT:    ;;#ASMEND13186; GFX900-NEXT:    ;;#ASMSTART13187; GFX900-NEXT:    ; def s[6:7]13188; GFX900-NEXT:    ;;#ASMEND13189; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s713190; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s7, s713191; GFX900-NEXT:    ;;#ASMSTART13192; GFX900-NEXT:    ; use s[8:9]13193; GFX900-NEXT:    ;;#ASMEND13194; GFX900-NEXT:    s_setpc_b64 s[30:31]13195;13196; GFX90A-LABEL: s_shuffle_v4i16_v3i16__2_5_5_5:13197; GFX90A:       ; %bb.0:13198; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13199; GFX90A-NEXT:    ;;#ASMSTART13200; GFX90A-NEXT:    ; def s[4:5]13201; GFX90A-NEXT:    ;;#ASMEND13202; GFX90A-NEXT:    ;;#ASMSTART13203; GFX90A-NEXT:    ; def s[6:7]13204; GFX90A-NEXT:    ;;#ASMEND13205; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s713206; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s7, s713207; GFX90A-NEXT:    ;;#ASMSTART13208; GFX90A-NEXT:    ; use s[8:9]13209; GFX90A-NEXT:    ;;#ASMEND13210; GFX90A-NEXT:    s_setpc_b64 s[30:31]13211;13212; GFX942-LABEL: s_shuffle_v4i16_v3i16__2_5_5_5:13213; GFX942:       ; %bb.0:13214; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13215; GFX942-NEXT:    ;;#ASMSTART13216; GFX942-NEXT:    ; def s[0:1]13217; GFX942-NEXT:    ;;#ASMEND13218; GFX942-NEXT:    ;;#ASMSTART13219; GFX942-NEXT:    ; def s[2:3]13220; GFX942-NEXT:    ;;#ASMEND13221; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s313222; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s3, s313223; GFX942-NEXT:    ;;#ASMSTART13224; GFX942-NEXT:    ; use s[8:9]13225; GFX942-NEXT:    ;;#ASMEND13226; GFX942-NEXT:    s_setpc_b64 s[30:31]13227  %vec0 = call <4 x i16> asm "; def $0", "=s"()13228  %vec1 = call <4 x i16> asm "; def $0", "=s"()13229  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13230  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13231  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 2, i32 5, i32 5, i32 5>13232  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)13233  ret void13234}13235 13236define void @s_shuffle_v4i16_v3i16__3_5_5_5() {13237; GFX900-LABEL: s_shuffle_v4i16_v3i16__3_5_5_5:13238; GFX900:       ; %bb.0:13239; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13240; GFX900-NEXT:    ;;#ASMSTART13241; GFX900-NEXT:    ; def s[4:5]13242; GFX900-NEXT:    ;;#ASMEND13243; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s513244; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s5, s513245; GFX900-NEXT:    ;;#ASMSTART13246; GFX900-NEXT:    ; use s[8:9]13247; GFX900-NEXT:    ;;#ASMEND13248; GFX900-NEXT:    s_setpc_b64 s[30:31]13249;13250; GFX90A-LABEL: s_shuffle_v4i16_v3i16__3_5_5_5:13251; GFX90A:       ; %bb.0:13252; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13253; GFX90A-NEXT:    ;;#ASMSTART13254; GFX90A-NEXT:    ; def s[4:5]13255; GFX90A-NEXT:    ;;#ASMEND13256; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s513257; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s5, s513258; GFX90A-NEXT:    ;;#ASMSTART13259; GFX90A-NEXT:    ; use s[8:9]13260; GFX90A-NEXT:    ;;#ASMEND13261; GFX90A-NEXT:    s_setpc_b64 s[30:31]13262;13263; GFX942-LABEL: s_shuffle_v4i16_v3i16__3_5_5_5:13264; GFX942:       ; %bb.0:13265; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13266; GFX942-NEXT:    ;;#ASMSTART13267; GFX942-NEXT:    ; def s[0:1]13268; GFX942-NEXT:    ;;#ASMEND13269; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s113270; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s1, s113271; GFX942-NEXT:    ;;#ASMSTART13272; GFX942-NEXT:    ; use s[8:9]13273; GFX942-NEXT:    ;;#ASMEND13274; GFX942-NEXT:    s_setpc_b64 s[30:31]13275  %vec0 = call <4 x i16> asm "; def $0", "=s"()13276  %vec1 = call <4 x i16> asm "; def $0", "=s"()13277  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13278  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13279  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 3, i32 5, i32 5, i32 5>13280  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)13281  ret void13282}13283 13284define void @s_shuffle_v4i16_v3i16__4_5_5_5() {13285; GFX900-LABEL: s_shuffle_v4i16_v3i16__4_5_5_5:13286; GFX900:       ; %bb.0:13287; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13288; GFX900-NEXT:    ;;#ASMSTART13289; GFX900-NEXT:    ; def s[4:5]13290; GFX900-NEXT:    ;;#ASMEND13291; GFX900-NEXT:    s_lshr_b32 s4, s4, 1613292; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s513293; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s5, s513294; GFX900-NEXT:    ;;#ASMSTART13295; GFX900-NEXT:    ; use s[8:9]13296; GFX900-NEXT:    ;;#ASMEND13297; GFX900-NEXT:    s_setpc_b64 s[30:31]13298;13299; GFX90A-LABEL: s_shuffle_v4i16_v3i16__4_5_5_5:13300; GFX90A:       ; %bb.0:13301; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13302; GFX90A-NEXT:    ;;#ASMSTART13303; GFX90A-NEXT:    ; def s[4:5]13304; GFX90A-NEXT:    ;;#ASMEND13305; GFX90A-NEXT:    s_lshr_b32 s4, s4, 1613306; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s513307; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s5, s513308; GFX90A-NEXT:    ;;#ASMSTART13309; GFX90A-NEXT:    ; use s[8:9]13310; GFX90A-NEXT:    ;;#ASMEND13311; GFX90A-NEXT:    s_setpc_b64 s[30:31]13312;13313; GFX942-LABEL: s_shuffle_v4i16_v3i16__4_5_5_5:13314; GFX942:       ; %bb.0:13315; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13316; GFX942-NEXT:    ;;#ASMSTART13317; GFX942-NEXT:    ; def s[0:1]13318; GFX942-NEXT:    ;;#ASMEND13319; GFX942-NEXT:    s_lshr_b32 s0, s0, 1613320; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s113321; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s1, s113322; GFX942-NEXT:    ;;#ASMSTART13323; GFX942-NEXT:    ; use s[8:9]13324; GFX942-NEXT:    ;;#ASMEND13325; GFX942-NEXT:    s_setpc_b64 s[30:31]13326  %vec0 = call <4 x i16> asm "; def $0", "=s"()13327  %vec1 = call <4 x i16> asm "; def $0", "=s"()13328  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13329  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13330  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 4, i32 5, i32 5, i32 5>13331  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)13332  ret void13333}13334 13335define void @s_shuffle_v4i16_v3i16__5_u_5_5() {13336; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_u_5_5:13337; GFX900:       ; %bb.0:13338; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13339; GFX900-NEXT:    ;;#ASMSTART13340; GFX900-NEXT:    ; def s[4:5]13341; GFX900-NEXT:    ;;#ASMEND13342; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s5, s513343; GFX900-NEXT:    s_mov_b32 s8, s513344; GFX900-NEXT:    ;;#ASMSTART13345; GFX900-NEXT:    ; use s[8:9]13346; GFX900-NEXT:    ;;#ASMEND13347; GFX900-NEXT:    s_setpc_b64 s[30:31]13348;13349; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_u_5_5:13350; GFX90A:       ; %bb.0:13351; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13352; GFX90A-NEXT:    ;;#ASMSTART13353; GFX90A-NEXT:    ; def s[4:5]13354; GFX90A-NEXT:    ;;#ASMEND13355; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s5, s513356; GFX90A-NEXT:    s_mov_b32 s8, s513357; GFX90A-NEXT:    ;;#ASMSTART13358; GFX90A-NEXT:    ; use s[8:9]13359; GFX90A-NEXT:    ;;#ASMEND13360; GFX90A-NEXT:    s_setpc_b64 s[30:31]13361;13362; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_u_5_5:13363; GFX942:       ; %bb.0:13364; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13365; GFX942-NEXT:    ;;#ASMSTART13366; GFX942-NEXT:    ; def s[0:1]13367; GFX942-NEXT:    ;;#ASMEND13368; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s1, s113369; GFX942-NEXT:    s_mov_b32 s8, s113370; GFX942-NEXT:    ;;#ASMSTART13371; GFX942-NEXT:    ; use s[8:9]13372; GFX942-NEXT:    ;;#ASMEND13373; GFX942-NEXT:    s_setpc_b64 s[30:31]13374  %vec0 = call <4 x i16> asm "; def $0", "=s"()13375  %vec1 = call <4 x i16> asm "; def $0", "=s"()13376  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13377  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13378  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 poison, i32 5, i32 5>13379  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)13380  ret void13381}13382 13383define void @s_shuffle_v4i16_v3i16__5_0_5_5() {13384; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_0_5_5:13385; GFX900:       ; %bb.0:13386; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13387; GFX900-NEXT:    ;;#ASMSTART13388; GFX900-NEXT:    ; def s[4:5]13389; GFX900-NEXT:    ;;#ASMEND13390; GFX900-NEXT:    ;;#ASMSTART13391; GFX900-NEXT:    ; def s[6:7]13392; GFX900-NEXT:    ;;#ASMEND13393; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s413394; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s7, s713395; GFX900-NEXT:    ;;#ASMSTART13396; GFX900-NEXT:    ; use s[8:9]13397; GFX900-NEXT:    ;;#ASMEND13398; GFX900-NEXT:    s_setpc_b64 s[30:31]13399;13400; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_0_5_5:13401; GFX90A:       ; %bb.0:13402; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13403; GFX90A-NEXT:    ;;#ASMSTART13404; GFX90A-NEXT:    ; def s[4:5]13405; GFX90A-NEXT:    ;;#ASMEND13406; GFX90A-NEXT:    ;;#ASMSTART13407; GFX90A-NEXT:    ; def s[6:7]13408; GFX90A-NEXT:    ;;#ASMEND13409; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s413410; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s7, s713411; GFX90A-NEXT:    ;;#ASMSTART13412; GFX90A-NEXT:    ; use s[8:9]13413; GFX90A-NEXT:    ;;#ASMEND13414; GFX90A-NEXT:    s_setpc_b64 s[30:31]13415;13416; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_0_5_5:13417; GFX942:       ; %bb.0:13418; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13419; GFX942-NEXT:    ;;#ASMSTART13420; GFX942-NEXT:    ; def s[0:1]13421; GFX942-NEXT:    ;;#ASMEND13422; GFX942-NEXT:    ;;#ASMSTART13423; GFX942-NEXT:    ; def s[2:3]13424; GFX942-NEXT:    ;;#ASMEND13425; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s013426; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s3, s313427; GFX942-NEXT:    ;;#ASMSTART13428; GFX942-NEXT:    ; use s[8:9]13429; GFX942-NEXT:    ;;#ASMEND13430; GFX942-NEXT:    s_setpc_b64 s[30:31]13431  %vec0 = call <4 x i16> asm "; def $0", "=s"()13432  %vec1 = call <4 x i16> asm "; def $0", "=s"()13433  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13434  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13435  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 0, i32 5, i32 5>13436  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)13437  ret void13438}13439 13440define void @s_shuffle_v4i16_v3i16__5_1_5_5() {13441; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_1_5_5:13442; GFX900:       ; %bb.0:13443; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13444; GFX900-NEXT:    ;;#ASMSTART13445; GFX900-NEXT:    ; def s[4:5]13446; GFX900-NEXT:    ;;#ASMEND13447; GFX900-NEXT:    ;;#ASMSTART13448; GFX900-NEXT:    ; def s[6:7]13449; GFX900-NEXT:    ;;#ASMEND13450; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s7, s413451; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s7, s713452; GFX900-NEXT:    ;;#ASMSTART13453; GFX900-NEXT:    ; use s[8:9]13454; GFX900-NEXT:    ;;#ASMEND13455; GFX900-NEXT:    s_setpc_b64 s[30:31]13456;13457; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_1_5_5:13458; GFX90A:       ; %bb.0:13459; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13460; GFX90A-NEXT:    ;;#ASMSTART13461; GFX90A-NEXT:    ; def s[4:5]13462; GFX90A-NEXT:    ;;#ASMEND13463; GFX90A-NEXT:    ;;#ASMSTART13464; GFX90A-NEXT:    ; def s[6:7]13465; GFX90A-NEXT:    ;;#ASMEND13466; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s7, s413467; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s7, s713468; GFX90A-NEXT:    ;;#ASMSTART13469; GFX90A-NEXT:    ; use s[8:9]13470; GFX90A-NEXT:    ;;#ASMEND13471; GFX90A-NEXT:    s_setpc_b64 s[30:31]13472;13473; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_1_5_5:13474; GFX942:       ; %bb.0:13475; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13476; GFX942-NEXT:    ;;#ASMSTART13477; GFX942-NEXT:    ; def s[0:1]13478; GFX942-NEXT:    ;;#ASMEND13479; GFX942-NEXT:    ;;#ASMSTART13480; GFX942-NEXT:    ; def s[2:3]13481; GFX942-NEXT:    ;;#ASMEND13482; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s3, s013483; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s3, s313484; GFX942-NEXT:    ;;#ASMSTART13485; GFX942-NEXT:    ; use s[8:9]13486; GFX942-NEXT:    ;;#ASMEND13487; GFX942-NEXT:    s_setpc_b64 s[30:31]13488  %vec0 = call <4 x i16> asm "; def $0", "=s"()13489  %vec1 = call <4 x i16> asm "; def $0", "=s"()13490  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13491  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13492  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 1, i32 5, i32 5>13493  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)13494  ret void13495}13496 13497define void @s_shuffle_v4i16_v3i16__5_2_5_5() {13498; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_2_5_5:13499; GFX900:       ; %bb.0:13500; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13501; GFX900-NEXT:    ;;#ASMSTART13502; GFX900-NEXT:    ; def s[4:5]13503; GFX900-NEXT:    ;;#ASMEND13504; GFX900-NEXT:    ;;#ASMSTART13505; GFX900-NEXT:    ; def s[6:7]13506; GFX900-NEXT:    ;;#ASMEND13507; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s513508; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s7, s713509; GFX900-NEXT:    ;;#ASMSTART13510; GFX900-NEXT:    ; use s[8:9]13511; GFX900-NEXT:    ;;#ASMEND13512; GFX900-NEXT:    s_setpc_b64 s[30:31]13513;13514; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_2_5_5:13515; GFX90A:       ; %bb.0:13516; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13517; GFX90A-NEXT:    ;;#ASMSTART13518; GFX90A-NEXT:    ; def s[4:5]13519; GFX90A-NEXT:    ;;#ASMEND13520; GFX90A-NEXT:    ;;#ASMSTART13521; GFX90A-NEXT:    ; def s[6:7]13522; GFX90A-NEXT:    ;;#ASMEND13523; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s513524; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s7, s713525; GFX90A-NEXT:    ;;#ASMSTART13526; GFX90A-NEXT:    ; use s[8:9]13527; GFX90A-NEXT:    ;;#ASMEND13528; GFX90A-NEXT:    s_setpc_b64 s[30:31]13529;13530; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_2_5_5:13531; GFX942:       ; %bb.0:13532; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13533; GFX942-NEXT:    ;;#ASMSTART13534; GFX942-NEXT:    ; def s[0:1]13535; GFX942-NEXT:    ;;#ASMEND13536; GFX942-NEXT:    ;;#ASMSTART13537; GFX942-NEXT:    ; def s[2:3]13538; GFX942-NEXT:    ;;#ASMEND13539; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s113540; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s3, s313541; GFX942-NEXT:    ;;#ASMSTART13542; GFX942-NEXT:    ; use s[8:9]13543; GFX942-NEXT:    ;;#ASMEND13544; GFX942-NEXT:    s_setpc_b64 s[30:31]13545  %vec0 = call <4 x i16> asm "; def $0", "=s"()13546  %vec1 = call <4 x i16> asm "; def $0", "=s"()13547  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13548  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13549  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 2, i32 5, i32 5>13550  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)13551  ret void13552}13553 13554define void @s_shuffle_v4i16_v3i16__5_3_5_5() {13555; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_3_5_5:13556; GFX900:       ; %bb.0:13557; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13558; GFX900-NEXT:    ;;#ASMSTART13559; GFX900-NEXT:    ; def s[4:5]13560; GFX900-NEXT:    ;;#ASMEND13561; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s413562; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s5, s513563; GFX900-NEXT:    ;;#ASMSTART13564; GFX900-NEXT:    ; use s[8:9]13565; GFX900-NEXT:    ;;#ASMEND13566; GFX900-NEXT:    s_setpc_b64 s[30:31]13567;13568; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_3_5_5:13569; GFX90A:       ; %bb.0:13570; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13571; GFX90A-NEXT:    ;;#ASMSTART13572; GFX90A-NEXT:    ; def s[4:5]13573; GFX90A-NEXT:    ;;#ASMEND13574; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s413575; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s5, s513576; GFX90A-NEXT:    ;;#ASMSTART13577; GFX90A-NEXT:    ; use s[8:9]13578; GFX90A-NEXT:    ;;#ASMEND13579; GFX90A-NEXT:    s_setpc_b64 s[30:31]13580;13581; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_3_5_5:13582; GFX942:       ; %bb.0:13583; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13584; GFX942-NEXT:    ;;#ASMSTART13585; GFX942-NEXT:    ; def s[0:1]13586; GFX942-NEXT:    ;;#ASMEND13587; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s013588; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s1, s113589; GFX942-NEXT:    ;;#ASMSTART13590; GFX942-NEXT:    ; use s[8:9]13591; GFX942-NEXT:    ;;#ASMEND13592; GFX942-NEXT:    s_setpc_b64 s[30:31]13593  %vec0 = call <4 x i16> asm "; def $0", "=s"()13594  %vec1 = call <4 x i16> asm "; def $0", "=s"()13595  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13596  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13597  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 3, i32 5, i32 5>13598  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)13599  ret void13600}13601 13602define void @s_shuffle_v4i16_v3i16__5_4_5_5() {13603; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_4_5_5:13604; GFX900:       ; %bb.0:13605; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13606; GFX900-NEXT:    ;;#ASMSTART13607; GFX900-NEXT:    ; def s[4:5]13608; GFX900-NEXT:    ;;#ASMEND13609; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s5, s413610; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s5, s513611; GFX900-NEXT:    ;;#ASMSTART13612; GFX900-NEXT:    ; use s[8:9]13613; GFX900-NEXT:    ;;#ASMEND13614; GFX900-NEXT:    s_setpc_b64 s[30:31]13615;13616; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_4_5_5:13617; GFX90A:       ; %bb.0:13618; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13619; GFX90A-NEXT:    ;;#ASMSTART13620; GFX90A-NEXT:    ; def s[4:5]13621; GFX90A-NEXT:    ;;#ASMEND13622; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s5, s413623; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s5, s513624; GFX90A-NEXT:    ;;#ASMSTART13625; GFX90A-NEXT:    ; use s[8:9]13626; GFX90A-NEXT:    ;;#ASMEND13627; GFX90A-NEXT:    s_setpc_b64 s[30:31]13628;13629; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_4_5_5:13630; GFX942:       ; %bb.0:13631; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13632; GFX942-NEXT:    ;;#ASMSTART13633; GFX942-NEXT:    ; def s[0:1]13634; GFX942-NEXT:    ;;#ASMEND13635; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s1, s013636; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s1, s113637; GFX942-NEXT:    ;;#ASMSTART13638; GFX942-NEXT:    ; use s[8:9]13639; GFX942-NEXT:    ;;#ASMEND13640; GFX942-NEXT:    s_setpc_b64 s[30:31]13641  %vec0 = call <4 x i16> asm "; def $0", "=s"()13642  %vec1 = call <4 x i16> asm "; def $0", "=s"()13643  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13644  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13645  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 4, i32 5, i32 5>13646  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)13647  ret void13648}13649 13650define void @s_shuffle_v4i16_v3i16__5_5_u_5() {13651; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_u_5:13652; GFX900:       ; %bb.0:13653; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13654; GFX900-NEXT:    ;;#ASMSTART13655; GFX900-NEXT:    ; def s[4:5]13656; GFX900-NEXT:    ;;#ASMEND13657; GFX900-NEXT:    s_lshl_b32 s9, s5, 1613658; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s513659; GFX900-NEXT:    ;;#ASMSTART13660; GFX900-NEXT:    ; use s[8:9]13661; GFX900-NEXT:    ;;#ASMEND13662; GFX900-NEXT:    s_setpc_b64 s[30:31]13663;13664; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_u_5:13665; GFX90A:       ; %bb.0:13666; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13667; GFX90A-NEXT:    ;;#ASMSTART13668; GFX90A-NEXT:    ; def s[4:5]13669; GFX90A-NEXT:    ;;#ASMEND13670; GFX90A-NEXT:    s_lshl_b32 s9, s5, 1613671; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s513672; GFX90A-NEXT:    ;;#ASMSTART13673; GFX90A-NEXT:    ; use s[8:9]13674; GFX90A-NEXT:    ;;#ASMEND13675; GFX90A-NEXT:    s_setpc_b64 s[30:31]13676;13677; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_u_5:13678; GFX942:       ; %bb.0:13679; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13680; GFX942-NEXT:    ;;#ASMSTART13681; GFX942-NEXT:    ; def s[0:1]13682; GFX942-NEXT:    ;;#ASMEND13683; GFX942-NEXT:    s_lshl_b32 s9, s1, 1613684; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s113685; GFX942-NEXT:    ;;#ASMSTART13686; GFX942-NEXT:    ; use s[8:9]13687; GFX942-NEXT:    ;;#ASMEND13688; GFX942-NEXT:    s_setpc_b64 s[30:31]13689  %vec0 = call <4 x i16> asm "; def $0", "=s"()13690  %vec1 = call <4 x i16> asm "; def $0", "=s"()13691  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13692  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13693  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 poison, i32 5>13694  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)13695  ret void13696}13697 13698define void @s_shuffle_v4i16_v3i16__5_5_0_5() {13699; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_0_5:13700; GFX900:       ; %bb.0:13701; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13702; GFX900-NEXT:    ;;#ASMSTART13703; GFX900-NEXT:    ; def s[4:5]13704; GFX900-NEXT:    ;;#ASMEND13705; GFX900-NEXT:    ;;#ASMSTART13706; GFX900-NEXT:    ; def s[6:7]13707; GFX900-NEXT:    ;;#ASMEND13708; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s713709; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s713710; GFX900-NEXT:    ;;#ASMSTART13711; GFX900-NEXT:    ; use s[8:9]13712; GFX900-NEXT:    ;;#ASMEND13713; GFX900-NEXT:    s_setpc_b64 s[30:31]13714;13715; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_0_5:13716; GFX90A:       ; %bb.0:13717; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13718; GFX90A-NEXT:    ;;#ASMSTART13719; GFX90A-NEXT:    ; def s[4:5]13720; GFX90A-NEXT:    ;;#ASMEND13721; GFX90A-NEXT:    ;;#ASMSTART13722; GFX90A-NEXT:    ; def s[6:7]13723; GFX90A-NEXT:    ;;#ASMEND13724; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s713725; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s713726; GFX90A-NEXT:    ;;#ASMSTART13727; GFX90A-NEXT:    ; use s[8:9]13728; GFX90A-NEXT:    ;;#ASMEND13729; GFX90A-NEXT:    s_setpc_b64 s[30:31]13730;13731; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_0_5:13732; GFX942:       ; %bb.0:13733; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13734; GFX942-NEXT:    ;;#ASMSTART13735; GFX942-NEXT:    ; def s[0:1]13736; GFX942-NEXT:    ;;#ASMEND13737; GFX942-NEXT:    ;;#ASMSTART13738; GFX942-NEXT:    ; def s[2:3]13739; GFX942-NEXT:    ;;#ASMEND13740; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s313741; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s313742; GFX942-NEXT:    ;;#ASMSTART13743; GFX942-NEXT:    ; use s[8:9]13744; GFX942-NEXT:    ;;#ASMEND13745; GFX942-NEXT:    s_setpc_b64 s[30:31]13746  %vec0 = call <4 x i16> asm "; def $0", "=s"()13747  %vec1 = call <4 x i16> asm "; def $0", "=s"()13748  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13749  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13750  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 0, i32 5>13751  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)13752  ret void13753}13754 13755define void @s_shuffle_v4i16_v3i16__5_5_1_5() {13756; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_1_5:13757; GFX900:       ; %bb.0:13758; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13759; GFX900-NEXT:    ;;#ASMSTART13760; GFX900-NEXT:    ; def s[4:5]13761; GFX900-NEXT:    ;;#ASMEND13762; GFX900-NEXT:    s_lshr_b32 s4, s4, 1613763; GFX900-NEXT:    ;;#ASMSTART13764; GFX900-NEXT:    ; def s[6:7]13765; GFX900-NEXT:    ;;#ASMEND13766; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s713767; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s713768; GFX900-NEXT:    ;;#ASMSTART13769; GFX900-NEXT:    ; use s[8:9]13770; GFX900-NEXT:    ;;#ASMEND13771; GFX900-NEXT:    s_setpc_b64 s[30:31]13772;13773; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_1_5:13774; GFX90A:       ; %bb.0:13775; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13776; GFX90A-NEXT:    ;;#ASMSTART13777; GFX90A-NEXT:    ; def s[4:5]13778; GFX90A-NEXT:    ;;#ASMEND13779; GFX90A-NEXT:    s_lshr_b32 s4, s4, 1613780; GFX90A-NEXT:    ;;#ASMSTART13781; GFX90A-NEXT:    ; def s[6:7]13782; GFX90A-NEXT:    ;;#ASMEND13783; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s713784; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s713785; GFX90A-NEXT:    ;;#ASMSTART13786; GFX90A-NEXT:    ; use s[8:9]13787; GFX90A-NEXT:    ;;#ASMEND13788; GFX90A-NEXT:    s_setpc_b64 s[30:31]13789;13790; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_1_5:13791; GFX942:       ; %bb.0:13792; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13793; GFX942-NEXT:    ;;#ASMSTART13794; GFX942-NEXT:    ; def s[0:1]13795; GFX942-NEXT:    ;;#ASMEND13796; GFX942-NEXT:    s_lshr_b32 s0, s0, 1613797; GFX942-NEXT:    ;;#ASMSTART13798; GFX942-NEXT:    ; def s[2:3]13799; GFX942-NEXT:    ;;#ASMEND13800; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s313801; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s313802; GFX942-NEXT:    ;;#ASMSTART13803; GFX942-NEXT:    ; use s[8:9]13804; GFX942-NEXT:    ;;#ASMEND13805; GFX942-NEXT:    s_setpc_b64 s[30:31]13806  %vec0 = call <4 x i16> asm "; def $0", "=s"()13807  %vec1 = call <4 x i16> asm "; def $0", "=s"()13808  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13809  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13810  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 1, i32 5>13811  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)13812  ret void13813}13814 13815define void @s_shuffle_v4i16_v3i16__5_5_2_5() {13816; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_2_5:13817; GFX900:       ; %bb.0:13818; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13819; GFX900-NEXT:    ;;#ASMSTART13820; GFX900-NEXT:    ; def s[4:5]13821; GFX900-NEXT:    ;;#ASMEND13822; GFX900-NEXT:    ;;#ASMSTART13823; GFX900-NEXT:    ; def s[6:7]13824; GFX900-NEXT:    ;;#ASMEND13825; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s5, s713826; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s713827; GFX900-NEXT:    ;;#ASMSTART13828; GFX900-NEXT:    ; use s[8:9]13829; GFX900-NEXT:    ;;#ASMEND13830; GFX900-NEXT:    s_setpc_b64 s[30:31]13831;13832; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_2_5:13833; GFX90A:       ; %bb.0:13834; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13835; GFX90A-NEXT:    ;;#ASMSTART13836; GFX90A-NEXT:    ; def s[4:5]13837; GFX90A-NEXT:    ;;#ASMEND13838; GFX90A-NEXT:    ;;#ASMSTART13839; GFX90A-NEXT:    ; def s[6:7]13840; GFX90A-NEXT:    ;;#ASMEND13841; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s5, s713842; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s713843; GFX90A-NEXT:    ;;#ASMSTART13844; GFX90A-NEXT:    ; use s[8:9]13845; GFX90A-NEXT:    ;;#ASMEND13846; GFX90A-NEXT:    s_setpc_b64 s[30:31]13847;13848; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_2_5:13849; GFX942:       ; %bb.0:13850; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13851; GFX942-NEXT:    ;;#ASMSTART13852; GFX942-NEXT:    ; def s[0:1]13853; GFX942-NEXT:    ;;#ASMEND13854; GFX942-NEXT:    ;;#ASMSTART13855; GFX942-NEXT:    ; def s[2:3]13856; GFX942-NEXT:    ;;#ASMEND13857; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s1, s313858; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s313859; GFX942-NEXT:    ;;#ASMSTART13860; GFX942-NEXT:    ; use s[8:9]13861; GFX942-NEXT:    ;;#ASMEND13862; GFX942-NEXT:    s_setpc_b64 s[30:31]13863  %vec0 = call <4 x i16> asm "; def $0", "=s"()13864  %vec1 = call <4 x i16> asm "; def $0", "=s"()13865  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13866  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13867  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 2, i32 5>13868  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)13869  ret void13870}13871 13872define void @s_shuffle_v4i16_v3i16__5_5_3_5() {13873; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_3_5:13874; GFX900:       ; %bb.0:13875; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13876; GFX900-NEXT:    ;;#ASMSTART13877; GFX900-NEXT:    ; def s[4:5]13878; GFX900-NEXT:    ;;#ASMEND13879; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s513880; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s513881; GFX900-NEXT:    ;;#ASMSTART13882; GFX900-NEXT:    ; use s[8:9]13883; GFX900-NEXT:    ;;#ASMEND13884; GFX900-NEXT:    s_setpc_b64 s[30:31]13885;13886; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_3_5:13887; GFX90A:       ; %bb.0:13888; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13889; GFX90A-NEXT:    ;;#ASMSTART13890; GFX90A-NEXT:    ; def s[4:5]13891; GFX90A-NEXT:    ;;#ASMEND13892; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s513893; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s513894; GFX90A-NEXT:    ;;#ASMSTART13895; GFX90A-NEXT:    ; use s[8:9]13896; GFX90A-NEXT:    ;;#ASMEND13897; GFX90A-NEXT:    s_setpc_b64 s[30:31]13898;13899; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_3_5:13900; GFX942:       ; %bb.0:13901; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13902; GFX942-NEXT:    ;;#ASMSTART13903; GFX942-NEXT:    ; def s[0:1]13904; GFX942-NEXT:    ;;#ASMEND13905; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s113906; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s113907; GFX942-NEXT:    ;;#ASMSTART13908; GFX942-NEXT:    ; use s[8:9]13909; GFX942-NEXT:    ;;#ASMEND13910; GFX942-NEXT:    s_setpc_b64 s[30:31]13911  %vec0 = call <4 x i16> asm "; def $0", "=s"()13912  %vec1 = call <4 x i16> asm "; def $0", "=s"()13913  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13914  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13915  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 3, i32 5>13916  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)13917  ret void13918}13919 13920define void @s_shuffle_v4i16_v3i16__5_5_4_5() {13921; GFX900-LABEL: s_shuffle_v4i16_v3i16__5_5_4_5:13922; GFX900:       ; %bb.0:13923; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13924; GFX900-NEXT:    ;;#ASMSTART13925; GFX900-NEXT:    ; def s[4:5]13926; GFX900-NEXT:    ;;#ASMEND13927; GFX900-NEXT:    s_lshr_b32 s4, s4, 1613928; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s513929; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s513930; GFX900-NEXT:    ;;#ASMSTART13931; GFX900-NEXT:    ; use s[8:9]13932; GFX900-NEXT:    ;;#ASMEND13933; GFX900-NEXT:    s_setpc_b64 s[30:31]13934;13935; GFX90A-LABEL: s_shuffle_v4i16_v3i16__5_5_4_5:13936; GFX90A:       ; %bb.0:13937; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13938; GFX90A-NEXT:    ;;#ASMSTART13939; GFX90A-NEXT:    ; def s[4:5]13940; GFX90A-NEXT:    ;;#ASMEND13941; GFX90A-NEXT:    s_lshr_b32 s4, s4, 1613942; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s513943; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s513944; GFX90A-NEXT:    ;;#ASMSTART13945; GFX90A-NEXT:    ; use s[8:9]13946; GFX90A-NEXT:    ;;#ASMEND13947; GFX90A-NEXT:    s_setpc_b64 s[30:31]13948;13949; GFX942-LABEL: s_shuffle_v4i16_v3i16__5_5_4_5:13950; GFX942:       ; %bb.0:13951; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13952; GFX942-NEXT:    ;;#ASMSTART13953; GFX942-NEXT:    ; def s[0:1]13954; GFX942-NEXT:    ;;#ASMEND13955; GFX942-NEXT:    s_lshr_b32 s0, s0, 1613956; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s113957; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s113958; GFX942-NEXT:    ;;#ASMSTART13959; GFX942-NEXT:    ; use s[8:9]13960; GFX942-NEXT:    ;;#ASMEND13961; GFX942-NEXT:    s_setpc_b64 s[30:31]13962  %vec0 = call <4 x i16> asm "; def $0", "=s"()13963  %vec1 = call <4 x i16> asm "; def $0", "=s"()13964  %extract3 = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13965  %extract31 = shufflevector <4 x i16> %vec1, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 2>13966  %shuf = shufflevector <3 x i16> %extract3, <3 x i16> %extract31, <4 x i32> <i32 5, i32 5, i32 4, i32 5>13967  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)13968  ret void13969}13970;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:13971; GFX90APLUS: {{.*}}13972