brintos

brintos / llvm-project-archived public Read only

0
0
Text · 552.4 KiB · 977055e Raw
15162 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_v3i16_v4i16__u_u_u(ptr addrspace(1) inreg %ptr) {8; GFX9-LABEL: v_shuffle_v3i16_v4i16__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  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> poison14  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 815  ret void16}17 18define void @v_shuffle_v3i16_v4i16__0_u_u(ptr addrspace(1) inreg %ptr) {19; GFX900-LABEL: v_shuffle_v3i16_v4i16__0_u_u:20; GFX900:       ; %bb.0:21; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22; GFX900-NEXT:    v_mov_b32_e32 v2, 023; GFX900-NEXT:    ;;#ASMSTART24; GFX900-NEXT:    ; def v[0:1]25; GFX900-NEXT:    ;;#ASMEND26; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:427; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]28; GFX900-NEXT:    s_waitcnt vmcnt(0)29; GFX900-NEXT:    s_setpc_b64 s[30:31]30;31; GFX90A-LABEL: v_shuffle_v3i16_v4i16__0_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_short v2, v1, s[16:17] offset:439; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]40; GFX90A-NEXT:    s_waitcnt vmcnt(0)41; GFX90A-NEXT:    s_setpc_b64 s[30:31]42;43; GFX942-LABEL: v_shuffle_v3i16_v4i16__0_u_u:44; GFX942:       ; %bb.0:45; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)46; GFX942-NEXT:    v_mov_b32_e32 v2, 047; GFX942-NEXT:    ;;#ASMSTART48; GFX942-NEXT:    ; def v[0:1]49; GFX942-NEXT:    ;;#ASMEND50; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:451; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]52; GFX942-NEXT:    s_waitcnt vmcnt(0)53; GFX942-NEXT:    s_setpc_b64 s[30:31]54  %vec0 = call <4 x i16> asm "; def $0", "=v"()55  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 poison, i32 poison>56  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 857  ret void58}59 60define void @v_shuffle_v3i16_v4i16__1_u_u(ptr addrspace(1) inreg %ptr) {61; GFX900-LABEL: v_shuffle_v3i16_v4i16__1_u_u:62; GFX900:       ; %bb.0:63; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)64; GFX900-NEXT:    ;;#ASMSTART65; GFX900-NEXT:    ; def v[0:1]66; GFX900-NEXT:    ;;#ASMEND67; GFX900-NEXT:    v_mov_b32_e32 v2, 068; GFX900-NEXT:    v_alignbit_b32 v0, s4, v0, 1669; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]70; GFX900-NEXT:    s_waitcnt vmcnt(0)71; GFX900-NEXT:    s_setpc_b64 s[30:31]72;73; GFX90A-LABEL: v_shuffle_v3i16_v4i16__1_u_u:74; GFX90A:       ; %bb.0:75; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)76; GFX90A-NEXT:    ;;#ASMSTART77; GFX90A-NEXT:    ; def v[0:1]78; GFX90A-NEXT:    ;;#ASMEND79; GFX90A-NEXT:    v_mov_b32_e32 v2, 080; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v0, 1681; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]82; GFX90A-NEXT:    s_waitcnt vmcnt(0)83; GFX90A-NEXT:    s_setpc_b64 s[30:31]84;85; GFX942-LABEL: v_shuffle_v3i16_v4i16__1_u_u:86; GFX942:       ; %bb.0:87; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)88; GFX942-NEXT:    ;;#ASMSTART89; GFX942-NEXT:    ; def v[0:1]90; GFX942-NEXT:    ;;#ASMEND91; GFX942-NEXT:    v_mov_b32_e32 v2, 092; GFX942-NEXT:    v_alignbit_b32 v0, s0, v0, 1693; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]94; GFX942-NEXT:    s_waitcnt vmcnt(0)95; GFX942-NEXT:    s_setpc_b64 s[30:31]96  %vec0 = call <4 x i16> asm "; def $0", "=v"()97  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 1, i32 poison, i32 poison>98  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 899  ret void100}101 102define void @v_shuffle_v3i16_v4i16__2_u_u(ptr addrspace(1) inreg %ptr) {103; GFX900-LABEL: v_shuffle_v3i16_v4i16__2_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_dword v2, v1, s[16:17]111; GFX900-NEXT:    s_waitcnt vmcnt(0)112; GFX900-NEXT:    s_setpc_b64 s[30:31]113;114; GFX90A-LABEL: v_shuffle_v3i16_v4i16__2_u_u:115; GFX90A:       ; %bb.0:116; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)117; GFX90A-NEXT:    v_mov_b32_e32 v2, 0118; GFX90A-NEXT:    ;;#ASMSTART119; GFX90A-NEXT:    ; def v[0:1]120; GFX90A-NEXT:    ;;#ASMEND121; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]122; GFX90A-NEXT:    s_waitcnt vmcnt(0)123; GFX90A-NEXT:    s_setpc_b64 s[30:31]124;125; GFX942-LABEL: v_shuffle_v3i16_v4i16__2_u_u:126; GFX942:       ; %bb.0:127; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)128; GFX942-NEXT:    v_mov_b32_e32 v2, 0129; GFX942-NEXT:    ;;#ASMSTART130; GFX942-NEXT:    ; def v[0:1]131; GFX942-NEXT:    ;;#ASMEND132; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]133; GFX942-NEXT:    s_waitcnt vmcnt(0)134; GFX942-NEXT:    s_setpc_b64 s[30:31]135  %vec0 = call <4 x i16> asm "; def $0", "=v"()136  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 2, i32 poison, i32 poison>137  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8138  ret void139}140 141define void @v_shuffle_v3i16_v4i16__3_u_u(ptr addrspace(1) inreg %ptr) {142; GFX900-LABEL: v_shuffle_v3i16_v4i16__3_u_u:143; GFX900:       ; %bb.0:144; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)145; GFX900-NEXT:    ;;#ASMSTART146; GFX900-NEXT:    ; def v[0:1]147; GFX900-NEXT:    ;;#ASMEND148; GFX900-NEXT:    v_mov_b32_e32 v2, 0149; GFX900-NEXT:    v_alignbit_b32 v0, s4, v1, 16150; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]151; GFX900-NEXT:    s_waitcnt vmcnt(0)152; GFX900-NEXT:    s_setpc_b64 s[30:31]153;154; GFX90A-LABEL: v_shuffle_v3i16_v4i16__3_u_u:155; GFX90A:       ; %bb.0:156; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)157; GFX90A-NEXT:    ;;#ASMSTART158; GFX90A-NEXT:    ; def v[0:1]159; GFX90A-NEXT:    ;;#ASMEND160; GFX90A-NEXT:    v_mov_b32_e32 v2, 0161; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v1, 16162; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]163; GFX90A-NEXT:    s_waitcnt vmcnt(0)164; GFX90A-NEXT:    s_setpc_b64 s[30:31]165;166; GFX942-LABEL: v_shuffle_v3i16_v4i16__3_u_u:167; GFX942:       ; %bb.0:168; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)169; GFX942-NEXT:    ;;#ASMSTART170; GFX942-NEXT:    ; def v[0:1]171; GFX942-NEXT:    ;;#ASMEND172; GFX942-NEXT:    v_mov_b32_e32 v2, 0173; GFX942-NEXT:    v_alignbit_b32 v0, s0, v1, 16174; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]175; GFX942-NEXT:    s_waitcnt vmcnt(0)176; GFX942-NEXT:    s_setpc_b64 s[30:31]177  %vec0 = call <4 x i16> asm "; def $0", "=v"()178  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 3, i32 poison, i32 poison>179  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8180  ret void181}182 183define void @v_shuffle_v3i16_v4i16__4_u_u(ptr addrspace(1) inreg %ptr) {184; GFX9-LABEL: v_shuffle_v3i16_v4i16__4_u_u:185; GFX9:       ; %bb.0:186; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)187; GFX9-NEXT:    s_setpc_b64 s[30:31]188  %vec0 = call <4 x i16> asm "; def $0", "=v"()189  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 4, i32 poison, i32 poison>190  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8191  ret void192}193 194define void @v_shuffle_v3i16_v4i16__5_u_u(ptr addrspace(1) inreg %ptr) {195; GFX900-LABEL: v_shuffle_v3i16_v4i16__5_u_u:196; GFX900:       ; %bb.0:197; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)198; GFX900-NEXT:    ;;#ASMSTART199; GFX900-NEXT:    ; def v[0:1]200; GFX900-NEXT:    ;;#ASMEND201; GFX900-NEXT:    v_mov_b32_e32 v2, 0202; GFX900-NEXT:    v_alignbit_b32 v0, s4, v0, 16203; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]204; GFX900-NEXT:    s_waitcnt vmcnt(0)205; GFX900-NEXT:    s_setpc_b64 s[30:31]206;207; GFX90A-LABEL: v_shuffle_v3i16_v4i16__5_u_u:208; GFX90A:       ; %bb.0:209; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)210; GFX90A-NEXT:    ;;#ASMSTART211; GFX90A-NEXT:    ; def v[0:1]212; GFX90A-NEXT:    ;;#ASMEND213; GFX90A-NEXT:    v_mov_b32_e32 v2, 0214; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v0, 16215; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]216; GFX90A-NEXT:    s_waitcnt vmcnt(0)217; GFX90A-NEXT:    s_setpc_b64 s[30:31]218;219; GFX942-LABEL: v_shuffle_v3i16_v4i16__5_u_u:220; GFX942:       ; %bb.0:221; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)222; GFX942-NEXT:    ;;#ASMSTART223; GFX942-NEXT:    ; def v[0:1]224; GFX942-NEXT:    ;;#ASMEND225; GFX942-NEXT:    v_mov_b32_e32 v2, 0226; GFX942-NEXT:    v_alignbit_b32 v0, s0, v0, 16227; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]228; GFX942-NEXT:    s_waitcnt vmcnt(0)229; GFX942-NEXT:    s_setpc_b64 s[30:31]230  %vec0 = call <4 x i16> asm "; def $0", "=v"()231  %vec1 = call <4 x i16> asm "; def $0", "=v"()232  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 5, i32 poison, i32 poison>233  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8234  ret void235}236 237define void @v_shuffle_v3i16_v4i16__6_u_u(ptr addrspace(1) inreg %ptr) {238; GFX900-LABEL: v_shuffle_v3i16_v4i16__6_u_u:239; GFX900:       ; %bb.0:240; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)241; GFX900-NEXT:    v_mov_b32_e32 v2, 0242; GFX900-NEXT:    ;;#ASMSTART243; GFX900-NEXT:    ; def v[0:1]244; GFX900-NEXT:    ;;#ASMEND245; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]246; GFX900-NEXT:    s_waitcnt vmcnt(0)247; GFX900-NEXT:    s_setpc_b64 s[30:31]248;249; GFX90A-LABEL: v_shuffle_v3i16_v4i16__6_u_u:250; GFX90A:       ; %bb.0:251; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)252; GFX90A-NEXT:    v_mov_b32_e32 v2, 0253; GFX90A-NEXT:    ;;#ASMSTART254; GFX90A-NEXT:    ; def v[0:1]255; GFX90A-NEXT:    ;;#ASMEND256; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]257; GFX90A-NEXT:    s_waitcnt vmcnt(0)258; GFX90A-NEXT:    s_setpc_b64 s[30:31]259;260; GFX942-LABEL: v_shuffle_v3i16_v4i16__6_u_u:261; GFX942:       ; %bb.0:262; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)263; GFX942-NEXT:    v_mov_b32_e32 v2, 0264; GFX942-NEXT:    ;;#ASMSTART265; GFX942-NEXT:    ; def v[0:1]266; GFX942-NEXT:    ;;#ASMEND267; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]268; GFX942-NEXT:    s_waitcnt vmcnt(0)269; GFX942-NEXT:    s_setpc_b64 s[30:31]270  %vec0 = call <4 x i16> asm "; def $0", "=v"()271  %vec1 = call <4 x i16> asm "; def $0", "=v"()272  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 6, i32 poison, i32 poison>273  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8274  ret void275}276 277define void @v_shuffle_v3i16_v4i16__7_u_u(ptr addrspace(1) inreg %ptr) {278; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_u_u:279; GFX900:       ; %bb.0:280; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)281; GFX900-NEXT:    ;;#ASMSTART282; GFX900-NEXT:    ; def v[0:1]283; GFX900-NEXT:    ;;#ASMEND284; GFX900-NEXT:    v_mov_b32_e32 v2, 0285; GFX900-NEXT:    v_alignbit_b32 v0, s4, v1, 16286; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]287; GFX900-NEXT:    s_waitcnt vmcnt(0)288; GFX900-NEXT:    s_setpc_b64 s[30:31]289;290; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_u_u:291; GFX90A:       ; %bb.0:292; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)293; GFX90A-NEXT:    ;;#ASMSTART294; GFX90A-NEXT:    ; def v[0:1]295; GFX90A-NEXT:    ;;#ASMEND296; GFX90A-NEXT:    v_mov_b32_e32 v2, 0297; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v1, 16298; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]299; GFX90A-NEXT:    s_waitcnt vmcnt(0)300; GFX90A-NEXT:    s_setpc_b64 s[30:31]301;302; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_u_u:303; GFX942:       ; %bb.0:304; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)305; GFX942-NEXT:    ;;#ASMSTART306; GFX942-NEXT:    ; def v[0:1]307; GFX942-NEXT:    ;;#ASMEND308; GFX942-NEXT:    v_mov_b32_e32 v2, 0309; GFX942-NEXT:    v_alignbit_b32 v0, s0, v1, 16310; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]311; GFX942-NEXT:    s_waitcnt vmcnt(0)312; GFX942-NEXT:    s_setpc_b64 s[30:31]313  %vec0 = call <4 x i16> asm "; def $0", "=v"()314  %vec1 = call <4 x i16> asm "; def $0", "=v"()315  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 poison, i32 poison>316  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8317  ret void318}319 320define void @v_shuffle_v3i16_v4i16__7_0_u(ptr addrspace(1) inreg %ptr) {321; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_0_u:322; GFX900:       ; %bb.0:323; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)324; GFX900-NEXT:    ;;#ASMSTART325; GFX900-NEXT:    ; def v[0:1]326; GFX900-NEXT:    ;;#ASMEND327; GFX900-NEXT:    v_mov_b32_e32 v3, 0328; GFX900-NEXT:    ;;#ASMSTART329; GFX900-NEXT:    ; def v[1:2]330; GFX900-NEXT:    ;;#ASMEND331; GFX900-NEXT:    v_alignbit_b32 v0, v0, v2, 16332; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]333; GFX900-NEXT:    s_waitcnt vmcnt(0)334; GFX900-NEXT:    s_setpc_b64 s[30:31]335;336; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_0_u:337; GFX90A:       ; %bb.0:338; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)339; GFX90A-NEXT:    ;;#ASMSTART340; GFX90A-NEXT:    ; def v[0:1]341; GFX90A-NEXT:    ;;#ASMEND342; GFX90A-NEXT:    v_mov_b32_e32 v4, 0343; GFX90A-NEXT:    ;;#ASMSTART344; GFX90A-NEXT:    ; def v[2:3]345; GFX90A-NEXT:    ;;#ASMEND346; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v3, 16347; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]348; GFX90A-NEXT:    s_waitcnt vmcnt(0)349; GFX90A-NEXT:    s_setpc_b64 s[30:31]350;351; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_0_u:352; GFX942:       ; %bb.0:353; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)354; GFX942-NEXT:    ;;#ASMSTART355; GFX942-NEXT:    ; def v[0:1]356; GFX942-NEXT:    ;;#ASMEND357; GFX942-NEXT:    v_mov_b32_e32 v4, 0358; GFX942-NEXT:    ;;#ASMSTART359; GFX942-NEXT:    ; def v[2:3]360; GFX942-NEXT:    ;;#ASMEND361; GFX942-NEXT:    s_nop 0362; GFX942-NEXT:    v_alignbit_b32 v0, v0, v3, 16363; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]364; GFX942-NEXT:    s_waitcnt vmcnt(0)365; GFX942-NEXT:    s_setpc_b64 s[30:31]366  %vec0 = call <4 x i16> asm "; def $0", "=v"()367  %vec1 = call <4 x i16> asm "; def $0", "=v"()368  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 0, i32 poison>369  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8370  ret void371}372 373define void @v_shuffle_v3i16_v4i16__7_1_u(ptr addrspace(1) inreg %ptr) {374; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_1_u:375; GFX900:       ; %bb.0:376; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)377; GFX900-NEXT:    ;;#ASMSTART378; GFX900-NEXT:    ; def v[0:1]379; GFX900-NEXT:    ;;#ASMEND380; GFX900-NEXT:    s_mov_b32 s4, 0x7060302381; GFX900-NEXT:    v_mov_b32_e32 v3, 0382; GFX900-NEXT:    ;;#ASMSTART383; GFX900-NEXT:    ; def v[1:2]384; GFX900-NEXT:    ;;#ASMEND385; GFX900-NEXT:    v_perm_b32 v0, v0, v2, s4386; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]387; GFX900-NEXT:    s_waitcnt vmcnt(0)388; GFX900-NEXT:    s_setpc_b64 s[30:31]389;390; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_1_u:391; GFX90A:       ; %bb.0:392; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)393; GFX90A-NEXT:    ;;#ASMSTART394; GFX90A-NEXT:    ; def v[0:1]395; GFX90A-NEXT:    ;;#ASMEND396; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302397; GFX90A-NEXT:    v_mov_b32_e32 v4, 0398; GFX90A-NEXT:    ;;#ASMSTART399; GFX90A-NEXT:    ; def v[2:3]400; GFX90A-NEXT:    ;;#ASMEND401; GFX90A-NEXT:    v_perm_b32 v0, v0, v3, s4402; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]403; GFX90A-NEXT:    s_waitcnt vmcnt(0)404; GFX90A-NEXT:    s_setpc_b64 s[30:31]405;406; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_1_u:407; GFX942:       ; %bb.0:408; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)409; GFX942-NEXT:    ;;#ASMSTART410; GFX942-NEXT:    ; def v[0:1]411; GFX942-NEXT:    ;;#ASMEND412; GFX942-NEXT:    s_mov_b32 s2, 0x7060302413; GFX942-NEXT:    v_mov_b32_e32 v4, 0414; GFX942-NEXT:    ;;#ASMSTART415; GFX942-NEXT:    ; def v[2:3]416; GFX942-NEXT:    ;;#ASMEND417; GFX942-NEXT:    s_nop 0418; GFX942-NEXT:    v_perm_b32 v0, v0, v3, s2419; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]420; GFX942-NEXT:    s_waitcnt vmcnt(0)421; GFX942-NEXT:    s_setpc_b64 s[30:31]422  %vec0 = call <4 x i16> asm "; def $0", "=v"()423  %vec1 = call <4 x i16> asm "; def $0", "=v"()424  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 1, i32 poison>425  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8426  ret void427}428 429define void @v_shuffle_v3i16_v4i16__7_2_u(ptr addrspace(1) inreg %ptr) {430; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_2_u:431; GFX900:       ; %bb.0:432; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)433; GFX900-NEXT:    ;;#ASMSTART434; GFX900-NEXT:    ; def v[0:1]435; GFX900-NEXT:    ;;#ASMEND436; GFX900-NEXT:    v_mov_b32_e32 v4, 0437; GFX900-NEXT:    ;;#ASMSTART438; GFX900-NEXT:    ; def v[2:3]439; GFX900-NEXT:    ;;#ASMEND440; GFX900-NEXT:    v_alignbit_b32 v0, v1, v3, 16441; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]442; GFX900-NEXT:    s_waitcnt vmcnt(0)443; GFX900-NEXT:    s_setpc_b64 s[30:31]444;445; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_2_u:446; GFX90A:       ; %bb.0:447; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)448; GFX90A-NEXT:    ;;#ASMSTART449; GFX90A-NEXT:    ; def v[0:1]450; GFX90A-NEXT:    ;;#ASMEND451; GFX90A-NEXT:    v_mov_b32_e32 v4, 0452; GFX90A-NEXT:    ;;#ASMSTART453; GFX90A-NEXT:    ; def v[2:3]454; GFX90A-NEXT:    ;;#ASMEND455; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v3, 16456; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]457; GFX90A-NEXT:    s_waitcnt vmcnt(0)458; GFX90A-NEXT:    s_setpc_b64 s[30:31]459;460; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_2_u:461; GFX942:       ; %bb.0:462; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)463; GFX942-NEXT:    ;;#ASMSTART464; GFX942-NEXT:    ; def v[0:1]465; GFX942-NEXT:    ;;#ASMEND466; GFX942-NEXT:    v_mov_b32_e32 v4, 0467; GFX942-NEXT:    ;;#ASMSTART468; GFX942-NEXT:    ; def v[2:3]469; GFX942-NEXT:    ;;#ASMEND470; GFX942-NEXT:    s_nop 0471; GFX942-NEXT:    v_alignbit_b32 v0, v1, v3, 16472; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]473; GFX942-NEXT:    s_waitcnt vmcnt(0)474; GFX942-NEXT:    s_setpc_b64 s[30:31]475  %vec0 = call <4 x i16> asm "; def $0", "=v"()476  %vec1 = call <4 x i16> asm "; def $0", "=v"()477  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 2, i32 poison>478  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8479  ret void480}481 482define void @v_shuffle_v3i16_v4i16__7_3_u(ptr addrspace(1) inreg %ptr) {483; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_3_u:484; GFX900:       ; %bb.0:485; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)486; GFX900-NEXT:    ;;#ASMSTART487; GFX900-NEXT:    ; def v[0:1]488; GFX900-NEXT:    ;;#ASMEND489; GFX900-NEXT:    s_mov_b32 s4, 0x7060302490; GFX900-NEXT:    v_mov_b32_e32 v4, 0491; GFX900-NEXT:    ;;#ASMSTART492; GFX900-NEXT:    ; def v[2:3]493; GFX900-NEXT:    ;;#ASMEND494; GFX900-NEXT:    v_perm_b32 v0, v1, v3, s4495; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]496; GFX900-NEXT:    s_waitcnt vmcnt(0)497; GFX900-NEXT:    s_setpc_b64 s[30:31]498;499; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_3_u:500; GFX90A:       ; %bb.0:501; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)502; GFX90A-NEXT:    ;;#ASMSTART503; GFX90A-NEXT:    ; def v[0:1]504; GFX90A-NEXT:    ;;#ASMEND505; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302506; GFX90A-NEXT:    v_mov_b32_e32 v4, 0507; GFX90A-NEXT:    ;;#ASMSTART508; GFX90A-NEXT:    ; def v[2:3]509; GFX90A-NEXT:    ;;#ASMEND510; GFX90A-NEXT:    v_perm_b32 v0, v1, v3, s4511; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]512; GFX90A-NEXT:    s_waitcnt vmcnt(0)513; GFX90A-NEXT:    s_setpc_b64 s[30:31]514;515; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_3_u:516; GFX942:       ; %bb.0:517; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)518; GFX942-NEXT:    ;;#ASMSTART519; GFX942-NEXT:    ; def v[0:1]520; GFX942-NEXT:    ;;#ASMEND521; GFX942-NEXT:    s_mov_b32 s2, 0x7060302522; GFX942-NEXT:    v_mov_b32_e32 v4, 0523; GFX942-NEXT:    ;;#ASMSTART524; GFX942-NEXT:    ; def v[2:3]525; GFX942-NEXT:    ;;#ASMEND526; GFX942-NEXT:    s_nop 0527; GFX942-NEXT:    v_perm_b32 v0, v1, v3, s2528; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]529; GFX942-NEXT:    s_waitcnt vmcnt(0)530; GFX942-NEXT:    s_setpc_b64 s[30:31]531  %vec0 = call <4 x i16> asm "; def $0", "=v"()532  %vec1 = call <4 x i16> asm "; def $0", "=v"()533  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 3, i32 poison>534  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8535  ret void536}537 538define void @v_shuffle_v3i16_v4i16__7_4_u(ptr addrspace(1) inreg %ptr) {539; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_4_u:540; GFX900:       ; %bb.0:541; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)542; GFX900-NEXT:    ;;#ASMSTART543; GFX900-NEXT:    ; def v[0:1]544; GFX900-NEXT:    ;;#ASMEND545; GFX900-NEXT:    v_mov_b32_e32 v2, 0546; GFX900-NEXT:    v_alignbit_b32 v0, v0, v1, 16547; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]548; GFX900-NEXT:    s_waitcnt vmcnt(0)549; GFX900-NEXT:    s_setpc_b64 s[30:31]550;551; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_4_u:552; GFX90A:       ; %bb.0:553; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)554; GFX90A-NEXT:    ;;#ASMSTART555; GFX90A-NEXT:    ; def v[0:1]556; GFX90A-NEXT:    ;;#ASMEND557; GFX90A-NEXT:    v_mov_b32_e32 v2, 0558; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v1, 16559; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]560; GFX90A-NEXT:    s_waitcnt vmcnt(0)561; GFX90A-NEXT:    s_setpc_b64 s[30:31]562;563; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_4_u:564; GFX942:       ; %bb.0:565; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)566; GFX942-NEXT:    ;;#ASMSTART567; GFX942-NEXT:    ; def v[0:1]568; GFX942-NEXT:    ;;#ASMEND569; GFX942-NEXT:    v_mov_b32_e32 v2, 0570; GFX942-NEXT:    v_alignbit_b32 v0, v0, v1, 16571; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]572; GFX942-NEXT:    s_waitcnt vmcnt(0)573; GFX942-NEXT:    s_setpc_b64 s[30:31]574  %vec0 = call <4 x i16> asm "; def $0", "=v"()575  %vec1 = call <4 x i16> asm "; def $0", "=v"()576  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 4, i32 poison>577  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8578  ret void579}580 581define void @v_shuffle_v3i16_v4i16__7_5_u(ptr addrspace(1) inreg %ptr) {582; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_5_u:583; GFX900:       ; %bb.0:584; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)585; GFX900-NEXT:    ;;#ASMSTART586; GFX900-NEXT:    ; def v[0:1]587; GFX900-NEXT:    ;;#ASMEND588; GFX900-NEXT:    s_mov_b32 s4, 0x7060302589; GFX900-NEXT:    v_mov_b32_e32 v2, 0590; GFX900-NEXT:    v_perm_b32 v0, v0, v1, s4591; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]592; GFX900-NEXT:    s_waitcnt vmcnt(0)593; GFX900-NEXT:    s_setpc_b64 s[30:31]594;595; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_5_u:596; GFX90A:       ; %bb.0:597; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)598; GFX90A-NEXT:    ;;#ASMSTART599; GFX90A-NEXT:    ; def v[0:1]600; GFX90A-NEXT:    ;;#ASMEND601; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302602; GFX90A-NEXT:    v_mov_b32_e32 v2, 0603; GFX90A-NEXT:    v_perm_b32 v0, v0, v1, s4604; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]605; GFX90A-NEXT:    s_waitcnt vmcnt(0)606; GFX90A-NEXT:    s_setpc_b64 s[30:31]607;608; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_5_u:609; GFX942:       ; %bb.0:610; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)611; GFX942-NEXT:    ;;#ASMSTART612; GFX942-NEXT:    ; def v[0:1]613; GFX942-NEXT:    ;;#ASMEND614; GFX942-NEXT:    s_mov_b32 s2, 0x7060302615; GFX942-NEXT:    v_mov_b32_e32 v2, 0616; GFX942-NEXT:    v_perm_b32 v0, v0, v1, s2617; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]618; GFX942-NEXT:    s_waitcnt vmcnt(0)619; GFX942-NEXT:    s_setpc_b64 s[30:31]620  %vec0 = call <4 x i16> asm "; def $0", "=v"()621  %vec1 = call <4 x i16> asm "; def $0", "=v"()622  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 5, i32 poison>623  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8624  ret void625}626 627define void @v_shuffle_v3i16_v4i16__7_6_u(ptr addrspace(1) inreg %ptr) {628; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_6_u:629; GFX900:       ; %bb.0:630; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)631; GFX900-NEXT:    ;;#ASMSTART632; GFX900-NEXT:    ; def v[0:1]633; GFX900-NEXT:    ;;#ASMEND634; GFX900-NEXT:    v_mov_b32_e32 v2, 0635; GFX900-NEXT:    v_alignbit_b32 v0, v1, v1, 16636; GFX900-NEXT:    global_store_dword v2, v0, 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_v3i16_v4i16__7_6_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_mov_b32_e32 v2, 0647; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v1, 16648; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]649; GFX90A-NEXT:    s_waitcnt vmcnt(0)650; GFX90A-NEXT:    s_setpc_b64 s[30:31]651;652; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_6_u:653; GFX942:       ; %bb.0:654; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)655; GFX942-NEXT:    ;;#ASMSTART656; GFX942-NEXT:    ; def v[0:1]657; GFX942-NEXT:    ;;#ASMEND658; GFX942-NEXT:    v_mov_b32_e32 v2, 0659; GFX942-NEXT:    v_alignbit_b32 v0, v1, v1, 16660; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]661; GFX942-NEXT:    s_waitcnt vmcnt(0)662; GFX942-NEXT:    s_setpc_b64 s[30:31]663  %vec0 = call <4 x i16> asm "; def $0", "=v"()664  %vec1 = call <4 x i16> asm "; def $0", "=v"()665  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 6, i32 poison>666  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8667  ret void668}669 670define void @v_shuffle_v3i16_v4i16__7_7_u(ptr addrspace(1) inreg %ptr) {671; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_7_u:672; GFX900:       ; %bb.0:673; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)674; GFX900-NEXT:    ;;#ASMSTART675; GFX900-NEXT:    ; def v[0:1]676; GFX900-NEXT:    ;;#ASMEND677; GFX900-NEXT:    s_mov_b32 s4, 0x7060302678; GFX900-NEXT:    v_mov_b32_e32 v2, 0679; GFX900-NEXT:    v_perm_b32 v0, v1, v1, s4680; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]681; GFX900-NEXT:    s_waitcnt vmcnt(0)682; GFX900-NEXT:    s_setpc_b64 s[30:31]683;684; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_7_u:685; GFX90A:       ; %bb.0:686; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)687; GFX90A-NEXT:    ;;#ASMSTART688; GFX90A-NEXT:    ; def v[0:1]689; GFX90A-NEXT:    ;;#ASMEND690; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302691; GFX90A-NEXT:    v_mov_b32_e32 v2, 0692; GFX90A-NEXT:    v_perm_b32 v0, v1, v1, s4693; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]694; GFX90A-NEXT:    s_waitcnt vmcnt(0)695; GFX90A-NEXT:    s_setpc_b64 s[30:31]696;697; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_7_u:698; GFX942:       ; %bb.0:699; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)700; GFX942-NEXT:    ;;#ASMSTART701; GFX942-NEXT:    ; def v[0:1]702; GFX942-NEXT:    ;;#ASMEND703; GFX942-NEXT:    s_mov_b32 s2, 0x7060302704; GFX942-NEXT:    v_mov_b32_e32 v2, 0705; GFX942-NEXT:    v_perm_b32 v0, v1, v1, s2706; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]707; GFX942-NEXT:    s_waitcnt vmcnt(0)708; GFX942-NEXT:    s_setpc_b64 s[30:31]709  %vec0 = call <4 x i16> asm "; def $0", "=v"()710  %vec1 = call <4 x i16> asm "; def $0", "=v"()711  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 7, i32 poison>712  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8713  ret void714}715 716define void @v_shuffle_v3i16_v4i16__7_7_0(ptr addrspace(1) inreg %ptr) {717; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_7_0:718; GFX900:       ; %bb.0:719; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)720; GFX900-NEXT:    ;;#ASMSTART721; GFX900-NEXT:    ; def v[0:1]722; GFX900-NEXT:    ;;#ASMEND723; GFX900-NEXT:    v_mov_b32_e32 v3, 0724; GFX900-NEXT:    ;;#ASMSTART725; GFX900-NEXT:    ; def v[1:2]726; GFX900-NEXT:    ;;#ASMEND727; GFX900-NEXT:    s_mov_b32 s4, 0x7060302728; GFX900-NEXT:    v_perm_b32 v1, v2, v2, s4729; GFX900-NEXT:    global_store_short v3, v0, s[16:17] offset:4730; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]731; GFX900-NEXT:    s_waitcnt vmcnt(0)732; GFX900-NEXT:    s_setpc_b64 s[30:31]733;734; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_7_0:735; GFX90A:       ; %bb.0:736; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)737; GFX90A-NEXT:    v_mov_b32_e32 v4, 0738; GFX90A-NEXT:    ;;#ASMSTART739; GFX90A-NEXT:    ; def v[0:1]740; GFX90A-NEXT:    ;;#ASMEND741; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302742; GFX90A-NEXT:    ;;#ASMSTART743; GFX90A-NEXT:    ; def v[2:3]744; GFX90A-NEXT:    ;;#ASMEND745; GFX90A-NEXT:    v_perm_b32 v1, v3, v3, s4746; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:4747; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]748; GFX90A-NEXT:    s_waitcnt vmcnt(0)749; GFX90A-NEXT:    s_setpc_b64 s[30:31]750;751; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_7_0:752; GFX942:       ; %bb.0:753; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)754; GFX942-NEXT:    v_mov_b32_e32 v4, 0755; GFX942-NEXT:    ;;#ASMSTART756; GFX942-NEXT:    ; def v[0:1]757; GFX942-NEXT:    ;;#ASMEND758; GFX942-NEXT:    s_mov_b32 s2, 0x7060302759; GFX942-NEXT:    ;;#ASMSTART760; GFX942-NEXT:    ; def v[2:3]761; GFX942-NEXT:    ;;#ASMEND762; GFX942-NEXT:    s_nop 0763; GFX942-NEXT:    v_perm_b32 v1, v3, v3, s2764; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:4765; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]766; GFX942-NEXT:    s_waitcnt vmcnt(0)767; GFX942-NEXT:    s_setpc_b64 s[30:31]768  %vec0 = call <4 x i16> asm "; def $0", "=v"()769  %vec1 = call <4 x i16> asm "; def $0", "=v"()770  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 7, i32 0>771  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8772  ret void773}774 775define void @v_shuffle_v3i16_v4i16__7_7_1(ptr addrspace(1) inreg %ptr) {776; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_7_1:777; GFX900:       ; %bb.0:778; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)779; GFX900-NEXT:    ;;#ASMSTART780; GFX900-NEXT:    ; def v[0:1]781; GFX900-NEXT:    ;;#ASMEND782; GFX900-NEXT:    v_mov_b32_e32 v3, 0783; GFX900-NEXT:    ;;#ASMSTART784; GFX900-NEXT:    ; def v[1:2]785; GFX900-NEXT:    ;;#ASMEND786; GFX900-NEXT:    s_mov_b32 s4, 0x7060302787; GFX900-NEXT:    v_perm_b32 v1, v2, v2, s4788; GFX900-NEXT:    global_store_short_d16_hi v3, v0, s[16:17] offset:4789; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]790; GFX900-NEXT:    s_waitcnt vmcnt(0)791; GFX900-NEXT:    s_setpc_b64 s[30:31]792;793; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_7_1:794; GFX90A:       ; %bb.0:795; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)796; GFX90A-NEXT:    v_mov_b32_e32 v4, 0797; GFX90A-NEXT:    ;;#ASMSTART798; GFX90A-NEXT:    ; def v[0:1]799; GFX90A-NEXT:    ;;#ASMEND800; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302801; GFX90A-NEXT:    ;;#ASMSTART802; GFX90A-NEXT:    ; def v[2:3]803; GFX90A-NEXT:    ;;#ASMEND804; GFX90A-NEXT:    v_perm_b32 v1, v3, v3, s4805; GFX90A-NEXT:    global_store_short_d16_hi v4, v0, s[16:17] offset:4806; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]807; GFX90A-NEXT:    s_waitcnt vmcnt(0)808; GFX90A-NEXT:    s_setpc_b64 s[30:31]809;810; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_7_1:811; GFX942:       ; %bb.0:812; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)813; GFX942-NEXT:    v_mov_b32_e32 v4, 0814; GFX942-NEXT:    ;;#ASMSTART815; GFX942-NEXT:    ; def v[0:1]816; GFX942-NEXT:    ;;#ASMEND817; GFX942-NEXT:    s_mov_b32 s2, 0x7060302818; GFX942-NEXT:    ;;#ASMSTART819; GFX942-NEXT:    ; def v[2:3]820; GFX942-NEXT:    ;;#ASMEND821; GFX942-NEXT:    s_nop 0822; GFX942-NEXT:    v_perm_b32 v1, v3, v3, s2823; GFX942-NEXT:    global_store_short_d16_hi v4, v0, s[0:1] offset:4824; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]825; GFX942-NEXT:    s_waitcnt vmcnt(0)826; GFX942-NEXT:    s_setpc_b64 s[30:31]827  %vec0 = call <4 x i16> asm "; def $0", "=v"()828  %vec1 = call <4 x i16> asm "; def $0", "=v"()829  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 7, i32 1>830  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8831  ret void832}833 834define void @v_shuffle_v3i16_v4i16__7_7_2(ptr addrspace(1) inreg %ptr) {835; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_7_2:836; GFX900:       ; %bb.0:837; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)838; GFX900-NEXT:    v_mov_b32_e32 v4, 0839; GFX900-NEXT:    ;;#ASMSTART840; GFX900-NEXT:    ; def v[0:1]841; GFX900-NEXT:    ;;#ASMEND842; GFX900-NEXT:    s_mov_b32 s4, 0x7060302843; GFX900-NEXT:    ;;#ASMSTART844; GFX900-NEXT:    ; def v[2:3]845; GFX900-NEXT:    ;;#ASMEND846; GFX900-NEXT:    v_perm_b32 v0, v3, v3, s4847; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:4848; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]849; GFX900-NEXT:    s_waitcnt vmcnt(0)850; GFX900-NEXT:    s_setpc_b64 s[30:31]851;852; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_7_2:853; GFX90A:       ; %bb.0:854; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)855; GFX90A-NEXT:    v_mov_b32_e32 v4, 0856; GFX90A-NEXT:    ;;#ASMSTART857; GFX90A-NEXT:    ; def v[0:1]858; GFX90A-NEXT:    ;;#ASMEND859; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302860; GFX90A-NEXT:    ;;#ASMSTART861; GFX90A-NEXT:    ; def v[2:3]862; GFX90A-NEXT:    ;;#ASMEND863; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s4864; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:4865; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]866; GFX90A-NEXT:    s_waitcnt vmcnt(0)867; GFX90A-NEXT:    s_setpc_b64 s[30:31]868;869; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_7_2:870; GFX942:       ; %bb.0:871; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)872; GFX942-NEXT:    v_mov_b32_e32 v4, 0873; GFX942-NEXT:    ;;#ASMSTART874; GFX942-NEXT:    ; def v[0:1]875; GFX942-NEXT:    ;;#ASMEND876; GFX942-NEXT:    s_mov_b32 s2, 0x7060302877; GFX942-NEXT:    ;;#ASMSTART878; GFX942-NEXT:    ; def v[2:3]879; GFX942-NEXT:    ;;#ASMEND880; GFX942-NEXT:    s_nop 0881; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s2882; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:4883; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]884; GFX942-NEXT:    s_waitcnt vmcnt(0)885; GFX942-NEXT:    s_setpc_b64 s[30:31]886  %vec0 = call <4 x i16> asm "; def $0", "=v"()887  %vec1 = call <4 x i16> asm "; def $0", "=v"()888  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 7, i32 2>889  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8890  ret void891}892 893define void @v_shuffle_v3i16_v4i16__7_7_3(ptr addrspace(1) inreg %ptr) {894; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_7_3:895; GFX900:       ; %bb.0:896; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)897; GFX900-NEXT:    v_mov_b32_e32 v4, 0898; GFX900-NEXT:    ;;#ASMSTART899; GFX900-NEXT:    ; def v[0:1]900; GFX900-NEXT:    ;;#ASMEND901; GFX900-NEXT:    s_mov_b32 s4, 0x7060302902; GFX900-NEXT:    ;;#ASMSTART903; GFX900-NEXT:    ; def v[2:3]904; GFX900-NEXT:    ;;#ASMEND905; GFX900-NEXT:    v_perm_b32 v0, v3, v3, s4906; GFX900-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:4907; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]908; GFX900-NEXT:    s_waitcnt vmcnt(0)909; GFX900-NEXT:    s_setpc_b64 s[30:31]910;911; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_7_3:912; GFX90A:       ; %bb.0:913; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)914; GFX90A-NEXT:    v_mov_b32_e32 v4, 0915; GFX90A-NEXT:    ;;#ASMSTART916; GFX90A-NEXT:    ; def v[0:1]917; GFX90A-NEXT:    ;;#ASMEND918; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302919; GFX90A-NEXT:    ;;#ASMSTART920; GFX90A-NEXT:    ; def v[2:3]921; GFX90A-NEXT:    ;;#ASMEND922; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s4923; GFX90A-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:4924; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]925; GFX90A-NEXT:    s_waitcnt vmcnt(0)926; GFX90A-NEXT:    s_setpc_b64 s[30:31]927;928; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_7_3:929; GFX942:       ; %bb.0:930; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)931; GFX942-NEXT:    v_mov_b32_e32 v4, 0932; GFX942-NEXT:    ;;#ASMSTART933; GFX942-NEXT:    ; def v[0:1]934; GFX942-NEXT:    ;;#ASMEND935; GFX942-NEXT:    s_mov_b32 s2, 0x7060302936; GFX942-NEXT:    ;;#ASMSTART937; GFX942-NEXT:    ; def v[2:3]938; GFX942-NEXT:    ;;#ASMEND939; GFX942-NEXT:    s_nop 0940; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s2941; GFX942-NEXT:    global_store_short_d16_hi v4, v1, s[0:1] offset:4942; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]943; GFX942-NEXT:    s_waitcnt vmcnt(0)944; GFX942-NEXT:    s_setpc_b64 s[30:31]945  %vec0 = call <4 x i16> asm "; def $0", "=v"()946  %vec1 = call <4 x i16> asm "; def $0", "=v"()947  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 7, i32 3>948  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8949  ret void950}951 952define void @v_shuffle_v3i16_v4i16__7_7_4(ptr addrspace(1) inreg %ptr) {953; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_7_4:954; GFX900:       ; %bb.0:955; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)956; GFX900-NEXT:    v_mov_b32_e32 v2, 0957; GFX900-NEXT:    ;;#ASMSTART958; GFX900-NEXT:    ; def v[0:1]959; GFX900-NEXT:    ;;#ASMEND960; GFX900-NEXT:    s_mov_b32 s4, 0x7060302961; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s4962; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:4963; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]964; GFX900-NEXT:    s_waitcnt vmcnt(0)965; GFX900-NEXT:    s_setpc_b64 s[30:31]966;967; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_7_4:968; GFX90A:       ; %bb.0:969; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)970; GFX90A-NEXT:    v_mov_b32_e32 v2, 0971; GFX90A-NEXT:    ;;#ASMSTART972; GFX90A-NEXT:    ; def v[0:1]973; GFX90A-NEXT:    ;;#ASMEND974; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302975; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s4976; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:4977; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]978; GFX90A-NEXT:    s_waitcnt vmcnt(0)979; GFX90A-NEXT:    s_setpc_b64 s[30:31]980;981; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_7_4:982; GFX942:       ; %bb.0:983; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)984; GFX942-NEXT:    v_mov_b32_e32 v2, 0985; GFX942-NEXT:    ;;#ASMSTART986; GFX942-NEXT:    ; def v[0:1]987; GFX942-NEXT:    ;;#ASMEND988; GFX942-NEXT:    s_mov_b32 s2, 0x7060302989; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s2990; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:4991; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]992; GFX942-NEXT:    s_waitcnt vmcnt(0)993; GFX942-NEXT:    s_setpc_b64 s[30:31]994  %vec0 = call <4 x i16> asm "; def $0", "=v"()995  %vec1 = call <4 x i16> asm "; def $0", "=v"()996  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 7, i32 4>997  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8998  ret void999}1000 1001define void @v_shuffle_v3i16_v4i16__7_7_5(ptr addrspace(1) inreg %ptr) {1002; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_7_5:1003; GFX900:       ; %bb.0:1004; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1005; GFX900-NEXT:    v_mov_b32_e32 v2, 01006; GFX900-NEXT:    ;;#ASMSTART1007; GFX900-NEXT:    ; def v[0:1]1008; GFX900-NEXT:    ;;#ASMEND1009; GFX900-NEXT:    s_mov_b32 s4, 0x70603021010; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s41011; GFX900-NEXT:    global_store_short_d16_hi v2, v0, s[16:17] offset:41012; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]1013; GFX900-NEXT:    s_waitcnt vmcnt(0)1014; GFX900-NEXT:    s_setpc_b64 s[30:31]1015;1016; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_7_5:1017; GFX90A:       ; %bb.0:1018; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1019; GFX90A-NEXT:    v_mov_b32_e32 v2, 01020; GFX90A-NEXT:    ;;#ASMSTART1021; GFX90A-NEXT:    ; def v[0:1]1022; GFX90A-NEXT:    ;;#ASMEND1023; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021024; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s41025; GFX90A-NEXT:    global_store_short_d16_hi v2, v0, s[16:17] offset:41026; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]1027; GFX90A-NEXT:    s_waitcnt vmcnt(0)1028; GFX90A-NEXT:    s_setpc_b64 s[30:31]1029;1030; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_7_5:1031; GFX942:       ; %bb.0:1032; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1033; GFX942-NEXT:    v_mov_b32_e32 v2, 01034; GFX942-NEXT:    ;;#ASMSTART1035; GFX942-NEXT:    ; def v[0:1]1036; GFX942-NEXT:    ;;#ASMEND1037; GFX942-NEXT:    s_mov_b32 s2, 0x70603021038; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s21039; GFX942-NEXT:    global_store_short_d16_hi v2, v0, s[0:1] offset:41040; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]1041; GFX942-NEXT:    s_waitcnt vmcnt(0)1042; GFX942-NEXT:    s_setpc_b64 s[30:31]1043  %vec0 = call <4 x i16> asm "; def $0", "=v"()1044  %vec1 = call <4 x i16> asm "; def $0", "=v"()1045  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 7, i32 5>1046  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81047  ret void1048}1049 1050define void @v_shuffle_v3i16_v4i16__7_7_6(ptr addrspace(1) inreg %ptr) {1051; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_7_6:1052; GFX900:       ; %bb.0:1053; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1054; GFX900-NEXT:    v_mov_b32_e32 v2, 01055; GFX900-NEXT:    ;;#ASMSTART1056; GFX900-NEXT:    ; def v[0:1]1057; GFX900-NEXT:    ;;#ASMEND1058; GFX900-NEXT:    s_mov_b32 s4, 0x70603021059; GFX900-NEXT:    v_perm_b32 v0, v1, v1, s41060; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:41061; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]1062; GFX900-NEXT:    s_waitcnt vmcnt(0)1063; GFX900-NEXT:    s_setpc_b64 s[30:31]1064;1065; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_7_6:1066; GFX90A:       ; %bb.0:1067; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1068; GFX90A-NEXT:    v_mov_b32_e32 v2, 01069; GFX90A-NEXT:    ;;#ASMSTART1070; GFX90A-NEXT:    ; def v[0:1]1071; GFX90A-NEXT:    ;;#ASMEND1072; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021073; GFX90A-NEXT:    v_perm_b32 v0, v1, v1, s41074; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:41075; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]1076; GFX90A-NEXT:    s_waitcnt vmcnt(0)1077; GFX90A-NEXT:    s_setpc_b64 s[30:31]1078;1079; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_7_6:1080; GFX942:       ; %bb.0:1081; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1082; GFX942-NEXT:    v_mov_b32_e32 v2, 01083; GFX942-NEXT:    ;;#ASMSTART1084; GFX942-NEXT:    ; def v[0:1]1085; GFX942-NEXT:    ;;#ASMEND1086; GFX942-NEXT:    s_mov_b32 s2, 0x70603021087; GFX942-NEXT:    v_perm_b32 v0, v1, v1, s21088; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:41089; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]1090; GFX942-NEXT:    s_waitcnt vmcnt(0)1091; GFX942-NEXT:    s_setpc_b64 s[30:31]1092  %vec0 = call <4 x i16> asm "; def $0", "=v"()1093  %vec1 = call <4 x i16> asm "; def $0", "=v"()1094  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 7, i32 6>1095  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81096  ret void1097}1098 1099define void @v_shuffle_v3i16_v4i16__7_7_7(ptr addrspace(1) inreg %ptr) {1100; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_7_7:1101; GFX900:       ; %bb.0:1102; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1103; GFX900-NEXT:    ;;#ASMSTART1104; GFX900-NEXT:    ; def v[0:1]1105; GFX900-NEXT:    ;;#ASMEND1106; GFX900-NEXT:    s_mov_b32 s4, 0x70603021107; GFX900-NEXT:    v_mov_b32_e32 v2, 01108; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v11109; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s41110; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]1111; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:41112; GFX900-NEXT:    s_waitcnt vmcnt(0)1113; GFX900-NEXT:    s_setpc_b64 s[30:31]1114;1115; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_7_7:1116; GFX90A:       ; %bb.0:1117; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1118; GFX90A-NEXT:    ;;#ASMSTART1119; GFX90A-NEXT:    ; def v[0:1]1120; GFX90A-NEXT:    ;;#ASMEND1121; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021122; GFX90A-NEXT:    v_mov_b32_e32 v2, 01123; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v11124; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s41125; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]1126; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:41127; GFX90A-NEXT:    s_waitcnt vmcnt(0)1128; GFX90A-NEXT:    s_setpc_b64 s[30:31]1129;1130; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_7_7:1131; GFX942:       ; %bb.0:1132; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1133; GFX942-NEXT:    ;;#ASMSTART1134; GFX942-NEXT:    ; def v[0:1]1135; GFX942-NEXT:    ;;#ASMEND1136; GFX942-NEXT:    s_mov_b32 s2, 0x70603021137; GFX942-NEXT:    v_mov_b32_e32 v2, 01138; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v11139; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s21140; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]1141; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:41142; GFX942-NEXT:    s_waitcnt vmcnt(0)1143; GFX942-NEXT:    s_setpc_b64 s[30:31]1144  %vec0 = call <4 x i16> asm "; def $0", "=v"()1145  %vec1 = call <4 x i16> asm "; def $0", "=v"()1146  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 7, i32 7>1147  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81148  ret void1149}1150 1151define void @v_shuffle_v3i16_v4i16__u_0_0(ptr addrspace(1) inreg %ptr) {1152; GFX900-LABEL: v_shuffle_v3i16_v4i16__u_0_0:1153; GFX900:       ; %bb.0:1154; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1155; GFX900-NEXT:    v_mov_b32_e32 v2, 01156; GFX900-NEXT:    ;;#ASMSTART1157; GFX900-NEXT:    ; def v[0:1]1158; GFX900-NEXT:    ;;#ASMEND1159; GFX900-NEXT:    v_lshlrev_b32_e32 v1, 16, v01160; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:41161; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]1162; GFX900-NEXT:    s_waitcnt vmcnt(0)1163; GFX900-NEXT:    s_setpc_b64 s[30:31]1164;1165; GFX90A-LABEL: v_shuffle_v3i16_v4i16__u_0_0:1166; GFX90A:       ; %bb.0:1167; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1168; GFX90A-NEXT:    v_mov_b32_e32 v2, 01169; GFX90A-NEXT:    ;;#ASMSTART1170; GFX90A-NEXT:    ; def v[0:1]1171; GFX90A-NEXT:    ;;#ASMEND1172; GFX90A-NEXT:    v_lshlrev_b32_e32 v1, 16, v01173; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:41174; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]1175; GFX90A-NEXT:    s_waitcnt vmcnt(0)1176; GFX90A-NEXT:    s_setpc_b64 s[30:31]1177;1178; GFX942-LABEL: v_shuffle_v3i16_v4i16__u_0_0:1179; GFX942:       ; %bb.0:1180; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1181; GFX942-NEXT:    v_mov_b32_e32 v2, 01182; GFX942-NEXT:    ;;#ASMSTART1183; GFX942-NEXT:    ; def v[0:1]1184; GFX942-NEXT:    ;;#ASMEND1185; GFX942-NEXT:    s_nop 01186; GFX942-NEXT:    v_lshlrev_b32_e32 v1, 16, v01187; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:41188; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]1189; GFX942-NEXT:    s_waitcnt vmcnt(0)1190; GFX942-NEXT:    s_setpc_b64 s[30:31]1191  %vec0 = call <4 x i16> asm "; def $0", "=v"()1192  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 poison, i32 0, i32 0>1193  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81194  ret void1195}1196 1197define void @v_shuffle_v3i16_v4i16__0_0_0(ptr addrspace(1) inreg %ptr) {1198; GFX900-LABEL: v_shuffle_v3i16_v4i16__0_0_0:1199; GFX900:       ; %bb.0:1200; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1201; GFX900-NEXT:    v_mov_b32_e32 v2, 01202; GFX900-NEXT:    ;;#ASMSTART1203; GFX900-NEXT:    ; def v[0:1]1204; GFX900-NEXT:    ;;#ASMEND1205; GFX900-NEXT:    s_mov_b32 s4, 0x50401001206; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s41207; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:41208; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]1209; GFX900-NEXT:    s_waitcnt vmcnt(0)1210; GFX900-NEXT:    s_setpc_b64 s[30:31]1211;1212; GFX90A-LABEL: v_shuffle_v3i16_v4i16__0_0_0:1213; GFX90A:       ; %bb.0:1214; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1215; GFX90A-NEXT:    v_mov_b32_e32 v2, 01216; GFX90A-NEXT:    ;;#ASMSTART1217; GFX90A-NEXT:    ; def v[0:1]1218; GFX90A-NEXT:    ;;#ASMEND1219; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001220; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s41221; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:41222; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]1223; GFX90A-NEXT:    s_waitcnt vmcnt(0)1224; GFX90A-NEXT:    s_setpc_b64 s[30:31]1225;1226; GFX942-LABEL: v_shuffle_v3i16_v4i16__0_0_0:1227; GFX942:       ; %bb.0:1228; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1229; GFX942-NEXT:    v_mov_b32_e32 v2, 01230; GFX942-NEXT:    ;;#ASMSTART1231; GFX942-NEXT:    ; def v[0:1]1232; GFX942-NEXT:    ;;#ASMEND1233; GFX942-NEXT:    s_mov_b32 s2, 0x50401001234; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s21235; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:41236; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]1237; GFX942-NEXT:    s_waitcnt vmcnt(0)1238; GFX942-NEXT:    s_setpc_b64 s[30:31]1239  %vec0 = call <4 x i16> asm "; def $0", "=v"()1240  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> zeroinitializer1241  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81242  ret void1243}1244 1245define void @v_shuffle_v3i16_v4i16__1_0_0(ptr addrspace(1) inreg %ptr) {1246; GFX900-LABEL: v_shuffle_v3i16_v4i16__1_0_0:1247; GFX900:       ; %bb.0:1248; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1249; GFX900-NEXT:    v_mov_b32_e32 v2, 01250; GFX900-NEXT:    ;;#ASMSTART1251; GFX900-NEXT:    ; def v[0:1]1252; GFX900-NEXT:    ;;#ASMEND1253; GFX900-NEXT:    v_alignbit_b32 v1, v0, v0, 161254; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:41255; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]1256; GFX900-NEXT:    s_waitcnt vmcnt(0)1257; GFX900-NEXT:    s_setpc_b64 s[30:31]1258;1259; GFX90A-LABEL: v_shuffle_v3i16_v4i16__1_0_0:1260; GFX90A:       ; %bb.0:1261; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1262; GFX90A-NEXT:    v_mov_b32_e32 v2, 01263; GFX90A-NEXT:    ;;#ASMSTART1264; GFX90A-NEXT:    ; def v[0:1]1265; GFX90A-NEXT:    ;;#ASMEND1266; GFX90A-NEXT:    v_alignbit_b32 v1, v0, v0, 161267; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:41268; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]1269; GFX90A-NEXT:    s_waitcnt vmcnt(0)1270; GFX90A-NEXT:    s_setpc_b64 s[30:31]1271;1272; GFX942-LABEL: v_shuffle_v3i16_v4i16__1_0_0:1273; GFX942:       ; %bb.0:1274; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1275; GFX942-NEXT:    v_mov_b32_e32 v2, 01276; GFX942-NEXT:    ;;#ASMSTART1277; GFX942-NEXT:    ; def v[0:1]1278; GFX942-NEXT:    ;;#ASMEND1279; GFX942-NEXT:    s_nop 01280; GFX942-NEXT:    v_alignbit_b32 v1, v0, v0, 161281; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:41282; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]1283; GFX942-NEXT:    s_waitcnt vmcnt(0)1284; GFX942-NEXT:    s_setpc_b64 s[30:31]1285  %vec0 = call <4 x i16> asm "; def $0", "=v"()1286  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 1, i32 0, i32 0>1287  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81288  ret void1289}1290 1291define void @v_shuffle_v3i16_v4i16__2_0_0(ptr addrspace(1) inreg %ptr) {1292; GFX900-LABEL: v_shuffle_v3i16_v4i16__2_0_0:1293; GFX900:       ; %bb.0:1294; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1295; GFX900-NEXT:    v_mov_b32_e32 v2, 01296; GFX900-NEXT:    ;;#ASMSTART1297; GFX900-NEXT:    ; def v[0:1]1298; GFX900-NEXT:    ;;#ASMEND1299; GFX900-NEXT:    s_mov_b32 s4, 0x50401001300; GFX900-NEXT:    v_perm_b32 v1, v0, v1, s41301; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:41302; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]1303; GFX900-NEXT:    s_waitcnt vmcnt(0)1304; GFX900-NEXT:    s_setpc_b64 s[30:31]1305;1306; GFX90A-LABEL: v_shuffle_v3i16_v4i16__2_0_0:1307; GFX90A:       ; %bb.0:1308; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1309; GFX90A-NEXT:    v_mov_b32_e32 v2, 01310; GFX90A-NEXT:    ;;#ASMSTART1311; GFX90A-NEXT:    ; def v[0:1]1312; GFX90A-NEXT:    ;;#ASMEND1313; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001314; GFX90A-NEXT:    v_perm_b32 v1, v0, v1, s41315; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:41316; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]1317; GFX90A-NEXT:    s_waitcnt vmcnt(0)1318; GFX90A-NEXT:    s_setpc_b64 s[30:31]1319;1320; GFX942-LABEL: v_shuffle_v3i16_v4i16__2_0_0:1321; GFX942:       ; %bb.0:1322; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1323; GFX942-NEXT:    v_mov_b32_e32 v2, 01324; GFX942-NEXT:    ;;#ASMSTART1325; GFX942-NEXT:    ; def v[0:1]1326; GFX942-NEXT:    ;;#ASMEND1327; GFX942-NEXT:    s_mov_b32 s2, 0x50401001328; GFX942-NEXT:    v_perm_b32 v1, v0, v1, s21329; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:41330; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]1331; GFX942-NEXT:    s_waitcnt vmcnt(0)1332; GFX942-NEXT:    s_setpc_b64 s[30:31]1333  %vec0 = call <4 x i16> asm "; def $0", "=v"()1334  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 2, i32 0, i32 0>1335  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81336  ret void1337}1338 1339define void @v_shuffle_v3i16_v4i16__3_0_0(ptr addrspace(1) inreg %ptr) {1340; GFX900-LABEL: v_shuffle_v3i16_v4i16__3_0_0:1341; GFX900:       ; %bb.0:1342; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1343; GFX900-NEXT:    v_mov_b32_e32 v2, 01344; GFX900-NEXT:    ;;#ASMSTART1345; GFX900-NEXT:    ; def v[0:1]1346; GFX900-NEXT:    ;;#ASMEND1347; GFX900-NEXT:    v_alignbit_b32 v1, v0, v1, 161348; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:41349; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]1350; GFX900-NEXT:    s_waitcnt vmcnt(0)1351; GFX900-NEXT:    s_setpc_b64 s[30:31]1352;1353; GFX90A-LABEL: v_shuffle_v3i16_v4i16__3_0_0:1354; GFX90A:       ; %bb.0:1355; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1356; GFX90A-NEXT:    v_mov_b32_e32 v2, 01357; GFX90A-NEXT:    ;;#ASMSTART1358; GFX90A-NEXT:    ; def v[0:1]1359; GFX90A-NEXT:    ;;#ASMEND1360; GFX90A-NEXT:    v_alignbit_b32 v1, v0, v1, 161361; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:41362; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]1363; GFX90A-NEXT:    s_waitcnt vmcnt(0)1364; GFX90A-NEXT:    s_setpc_b64 s[30:31]1365;1366; GFX942-LABEL: v_shuffle_v3i16_v4i16__3_0_0:1367; GFX942:       ; %bb.0:1368; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1369; GFX942-NEXT:    v_mov_b32_e32 v2, 01370; GFX942-NEXT:    ;;#ASMSTART1371; GFX942-NEXT:    ; def v[0:1]1372; GFX942-NEXT:    ;;#ASMEND1373; GFX942-NEXT:    s_nop 01374; GFX942-NEXT:    v_alignbit_b32 v1, v0, v1, 161375; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:41376; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]1377; GFX942-NEXT:    s_waitcnt vmcnt(0)1378; GFX942-NEXT:    s_setpc_b64 s[30:31]1379  %vec0 = call <4 x i16> asm "; def $0", "=v"()1380  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 3, i32 0, i32 0>1381  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81382  ret void1383}1384 1385define void @v_shuffle_v3i16_v4i16__4_0_0(ptr addrspace(1) inreg %ptr) {1386; GFX900-LABEL: v_shuffle_v3i16_v4i16__4_0_0:1387; GFX900:       ; %bb.0:1388; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1389; GFX900-NEXT:    v_mov_b32_e32 v2, 01390; GFX900-NEXT:    ;;#ASMSTART1391; GFX900-NEXT:    ; def v[0:1]1392; GFX900-NEXT:    ;;#ASMEND1393; GFX900-NEXT:    v_lshlrev_b32_e32 v1, 16, v01394; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:41395; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]1396; GFX900-NEXT:    s_waitcnt vmcnt(0)1397; GFX900-NEXT:    s_setpc_b64 s[30:31]1398;1399; GFX90A-LABEL: v_shuffle_v3i16_v4i16__4_0_0:1400; GFX90A:       ; %bb.0:1401; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1402; GFX90A-NEXT:    v_mov_b32_e32 v2, 01403; GFX90A-NEXT:    ;;#ASMSTART1404; GFX90A-NEXT:    ; def v[0:1]1405; GFX90A-NEXT:    ;;#ASMEND1406; GFX90A-NEXT:    v_lshlrev_b32_e32 v1, 16, v01407; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:41408; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]1409; GFX90A-NEXT:    s_waitcnt vmcnt(0)1410; GFX90A-NEXT:    s_setpc_b64 s[30:31]1411;1412; GFX942-LABEL: v_shuffle_v3i16_v4i16__4_0_0:1413; GFX942:       ; %bb.0:1414; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1415; GFX942-NEXT:    v_mov_b32_e32 v2, 01416; GFX942-NEXT:    ;;#ASMSTART1417; GFX942-NEXT:    ; def v[0:1]1418; GFX942-NEXT:    ;;#ASMEND1419; GFX942-NEXT:    s_nop 01420; GFX942-NEXT:    v_lshlrev_b32_e32 v1, 16, v01421; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:41422; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]1423; GFX942-NEXT:    s_waitcnt vmcnt(0)1424; GFX942-NEXT:    s_setpc_b64 s[30:31]1425  %vec0 = call <4 x i16> asm "; def $0", "=v"()1426  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 4, i32 0, i32 0>1427  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81428  ret void1429}1430 1431define void @v_shuffle_v3i16_v4i16__5_0_0(ptr addrspace(1) inreg %ptr) {1432; GFX900-LABEL: v_shuffle_v3i16_v4i16__5_0_0:1433; GFX900:       ; %bb.0:1434; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1435; GFX900-NEXT:    ;;#ASMSTART1436; GFX900-NEXT:    ; def v[0:1]1437; GFX900-NEXT:    ;;#ASMEND1438; GFX900-NEXT:    v_mov_b32_e32 v3, 01439; GFX900-NEXT:    ;;#ASMSTART1440; GFX900-NEXT:    ; def v[1:2]1441; GFX900-NEXT:    ;;#ASMEND1442; GFX900-NEXT:    v_alignbit_b32 v1, v0, v1, 161443; GFX900-NEXT:    global_store_short v3, v0, s[16:17] offset:41444; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]1445; GFX900-NEXT:    s_waitcnt vmcnt(0)1446; GFX900-NEXT:    s_setpc_b64 s[30:31]1447;1448; GFX90A-LABEL: v_shuffle_v3i16_v4i16__5_0_0:1449; GFX90A:       ; %bb.0:1450; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1451; GFX90A-NEXT:    v_mov_b32_e32 v4, 01452; GFX90A-NEXT:    ;;#ASMSTART1453; GFX90A-NEXT:    ; def v[0:1]1454; GFX90A-NEXT:    ;;#ASMEND1455; GFX90A-NEXT:    ;;#ASMSTART1456; GFX90A-NEXT:    ; def v[2:3]1457; GFX90A-NEXT:    ;;#ASMEND1458; GFX90A-NEXT:    v_alignbit_b32 v1, v0, v2, 161459; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:41460; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]1461; GFX90A-NEXT:    s_waitcnt vmcnt(0)1462; GFX90A-NEXT:    s_setpc_b64 s[30:31]1463;1464; GFX942-LABEL: v_shuffle_v3i16_v4i16__5_0_0:1465; GFX942:       ; %bb.0:1466; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1467; GFX942-NEXT:    v_mov_b32_e32 v4, 01468; GFX942-NEXT:    ;;#ASMSTART1469; GFX942-NEXT:    ; def v[0:1]1470; GFX942-NEXT:    ;;#ASMEND1471; GFX942-NEXT:    ;;#ASMSTART1472; GFX942-NEXT:    ; def v[2:3]1473; GFX942-NEXT:    ;;#ASMEND1474; GFX942-NEXT:    s_nop 01475; GFX942-NEXT:    v_alignbit_b32 v1, v0, v2, 161476; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:41477; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]1478; GFX942-NEXT:    s_waitcnt vmcnt(0)1479; GFX942-NEXT:    s_setpc_b64 s[30:31]1480  %vec0 = call <4 x i16> asm "; def $0", "=v"()1481  %vec1 = call <4 x i16> asm "; def $0", "=v"()1482  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 5, i32 0, i32 0>1483  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81484  ret void1485}1486 1487define void @v_shuffle_v3i16_v4i16__6_0_0(ptr addrspace(1) inreg %ptr) {1488; GFX900-LABEL: v_shuffle_v3i16_v4i16__6_0_0:1489; GFX900:       ; %bb.0:1490; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1491; GFX900-NEXT:    ;;#ASMSTART1492; GFX900-NEXT:    ; def v[0:1]1493; GFX900-NEXT:    ;;#ASMEND1494; GFX900-NEXT:    v_mov_b32_e32 v3, 01495; GFX900-NEXT:    ;;#ASMSTART1496; GFX900-NEXT:    ; def v[1:2]1497; GFX900-NEXT:    ;;#ASMEND1498; GFX900-NEXT:    s_mov_b32 s4, 0x50401001499; GFX900-NEXT:    v_perm_b32 v1, v0, v2, s41500; GFX900-NEXT:    global_store_short v3, v0, s[16:17] offset:41501; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]1502; GFX900-NEXT:    s_waitcnt vmcnt(0)1503; GFX900-NEXT:    s_setpc_b64 s[30:31]1504;1505; GFX90A-LABEL: v_shuffle_v3i16_v4i16__6_0_0:1506; GFX90A:       ; %bb.0:1507; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1508; GFX90A-NEXT:    v_mov_b32_e32 v4, 01509; GFX90A-NEXT:    ;;#ASMSTART1510; GFX90A-NEXT:    ; def v[0:1]1511; GFX90A-NEXT:    ;;#ASMEND1512; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001513; GFX90A-NEXT:    ;;#ASMSTART1514; GFX90A-NEXT:    ; def v[2:3]1515; GFX90A-NEXT:    ;;#ASMEND1516; GFX90A-NEXT:    v_perm_b32 v1, v0, v3, s41517; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:41518; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]1519; GFX90A-NEXT:    s_waitcnt vmcnt(0)1520; GFX90A-NEXT:    s_setpc_b64 s[30:31]1521;1522; GFX942-LABEL: v_shuffle_v3i16_v4i16__6_0_0:1523; GFX942:       ; %bb.0:1524; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1525; GFX942-NEXT:    v_mov_b32_e32 v4, 01526; GFX942-NEXT:    ;;#ASMSTART1527; GFX942-NEXT:    ; def v[0:1]1528; GFX942-NEXT:    ;;#ASMEND1529; GFX942-NEXT:    s_mov_b32 s2, 0x50401001530; GFX942-NEXT:    ;;#ASMSTART1531; GFX942-NEXT:    ; def v[2:3]1532; GFX942-NEXT:    ;;#ASMEND1533; GFX942-NEXT:    s_nop 01534; GFX942-NEXT:    v_perm_b32 v1, v0, v3, s21535; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:41536; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]1537; GFX942-NEXT:    s_waitcnt vmcnt(0)1538; GFX942-NEXT:    s_setpc_b64 s[30:31]1539  %vec0 = call <4 x i16> asm "; def $0", "=v"()1540  %vec1 = call <4 x i16> asm "; def $0", "=v"()1541  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 6, i32 0, i32 0>1542  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81543  ret void1544}1545 1546define void @v_shuffle_v3i16_v4i16__7_0_0(ptr addrspace(1) inreg %ptr) {1547; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_0_0:1548; GFX900:       ; %bb.0:1549; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1550; GFX900-NEXT:    ;;#ASMSTART1551; GFX900-NEXT:    ; def v[0:1]1552; GFX900-NEXT:    ;;#ASMEND1553; GFX900-NEXT:    v_mov_b32_e32 v3, 01554; GFX900-NEXT:    ;;#ASMSTART1555; GFX900-NEXT:    ; def v[1:2]1556; GFX900-NEXT:    ;;#ASMEND1557; GFX900-NEXT:    v_alignbit_b32 v1, v0, v2, 161558; GFX900-NEXT:    global_store_short v3, v0, s[16:17] offset:41559; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]1560; GFX900-NEXT:    s_waitcnt vmcnt(0)1561; GFX900-NEXT:    s_setpc_b64 s[30:31]1562;1563; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_0_0:1564; GFX90A:       ; %bb.0:1565; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1566; GFX90A-NEXT:    v_mov_b32_e32 v4, 01567; GFX90A-NEXT:    ;;#ASMSTART1568; GFX90A-NEXT:    ; def v[0:1]1569; GFX90A-NEXT:    ;;#ASMEND1570; GFX90A-NEXT:    ;;#ASMSTART1571; GFX90A-NEXT:    ; def v[2:3]1572; GFX90A-NEXT:    ;;#ASMEND1573; GFX90A-NEXT:    v_alignbit_b32 v1, v0, v3, 161574; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:41575; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]1576; GFX90A-NEXT:    s_waitcnt vmcnt(0)1577; GFX90A-NEXT:    s_setpc_b64 s[30:31]1578;1579; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_0_0:1580; GFX942:       ; %bb.0:1581; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1582; GFX942-NEXT:    v_mov_b32_e32 v4, 01583; GFX942-NEXT:    ;;#ASMSTART1584; GFX942-NEXT:    ; def v[0:1]1585; GFX942-NEXT:    ;;#ASMEND1586; GFX942-NEXT:    ;;#ASMSTART1587; GFX942-NEXT:    ; def v[2:3]1588; GFX942-NEXT:    ;;#ASMEND1589; GFX942-NEXT:    s_nop 01590; GFX942-NEXT:    v_alignbit_b32 v1, v0, v3, 161591; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:41592; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]1593; GFX942-NEXT:    s_waitcnt vmcnt(0)1594; GFX942-NEXT:    s_setpc_b64 s[30:31]1595  %vec0 = call <4 x i16> asm "; def $0", "=v"()1596  %vec1 = call <4 x i16> asm "; def $0", "=v"()1597  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 0, i32 0>1598  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81599  ret void1600}1601 1602define void @v_shuffle_v3i16_v4i16__7_u_0(ptr addrspace(1) inreg %ptr) {1603; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_u_0:1604; GFX900:       ; %bb.0:1605; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1606; GFX900-NEXT:    ;;#ASMSTART1607; GFX900-NEXT:    ; def v[0:1]1608; GFX900-NEXT:    ;;#ASMEND1609; GFX900-NEXT:    v_mov_b32_e32 v3, 01610; GFX900-NEXT:    ;;#ASMSTART1611; GFX900-NEXT:    ; def v[1:2]1612; GFX900-NEXT:    ;;#ASMEND1613; GFX900-NEXT:    v_alignbit_b32 v1, s4, v2, 161614; GFX900-NEXT:    global_store_short v3, v0, s[16:17] offset:41615; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]1616; GFX900-NEXT:    s_waitcnt vmcnt(0)1617; GFX900-NEXT:    s_setpc_b64 s[30:31]1618;1619; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_u_0:1620; GFX90A:       ; %bb.0:1621; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1622; GFX90A-NEXT:    v_mov_b32_e32 v4, 01623; GFX90A-NEXT:    ;;#ASMSTART1624; GFX90A-NEXT:    ; def v[0:1]1625; GFX90A-NEXT:    ;;#ASMEND1626; GFX90A-NEXT:    ;;#ASMSTART1627; GFX90A-NEXT:    ; def v[2:3]1628; GFX90A-NEXT:    ;;#ASMEND1629; GFX90A-NEXT:    v_alignbit_b32 v1, s4, v3, 161630; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:41631; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]1632; GFX90A-NEXT:    s_waitcnt vmcnt(0)1633; GFX90A-NEXT:    s_setpc_b64 s[30:31]1634;1635; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_u_0:1636; GFX942:       ; %bb.0:1637; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1638; GFX942-NEXT:    v_mov_b32_e32 v4, 01639; GFX942-NEXT:    ;;#ASMSTART1640; GFX942-NEXT:    ; def v[0:1]1641; GFX942-NEXT:    ;;#ASMEND1642; GFX942-NEXT:    ;;#ASMSTART1643; GFX942-NEXT:    ; def v[2:3]1644; GFX942-NEXT:    ;;#ASMEND1645; GFX942-NEXT:    s_nop 01646; GFX942-NEXT:    v_alignbit_b32 v1, s0, v3, 161647; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:41648; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]1649; GFX942-NEXT:    s_waitcnt vmcnt(0)1650; GFX942-NEXT:    s_setpc_b64 s[30:31]1651  %vec0 = call <4 x i16> asm "; def $0", "=v"()1652  %vec1 = call <4 x i16> asm "; def $0", "=v"()1653  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 poison, i32 0>1654  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81655  ret void1656}1657 1658define void @v_shuffle_v3i16_v4i16__7_1_0(ptr addrspace(1) inreg %ptr) {1659; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_1_0:1660; GFX900:       ; %bb.0:1661; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1662; GFX900-NEXT:    ;;#ASMSTART1663; GFX900-NEXT:    ; def v[0:1]1664; GFX900-NEXT:    ;;#ASMEND1665; GFX900-NEXT:    v_mov_b32_e32 v3, 01666; GFX900-NEXT:    ;;#ASMSTART1667; GFX900-NEXT:    ; def v[1:2]1668; GFX900-NEXT:    ;;#ASMEND1669; GFX900-NEXT:    s_mov_b32 s4, 0x70603021670; GFX900-NEXT:    v_perm_b32 v1, v0, v2, s41671; GFX900-NEXT:    global_store_short v3, v0, s[16:17] offset:41672; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]1673; GFX900-NEXT:    s_waitcnt vmcnt(0)1674; GFX900-NEXT:    s_setpc_b64 s[30:31]1675;1676; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_1_0:1677; GFX90A:       ; %bb.0:1678; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1679; GFX90A-NEXT:    v_mov_b32_e32 v4, 01680; GFX90A-NEXT:    ;;#ASMSTART1681; GFX90A-NEXT:    ; def v[0:1]1682; GFX90A-NEXT:    ;;#ASMEND1683; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021684; GFX90A-NEXT:    ;;#ASMSTART1685; GFX90A-NEXT:    ; def v[2:3]1686; GFX90A-NEXT:    ;;#ASMEND1687; GFX90A-NEXT:    v_perm_b32 v1, v0, v3, s41688; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:41689; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]1690; GFX90A-NEXT:    s_waitcnt vmcnt(0)1691; GFX90A-NEXT:    s_setpc_b64 s[30:31]1692;1693; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_1_0:1694; GFX942:       ; %bb.0:1695; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1696; GFX942-NEXT:    v_mov_b32_e32 v4, 01697; GFX942-NEXT:    ;;#ASMSTART1698; GFX942-NEXT:    ; def v[0:1]1699; GFX942-NEXT:    ;;#ASMEND1700; GFX942-NEXT:    s_mov_b32 s2, 0x70603021701; GFX942-NEXT:    ;;#ASMSTART1702; GFX942-NEXT:    ; def v[2:3]1703; GFX942-NEXT:    ;;#ASMEND1704; GFX942-NEXT:    s_nop 01705; GFX942-NEXT:    v_perm_b32 v1, v0, v3, s21706; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:41707; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]1708; GFX942-NEXT:    s_waitcnt vmcnt(0)1709; GFX942-NEXT:    s_setpc_b64 s[30:31]1710  %vec0 = call <4 x i16> asm "; def $0", "=v"()1711  %vec1 = call <4 x i16> asm "; def $0", "=v"()1712  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 1, i32 0>1713  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81714  ret void1715}1716 1717define void @v_shuffle_v3i16_v4i16__7_2_0(ptr addrspace(1) inreg %ptr) {1718; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_2_0:1719; GFX900:       ; %bb.0:1720; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1721; GFX900-NEXT:    v_mov_b32_e32 v4, 01722; GFX900-NEXT:    ;;#ASMSTART1723; GFX900-NEXT:    ; def v[0:1]1724; GFX900-NEXT:    ;;#ASMEND1725; GFX900-NEXT:    ;;#ASMSTART1726; GFX900-NEXT:    ; def v[2:3]1727; GFX900-NEXT:    ;;#ASMEND1728; GFX900-NEXT:    v_alignbit_b32 v1, v1, v3, 161729; GFX900-NEXT:    global_store_short v4, v0, s[16:17] offset:41730; GFX900-NEXT:    global_store_dword v4, v1, s[16:17]1731; GFX900-NEXT:    s_waitcnt vmcnt(0)1732; GFX900-NEXT:    s_setpc_b64 s[30:31]1733;1734; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_2_0:1735; GFX90A:       ; %bb.0:1736; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1737; GFX90A-NEXT:    v_mov_b32_e32 v4, 01738; GFX90A-NEXT:    ;;#ASMSTART1739; GFX90A-NEXT:    ; def v[0:1]1740; GFX90A-NEXT:    ;;#ASMEND1741; GFX90A-NEXT:    ;;#ASMSTART1742; GFX90A-NEXT:    ; def v[2:3]1743; GFX90A-NEXT:    ;;#ASMEND1744; GFX90A-NEXT:    v_alignbit_b32 v1, v1, v3, 161745; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:41746; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]1747; GFX90A-NEXT:    s_waitcnt vmcnt(0)1748; GFX90A-NEXT:    s_setpc_b64 s[30:31]1749;1750; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_2_0:1751; GFX942:       ; %bb.0:1752; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1753; GFX942-NEXT:    v_mov_b32_e32 v4, 01754; GFX942-NEXT:    ;;#ASMSTART1755; GFX942-NEXT:    ; def v[0:1]1756; GFX942-NEXT:    ;;#ASMEND1757; GFX942-NEXT:    ;;#ASMSTART1758; GFX942-NEXT:    ; def v[2:3]1759; GFX942-NEXT:    ;;#ASMEND1760; GFX942-NEXT:    s_nop 01761; GFX942-NEXT:    v_alignbit_b32 v1, v1, v3, 161762; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:41763; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]1764; GFX942-NEXT:    s_waitcnt vmcnt(0)1765; GFX942-NEXT:    s_setpc_b64 s[30:31]1766  %vec0 = call <4 x i16> asm "; def $0", "=v"()1767  %vec1 = call <4 x i16> asm "; def $0", "=v"()1768  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 2, i32 0>1769  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81770  ret void1771}1772 1773define void @v_shuffle_v3i16_v4i16__7_3_0(ptr addrspace(1) inreg %ptr) {1774; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_3_0:1775; GFX900:       ; %bb.0:1776; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1777; GFX900-NEXT:    v_mov_b32_e32 v4, 01778; GFX900-NEXT:    ;;#ASMSTART1779; GFX900-NEXT:    ; def v[0:1]1780; GFX900-NEXT:    ;;#ASMEND1781; GFX900-NEXT:    s_mov_b32 s4, 0x70603021782; GFX900-NEXT:    ;;#ASMSTART1783; GFX900-NEXT:    ; def v[2:3]1784; GFX900-NEXT:    ;;#ASMEND1785; GFX900-NEXT:    v_perm_b32 v1, v1, v3, s41786; GFX900-NEXT:    global_store_short v4, v0, s[16:17] offset:41787; GFX900-NEXT:    global_store_dword v4, v1, s[16:17]1788; GFX900-NEXT:    s_waitcnt vmcnt(0)1789; GFX900-NEXT:    s_setpc_b64 s[30:31]1790;1791; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_3_0:1792; GFX90A:       ; %bb.0:1793; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1794; GFX90A-NEXT:    v_mov_b32_e32 v4, 01795; GFX90A-NEXT:    ;;#ASMSTART1796; GFX90A-NEXT:    ; def v[0:1]1797; GFX90A-NEXT:    ;;#ASMEND1798; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021799; GFX90A-NEXT:    ;;#ASMSTART1800; GFX90A-NEXT:    ; def v[2:3]1801; GFX90A-NEXT:    ;;#ASMEND1802; GFX90A-NEXT:    v_perm_b32 v1, v1, v3, s41803; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:41804; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]1805; GFX90A-NEXT:    s_waitcnt vmcnt(0)1806; GFX90A-NEXT:    s_setpc_b64 s[30:31]1807;1808; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_3_0:1809; GFX942:       ; %bb.0:1810; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1811; GFX942-NEXT:    v_mov_b32_e32 v4, 01812; GFX942-NEXT:    ;;#ASMSTART1813; GFX942-NEXT:    ; def v[0:1]1814; GFX942-NEXT:    ;;#ASMEND1815; GFX942-NEXT:    s_mov_b32 s2, 0x70603021816; GFX942-NEXT:    ;;#ASMSTART1817; GFX942-NEXT:    ; def v[2:3]1818; GFX942-NEXT:    ;;#ASMEND1819; GFX942-NEXT:    s_nop 01820; GFX942-NEXT:    v_perm_b32 v1, v1, v3, s21821; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:41822; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]1823; GFX942-NEXT:    s_waitcnt vmcnt(0)1824; GFX942-NEXT:    s_setpc_b64 s[30:31]1825  %vec0 = call <4 x i16> asm "; def $0", "=v"()1826  %vec1 = call <4 x i16> asm "; def $0", "=v"()1827  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 3, i32 0>1828  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81829  ret void1830}1831 1832define void @v_shuffle_v3i16_v4i16__7_4_0(ptr addrspace(1) inreg %ptr) {1833; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_4_0:1834; GFX900:       ; %bb.0:1835; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1836; GFX900-NEXT:    ;;#ASMSTART1837; GFX900-NEXT:    ; def v[0:1]1838; GFX900-NEXT:    ;;#ASMEND1839; GFX900-NEXT:    v_mov_b32_e32 v3, 01840; GFX900-NEXT:    ;;#ASMSTART1841; GFX900-NEXT:    ; def v[1:2]1842; GFX900-NEXT:    ;;#ASMEND1843; GFX900-NEXT:    v_alignbit_b32 v1, v1, v2, 161844; GFX900-NEXT:    global_store_short v3, v0, s[16:17] offset:41845; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]1846; GFX900-NEXT:    s_waitcnt vmcnt(0)1847; GFX900-NEXT:    s_setpc_b64 s[30:31]1848;1849; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_4_0:1850; GFX90A:       ; %bb.0:1851; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1852; GFX90A-NEXT:    v_mov_b32_e32 v4, 01853; GFX90A-NEXT:    ;;#ASMSTART1854; GFX90A-NEXT:    ; def v[0:1]1855; GFX90A-NEXT:    ;;#ASMEND1856; GFX90A-NEXT:    ;;#ASMSTART1857; GFX90A-NEXT:    ; def v[2:3]1858; GFX90A-NEXT:    ;;#ASMEND1859; GFX90A-NEXT:    v_alignbit_b32 v1, v2, v3, 161860; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:41861; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]1862; GFX90A-NEXT:    s_waitcnt vmcnt(0)1863; GFX90A-NEXT:    s_setpc_b64 s[30:31]1864;1865; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_4_0:1866; GFX942:       ; %bb.0:1867; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1868; GFX942-NEXT:    v_mov_b32_e32 v4, 01869; GFX942-NEXT:    ;;#ASMSTART1870; GFX942-NEXT:    ; def v[0:1]1871; GFX942-NEXT:    ;;#ASMEND1872; GFX942-NEXT:    ;;#ASMSTART1873; GFX942-NEXT:    ; def v[2:3]1874; GFX942-NEXT:    ;;#ASMEND1875; GFX942-NEXT:    s_nop 01876; GFX942-NEXT:    v_alignbit_b32 v1, v2, v3, 161877; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:41878; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]1879; GFX942-NEXT:    s_waitcnt vmcnt(0)1880; GFX942-NEXT:    s_setpc_b64 s[30:31]1881  %vec0 = call <4 x i16> asm "; def $0", "=v"()1882  %vec1 = call <4 x i16> asm "; def $0", "=v"()1883  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 4, i32 0>1884  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81885  ret void1886}1887 1888define void @v_shuffle_v3i16_v4i16__7_5_0(ptr addrspace(1) inreg %ptr) {1889; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_5_0:1890; GFX900:       ; %bb.0:1891; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1892; GFX900-NEXT:    ;;#ASMSTART1893; GFX900-NEXT:    ; def v[0:1]1894; GFX900-NEXT:    ;;#ASMEND1895; GFX900-NEXT:    v_mov_b32_e32 v3, 01896; GFX900-NEXT:    ;;#ASMSTART1897; GFX900-NEXT:    ; def v[1:2]1898; GFX900-NEXT:    ;;#ASMEND1899; GFX900-NEXT:    s_mov_b32 s4, 0x70603021900; GFX900-NEXT:    v_perm_b32 v1, v1, v2, s41901; GFX900-NEXT:    global_store_short v3, v0, s[16:17] offset:41902; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]1903; GFX900-NEXT:    s_waitcnt vmcnt(0)1904; GFX900-NEXT:    s_setpc_b64 s[30:31]1905;1906; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_5_0:1907; GFX90A:       ; %bb.0:1908; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1909; GFX90A-NEXT:    v_mov_b32_e32 v4, 01910; GFX90A-NEXT:    ;;#ASMSTART1911; GFX90A-NEXT:    ; def v[0:1]1912; GFX90A-NEXT:    ;;#ASMEND1913; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021914; GFX90A-NEXT:    ;;#ASMSTART1915; GFX90A-NEXT:    ; def v[2:3]1916; GFX90A-NEXT:    ;;#ASMEND1917; GFX90A-NEXT:    v_perm_b32 v1, v2, v3, s41918; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:41919; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]1920; GFX90A-NEXT:    s_waitcnt vmcnt(0)1921; GFX90A-NEXT:    s_setpc_b64 s[30:31]1922;1923; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_5_0:1924; GFX942:       ; %bb.0:1925; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1926; GFX942-NEXT:    v_mov_b32_e32 v4, 01927; GFX942-NEXT:    ;;#ASMSTART1928; GFX942-NEXT:    ; def v[0:1]1929; GFX942-NEXT:    ;;#ASMEND1930; GFX942-NEXT:    s_mov_b32 s2, 0x70603021931; GFX942-NEXT:    ;;#ASMSTART1932; GFX942-NEXT:    ; def v[2:3]1933; GFX942-NEXT:    ;;#ASMEND1934; GFX942-NEXT:    s_nop 01935; GFX942-NEXT:    v_perm_b32 v1, v2, v3, s21936; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:41937; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]1938; GFX942-NEXT:    s_waitcnt vmcnt(0)1939; GFX942-NEXT:    s_setpc_b64 s[30:31]1940  %vec0 = call <4 x i16> asm "; def $0", "=v"()1941  %vec1 = call <4 x i16> asm "; def $0", "=v"()1942  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 5, i32 0>1943  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81944  ret void1945}1946 1947define void @v_shuffle_v3i16_v4i16__7_6_0(ptr addrspace(1) inreg %ptr) {1948; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_6_0:1949; GFX900:       ; %bb.0:1950; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1951; GFX900-NEXT:    ;;#ASMSTART1952; GFX900-NEXT:    ; def v[0:1]1953; GFX900-NEXT:    ;;#ASMEND1954; GFX900-NEXT:    v_mov_b32_e32 v3, 01955; GFX900-NEXT:    ;;#ASMSTART1956; GFX900-NEXT:    ; def v[1:2]1957; GFX900-NEXT:    ;;#ASMEND1958; GFX900-NEXT:    v_alignbit_b32 v1, v2, v2, 161959; GFX900-NEXT:    global_store_short v3, v0, s[16:17] offset:41960; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]1961; GFX900-NEXT:    s_waitcnt vmcnt(0)1962; GFX900-NEXT:    s_setpc_b64 s[30:31]1963;1964; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_6_0:1965; GFX90A:       ; %bb.0:1966; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1967; GFX90A-NEXT:    v_mov_b32_e32 v4, 01968; GFX90A-NEXT:    ;;#ASMSTART1969; GFX90A-NEXT:    ; def v[0:1]1970; GFX90A-NEXT:    ;;#ASMEND1971; GFX90A-NEXT:    ;;#ASMSTART1972; GFX90A-NEXT:    ; def v[2:3]1973; GFX90A-NEXT:    ;;#ASMEND1974; GFX90A-NEXT:    v_alignbit_b32 v1, v3, v3, 161975; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:41976; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]1977; GFX90A-NEXT:    s_waitcnt vmcnt(0)1978; GFX90A-NEXT:    s_setpc_b64 s[30:31]1979;1980; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_6_0:1981; GFX942:       ; %bb.0:1982; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1983; GFX942-NEXT:    v_mov_b32_e32 v4, 01984; GFX942-NEXT:    ;;#ASMSTART1985; GFX942-NEXT:    ; def v[0:1]1986; GFX942-NEXT:    ;;#ASMEND1987; GFX942-NEXT:    ;;#ASMSTART1988; GFX942-NEXT:    ; def v[2:3]1989; GFX942-NEXT:    ;;#ASMEND1990; GFX942-NEXT:    s_nop 01991; GFX942-NEXT:    v_alignbit_b32 v1, v3, v3, 161992; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:41993; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]1994; GFX942-NEXT:    s_waitcnt vmcnt(0)1995; GFX942-NEXT:    s_setpc_b64 s[30:31]1996  %vec0 = call <4 x i16> asm "; def $0", "=v"()1997  %vec1 = call <4 x i16> asm "; def $0", "=v"()1998  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 6, i32 0>1999  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 82000  ret void2001}2002 2003define void @v_shuffle_v3i16_v4i16__u_1_1(ptr addrspace(1) inreg %ptr) {2004; GFX900-LABEL: v_shuffle_v3i16_v4i16__u_1_1:2005; GFX900:       ; %bb.0:2006; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2007; GFX900-NEXT:    v_mov_b32_e32 v2, 02008; GFX900-NEXT:    ;;#ASMSTART2009; GFX900-NEXT:    ; def v[0:1]2010; GFX900-NEXT:    ;;#ASMEND2011; GFX900-NEXT:    global_store_short_d16_hi v2, v0, s[16:17] offset:42012; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]2013; GFX900-NEXT:    s_waitcnt vmcnt(0)2014; GFX900-NEXT:    s_setpc_b64 s[30:31]2015;2016; GFX90A-LABEL: v_shuffle_v3i16_v4i16__u_1_1:2017; GFX90A:       ; %bb.0:2018; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2019; GFX90A-NEXT:    v_mov_b32_e32 v2, 02020; GFX90A-NEXT:    ;;#ASMSTART2021; GFX90A-NEXT:    ; def v[0:1]2022; GFX90A-NEXT:    ;;#ASMEND2023; GFX90A-NEXT:    global_store_short_d16_hi v2, v0, s[16:17] offset:42024; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]2025; GFX90A-NEXT:    s_waitcnt vmcnt(0)2026; GFX90A-NEXT:    s_setpc_b64 s[30:31]2027;2028; GFX942-LABEL: v_shuffle_v3i16_v4i16__u_1_1:2029; GFX942:       ; %bb.0:2030; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2031; GFX942-NEXT:    v_mov_b32_e32 v2, 02032; GFX942-NEXT:    ;;#ASMSTART2033; GFX942-NEXT:    ; def v[0:1]2034; GFX942-NEXT:    ;;#ASMEND2035; GFX942-NEXT:    global_store_short_d16_hi v2, v0, s[0:1] offset:42036; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]2037; GFX942-NEXT:    s_waitcnt vmcnt(0)2038; GFX942-NEXT:    s_setpc_b64 s[30:31]2039  %vec0 = call <4 x i16> asm "; def $0", "=v"()2040  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 poison, i32 1, i32 1>2041  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 82042  ret void2043}2044 2045define void @v_shuffle_v3i16_v4i16__0_1_1(ptr addrspace(1) inreg %ptr) {2046; GFX900-LABEL: v_shuffle_v3i16_v4i16__0_1_1:2047; GFX900:       ; %bb.0:2048; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2049; GFX900-NEXT:    v_mov_b32_e32 v2, 02050; GFX900-NEXT:    ;;#ASMSTART2051; GFX900-NEXT:    ; def v[0:1]2052; GFX900-NEXT:    ;;#ASMEND2053; GFX900-NEXT:    global_store_short_d16_hi v2, v0, s[16:17] offset:42054; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]2055; GFX900-NEXT:    s_waitcnt vmcnt(0)2056; GFX900-NEXT:    s_setpc_b64 s[30:31]2057;2058; GFX90A-LABEL: v_shuffle_v3i16_v4i16__0_1_1:2059; GFX90A:       ; %bb.0:2060; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2061; GFX90A-NEXT:    v_mov_b32_e32 v2, 02062; GFX90A-NEXT:    ;;#ASMSTART2063; GFX90A-NEXT:    ; def v[0:1]2064; GFX90A-NEXT:    ;;#ASMEND2065; GFX90A-NEXT:    global_store_short_d16_hi v2, v0, s[16:17] offset:42066; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]2067; GFX90A-NEXT:    s_waitcnt vmcnt(0)2068; GFX90A-NEXT:    s_setpc_b64 s[30:31]2069;2070; GFX942-LABEL: v_shuffle_v3i16_v4i16__0_1_1:2071; GFX942:       ; %bb.0:2072; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2073; GFX942-NEXT:    v_mov_b32_e32 v2, 02074; GFX942-NEXT:    ;;#ASMSTART2075; GFX942-NEXT:    ; def v[0:1]2076; GFX942-NEXT:    ;;#ASMEND2077; GFX942-NEXT:    global_store_short_d16_hi v2, v0, s[0:1] offset:42078; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]2079; GFX942-NEXT:    s_waitcnt vmcnt(0)2080; GFX942-NEXT:    s_setpc_b64 s[30:31]2081  %vec0 = call <4 x i16> asm "; def $0", "=v"()2082  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 1>2083  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 82084  ret void2085}2086 2087define void @v_shuffle_v3i16_v4i16__1_1_1(ptr addrspace(1) inreg %ptr) {2088; GFX900-LABEL: v_shuffle_v3i16_v4i16__1_1_1: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, 0x70603022095; GFX900-NEXT:    v_mov_b32_e32 v2, 02096; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s42097; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v02098; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]2099; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:42100; GFX900-NEXT:    s_waitcnt vmcnt(0)2101; GFX900-NEXT:    s_setpc_b64 s[30:31]2102;2103; GFX90A-LABEL: v_shuffle_v3i16_v4i16__1_1_1:2104; GFX90A:       ; %bb.0:2105; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2106; GFX90A-NEXT:    ;;#ASMSTART2107; GFX90A-NEXT:    ; def v[0:1]2108; GFX90A-NEXT:    ;;#ASMEND2109; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022110; GFX90A-NEXT:    v_mov_b32_e32 v2, 02111; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s42112; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v02113; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]2114; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:42115; GFX90A-NEXT:    s_waitcnt vmcnt(0)2116; GFX90A-NEXT:    s_setpc_b64 s[30:31]2117;2118; GFX942-LABEL: v_shuffle_v3i16_v4i16__1_1_1:2119; GFX942:       ; %bb.0:2120; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2121; GFX942-NEXT:    ;;#ASMSTART2122; GFX942-NEXT:    ; def v[0:1]2123; GFX942-NEXT:    ;;#ASMEND2124; GFX942-NEXT:    s_mov_b32 s2, 0x70603022125; GFX942-NEXT:    v_mov_b32_e32 v2, 02126; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s22127; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v02128; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]2129; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:42130; GFX942-NEXT:    s_waitcnt vmcnt(0)2131; GFX942-NEXT:    s_setpc_b64 s[30:31]2132  %vec0 = call <4 x i16> asm "; def $0", "=v"()2133  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 1, i32 1, i32 1>2134  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 82135  ret void2136}2137 2138define void @v_shuffle_v3i16_v4i16__2_1_1(ptr addrspace(1) inreg %ptr) {2139; GFX900-LABEL: v_shuffle_v3i16_v4i16__2_1_1:2140; GFX900:       ; %bb.0:2141; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2142; GFX900-NEXT:    ;;#ASMSTART2143; GFX900-NEXT:    ; def v[0:1]2144; GFX900-NEXT:    ;;#ASMEND2145; GFX900-NEXT:    s_mov_b32 s4, 0xffff2146; GFX900-NEXT:    v_mov_b32_e32 v2, 02147; GFX900-NEXT:    v_bfi_b32 v1, s4, v1, v02148; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v02149; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:42150; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]2151; GFX900-NEXT:    s_waitcnt vmcnt(0)2152; GFX900-NEXT:    s_setpc_b64 s[30:31]2153;2154; GFX90A-LABEL: v_shuffle_v3i16_v4i16__2_1_1:2155; GFX90A:       ; %bb.0:2156; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2157; GFX90A-NEXT:    ;;#ASMSTART2158; GFX90A-NEXT:    ; def v[0:1]2159; GFX90A-NEXT:    ;;#ASMEND2160; GFX90A-NEXT:    s_mov_b32 s4, 0xffff2161; GFX90A-NEXT:    v_mov_b32_e32 v2, 02162; GFX90A-NEXT:    v_bfi_b32 v1, s4, v1, v02163; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v02164; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:42165; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]2166; GFX90A-NEXT:    s_waitcnt vmcnt(0)2167; GFX90A-NEXT:    s_setpc_b64 s[30:31]2168;2169; GFX942-LABEL: v_shuffle_v3i16_v4i16__2_1_1:2170; GFX942:       ; %bb.0:2171; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2172; GFX942-NEXT:    ;;#ASMSTART2173; GFX942-NEXT:    ; def v[0:1]2174; GFX942-NEXT:    ;;#ASMEND2175; GFX942-NEXT:    s_mov_b32 s2, 0xffff2176; GFX942-NEXT:    v_mov_b32_e32 v2, 02177; GFX942-NEXT:    v_bfi_b32 v1, s2, v1, v02178; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v02179; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:42180; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]2181; GFX942-NEXT:    s_waitcnt vmcnt(0)2182; GFX942-NEXT:    s_setpc_b64 s[30:31]2183  %vec0 = call <4 x i16> asm "; def $0", "=v"()2184  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 2, i32 1, i32 1>2185  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 82186  ret void2187}2188 2189define void @v_shuffle_v3i16_v4i16__3_1_1(ptr addrspace(1) inreg %ptr) {2190; GFX900-LABEL: v_shuffle_v3i16_v4i16__3_1_1:2191; GFX900:       ; %bb.0:2192; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2193; GFX900-NEXT:    ;;#ASMSTART2194; GFX900-NEXT:    ; def v[0:1]2195; GFX900-NEXT:    ;;#ASMEND2196; GFX900-NEXT:    s_mov_b32 s4, 0x70603022197; GFX900-NEXT:    v_mov_b32_e32 v2, 02198; GFX900-NEXT:    v_perm_b32 v1, v0, v1, s42199; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v02200; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]2201; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:42202; GFX900-NEXT:    s_waitcnt vmcnt(0)2203; GFX900-NEXT:    s_setpc_b64 s[30:31]2204;2205; GFX90A-LABEL: v_shuffle_v3i16_v4i16__3_1_1:2206; GFX90A:       ; %bb.0:2207; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2208; GFX90A-NEXT:    ;;#ASMSTART2209; GFX90A-NEXT:    ; def v[0:1]2210; GFX90A-NEXT:    ;;#ASMEND2211; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022212; GFX90A-NEXT:    v_mov_b32_e32 v2, 02213; GFX90A-NEXT:    v_perm_b32 v1, v0, v1, s42214; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v02215; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]2216; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:42217; GFX90A-NEXT:    s_waitcnt vmcnt(0)2218; GFX90A-NEXT:    s_setpc_b64 s[30:31]2219;2220; GFX942-LABEL: v_shuffle_v3i16_v4i16__3_1_1:2221; GFX942:       ; %bb.0:2222; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2223; GFX942-NEXT:    ;;#ASMSTART2224; GFX942-NEXT:    ; def v[0:1]2225; GFX942-NEXT:    ;;#ASMEND2226; GFX942-NEXT:    s_mov_b32 s2, 0x70603022227; GFX942-NEXT:    v_mov_b32_e32 v2, 02228; GFX942-NEXT:    v_perm_b32 v1, v0, v1, s22229; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v02230; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]2231; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:42232; GFX942-NEXT:    s_waitcnt vmcnt(0)2233; GFX942-NEXT:    s_setpc_b64 s[30:31]2234  %vec0 = call <4 x i16> asm "; def $0", "=v"()2235  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 3, i32 1, i32 1>2236  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 82237  ret void2238}2239 2240define void @v_shuffle_v3i16_v4i16__4_1_1(ptr addrspace(1) inreg %ptr) {2241; GFX900-LABEL: v_shuffle_v3i16_v4i16__4_1_1:2242; GFX900:       ; %bb.0:2243; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2244; GFX900-NEXT:    v_mov_b32_e32 v2, 02245; GFX900-NEXT:    ;;#ASMSTART2246; GFX900-NEXT:    ; def v[0:1]2247; GFX900-NEXT:    ;;#ASMEND2248; GFX900-NEXT:    global_store_short_d16_hi v2, v0, s[16:17] offset:42249; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]2250; GFX900-NEXT:    s_waitcnt vmcnt(0)2251; GFX900-NEXT:    s_setpc_b64 s[30:31]2252;2253; GFX90A-LABEL: v_shuffle_v3i16_v4i16__4_1_1:2254; GFX90A:       ; %bb.0:2255; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2256; GFX90A-NEXT:    v_mov_b32_e32 v2, 02257; GFX90A-NEXT:    ;;#ASMSTART2258; GFX90A-NEXT:    ; def v[0:1]2259; GFX90A-NEXT:    ;;#ASMEND2260; GFX90A-NEXT:    global_store_short_d16_hi v2, v0, s[16:17] offset:42261; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]2262; GFX90A-NEXT:    s_waitcnt vmcnt(0)2263; GFX90A-NEXT:    s_setpc_b64 s[30:31]2264;2265; GFX942-LABEL: v_shuffle_v3i16_v4i16__4_1_1:2266; GFX942:       ; %bb.0:2267; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2268; GFX942-NEXT:    v_mov_b32_e32 v2, 02269; GFX942-NEXT:    ;;#ASMSTART2270; GFX942-NEXT:    ; def v[0:1]2271; GFX942-NEXT:    ;;#ASMEND2272; GFX942-NEXT:    global_store_short_d16_hi v2, v0, s[0:1] offset:42273; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]2274; GFX942-NEXT:    s_waitcnt vmcnt(0)2275; GFX942-NEXT:    s_setpc_b64 s[30:31]2276  %vec0 = call <4 x i16> asm "; def $0", "=v"()2277  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 4, i32 1, i32 1>2278  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 82279  ret void2280}2281 2282define void @v_shuffle_v3i16_v4i16__5_1_1(ptr addrspace(1) inreg %ptr) {2283; GFX900-LABEL: v_shuffle_v3i16_v4i16__5_1_1:2284; GFX900:       ; %bb.0:2285; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2286; GFX900-NEXT:    ;;#ASMSTART2287; GFX900-NEXT:    ; def v[0:1]2288; GFX900-NEXT:    ;;#ASMEND2289; GFX900-NEXT:    ;;#ASMSTART2290; GFX900-NEXT:    ; def v[1:2]2291; GFX900-NEXT:    ;;#ASMEND2292; GFX900-NEXT:    s_mov_b32 s4, 0x70603022293; GFX900-NEXT:    v_mov_b32_e32 v3, 02294; GFX900-NEXT:    v_perm_b32 v1, v0, v1, s42295; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v02296; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]2297; GFX900-NEXT:    global_store_short v3, v0, s[16:17] offset:42298; GFX900-NEXT:    s_waitcnt vmcnt(0)2299; GFX900-NEXT:    s_setpc_b64 s[30:31]2300;2301; GFX90A-LABEL: v_shuffle_v3i16_v4i16__5_1_1:2302; GFX90A:       ; %bb.0:2303; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2304; GFX90A-NEXT:    ;;#ASMSTART2305; GFX90A-NEXT:    ; def v[0:1]2306; GFX90A-NEXT:    ;;#ASMEND2307; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022308; GFX90A-NEXT:    v_mov_b32_e32 v4, 02309; GFX90A-NEXT:    ;;#ASMSTART2310; GFX90A-NEXT:    ; def v[2:3]2311; GFX90A-NEXT:    ;;#ASMEND2312; GFX90A-NEXT:    v_perm_b32 v1, v0, v2, s42313; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v02314; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]2315; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:42316; GFX90A-NEXT:    s_waitcnt vmcnt(0)2317; GFX90A-NEXT:    s_setpc_b64 s[30:31]2318;2319; GFX942-LABEL: v_shuffle_v3i16_v4i16__5_1_1:2320; GFX942:       ; %bb.0:2321; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2322; GFX942-NEXT:    ;;#ASMSTART2323; GFX942-NEXT:    ; def v[0:1]2324; GFX942-NEXT:    ;;#ASMEND2325; GFX942-NEXT:    s_mov_b32 s2, 0x70603022326; GFX942-NEXT:    v_mov_b32_e32 v4, 02327; GFX942-NEXT:    ;;#ASMSTART2328; GFX942-NEXT:    ; def v[2:3]2329; GFX942-NEXT:    ;;#ASMEND2330; GFX942-NEXT:    s_nop 02331; GFX942-NEXT:    v_perm_b32 v1, v0, v2, s22332; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v02333; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]2334; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:42335; GFX942-NEXT:    s_waitcnt vmcnt(0)2336; GFX942-NEXT:    s_setpc_b64 s[30:31]2337  %vec0 = call <4 x i16> asm "; def $0", "=v"()2338  %vec1 = call <4 x i16> asm "; def $0", "=v"()2339  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 5, i32 1, i32 1>2340  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 82341  ret void2342}2343 2344define void @v_shuffle_v3i16_v4i16__6_1_1(ptr addrspace(1) inreg %ptr) {2345; GFX900-LABEL: v_shuffle_v3i16_v4i16__6_1_1:2346; GFX900:       ; %bb.0:2347; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2348; GFX900-NEXT:    ;;#ASMSTART2349; GFX900-NEXT:    ; def v[0:1]2350; GFX900-NEXT:    ;;#ASMEND2351; GFX900-NEXT:    ;;#ASMSTART2352; GFX900-NEXT:    ; def v[1:2]2353; GFX900-NEXT:    ;;#ASMEND2354; GFX900-NEXT:    s_mov_b32 s4, 0xffff2355; GFX900-NEXT:    v_mov_b32_e32 v3, 02356; GFX900-NEXT:    v_bfi_b32 v1, s4, v2, v02357; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v02358; GFX900-NEXT:    global_store_short v3, v0, s[16:17] offset:42359; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]2360; GFX900-NEXT:    s_waitcnt vmcnt(0)2361; GFX900-NEXT:    s_setpc_b64 s[30:31]2362;2363; GFX90A-LABEL: v_shuffle_v3i16_v4i16__6_1_1:2364; GFX90A:       ; %bb.0:2365; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2366; GFX90A-NEXT:    ;;#ASMSTART2367; GFX90A-NEXT:    ; def v[0:1]2368; GFX90A-NEXT:    ;;#ASMEND2369; GFX90A-NEXT:    s_mov_b32 s4, 0xffff2370; GFX90A-NEXT:    v_mov_b32_e32 v4, 02371; GFX90A-NEXT:    ;;#ASMSTART2372; GFX90A-NEXT:    ; def v[2:3]2373; GFX90A-NEXT:    ;;#ASMEND2374; GFX90A-NEXT:    v_bfi_b32 v1, s4, v3, v02375; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v02376; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:42377; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]2378; GFX90A-NEXT:    s_waitcnt vmcnt(0)2379; GFX90A-NEXT:    s_setpc_b64 s[30:31]2380;2381; GFX942-LABEL: v_shuffle_v3i16_v4i16__6_1_1:2382; GFX942:       ; %bb.0:2383; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2384; GFX942-NEXT:    ;;#ASMSTART2385; GFX942-NEXT:    ; def v[0:1]2386; GFX942-NEXT:    ;;#ASMEND2387; GFX942-NEXT:    s_mov_b32 s2, 0xffff2388; GFX942-NEXT:    v_mov_b32_e32 v4, 02389; GFX942-NEXT:    ;;#ASMSTART2390; GFX942-NEXT:    ; def v[2:3]2391; GFX942-NEXT:    ;;#ASMEND2392; GFX942-NEXT:    s_nop 02393; GFX942-NEXT:    v_bfi_b32 v1, s2, v3, v02394; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v02395; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:42396; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]2397; GFX942-NEXT:    s_waitcnt vmcnt(0)2398; GFX942-NEXT:    s_setpc_b64 s[30:31]2399  %vec0 = call <4 x i16> asm "; def $0", "=v"()2400  %vec1 = call <4 x i16> asm "; def $0", "=v"()2401  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 6, i32 1, i32 1>2402  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 82403  ret void2404}2405 2406define void @v_shuffle_v3i16_v4i16__7_1_1(ptr addrspace(1) inreg %ptr) {2407; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_1_1:2408; GFX900:       ; %bb.0:2409; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2410; GFX900-NEXT:    ;;#ASMSTART2411; GFX900-NEXT:    ; def v[0:1]2412; GFX900-NEXT:    ;;#ASMEND2413; GFX900-NEXT:    ;;#ASMSTART2414; GFX900-NEXT:    ; def v[1:2]2415; GFX900-NEXT:    ;;#ASMEND2416; GFX900-NEXT:    s_mov_b32 s4, 0x70603022417; GFX900-NEXT:    v_mov_b32_e32 v3, 02418; GFX900-NEXT:    v_perm_b32 v1, v0, v2, s42419; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v02420; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]2421; GFX900-NEXT:    global_store_short v3, v0, s[16:17] offset:42422; GFX900-NEXT:    s_waitcnt vmcnt(0)2423; GFX900-NEXT:    s_setpc_b64 s[30:31]2424;2425; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_1_1:2426; GFX90A:       ; %bb.0:2427; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2428; GFX90A-NEXT:    ;;#ASMSTART2429; GFX90A-NEXT:    ; def v[0:1]2430; GFX90A-NEXT:    ;;#ASMEND2431; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022432; GFX90A-NEXT:    v_mov_b32_e32 v4, 02433; GFX90A-NEXT:    ;;#ASMSTART2434; GFX90A-NEXT:    ; def v[2:3]2435; GFX90A-NEXT:    ;;#ASMEND2436; GFX90A-NEXT:    v_perm_b32 v1, v0, v3, s42437; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v02438; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]2439; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:42440; GFX90A-NEXT:    s_waitcnt vmcnt(0)2441; GFX90A-NEXT:    s_setpc_b64 s[30:31]2442;2443; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_1_1:2444; GFX942:       ; %bb.0:2445; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2446; GFX942-NEXT:    ;;#ASMSTART2447; GFX942-NEXT:    ; def v[0:1]2448; GFX942-NEXT:    ;;#ASMEND2449; GFX942-NEXT:    s_mov_b32 s2, 0x70603022450; GFX942-NEXT:    v_mov_b32_e32 v4, 02451; GFX942-NEXT:    ;;#ASMSTART2452; GFX942-NEXT:    ; def v[2:3]2453; GFX942-NEXT:    ;;#ASMEND2454; GFX942-NEXT:    s_nop 02455; GFX942-NEXT:    v_perm_b32 v1, v0, v3, s22456; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v02457; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]2458; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:42459; GFX942-NEXT:    s_waitcnt vmcnt(0)2460; GFX942-NEXT:    s_setpc_b64 s[30:31]2461  %vec0 = call <4 x i16> asm "; def $0", "=v"()2462  %vec1 = call <4 x i16> asm "; def $0", "=v"()2463  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 1, i32 1>2464  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 82465  ret void2466}2467 2468define void @v_shuffle_v3i16_v4i16__7_u_1(ptr addrspace(1) inreg %ptr) {2469; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_u_1:2470; GFX900:       ; %bb.0:2471; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2472; GFX900-NEXT:    ;;#ASMSTART2473; GFX900-NEXT:    ; def v[0:1]2474; GFX900-NEXT:    ;;#ASMEND2475; GFX900-NEXT:    v_mov_b32_e32 v3, 02476; GFX900-NEXT:    ;;#ASMSTART2477; GFX900-NEXT:    ; def v[1:2]2478; GFX900-NEXT:    ;;#ASMEND2479; GFX900-NEXT:    v_alignbit_b32 v1, s4, v2, 162480; GFX900-NEXT:    global_store_short_d16_hi v3, v0, s[16:17] offset:42481; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]2482; GFX900-NEXT:    s_waitcnt vmcnt(0)2483; GFX900-NEXT:    s_setpc_b64 s[30:31]2484;2485; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_u_1:2486; GFX90A:       ; %bb.0:2487; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2488; GFX90A-NEXT:    v_mov_b32_e32 v4, 02489; GFX90A-NEXT:    ;;#ASMSTART2490; GFX90A-NEXT:    ; def v[0:1]2491; GFX90A-NEXT:    ;;#ASMEND2492; GFX90A-NEXT:    ;;#ASMSTART2493; GFX90A-NEXT:    ; def v[2:3]2494; GFX90A-NEXT:    ;;#ASMEND2495; GFX90A-NEXT:    v_alignbit_b32 v1, s4, v3, 162496; GFX90A-NEXT:    global_store_short_d16_hi v4, v0, s[16:17] offset:42497; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]2498; GFX90A-NEXT:    s_waitcnt vmcnt(0)2499; GFX90A-NEXT:    s_setpc_b64 s[30:31]2500;2501; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_u_1:2502; GFX942:       ; %bb.0:2503; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2504; GFX942-NEXT:    v_mov_b32_e32 v4, 02505; GFX942-NEXT:    ;;#ASMSTART2506; GFX942-NEXT:    ; def v[0:1]2507; GFX942-NEXT:    ;;#ASMEND2508; GFX942-NEXT:    ;;#ASMSTART2509; GFX942-NEXT:    ; def v[2:3]2510; GFX942-NEXT:    ;;#ASMEND2511; GFX942-NEXT:    s_nop 02512; GFX942-NEXT:    v_alignbit_b32 v1, s0, v3, 162513; GFX942-NEXT:    global_store_short_d16_hi v4, v0, s[0:1] offset:42514; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]2515; GFX942-NEXT:    s_waitcnt vmcnt(0)2516; GFX942-NEXT:    s_setpc_b64 s[30:31]2517  %vec0 = call <4 x i16> asm "; def $0", "=v"()2518  %vec1 = call <4 x i16> asm "; def $0", "=v"()2519  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 poison, i32 1>2520  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 82521  ret void2522}2523 2524define void @v_shuffle_v3i16_v4i16__7_0_1(ptr addrspace(1) inreg %ptr) {2525; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_0_1:2526; GFX900:       ; %bb.0:2527; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2528; GFX900-NEXT:    ;;#ASMSTART2529; GFX900-NEXT:    ; def v[0:1]2530; GFX900-NEXT:    ;;#ASMEND2531; GFX900-NEXT:    v_mov_b32_e32 v3, 02532; GFX900-NEXT:    ;;#ASMSTART2533; GFX900-NEXT:    ; def v[1:2]2534; GFX900-NEXT:    ;;#ASMEND2535; GFX900-NEXT:    v_alignbit_b32 v1, v0, v2, 162536; GFX900-NEXT:    global_store_short_d16_hi v3, v0, s[16:17] offset:42537; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]2538; GFX900-NEXT:    s_waitcnt vmcnt(0)2539; GFX900-NEXT:    s_setpc_b64 s[30:31]2540;2541; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_0_1:2542; GFX90A:       ; %bb.0:2543; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2544; GFX90A-NEXT:    v_mov_b32_e32 v4, 02545; GFX90A-NEXT:    ;;#ASMSTART2546; GFX90A-NEXT:    ; def v[0:1]2547; GFX90A-NEXT:    ;;#ASMEND2548; GFX90A-NEXT:    ;;#ASMSTART2549; GFX90A-NEXT:    ; def v[2:3]2550; GFX90A-NEXT:    ;;#ASMEND2551; GFX90A-NEXT:    v_alignbit_b32 v1, v0, v3, 162552; GFX90A-NEXT:    global_store_short_d16_hi v4, v0, s[16:17] offset:42553; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]2554; GFX90A-NEXT:    s_waitcnt vmcnt(0)2555; GFX90A-NEXT:    s_setpc_b64 s[30:31]2556;2557; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_0_1:2558; GFX942:       ; %bb.0:2559; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2560; GFX942-NEXT:    v_mov_b32_e32 v4, 02561; GFX942-NEXT:    ;;#ASMSTART2562; GFX942-NEXT:    ; def v[0:1]2563; GFX942-NEXT:    ;;#ASMEND2564; GFX942-NEXT:    ;;#ASMSTART2565; GFX942-NEXT:    ; def v[2:3]2566; GFX942-NEXT:    ;;#ASMEND2567; GFX942-NEXT:    s_nop 02568; GFX942-NEXT:    v_alignbit_b32 v1, v0, v3, 162569; GFX942-NEXT:    global_store_short_d16_hi v4, v0, s[0:1] offset:42570; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]2571; GFX942-NEXT:    s_waitcnt vmcnt(0)2572; GFX942-NEXT:    s_setpc_b64 s[30:31]2573  %vec0 = call <4 x i16> asm "; def $0", "=v"()2574  %vec1 = call <4 x i16> asm "; def $0", "=v"()2575  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 0, i32 1>2576  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 82577  ret void2578}2579 2580define void @v_shuffle_v3i16_v4i16__7_2_1(ptr addrspace(1) inreg %ptr) {2581; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_2_1:2582; GFX900:       ; %bb.0:2583; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2584; GFX900-NEXT:    v_mov_b32_e32 v4, 02585; GFX900-NEXT:    ;;#ASMSTART2586; GFX900-NEXT:    ; def v[0:1]2587; GFX900-NEXT:    ;;#ASMEND2588; GFX900-NEXT:    ;;#ASMSTART2589; GFX900-NEXT:    ; def v[2:3]2590; GFX900-NEXT:    ;;#ASMEND2591; GFX900-NEXT:    v_alignbit_b32 v1, v1, v3, 162592; GFX900-NEXT:    global_store_short_d16_hi v4, v0, s[16:17] offset:42593; GFX900-NEXT:    global_store_dword v4, v1, s[16:17]2594; GFX900-NEXT:    s_waitcnt vmcnt(0)2595; GFX900-NEXT:    s_setpc_b64 s[30:31]2596;2597; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_2_1:2598; GFX90A:       ; %bb.0:2599; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2600; GFX90A-NEXT:    v_mov_b32_e32 v4, 02601; GFX90A-NEXT:    ;;#ASMSTART2602; GFX90A-NEXT:    ; def v[0:1]2603; GFX90A-NEXT:    ;;#ASMEND2604; GFX90A-NEXT:    ;;#ASMSTART2605; GFX90A-NEXT:    ; def v[2:3]2606; GFX90A-NEXT:    ;;#ASMEND2607; GFX90A-NEXT:    v_alignbit_b32 v1, v1, v3, 162608; GFX90A-NEXT:    global_store_short_d16_hi v4, v0, s[16:17] offset:42609; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]2610; GFX90A-NEXT:    s_waitcnt vmcnt(0)2611; GFX90A-NEXT:    s_setpc_b64 s[30:31]2612;2613; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_2_1:2614; GFX942:       ; %bb.0:2615; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2616; GFX942-NEXT:    v_mov_b32_e32 v4, 02617; GFX942-NEXT:    ;;#ASMSTART2618; GFX942-NEXT:    ; def v[0:1]2619; GFX942-NEXT:    ;;#ASMEND2620; GFX942-NEXT:    ;;#ASMSTART2621; GFX942-NEXT:    ; def v[2:3]2622; GFX942-NEXT:    ;;#ASMEND2623; GFX942-NEXT:    s_nop 02624; GFX942-NEXT:    v_alignbit_b32 v1, v1, v3, 162625; GFX942-NEXT:    global_store_short_d16_hi v4, v0, s[0:1] offset:42626; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]2627; GFX942-NEXT:    s_waitcnt vmcnt(0)2628; GFX942-NEXT:    s_setpc_b64 s[30:31]2629  %vec0 = call <4 x i16> asm "; def $0", "=v"()2630  %vec1 = call <4 x i16> asm "; def $0", "=v"()2631  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 2, i32 1>2632  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 82633  ret void2634}2635 2636define void @v_shuffle_v3i16_v4i16__7_3_1(ptr addrspace(1) inreg %ptr) {2637; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_3_1:2638; GFX900:       ; %bb.0:2639; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2640; GFX900-NEXT:    v_mov_b32_e32 v4, 02641; GFX900-NEXT:    ;;#ASMSTART2642; GFX900-NEXT:    ; def v[0:1]2643; GFX900-NEXT:    ;;#ASMEND2644; GFX900-NEXT:    s_mov_b32 s4, 0x70603022645; GFX900-NEXT:    ;;#ASMSTART2646; GFX900-NEXT:    ; def v[2:3]2647; GFX900-NEXT:    ;;#ASMEND2648; GFX900-NEXT:    v_perm_b32 v1, v1, v3, s42649; GFX900-NEXT:    global_store_short_d16_hi v4, v0, s[16:17] offset:42650; GFX900-NEXT:    global_store_dword v4, v1, s[16:17]2651; GFX900-NEXT:    s_waitcnt vmcnt(0)2652; GFX900-NEXT:    s_setpc_b64 s[30:31]2653;2654; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_3_1:2655; GFX90A:       ; %bb.0:2656; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2657; GFX90A-NEXT:    v_mov_b32_e32 v4, 02658; GFX90A-NEXT:    ;;#ASMSTART2659; GFX90A-NEXT:    ; def v[0:1]2660; GFX90A-NEXT:    ;;#ASMEND2661; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022662; GFX90A-NEXT:    ;;#ASMSTART2663; GFX90A-NEXT:    ; def v[2:3]2664; GFX90A-NEXT:    ;;#ASMEND2665; GFX90A-NEXT:    v_perm_b32 v1, v1, v3, s42666; GFX90A-NEXT:    global_store_short_d16_hi v4, v0, s[16:17] offset:42667; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]2668; GFX90A-NEXT:    s_waitcnt vmcnt(0)2669; GFX90A-NEXT:    s_setpc_b64 s[30:31]2670;2671; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_3_1:2672; GFX942:       ; %bb.0:2673; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2674; GFX942-NEXT:    v_mov_b32_e32 v4, 02675; GFX942-NEXT:    ;;#ASMSTART2676; GFX942-NEXT:    ; def v[0:1]2677; GFX942-NEXT:    ;;#ASMEND2678; GFX942-NEXT:    s_mov_b32 s2, 0x70603022679; GFX942-NEXT:    ;;#ASMSTART2680; GFX942-NEXT:    ; def v[2:3]2681; GFX942-NEXT:    ;;#ASMEND2682; GFX942-NEXT:    s_nop 02683; GFX942-NEXT:    v_perm_b32 v1, v1, v3, s22684; GFX942-NEXT:    global_store_short_d16_hi v4, v0, s[0:1] offset:42685; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]2686; GFX942-NEXT:    s_waitcnt vmcnt(0)2687; GFX942-NEXT:    s_setpc_b64 s[30:31]2688  %vec0 = call <4 x i16> asm "; def $0", "=v"()2689  %vec1 = call <4 x i16> asm "; def $0", "=v"()2690  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 3, i32 1>2691  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 82692  ret void2693}2694 2695define void @v_shuffle_v3i16_v4i16__7_4_1(ptr addrspace(1) inreg %ptr) {2696; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_4_1:2697; GFX900:       ; %bb.0:2698; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2699; GFX900-NEXT:    ;;#ASMSTART2700; GFX900-NEXT:    ; def v[0:1]2701; GFX900-NEXT:    ;;#ASMEND2702; GFX900-NEXT:    v_mov_b32_e32 v3, 02703; GFX900-NEXT:    ;;#ASMSTART2704; GFX900-NEXT:    ; def v[1:2]2705; GFX900-NEXT:    ;;#ASMEND2706; GFX900-NEXT:    v_alignbit_b32 v1, v1, v2, 162707; GFX900-NEXT:    global_store_short_d16_hi v3, v0, s[16:17] offset:42708; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]2709; GFX900-NEXT:    s_waitcnt vmcnt(0)2710; GFX900-NEXT:    s_setpc_b64 s[30:31]2711;2712; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_4_1:2713; GFX90A:       ; %bb.0:2714; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2715; GFX90A-NEXT:    v_mov_b32_e32 v4, 02716; GFX90A-NEXT:    ;;#ASMSTART2717; GFX90A-NEXT:    ; def v[0:1]2718; GFX90A-NEXT:    ;;#ASMEND2719; GFX90A-NEXT:    ;;#ASMSTART2720; GFX90A-NEXT:    ; def v[2:3]2721; GFX90A-NEXT:    ;;#ASMEND2722; GFX90A-NEXT:    v_alignbit_b32 v1, v2, v3, 162723; GFX90A-NEXT:    global_store_short_d16_hi v4, v0, s[16:17] offset:42724; GFX90A-NEXT:    global_store_dword v4, v1, 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_v3i16_v4i16__7_4_1:2729; GFX942:       ; %bb.0:2730; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2731; GFX942-NEXT:    v_mov_b32_e32 v4, 02732; GFX942-NEXT:    ;;#ASMSTART2733; GFX942-NEXT:    ; def v[0:1]2734; GFX942-NEXT:    ;;#ASMEND2735; GFX942-NEXT:    ;;#ASMSTART2736; GFX942-NEXT:    ; def v[2:3]2737; GFX942-NEXT:    ;;#ASMEND2738; GFX942-NEXT:    s_nop 02739; GFX942-NEXT:    v_alignbit_b32 v1, v2, v3, 162740; GFX942-NEXT:    global_store_short_d16_hi v4, v0, s[0:1] offset:42741; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]2742; GFX942-NEXT:    s_waitcnt vmcnt(0)2743; GFX942-NEXT:    s_setpc_b64 s[30:31]2744  %vec0 = call <4 x i16> asm "; def $0", "=v"()2745  %vec1 = call <4 x i16> asm "; def $0", "=v"()2746  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 4, i32 1>2747  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 82748  ret void2749}2750 2751define void @v_shuffle_v3i16_v4i16__7_5_1(ptr addrspace(1) inreg %ptr) {2752; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_5_1:2753; GFX900:       ; %bb.0:2754; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2755; GFX900-NEXT:    ;;#ASMSTART2756; GFX900-NEXT:    ; def v[0:1]2757; GFX900-NEXT:    ;;#ASMEND2758; GFX900-NEXT:    v_mov_b32_e32 v3, 02759; GFX900-NEXT:    ;;#ASMSTART2760; GFX900-NEXT:    ; def v[1:2]2761; GFX900-NEXT:    ;;#ASMEND2762; GFX900-NEXT:    s_mov_b32 s4, 0x70603022763; GFX900-NEXT:    v_perm_b32 v1, v1, v2, s42764; GFX900-NEXT:    global_store_short_d16_hi v3, v0, s[16:17] offset:42765; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]2766; GFX900-NEXT:    s_waitcnt vmcnt(0)2767; GFX900-NEXT:    s_setpc_b64 s[30:31]2768;2769; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_5_1:2770; GFX90A:       ; %bb.0:2771; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2772; GFX90A-NEXT:    v_mov_b32_e32 v4, 02773; GFX90A-NEXT:    ;;#ASMSTART2774; GFX90A-NEXT:    ; def v[0:1]2775; GFX90A-NEXT:    ;;#ASMEND2776; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022777; GFX90A-NEXT:    ;;#ASMSTART2778; GFX90A-NEXT:    ; def v[2:3]2779; GFX90A-NEXT:    ;;#ASMEND2780; GFX90A-NEXT:    v_perm_b32 v1, v2, v3, s42781; GFX90A-NEXT:    global_store_short_d16_hi v4, v0, s[16:17] offset:42782; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]2783; GFX90A-NEXT:    s_waitcnt vmcnt(0)2784; GFX90A-NEXT:    s_setpc_b64 s[30:31]2785;2786; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_5_1:2787; GFX942:       ; %bb.0:2788; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2789; GFX942-NEXT:    v_mov_b32_e32 v4, 02790; GFX942-NEXT:    ;;#ASMSTART2791; GFX942-NEXT:    ; def v[0:1]2792; GFX942-NEXT:    ;;#ASMEND2793; GFX942-NEXT:    s_mov_b32 s2, 0x70603022794; GFX942-NEXT:    ;;#ASMSTART2795; GFX942-NEXT:    ; def v[2:3]2796; GFX942-NEXT:    ;;#ASMEND2797; GFX942-NEXT:    s_nop 02798; GFX942-NEXT:    v_perm_b32 v1, v2, v3, s22799; GFX942-NEXT:    global_store_short_d16_hi v4, v0, s[0:1] offset:42800; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]2801; GFX942-NEXT:    s_waitcnt vmcnt(0)2802; GFX942-NEXT:    s_setpc_b64 s[30:31]2803  %vec0 = call <4 x i16> asm "; def $0", "=v"()2804  %vec1 = call <4 x i16> asm "; def $0", "=v"()2805  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 5, i32 1>2806  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 82807  ret void2808}2809 2810define void @v_shuffle_v3i16_v4i16__7_6_1(ptr addrspace(1) inreg %ptr) {2811; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_6_1:2812; GFX900:       ; %bb.0:2813; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2814; GFX900-NEXT:    ;;#ASMSTART2815; GFX900-NEXT:    ; def v[0:1]2816; GFX900-NEXT:    ;;#ASMEND2817; GFX900-NEXT:    v_mov_b32_e32 v3, 02818; GFX900-NEXT:    ;;#ASMSTART2819; GFX900-NEXT:    ; def v[1:2]2820; GFX900-NEXT:    ;;#ASMEND2821; GFX900-NEXT:    v_alignbit_b32 v1, v2, v2, 162822; GFX900-NEXT:    global_store_short_d16_hi v3, v0, s[16:17] offset:42823; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]2824; GFX900-NEXT:    s_waitcnt vmcnt(0)2825; GFX900-NEXT:    s_setpc_b64 s[30:31]2826;2827; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_6_1:2828; GFX90A:       ; %bb.0:2829; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2830; GFX90A-NEXT:    v_mov_b32_e32 v4, 02831; GFX90A-NEXT:    ;;#ASMSTART2832; GFX90A-NEXT:    ; def v[0:1]2833; GFX90A-NEXT:    ;;#ASMEND2834; GFX90A-NEXT:    ;;#ASMSTART2835; GFX90A-NEXT:    ; def v[2:3]2836; GFX90A-NEXT:    ;;#ASMEND2837; GFX90A-NEXT:    v_alignbit_b32 v1, v3, v3, 162838; GFX90A-NEXT:    global_store_short_d16_hi v4, v0, s[16:17] offset:42839; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]2840; GFX90A-NEXT:    s_waitcnt vmcnt(0)2841; GFX90A-NEXT:    s_setpc_b64 s[30:31]2842;2843; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_6_1:2844; GFX942:       ; %bb.0:2845; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2846; GFX942-NEXT:    v_mov_b32_e32 v4, 02847; GFX942-NEXT:    ;;#ASMSTART2848; GFX942-NEXT:    ; def v[0:1]2849; GFX942-NEXT:    ;;#ASMEND2850; GFX942-NEXT:    ;;#ASMSTART2851; GFX942-NEXT:    ; def v[2:3]2852; GFX942-NEXT:    ;;#ASMEND2853; GFX942-NEXT:    s_nop 02854; GFX942-NEXT:    v_alignbit_b32 v1, v3, v3, 162855; GFX942-NEXT:    global_store_short_d16_hi v4, v0, s[0:1] offset:42856; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]2857; GFX942-NEXT:    s_waitcnt vmcnt(0)2858; GFX942-NEXT:    s_setpc_b64 s[30:31]2859  %vec0 = call <4 x i16> asm "; def $0", "=v"()2860  %vec1 = call <4 x i16> asm "; def $0", "=v"()2861  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 6, i32 1>2862  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 82863  ret void2864}2865 2866define void @v_shuffle_v3i16_v4i16__u_2_2(ptr addrspace(1) inreg %ptr) {2867; GFX900-LABEL: v_shuffle_v3i16_v4i16__u_2_2:2868; GFX900:       ; %bb.0:2869; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2870; GFX900-NEXT:    v_mov_b32_e32 v2, 02871; GFX900-NEXT:    ;;#ASMSTART2872; GFX900-NEXT:    ; def v[0:1]2873; GFX900-NEXT:    ;;#ASMEND2874; GFX900-NEXT:    v_lshlrev_b32_e32 v0, 16, v12875; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:42876; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]2877; GFX900-NEXT:    s_waitcnt vmcnt(0)2878; GFX900-NEXT:    s_setpc_b64 s[30:31]2879;2880; GFX90A-LABEL: v_shuffle_v3i16_v4i16__u_2_2:2881; GFX90A:       ; %bb.0:2882; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2883; GFX90A-NEXT:    v_mov_b32_e32 v2, 02884; GFX90A-NEXT:    ;;#ASMSTART2885; GFX90A-NEXT:    ; def v[0:1]2886; GFX90A-NEXT:    ;;#ASMEND2887; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 16, v12888; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:42889; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]2890; GFX90A-NEXT:    s_waitcnt vmcnt(0)2891; GFX90A-NEXT:    s_setpc_b64 s[30:31]2892;2893; GFX942-LABEL: v_shuffle_v3i16_v4i16__u_2_2:2894; GFX942:       ; %bb.0:2895; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2896; GFX942-NEXT:    v_mov_b32_e32 v2, 02897; GFX942-NEXT:    ;;#ASMSTART2898; GFX942-NEXT:    ; def v[0:1]2899; GFX942-NEXT:    ;;#ASMEND2900; GFX942-NEXT:    s_nop 02901; GFX942-NEXT:    v_lshlrev_b32_e32 v0, 16, v12902; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:42903; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]2904; GFX942-NEXT:    s_waitcnt vmcnt(0)2905; GFX942-NEXT:    s_setpc_b64 s[30:31]2906  %vec0 = call <4 x i16> asm "; def $0", "=v"()2907  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 poison, i32 2, i32 2>2908  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 82909  ret void2910}2911 2912define void @v_shuffle_v3i16_v4i16__0_2_2(ptr addrspace(1) inreg %ptr) {2913; GFX900-LABEL: v_shuffle_v3i16_v4i16__0_2_2:2914; GFX900:       ; %bb.0:2915; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2916; GFX900-NEXT:    v_mov_b32_e32 v2, 02917; GFX900-NEXT:    ;;#ASMSTART2918; GFX900-NEXT:    ; def v[0:1]2919; GFX900-NEXT:    ;;#ASMEND2920; GFX900-NEXT:    s_mov_b32 s4, 0x50401002921; GFX900-NEXT:    v_perm_b32 v0, v1, v0, s42922; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:42923; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]2924; GFX900-NEXT:    s_waitcnt vmcnt(0)2925; GFX900-NEXT:    s_setpc_b64 s[30:31]2926;2927; GFX90A-LABEL: v_shuffle_v3i16_v4i16__0_2_2:2928; GFX90A:       ; %bb.0:2929; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2930; GFX90A-NEXT:    v_mov_b32_e32 v2, 02931; GFX90A-NEXT:    ;;#ASMSTART2932; GFX90A-NEXT:    ; def v[0:1]2933; GFX90A-NEXT:    ;;#ASMEND2934; GFX90A-NEXT:    s_mov_b32 s4, 0x50401002935; GFX90A-NEXT:    v_perm_b32 v0, v1, v0, s42936; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:42937; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]2938; GFX90A-NEXT:    s_waitcnt vmcnt(0)2939; GFX90A-NEXT:    s_setpc_b64 s[30:31]2940;2941; GFX942-LABEL: v_shuffle_v3i16_v4i16__0_2_2:2942; GFX942:       ; %bb.0:2943; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2944; GFX942-NEXT:    v_mov_b32_e32 v2, 02945; GFX942-NEXT:    ;;#ASMSTART2946; GFX942-NEXT:    ; def v[0:1]2947; GFX942-NEXT:    ;;#ASMEND2948; GFX942-NEXT:    s_mov_b32 s2, 0x50401002949; GFX942-NEXT:    v_perm_b32 v0, v1, v0, s22950; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:42951; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]2952; GFX942-NEXT:    s_waitcnt vmcnt(0)2953; GFX942-NEXT:    s_setpc_b64 s[30:31]2954  %vec0 = call <4 x i16> asm "; def $0", "=v"()2955  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 2, i32 2>2956  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 82957  ret void2958}2959 2960define void @v_shuffle_v3i16_v4i16__1_2_2(ptr addrspace(1) inreg %ptr) {2961; GFX900-LABEL: v_shuffle_v3i16_v4i16__1_2_2:2962; GFX900:       ; %bb.0:2963; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2964; GFX900-NEXT:    v_mov_b32_e32 v2, 02965; GFX900-NEXT:    ;;#ASMSTART2966; GFX900-NEXT:    ; def v[0:1]2967; GFX900-NEXT:    ;;#ASMEND2968; GFX900-NEXT:    v_alignbit_b32 v0, v1, v0, 162969; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:42970; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]2971; GFX900-NEXT:    s_waitcnt vmcnt(0)2972; GFX900-NEXT:    s_setpc_b64 s[30:31]2973;2974; GFX90A-LABEL: v_shuffle_v3i16_v4i16__1_2_2:2975; GFX90A:       ; %bb.0:2976; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2977; GFX90A-NEXT:    v_mov_b32_e32 v2, 02978; GFX90A-NEXT:    ;;#ASMSTART2979; GFX90A-NEXT:    ; def v[0:1]2980; GFX90A-NEXT:    ;;#ASMEND2981; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v0, 162982; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:42983; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]2984; GFX90A-NEXT:    s_waitcnt vmcnt(0)2985; GFX90A-NEXT:    s_setpc_b64 s[30:31]2986;2987; GFX942-LABEL: v_shuffle_v3i16_v4i16__1_2_2:2988; GFX942:       ; %bb.0:2989; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2990; GFX942-NEXT:    v_mov_b32_e32 v2, 02991; GFX942-NEXT:    ;;#ASMSTART2992; GFX942-NEXT:    ; def v[0:1]2993; GFX942-NEXT:    ;;#ASMEND2994; GFX942-NEXT:    s_nop 02995; GFX942-NEXT:    v_alignbit_b32 v0, v1, v0, 162996; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:42997; GFX942-NEXT:    global_store_dword v2, v0, 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  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 1, i32 2, i32 2>3002  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 83003  ret void3004}3005 3006define void @v_shuffle_v3i16_v4i16__2_2_2(ptr addrspace(1) inreg %ptr) {3007; GFX900-LABEL: v_shuffle_v3i16_v4i16__2_2_2:3008; GFX900:       ; %bb.0:3009; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3010; GFX900-NEXT:    v_mov_b32_e32 v2, 03011; GFX900-NEXT:    ;;#ASMSTART3012; GFX900-NEXT:    ; def v[0:1]3013; GFX900-NEXT:    ;;#ASMEND3014; GFX900-NEXT:    s_mov_b32 s4, 0x50401003015; GFX900-NEXT:    v_perm_b32 v0, v1, v1, s43016; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:43017; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]3018; GFX900-NEXT:    s_waitcnt vmcnt(0)3019; GFX900-NEXT:    s_setpc_b64 s[30:31]3020;3021; GFX90A-LABEL: v_shuffle_v3i16_v4i16__2_2_2:3022; GFX90A:       ; %bb.0:3023; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3024; GFX90A-NEXT:    v_mov_b32_e32 v2, 03025; GFX90A-NEXT:    ;;#ASMSTART3026; GFX90A-NEXT:    ; def v[0:1]3027; GFX90A-NEXT:    ;;#ASMEND3028; GFX90A-NEXT:    s_mov_b32 s4, 0x50401003029; GFX90A-NEXT:    v_perm_b32 v0, v1, v1, s43030; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:43031; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]3032; GFX90A-NEXT:    s_waitcnt vmcnt(0)3033; GFX90A-NEXT:    s_setpc_b64 s[30:31]3034;3035; GFX942-LABEL: v_shuffle_v3i16_v4i16__2_2_2:3036; GFX942:       ; %bb.0:3037; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3038; GFX942-NEXT:    v_mov_b32_e32 v2, 03039; GFX942-NEXT:    ;;#ASMSTART3040; GFX942-NEXT:    ; def v[0:1]3041; GFX942-NEXT:    ;;#ASMEND3042; GFX942-NEXT:    s_mov_b32 s2, 0x50401003043; GFX942-NEXT:    v_perm_b32 v0, v1, v1, s23044; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:43045; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]3046; GFX942-NEXT:    s_waitcnt vmcnt(0)3047; GFX942-NEXT:    s_setpc_b64 s[30:31]3048  %vec0 = call <4 x i16> asm "; def $0", "=v"()3049  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 2, i32 2, i32 2>3050  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 83051  ret void3052}3053 3054define void @v_shuffle_v3i16_v4i16__3_2_2(ptr addrspace(1) inreg %ptr) {3055; GFX900-LABEL: v_shuffle_v3i16_v4i16__3_2_2:3056; GFX900:       ; %bb.0:3057; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3058; GFX900-NEXT:    v_mov_b32_e32 v2, 03059; GFX900-NEXT:    ;;#ASMSTART3060; GFX900-NEXT:    ; def v[0:1]3061; GFX900-NEXT:    ;;#ASMEND3062; GFX900-NEXT:    v_alignbit_b32 v0, v1, v1, 163063; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:43064; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]3065; GFX900-NEXT:    s_waitcnt vmcnt(0)3066; GFX900-NEXT:    s_setpc_b64 s[30:31]3067;3068; GFX90A-LABEL: v_shuffle_v3i16_v4i16__3_2_2:3069; GFX90A:       ; %bb.0:3070; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3071; GFX90A-NEXT:    v_mov_b32_e32 v2, 03072; GFX90A-NEXT:    ;;#ASMSTART3073; GFX90A-NEXT:    ; def v[0:1]3074; GFX90A-NEXT:    ;;#ASMEND3075; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v1, 163076; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:43077; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]3078; GFX90A-NEXT:    s_waitcnt vmcnt(0)3079; GFX90A-NEXT:    s_setpc_b64 s[30:31]3080;3081; GFX942-LABEL: v_shuffle_v3i16_v4i16__3_2_2:3082; GFX942:       ; %bb.0:3083; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3084; GFX942-NEXT:    v_mov_b32_e32 v2, 03085; GFX942-NEXT:    ;;#ASMSTART3086; GFX942-NEXT:    ; def v[0:1]3087; GFX942-NEXT:    ;;#ASMEND3088; GFX942-NEXT:    s_nop 03089; GFX942-NEXT:    v_alignbit_b32 v0, v1, v1, 163090; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:43091; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]3092; GFX942-NEXT:    s_waitcnt vmcnt(0)3093; GFX942-NEXT:    s_setpc_b64 s[30:31]3094  %vec0 = call <4 x i16> asm "; def $0", "=v"()3095  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 3, i32 2, i32 2>3096  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 83097  ret void3098}3099 3100define void @v_shuffle_v3i16_v4i16__4_2_2(ptr addrspace(1) inreg %ptr) {3101; GFX900-LABEL: v_shuffle_v3i16_v4i16__4_2_2:3102; GFX900:       ; %bb.0:3103; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3104; GFX900-NEXT:    v_mov_b32_e32 v2, 03105; GFX900-NEXT:    ;;#ASMSTART3106; GFX900-NEXT:    ; def v[0:1]3107; GFX900-NEXT:    ;;#ASMEND3108; GFX900-NEXT:    v_lshlrev_b32_e32 v0, 16, v13109; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:43110; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]3111; GFX900-NEXT:    s_waitcnt vmcnt(0)3112; GFX900-NEXT:    s_setpc_b64 s[30:31]3113;3114; GFX90A-LABEL: v_shuffle_v3i16_v4i16__4_2_2:3115; GFX90A:       ; %bb.0:3116; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3117; GFX90A-NEXT:    v_mov_b32_e32 v2, 03118; GFX90A-NEXT:    ;;#ASMSTART3119; GFX90A-NEXT:    ; def v[0:1]3120; GFX90A-NEXT:    ;;#ASMEND3121; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 16, v13122; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:43123; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]3124; GFX90A-NEXT:    s_waitcnt vmcnt(0)3125; GFX90A-NEXT:    s_setpc_b64 s[30:31]3126;3127; GFX942-LABEL: v_shuffle_v3i16_v4i16__4_2_2:3128; GFX942:       ; %bb.0:3129; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3130; GFX942-NEXT:    v_mov_b32_e32 v2, 03131; GFX942-NEXT:    ;;#ASMSTART3132; GFX942-NEXT:    ; def v[0:1]3133; GFX942-NEXT:    ;;#ASMEND3134; GFX942-NEXT:    s_nop 03135; GFX942-NEXT:    v_lshlrev_b32_e32 v0, 16, v13136; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:43137; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]3138; GFX942-NEXT:    s_waitcnt vmcnt(0)3139; GFX942-NEXT:    s_setpc_b64 s[30:31]3140  %vec0 = call <4 x i16> asm "; def $0", "=v"()3141  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 4, i32 2, i32 2>3142  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 83143  ret void3144}3145 3146define void @v_shuffle_v3i16_v4i16__5_2_2(ptr addrspace(1) inreg %ptr) {3147; GFX900-LABEL: v_shuffle_v3i16_v4i16__5_2_2:3148; GFX900:       ; %bb.0:3149; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3150; GFX900-NEXT:    v_mov_b32_e32 v4, 03151; GFX900-NEXT:    ;;#ASMSTART3152; GFX900-NEXT:    ; def v[0:1]3153; GFX900-NEXT:    ;;#ASMEND3154; GFX900-NEXT:    ;;#ASMSTART3155; GFX900-NEXT:    ; def v[2:3]3156; GFX900-NEXT:    ;;#ASMEND3157; GFX900-NEXT:    v_alignbit_b32 v0, v1, v2, 163158; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:43159; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]3160; GFX900-NEXT:    s_waitcnt vmcnt(0)3161; GFX900-NEXT:    s_setpc_b64 s[30:31]3162;3163; GFX90A-LABEL: v_shuffle_v3i16_v4i16__5_2_2:3164; GFX90A:       ; %bb.0:3165; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3166; GFX90A-NEXT:    v_mov_b32_e32 v4, 03167; GFX90A-NEXT:    ;;#ASMSTART3168; GFX90A-NEXT:    ; def v[0:1]3169; GFX90A-NEXT:    ;;#ASMEND3170; GFX90A-NEXT:    ;;#ASMSTART3171; GFX90A-NEXT:    ; def v[2:3]3172; GFX90A-NEXT:    ;;#ASMEND3173; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v2, 163174; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:43175; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]3176; GFX90A-NEXT:    s_waitcnt vmcnt(0)3177; GFX90A-NEXT:    s_setpc_b64 s[30:31]3178;3179; GFX942-LABEL: v_shuffle_v3i16_v4i16__5_2_2:3180; GFX942:       ; %bb.0:3181; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3182; GFX942-NEXT:    v_mov_b32_e32 v4, 03183; GFX942-NEXT:    ;;#ASMSTART3184; GFX942-NEXT:    ; def v[0:1]3185; GFX942-NEXT:    ;;#ASMEND3186; GFX942-NEXT:    ;;#ASMSTART3187; GFX942-NEXT:    ; def v[2:3]3188; GFX942-NEXT:    ;;#ASMEND3189; GFX942-NEXT:    s_nop 03190; GFX942-NEXT:    v_alignbit_b32 v0, v1, v2, 163191; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:43192; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]3193; GFX942-NEXT:    s_waitcnt vmcnt(0)3194; GFX942-NEXT:    s_setpc_b64 s[30:31]3195  %vec0 = call <4 x i16> asm "; def $0", "=v"()3196  %vec1 = call <4 x i16> asm "; def $0", "=v"()3197  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 5, i32 2, i32 2>3198  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 83199  ret void3200}3201 3202define void @v_shuffle_v3i16_v4i16__6_2_2(ptr addrspace(1) inreg %ptr) {3203; GFX900-LABEL: v_shuffle_v3i16_v4i16__6_2_2:3204; GFX900:       ; %bb.0:3205; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3206; GFX900-NEXT:    v_mov_b32_e32 v4, 03207; GFX900-NEXT:    ;;#ASMSTART3208; GFX900-NEXT:    ; def v[0:1]3209; GFX900-NEXT:    ;;#ASMEND3210; GFX900-NEXT:    s_mov_b32 s4, 0x50401003211; GFX900-NEXT:    ;;#ASMSTART3212; GFX900-NEXT:    ; def v[2:3]3213; GFX900-NEXT:    ;;#ASMEND3214; GFX900-NEXT:    v_perm_b32 v0, v1, v3, s43215; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:43216; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]3217; GFX900-NEXT:    s_waitcnt vmcnt(0)3218; GFX900-NEXT:    s_setpc_b64 s[30:31]3219;3220; GFX90A-LABEL: v_shuffle_v3i16_v4i16__6_2_2:3221; GFX90A:       ; %bb.0:3222; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3223; GFX90A-NEXT:    v_mov_b32_e32 v4, 03224; GFX90A-NEXT:    ;;#ASMSTART3225; GFX90A-NEXT:    ; def v[0:1]3226; GFX90A-NEXT:    ;;#ASMEND3227; GFX90A-NEXT:    s_mov_b32 s4, 0x50401003228; GFX90A-NEXT:    ;;#ASMSTART3229; GFX90A-NEXT:    ; def v[2:3]3230; GFX90A-NEXT:    ;;#ASMEND3231; GFX90A-NEXT:    v_perm_b32 v0, v1, v3, s43232; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:43233; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]3234; GFX90A-NEXT:    s_waitcnt vmcnt(0)3235; GFX90A-NEXT:    s_setpc_b64 s[30:31]3236;3237; GFX942-LABEL: v_shuffle_v3i16_v4i16__6_2_2:3238; GFX942:       ; %bb.0:3239; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3240; GFX942-NEXT:    v_mov_b32_e32 v4, 03241; GFX942-NEXT:    ;;#ASMSTART3242; GFX942-NEXT:    ; def v[0:1]3243; GFX942-NEXT:    ;;#ASMEND3244; GFX942-NEXT:    s_mov_b32 s2, 0x50401003245; GFX942-NEXT:    ;;#ASMSTART3246; GFX942-NEXT:    ; def v[2:3]3247; GFX942-NEXT:    ;;#ASMEND3248; GFX942-NEXT:    s_nop 03249; GFX942-NEXT:    v_perm_b32 v0, v1, v3, s23250; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:43251; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]3252; GFX942-NEXT:    s_waitcnt vmcnt(0)3253; GFX942-NEXT:    s_setpc_b64 s[30:31]3254  %vec0 = call <4 x i16> asm "; def $0", "=v"()3255  %vec1 = call <4 x i16> asm "; def $0", "=v"()3256  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 6, i32 2, i32 2>3257  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 83258  ret void3259}3260 3261define void @v_shuffle_v3i16_v4i16__7_2_2(ptr addrspace(1) inreg %ptr) {3262; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_2_2:3263; GFX900:       ; %bb.0:3264; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3265; GFX900-NEXT:    v_mov_b32_e32 v4, 03266; GFX900-NEXT:    ;;#ASMSTART3267; GFX900-NEXT:    ; def v[0:1]3268; GFX900-NEXT:    ;;#ASMEND3269; GFX900-NEXT:    ;;#ASMSTART3270; GFX900-NEXT:    ; def v[2:3]3271; GFX900-NEXT:    ;;#ASMEND3272; GFX900-NEXT:    v_alignbit_b32 v0, v1, v3, 163273; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:43274; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]3275; GFX900-NEXT:    s_waitcnt vmcnt(0)3276; GFX900-NEXT:    s_setpc_b64 s[30:31]3277;3278; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_2_2:3279; GFX90A:       ; %bb.0:3280; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3281; GFX90A-NEXT:    v_mov_b32_e32 v4, 03282; GFX90A-NEXT:    ;;#ASMSTART3283; GFX90A-NEXT:    ; def v[0:1]3284; GFX90A-NEXT:    ;;#ASMEND3285; GFX90A-NEXT:    ;;#ASMSTART3286; GFX90A-NEXT:    ; def v[2:3]3287; GFX90A-NEXT:    ;;#ASMEND3288; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v3, 163289; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:43290; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]3291; GFX90A-NEXT:    s_waitcnt vmcnt(0)3292; GFX90A-NEXT:    s_setpc_b64 s[30:31]3293;3294; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_2_2:3295; GFX942:       ; %bb.0:3296; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3297; GFX942-NEXT:    v_mov_b32_e32 v4, 03298; GFX942-NEXT:    ;;#ASMSTART3299; GFX942-NEXT:    ; def v[0:1]3300; GFX942-NEXT:    ;;#ASMEND3301; GFX942-NEXT:    ;;#ASMSTART3302; GFX942-NEXT:    ; def v[2:3]3303; GFX942-NEXT:    ;;#ASMEND3304; GFX942-NEXT:    s_nop 03305; GFX942-NEXT:    v_alignbit_b32 v0, v1, v3, 163306; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:43307; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]3308; GFX942-NEXT:    s_waitcnt vmcnt(0)3309; GFX942-NEXT:    s_setpc_b64 s[30:31]3310  %vec0 = call <4 x i16> asm "; def $0", "=v"()3311  %vec1 = call <4 x i16> asm "; def $0", "=v"()3312  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 2, i32 2>3313  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 83314  ret void3315}3316 3317define void @v_shuffle_v3i16_v4i16__7_u_2(ptr addrspace(1) inreg %ptr) {3318; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_u_2:3319; GFX900:       ; %bb.0:3320; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3321; GFX900-NEXT:    v_mov_b32_e32 v4, 03322; GFX900-NEXT:    ;;#ASMSTART3323; GFX900-NEXT:    ; def v[0:1]3324; GFX900-NEXT:    ;;#ASMEND3325; GFX900-NEXT:    ;;#ASMSTART3326; GFX900-NEXT:    ; def v[2:3]3327; GFX900-NEXT:    ;;#ASMEND3328; GFX900-NEXT:    v_alignbit_b32 v0, s4, v3, 163329; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:43330; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]3331; GFX900-NEXT:    s_waitcnt vmcnt(0)3332; GFX900-NEXT:    s_setpc_b64 s[30:31]3333;3334; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_u_2:3335; GFX90A:       ; %bb.0:3336; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3337; GFX90A-NEXT:    v_mov_b32_e32 v4, 03338; GFX90A-NEXT:    ;;#ASMSTART3339; GFX90A-NEXT:    ; def v[0:1]3340; GFX90A-NEXT:    ;;#ASMEND3341; GFX90A-NEXT:    ;;#ASMSTART3342; GFX90A-NEXT:    ; def v[2:3]3343; GFX90A-NEXT:    ;;#ASMEND3344; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v3, 163345; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:43346; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]3347; GFX90A-NEXT:    s_waitcnt vmcnt(0)3348; GFX90A-NEXT:    s_setpc_b64 s[30:31]3349;3350; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_u_2:3351; GFX942:       ; %bb.0:3352; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3353; GFX942-NEXT:    v_mov_b32_e32 v4, 03354; GFX942-NEXT:    ;;#ASMSTART3355; GFX942-NEXT:    ; def v[0:1]3356; GFX942-NEXT:    ;;#ASMEND3357; GFX942-NEXT:    ;;#ASMSTART3358; GFX942-NEXT:    ; def v[2:3]3359; GFX942-NEXT:    ;;#ASMEND3360; GFX942-NEXT:    s_nop 03361; GFX942-NEXT:    v_alignbit_b32 v0, s0, v3, 163362; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:43363; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]3364; GFX942-NEXT:    s_waitcnt vmcnt(0)3365; GFX942-NEXT:    s_setpc_b64 s[30:31]3366  %vec0 = call <4 x i16> asm "; def $0", "=v"()3367  %vec1 = call <4 x i16> asm "; def $0", "=v"()3368  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 poison, i32 2>3369  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 83370  ret void3371}3372 3373define void @v_shuffle_v3i16_v4i16__7_0_2(ptr addrspace(1) inreg %ptr) {3374; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_0_2:3375; GFX900:       ; %bb.0:3376; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3377; GFX900-NEXT:    v_mov_b32_e32 v4, 03378; GFX900-NEXT:    ;;#ASMSTART3379; GFX900-NEXT:    ; def v[0:1]3380; GFX900-NEXT:    ;;#ASMEND3381; GFX900-NEXT:    ;;#ASMSTART3382; GFX900-NEXT:    ; def v[2:3]3383; GFX900-NEXT:    ;;#ASMEND3384; GFX900-NEXT:    v_alignbit_b32 v0, v0, v3, 163385; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:43386; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]3387; GFX900-NEXT:    s_waitcnt vmcnt(0)3388; GFX900-NEXT:    s_setpc_b64 s[30:31]3389;3390; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_0_2:3391; GFX90A:       ; %bb.0:3392; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3393; GFX90A-NEXT:    v_mov_b32_e32 v4, 03394; GFX90A-NEXT:    ;;#ASMSTART3395; GFX90A-NEXT:    ; def v[0:1]3396; GFX90A-NEXT:    ;;#ASMEND3397; GFX90A-NEXT:    ;;#ASMSTART3398; GFX90A-NEXT:    ; def v[2:3]3399; GFX90A-NEXT:    ;;#ASMEND3400; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v3, 163401; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:43402; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]3403; GFX90A-NEXT:    s_waitcnt vmcnt(0)3404; GFX90A-NEXT:    s_setpc_b64 s[30:31]3405;3406; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_0_2:3407; GFX942:       ; %bb.0:3408; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3409; GFX942-NEXT:    v_mov_b32_e32 v4, 03410; GFX942-NEXT:    ;;#ASMSTART3411; GFX942-NEXT:    ; def v[0:1]3412; GFX942-NEXT:    ;;#ASMEND3413; GFX942-NEXT:    ;;#ASMSTART3414; GFX942-NEXT:    ; def v[2:3]3415; GFX942-NEXT:    ;;#ASMEND3416; GFX942-NEXT:    s_nop 03417; GFX942-NEXT:    v_alignbit_b32 v0, v0, v3, 163418; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:43419; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]3420; GFX942-NEXT:    s_waitcnt vmcnt(0)3421; GFX942-NEXT:    s_setpc_b64 s[30:31]3422  %vec0 = call <4 x i16> asm "; def $0", "=v"()3423  %vec1 = call <4 x i16> asm "; def $0", "=v"()3424  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 0, i32 2>3425  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 83426  ret void3427}3428 3429define void @v_shuffle_v3i16_v4i16__7_1_2(ptr addrspace(1) inreg %ptr) {3430; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_1_2:3431; GFX900:       ; %bb.0:3432; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3433; GFX900-NEXT:    v_mov_b32_e32 v4, 03434; GFX900-NEXT:    ;;#ASMSTART3435; GFX900-NEXT:    ; def v[0:1]3436; GFX900-NEXT:    ;;#ASMEND3437; GFX900-NEXT:    s_mov_b32 s4, 0x70603023438; GFX900-NEXT:    ;;#ASMSTART3439; GFX900-NEXT:    ; def v[2:3]3440; GFX900-NEXT:    ;;#ASMEND3441; GFX900-NEXT:    v_perm_b32 v0, v0, v3, s43442; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:43443; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]3444; GFX900-NEXT:    s_waitcnt vmcnt(0)3445; GFX900-NEXT:    s_setpc_b64 s[30:31]3446;3447; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_1_2:3448; GFX90A:       ; %bb.0:3449; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3450; GFX90A-NEXT:    v_mov_b32_e32 v4, 03451; GFX90A-NEXT:    ;;#ASMSTART3452; GFX90A-NEXT:    ; def v[0:1]3453; GFX90A-NEXT:    ;;#ASMEND3454; GFX90A-NEXT:    s_mov_b32 s4, 0x70603023455; GFX90A-NEXT:    ;;#ASMSTART3456; GFX90A-NEXT:    ; def v[2:3]3457; GFX90A-NEXT:    ;;#ASMEND3458; GFX90A-NEXT:    v_perm_b32 v0, v0, v3, s43459; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:43460; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]3461; GFX90A-NEXT:    s_waitcnt vmcnt(0)3462; GFX90A-NEXT:    s_setpc_b64 s[30:31]3463;3464; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_1_2:3465; GFX942:       ; %bb.0:3466; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3467; GFX942-NEXT:    v_mov_b32_e32 v4, 03468; GFX942-NEXT:    ;;#ASMSTART3469; GFX942-NEXT:    ; def v[0:1]3470; GFX942-NEXT:    ;;#ASMEND3471; GFX942-NEXT:    s_mov_b32 s2, 0x70603023472; GFX942-NEXT:    ;;#ASMSTART3473; GFX942-NEXT:    ; def v[2:3]3474; GFX942-NEXT:    ;;#ASMEND3475; GFX942-NEXT:    s_nop 03476; GFX942-NEXT:    v_perm_b32 v0, v0, v3, s23477; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:43478; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]3479; GFX942-NEXT:    s_waitcnt vmcnt(0)3480; GFX942-NEXT:    s_setpc_b64 s[30:31]3481  %vec0 = call <4 x i16> asm "; def $0", "=v"()3482  %vec1 = call <4 x i16> asm "; def $0", "=v"()3483  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 1, i32 2>3484  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 83485  ret void3486}3487 3488define void @v_shuffle_v3i16_v4i16__7_3_2(ptr addrspace(1) inreg %ptr) {3489; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_3_2:3490; GFX900:       ; %bb.0:3491; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3492; GFX900-NEXT:    v_mov_b32_e32 v4, 03493; GFX900-NEXT:    ;;#ASMSTART3494; GFX900-NEXT:    ; def v[0:1]3495; GFX900-NEXT:    ;;#ASMEND3496; GFX900-NEXT:    s_mov_b32 s4, 0x70603023497; GFX900-NEXT:    ;;#ASMSTART3498; GFX900-NEXT:    ; def v[2:3]3499; GFX900-NEXT:    ;;#ASMEND3500; GFX900-NEXT:    v_perm_b32 v0, v1, v3, s43501; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:43502; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]3503; GFX900-NEXT:    s_waitcnt vmcnt(0)3504; GFX900-NEXT:    s_setpc_b64 s[30:31]3505;3506; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_3_2:3507; GFX90A:       ; %bb.0:3508; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3509; GFX90A-NEXT:    v_mov_b32_e32 v4, 03510; GFX90A-NEXT:    ;;#ASMSTART3511; GFX90A-NEXT:    ; def v[0:1]3512; GFX90A-NEXT:    ;;#ASMEND3513; GFX90A-NEXT:    s_mov_b32 s4, 0x70603023514; GFX90A-NEXT:    ;;#ASMSTART3515; GFX90A-NEXT:    ; def v[2:3]3516; GFX90A-NEXT:    ;;#ASMEND3517; GFX90A-NEXT:    v_perm_b32 v0, v1, v3, s43518; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:43519; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]3520; GFX90A-NEXT:    s_waitcnt vmcnt(0)3521; GFX90A-NEXT:    s_setpc_b64 s[30:31]3522;3523; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_3_2:3524; GFX942:       ; %bb.0:3525; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3526; GFX942-NEXT:    v_mov_b32_e32 v4, 03527; GFX942-NEXT:    ;;#ASMSTART3528; GFX942-NEXT:    ; def v[0:1]3529; GFX942-NEXT:    ;;#ASMEND3530; GFX942-NEXT:    s_mov_b32 s2, 0x70603023531; GFX942-NEXT:    ;;#ASMSTART3532; GFX942-NEXT:    ; def v[2:3]3533; GFX942-NEXT:    ;;#ASMEND3534; GFX942-NEXT:    s_nop 03535; GFX942-NEXT:    v_perm_b32 v0, v1, v3, s23536; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:43537; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]3538; GFX942-NEXT:    s_waitcnt vmcnt(0)3539; GFX942-NEXT:    s_setpc_b64 s[30:31]3540  %vec0 = call <4 x i16> asm "; def $0", "=v"()3541  %vec1 = call <4 x i16> asm "; def $0", "=v"()3542  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 3, i32 2>3543  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 83544  ret void3545}3546 3547define void @v_shuffle_v3i16_v4i16__7_4_2(ptr addrspace(1) inreg %ptr) {3548; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_4_2:3549; GFX900:       ; %bb.0:3550; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3551; GFX900-NEXT:    v_mov_b32_e32 v4, 03552; GFX900-NEXT:    ;;#ASMSTART3553; GFX900-NEXT:    ; def v[0:1]3554; GFX900-NEXT:    ;;#ASMEND3555; GFX900-NEXT:    ;;#ASMSTART3556; GFX900-NEXT:    ; def v[2:3]3557; GFX900-NEXT:    ;;#ASMEND3558; GFX900-NEXT:    v_alignbit_b32 v0, v2, v3, 163559; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:43560; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]3561; GFX900-NEXT:    s_waitcnt vmcnt(0)3562; GFX900-NEXT:    s_setpc_b64 s[30:31]3563;3564; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_4_2:3565; GFX90A:       ; %bb.0:3566; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3567; GFX90A-NEXT:    v_mov_b32_e32 v4, 03568; GFX90A-NEXT:    ;;#ASMSTART3569; GFX90A-NEXT:    ; def v[0:1]3570; GFX90A-NEXT:    ;;#ASMEND3571; GFX90A-NEXT:    ;;#ASMSTART3572; GFX90A-NEXT:    ; def v[2:3]3573; GFX90A-NEXT:    ;;#ASMEND3574; GFX90A-NEXT:    v_alignbit_b32 v0, v2, v3, 163575; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:43576; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]3577; GFX90A-NEXT:    s_waitcnt vmcnt(0)3578; GFX90A-NEXT:    s_setpc_b64 s[30:31]3579;3580; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_4_2:3581; GFX942:       ; %bb.0:3582; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3583; GFX942-NEXT:    v_mov_b32_e32 v4, 03584; GFX942-NEXT:    ;;#ASMSTART3585; GFX942-NEXT:    ; def v[0:1]3586; GFX942-NEXT:    ;;#ASMEND3587; GFX942-NEXT:    ;;#ASMSTART3588; GFX942-NEXT:    ; def v[2:3]3589; GFX942-NEXT:    ;;#ASMEND3590; GFX942-NEXT:    s_nop 03591; GFX942-NEXT:    v_alignbit_b32 v0, v2, v3, 163592; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:43593; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]3594; GFX942-NEXT:    s_waitcnt vmcnt(0)3595; GFX942-NEXT:    s_setpc_b64 s[30:31]3596  %vec0 = call <4 x i16> asm "; def $0", "=v"()3597  %vec1 = call <4 x i16> asm "; def $0", "=v"()3598  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 4, i32 2>3599  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 83600  ret void3601}3602 3603define void @v_shuffle_v3i16_v4i16__7_5_2(ptr addrspace(1) inreg %ptr) {3604; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_5_2:3605; GFX900:       ; %bb.0:3606; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3607; GFX900-NEXT:    v_mov_b32_e32 v4, 03608; GFX900-NEXT:    ;;#ASMSTART3609; GFX900-NEXT:    ; def v[0:1]3610; GFX900-NEXT:    ;;#ASMEND3611; GFX900-NEXT:    s_mov_b32 s4, 0x70603023612; GFX900-NEXT:    ;;#ASMSTART3613; GFX900-NEXT:    ; def v[2:3]3614; GFX900-NEXT:    ;;#ASMEND3615; GFX900-NEXT:    v_perm_b32 v0, v2, v3, s43616; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:43617; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]3618; GFX900-NEXT:    s_waitcnt vmcnt(0)3619; GFX900-NEXT:    s_setpc_b64 s[30:31]3620;3621; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_5_2:3622; GFX90A:       ; %bb.0:3623; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3624; GFX90A-NEXT:    v_mov_b32_e32 v4, 03625; GFX90A-NEXT:    ;;#ASMSTART3626; GFX90A-NEXT:    ; def v[0:1]3627; GFX90A-NEXT:    ;;#ASMEND3628; GFX90A-NEXT:    s_mov_b32 s4, 0x70603023629; GFX90A-NEXT:    ;;#ASMSTART3630; GFX90A-NEXT:    ; def v[2:3]3631; GFX90A-NEXT:    ;;#ASMEND3632; GFX90A-NEXT:    v_perm_b32 v0, v2, v3, s43633; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:43634; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]3635; GFX90A-NEXT:    s_waitcnt vmcnt(0)3636; GFX90A-NEXT:    s_setpc_b64 s[30:31]3637;3638; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_5_2:3639; GFX942:       ; %bb.0:3640; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3641; GFX942-NEXT:    v_mov_b32_e32 v4, 03642; GFX942-NEXT:    ;;#ASMSTART3643; GFX942-NEXT:    ; def v[0:1]3644; GFX942-NEXT:    ;;#ASMEND3645; GFX942-NEXT:    s_mov_b32 s2, 0x70603023646; GFX942-NEXT:    ;;#ASMSTART3647; GFX942-NEXT:    ; def v[2:3]3648; GFX942-NEXT:    ;;#ASMEND3649; GFX942-NEXT:    s_nop 03650; GFX942-NEXT:    v_perm_b32 v0, v2, v3, s23651; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:43652; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]3653; GFX942-NEXT:    s_waitcnt vmcnt(0)3654; GFX942-NEXT:    s_setpc_b64 s[30:31]3655  %vec0 = call <4 x i16> asm "; def $0", "=v"()3656  %vec1 = call <4 x i16> asm "; def $0", "=v"()3657  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 5, i32 2>3658  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 83659  ret void3660}3661 3662define void @v_shuffle_v3i16_v4i16__7_6_2(ptr addrspace(1) inreg %ptr) {3663; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_6_2:3664; GFX900:       ; %bb.0:3665; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3666; GFX900-NEXT:    v_mov_b32_e32 v4, 03667; GFX900-NEXT:    ;;#ASMSTART3668; GFX900-NEXT:    ; def v[0:1]3669; GFX900-NEXT:    ;;#ASMEND3670; GFX900-NEXT:    ;;#ASMSTART3671; GFX900-NEXT:    ; def v[2:3]3672; GFX900-NEXT:    ;;#ASMEND3673; GFX900-NEXT:    v_alignbit_b32 v0, v3, v3, 163674; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:43675; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]3676; GFX900-NEXT:    s_waitcnt vmcnt(0)3677; GFX900-NEXT:    s_setpc_b64 s[30:31]3678;3679; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_6_2:3680; GFX90A:       ; %bb.0:3681; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3682; GFX90A-NEXT:    v_mov_b32_e32 v4, 03683; GFX90A-NEXT:    ;;#ASMSTART3684; GFX90A-NEXT:    ; def v[0:1]3685; GFX90A-NEXT:    ;;#ASMEND3686; GFX90A-NEXT:    ;;#ASMSTART3687; GFX90A-NEXT:    ; def v[2:3]3688; GFX90A-NEXT:    ;;#ASMEND3689; GFX90A-NEXT:    v_alignbit_b32 v0, v3, v3, 163690; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:43691; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]3692; GFX90A-NEXT:    s_waitcnt vmcnt(0)3693; GFX90A-NEXT:    s_setpc_b64 s[30:31]3694;3695; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_6_2:3696; GFX942:       ; %bb.0:3697; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3698; GFX942-NEXT:    v_mov_b32_e32 v4, 03699; GFX942-NEXT:    ;;#ASMSTART3700; GFX942-NEXT:    ; def v[0:1]3701; GFX942-NEXT:    ;;#ASMEND3702; GFX942-NEXT:    ;;#ASMSTART3703; GFX942-NEXT:    ; def v[2:3]3704; GFX942-NEXT:    ;;#ASMEND3705; GFX942-NEXT:    s_nop 03706; GFX942-NEXT:    v_alignbit_b32 v0, v3, v3, 163707; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:43708; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]3709; GFX942-NEXT:    s_waitcnt vmcnt(0)3710; GFX942-NEXT:    s_setpc_b64 s[30:31]3711  %vec0 = call <4 x i16> asm "; def $0", "=v"()3712  %vec1 = call <4 x i16> asm "; def $0", "=v"()3713  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 6, i32 2>3714  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 83715  ret void3716}3717 3718define void @v_shuffle_v3i16_v4i16__u_3_3(ptr addrspace(1) inreg %ptr) {3719; GFX900-LABEL: v_shuffle_v3i16_v4i16__u_3_3:3720; GFX900:       ; %bb.0:3721; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3722; GFX900-NEXT:    v_mov_b32_e32 v2, 03723; GFX900-NEXT:    ;;#ASMSTART3724; GFX900-NEXT:    ; def v[0:1]3725; GFX900-NEXT:    ;;#ASMEND3726; GFX900-NEXT:    global_store_short_d16_hi v2, v1, s[16:17] offset:43727; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]3728; GFX900-NEXT:    s_waitcnt vmcnt(0)3729; GFX900-NEXT:    s_setpc_b64 s[30:31]3730;3731; GFX90A-LABEL: v_shuffle_v3i16_v4i16__u_3_3:3732; GFX90A:       ; %bb.0:3733; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3734; GFX90A-NEXT:    v_mov_b32_e32 v2, 03735; GFX90A-NEXT:    ;;#ASMSTART3736; GFX90A-NEXT:    ; def v[0:1]3737; GFX90A-NEXT:    ;;#ASMEND3738; GFX90A-NEXT:    global_store_short_d16_hi v2, v1, s[16:17] offset:43739; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]3740; GFX90A-NEXT:    s_waitcnt vmcnt(0)3741; GFX90A-NEXT:    s_setpc_b64 s[30:31]3742;3743; GFX942-LABEL: v_shuffle_v3i16_v4i16__u_3_3:3744; GFX942:       ; %bb.0:3745; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3746; GFX942-NEXT:    v_mov_b32_e32 v2, 03747; GFX942-NEXT:    ;;#ASMSTART3748; GFX942-NEXT:    ; def v[0:1]3749; GFX942-NEXT:    ;;#ASMEND3750; GFX942-NEXT:    global_store_short_d16_hi v2, v1, s[0:1] offset:43751; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]3752; GFX942-NEXT:    s_waitcnt vmcnt(0)3753; GFX942-NEXT:    s_setpc_b64 s[30:31]3754  %vec0 = call <4 x i16> asm "; def $0", "=v"()3755  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 poison, i32 3, i32 3>3756  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 83757  ret void3758}3759 3760define void @v_shuffle_v3i16_v4i16__0_3_3(ptr addrspace(1) inreg %ptr) {3761; GFX900-LABEL: v_shuffle_v3i16_v4i16__0_3_3:3762; GFX900:       ; %bb.0:3763; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3764; GFX900-NEXT:    ;;#ASMSTART3765; GFX900-NEXT:    ; def v[0:1]3766; GFX900-NEXT:    ;;#ASMEND3767; GFX900-NEXT:    s_mov_b32 s4, 0xffff3768; GFX900-NEXT:    v_mov_b32_e32 v2, 03769; GFX900-NEXT:    v_bfi_b32 v0, s4, v0, v13770; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v13771; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]3772; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:43773; GFX900-NEXT:    s_waitcnt vmcnt(0)3774; GFX900-NEXT:    s_setpc_b64 s[30:31]3775;3776; GFX90A-LABEL: v_shuffle_v3i16_v4i16__0_3_3:3777; GFX90A:       ; %bb.0:3778; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3779; GFX90A-NEXT:    ;;#ASMSTART3780; GFX90A-NEXT:    ; def v[0:1]3781; GFX90A-NEXT:    ;;#ASMEND3782; GFX90A-NEXT:    s_mov_b32 s4, 0xffff3783; GFX90A-NEXT:    v_mov_b32_e32 v2, 03784; GFX90A-NEXT:    v_bfi_b32 v0, s4, v0, v13785; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v13786; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]3787; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:43788; GFX90A-NEXT:    s_waitcnt vmcnt(0)3789; GFX90A-NEXT:    s_setpc_b64 s[30:31]3790;3791; GFX942-LABEL: v_shuffle_v3i16_v4i16__0_3_3:3792; GFX942:       ; %bb.0:3793; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3794; GFX942-NEXT:    ;;#ASMSTART3795; GFX942-NEXT:    ; def v[0:1]3796; GFX942-NEXT:    ;;#ASMEND3797; GFX942-NEXT:    s_mov_b32 s2, 0xffff3798; GFX942-NEXT:    v_mov_b32_e32 v2, 03799; GFX942-NEXT:    v_bfi_b32 v0, s2, v0, v13800; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v13801; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]3802; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:43803; GFX942-NEXT:    s_waitcnt vmcnt(0)3804; GFX942-NEXT:    s_setpc_b64 s[30:31]3805  %vec0 = call <4 x i16> asm "; def $0", "=v"()3806  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 3, i32 3>3807  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 83808  ret void3809}3810 3811define void @v_shuffle_v3i16_v4i16__1_3_3(ptr addrspace(1) inreg %ptr) {3812; GFX900-LABEL: v_shuffle_v3i16_v4i16__1_3_3:3813; GFX900:       ; %bb.0:3814; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3815; GFX900-NEXT:    ;;#ASMSTART3816; GFX900-NEXT:    ; def v[0:1]3817; GFX900-NEXT:    ;;#ASMEND3818; GFX900-NEXT:    s_mov_b32 s4, 0x70603023819; GFX900-NEXT:    v_mov_b32_e32 v2, 03820; GFX900-NEXT:    v_perm_b32 v0, v1, v0, s43821; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v13822; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]3823; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:43824; GFX900-NEXT:    s_waitcnt vmcnt(0)3825; GFX900-NEXT:    s_setpc_b64 s[30:31]3826;3827; GFX90A-LABEL: v_shuffle_v3i16_v4i16__1_3_3:3828; GFX90A:       ; %bb.0:3829; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3830; GFX90A-NEXT:    ;;#ASMSTART3831; GFX90A-NEXT:    ; def v[0:1]3832; GFX90A-NEXT:    ;;#ASMEND3833; GFX90A-NEXT:    s_mov_b32 s4, 0x70603023834; GFX90A-NEXT:    v_mov_b32_e32 v2, 03835; GFX90A-NEXT:    v_perm_b32 v0, v1, v0, s43836; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v13837; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]3838; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:43839; GFX90A-NEXT:    s_waitcnt vmcnt(0)3840; GFX90A-NEXT:    s_setpc_b64 s[30:31]3841;3842; GFX942-LABEL: v_shuffle_v3i16_v4i16__1_3_3:3843; GFX942:       ; %bb.0:3844; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3845; GFX942-NEXT:    ;;#ASMSTART3846; GFX942-NEXT:    ; def v[0:1]3847; GFX942-NEXT:    ;;#ASMEND3848; GFX942-NEXT:    s_mov_b32 s2, 0x70603023849; GFX942-NEXT:    v_mov_b32_e32 v2, 03850; GFX942-NEXT:    v_perm_b32 v0, v1, v0, s23851; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v13852; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]3853; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:43854; GFX942-NEXT:    s_waitcnt vmcnt(0)3855; GFX942-NEXT:    s_setpc_b64 s[30:31]3856  %vec0 = call <4 x i16> asm "; def $0", "=v"()3857  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 1, i32 3, i32 3>3858  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 83859  ret void3860}3861 3862define void @v_shuffle_v3i16_v4i16__2_3_3(ptr addrspace(1) inreg %ptr) {3863; GFX900-LABEL: v_shuffle_v3i16_v4i16__2_3_3:3864; GFX900:       ; %bb.0:3865; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3866; GFX900-NEXT:    v_mov_b32_e32 v2, 03867; GFX900-NEXT:    ;;#ASMSTART3868; GFX900-NEXT:    ; def v[0:1]3869; GFX900-NEXT:    ;;#ASMEND3870; GFX900-NEXT:    global_store_short_d16_hi v2, v1, s[16:17] offset:43871; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]3872; GFX900-NEXT:    s_waitcnt vmcnt(0)3873; GFX900-NEXT:    s_setpc_b64 s[30:31]3874;3875; GFX90A-LABEL: v_shuffle_v3i16_v4i16__2_3_3:3876; GFX90A:       ; %bb.0:3877; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3878; GFX90A-NEXT:    v_mov_b32_e32 v2, 03879; GFX90A-NEXT:    ;;#ASMSTART3880; GFX90A-NEXT:    ; def v[0:1]3881; GFX90A-NEXT:    ;;#ASMEND3882; GFX90A-NEXT:    global_store_short_d16_hi v2, v1, s[16:17] offset:43883; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]3884; GFX90A-NEXT:    s_waitcnt vmcnt(0)3885; GFX90A-NEXT:    s_setpc_b64 s[30:31]3886;3887; GFX942-LABEL: v_shuffle_v3i16_v4i16__2_3_3:3888; GFX942:       ; %bb.0:3889; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3890; GFX942-NEXT:    v_mov_b32_e32 v2, 03891; GFX942-NEXT:    ;;#ASMSTART3892; GFX942-NEXT:    ; def v[0:1]3893; GFX942-NEXT:    ;;#ASMEND3894; GFX942-NEXT:    global_store_short_d16_hi v2, v1, s[0:1] offset:43895; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]3896; GFX942-NEXT:    s_waitcnt vmcnt(0)3897; GFX942-NEXT:    s_setpc_b64 s[30:31]3898  %vec0 = call <4 x i16> asm "; def $0", "=v"()3899  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 2, i32 3, i32 3>3900  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 83901  ret void3902}3903 3904define void @v_shuffle_v3i16_v4i16__3_3_3(ptr addrspace(1) inreg %ptr) {3905; GFX900-LABEL: v_shuffle_v3i16_v4i16__3_3_3:3906; GFX900:       ; %bb.0:3907; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3908; GFX900-NEXT:    ;;#ASMSTART3909; GFX900-NEXT:    ; def v[0:1]3910; GFX900-NEXT:    ;;#ASMEND3911; GFX900-NEXT:    s_mov_b32 s4, 0x70603023912; GFX900-NEXT:    v_mov_b32_e32 v2, 03913; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v13914; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s43915; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]3916; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:43917; GFX900-NEXT:    s_waitcnt vmcnt(0)3918; GFX900-NEXT:    s_setpc_b64 s[30:31]3919;3920; GFX90A-LABEL: v_shuffle_v3i16_v4i16__3_3_3:3921; GFX90A:       ; %bb.0:3922; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3923; GFX90A-NEXT:    ;;#ASMSTART3924; GFX90A-NEXT:    ; def v[0:1]3925; GFX90A-NEXT:    ;;#ASMEND3926; GFX90A-NEXT:    s_mov_b32 s4, 0x70603023927; GFX90A-NEXT:    v_mov_b32_e32 v2, 03928; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v13929; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s43930; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]3931; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:43932; GFX90A-NEXT:    s_waitcnt vmcnt(0)3933; GFX90A-NEXT:    s_setpc_b64 s[30:31]3934;3935; GFX942-LABEL: v_shuffle_v3i16_v4i16__3_3_3:3936; GFX942:       ; %bb.0:3937; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3938; GFX942-NEXT:    ;;#ASMSTART3939; GFX942-NEXT:    ; def v[0:1]3940; GFX942-NEXT:    ;;#ASMEND3941; GFX942-NEXT:    s_mov_b32 s2, 0x70603023942; GFX942-NEXT:    v_mov_b32_e32 v2, 03943; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v13944; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s23945; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]3946; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:43947; GFX942-NEXT:    s_waitcnt vmcnt(0)3948; GFX942-NEXT:    s_setpc_b64 s[30:31]3949  %vec0 = call <4 x i16> asm "; def $0", "=v"()3950  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 3, i32 3, i32 3>3951  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 83952  ret void3953}3954 3955define void @v_shuffle_v3i16_v4i16__4_3_3(ptr addrspace(1) inreg %ptr) {3956; GFX900-LABEL: v_shuffle_v3i16_v4i16__4_3_3:3957; GFX900:       ; %bb.0:3958; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3959; GFX900-NEXT:    v_mov_b32_e32 v2, 03960; GFX900-NEXT:    ;;#ASMSTART3961; GFX900-NEXT:    ; def v[0:1]3962; GFX900-NEXT:    ;;#ASMEND3963; GFX900-NEXT:    global_store_short_d16_hi v2, v1, s[16:17] offset:43964; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]3965; GFX900-NEXT:    s_waitcnt vmcnt(0)3966; GFX900-NEXT:    s_setpc_b64 s[30:31]3967;3968; GFX90A-LABEL: v_shuffle_v3i16_v4i16__4_3_3:3969; GFX90A:       ; %bb.0:3970; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3971; GFX90A-NEXT:    v_mov_b32_e32 v2, 03972; GFX90A-NEXT:    ;;#ASMSTART3973; GFX90A-NEXT:    ; def v[0:1]3974; GFX90A-NEXT:    ;;#ASMEND3975; GFX90A-NEXT:    global_store_short_d16_hi v2, v1, s[16:17] offset:43976; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]3977; GFX90A-NEXT:    s_waitcnt vmcnt(0)3978; GFX90A-NEXT:    s_setpc_b64 s[30:31]3979;3980; GFX942-LABEL: v_shuffle_v3i16_v4i16__4_3_3:3981; GFX942:       ; %bb.0:3982; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3983; GFX942-NEXT:    v_mov_b32_e32 v2, 03984; GFX942-NEXT:    ;;#ASMSTART3985; GFX942-NEXT:    ; def v[0:1]3986; GFX942-NEXT:    ;;#ASMEND3987; GFX942-NEXT:    global_store_short_d16_hi v2, v1, s[0:1] offset:43988; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]3989; GFX942-NEXT:    s_waitcnt vmcnt(0)3990; GFX942-NEXT:    s_setpc_b64 s[30:31]3991  %vec0 = call <4 x i16> asm "; def $0", "=v"()3992  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 4, i32 3, i32 3>3993  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 83994  ret void3995}3996 3997define void @v_shuffle_v3i16_v4i16__5_3_3(ptr addrspace(1) inreg %ptr) {3998; GFX900-LABEL: v_shuffle_v3i16_v4i16__5_3_3:3999; GFX900:       ; %bb.0:4000; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4001; GFX900-NEXT:    ;;#ASMSTART4002; GFX900-NEXT:    ; def v[0:1]4003; GFX900-NEXT:    ;;#ASMEND4004; GFX900-NEXT:    s_mov_b32 s4, 0x70603024005; GFX900-NEXT:    v_mov_b32_e32 v4, 04006; GFX900-NEXT:    ;;#ASMSTART4007; GFX900-NEXT:    ; def v[2:3]4008; GFX900-NEXT:    ;;#ASMEND4009; GFX900-NEXT:    v_perm_b32 v0, v1, v2, s44010; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v14011; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]4012; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:44013; GFX900-NEXT:    s_waitcnt vmcnt(0)4014; GFX900-NEXT:    s_setpc_b64 s[30:31]4015;4016; GFX90A-LABEL: v_shuffle_v3i16_v4i16__5_3_3:4017; GFX90A:       ; %bb.0:4018; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4019; GFX90A-NEXT:    ;;#ASMSTART4020; GFX90A-NEXT:    ; def v[0:1]4021; GFX90A-NEXT:    ;;#ASMEND4022; GFX90A-NEXT:    s_mov_b32 s4, 0x70603024023; GFX90A-NEXT:    v_mov_b32_e32 v4, 04024; GFX90A-NEXT:    ;;#ASMSTART4025; GFX90A-NEXT:    ; def v[2:3]4026; GFX90A-NEXT:    ;;#ASMEND4027; GFX90A-NEXT:    v_perm_b32 v0, v1, v2, s44028; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v14029; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]4030; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:44031; GFX90A-NEXT:    s_waitcnt vmcnt(0)4032; GFX90A-NEXT:    s_setpc_b64 s[30:31]4033;4034; GFX942-LABEL: v_shuffle_v3i16_v4i16__5_3_3:4035; GFX942:       ; %bb.0:4036; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4037; GFX942-NEXT:    ;;#ASMSTART4038; GFX942-NEXT:    ; def v[0:1]4039; GFX942-NEXT:    ;;#ASMEND4040; GFX942-NEXT:    s_mov_b32 s2, 0x70603024041; GFX942-NEXT:    v_mov_b32_e32 v4, 04042; GFX942-NEXT:    ;;#ASMSTART4043; GFX942-NEXT:    ; def v[2:3]4044; GFX942-NEXT:    ;;#ASMEND4045; GFX942-NEXT:    s_nop 04046; GFX942-NEXT:    v_perm_b32 v0, v1, v2, s24047; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v14048; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]4049; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:44050; GFX942-NEXT:    s_waitcnt vmcnt(0)4051; GFX942-NEXT:    s_setpc_b64 s[30:31]4052  %vec0 = call <4 x i16> asm "; def $0", "=v"()4053  %vec1 = call <4 x i16> asm "; def $0", "=v"()4054  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 5, i32 3, i32 3>4055  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 84056  ret void4057}4058 4059define void @v_shuffle_v3i16_v4i16__6_3_3(ptr addrspace(1) inreg %ptr) {4060; GFX900-LABEL: v_shuffle_v3i16_v4i16__6_3_3:4061; GFX900:       ; %bb.0:4062; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4063; GFX900-NEXT:    ;;#ASMSTART4064; GFX900-NEXT:    ; def v[0:1]4065; GFX900-NEXT:    ;;#ASMEND4066; GFX900-NEXT:    s_mov_b32 s4, 0xffff4067; GFX900-NEXT:    v_mov_b32_e32 v4, 04068; GFX900-NEXT:    ;;#ASMSTART4069; GFX900-NEXT:    ; def v[2:3]4070; GFX900-NEXT:    ;;#ASMEND4071; GFX900-NEXT:    v_bfi_b32 v0, s4, v3, v14072; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v14073; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:44074; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]4075; GFX900-NEXT:    s_waitcnt vmcnt(0)4076; GFX900-NEXT:    s_setpc_b64 s[30:31]4077;4078; GFX90A-LABEL: v_shuffle_v3i16_v4i16__6_3_3:4079; GFX90A:       ; %bb.0:4080; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4081; GFX90A-NEXT:    ;;#ASMSTART4082; GFX90A-NEXT:    ; def v[0:1]4083; GFX90A-NEXT:    ;;#ASMEND4084; GFX90A-NEXT:    s_mov_b32 s4, 0xffff4085; GFX90A-NEXT:    v_mov_b32_e32 v4, 04086; GFX90A-NEXT:    ;;#ASMSTART4087; GFX90A-NEXT:    ; def v[2:3]4088; GFX90A-NEXT:    ;;#ASMEND4089; GFX90A-NEXT:    v_bfi_b32 v0, s4, v3, v14090; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v14091; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:44092; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]4093; GFX90A-NEXT:    s_waitcnt vmcnt(0)4094; GFX90A-NEXT:    s_setpc_b64 s[30:31]4095;4096; GFX942-LABEL: v_shuffle_v3i16_v4i16__6_3_3:4097; GFX942:       ; %bb.0:4098; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4099; GFX942-NEXT:    ;;#ASMSTART4100; GFX942-NEXT:    ; def v[0:1]4101; GFX942-NEXT:    ;;#ASMEND4102; GFX942-NEXT:    s_mov_b32 s2, 0xffff4103; GFX942-NEXT:    v_mov_b32_e32 v4, 04104; GFX942-NEXT:    ;;#ASMSTART4105; GFX942-NEXT:    ; def v[2:3]4106; GFX942-NEXT:    ;;#ASMEND4107; GFX942-NEXT:    s_nop 04108; GFX942-NEXT:    v_bfi_b32 v0, s2, v3, v14109; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v14110; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:44111; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]4112; GFX942-NEXT:    s_waitcnt vmcnt(0)4113; GFX942-NEXT:    s_setpc_b64 s[30:31]4114  %vec0 = call <4 x i16> asm "; def $0", "=v"()4115  %vec1 = call <4 x i16> asm "; def $0", "=v"()4116  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 6, i32 3, i32 3>4117  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 84118  ret void4119}4120 4121define void @v_shuffle_v3i16_v4i16__7_3_3(ptr addrspace(1) inreg %ptr) {4122; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_3_3:4123; GFX900:       ; %bb.0:4124; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4125; GFX900-NEXT:    ;;#ASMSTART4126; GFX900-NEXT:    ; def v[0:1]4127; GFX900-NEXT:    ;;#ASMEND4128; GFX900-NEXT:    s_mov_b32 s4, 0x70603024129; GFX900-NEXT:    v_mov_b32_e32 v4, 04130; GFX900-NEXT:    ;;#ASMSTART4131; GFX900-NEXT:    ; def v[2:3]4132; GFX900-NEXT:    ;;#ASMEND4133; GFX900-NEXT:    v_perm_b32 v0, v1, v3, s44134; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v14135; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]4136; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:44137; GFX900-NEXT:    s_waitcnt vmcnt(0)4138; GFX900-NEXT:    s_setpc_b64 s[30:31]4139;4140; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_3_3:4141; GFX90A:       ; %bb.0:4142; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4143; GFX90A-NEXT:    ;;#ASMSTART4144; GFX90A-NEXT:    ; def v[0:1]4145; GFX90A-NEXT:    ;;#ASMEND4146; GFX90A-NEXT:    s_mov_b32 s4, 0x70603024147; GFX90A-NEXT:    v_mov_b32_e32 v4, 04148; GFX90A-NEXT:    ;;#ASMSTART4149; GFX90A-NEXT:    ; def v[2:3]4150; GFX90A-NEXT:    ;;#ASMEND4151; GFX90A-NEXT:    v_perm_b32 v0, v1, v3, s44152; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v14153; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]4154; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:44155; GFX90A-NEXT:    s_waitcnt vmcnt(0)4156; GFX90A-NEXT:    s_setpc_b64 s[30:31]4157;4158; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_3_3:4159; GFX942:       ; %bb.0:4160; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4161; GFX942-NEXT:    ;;#ASMSTART4162; GFX942-NEXT:    ; def v[0:1]4163; GFX942-NEXT:    ;;#ASMEND4164; GFX942-NEXT:    s_mov_b32 s2, 0x70603024165; GFX942-NEXT:    v_mov_b32_e32 v4, 04166; GFX942-NEXT:    ;;#ASMSTART4167; GFX942-NEXT:    ; def v[2:3]4168; GFX942-NEXT:    ;;#ASMEND4169; GFX942-NEXT:    s_nop 04170; GFX942-NEXT:    v_perm_b32 v0, v1, v3, s24171; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v14172; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]4173; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:44174; GFX942-NEXT:    s_waitcnt vmcnt(0)4175; GFX942-NEXT:    s_setpc_b64 s[30:31]4176  %vec0 = call <4 x i16> asm "; def $0", "=v"()4177  %vec1 = call <4 x i16> asm "; def $0", "=v"()4178  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 3, i32 3>4179  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 84180  ret void4181}4182 4183define void @v_shuffle_v3i16_v4i16__7_u_3(ptr addrspace(1) inreg %ptr) {4184; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_u_3:4185; GFX900:       ; %bb.0:4186; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4187; GFX900-NEXT:    v_mov_b32_e32 v4, 04188; GFX900-NEXT:    ;;#ASMSTART4189; GFX900-NEXT:    ; def v[0:1]4190; GFX900-NEXT:    ;;#ASMEND4191; GFX900-NEXT:    ;;#ASMSTART4192; GFX900-NEXT:    ; def v[2:3]4193; GFX900-NEXT:    ;;#ASMEND4194; GFX900-NEXT:    v_alignbit_b32 v0, s4, v3, 164195; GFX900-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:44196; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]4197; GFX900-NEXT:    s_waitcnt vmcnt(0)4198; GFX900-NEXT:    s_setpc_b64 s[30:31]4199;4200; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_u_3:4201; GFX90A:       ; %bb.0:4202; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4203; GFX90A-NEXT:    v_mov_b32_e32 v4, 04204; GFX90A-NEXT:    ;;#ASMSTART4205; GFX90A-NEXT:    ; def v[0:1]4206; GFX90A-NEXT:    ;;#ASMEND4207; GFX90A-NEXT:    ;;#ASMSTART4208; GFX90A-NEXT:    ; def v[2:3]4209; GFX90A-NEXT:    ;;#ASMEND4210; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v3, 164211; GFX90A-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:44212; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]4213; GFX90A-NEXT:    s_waitcnt vmcnt(0)4214; GFX90A-NEXT:    s_setpc_b64 s[30:31]4215;4216; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_u_3:4217; GFX942:       ; %bb.0:4218; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4219; GFX942-NEXT:    v_mov_b32_e32 v4, 04220; GFX942-NEXT:    ;;#ASMSTART4221; GFX942-NEXT:    ; def v[0:1]4222; GFX942-NEXT:    ;;#ASMEND4223; GFX942-NEXT:    ;;#ASMSTART4224; GFX942-NEXT:    ; def v[2:3]4225; GFX942-NEXT:    ;;#ASMEND4226; GFX942-NEXT:    s_nop 04227; GFX942-NEXT:    v_alignbit_b32 v0, s0, v3, 164228; GFX942-NEXT:    global_store_short_d16_hi v4, v1, s[0:1] offset:44229; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]4230; GFX942-NEXT:    s_waitcnt vmcnt(0)4231; GFX942-NEXT:    s_setpc_b64 s[30:31]4232  %vec0 = call <4 x i16> asm "; def $0", "=v"()4233  %vec1 = call <4 x i16> asm "; def $0", "=v"()4234  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 poison, i32 3>4235  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 84236  ret void4237}4238 4239define void @v_shuffle_v3i16_v4i16__7_0_3(ptr addrspace(1) inreg %ptr) {4240; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_0_3:4241; GFX900:       ; %bb.0:4242; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4243; GFX900-NEXT:    v_mov_b32_e32 v4, 04244; GFX900-NEXT:    ;;#ASMSTART4245; GFX900-NEXT:    ; def v[0:1]4246; GFX900-NEXT:    ;;#ASMEND4247; GFX900-NEXT:    ;;#ASMSTART4248; GFX900-NEXT:    ; def v[2:3]4249; GFX900-NEXT:    ;;#ASMEND4250; GFX900-NEXT:    v_alignbit_b32 v0, v0, v3, 164251; GFX900-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:44252; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]4253; GFX900-NEXT:    s_waitcnt vmcnt(0)4254; GFX900-NEXT:    s_setpc_b64 s[30:31]4255;4256; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_0_3:4257; GFX90A:       ; %bb.0:4258; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4259; GFX90A-NEXT:    v_mov_b32_e32 v4, 04260; GFX90A-NEXT:    ;;#ASMSTART4261; GFX90A-NEXT:    ; def v[0:1]4262; GFX90A-NEXT:    ;;#ASMEND4263; GFX90A-NEXT:    ;;#ASMSTART4264; GFX90A-NEXT:    ; def v[2:3]4265; GFX90A-NEXT:    ;;#ASMEND4266; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v3, 164267; GFX90A-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:44268; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]4269; GFX90A-NEXT:    s_waitcnt vmcnt(0)4270; GFX90A-NEXT:    s_setpc_b64 s[30:31]4271;4272; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_0_3:4273; GFX942:       ; %bb.0:4274; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4275; GFX942-NEXT:    v_mov_b32_e32 v4, 04276; GFX942-NEXT:    ;;#ASMSTART4277; GFX942-NEXT:    ; def v[0:1]4278; GFX942-NEXT:    ;;#ASMEND4279; GFX942-NEXT:    ;;#ASMSTART4280; GFX942-NEXT:    ; def v[2:3]4281; GFX942-NEXT:    ;;#ASMEND4282; GFX942-NEXT:    s_nop 04283; GFX942-NEXT:    v_alignbit_b32 v0, v0, v3, 164284; GFX942-NEXT:    global_store_short_d16_hi v4, v1, s[0:1] offset:44285; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]4286; GFX942-NEXT:    s_waitcnt vmcnt(0)4287; GFX942-NEXT:    s_setpc_b64 s[30:31]4288  %vec0 = call <4 x i16> asm "; def $0", "=v"()4289  %vec1 = call <4 x i16> asm "; def $0", "=v"()4290  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 0, i32 3>4291  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 84292  ret void4293}4294 4295define void @v_shuffle_v3i16_v4i16__7_1_3(ptr addrspace(1) inreg %ptr) {4296; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_1_3:4297; GFX900:       ; %bb.0:4298; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4299; GFX900-NEXT:    v_mov_b32_e32 v4, 04300; GFX900-NEXT:    ;;#ASMSTART4301; GFX900-NEXT:    ; def v[0:1]4302; GFX900-NEXT:    ;;#ASMEND4303; GFX900-NEXT:    s_mov_b32 s4, 0x70603024304; GFX900-NEXT:    ;;#ASMSTART4305; GFX900-NEXT:    ; def v[2:3]4306; GFX900-NEXT:    ;;#ASMEND4307; GFX900-NEXT:    v_perm_b32 v0, v0, v3, s44308; GFX900-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:44309; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]4310; GFX900-NEXT:    s_waitcnt vmcnt(0)4311; GFX900-NEXT:    s_setpc_b64 s[30:31]4312;4313; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_1_3:4314; GFX90A:       ; %bb.0:4315; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4316; GFX90A-NEXT:    v_mov_b32_e32 v4, 04317; GFX90A-NEXT:    ;;#ASMSTART4318; GFX90A-NEXT:    ; def v[0:1]4319; GFX90A-NEXT:    ;;#ASMEND4320; GFX90A-NEXT:    s_mov_b32 s4, 0x70603024321; GFX90A-NEXT:    ;;#ASMSTART4322; GFX90A-NEXT:    ; def v[2:3]4323; GFX90A-NEXT:    ;;#ASMEND4324; GFX90A-NEXT:    v_perm_b32 v0, v0, v3, s44325; GFX90A-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:44326; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]4327; GFX90A-NEXT:    s_waitcnt vmcnt(0)4328; GFX90A-NEXT:    s_setpc_b64 s[30:31]4329;4330; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_1_3:4331; GFX942:       ; %bb.0:4332; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4333; GFX942-NEXT:    v_mov_b32_e32 v4, 04334; GFX942-NEXT:    ;;#ASMSTART4335; GFX942-NEXT:    ; def v[0:1]4336; GFX942-NEXT:    ;;#ASMEND4337; GFX942-NEXT:    s_mov_b32 s2, 0x70603024338; GFX942-NEXT:    ;;#ASMSTART4339; GFX942-NEXT:    ; def v[2:3]4340; GFX942-NEXT:    ;;#ASMEND4341; GFX942-NEXT:    s_nop 04342; GFX942-NEXT:    v_perm_b32 v0, v0, v3, s24343; GFX942-NEXT:    global_store_short_d16_hi v4, v1, s[0:1] offset:44344; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]4345; GFX942-NEXT:    s_waitcnt vmcnt(0)4346; GFX942-NEXT:    s_setpc_b64 s[30:31]4347  %vec0 = call <4 x i16> asm "; def $0", "=v"()4348  %vec1 = call <4 x i16> asm "; def $0", "=v"()4349  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 1, i32 3>4350  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 84351  ret void4352}4353 4354define void @v_shuffle_v3i16_v4i16__7_2_3(ptr addrspace(1) inreg %ptr) {4355; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_2_3:4356; GFX900:       ; %bb.0:4357; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4358; GFX900-NEXT:    v_mov_b32_e32 v4, 04359; GFX900-NEXT:    ;;#ASMSTART4360; GFX900-NEXT:    ; def v[0:1]4361; GFX900-NEXT:    ;;#ASMEND4362; GFX900-NEXT:    ;;#ASMSTART4363; GFX900-NEXT:    ; def v[2:3]4364; GFX900-NEXT:    ;;#ASMEND4365; GFX900-NEXT:    v_alignbit_b32 v0, v1, v3, 164366; GFX900-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:44367; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]4368; GFX900-NEXT:    s_waitcnt vmcnt(0)4369; GFX900-NEXT:    s_setpc_b64 s[30:31]4370;4371; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_2_3:4372; GFX90A:       ; %bb.0:4373; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4374; GFX90A-NEXT:    v_mov_b32_e32 v4, 04375; GFX90A-NEXT:    ;;#ASMSTART4376; GFX90A-NEXT:    ; def v[0:1]4377; GFX90A-NEXT:    ;;#ASMEND4378; GFX90A-NEXT:    ;;#ASMSTART4379; GFX90A-NEXT:    ; def v[2:3]4380; GFX90A-NEXT:    ;;#ASMEND4381; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v3, 164382; GFX90A-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:44383; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]4384; GFX90A-NEXT:    s_waitcnt vmcnt(0)4385; GFX90A-NEXT:    s_setpc_b64 s[30:31]4386;4387; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_2_3:4388; GFX942:       ; %bb.0:4389; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4390; GFX942-NEXT:    v_mov_b32_e32 v4, 04391; GFX942-NEXT:    ;;#ASMSTART4392; GFX942-NEXT:    ; def v[0:1]4393; GFX942-NEXT:    ;;#ASMEND4394; GFX942-NEXT:    ;;#ASMSTART4395; GFX942-NEXT:    ; def v[2:3]4396; GFX942-NEXT:    ;;#ASMEND4397; GFX942-NEXT:    s_nop 04398; GFX942-NEXT:    v_alignbit_b32 v0, v1, v3, 164399; GFX942-NEXT:    global_store_short_d16_hi v4, v1, s[0:1] offset:44400; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]4401; GFX942-NEXT:    s_waitcnt vmcnt(0)4402; GFX942-NEXT:    s_setpc_b64 s[30:31]4403  %vec0 = call <4 x i16> asm "; def $0", "=v"()4404  %vec1 = call <4 x i16> asm "; def $0", "=v"()4405  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 2, i32 3>4406  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 84407  ret void4408}4409 4410define void @v_shuffle_v3i16_v4i16__7_4_3(ptr addrspace(1) inreg %ptr) {4411; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_4_3:4412; GFX900:       ; %bb.0:4413; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4414; GFX900-NEXT:    v_mov_b32_e32 v4, 04415; GFX900-NEXT:    ;;#ASMSTART4416; GFX900-NEXT:    ; def v[0:1]4417; GFX900-NEXT:    ;;#ASMEND4418; GFX900-NEXT:    ;;#ASMSTART4419; GFX900-NEXT:    ; def v[2:3]4420; GFX900-NEXT:    ;;#ASMEND4421; GFX900-NEXT:    v_alignbit_b32 v0, v2, v3, 164422; GFX900-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:44423; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]4424; GFX900-NEXT:    s_waitcnt vmcnt(0)4425; GFX900-NEXT:    s_setpc_b64 s[30:31]4426;4427; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_4_3:4428; GFX90A:       ; %bb.0:4429; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4430; GFX90A-NEXT:    v_mov_b32_e32 v4, 04431; GFX90A-NEXT:    ;;#ASMSTART4432; GFX90A-NEXT:    ; def v[0:1]4433; GFX90A-NEXT:    ;;#ASMEND4434; GFX90A-NEXT:    ;;#ASMSTART4435; GFX90A-NEXT:    ; def v[2:3]4436; GFX90A-NEXT:    ;;#ASMEND4437; GFX90A-NEXT:    v_alignbit_b32 v0, v2, v3, 164438; GFX90A-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:44439; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]4440; GFX90A-NEXT:    s_waitcnt vmcnt(0)4441; GFX90A-NEXT:    s_setpc_b64 s[30:31]4442;4443; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_4_3:4444; GFX942:       ; %bb.0:4445; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4446; GFX942-NEXT:    v_mov_b32_e32 v4, 04447; GFX942-NEXT:    ;;#ASMSTART4448; GFX942-NEXT:    ; def v[0:1]4449; GFX942-NEXT:    ;;#ASMEND4450; GFX942-NEXT:    ;;#ASMSTART4451; GFX942-NEXT:    ; def v[2:3]4452; GFX942-NEXT:    ;;#ASMEND4453; GFX942-NEXT:    s_nop 04454; GFX942-NEXT:    v_alignbit_b32 v0, v2, v3, 164455; GFX942-NEXT:    global_store_short_d16_hi v4, v1, s[0:1] offset:44456; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]4457; GFX942-NEXT:    s_waitcnt vmcnt(0)4458; GFX942-NEXT:    s_setpc_b64 s[30:31]4459  %vec0 = call <4 x i16> asm "; def $0", "=v"()4460  %vec1 = call <4 x i16> asm "; def $0", "=v"()4461  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 4, i32 3>4462  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 84463  ret void4464}4465 4466define void @v_shuffle_v3i16_v4i16__7_5_3(ptr addrspace(1) inreg %ptr) {4467; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_5_3:4468; GFX900:       ; %bb.0:4469; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4470; GFX900-NEXT:    v_mov_b32_e32 v4, 04471; GFX900-NEXT:    ;;#ASMSTART4472; GFX900-NEXT:    ; def v[0:1]4473; GFX900-NEXT:    ;;#ASMEND4474; GFX900-NEXT:    s_mov_b32 s4, 0x70603024475; GFX900-NEXT:    ;;#ASMSTART4476; GFX900-NEXT:    ; def v[2:3]4477; GFX900-NEXT:    ;;#ASMEND4478; GFX900-NEXT:    v_perm_b32 v0, v2, v3, s44479; GFX900-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:44480; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]4481; GFX900-NEXT:    s_waitcnt vmcnt(0)4482; GFX900-NEXT:    s_setpc_b64 s[30:31]4483;4484; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_5_3:4485; GFX90A:       ; %bb.0:4486; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4487; GFX90A-NEXT:    v_mov_b32_e32 v4, 04488; GFX90A-NEXT:    ;;#ASMSTART4489; GFX90A-NEXT:    ; def v[0:1]4490; GFX90A-NEXT:    ;;#ASMEND4491; GFX90A-NEXT:    s_mov_b32 s4, 0x70603024492; GFX90A-NEXT:    ;;#ASMSTART4493; GFX90A-NEXT:    ; def v[2:3]4494; GFX90A-NEXT:    ;;#ASMEND4495; GFX90A-NEXT:    v_perm_b32 v0, v2, v3, s44496; GFX90A-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:44497; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]4498; GFX90A-NEXT:    s_waitcnt vmcnt(0)4499; GFX90A-NEXT:    s_setpc_b64 s[30:31]4500;4501; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_5_3:4502; GFX942:       ; %bb.0:4503; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4504; GFX942-NEXT:    v_mov_b32_e32 v4, 04505; GFX942-NEXT:    ;;#ASMSTART4506; GFX942-NEXT:    ; def v[0:1]4507; GFX942-NEXT:    ;;#ASMEND4508; GFX942-NEXT:    s_mov_b32 s2, 0x70603024509; GFX942-NEXT:    ;;#ASMSTART4510; GFX942-NEXT:    ; def v[2:3]4511; GFX942-NEXT:    ;;#ASMEND4512; GFX942-NEXT:    s_nop 04513; GFX942-NEXT:    v_perm_b32 v0, v2, v3, s24514; GFX942-NEXT:    global_store_short_d16_hi v4, v1, s[0:1] offset:44515; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]4516; GFX942-NEXT:    s_waitcnt vmcnt(0)4517; GFX942-NEXT:    s_setpc_b64 s[30:31]4518  %vec0 = call <4 x i16> asm "; def $0", "=v"()4519  %vec1 = call <4 x i16> asm "; def $0", "=v"()4520  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 5, i32 3>4521  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 84522  ret void4523}4524 4525define void @v_shuffle_v3i16_v4i16__7_6_3(ptr addrspace(1) inreg %ptr) {4526; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_6_3:4527; GFX900:       ; %bb.0:4528; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4529; GFX900-NEXT:    v_mov_b32_e32 v4, 04530; GFX900-NEXT:    ;;#ASMSTART4531; GFX900-NEXT:    ; def v[0:1]4532; GFX900-NEXT:    ;;#ASMEND4533; GFX900-NEXT:    ;;#ASMSTART4534; GFX900-NEXT:    ; def v[2:3]4535; GFX900-NEXT:    ;;#ASMEND4536; GFX900-NEXT:    v_alignbit_b32 v0, v3, v3, 164537; GFX900-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:44538; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]4539; GFX900-NEXT:    s_waitcnt vmcnt(0)4540; GFX900-NEXT:    s_setpc_b64 s[30:31]4541;4542; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_6_3:4543; GFX90A:       ; %bb.0:4544; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4545; GFX90A-NEXT:    v_mov_b32_e32 v4, 04546; GFX90A-NEXT:    ;;#ASMSTART4547; GFX90A-NEXT:    ; def v[0:1]4548; GFX90A-NEXT:    ;;#ASMEND4549; GFX90A-NEXT:    ;;#ASMSTART4550; GFX90A-NEXT:    ; def v[2:3]4551; GFX90A-NEXT:    ;;#ASMEND4552; GFX90A-NEXT:    v_alignbit_b32 v0, v3, v3, 164553; GFX90A-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:44554; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]4555; GFX90A-NEXT:    s_waitcnt vmcnt(0)4556; GFX90A-NEXT:    s_setpc_b64 s[30:31]4557;4558; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_6_3:4559; GFX942:       ; %bb.0:4560; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4561; GFX942-NEXT:    v_mov_b32_e32 v4, 04562; GFX942-NEXT:    ;;#ASMSTART4563; GFX942-NEXT:    ; def v[0:1]4564; GFX942-NEXT:    ;;#ASMEND4565; GFX942-NEXT:    ;;#ASMSTART4566; GFX942-NEXT:    ; def v[2:3]4567; GFX942-NEXT:    ;;#ASMEND4568; GFX942-NEXT:    s_nop 04569; GFX942-NEXT:    v_alignbit_b32 v0, v3, v3, 164570; GFX942-NEXT:    global_store_short_d16_hi v4, v1, s[0:1] offset:44571; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]4572; GFX942-NEXT:    s_waitcnt vmcnt(0)4573; GFX942-NEXT:    s_setpc_b64 s[30:31]4574  %vec0 = call <4 x i16> asm "; def $0", "=v"()4575  %vec1 = call <4 x i16> asm "; def $0", "=v"()4576  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 6, i32 3>4577  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 84578  ret void4579}4580 4581define void @v_shuffle_v3i16_v4i16__u_4_4(ptr addrspace(1) inreg %ptr) {4582; GFX9-LABEL: v_shuffle_v3i16_v4i16__u_4_4:4583; GFX9:       ; %bb.0:4584; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4585; GFX9-NEXT:    s_setpc_b64 s[30:31]4586  %vec0 = call <4 x i16> asm "; def $0", "=v"()4587  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 poison, i32 4, i32 4>4588  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 84589  ret void4590}4591 4592define void @v_shuffle_v3i16_v4i16__0_4_4(ptr addrspace(1) inreg %ptr) {4593; GFX900-LABEL: v_shuffle_v3i16_v4i16__0_4_4:4594; GFX900:       ; %bb.0:4595; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4596; GFX900-NEXT:    v_mov_b32_e32 v2, 04597; GFX900-NEXT:    ;;#ASMSTART4598; GFX900-NEXT:    ; def v[0:1]4599; GFX900-NEXT:    ;;#ASMEND4600; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:44601; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]4602; GFX900-NEXT:    s_waitcnt vmcnt(0)4603; GFX900-NEXT:    s_setpc_b64 s[30:31]4604;4605; GFX90A-LABEL: v_shuffle_v3i16_v4i16__0_4_4:4606; GFX90A:       ; %bb.0:4607; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4608; GFX90A-NEXT:    v_mov_b32_e32 v2, 04609; GFX90A-NEXT:    ;;#ASMSTART4610; GFX90A-NEXT:    ; def v[0:1]4611; GFX90A-NEXT:    ;;#ASMEND4612; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:44613; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]4614; GFX90A-NEXT:    s_waitcnt vmcnt(0)4615; GFX90A-NEXT:    s_setpc_b64 s[30:31]4616;4617; GFX942-LABEL: v_shuffle_v3i16_v4i16__0_4_4:4618; GFX942:       ; %bb.0:4619; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4620; GFX942-NEXT:    v_mov_b32_e32 v2, 04621; GFX942-NEXT:    ;;#ASMSTART4622; GFX942-NEXT:    ; def v[0:1]4623; GFX942-NEXT:    ;;#ASMEND4624; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:44625; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]4626; GFX942-NEXT:    s_waitcnt vmcnt(0)4627; GFX942-NEXT:    s_setpc_b64 s[30:31]4628  %vec0 = call <4 x i16> asm "; def $0", "=v"()4629  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 4, i32 4>4630  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 84631  ret void4632}4633 4634define void @v_shuffle_v3i16_v4i16__1_4_4(ptr addrspace(1) inreg %ptr) {4635; GFX900-LABEL: v_shuffle_v3i16_v4i16__1_4_4:4636; GFX900:       ; %bb.0:4637; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4638; GFX900-NEXT:    ;;#ASMSTART4639; GFX900-NEXT:    ; def v[0:1]4640; GFX900-NEXT:    ;;#ASMEND4641; GFX900-NEXT:    v_mov_b32_e32 v2, 04642; GFX900-NEXT:    v_alignbit_b32 v0, s4, v0, 164643; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]4644; GFX900-NEXT:    s_waitcnt vmcnt(0)4645; GFX900-NEXT:    s_setpc_b64 s[30:31]4646;4647; GFX90A-LABEL: v_shuffle_v3i16_v4i16__1_4_4:4648; GFX90A:       ; %bb.0:4649; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4650; GFX90A-NEXT:    ;;#ASMSTART4651; GFX90A-NEXT:    ; def v[0:1]4652; GFX90A-NEXT:    ;;#ASMEND4653; GFX90A-NEXT:    v_mov_b32_e32 v2, 04654; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v0, 164655; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]4656; GFX90A-NEXT:    s_waitcnt vmcnt(0)4657; GFX90A-NEXT:    s_setpc_b64 s[30:31]4658;4659; GFX942-LABEL: v_shuffle_v3i16_v4i16__1_4_4:4660; GFX942:       ; %bb.0:4661; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4662; GFX942-NEXT:    ;;#ASMSTART4663; GFX942-NEXT:    ; def v[0:1]4664; GFX942-NEXT:    ;;#ASMEND4665; GFX942-NEXT:    v_mov_b32_e32 v2, 04666; GFX942-NEXT:    v_alignbit_b32 v0, s0, v0, 164667; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]4668; GFX942-NEXT:    s_waitcnt vmcnt(0)4669; GFX942-NEXT:    s_setpc_b64 s[30:31]4670  %vec0 = call <4 x i16> asm "; def $0", "=v"()4671  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 1, i32 4, i32 4>4672  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 84673  ret void4674}4675 4676define void @v_shuffle_v3i16_v4i16__2_4_4(ptr addrspace(1) inreg %ptr) {4677; GFX900-LABEL: v_shuffle_v3i16_v4i16__2_4_4:4678; GFX900:       ; %bb.0:4679; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4680; GFX900-NEXT:    v_mov_b32_e32 v2, 04681; GFX900-NEXT:    ;;#ASMSTART4682; GFX900-NEXT:    ; def v[0:1]4683; GFX900-NEXT:    ;;#ASMEND4684; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]4685; GFX900-NEXT:    s_waitcnt vmcnt(0)4686; GFX900-NEXT:    s_setpc_b64 s[30:31]4687;4688; GFX90A-LABEL: v_shuffle_v3i16_v4i16__2_4_4:4689; GFX90A:       ; %bb.0:4690; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4691; GFX90A-NEXT:    v_mov_b32_e32 v2, 04692; GFX90A-NEXT:    ;;#ASMSTART4693; GFX90A-NEXT:    ; def v[0:1]4694; GFX90A-NEXT:    ;;#ASMEND4695; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]4696; GFX90A-NEXT:    s_waitcnt vmcnt(0)4697; GFX90A-NEXT:    s_setpc_b64 s[30:31]4698;4699; GFX942-LABEL: v_shuffle_v3i16_v4i16__2_4_4:4700; GFX942:       ; %bb.0:4701; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4702; GFX942-NEXT:    v_mov_b32_e32 v2, 04703; GFX942-NEXT:    ;;#ASMSTART4704; GFX942-NEXT:    ; def v[0:1]4705; GFX942-NEXT:    ;;#ASMEND4706; GFX942-NEXT:    global_store_dword v2, v1, 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  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 2, i32 4, i32 4>4711  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 84712  ret void4713}4714 4715define void @v_shuffle_v3i16_v4i16__3_4_4(ptr addrspace(1) inreg %ptr) {4716; GFX900-LABEL: v_shuffle_v3i16_v4i16__3_4_4:4717; GFX900:       ; %bb.0:4718; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4719; GFX900-NEXT:    ;;#ASMSTART4720; GFX900-NEXT:    ; def v[0:1]4721; GFX900-NEXT:    ;;#ASMEND4722; GFX900-NEXT:    v_mov_b32_e32 v2, 04723; GFX900-NEXT:    v_alignbit_b32 v0, s4, v1, 164724; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]4725; GFX900-NEXT:    s_waitcnt vmcnt(0)4726; GFX900-NEXT:    s_setpc_b64 s[30:31]4727;4728; GFX90A-LABEL: v_shuffle_v3i16_v4i16__3_4_4:4729; GFX90A:       ; %bb.0:4730; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4731; GFX90A-NEXT:    ;;#ASMSTART4732; GFX90A-NEXT:    ; def v[0:1]4733; GFX90A-NEXT:    ;;#ASMEND4734; GFX90A-NEXT:    v_mov_b32_e32 v2, 04735; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v1, 164736; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]4737; GFX90A-NEXT:    s_waitcnt vmcnt(0)4738; GFX90A-NEXT:    s_setpc_b64 s[30:31]4739;4740; GFX942-LABEL: v_shuffle_v3i16_v4i16__3_4_4:4741; GFX942:       ; %bb.0:4742; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4743; GFX942-NEXT:    ;;#ASMSTART4744; GFX942-NEXT:    ; def v[0:1]4745; GFX942-NEXT:    ;;#ASMEND4746; GFX942-NEXT:    v_mov_b32_e32 v2, 04747; GFX942-NEXT:    v_alignbit_b32 v0, s0, v1, 164748; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]4749; GFX942-NEXT:    s_waitcnt vmcnt(0)4750; GFX942-NEXT:    s_setpc_b64 s[30:31]4751  %vec0 = call <4 x i16> asm "; def $0", "=v"()4752  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 3, i32 4, i32 4>4753  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 84754  ret void4755}4756 4757define void @v_shuffle_v3i16_v4i16__4_4_4(ptr addrspace(1) inreg %ptr) {4758; GFX9-LABEL: v_shuffle_v3i16_v4i16__4_4_4:4759; GFX9:       ; %bb.0:4760; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4761; GFX9-NEXT:    s_setpc_b64 s[30:31]4762  %vec0 = call <4 x i16> asm "; def $0", "=v"()4763  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 4, i32 4, i32 4>4764  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 84765  ret void4766}4767 4768define void @v_shuffle_v3i16_v4i16__5_4_4(ptr addrspace(1) inreg %ptr) {4769; GFX900-LABEL: v_shuffle_v3i16_v4i16__5_4_4:4770; GFX900:       ; %bb.0:4771; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4772; GFX900-NEXT:    v_mov_b32_e32 v2, 04773; GFX900-NEXT:    ;;#ASMSTART4774; GFX900-NEXT:    ; def v[0:1]4775; GFX900-NEXT:    ;;#ASMEND4776; GFX900-NEXT:    v_alignbit_b32 v1, v0, v0, 164777; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:44778; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]4779; GFX900-NEXT:    s_waitcnt vmcnt(0)4780; GFX900-NEXT:    s_setpc_b64 s[30:31]4781;4782; GFX90A-LABEL: v_shuffle_v3i16_v4i16__5_4_4:4783; GFX90A:       ; %bb.0:4784; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4785; GFX90A-NEXT:    v_mov_b32_e32 v2, 04786; GFX90A-NEXT:    ;;#ASMSTART4787; GFX90A-NEXT:    ; def v[0:1]4788; GFX90A-NEXT:    ;;#ASMEND4789; GFX90A-NEXT:    v_alignbit_b32 v1, v0, v0, 164790; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:44791; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]4792; GFX90A-NEXT:    s_waitcnt vmcnt(0)4793; GFX90A-NEXT:    s_setpc_b64 s[30:31]4794;4795; GFX942-LABEL: v_shuffle_v3i16_v4i16__5_4_4:4796; GFX942:       ; %bb.0:4797; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4798; GFX942-NEXT:    v_mov_b32_e32 v2, 04799; GFX942-NEXT:    ;;#ASMSTART4800; GFX942-NEXT:    ; def v[0:1]4801; GFX942-NEXT:    ;;#ASMEND4802; GFX942-NEXT:    s_nop 04803; GFX942-NEXT:    v_alignbit_b32 v1, v0, v0, 164804; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:44805; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]4806; GFX942-NEXT:    s_waitcnt vmcnt(0)4807; GFX942-NEXT:    s_setpc_b64 s[30:31]4808  %vec0 = call <4 x i16> asm "; def $0", "=v"()4809  %vec1 = call <4 x i16> asm "; def $0", "=v"()4810  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 5, i32 4, i32 4>4811  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 84812  ret void4813}4814 4815define void @v_shuffle_v3i16_v4i16__6_4_4(ptr addrspace(1) inreg %ptr) {4816; GFX900-LABEL: v_shuffle_v3i16_v4i16__6_4_4:4817; GFX900:       ; %bb.0:4818; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4819; GFX900-NEXT:    v_mov_b32_e32 v2, 04820; GFX900-NEXT:    ;;#ASMSTART4821; GFX900-NEXT:    ; def v[0:1]4822; GFX900-NEXT:    ;;#ASMEND4823; GFX900-NEXT:    s_mov_b32 s4, 0x50401004824; GFX900-NEXT:    v_perm_b32 v1, v0, v1, s44825; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:44826; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]4827; GFX900-NEXT:    s_waitcnt vmcnt(0)4828; GFX900-NEXT:    s_setpc_b64 s[30:31]4829;4830; GFX90A-LABEL: v_shuffle_v3i16_v4i16__6_4_4:4831; GFX90A:       ; %bb.0:4832; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4833; GFX90A-NEXT:    v_mov_b32_e32 v2, 04834; GFX90A-NEXT:    ;;#ASMSTART4835; GFX90A-NEXT:    ; def v[0:1]4836; GFX90A-NEXT:    ;;#ASMEND4837; GFX90A-NEXT:    s_mov_b32 s4, 0x50401004838; GFX90A-NEXT:    v_perm_b32 v1, v0, v1, s44839; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:44840; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]4841; GFX90A-NEXT:    s_waitcnt vmcnt(0)4842; GFX90A-NEXT:    s_setpc_b64 s[30:31]4843;4844; GFX942-LABEL: v_shuffle_v3i16_v4i16__6_4_4:4845; GFX942:       ; %bb.0:4846; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4847; GFX942-NEXT:    v_mov_b32_e32 v2, 04848; GFX942-NEXT:    ;;#ASMSTART4849; GFX942-NEXT:    ; def v[0:1]4850; GFX942-NEXT:    ;;#ASMEND4851; GFX942-NEXT:    s_mov_b32 s2, 0x50401004852; GFX942-NEXT:    v_perm_b32 v1, v0, v1, s24853; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:44854; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]4855; GFX942-NEXT:    s_waitcnt vmcnt(0)4856; GFX942-NEXT:    s_setpc_b64 s[30:31]4857  %vec0 = call <4 x i16> asm "; def $0", "=v"()4858  %vec1 = call <4 x i16> asm "; def $0", "=v"()4859  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 6, i32 4, i32 4>4860  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 84861  ret void4862}4863 4864define void @v_shuffle_v3i16_v4i16__7_4_4(ptr addrspace(1) inreg %ptr) {4865; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_4_4:4866; GFX900:       ; %bb.0:4867; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4868; GFX900-NEXT:    v_mov_b32_e32 v2, 04869; GFX900-NEXT:    ;;#ASMSTART4870; GFX900-NEXT:    ; def v[0:1]4871; GFX900-NEXT:    ;;#ASMEND4872; GFX900-NEXT:    v_alignbit_b32 v1, v0, v1, 164873; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:44874; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]4875; GFX900-NEXT:    s_waitcnt vmcnt(0)4876; GFX900-NEXT:    s_setpc_b64 s[30:31]4877;4878; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_4_4:4879; GFX90A:       ; %bb.0:4880; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4881; GFX90A-NEXT:    v_mov_b32_e32 v2, 04882; GFX90A-NEXT:    ;;#ASMSTART4883; GFX90A-NEXT:    ; def v[0:1]4884; GFX90A-NEXT:    ;;#ASMEND4885; GFX90A-NEXT:    v_alignbit_b32 v1, v0, v1, 164886; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:44887; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]4888; GFX90A-NEXT:    s_waitcnt vmcnt(0)4889; GFX90A-NEXT:    s_setpc_b64 s[30:31]4890;4891; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_4_4:4892; GFX942:       ; %bb.0:4893; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4894; GFX942-NEXT:    v_mov_b32_e32 v2, 04895; GFX942-NEXT:    ;;#ASMSTART4896; GFX942-NEXT:    ; def v[0:1]4897; GFX942-NEXT:    ;;#ASMEND4898; GFX942-NEXT:    s_nop 04899; GFX942-NEXT:    v_alignbit_b32 v1, v0, v1, 164900; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:44901; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]4902; GFX942-NEXT:    s_waitcnt vmcnt(0)4903; GFX942-NEXT:    s_setpc_b64 s[30:31]4904  %vec0 = call <4 x i16> asm "; def $0", "=v"()4905  %vec1 = call <4 x i16> asm "; def $0", "=v"()4906  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 4, i32 4>4907  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 84908  ret void4909}4910 4911define void @v_shuffle_v3i16_v4i16__7_u_4(ptr addrspace(1) inreg %ptr) {4912; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_u_4:4913; GFX900:       ; %bb.0:4914; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4915; GFX900-NEXT:    v_mov_b32_e32 v2, 04916; GFX900-NEXT:    ;;#ASMSTART4917; GFX900-NEXT:    ; def v[0:1]4918; GFX900-NEXT:    ;;#ASMEND4919; GFX900-NEXT:    v_alignbit_b32 v1, s4, v1, 164920; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:44921; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]4922; GFX900-NEXT:    s_waitcnt vmcnt(0)4923; GFX900-NEXT:    s_setpc_b64 s[30:31]4924;4925; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_u_4:4926; GFX90A:       ; %bb.0:4927; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4928; GFX90A-NEXT:    v_mov_b32_e32 v2, 04929; GFX90A-NEXT:    ;;#ASMSTART4930; GFX90A-NEXT:    ; def v[0:1]4931; GFX90A-NEXT:    ;;#ASMEND4932; GFX90A-NEXT:    v_alignbit_b32 v1, s4, v1, 164933; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:44934; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]4935; GFX90A-NEXT:    s_waitcnt vmcnt(0)4936; GFX90A-NEXT:    s_setpc_b64 s[30:31]4937;4938; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_u_4:4939; GFX942:       ; %bb.0:4940; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4941; GFX942-NEXT:    v_mov_b32_e32 v2, 04942; GFX942-NEXT:    ;;#ASMSTART4943; GFX942-NEXT:    ; def v[0:1]4944; GFX942-NEXT:    ;;#ASMEND4945; GFX942-NEXT:    s_nop 04946; GFX942-NEXT:    v_alignbit_b32 v1, s0, v1, 164947; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:44948; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]4949; GFX942-NEXT:    s_waitcnt vmcnt(0)4950; GFX942-NEXT:    s_setpc_b64 s[30:31]4951  %vec0 = call <4 x i16> asm "; def $0", "=v"()4952  %vec1 = call <4 x i16> asm "; def $0", "=v"()4953  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 poison, i32 4>4954  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 84955  ret void4956}4957 4958define void @v_shuffle_v3i16_v4i16__7_0_4(ptr addrspace(1) inreg %ptr) {4959; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_0_4:4960; GFX900:       ; %bb.0:4961; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4962; GFX900-NEXT:    ;;#ASMSTART4963; GFX900-NEXT:    ; def v[0:1]4964; GFX900-NEXT:    ;;#ASMEND4965; GFX900-NEXT:    v_mov_b32_e32 v3, 04966; GFX900-NEXT:    ;;#ASMSTART4967; GFX900-NEXT:    ; def v[1:2]4968; GFX900-NEXT:    ;;#ASMEND4969; GFX900-NEXT:    v_alignbit_b32 v0, v0, v2, 164970; GFX900-NEXT:    global_store_short v3, v1, s[16:17] offset:44971; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]4972; GFX900-NEXT:    s_waitcnt vmcnt(0)4973; GFX900-NEXT:    s_setpc_b64 s[30:31]4974;4975; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_0_4:4976; GFX90A:       ; %bb.0:4977; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4978; GFX90A-NEXT:    v_mov_b32_e32 v4, 04979; GFX90A-NEXT:    ;;#ASMSTART4980; GFX90A-NEXT:    ; def v[0:1]4981; GFX90A-NEXT:    ;;#ASMEND4982; GFX90A-NEXT:    ;;#ASMSTART4983; GFX90A-NEXT:    ; def v[2:3]4984; GFX90A-NEXT:    ;;#ASMEND4985; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v3, 164986; GFX90A-NEXT:    global_store_short v4, v2, s[16:17] offset:44987; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]4988; GFX90A-NEXT:    s_waitcnt vmcnt(0)4989; GFX90A-NEXT:    s_setpc_b64 s[30:31]4990;4991; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_0_4:4992; GFX942:       ; %bb.0:4993; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4994; GFX942-NEXT:    v_mov_b32_e32 v4, 04995; GFX942-NEXT:    ;;#ASMSTART4996; GFX942-NEXT:    ; def v[0:1]4997; GFX942-NEXT:    ;;#ASMEND4998; GFX942-NEXT:    ;;#ASMSTART4999; GFX942-NEXT:    ; def v[2:3]5000; GFX942-NEXT:    ;;#ASMEND5001; GFX942-NEXT:    s_nop 05002; GFX942-NEXT:    v_alignbit_b32 v0, v0, v3, 165003; GFX942-NEXT:    global_store_short v4, v2, s[0:1] offset:45004; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]5005; GFX942-NEXT:    s_waitcnt vmcnt(0)5006; GFX942-NEXT:    s_setpc_b64 s[30:31]5007  %vec0 = call <4 x i16> asm "; def $0", "=v"()5008  %vec1 = call <4 x i16> asm "; def $0", "=v"()5009  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 0, i32 4>5010  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 85011  ret void5012}5013 5014define void @v_shuffle_v3i16_v4i16__7_1_4(ptr addrspace(1) inreg %ptr) {5015; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_1_4:5016; GFX900:       ; %bb.0:5017; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5018; GFX900-NEXT:    ;;#ASMSTART5019; GFX900-NEXT:    ; def v[0:1]5020; GFX900-NEXT:    ;;#ASMEND5021; GFX900-NEXT:    v_mov_b32_e32 v3, 05022; GFX900-NEXT:    ;;#ASMSTART5023; GFX900-NEXT:    ; def v[1:2]5024; GFX900-NEXT:    ;;#ASMEND5025; GFX900-NEXT:    s_mov_b32 s4, 0x70603025026; GFX900-NEXT:    v_perm_b32 v0, v0, v2, s45027; GFX900-NEXT:    global_store_short v3, v1, s[16:17] offset:45028; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]5029; GFX900-NEXT:    s_waitcnt vmcnt(0)5030; GFX900-NEXT:    s_setpc_b64 s[30:31]5031;5032; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_1_4:5033; GFX90A:       ; %bb.0:5034; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5035; GFX90A-NEXT:    v_mov_b32_e32 v4, 05036; GFX90A-NEXT:    ;;#ASMSTART5037; GFX90A-NEXT:    ; def v[0:1]5038; GFX90A-NEXT:    ;;#ASMEND5039; GFX90A-NEXT:    ;;#ASMSTART5040; GFX90A-NEXT:    ; def v[2:3]5041; GFX90A-NEXT:    ;;#ASMEND5042; GFX90A-NEXT:    s_mov_b32 s4, 0x70603025043; GFX90A-NEXT:    v_perm_b32 v0, v0, v3, s45044; GFX90A-NEXT:    global_store_short v4, v2, s[16:17] offset:45045; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]5046; GFX90A-NEXT:    s_waitcnt vmcnt(0)5047; GFX90A-NEXT:    s_setpc_b64 s[30:31]5048;5049; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_1_4:5050; GFX942:       ; %bb.0:5051; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5052; GFX942-NEXT:    v_mov_b32_e32 v4, 05053; GFX942-NEXT:    ;;#ASMSTART5054; GFX942-NEXT:    ; def v[0:1]5055; GFX942-NEXT:    ;;#ASMEND5056; GFX942-NEXT:    ;;#ASMSTART5057; GFX942-NEXT:    ; def v[2:3]5058; GFX942-NEXT:    ;;#ASMEND5059; GFX942-NEXT:    s_mov_b32 s2, 0x70603025060; GFX942-NEXT:    v_perm_b32 v0, v0, v3, s25061; GFX942-NEXT:    global_store_short v4, v2, s[0:1] offset:45062; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]5063; GFX942-NEXT:    s_waitcnt vmcnt(0)5064; GFX942-NEXT:    s_setpc_b64 s[30:31]5065  %vec0 = call <4 x i16> asm "; def $0", "=v"()5066  %vec1 = call <4 x i16> asm "; def $0", "=v"()5067  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 1, i32 4>5068  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 85069  ret void5070}5071 5072define void @v_shuffle_v3i16_v4i16__7_2_4(ptr addrspace(1) inreg %ptr) {5073; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_2_4:5074; GFX900:       ; %bb.0:5075; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5076; GFX900-NEXT:    v_mov_b32_e32 v4, 05077; GFX900-NEXT:    ;;#ASMSTART5078; GFX900-NEXT:    ; def v[0:1]5079; GFX900-NEXT:    ;;#ASMEND5080; GFX900-NEXT:    ;;#ASMSTART5081; GFX900-NEXT:    ; def v[2:3]5082; GFX900-NEXT:    ;;#ASMEND5083; GFX900-NEXT:    v_alignbit_b32 v0, v1, v3, 165084; GFX900-NEXT:    global_store_short v4, v2, s[16:17] offset:45085; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]5086; GFX900-NEXT:    s_waitcnt vmcnt(0)5087; GFX900-NEXT:    s_setpc_b64 s[30:31]5088;5089; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_2_4:5090; GFX90A:       ; %bb.0:5091; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5092; GFX90A-NEXT:    v_mov_b32_e32 v4, 05093; GFX90A-NEXT:    ;;#ASMSTART5094; GFX90A-NEXT:    ; def v[0:1]5095; GFX90A-NEXT:    ;;#ASMEND5096; GFX90A-NEXT:    ;;#ASMSTART5097; GFX90A-NEXT:    ; def v[2:3]5098; GFX90A-NEXT:    ;;#ASMEND5099; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v3, 165100; GFX90A-NEXT:    global_store_short v4, v2, s[16:17] offset:45101; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]5102; GFX90A-NEXT:    s_waitcnt vmcnt(0)5103; GFX90A-NEXT:    s_setpc_b64 s[30:31]5104;5105; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_2_4:5106; GFX942:       ; %bb.0:5107; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5108; GFX942-NEXT:    v_mov_b32_e32 v4, 05109; GFX942-NEXT:    ;;#ASMSTART5110; GFX942-NEXT:    ; def v[0:1]5111; GFX942-NEXT:    ;;#ASMEND5112; GFX942-NEXT:    ;;#ASMSTART5113; GFX942-NEXT:    ; def v[2:3]5114; GFX942-NEXT:    ;;#ASMEND5115; GFX942-NEXT:    s_nop 05116; GFX942-NEXT:    v_alignbit_b32 v0, v1, v3, 165117; GFX942-NEXT:    global_store_short v4, v2, s[0:1] offset:45118; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]5119; GFX942-NEXT:    s_waitcnt vmcnt(0)5120; GFX942-NEXT:    s_setpc_b64 s[30:31]5121  %vec0 = call <4 x i16> asm "; def $0", "=v"()5122  %vec1 = call <4 x i16> asm "; def $0", "=v"()5123  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 2, i32 4>5124  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 85125  ret void5126}5127 5128define void @v_shuffle_v3i16_v4i16__7_3_4(ptr addrspace(1) inreg %ptr) {5129; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_3_4:5130; GFX900:       ; %bb.0:5131; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5132; GFX900-NEXT:    v_mov_b32_e32 v4, 05133; GFX900-NEXT:    ;;#ASMSTART5134; GFX900-NEXT:    ; def v[0:1]5135; GFX900-NEXT:    ;;#ASMEND5136; GFX900-NEXT:    ;;#ASMSTART5137; GFX900-NEXT:    ; def v[2:3]5138; GFX900-NEXT:    ;;#ASMEND5139; GFX900-NEXT:    s_mov_b32 s4, 0x70603025140; GFX900-NEXT:    v_perm_b32 v0, v1, v3, s45141; GFX900-NEXT:    global_store_short v4, v2, s[16:17] offset:45142; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]5143; GFX900-NEXT:    s_waitcnt vmcnt(0)5144; GFX900-NEXT:    s_setpc_b64 s[30:31]5145;5146; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_3_4:5147; GFX90A:       ; %bb.0:5148; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5149; GFX90A-NEXT:    v_mov_b32_e32 v4, 05150; GFX90A-NEXT:    ;;#ASMSTART5151; GFX90A-NEXT:    ; def v[0:1]5152; GFX90A-NEXT:    ;;#ASMEND5153; GFX90A-NEXT:    ;;#ASMSTART5154; GFX90A-NEXT:    ; def v[2:3]5155; GFX90A-NEXT:    ;;#ASMEND5156; GFX90A-NEXT:    s_mov_b32 s4, 0x70603025157; GFX90A-NEXT:    v_perm_b32 v0, v1, v3, s45158; GFX90A-NEXT:    global_store_short v4, v2, s[16:17] offset:45159; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]5160; GFX90A-NEXT:    s_waitcnt vmcnt(0)5161; GFX90A-NEXT:    s_setpc_b64 s[30:31]5162;5163; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_3_4:5164; GFX942:       ; %bb.0:5165; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5166; GFX942-NEXT:    v_mov_b32_e32 v4, 05167; GFX942-NEXT:    ;;#ASMSTART5168; GFX942-NEXT:    ; def v[0:1]5169; GFX942-NEXT:    ;;#ASMEND5170; GFX942-NEXT:    ;;#ASMSTART5171; GFX942-NEXT:    ; def v[2:3]5172; GFX942-NEXT:    ;;#ASMEND5173; GFX942-NEXT:    s_mov_b32 s2, 0x70603025174; GFX942-NEXT:    v_perm_b32 v0, v1, v3, s25175; GFX942-NEXT:    global_store_short v4, v2, s[0:1] offset:45176; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]5177; GFX942-NEXT:    s_waitcnt vmcnt(0)5178; GFX942-NEXT:    s_setpc_b64 s[30:31]5179  %vec0 = call <4 x i16> asm "; def $0", "=v"()5180  %vec1 = call <4 x i16> asm "; def $0", "=v"()5181  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 3, i32 4>5182  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 85183  ret void5184}5185 5186define void @v_shuffle_v3i16_v4i16__7_5_4(ptr addrspace(1) inreg %ptr) {5187; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_5_4:5188; GFX900:       ; %bb.0:5189; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5190; GFX900-NEXT:    v_mov_b32_e32 v2, 05191; GFX900-NEXT:    ;;#ASMSTART5192; GFX900-NEXT:    ; def v[0:1]5193; GFX900-NEXT:    ;;#ASMEND5194; GFX900-NEXT:    s_mov_b32 s4, 0x70603025195; GFX900-NEXT:    v_perm_b32 v1, v0, v1, s45196; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:45197; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]5198; GFX900-NEXT:    s_waitcnt vmcnt(0)5199; GFX900-NEXT:    s_setpc_b64 s[30:31]5200;5201; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_5_4:5202; GFX90A:       ; %bb.0:5203; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5204; GFX90A-NEXT:    v_mov_b32_e32 v2, 05205; GFX90A-NEXT:    ;;#ASMSTART5206; GFX90A-NEXT:    ; def v[0:1]5207; GFX90A-NEXT:    ;;#ASMEND5208; GFX90A-NEXT:    s_mov_b32 s4, 0x70603025209; GFX90A-NEXT:    v_perm_b32 v1, v0, v1, s45210; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:45211; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]5212; GFX90A-NEXT:    s_waitcnt vmcnt(0)5213; GFX90A-NEXT:    s_setpc_b64 s[30:31]5214;5215; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_5_4:5216; GFX942:       ; %bb.0:5217; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5218; GFX942-NEXT:    v_mov_b32_e32 v2, 05219; GFX942-NEXT:    ;;#ASMSTART5220; GFX942-NEXT:    ; def v[0:1]5221; GFX942-NEXT:    ;;#ASMEND5222; GFX942-NEXT:    s_mov_b32 s2, 0x70603025223; GFX942-NEXT:    v_perm_b32 v1, v0, v1, s25224; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:45225; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]5226; GFX942-NEXT:    s_waitcnt vmcnt(0)5227; GFX942-NEXT:    s_setpc_b64 s[30:31]5228  %vec0 = call <4 x i16> asm "; def $0", "=v"()5229  %vec1 = call <4 x i16> asm "; def $0", "=v"()5230  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 5, i32 4>5231  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 85232  ret void5233}5234 5235define void @v_shuffle_v3i16_v4i16__7_6_4(ptr addrspace(1) inreg %ptr) {5236; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_6_4:5237; GFX900:       ; %bb.0:5238; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5239; GFX900-NEXT:    v_mov_b32_e32 v2, 05240; GFX900-NEXT:    ;;#ASMSTART5241; GFX900-NEXT:    ; def v[0:1]5242; GFX900-NEXT:    ;;#ASMEND5243; GFX900-NEXT:    v_alignbit_b32 v1, v1, v1, 165244; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:45245; GFX900-NEXT:    global_store_dword v2, v1, 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_v3i16_v4i16__7_6_4:5250; GFX90A:       ; %bb.0:5251; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5252; GFX90A-NEXT:    v_mov_b32_e32 v2, 05253; GFX90A-NEXT:    ;;#ASMSTART5254; GFX90A-NEXT:    ; def v[0:1]5255; GFX90A-NEXT:    ;;#ASMEND5256; GFX90A-NEXT:    v_alignbit_b32 v1, v1, v1, 165257; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:45258; GFX90A-NEXT:    global_store_dword v2, v1, 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_v3i16_v4i16__7_6_4:5263; GFX942:       ; %bb.0:5264; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5265; GFX942-NEXT:    v_mov_b32_e32 v2, 05266; GFX942-NEXT:    ;;#ASMSTART5267; GFX942-NEXT:    ; def v[0:1]5268; GFX942-NEXT:    ;;#ASMEND5269; GFX942-NEXT:    s_nop 05270; GFX942-NEXT:    v_alignbit_b32 v1, v1, v1, 165271; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:45272; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]5273; GFX942-NEXT:    s_waitcnt vmcnt(0)5274; GFX942-NEXT:    s_setpc_b64 s[30:31]5275  %vec0 = call <4 x i16> asm "; def $0", "=v"()5276  %vec1 = call <4 x i16> asm "; def $0", "=v"()5277  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 6, i32 4>5278  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 85279  ret void5280}5281 5282define void @v_shuffle_v3i16_v4i16__u_5_5(ptr addrspace(1) inreg %ptr) {5283; GFX900-LABEL: v_shuffle_v3i16_v4i16__u_5_5:5284; GFX900:       ; %bb.0:5285; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5286; GFX900-NEXT:    v_mov_b32_e32 v2, 05287; GFX900-NEXT:    ;;#ASMSTART5288; GFX900-NEXT:    ; def v[0:1]5289; GFX900-NEXT:    ;;#ASMEND5290; GFX900-NEXT:    global_store_short_d16_hi v2, v0, s[16:17] offset:45291; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]5292; GFX900-NEXT:    s_waitcnt vmcnt(0)5293; GFX900-NEXT:    s_setpc_b64 s[30:31]5294;5295; GFX90A-LABEL: v_shuffle_v3i16_v4i16__u_5_5:5296; GFX90A:       ; %bb.0:5297; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5298; GFX90A-NEXT:    v_mov_b32_e32 v2, 05299; GFX90A-NEXT:    ;;#ASMSTART5300; GFX90A-NEXT:    ; def v[0:1]5301; GFX90A-NEXT:    ;;#ASMEND5302; GFX90A-NEXT:    global_store_short_d16_hi v2, v0, s[16:17] offset:45303; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]5304; GFX90A-NEXT:    s_waitcnt vmcnt(0)5305; GFX90A-NEXT:    s_setpc_b64 s[30:31]5306;5307; GFX942-LABEL: v_shuffle_v3i16_v4i16__u_5_5:5308; GFX942:       ; %bb.0:5309; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5310; GFX942-NEXT:    v_mov_b32_e32 v2, 05311; GFX942-NEXT:    ;;#ASMSTART5312; GFX942-NEXT:    ; def v[0:1]5313; GFX942-NEXT:    ;;#ASMEND5314; GFX942-NEXT:    global_store_short_d16_hi v2, v0, s[0:1] offset:45315; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]5316; GFX942-NEXT:    s_waitcnt vmcnt(0)5317; GFX942-NEXT:    s_setpc_b64 s[30:31]5318  %vec0 = call <4 x i16> asm "; def $0", "=v"()5319  %vec1 = call <4 x i16> asm "; def $0", "=v"()5320  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 poison, i32 5, i32 5>5321  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 85322  ret void5323}5324 5325define void @v_shuffle_v3i16_v4i16__0_5_5(ptr addrspace(1) inreg %ptr) {5326; GFX900-LABEL: v_shuffle_v3i16_v4i16__0_5_5:5327; GFX900:       ; %bb.0:5328; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5329; GFX900-NEXT:    ;;#ASMSTART5330; GFX900-NEXT:    ; def v[0:1]5331; GFX900-NEXT:    ;;#ASMEND5332; GFX900-NEXT:    s_mov_b32 s4, 0xffff5333; GFX900-NEXT:    v_mov_b32_e32 v3, 05334; GFX900-NEXT:    ;;#ASMSTART5335; GFX900-NEXT:    ; def v[1:2]5336; GFX900-NEXT:    ;;#ASMEND5337; GFX900-NEXT:    v_bfi_b32 v0, s4, v0, v15338; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]5339; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v15340; GFX900-NEXT:    global_store_short v3, v0, s[16:17] offset:45341; GFX900-NEXT:    s_waitcnt vmcnt(0)5342; GFX900-NEXT:    s_setpc_b64 s[30:31]5343;5344; GFX90A-LABEL: v_shuffle_v3i16_v4i16__0_5_5:5345; GFX90A:       ; %bb.0:5346; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5347; GFX90A-NEXT:    ;;#ASMSTART5348; GFX90A-NEXT:    ; def v[0:1]5349; GFX90A-NEXT:    ;;#ASMEND5350; GFX90A-NEXT:    s_mov_b32 s4, 0xffff5351; GFX90A-NEXT:    v_mov_b32_e32 v4, 05352; GFX90A-NEXT:    ;;#ASMSTART5353; GFX90A-NEXT:    ; def v[2:3]5354; GFX90A-NEXT:    ;;#ASMEND5355; GFX90A-NEXT:    v_bfi_b32 v0, s4, v0, v25356; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]5357; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v25358; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:45359; GFX90A-NEXT:    s_waitcnt vmcnt(0)5360; GFX90A-NEXT:    s_setpc_b64 s[30:31]5361;5362; GFX942-LABEL: v_shuffle_v3i16_v4i16__0_5_5:5363; GFX942:       ; %bb.0:5364; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5365; GFX942-NEXT:    ;;#ASMSTART5366; GFX942-NEXT:    ; def v[0:1]5367; GFX942-NEXT:    ;;#ASMEND5368; GFX942-NEXT:    s_mov_b32 s2, 0xffff5369; GFX942-NEXT:    v_mov_b32_e32 v4, 05370; GFX942-NEXT:    ;;#ASMSTART5371; GFX942-NEXT:    ; def v[2:3]5372; GFX942-NEXT:    ;;#ASMEND5373; GFX942-NEXT:    s_nop 05374; GFX942-NEXT:    v_bfi_b32 v0, s2, v0, v25375; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]5376; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v25377; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:45378; GFX942-NEXT:    s_waitcnt vmcnt(0)5379; GFX942-NEXT:    s_setpc_b64 s[30:31]5380  %vec0 = call <4 x i16> asm "; def $0", "=v"()5381  %vec1 = call <4 x i16> asm "; def $0", "=v"()5382  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 0, i32 5, i32 5>5383  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 85384  ret void5385}5386 5387define void @v_shuffle_v3i16_v4i16__1_5_5(ptr addrspace(1) inreg %ptr) {5388; GFX900-LABEL: v_shuffle_v3i16_v4i16__1_5_5:5389; GFX900:       ; %bb.0:5390; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5391; GFX900-NEXT:    ;;#ASMSTART5392; GFX900-NEXT:    ; def v[0:1]5393; GFX900-NEXT:    ;;#ASMEND5394; GFX900-NEXT:    s_mov_b32 s4, 0x70603025395; GFX900-NEXT:    v_mov_b32_e32 v3, 05396; GFX900-NEXT:    ;;#ASMSTART5397; GFX900-NEXT:    ; def v[1:2]5398; GFX900-NEXT:    ;;#ASMEND5399; GFX900-NEXT:    v_perm_b32 v0, v1, v0, s45400; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]5401; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v15402; GFX900-NEXT:    global_store_short v3, v0, s[16:17] offset:45403; GFX900-NEXT:    s_waitcnt vmcnt(0)5404; GFX900-NEXT:    s_setpc_b64 s[30:31]5405;5406; GFX90A-LABEL: v_shuffle_v3i16_v4i16__1_5_5:5407; GFX90A:       ; %bb.0:5408; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5409; GFX90A-NEXT:    ;;#ASMSTART5410; GFX90A-NEXT:    ; def v[0:1]5411; GFX90A-NEXT:    ;;#ASMEND5412; GFX90A-NEXT:    s_mov_b32 s4, 0x70603025413; GFX90A-NEXT:    v_mov_b32_e32 v4, 05414; GFX90A-NEXT:    ;;#ASMSTART5415; GFX90A-NEXT:    ; def v[2:3]5416; GFX90A-NEXT:    ;;#ASMEND5417; GFX90A-NEXT:    v_perm_b32 v0, v2, v0, s45418; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]5419; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v25420; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:45421; GFX90A-NEXT:    s_waitcnt vmcnt(0)5422; GFX90A-NEXT:    s_setpc_b64 s[30:31]5423;5424; GFX942-LABEL: v_shuffle_v3i16_v4i16__1_5_5:5425; GFX942:       ; %bb.0:5426; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5427; GFX942-NEXT:    ;;#ASMSTART5428; GFX942-NEXT:    ; def v[0:1]5429; GFX942-NEXT:    ;;#ASMEND5430; GFX942-NEXT:    s_mov_b32 s2, 0x70603025431; GFX942-NEXT:    v_mov_b32_e32 v4, 05432; GFX942-NEXT:    ;;#ASMSTART5433; GFX942-NEXT:    ; def v[2:3]5434; GFX942-NEXT:    ;;#ASMEND5435; GFX942-NEXT:    s_nop 05436; GFX942-NEXT:    v_perm_b32 v0, v2, v0, s25437; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]5438; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v25439; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:45440; GFX942-NEXT:    s_waitcnt vmcnt(0)5441; GFX942-NEXT:    s_setpc_b64 s[30:31]5442  %vec0 = call <4 x i16> asm "; def $0", "=v"()5443  %vec1 = call <4 x i16> asm "; def $0", "=v"()5444  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 1, i32 5, i32 5>5445  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 85446  ret void5447}5448 5449define void @v_shuffle_v3i16_v4i16__2_5_5(ptr addrspace(1) inreg %ptr) {5450; GFX900-LABEL: v_shuffle_v3i16_v4i16__2_5_5:5451; GFX900:       ; %bb.0:5452; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5453; GFX900-NEXT:    ;;#ASMSTART5454; GFX900-NEXT:    ; def v[0:1]5455; GFX900-NEXT:    ;;#ASMEND5456; GFX900-NEXT:    s_mov_b32 s4, 0xffff5457; GFX900-NEXT:    v_mov_b32_e32 v4, 05458; GFX900-NEXT:    ;;#ASMSTART5459; GFX900-NEXT:    ; def v[2:3]5460; GFX900-NEXT:    ;;#ASMEND5461; GFX900-NEXT:    v_bfi_b32 v0, s4, v1, v25462; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v25463; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:45464; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]5465; GFX900-NEXT:    s_waitcnt vmcnt(0)5466; GFX900-NEXT:    s_setpc_b64 s[30:31]5467;5468; GFX90A-LABEL: v_shuffle_v3i16_v4i16__2_5_5:5469; GFX90A:       ; %bb.0:5470; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5471; GFX90A-NEXT:    ;;#ASMSTART5472; GFX90A-NEXT:    ; def v[0:1]5473; GFX90A-NEXT:    ;;#ASMEND5474; GFX90A-NEXT:    s_mov_b32 s4, 0xffff5475; GFX90A-NEXT:    v_mov_b32_e32 v4, 05476; GFX90A-NEXT:    ;;#ASMSTART5477; GFX90A-NEXT:    ; def v[2:3]5478; GFX90A-NEXT:    ;;#ASMEND5479; GFX90A-NEXT:    v_bfi_b32 v0, s4, v1, v25480; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v25481; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:45482; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]5483; GFX90A-NEXT:    s_waitcnt vmcnt(0)5484; GFX90A-NEXT:    s_setpc_b64 s[30:31]5485;5486; GFX942-LABEL: v_shuffle_v3i16_v4i16__2_5_5:5487; GFX942:       ; %bb.0:5488; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5489; GFX942-NEXT:    ;;#ASMSTART5490; GFX942-NEXT:    ; def v[0:1]5491; GFX942-NEXT:    ;;#ASMEND5492; GFX942-NEXT:    s_mov_b32 s2, 0xffff5493; GFX942-NEXT:    v_mov_b32_e32 v4, 05494; GFX942-NEXT:    ;;#ASMSTART5495; GFX942-NEXT:    ; def v[2:3]5496; GFX942-NEXT:    ;;#ASMEND5497; GFX942-NEXT:    s_nop 05498; GFX942-NEXT:    v_bfi_b32 v0, s2, v1, v25499; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v25500; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:45501; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]5502; GFX942-NEXT:    s_waitcnt vmcnt(0)5503; GFX942-NEXT:    s_setpc_b64 s[30:31]5504  %vec0 = call <4 x i16> asm "; def $0", "=v"()5505  %vec1 = call <4 x i16> asm "; def $0", "=v"()5506  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 2, i32 5, i32 5>5507  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 85508  ret void5509}5510 5511define void @v_shuffle_v3i16_v4i16__3_5_5(ptr addrspace(1) inreg %ptr) {5512; GFX900-LABEL: v_shuffle_v3i16_v4i16__3_5_5:5513; GFX900:       ; %bb.0:5514; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5515; GFX900-NEXT:    ;;#ASMSTART5516; GFX900-NEXT:    ; def v[0:1]5517; GFX900-NEXT:    ;;#ASMEND5518; GFX900-NEXT:    s_mov_b32 s4, 0x70603025519; GFX900-NEXT:    v_mov_b32_e32 v4, 05520; GFX900-NEXT:    ;;#ASMSTART5521; GFX900-NEXT:    ; def v[2:3]5522; GFX900-NEXT:    ;;#ASMEND5523; GFX900-NEXT:    v_perm_b32 v0, v2, v1, s45524; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v25525; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]5526; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:45527; GFX900-NEXT:    s_waitcnt vmcnt(0)5528; GFX900-NEXT:    s_setpc_b64 s[30:31]5529;5530; GFX90A-LABEL: v_shuffle_v3i16_v4i16__3_5_5:5531; GFX90A:       ; %bb.0:5532; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5533; GFX90A-NEXT:    ;;#ASMSTART5534; GFX90A-NEXT:    ; def v[0:1]5535; GFX90A-NEXT:    ;;#ASMEND5536; GFX90A-NEXT:    s_mov_b32 s4, 0x70603025537; GFX90A-NEXT:    v_mov_b32_e32 v4, 05538; GFX90A-NEXT:    ;;#ASMSTART5539; GFX90A-NEXT:    ; def v[2:3]5540; GFX90A-NEXT:    ;;#ASMEND5541; GFX90A-NEXT:    v_perm_b32 v0, v2, v1, s45542; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v25543; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]5544; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:45545; GFX90A-NEXT:    s_waitcnt vmcnt(0)5546; GFX90A-NEXT:    s_setpc_b64 s[30:31]5547;5548; GFX942-LABEL: v_shuffle_v3i16_v4i16__3_5_5:5549; GFX942:       ; %bb.0:5550; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5551; GFX942-NEXT:    ;;#ASMSTART5552; GFX942-NEXT:    ; def v[0:1]5553; GFX942-NEXT:    ;;#ASMEND5554; GFX942-NEXT:    s_mov_b32 s2, 0x70603025555; GFX942-NEXT:    v_mov_b32_e32 v4, 05556; GFX942-NEXT:    ;;#ASMSTART5557; GFX942-NEXT:    ; def v[2:3]5558; GFX942-NEXT:    ;;#ASMEND5559; GFX942-NEXT:    s_nop 05560; GFX942-NEXT:    v_perm_b32 v0, v2, v1, s25561; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v25562; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]5563; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:45564; GFX942-NEXT:    s_waitcnt vmcnt(0)5565; GFX942-NEXT:    s_setpc_b64 s[30:31]5566  %vec0 = call <4 x i16> asm "; def $0", "=v"()5567  %vec1 = call <4 x i16> asm "; def $0", "=v"()5568  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 3, i32 5, i32 5>5569  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 85570  ret void5571}5572 5573define void @v_shuffle_v3i16_v4i16__4_5_5(ptr addrspace(1) inreg %ptr) {5574; GFX900-LABEL: v_shuffle_v3i16_v4i16__4_5_5:5575; GFX900:       ; %bb.0:5576; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5577; GFX900-NEXT:    v_mov_b32_e32 v2, 05578; GFX900-NEXT:    ;;#ASMSTART5579; GFX900-NEXT:    ; def v[0:1]5580; GFX900-NEXT:    ;;#ASMEND5581; GFX900-NEXT:    global_store_short_d16_hi v2, v0, s[16:17] offset:45582; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]5583; GFX900-NEXT:    s_waitcnt vmcnt(0)5584; GFX900-NEXT:    s_setpc_b64 s[30:31]5585;5586; GFX90A-LABEL: v_shuffle_v3i16_v4i16__4_5_5:5587; GFX90A:       ; %bb.0:5588; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5589; GFX90A-NEXT:    v_mov_b32_e32 v2, 05590; GFX90A-NEXT:    ;;#ASMSTART5591; GFX90A-NEXT:    ; def v[0:1]5592; GFX90A-NEXT:    ;;#ASMEND5593; GFX90A-NEXT:    global_store_short_d16_hi v2, v0, s[16:17] offset:45594; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]5595; GFX90A-NEXT:    s_waitcnt vmcnt(0)5596; GFX90A-NEXT:    s_setpc_b64 s[30:31]5597;5598; GFX942-LABEL: v_shuffle_v3i16_v4i16__4_5_5:5599; GFX942:       ; %bb.0:5600; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5601; GFX942-NEXT:    v_mov_b32_e32 v2, 05602; GFX942-NEXT:    ;;#ASMSTART5603; GFX942-NEXT:    ; def v[0:1]5604; GFX942-NEXT:    ;;#ASMEND5605; GFX942-NEXT:    global_store_short_d16_hi v2, v0, s[0:1] offset:45606; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]5607; GFX942-NEXT:    s_waitcnt vmcnt(0)5608; GFX942-NEXT:    s_setpc_b64 s[30:31]5609  %vec0 = call <4 x i16> asm "; def $0", "=v"()5610  %vec1 = call <4 x i16> asm "; def $0", "=v"()5611  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 4, i32 5, i32 5>5612  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 85613  ret void5614}5615 5616define void @v_shuffle_v3i16_v4i16__5_5_5(ptr addrspace(1) inreg %ptr) {5617; GFX900-LABEL: v_shuffle_v3i16_v4i16__5_5_5:5618; GFX900:       ; %bb.0:5619; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5620; GFX900-NEXT:    ;;#ASMSTART5621; GFX900-NEXT:    ; def v[0:1]5622; GFX900-NEXT:    ;;#ASMEND5623; GFX900-NEXT:    s_mov_b32 s4, 0x70603025624; GFX900-NEXT:    v_mov_b32_e32 v2, 05625; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s45626; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v05627; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]5628; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:45629; GFX900-NEXT:    s_waitcnt vmcnt(0)5630; GFX900-NEXT:    s_setpc_b64 s[30:31]5631;5632; GFX90A-LABEL: v_shuffle_v3i16_v4i16__5_5_5:5633; GFX90A:       ; %bb.0:5634; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5635; GFX90A-NEXT:    ;;#ASMSTART5636; GFX90A-NEXT:    ; def v[0:1]5637; GFX90A-NEXT:    ;;#ASMEND5638; GFX90A-NEXT:    s_mov_b32 s4, 0x70603025639; GFX90A-NEXT:    v_mov_b32_e32 v2, 05640; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s45641; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v05642; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]5643; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:45644; GFX90A-NEXT:    s_waitcnt vmcnt(0)5645; GFX90A-NEXT:    s_setpc_b64 s[30:31]5646;5647; GFX942-LABEL: v_shuffle_v3i16_v4i16__5_5_5:5648; GFX942:       ; %bb.0:5649; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5650; GFX942-NEXT:    ;;#ASMSTART5651; GFX942-NEXT:    ; def v[0:1]5652; GFX942-NEXT:    ;;#ASMEND5653; GFX942-NEXT:    s_mov_b32 s2, 0x70603025654; GFX942-NEXT:    v_mov_b32_e32 v2, 05655; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s25656; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v05657; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]5658; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:45659; GFX942-NEXT:    s_waitcnt vmcnt(0)5660; GFX942-NEXT:    s_setpc_b64 s[30:31]5661  %vec0 = call <4 x i16> asm "; def $0", "=v"()5662  %vec1 = call <4 x i16> asm "; def $0", "=v"()5663  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 5, i32 5, i32 5>5664  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 85665  ret void5666}5667 5668define void @v_shuffle_v3i16_v4i16__6_5_5(ptr addrspace(1) inreg %ptr) {5669; GFX900-LABEL: v_shuffle_v3i16_v4i16__6_5_5:5670; GFX900:       ; %bb.0:5671; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5672; GFX900-NEXT:    ;;#ASMSTART5673; GFX900-NEXT:    ; def v[0:1]5674; GFX900-NEXT:    ;;#ASMEND5675; GFX900-NEXT:    s_mov_b32 s4, 0xffff5676; GFX900-NEXT:    v_mov_b32_e32 v2, 05677; GFX900-NEXT:    v_bfi_b32 v1, s4, v1, v05678; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v05679; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:45680; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]5681; GFX900-NEXT:    s_waitcnt vmcnt(0)5682; GFX900-NEXT:    s_setpc_b64 s[30:31]5683;5684; GFX90A-LABEL: v_shuffle_v3i16_v4i16__6_5_5:5685; GFX90A:       ; %bb.0:5686; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5687; GFX90A-NEXT:    ;;#ASMSTART5688; GFX90A-NEXT:    ; def v[0:1]5689; GFX90A-NEXT:    ;;#ASMEND5690; GFX90A-NEXT:    s_mov_b32 s4, 0xffff5691; GFX90A-NEXT:    v_mov_b32_e32 v2, 05692; GFX90A-NEXT:    v_bfi_b32 v1, s4, v1, v05693; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v05694; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:45695; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]5696; GFX90A-NEXT:    s_waitcnt vmcnt(0)5697; GFX90A-NEXT:    s_setpc_b64 s[30:31]5698;5699; GFX942-LABEL: v_shuffle_v3i16_v4i16__6_5_5:5700; GFX942:       ; %bb.0:5701; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5702; GFX942-NEXT:    ;;#ASMSTART5703; GFX942-NEXT:    ; def v[0:1]5704; GFX942-NEXT:    ;;#ASMEND5705; GFX942-NEXT:    s_mov_b32 s2, 0xffff5706; GFX942-NEXT:    v_mov_b32_e32 v2, 05707; GFX942-NEXT:    v_bfi_b32 v1, s2, v1, v05708; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v05709; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:45710; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]5711; GFX942-NEXT:    s_waitcnt vmcnt(0)5712; GFX942-NEXT:    s_setpc_b64 s[30:31]5713  %vec0 = call <4 x i16> asm "; def $0", "=v"()5714  %vec1 = call <4 x i16> asm "; def $0", "=v"()5715  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 6, i32 5, i32 5>5716  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 85717  ret void5718}5719 5720define void @v_shuffle_v3i16_v4i16__7_5_5(ptr addrspace(1) inreg %ptr) {5721; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_5_5:5722; GFX900:       ; %bb.0:5723; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5724; GFX900-NEXT:    ;;#ASMSTART5725; GFX900-NEXT:    ; def v[0:1]5726; GFX900-NEXT:    ;;#ASMEND5727; GFX900-NEXT:    s_mov_b32 s4, 0x70603025728; GFX900-NEXT:    v_mov_b32_e32 v2, 05729; GFX900-NEXT:    v_perm_b32 v1, v0, v1, s45730; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v05731; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]5732; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:45733; GFX900-NEXT:    s_waitcnt vmcnt(0)5734; GFX900-NEXT:    s_setpc_b64 s[30:31]5735;5736; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_5_5:5737; GFX90A:       ; %bb.0:5738; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5739; GFX90A-NEXT:    ;;#ASMSTART5740; GFX90A-NEXT:    ; def v[0:1]5741; GFX90A-NEXT:    ;;#ASMEND5742; GFX90A-NEXT:    s_mov_b32 s4, 0x70603025743; GFX90A-NEXT:    v_mov_b32_e32 v2, 05744; GFX90A-NEXT:    v_perm_b32 v1, v0, v1, s45745; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v05746; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]5747; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:45748; GFX90A-NEXT:    s_waitcnt vmcnt(0)5749; GFX90A-NEXT:    s_setpc_b64 s[30:31]5750;5751; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_5_5:5752; GFX942:       ; %bb.0:5753; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5754; GFX942-NEXT:    ;;#ASMSTART5755; GFX942-NEXT:    ; def v[0:1]5756; GFX942-NEXT:    ;;#ASMEND5757; GFX942-NEXT:    s_mov_b32 s2, 0x70603025758; GFX942-NEXT:    v_mov_b32_e32 v2, 05759; GFX942-NEXT:    v_perm_b32 v1, v0, v1, s25760; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v05761; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]5762; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:45763; GFX942-NEXT:    s_waitcnt vmcnt(0)5764; GFX942-NEXT:    s_setpc_b64 s[30:31]5765  %vec0 = call <4 x i16> asm "; def $0", "=v"()5766  %vec1 = call <4 x i16> asm "; def $0", "=v"()5767  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 5, i32 5>5768  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 85769  ret void5770}5771 5772define void @v_shuffle_v3i16_v4i16__7_u_5(ptr addrspace(1) inreg %ptr) {5773; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_u_5:5774; GFX900:       ; %bb.0:5775; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5776; GFX900-NEXT:    v_mov_b32_e32 v2, 05777; GFX900-NEXT:    ;;#ASMSTART5778; GFX900-NEXT:    ; def v[0:1]5779; GFX900-NEXT:    ;;#ASMEND5780; GFX900-NEXT:    v_alignbit_b32 v1, s4, v1, 165781; GFX900-NEXT:    global_store_short_d16_hi v2, v0, s[16:17] offset:45782; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]5783; GFX900-NEXT:    s_waitcnt vmcnt(0)5784; GFX900-NEXT:    s_setpc_b64 s[30:31]5785;5786; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_u_5:5787; GFX90A:       ; %bb.0:5788; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5789; GFX90A-NEXT:    v_mov_b32_e32 v2, 05790; GFX90A-NEXT:    ;;#ASMSTART5791; GFX90A-NEXT:    ; def v[0:1]5792; GFX90A-NEXT:    ;;#ASMEND5793; GFX90A-NEXT:    v_alignbit_b32 v1, s4, v1, 165794; GFX90A-NEXT:    global_store_short_d16_hi v2, v0, s[16:17] offset:45795; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]5796; GFX90A-NEXT:    s_waitcnt vmcnt(0)5797; GFX90A-NEXT:    s_setpc_b64 s[30:31]5798;5799; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_u_5:5800; GFX942:       ; %bb.0:5801; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5802; GFX942-NEXT:    v_mov_b32_e32 v2, 05803; GFX942-NEXT:    ;;#ASMSTART5804; GFX942-NEXT:    ; def v[0:1]5805; GFX942-NEXT:    ;;#ASMEND5806; GFX942-NEXT:    s_nop 05807; GFX942-NEXT:    v_alignbit_b32 v1, s0, v1, 165808; GFX942-NEXT:    global_store_short_d16_hi v2, v0, s[0:1] offset:45809; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]5810; GFX942-NEXT:    s_waitcnt vmcnt(0)5811; GFX942-NEXT:    s_setpc_b64 s[30:31]5812  %vec0 = call <4 x i16> asm "; def $0", "=v"()5813  %vec1 = call <4 x i16> asm "; def $0", "=v"()5814  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 poison, i32 5>5815  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 85816  ret void5817}5818 5819define void @v_shuffle_v3i16_v4i16__7_0_5(ptr addrspace(1) inreg %ptr) {5820; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_0_5:5821; GFX900:       ; %bb.0:5822; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5823; GFX900-NEXT:    ;;#ASMSTART5824; GFX900-NEXT:    ; def v[0:1]5825; GFX900-NEXT:    ;;#ASMEND5826; GFX900-NEXT:    v_mov_b32_e32 v3, 05827; GFX900-NEXT:    ;;#ASMSTART5828; GFX900-NEXT:    ; def v[1:2]5829; GFX900-NEXT:    ;;#ASMEND5830; GFX900-NEXT:    v_alignbit_b32 v0, v0, v2, 165831; GFX900-NEXT:    global_store_short_d16_hi v3, v1, s[16:17] offset:45832; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]5833; GFX900-NEXT:    s_waitcnt vmcnt(0)5834; GFX900-NEXT:    s_setpc_b64 s[30:31]5835;5836; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_0_5:5837; GFX90A:       ; %bb.0:5838; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5839; GFX90A-NEXT:    v_mov_b32_e32 v4, 05840; GFX90A-NEXT:    ;;#ASMSTART5841; GFX90A-NEXT:    ; def v[0:1]5842; GFX90A-NEXT:    ;;#ASMEND5843; GFX90A-NEXT:    ;;#ASMSTART5844; GFX90A-NEXT:    ; def v[2:3]5845; GFX90A-NEXT:    ;;#ASMEND5846; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v3, 165847; GFX90A-NEXT:    global_store_short_d16_hi v4, v2, s[16:17] offset:45848; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]5849; GFX90A-NEXT:    s_waitcnt vmcnt(0)5850; GFX90A-NEXT:    s_setpc_b64 s[30:31]5851;5852; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_0_5:5853; GFX942:       ; %bb.0:5854; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5855; GFX942-NEXT:    v_mov_b32_e32 v4, 05856; GFX942-NEXT:    ;;#ASMSTART5857; GFX942-NEXT:    ; def v[0:1]5858; GFX942-NEXT:    ;;#ASMEND5859; GFX942-NEXT:    ;;#ASMSTART5860; GFX942-NEXT:    ; def v[2:3]5861; GFX942-NEXT:    ;;#ASMEND5862; GFX942-NEXT:    s_nop 05863; GFX942-NEXT:    v_alignbit_b32 v0, v0, v3, 165864; GFX942-NEXT:    global_store_short_d16_hi v4, v2, s[0:1] offset:45865; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]5866; GFX942-NEXT:    s_waitcnt vmcnt(0)5867; GFX942-NEXT:    s_setpc_b64 s[30:31]5868  %vec0 = call <4 x i16> asm "; def $0", "=v"()5869  %vec1 = call <4 x i16> asm "; def $0", "=v"()5870  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 0, i32 5>5871  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 85872  ret void5873}5874 5875define void @v_shuffle_v3i16_v4i16__7_1_5(ptr addrspace(1) inreg %ptr) {5876; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_1_5:5877; GFX900:       ; %bb.0:5878; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5879; GFX900-NEXT:    ;;#ASMSTART5880; GFX900-NEXT:    ; def v[0:1]5881; GFX900-NEXT:    ;;#ASMEND5882; GFX900-NEXT:    v_mov_b32_e32 v3, 05883; GFX900-NEXT:    ;;#ASMSTART5884; GFX900-NEXT:    ; def v[1:2]5885; GFX900-NEXT:    ;;#ASMEND5886; GFX900-NEXT:    s_mov_b32 s4, 0x70603025887; GFX900-NEXT:    v_perm_b32 v0, v0, v2, s45888; GFX900-NEXT:    global_store_short_d16_hi v3, v1, s[16:17] offset:45889; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]5890; GFX900-NEXT:    s_waitcnt vmcnt(0)5891; GFX900-NEXT:    s_setpc_b64 s[30:31]5892;5893; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_1_5:5894; GFX90A:       ; %bb.0:5895; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5896; GFX90A-NEXT:    v_mov_b32_e32 v4, 05897; GFX90A-NEXT:    ;;#ASMSTART5898; GFX90A-NEXT:    ; def v[0:1]5899; GFX90A-NEXT:    ;;#ASMEND5900; GFX90A-NEXT:    ;;#ASMSTART5901; GFX90A-NEXT:    ; def v[2:3]5902; GFX90A-NEXT:    ;;#ASMEND5903; GFX90A-NEXT:    s_mov_b32 s4, 0x70603025904; GFX90A-NEXT:    v_perm_b32 v0, v0, v3, s45905; GFX90A-NEXT:    global_store_short_d16_hi v4, v2, s[16:17] offset:45906; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]5907; GFX90A-NEXT:    s_waitcnt vmcnt(0)5908; GFX90A-NEXT:    s_setpc_b64 s[30:31]5909;5910; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_1_5:5911; GFX942:       ; %bb.0:5912; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5913; GFX942-NEXT:    v_mov_b32_e32 v4, 05914; GFX942-NEXT:    ;;#ASMSTART5915; GFX942-NEXT:    ; def v[0:1]5916; GFX942-NEXT:    ;;#ASMEND5917; GFX942-NEXT:    ;;#ASMSTART5918; GFX942-NEXT:    ; def v[2:3]5919; GFX942-NEXT:    ;;#ASMEND5920; GFX942-NEXT:    s_mov_b32 s2, 0x70603025921; GFX942-NEXT:    v_perm_b32 v0, v0, v3, s25922; GFX942-NEXT:    global_store_short_d16_hi v4, v2, s[0:1] offset:45923; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]5924; GFX942-NEXT:    s_waitcnt vmcnt(0)5925; GFX942-NEXT:    s_setpc_b64 s[30:31]5926  %vec0 = call <4 x i16> asm "; def $0", "=v"()5927  %vec1 = call <4 x i16> asm "; def $0", "=v"()5928  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 1, i32 5>5929  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 85930  ret void5931}5932 5933define void @v_shuffle_v3i16_v4i16__7_2_5(ptr addrspace(1) inreg %ptr) {5934; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_2_5:5935; GFX900:       ; %bb.0:5936; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5937; GFX900-NEXT:    v_mov_b32_e32 v4, 05938; GFX900-NEXT:    ;;#ASMSTART5939; GFX900-NEXT:    ; def v[0:1]5940; GFX900-NEXT:    ;;#ASMEND5941; GFX900-NEXT:    ;;#ASMSTART5942; GFX900-NEXT:    ; def v[2:3]5943; GFX900-NEXT:    ;;#ASMEND5944; GFX900-NEXT:    v_alignbit_b32 v0, v1, v3, 165945; GFX900-NEXT:    global_store_short_d16_hi v4, v2, s[16:17] offset:45946; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]5947; GFX900-NEXT:    s_waitcnt vmcnt(0)5948; GFX900-NEXT:    s_setpc_b64 s[30:31]5949;5950; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_2_5:5951; GFX90A:       ; %bb.0:5952; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5953; GFX90A-NEXT:    v_mov_b32_e32 v4, 05954; GFX90A-NEXT:    ;;#ASMSTART5955; GFX90A-NEXT:    ; def v[0:1]5956; GFX90A-NEXT:    ;;#ASMEND5957; GFX90A-NEXT:    ;;#ASMSTART5958; GFX90A-NEXT:    ; def v[2:3]5959; GFX90A-NEXT:    ;;#ASMEND5960; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v3, 165961; GFX90A-NEXT:    global_store_short_d16_hi v4, v2, s[16:17] offset:45962; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]5963; GFX90A-NEXT:    s_waitcnt vmcnt(0)5964; GFX90A-NEXT:    s_setpc_b64 s[30:31]5965;5966; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_2_5:5967; GFX942:       ; %bb.0:5968; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5969; GFX942-NEXT:    v_mov_b32_e32 v4, 05970; GFX942-NEXT:    ;;#ASMSTART5971; GFX942-NEXT:    ; def v[0:1]5972; GFX942-NEXT:    ;;#ASMEND5973; GFX942-NEXT:    ;;#ASMSTART5974; GFX942-NEXT:    ; def v[2:3]5975; GFX942-NEXT:    ;;#ASMEND5976; GFX942-NEXT:    s_nop 05977; GFX942-NEXT:    v_alignbit_b32 v0, v1, v3, 165978; GFX942-NEXT:    global_store_short_d16_hi v4, v2, s[0:1] offset:45979; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]5980; GFX942-NEXT:    s_waitcnt vmcnt(0)5981; GFX942-NEXT:    s_setpc_b64 s[30:31]5982  %vec0 = call <4 x i16> asm "; def $0", "=v"()5983  %vec1 = call <4 x i16> asm "; def $0", "=v"()5984  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 2, i32 5>5985  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 85986  ret void5987}5988 5989define void @v_shuffle_v3i16_v4i16__7_3_5(ptr addrspace(1) inreg %ptr) {5990; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_3_5:5991; GFX900:       ; %bb.0:5992; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5993; GFX900-NEXT:    v_mov_b32_e32 v4, 05994; GFX900-NEXT:    ;;#ASMSTART5995; GFX900-NEXT:    ; def v[0:1]5996; GFX900-NEXT:    ;;#ASMEND5997; GFX900-NEXT:    ;;#ASMSTART5998; GFX900-NEXT:    ; def v[2:3]5999; GFX900-NEXT:    ;;#ASMEND6000; GFX900-NEXT:    s_mov_b32 s4, 0x70603026001; GFX900-NEXT:    v_perm_b32 v0, v1, v3, s46002; GFX900-NEXT:    global_store_short_d16_hi v4, v2, s[16:17] offset:46003; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]6004; GFX900-NEXT:    s_waitcnt vmcnt(0)6005; GFX900-NEXT:    s_setpc_b64 s[30:31]6006;6007; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_3_5:6008; GFX90A:       ; %bb.0:6009; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6010; GFX90A-NEXT:    v_mov_b32_e32 v4, 06011; GFX90A-NEXT:    ;;#ASMSTART6012; GFX90A-NEXT:    ; def v[0:1]6013; GFX90A-NEXT:    ;;#ASMEND6014; GFX90A-NEXT:    ;;#ASMSTART6015; GFX90A-NEXT:    ; def v[2:3]6016; GFX90A-NEXT:    ;;#ASMEND6017; GFX90A-NEXT:    s_mov_b32 s4, 0x70603026018; GFX90A-NEXT:    v_perm_b32 v0, v1, v3, s46019; GFX90A-NEXT:    global_store_short_d16_hi v4, v2, s[16:17] offset:46020; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]6021; GFX90A-NEXT:    s_waitcnt vmcnt(0)6022; GFX90A-NEXT:    s_setpc_b64 s[30:31]6023;6024; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_3_5:6025; GFX942:       ; %bb.0:6026; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6027; GFX942-NEXT:    v_mov_b32_e32 v4, 06028; GFX942-NEXT:    ;;#ASMSTART6029; GFX942-NEXT:    ; def v[0:1]6030; GFX942-NEXT:    ;;#ASMEND6031; GFX942-NEXT:    ;;#ASMSTART6032; GFX942-NEXT:    ; def v[2:3]6033; GFX942-NEXT:    ;;#ASMEND6034; GFX942-NEXT:    s_mov_b32 s2, 0x70603026035; GFX942-NEXT:    v_perm_b32 v0, v1, v3, s26036; GFX942-NEXT:    global_store_short_d16_hi v4, v2, s[0:1] offset:46037; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]6038; GFX942-NEXT:    s_waitcnt vmcnt(0)6039; GFX942-NEXT:    s_setpc_b64 s[30:31]6040  %vec0 = call <4 x i16> asm "; def $0", "=v"()6041  %vec1 = call <4 x i16> asm "; def $0", "=v"()6042  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 3, i32 5>6043  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 86044  ret void6045}6046 6047define void @v_shuffle_v3i16_v4i16__7_4_5(ptr addrspace(1) inreg %ptr) {6048; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_4_5:6049; GFX900:       ; %bb.0:6050; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6051; GFX900-NEXT:    v_mov_b32_e32 v2, 06052; GFX900-NEXT:    ;;#ASMSTART6053; GFX900-NEXT:    ; def v[0:1]6054; GFX900-NEXT:    ;;#ASMEND6055; GFX900-NEXT:    v_alignbit_b32 v1, v0, v1, 166056; GFX900-NEXT:    global_store_short_d16_hi v2, v0, s[16:17] offset:46057; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]6058; GFX900-NEXT:    s_waitcnt vmcnt(0)6059; GFX900-NEXT:    s_setpc_b64 s[30:31]6060;6061; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_4_5:6062; GFX90A:       ; %bb.0:6063; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6064; GFX90A-NEXT:    v_mov_b32_e32 v2, 06065; GFX90A-NEXT:    ;;#ASMSTART6066; GFX90A-NEXT:    ; def v[0:1]6067; GFX90A-NEXT:    ;;#ASMEND6068; GFX90A-NEXT:    v_alignbit_b32 v1, v0, v1, 166069; GFX90A-NEXT:    global_store_short_d16_hi v2, v0, s[16:17] offset:46070; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]6071; GFX90A-NEXT:    s_waitcnt vmcnt(0)6072; GFX90A-NEXT:    s_setpc_b64 s[30:31]6073;6074; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_4_5:6075; GFX942:       ; %bb.0:6076; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6077; GFX942-NEXT:    v_mov_b32_e32 v2, 06078; GFX942-NEXT:    ;;#ASMSTART6079; GFX942-NEXT:    ; def v[0:1]6080; GFX942-NEXT:    ;;#ASMEND6081; GFX942-NEXT:    s_nop 06082; GFX942-NEXT:    v_alignbit_b32 v1, v0, v1, 166083; GFX942-NEXT:    global_store_short_d16_hi v2, v0, s[0:1] offset:46084; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]6085; GFX942-NEXT:    s_waitcnt vmcnt(0)6086; GFX942-NEXT:    s_setpc_b64 s[30:31]6087  %vec0 = call <4 x i16> asm "; def $0", "=v"()6088  %vec1 = call <4 x i16> asm "; def $0", "=v"()6089  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 4, i32 5>6090  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 86091  ret void6092}6093 6094define void @v_shuffle_v3i16_v4i16__7_6_5(ptr addrspace(1) inreg %ptr) {6095; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_6_5:6096; GFX900:       ; %bb.0:6097; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6098; GFX900-NEXT:    v_mov_b32_e32 v2, 06099; GFX900-NEXT:    ;;#ASMSTART6100; GFX900-NEXT:    ; def v[0:1]6101; GFX900-NEXT:    ;;#ASMEND6102; GFX900-NEXT:    v_alignbit_b32 v1, v1, v1, 166103; GFX900-NEXT:    global_store_short_d16_hi v2, v0, s[16:17] offset:46104; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]6105; GFX900-NEXT:    s_waitcnt vmcnt(0)6106; GFX900-NEXT:    s_setpc_b64 s[30:31]6107;6108; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_6_5:6109; GFX90A:       ; %bb.0:6110; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6111; GFX90A-NEXT:    v_mov_b32_e32 v2, 06112; GFX90A-NEXT:    ;;#ASMSTART6113; GFX90A-NEXT:    ; def v[0:1]6114; GFX90A-NEXT:    ;;#ASMEND6115; GFX90A-NEXT:    v_alignbit_b32 v1, v1, v1, 166116; GFX90A-NEXT:    global_store_short_d16_hi v2, v0, s[16:17] offset:46117; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]6118; GFX90A-NEXT:    s_waitcnt vmcnt(0)6119; GFX90A-NEXT:    s_setpc_b64 s[30:31]6120;6121; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_6_5:6122; GFX942:       ; %bb.0:6123; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6124; GFX942-NEXT:    v_mov_b32_e32 v2, 06125; GFX942-NEXT:    ;;#ASMSTART6126; GFX942-NEXT:    ; def v[0:1]6127; GFX942-NEXT:    ;;#ASMEND6128; GFX942-NEXT:    s_nop 06129; GFX942-NEXT:    v_alignbit_b32 v1, v1, v1, 166130; GFX942-NEXT:    global_store_short_d16_hi v2, v0, s[0:1] offset:46131; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]6132; GFX942-NEXT:    s_waitcnt vmcnt(0)6133; GFX942-NEXT:    s_setpc_b64 s[30:31]6134  %vec0 = call <4 x i16> asm "; def $0", "=v"()6135  %vec1 = call <4 x i16> asm "; def $0", "=v"()6136  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 6, i32 5>6137  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 86138  ret void6139}6140 6141define void @v_shuffle_v3i16_v4i16__u_6_6(ptr addrspace(1) inreg %ptr) {6142; GFX900-LABEL: v_shuffle_v3i16_v4i16__u_6_6:6143; GFX900:       ; %bb.0:6144; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6145; GFX900-NEXT:    v_mov_b32_e32 v2, 06146; GFX900-NEXT:    ;;#ASMSTART6147; GFX900-NEXT:    ; def v[0:1]6148; GFX900-NEXT:    ;;#ASMEND6149; GFX900-NEXT:    v_lshlrev_b32_e32 v0, 16, v16150; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:46151; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]6152; GFX900-NEXT:    s_waitcnt vmcnt(0)6153; GFX900-NEXT:    s_setpc_b64 s[30:31]6154;6155; GFX90A-LABEL: v_shuffle_v3i16_v4i16__u_6_6:6156; GFX90A:       ; %bb.0:6157; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6158; GFX90A-NEXT:    v_mov_b32_e32 v2, 06159; GFX90A-NEXT:    ;;#ASMSTART6160; GFX90A-NEXT:    ; def v[0:1]6161; GFX90A-NEXT:    ;;#ASMEND6162; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 16, v16163; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:46164; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]6165; GFX90A-NEXT:    s_waitcnt vmcnt(0)6166; GFX90A-NEXT:    s_setpc_b64 s[30:31]6167;6168; GFX942-LABEL: v_shuffle_v3i16_v4i16__u_6_6:6169; GFX942:       ; %bb.0:6170; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6171; GFX942-NEXT:    v_mov_b32_e32 v2, 06172; GFX942-NEXT:    ;;#ASMSTART6173; GFX942-NEXT:    ; def v[0:1]6174; GFX942-NEXT:    ;;#ASMEND6175; GFX942-NEXT:    s_nop 06176; GFX942-NEXT:    v_lshlrev_b32_e32 v0, 16, v16177; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:46178; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]6179; GFX942-NEXT:    s_waitcnt vmcnt(0)6180; GFX942-NEXT:    s_setpc_b64 s[30:31]6181  %vec0 = call <4 x i16> asm "; def $0", "=v"()6182  %vec1 = call <4 x i16> asm "; def $0", "=v"()6183  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 poison, i32 6, i32 6>6184  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 86185  ret void6186}6187 6188define void @v_shuffle_v3i16_v4i16__0_6_6(ptr addrspace(1) inreg %ptr) {6189; GFX900-LABEL: v_shuffle_v3i16_v4i16__0_6_6:6190; GFX900:       ; %bb.0:6191; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6192; GFX900-NEXT:    ;;#ASMSTART6193; GFX900-NEXT:    ; def v[0:1]6194; GFX900-NEXT:    ;;#ASMEND6195; GFX900-NEXT:    v_mov_b32_e32 v3, 06196; GFX900-NEXT:    ;;#ASMSTART6197; GFX900-NEXT:    ; def v[1:2]6198; GFX900-NEXT:    ;;#ASMEND6199; GFX900-NEXT:    s_mov_b32 s4, 0x50401006200; GFX900-NEXT:    v_perm_b32 v0, v2, v0, s46201; GFX900-NEXT:    global_store_short v3, v2, s[16:17] offset:46202; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]6203; GFX900-NEXT:    s_waitcnt vmcnt(0)6204; GFX900-NEXT:    s_setpc_b64 s[30:31]6205;6206; GFX90A-LABEL: v_shuffle_v3i16_v4i16__0_6_6:6207; GFX90A:       ; %bb.0:6208; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6209; GFX90A-NEXT:    v_mov_b32_e32 v4, 06210; GFX90A-NEXT:    ;;#ASMSTART6211; GFX90A-NEXT:    ; def v[0:1]6212; GFX90A-NEXT:    ;;#ASMEND6213; GFX90A-NEXT:    ;;#ASMSTART6214; GFX90A-NEXT:    ; def v[2:3]6215; GFX90A-NEXT:    ;;#ASMEND6216; GFX90A-NEXT:    s_mov_b32 s4, 0x50401006217; GFX90A-NEXT:    v_perm_b32 v0, v3, v0, s46218; GFX90A-NEXT:    global_store_short v4, v3, s[16:17] offset:46219; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]6220; GFX90A-NEXT:    s_waitcnt vmcnt(0)6221; GFX90A-NEXT:    s_setpc_b64 s[30:31]6222;6223; GFX942-LABEL: v_shuffle_v3i16_v4i16__0_6_6:6224; GFX942:       ; %bb.0:6225; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6226; GFX942-NEXT:    v_mov_b32_e32 v4, 06227; GFX942-NEXT:    ;;#ASMSTART6228; GFX942-NEXT:    ; def v[0:1]6229; GFX942-NEXT:    ;;#ASMEND6230; GFX942-NEXT:    ;;#ASMSTART6231; GFX942-NEXT:    ; def v[2:3]6232; GFX942-NEXT:    ;;#ASMEND6233; GFX942-NEXT:    s_mov_b32 s2, 0x50401006234; GFX942-NEXT:    v_perm_b32 v0, v3, v0, s26235; GFX942-NEXT:    global_store_short v4, v3, s[0:1] offset:46236; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]6237; GFX942-NEXT:    s_waitcnt vmcnt(0)6238; GFX942-NEXT:    s_setpc_b64 s[30:31]6239  %vec0 = call <4 x i16> asm "; def $0", "=v"()6240  %vec1 = call <4 x i16> asm "; def $0", "=v"()6241  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 0, i32 6, i32 6>6242  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 86243  ret void6244}6245 6246define void @v_shuffle_v3i16_v4i16__1_6_6(ptr addrspace(1) inreg %ptr) {6247; GFX900-LABEL: v_shuffle_v3i16_v4i16__1_6_6:6248; GFX900:       ; %bb.0:6249; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6250; GFX900-NEXT:    ;;#ASMSTART6251; GFX900-NEXT:    ; def v[0:1]6252; GFX900-NEXT:    ;;#ASMEND6253; GFX900-NEXT:    v_mov_b32_e32 v3, 06254; GFX900-NEXT:    ;;#ASMSTART6255; GFX900-NEXT:    ; def v[1:2]6256; GFX900-NEXT:    ;;#ASMEND6257; GFX900-NEXT:    v_alignbit_b32 v0, v2, v0, 166258; GFX900-NEXT:    global_store_short v3, v2, s[16:17] offset:46259; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]6260; GFX900-NEXT:    s_waitcnt vmcnt(0)6261; GFX900-NEXT:    s_setpc_b64 s[30:31]6262;6263; GFX90A-LABEL: v_shuffle_v3i16_v4i16__1_6_6:6264; GFX90A:       ; %bb.0:6265; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6266; GFX90A-NEXT:    v_mov_b32_e32 v4, 06267; GFX90A-NEXT:    ;;#ASMSTART6268; GFX90A-NEXT:    ; def v[0:1]6269; GFX90A-NEXT:    ;;#ASMEND6270; GFX90A-NEXT:    ;;#ASMSTART6271; GFX90A-NEXT:    ; def v[2:3]6272; GFX90A-NEXT:    ;;#ASMEND6273; GFX90A-NEXT:    v_alignbit_b32 v0, v3, v0, 166274; GFX90A-NEXT:    global_store_short v4, v3, s[16:17] offset:46275; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]6276; GFX90A-NEXT:    s_waitcnt vmcnt(0)6277; GFX90A-NEXT:    s_setpc_b64 s[30:31]6278;6279; GFX942-LABEL: v_shuffle_v3i16_v4i16__1_6_6:6280; GFX942:       ; %bb.0:6281; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6282; GFX942-NEXT:    v_mov_b32_e32 v4, 06283; GFX942-NEXT:    ;;#ASMSTART6284; GFX942-NEXT:    ; def v[0:1]6285; GFX942-NEXT:    ;;#ASMEND6286; GFX942-NEXT:    ;;#ASMSTART6287; GFX942-NEXT:    ; def v[2:3]6288; GFX942-NEXT:    ;;#ASMEND6289; GFX942-NEXT:    s_nop 06290; GFX942-NEXT:    v_alignbit_b32 v0, v3, v0, 166291; GFX942-NEXT:    global_store_short v4, v3, s[0:1] offset:46292; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]6293; GFX942-NEXT:    s_waitcnt vmcnt(0)6294; GFX942-NEXT:    s_setpc_b64 s[30:31]6295  %vec0 = call <4 x i16> asm "; def $0", "=v"()6296  %vec1 = call <4 x i16> asm "; def $0", "=v"()6297  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 1, i32 6, i32 6>6298  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 86299  ret void6300}6301 6302define void @v_shuffle_v3i16_v4i16__2_6_6(ptr addrspace(1) inreg %ptr) {6303; GFX900-LABEL: v_shuffle_v3i16_v4i16__2_6_6:6304; GFX900:       ; %bb.0:6305; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6306; GFX900-NEXT:    v_mov_b32_e32 v4, 06307; GFX900-NEXT:    ;;#ASMSTART6308; GFX900-NEXT:    ; def v[0:1]6309; GFX900-NEXT:    ;;#ASMEND6310; GFX900-NEXT:    ;;#ASMSTART6311; GFX900-NEXT:    ; def v[2:3]6312; GFX900-NEXT:    ;;#ASMEND6313; GFX900-NEXT:    s_mov_b32 s4, 0x50401006314; GFX900-NEXT:    v_perm_b32 v0, v3, v1, s46315; GFX900-NEXT:    global_store_short v4, v3, s[16:17] offset:46316; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]6317; GFX900-NEXT:    s_waitcnt vmcnt(0)6318; GFX900-NEXT:    s_setpc_b64 s[30:31]6319;6320; GFX90A-LABEL: v_shuffle_v3i16_v4i16__2_6_6:6321; GFX90A:       ; %bb.0:6322; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6323; GFX90A-NEXT:    v_mov_b32_e32 v4, 06324; GFX90A-NEXT:    ;;#ASMSTART6325; GFX90A-NEXT:    ; def v[0:1]6326; GFX90A-NEXT:    ;;#ASMEND6327; GFX90A-NEXT:    ;;#ASMSTART6328; GFX90A-NEXT:    ; def v[2:3]6329; GFX90A-NEXT:    ;;#ASMEND6330; GFX90A-NEXT:    s_mov_b32 s4, 0x50401006331; GFX90A-NEXT:    v_perm_b32 v0, v3, v1, s46332; GFX90A-NEXT:    global_store_short v4, v3, s[16:17] offset:46333; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]6334; GFX90A-NEXT:    s_waitcnt vmcnt(0)6335; GFX90A-NEXT:    s_setpc_b64 s[30:31]6336;6337; GFX942-LABEL: v_shuffle_v3i16_v4i16__2_6_6:6338; GFX942:       ; %bb.0:6339; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6340; GFX942-NEXT:    v_mov_b32_e32 v4, 06341; GFX942-NEXT:    ;;#ASMSTART6342; GFX942-NEXT:    ; def v[0:1]6343; GFX942-NEXT:    ;;#ASMEND6344; GFX942-NEXT:    ;;#ASMSTART6345; GFX942-NEXT:    ; def v[2:3]6346; GFX942-NEXT:    ;;#ASMEND6347; GFX942-NEXT:    s_mov_b32 s2, 0x50401006348; GFX942-NEXT:    v_perm_b32 v0, v3, v1, s26349; GFX942-NEXT:    global_store_short v4, v3, s[0:1] offset:46350; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]6351; GFX942-NEXT:    s_waitcnt vmcnt(0)6352; GFX942-NEXT:    s_setpc_b64 s[30:31]6353  %vec0 = call <4 x i16> asm "; def $0", "=v"()6354  %vec1 = call <4 x i16> asm "; def $0", "=v"()6355  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 2, i32 6, i32 6>6356  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 86357  ret void6358}6359 6360define void @v_shuffle_v3i16_v4i16__3_6_6(ptr addrspace(1) inreg %ptr) {6361; GFX900-LABEL: v_shuffle_v3i16_v4i16__3_6_6:6362; GFX900:       ; %bb.0:6363; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6364; GFX900-NEXT:    v_mov_b32_e32 v4, 06365; GFX900-NEXT:    ;;#ASMSTART6366; GFX900-NEXT:    ; def v[0:1]6367; GFX900-NEXT:    ;;#ASMEND6368; GFX900-NEXT:    ;;#ASMSTART6369; GFX900-NEXT:    ; def v[2:3]6370; GFX900-NEXT:    ;;#ASMEND6371; GFX900-NEXT:    v_alignbit_b32 v0, v3, v1, 166372; GFX900-NEXT:    global_store_short v4, v3, s[16:17] offset:46373; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]6374; GFX900-NEXT:    s_waitcnt vmcnt(0)6375; GFX900-NEXT:    s_setpc_b64 s[30:31]6376;6377; GFX90A-LABEL: v_shuffle_v3i16_v4i16__3_6_6:6378; GFX90A:       ; %bb.0:6379; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6380; GFX90A-NEXT:    v_mov_b32_e32 v4, 06381; GFX90A-NEXT:    ;;#ASMSTART6382; GFX90A-NEXT:    ; def v[0:1]6383; GFX90A-NEXT:    ;;#ASMEND6384; GFX90A-NEXT:    ;;#ASMSTART6385; GFX90A-NEXT:    ; def v[2:3]6386; GFX90A-NEXT:    ;;#ASMEND6387; GFX90A-NEXT:    v_alignbit_b32 v0, v3, v1, 166388; GFX90A-NEXT:    global_store_short v4, v3, s[16:17] offset:46389; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]6390; GFX90A-NEXT:    s_waitcnt vmcnt(0)6391; GFX90A-NEXT:    s_setpc_b64 s[30:31]6392;6393; GFX942-LABEL: v_shuffle_v3i16_v4i16__3_6_6:6394; GFX942:       ; %bb.0:6395; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6396; GFX942-NEXT:    v_mov_b32_e32 v4, 06397; GFX942-NEXT:    ;;#ASMSTART6398; GFX942-NEXT:    ; def v[0:1]6399; GFX942-NEXT:    ;;#ASMEND6400; GFX942-NEXT:    ;;#ASMSTART6401; GFX942-NEXT:    ; def v[2:3]6402; GFX942-NEXT:    ;;#ASMEND6403; GFX942-NEXT:    s_nop 06404; GFX942-NEXT:    v_alignbit_b32 v0, v3, v1, 166405; GFX942-NEXT:    global_store_short v4, v3, s[0:1] offset:46406; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]6407; GFX942-NEXT:    s_waitcnt vmcnt(0)6408; GFX942-NEXT:    s_setpc_b64 s[30:31]6409  %vec0 = call <4 x i16> asm "; def $0", "=v"()6410  %vec1 = call <4 x i16> asm "; def $0", "=v"()6411  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 3, i32 6, i32 6>6412  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 86413  ret void6414}6415 6416define void @v_shuffle_v3i16_v4i16__4_6_6(ptr addrspace(1) inreg %ptr) {6417; GFX900-LABEL: v_shuffle_v3i16_v4i16__4_6_6:6418; GFX900:       ; %bb.0:6419; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6420; GFX900-NEXT:    v_mov_b32_e32 v2, 06421; GFX900-NEXT:    ;;#ASMSTART6422; GFX900-NEXT:    ; def v[0:1]6423; GFX900-NEXT:    ;;#ASMEND6424; GFX900-NEXT:    s_mov_b32 s4, 0x50401006425; GFX900-NEXT:    v_perm_b32 v0, v1, v0, s46426; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:46427; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]6428; GFX900-NEXT:    s_waitcnt vmcnt(0)6429; GFX900-NEXT:    s_setpc_b64 s[30:31]6430;6431; GFX90A-LABEL: v_shuffle_v3i16_v4i16__4_6_6:6432; GFX90A:       ; %bb.0:6433; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6434; GFX90A-NEXT:    v_mov_b32_e32 v2, 06435; GFX90A-NEXT:    ;;#ASMSTART6436; GFX90A-NEXT:    ; def v[0:1]6437; GFX90A-NEXT:    ;;#ASMEND6438; GFX90A-NEXT:    s_mov_b32 s4, 0x50401006439; GFX90A-NEXT:    v_perm_b32 v0, v1, v0, s46440; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:46441; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]6442; GFX90A-NEXT:    s_waitcnt vmcnt(0)6443; GFX90A-NEXT:    s_setpc_b64 s[30:31]6444;6445; GFX942-LABEL: v_shuffle_v3i16_v4i16__4_6_6:6446; GFX942:       ; %bb.0:6447; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6448; GFX942-NEXT:    v_mov_b32_e32 v2, 06449; GFX942-NEXT:    ;;#ASMSTART6450; GFX942-NEXT:    ; def v[0:1]6451; GFX942-NEXT:    ;;#ASMEND6452; GFX942-NEXT:    s_mov_b32 s2, 0x50401006453; GFX942-NEXT:    v_perm_b32 v0, v1, v0, s26454; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:46455; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]6456; GFX942-NEXT:    s_waitcnt vmcnt(0)6457; GFX942-NEXT:    s_setpc_b64 s[30:31]6458  %vec0 = call <4 x i16> asm "; def $0", "=v"()6459  %vec1 = call <4 x i16> asm "; def $0", "=v"()6460  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 4, i32 6, i32 6>6461  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 86462  ret void6463}6464 6465define void @v_shuffle_v3i16_v4i16__5_6_6(ptr addrspace(1) inreg %ptr) {6466; GFX900-LABEL: v_shuffle_v3i16_v4i16__5_6_6:6467; GFX900:       ; %bb.0:6468; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6469; GFX900-NEXT:    v_mov_b32_e32 v2, 06470; GFX900-NEXT:    ;;#ASMSTART6471; GFX900-NEXT:    ; def v[0:1]6472; GFX900-NEXT:    ;;#ASMEND6473; GFX900-NEXT:    v_alignbit_b32 v0, v1, v0, 166474; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:46475; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]6476; GFX900-NEXT:    s_waitcnt vmcnt(0)6477; GFX900-NEXT:    s_setpc_b64 s[30:31]6478;6479; GFX90A-LABEL: v_shuffle_v3i16_v4i16__5_6_6:6480; GFX90A:       ; %bb.0:6481; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6482; GFX90A-NEXT:    v_mov_b32_e32 v2, 06483; GFX90A-NEXT:    ;;#ASMSTART6484; GFX90A-NEXT:    ; def v[0:1]6485; GFX90A-NEXT:    ;;#ASMEND6486; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v0, 166487; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:46488; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]6489; GFX90A-NEXT:    s_waitcnt vmcnt(0)6490; GFX90A-NEXT:    s_setpc_b64 s[30:31]6491;6492; GFX942-LABEL: v_shuffle_v3i16_v4i16__5_6_6:6493; GFX942:       ; %bb.0:6494; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6495; GFX942-NEXT:    v_mov_b32_e32 v2, 06496; GFX942-NEXT:    ;;#ASMSTART6497; GFX942-NEXT:    ; def v[0:1]6498; GFX942-NEXT:    ;;#ASMEND6499; GFX942-NEXT:    s_nop 06500; GFX942-NEXT:    v_alignbit_b32 v0, v1, v0, 166501; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:46502; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]6503; GFX942-NEXT:    s_waitcnt vmcnt(0)6504; GFX942-NEXT:    s_setpc_b64 s[30:31]6505  %vec0 = call <4 x i16> asm "; def $0", "=v"()6506  %vec1 = call <4 x i16> asm "; def $0", "=v"()6507  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 5, i32 6, i32 6>6508  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 86509  ret void6510}6511 6512define void @v_shuffle_v3i16_v4i16__6_6_6(ptr addrspace(1) inreg %ptr) {6513; GFX900-LABEL: v_shuffle_v3i16_v4i16__6_6_6:6514; GFX900:       ; %bb.0:6515; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6516; GFX900-NEXT:    v_mov_b32_e32 v2, 06517; GFX900-NEXT:    ;;#ASMSTART6518; GFX900-NEXT:    ; def v[0:1]6519; GFX900-NEXT:    ;;#ASMEND6520; GFX900-NEXT:    s_mov_b32 s4, 0x50401006521; GFX900-NEXT:    v_perm_b32 v0, v1, v1, s46522; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:46523; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]6524; GFX900-NEXT:    s_waitcnt vmcnt(0)6525; GFX900-NEXT:    s_setpc_b64 s[30:31]6526;6527; GFX90A-LABEL: v_shuffle_v3i16_v4i16__6_6_6:6528; GFX90A:       ; %bb.0:6529; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6530; GFX90A-NEXT:    v_mov_b32_e32 v2, 06531; GFX90A-NEXT:    ;;#ASMSTART6532; GFX90A-NEXT:    ; def v[0:1]6533; GFX90A-NEXT:    ;;#ASMEND6534; GFX90A-NEXT:    s_mov_b32 s4, 0x50401006535; GFX90A-NEXT:    v_perm_b32 v0, v1, v1, s46536; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:46537; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]6538; GFX90A-NEXT:    s_waitcnt vmcnt(0)6539; GFX90A-NEXT:    s_setpc_b64 s[30:31]6540;6541; GFX942-LABEL: v_shuffle_v3i16_v4i16__6_6_6:6542; GFX942:       ; %bb.0:6543; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6544; GFX942-NEXT:    v_mov_b32_e32 v2, 06545; GFX942-NEXT:    ;;#ASMSTART6546; GFX942-NEXT:    ; def v[0:1]6547; GFX942-NEXT:    ;;#ASMEND6548; GFX942-NEXT:    s_mov_b32 s2, 0x50401006549; GFX942-NEXT:    v_perm_b32 v0, v1, v1, s26550; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:46551; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]6552; GFX942-NEXT:    s_waitcnt vmcnt(0)6553; GFX942-NEXT:    s_setpc_b64 s[30:31]6554  %vec0 = call <4 x i16> asm "; def $0", "=v"()6555  %vec1 = call <4 x i16> asm "; def $0", "=v"()6556  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 6, i32 6, i32 6>6557  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 86558  ret void6559}6560 6561define void @v_shuffle_v3i16_v4i16__7_6_6(ptr addrspace(1) inreg %ptr) {6562; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_6_6:6563; GFX900:       ; %bb.0:6564; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6565; GFX900-NEXT:    v_mov_b32_e32 v2, 06566; GFX900-NEXT:    ;;#ASMSTART6567; GFX900-NEXT:    ; def v[0:1]6568; GFX900-NEXT:    ;;#ASMEND6569; GFX900-NEXT:    v_alignbit_b32 v0, v1, v1, 166570; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:46571; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]6572; GFX900-NEXT:    s_waitcnt vmcnt(0)6573; GFX900-NEXT:    s_setpc_b64 s[30:31]6574;6575; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_6_6:6576; GFX90A:       ; %bb.0:6577; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6578; GFX90A-NEXT:    v_mov_b32_e32 v2, 06579; GFX90A-NEXT:    ;;#ASMSTART6580; GFX90A-NEXT:    ; def v[0:1]6581; GFX90A-NEXT:    ;;#ASMEND6582; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v1, 166583; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:46584; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]6585; GFX90A-NEXT:    s_waitcnt vmcnt(0)6586; GFX90A-NEXT:    s_setpc_b64 s[30:31]6587;6588; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_6_6:6589; GFX942:       ; %bb.0:6590; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6591; GFX942-NEXT:    v_mov_b32_e32 v2, 06592; GFX942-NEXT:    ;;#ASMSTART6593; GFX942-NEXT:    ; def v[0:1]6594; GFX942-NEXT:    ;;#ASMEND6595; GFX942-NEXT:    s_nop 06596; GFX942-NEXT:    v_alignbit_b32 v0, v1, v1, 166597; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:46598; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]6599; GFX942-NEXT:    s_waitcnt vmcnt(0)6600; GFX942-NEXT:    s_setpc_b64 s[30:31]6601  %vec0 = call <4 x i16> asm "; def $0", "=v"()6602  %vec1 = call <4 x i16> asm "; def $0", "=v"()6603  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 6, i32 6>6604  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 86605  ret void6606}6607 6608define void @v_shuffle_v3i16_v4i16__7_u_6(ptr addrspace(1) inreg %ptr) {6609; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_u_6:6610; GFX900:       ; %bb.0:6611; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6612; GFX900-NEXT:    v_mov_b32_e32 v2, 06613; GFX900-NEXT:    ;;#ASMSTART6614; GFX900-NEXT:    ; def v[0:1]6615; GFX900-NEXT:    ;;#ASMEND6616; GFX900-NEXT:    v_alignbit_b32 v0, s4, v1, 166617; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:46618; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]6619; GFX900-NEXT:    s_waitcnt vmcnt(0)6620; GFX900-NEXT:    s_setpc_b64 s[30:31]6621;6622; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_u_6:6623; GFX90A:       ; %bb.0:6624; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6625; GFX90A-NEXT:    v_mov_b32_e32 v2, 06626; GFX90A-NEXT:    ;;#ASMSTART6627; GFX90A-NEXT:    ; def v[0:1]6628; GFX90A-NEXT:    ;;#ASMEND6629; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v1, 166630; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:46631; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]6632; GFX90A-NEXT:    s_waitcnt vmcnt(0)6633; GFX90A-NEXT:    s_setpc_b64 s[30:31]6634;6635; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_u_6:6636; GFX942:       ; %bb.0:6637; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6638; GFX942-NEXT:    v_mov_b32_e32 v2, 06639; GFX942-NEXT:    ;;#ASMSTART6640; GFX942-NEXT:    ; def v[0:1]6641; GFX942-NEXT:    ;;#ASMEND6642; GFX942-NEXT:    s_nop 06643; GFX942-NEXT:    v_alignbit_b32 v0, s0, v1, 166644; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:46645; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]6646; GFX942-NEXT:    s_waitcnt vmcnt(0)6647; GFX942-NEXT:    s_setpc_b64 s[30:31]6648  %vec0 = call <4 x i16> asm "; def $0", "=v"()6649  %vec1 = call <4 x i16> asm "; def $0", "=v"()6650  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 poison, i32 6>6651  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 86652  ret void6653}6654 6655define void @v_shuffle_v3i16_v4i16__7_0_6(ptr addrspace(1) inreg %ptr) {6656; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_0_6:6657; GFX900:       ; %bb.0:6658; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6659; GFX900-NEXT:    ;;#ASMSTART6660; GFX900-NEXT:    ; def v[0:1]6661; GFX900-NEXT:    ;;#ASMEND6662; GFX900-NEXT:    v_mov_b32_e32 v3, 06663; GFX900-NEXT:    ;;#ASMSTART6664; GFX900-NEXT:    ; def v[1:2]6665; GFX900-NEXT:    ;;#ASMEND6666; GFX900-NEXT:    v_alignbit_b32 v0, v0, v2, 166667; GFX900-NEXT:    global_store_short v3, v2, s[16:17] offset:46668; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]6669; GFX900-NEXT:    s_waitcnt vmcnt(0)6670; GFX900-NEXT:    s_setpc_b64 s[30:31]6671;6672; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_0_6:6673; GFX90A:       ; %bb.0:6674; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6675; GFX90A-NEXT:    v_mov_b32_e32 v4, 06676; GFX90A-NEXT:    ;;#ASMSTART6677; GFX90A-NEXT:    ; def v[0:1]6678; GFX90A-NEXT:    ;;#ASMEND6679; GFX90A-NEXT:    ;;#ASMSTART6680; GFX90A-NEXT:    ; def v[2:3]6681; GFX90A-NEXT:    ;;#ASMEND6682; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v3, 166683; GFX90A-NEXT:    global_store_short v4, v3, s[16:17] offset:46684; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]6685; GFX90A-NEXT:    s_waitcnt vmcnt(0)6686; GFX90A-NEXT:    s_setpc_b64 s[30:31]6687;6688; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_0_6:6689; GFX942:       ; %bb.0:6690; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6691; GFX942-NEXT:    v_mov_b32_e32 v4, 06692; GFX942-NEXT:    ;;#ASMSTART6693; GFX942-NEXT:    ; def v[0:1]6694; GFX942-NEXT:    ;;#ASMEND6695; GFX942-NEXT:    ;;#ASMSTART6696; GFX942-NEXT:    ; def v[2:3]6697; GFX942-NEXT:    ;;#ASMEND6698; GFX942-NEXT:    s_nop 06699; GFX942-NEXT:    v_alignbit_b32 v0, v0, v3, 166700; GFX942-NEXT:    global_store_short v4, v3, s[0:1] offset:46701; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]6702; GFX942-NEXT:    s_waitcnt vmcnt(0)6703; GFX942-NEXT:    s_setpc_b64 s[30:31]6704  %vec0 = call <4 x i16> asm "; def $0", "=v"()6705  %vec1 = call <4 x i16> asm "; def $0", "=v"()6706  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 0, i32 6>6707  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 86708  ret void6709}6710 6711define void @v_shuffle_v3i16_v4i16__7_1_6(ptr addrspace(1) inreg %ptr) {6712; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_1_6:6713; GFX900:       ; %bb.0:6714; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6715; GFX900-NEXT:    ;;#ASMSTART6716; GFX900-NEXT:    ; def v[0:1]6717; GFX900-NEXT:    ;;#ASMEND6718; GFX900-NEXT:    v_mov_b32_e32 v3, 06719; GFX900-NEXT:    ;;#ASMSTART6720; GFX900-NEXT:    ; def v[1:2]6721; GFX900-NEXT:    ;;#ASMEND6722; GFX900-NEXT:    s_mov_b32 s4, 0x70603026723; GFX900-NEXT:    v_perm_b32 v0, v0, v2, s46724; GFX900-NEXT:    global_store_short v3, v2, s[16:17] offset:46725; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]6726; GFX900-NEXT:    s_waitcnt vmcnt(0)6727; GFX900-NEXT:    s_setpc_b64 s[30:31]6728;6729; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_1_6:6730; GFX90A:       ; %bb.0:6731; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6732; GFX90A-NEXT:    v_mov_b32_e32 v4, 06733; GFX90A-NEXT:    ;;#ASMSTART6734; GFX90A-NEXT:    ; def v[0:1]6735; GFX90A-NEXT:    ;;#ASMEND6736; GFX90A-NEXT:    ;;#ASMSTART6737; GFX90A-NEXT:    ; def v[2:3]6738; GFX90A-NEXT:    ;;#ASMEND6739; GFX90A-NEXT:    s_mov_b32 s4, 0x70603026740; GFX90A-NEXT:    v_perm_b32 v0, v0, v3, s46741; GFX90A-NEXT:    global_store_short v4, v3, s[16:17] offset:46742; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]6743; GFX90A-NEXT:    s_waitcnt vmcnt(0)6744; GFX90A-NEXT:    s_setpc_b64 s[30:31]6745;6746; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_1_6:6747; GFX942:       ; %bb.0:6748; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6749; GFX942-NEXT:    v_mov_b32_e32 v4, 06750; GFX942-NEXT:    ;;#ASMSTART6751; GFX942-NEXT:    ; def v[0:1]6752; GFX942-NEXT:    ;;#ASMEND6753; GFX942-NEXT:    ;;#ASMSTART6754; GFX942-NEXT:    ; def v[2:3]6755; GFX942-NEXT:    ;;#ASMEND6756; GFX942-NEXT:    s_mov_b32 s2, 0x70603026757; GFX942-NEXT:    v_perm_b32 v0, v0, v3, s26758; GFX942-NEXT:    global_store_short v4, v3, s[0:1] offset:46759; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]6760; GFX942-NEXT:    s_waitcnt vmcnt(0)6761; GFX942-NEXT:    s_setpc_b64 s[30:31]6762  %vec0 = call <4 x i16> asm "; def $0", "=v"()6763  %vec1 = call <4 x i16> asm "; def $0", "=v"()6764  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 1, i32 6>6765  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 86766  ret void6767}6768 6769define void @v_shuffle_v3i16_v4i16__7_2_6(ptr addrspace(1) inreg %ptr) {6770; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_2_6:6771; GFX900:       ; %bb.0:6772; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6773; GFX900-NEXT:    v_mov_b32_e32 v4, 06774; GFX900-NEXT:    ;;#ASMSTART6775; GFX900-NEXT:    ; def v[0:1]6776; GFX900-NEXT:    ;;#ASMEND6777; GFX900-NEXT:    ;;#ASMSTART6778; GFX900-NEXT:    ; def v[2:3]6779; GFX900-NEXT:    ;;#ASMEND6780; GFX900-NEXT:    v_alignbit_b32 v0, v1, v3, 166781; GFX900-NEXT:    global_store_short v4, v3, s[16:17] offset:46782; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]6783; GFX900-NEXT:    s_waitcnt vmcnt(0)6784; GFX900-NEXT:    s_setpc_b64 s[30:31]6785;6786; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_2_6:6787; GFX90A:       ; %bb.0:6788; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6789; GFX90A-NEXT:    v_mov_b32_e32 v4, 06790; GFX90A-NEXT:    ;;#ASMSTART6791; GFX90A-NEXT:    ; def v[0:1]6792; GFX90A-NEXT:    ;;#ASMEND6793; GFX90A-NEXT:    ;;#ASMSTART6794; GFX90A-NEXT:    ; def v[2:3]6795; GFX90A-NEXT:    ;;#ASMEND6796; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v3, 166797; GFX90A-NEXT:    global_store_short v4, v3, s[16:17] offset:46798; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]6799; GFX90A-NEXT:    s_waitcnt vmcnt(0)6800; GFX90A-NEXT:    s_setpc_b64 s[30:31]6801;6802; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_2_6:6803; GFX942:       ; %bb.0:6804; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6805; GFX942-NEXT:    v_mov_b32_e32 v4, 06806; GFX942-NEXT:    ;;#ASMSTART6807; GFX942-NEXT:    ; def v[0:1]6808; GFX942-NEXT:    ;;#ASMEND6809; GFX942-NEXT:    ;;#ASMSTART6810; GFX942-NEXT:    ; def v[2:3]6811; GFX942-NEXT:    ;;#ASMEND6812; GFX942-NEXT:    s_nop 06813; GFX942-NEXT:    v_alignbit_b32 v0, v1, v3, 166814; GFX942-NEXT:    global_store_short v4, v3, s[0:1] offset:46815; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]6816; GFX942-NEXT:    s_waitcnt vmcnt(0)6817; GFX942-NEXT:    s_setpc_b64 s[30:31]6818  %vec0 = call <4 x i16> asm "; def $0", "=v"()6819  %vec1 = call <4 x i16> asm "; def $0", "=v"()6820  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 2, i32 6>6821  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 86822  ret void6823}6824 6825define void @v_shuffle_v3i16_v4i16__7_3_6(ptr addrspace(1) inreg %ptr) {6826; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_3_6:6827; GFX900:       ; %bb.0:6828; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6829; GFX900-NEXT:    v_mov_b32_e32 v4, 06830; GFX900-NEXT:    ;;#ASMSTART6831; GFX900-NEXT:    ; def v[0:1]6832; GFX900-NEXT:    ;;#ASMEND6833; GFX900-NEXT:    ;;#ASMSTART6834; GFX900-NEXT:    ; def v[2:3]6835; GFX900-NEXT:    ;;#ASMEND6836; GFX900-NEXT:    s_mov_b32 s4, 0x70603026837; GFX900-NEXT:    v_perm_b32 v0, v1, v3, s46838; GFX900-NEXT:    global_store_short v4, v3, s[16:17] offset:46839; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]6840; GFX900-NEXT:    s_waitcnt vmcnt(0)6841; GFX900-NEXT:    s_setpc_b64 s[30:31]6842;6843; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_3_6:6844; GFX90A:       ; %bb.0:6845; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6846; GFX90A-NEXT:    v_mov_b32_e32 v4, 06847; GFX90A-NEXT:    ;;#ASMSTART6848; GFX90A-NEXT:    ; def v[0:1]6849; GFX90A-NEXT:    ;;#ASMEND6850; GFX90A-NEXT:    ;;#ASMSTART6851; GFX90A-NEXT:    ; def v[2:3]6852; GFX90A-NEXT:    ;;#ASMEND6853; GFX90A-NEXT:    s_mov_b32 s4, 0x70603026854; GFX90A-NEXT:    v_perm_b32 v0, v1, v3, s46855; GFX90A-NEXT:    global_store_short v4, v3, s[16:17] offset:46856; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]6857; GFX90A-NEXT:    s_waitcnt vmcnt(0)6858; GFX90A-NEXT:    s_setpc_b64 s[30:31]6859;6860; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_3_6:6861; GFX942:       ; %bb.0:6862; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6863; GFX942-NEXT:    v_mov_b32_e32 v4, 06864; GFX942-NEXT:    ;;#ASMSTART6865; GFX942-NEXT:    ; def v[0:1]6866; GFX942-NEXT:    ;;#ASMEND6867; GFX942-NEXT:    ;;#ASMSTART6868; GFX942-NEXT:    ; def v[2:3]6869; GFX942-NEXT:    ;;#ASMEND6870; GFX942-NEXT:    s_mov_b32 s2, 0x70603026871; GFX942-NEXT:    v_perm_b32 v0, v1, v3, s26872; GFX942-NEXT:    global_store_short v4, v3, s[0:1] offset:46873; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]6874; GFX942-NEXT:    s_waitcnt vmcnt(0)6875; GFX942-NEXT:    s_setpc_b64 s[30:31]6876  %vec0 = call <4 x i16> asm "; def $0", "=v"()6877  %vec1 = call <4 x i16> asm "; def $0", "=v"()6878  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 3, i32 6>6879  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 86880  ret void6881}6882 6883define void @v_shuffle_v3i16_v4i16__7_4_6(ptr addrspace(1) inreg %ptr) {6884; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_4_6:6885; GFX900:       ; %bb.0:6886; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6887; GFX900-NEXT:    v_mov_b32_e32 v2, 06888; GFX900-NEXT:    ;;#ASMSTART6889; GFX900-NEXT:    ; def v[0:1]6890; GFX900-NEXT:    ;;#ASMEND6891; GFX900-NEXT:    v_alignbit_b32 v0, v0, v1, 166892; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:46893; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]6894; GFX900-NEXT:    s_waitcnt vmcnt(0)6895; GFX900-NEXT:    s_setpc_b64 s[30:31]6896;6897; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_4_6:6898; GFX90A:       ; %bb.0:6899; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6900; GFX90A-NEXT:    v_mov_b32_e32 v2, 06901; GFX90A-NEXT:    ;;#ASMSTART6902; GFX90A-NEXT:    ; def v[0:1]6903; GFX90A-NEXT:    ;;#ASMEND6904; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v1, 166905; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:46906; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]6907; GFX90A-NEXT:    s_waitcnt vmcnt(0)6908; GFX90A-NEXT:    s_setpc_b64 s[30:31]6909;6910; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_4_6:6911; GFX942:       ; %bb.0:6912; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6913; GFX942-NEXT:    v_mov_b32_e32 v2, 06914; GFX942-NEXT:    ;;#ASMSTART6915; GFX942-NEXT:    ; def v[0:1]6916; GFX942-NEXT:    ;;#ASMEND6917; GFX942-NEXT:    s_nop 06918; GFX942-NEXT:    v_alignbit_b32 v0, v0, v1, 166919; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:46920; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]6921; GFX942-NEXT:    s_waitcnt vmcnt(0)6922; GFX942-NEXT:    s_setpc_b64 s[30:31]6923  %vec0 = call <4 x i16> asm "; def $0", "=v"()6924  %vec1 = call <4 x i16> asm "; def $0", "=v"()6925  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 4, i32 6>6926  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 86927  ret void6928}6929 6930define void @v_shuffle_v3i16_v4i16__7_5_6(ptr addrspace(1) inreg %ptr) {6931; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_5_6:6932; GFX900:       ; %bb.0:6933; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6934; GFX900-NEXT:    v_mov_b32_e32 v2, 06935; GFX900-NEXT:    ;;#ASMSTART6936; GFX900-NEXT:    ; def v[0:1]6937; GFX900-NEXT:    ;;#ASMEND6938; GFX900-NEXT:    s_mov_b32 s4, 0x70603026939; GFX900-NEXT:    v_perm_b32 v0, v0, v1, s46940; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:46941; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]6942; GFX900-NEXT:    s_waitcnt vmcnt(0)6943; GFX900-NEXT:    s_setpc_b64 s[30:31]6944;6945; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_5_6:6946; GFX90A:       ; %bb.0:6947; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6948; GFX90A-NEXT:    v_mov_b32_e32 v2, 06949; GFX90A-NEXT:    ;;#ASMSTART6950; GFX90A-NEXT:    ; def v[0:1]6951; GFX90A-NEXT:    ;;#ASMEND6952; GFX90A-NEXT:    s_mov_b32 s4, 0x70603026953; GFX90A-NEXT:    v_perm_b32 v0, v0, v1, s46954; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:46955; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]6956; GFX90A-NEXT:    s_waitcnt vmcnt(0)6957; GFX90A-NEXT:    s_setpc_b64 s[30:31]6958;6959; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_5_6:6960; GFX942:       ; %bb.0:6961; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6962; GFX942-NEXT:    v_mov_b32_e32 v2, 06963; GFX942-NEXT:    ;;#ASMSTART6964; GFX942-NEXT:    ; def v[0:1]6965; GFX942-NEXT:    ;;#ASMEND6966; GFX942-NEXT:    s_mov_b32 s2, 0x70603026967; GFX942-NEXT:    v_perm_b32 v0, v0, v1, s26968; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:46969; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]6970; GFX942-NEXT:    s_waitcnt vmcnt(0)6971; GFX942-NEXT:    s_setpc_b64 s[30:31]6972  %vec0 = call <4 x i16> asm "; def $0", "=v"()6973  %vec1 = call <4 x i16> asm "; def $0", "=v"()6974  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 5, i32 6>6975  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 86976  ret void6977}6978 6979define void @v_shuffle_v3i16_v4i16__u_7_7(ptr addrspace(1) inreg %ptr) {6980; GFX900-LABEL: v_shuffle_v3i16_v4i16__u_7_7:6981; GFX900:       ; %bb.0:6982; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6983; GFX900-NEXT:    v_mov_b32_e32 v2, 06984; GFX900-NEXT:    ;;#ASMSTART6985; GFX900-NEXT:    ; def v[0:1]6986; GFX900-NEXT:    ;;#ASMEND6987; GFX900-NEXT:    global_store_short_d16_hi v2, v1, s[16:17] offset:46988; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]6989; GFX900-NEXT:    s_waitcnt vmcnt(0)6990; GFX900-NEXT:    s_setpc_b64 s[30:31]6991;6992; GFX90A-LABEL: v_shuffle_v3i16_v4i16__u_7_7:6993; GFX90A:       ; %bb.0:6994; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6995; GFX90A-NEXT:    v_mov_b32_e32 v2, 06996; GFX90A-NEXT:    ;;#ASMSTART6997; GFX90A-NEXT:    ; def v[0:1]6998; GFX90A-NEXT:    ;;#ASMEND6999; GFX90A-NEXT:    global_store_short_d16_hi v2, v1, s[16:17] offset:47000; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]7001; GFX90A-NEXT:    s_waitcnt vmcnt(0)7002; GFX90A-NEXT:    s_setpc_b64 s[30:31]7003;7004; GFX942-LABEL: v_shuffle_v3i16_v4i16__u_7_7:7005; GFX942:       ; %bb.0:7006; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7007; GFX942-NEXT:    v_mov_b32_e32 v2, 07008; GFX942-NEXT:    ;;#ASMSTART7009; GFX942-NEXT:    ; def v[0:1]7010; GFX942-NEXT:    ;;#ASMEND7011; GFX942-NEXT:    global_store_short_d16_hi v2, v1, s[0:1] offset:47012; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]7013; GFX942-NEXT:    s_waitcnt vmcnt(0)7014; GFX942-NEXT:    s_setpc_b64 s[30:31]7015  %vec0 = call <4 x i16> asm "; def $0", "=v"()7016  %vec1 = call <4 x i16> asm "; def $0", "=v"()7017  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 poison, i32 7, i32 7>7018  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 87019  ret void7020}7021 7022define void @v_shuffle_v3i16_v4i16__0_7_7(ptr addrspace(1) inreg %ptr) {7023; GFX900-LABEL: v_shuffle_v3i16_v4i16__0_7_7:7024; GFX900:       ; %bb.0:7025; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7026; GFX900-NEXT:    ;;#ASMSTART7027; GFX900-NEXT:    ; def v[0:1]7028; GFX900-NEXT:    ;;#ASMEND7029; GFX900-NEXT:    s_mov_b32 s4, 0xffff7030; GFX900-NEXT:    v_mov_b32_e32 v3, 07031; GFX900-NEXT:    ;;#ASMSTART7032; GFX900-NEXT:    ; def v[1:2]7033; GFX900-NEXT:    ;;#ASMEND7034; GFX900-NEXT:    v_bfi_b32 v0, s4, v0, v27035; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v27036; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]7037; GFX900-NEXT:    global_store_short v3, v1, s[16:17] offset:47038; GFX900-NEXT:    s_waitcnt vmcnt(0)7039; GFX900-NEXT:    s_setpc_b64 s[30:31]7040;7041; GFX90A-LABEL: v_shuffle_v3i16_v4i16__0_7_7:7042; GFX90A:       ; %bb.0:7043; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7044; GFX90A-NEXT:    ;;#ASMSTART7045; GFX90A-NEXT:    ; def v[0:1]7046; GFX90A-NEXT:    ;;#ASMEND7047; GFX90A-NEXT:    s_mov_b32 s4, 0xffff7048; GFX90A-NEXT:    v_mov_b32_e32 v4, 07049; GFX90A-NEXT:    ;;#ASMSTART7050; GFX90A-NEXT:    ; def v[2:3]7051; GFX90A-NEXT:    ;;#ASMEND7052; GFX90A-NEXT:    v_bfi_b32 v0, s4, v0, v37053; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v37054; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]7055; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:47056; GFX90A-NEXT:    s_waitcnt vmcnt(0)7057; GFX90A-NEXT:    s_setpc_b64 s[30:31]7058;7059; GFX942-LABEL: v_shuffle_v3i16_v4i16__0_7_7:7060; GFX942:       ; %bb.0:7061; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7062; GFX942-NEXT:    ;;#ASMSTART7063; GFX942-NEXT:    ; def v[0:1]7064; GFX942-NEXT:    ;;#ASMEND7065; GFX942-NEXT:    s_mov_b32 s2, 0xffff7066; GFX942-NEXT:    v_mov_b32_e32 v4, 07067; GFX942-NEXT:    ;;#ASMSTART7068; GFX942-NEXT:    ; def v[2:3]7069; GFX942-NEXT:    ;;#ASMEND7070; GFX942-NEXT:    s_nop 07071; GFX942-NEXT:    v_bfi_b32 v0, s2, v0, v37072; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v37073; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]7074; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:47075; GFX942-NEXT:    s_waitcnt vmcnt(0)7076; GFX942-NEXT:    s_setpc_b64 s[30:31]7077  %vec0 = call <4 x i16> asm "; def $0", "=v"()7078  %vec1 = call <4 x i16> asm "; def $0", "=v"()7079  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 0, i32 7, i32 7>7080  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 87081  ret void7082}7083 7084define void @v_shuffle_v3i16_v4i16__1_7_7(ptr addrspace(1) inreg %ptr) {7085; GFX900-LABEL: v_shuffle_v3i16_v4i16__1_7_7:7086; GFX900:       ; %bb.0:7087; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7088; GFX900-NEXT:    ;;#ASMSTART7089; GFX900-NEXT:    ; def v[0:1]7090; GFX900-NEXT:    ;;#ASMEND7091; GFX900-NEXT:    s_mov_b32 s4, 0x70603027092; GFX900-NEXT:    v_mov_b32_e32 v3, 07093; GFX900-NEXT:    ;;#ASMSTART7094; GFX900-NEXT:    ; def v[1:2]7095; GFX900-NEXT:    ;;#ASMEND7096; GFX900-NEXT:    v_perm_b32 v0, v2, v0, s47097; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v27098; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]7099; GFX900-NEXT:    global_store_short v3, v1, s[16:17] offset:47100; GFX900-NEXT:    s_waitcnt vmcnt(0)7101; GFX900-NEXT:    s_setpc_b64 s[30:31]7102;7103; GFX90A-LABEL: v_shuffle_v3i16_v4i16__1_7_7:7104; GFX90A:       ; %bb.0:7105; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7106; GFX90A-NEXT:    ;;#ASMSTART7107; GFX90A-NEXT:    ; def v[0:1]7108; GFX90A-NEXT:    ;;#ASMEND7109; GFX90A-NEXT:    s_mov_b32 s4, 0x70603027110; GFX90A-NEXT:    v_mov_b32_e32 v4, 07111; GFX90A-NEXT:    ;;#ASMSTART7112; GFX90A-NEXT:    ; def v[2:3]7113; GFX90A-NEXT:    ;;#ASMEND7114; GFX90A-NEXT:    v_perm_b32 v0, v3, v0, s47115; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v37116; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]7117; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:47118; GFX90A-NEXT:    s_waitcnt vmcnt(0)7119; GFX90A-NEXT:    s_setpc_b64 s[30:31]7120;7121; GFX942-LABEL: v_shuffle_v3i16_v4i16__1_7_7:7122; GFX942:       ; %bb.0:7123; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7124; GFX942-NEXT:    ;;#ASMSTART7125; GFX942-NEXT:    ; def v[0:1]7126; GFX942-NEXT:    ;;#ASMEND7127; GFX942-NEXT:    s_mov_b32 s2, 0x70603027128; GFX942-NEXT:    v_mov_b32_e32 v4, 07129; GFX942-NEXT:    ;;#ASMSTART7130; GFX942-NEXT:    ; def v[2:3]7131; GFX942-NEXT:    ;;#ASMEND7132; GFX942-NEXT:    s_nop 07133; GFX942-NEXT:    v_perm_b32 v0, v3, v0, s27134; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v37135; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]7136; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:47137; GFX942-NEXT:    s_waitcnt vmcnt(0)7138; GFX942-NEXT:    s_setpc_b64 s[30:31]7139  %vec0 = call <4 x i16> asm "; def $0", "=v"()7140  %vec1 = call <4 x i16> asm "; def $0", "=v"()7141  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 1, i32 7, i32 7>7142  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 87143  ret void7144}7145 7146define void @v_shuffle_v3i16_v4i16__2_7_7(ptr addrspace(1) inreg %ptr) {7147; GFX900-LABEL: v_shuffle_v3i16_v4i16__2_7_7:7148; GFX900:       ; %bb.0:7149; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7150; GFX900-NEXT:    ;;#ASMSTART7151; GFX900-NEXT:    ; def v[0:1]7152; GFX900-NEXT:    ;;#ASMEND7153; GFX900-NEXT:    s_mov_b32 s4, 0xffff7154; GFX900-NEXT:    v_mov_b32_e32 v4, 07155; GFX900-NEXT:    ;;#ASMSTART7156; GFX900-NEXT:    ; def v[2:3]7157; GFX900-NEXT:    ;;#ASMEND7158; GFX900-NEXT:    v_bfi_b32 v0, s4, v1, v37159; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v37160; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:47161; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]7162; GFX900-NEXT:    s_waitcnt vmcnt(0)7163; GFX900-NEXT:    s_setpc_b64 s[30:31]7164;7165; GFX90A-LABEL: v_shuffle_v3i16_v4i16__2_7_7:7166; GFX90A:       ; %bb.0:7167; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7168; GFX90A-NEXT:    ;;#ASMSTART7169; GFX90A-NEXT:    ; def v[0:1]7170; GFX90A-NEXT:    ;;#ASMEND7171; GFX90A-NEXT:    s_mov_b32 s4, 0xffff7172; GFX90A-NEXT:    v_mov_b32_e32 v4, 07173; GFX90A-NEXT:    ;;#ASMSTART7174; GFX90A-NEXT:    ; def v[2:3]7175; GFX90A-NEXT:    ;;#ASMEND7176; GFX90A-NEXT:    v_bfi_b32 v0, s4, v1, v37177; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v37178; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:47179; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]7180; GFX90A-NEXT:    s_waitcnt vmcnt(0)7181; GFX90A-NEXT:    s_setpc_b64 s[30:31]7182;7183; GFX942-LABEL: v_shuffle_v3i16_v4i16__2_7_7:7184; GFX942:       ; %bb.0:7185; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7186; GFX942-NEXT:    ;;#ASMSTART7187; GFX942-NEXT:    ; def v[0:1]7188; GFX942-NEXT:    ;;#ASMEND7189; GFX942-NEXT:    s_mov_b32 s2, 0xffff7190; GFX942-NEXT:    v_mov_b32_e32 v4, 07191; GFX942-NEXT:    ;;#ASMSTART7192; GFX942-NEXT:    ; def v[2:3]7193; GFX942-NEXT:    ;;#ASMEND7194; GFX942-NEXT:    s_nop 07195; GFX942-NEXT:    v_bfi_b32 v0, s2, v1, v37196; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v37197; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:47198; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]7199; GFX942-NEXT:    s_waitcnt vmcnt(0)7200; GFX942-NEXT:    s_setpc_b64 s[30:31]7201  %vec0 = call <4 x i16> asm "; def $0", "=v"()7202  %vec1 = call <4 x i16> asm "; def $0", "=v"()7203  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 2, i32 7, i32 7>7204  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 87205  ret void7206}7207 7208define void @v_shuffle_v3i16_v4i16__3_7_7(ptr addrspace(1) inreg %ptr) {7209; GFX900-LABEL: v_shuffle_v3i16_v4i16__3_7_7:7210; GFX900:       ; %bb.0:7211; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7212; GFX900-NEXT:    ;;#ASMSTART7213; GFX900-NEXT:    ; def v[0:1]7214; GFX900-NEXT:    ;;#ASMEND7215; GFX900-NEXT:    s_mov_b32 s4, 0x70603027216; GFX900-NEXT:    v_mov_b32_e32 v4, 07217; GFX900-NEXT:    ;;#ASMSTART7218; GFX900-NEXT:    ; def v[2:3]7219; GFX900-NEXT:    ;;#ASMEND7220; GFX900-NEXT:    v_perm_b32 v0, v3, v1, s47221; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v37222; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]7223; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:47224; GFX900-NEXT:    s_waitcnt vmcnt(0)7225; GFX900-NEXT:    s_setpc_b64 s[30:31]7226;7227; GFX90A-LABEL: v_shuffle_v3i16_v4i16__3_7_7:7228; GFX90A:       ; %bb.0:7229; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7230; GFX90A-NEXT:    ;;#ASMSTART7231; GFX90A-NEXT:    ; def v[0:1]7232; GFX90A-NEXT:    ;;#ASMEND7233; GFX90A-NEXT:    s_mov_b32 s4, 0x70603027234; GFX90A-NEXT:    v_mov_b32_e32 v4, 07235; GFX90A-NEXT:    ;;#ASMSTART7236; GFX90A-NEXT:    ; def v[2:3]7237; GFX90A-NEXT:    ;;#ASMEND7238; GFX90A-NEXT:    v_perm_b32 v0, v3, v1, s47239; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v37240; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]7241; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:47242; GFX90A-NEXT:    s_waitcnt vmcnt(0)7243; GFX90A-NEXT:    s_setpc_b64 s[30:31]7244;7245; GFX942-LABEL: v_shuffle_v3i16_v4i16__3_7_7:7246; GFX942:       ; %bb.0:7247; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7248; GFX942-NEXT:    ;;#ASMSTART7249; GFX942-NEXT:    ; def v[0:1]7250; GFX942-NEXT:    ;;#ASMEND7251; GFX942-NEXT:    s_mov_b32 s2, 0x70603027252; GFX942-NEXT:    v_mov_b32_e32 v4, 07253; GFX942-NEXT:    ;;#ASMSTART7254; GFX942-NEXT:    ; def v[2:3]7255; GFX942-NEXT:    ;;#ASMEND7256; GFX942-NEXT:    s_nop 07257; GFX942-NEXT:    v_perm_b32 v0, v3, v1, s27258; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v37259; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]7260; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:47261; GFX942-NEXT:    s_waitcnt vmcnt(0)7262; GFX942-NEXT:    s_setpc_b64 s[30:31]7263  %vec0 = call <4 x i16> asm "; def $0", "=v"()7264  %vec1 = call <4 x i16> asm "; def $0", "=v"()7265  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 3, i32 7, i32 7>7266  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 87267  ret void7268}7269 7270define void @v_shuffle_v3i16_v4i16__4_7_7(ptr addrspace(1) inreg %ptr) {7271; GFX900-LABEL: v_shuffle_v3i16_v4i16__4_7_7:7272; GFX900:       ; %bb.0:7273; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7274; GFX900-NEXT:    ;;#ASMSTART7275; GFX900-NEXT:    ; def v[0:1]7276; GFX900-NEXT:    ;;#ASMEND7277; GFX900-NEXT:    s_mov_b32 s4, 0xffff7278; GFX900-NEXT:    v_mov_b32_e32 v2, 07279; GFX900-NEXT:    v_bfi_b32 v0, s4, v0, v17280; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v17281; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]7282; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:47283; GFX900-NEXT:    s_waitcnt vmcnt(0)7284; GFX900-NEXT:    s_setpc_b64 s[30:31]7285;7286; GFX90A-LABEL: v_shuffle_v3i16_v4i16__4_7_7:7287; GFX90A:       ; %bb.0:7288; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7289; GFX90A-NEXT:    ;;#ASMSTART7290; GFX90A-NEXT:    ; def v[0:1]7291; GFX90A-NEXT:    ;;#ASMEND7292; GFX90A-NEXT:    s_mov_b32 s4, 0xffff7293; GFX90A-NEXT:    v_mov_b32_e32 v2, 07294; GFX90A-NEXT:    v_bfi_b32 v0, s4, v0, v17295; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v17296; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]7297; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:47298; GFX90A-NEXT:    s_waitcnt vmcnt(0)7299; GFX90A-NEXT:    s_setpc_b64 s[30:31]7300;7301; GFX942-LABEL: v_shuffle_v3i16_v4i16__4_7_7:7302; GFX942:       ; %bb.0:7303; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7304; GFX942-NEXT:    ;;#ASMSTART7305; GFX942-NEXT:    ; def v[0:1]7306; GFX942-NEXT:    ;;#ASMEND7307; GFX942-NEXT:    s_mov_b32 s2, 0xffff7308; GFX942-NEXT:    v_mov_b32_e32 v2, 07309; GFX942-NEXT:    v_bfi_b32 v0, s2, v0, v17310; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v17311; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]7312; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:47313; GFX942-NEXT:    s_waitcnt vmcnt(0)7314; GFX942-NEXT:    s_setpc_b64 s[30:31]7315  %vec0 = call <4 x i16> asm "; def $0", "=v"()7316  %vec1 = call <4 x i16> asm "; def $0", "=v"()7317  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 4, i32 7, i32 7>7318  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 87319  ret void7320}7321 7322define void @v_shuffle_v3i16_v4i16__5_7_7(ptr addrspace(1) inreg %ptr) {7323; GFX900-LABEL: v_shuffle_v3i16_v4i16__5_7_7:7324; GFX900:       ; %bb.0:7325; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7326; GFX900-NEXT:    ;;#ASMSTART7327; GFX900-NEXT:    ; def v[0:1]7328; GFX900-NEXT:    ;;#ASMEND7329; GFX900-NEXT:    s_mov_b32 s4, 0x70603027330; GFX900-NEXT:    v_mov_b32_e32 v2, 07331; GFX900-NEXT:    v_perm_b32 v0, v1, v0, s47332; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v17333; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]7334; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:47335; GFX900-NEXT:    s_waitcnt vmcnt(0)7336; GFX900-NEXT:    s_setpc_b64 s[30:31]7337;7338; GFX90A-LABEL: v_shuffle_v3i16_v4i16__5_7_7:7339; GFX90A:       ; %bb.0:7340; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7341; GFX90A-NEXT:    ;;#ASMSTART7342; GFX90A-NEXT:    ; def v[0:1]7343; GFX90A-NEXT:    ;;#ASMEND7344; GFX90A-NEXT:    s_mov_b32 s4, 0x70603027345; GFX90A-NEXT:    v_mov_b32_e32 v2, 07346; GFX90A-NEXT:    v_perm_b32 v0, v1, v0, s47347; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v17348; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]7349; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:47350; GFX90A-NEXT:    s_waitcnt vmcnt(0)7351; GFX90A-NEXT:    s_setpc_b64 s[30:31]7352;7353; GFX942-LABEL: v_shuffle_v3i16_v4i16__5_7_7:7354; GFX942:       ; %bb.0:7355; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7356; GFX942-NEXT:    ;;#ASMSTART7357; GFX942-NEXT:    ; def v[0:1]7358; GFX942-NEXT:    ;;#ASMEND7359; GFX942-NEXT:    s_mov_b32 s2, 0x70603027360; GFX942-NEXT:    v_mov_b32_e32 v2, 07361; GFX942-NEXT:    v_perm_b32 v0, v1, v0, s27362; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v17363; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]7364; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:47365; GFX942-NEXT:    s_waitcnt vmcnt(0)7366; GFX942-NEXT:    s_setpc_b64 s[30:31]7367  %vec0 = call <4 x i16> asm "; def $0", "=v"()7368  %vec1 = call <4 x i16> asm "; def $0", "=v"()7369  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 5, i32 7, i32 7>7370  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 87371  ret void7372}7373 7374define void @v_shuffle_v3i16_v4i16__6_7_7(ptr addrspace(1) inreg %ptr) {7375; GFX900-LABEL: v_shuffle_v3i16_v4i16__6_7_7:7376; GFX900:       ; %bb.0:7377; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7378; GFX900-NEXT:    v_mov_b32_e32 v2, 07379; GFX900-NEXT:    ;;#ASMSTART7380; GFX900-NEXT:    ; def v[0:1]7381; GFX900-NEXT:    ;;#ASMEND7382; GFX900-NEXT:    global_store_short_d16_hi v2, v1, s[16:17] offset:47383; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]7384; GFX900-NEXT:    s_waitcnt vmcnt(0)7385; GFX900-NEXT:    s_setpc_b64 s[30:31]7386;7387; GFX90A-LABEL: v_shuffle_v3i16_v4i16__6_7_7:7388; GFX90A:       ; %bb.0:7389; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7390; GFX90A-NEXT:    v_mov_b32_e32 v2, 07391; GFX90A-NEXT:    ;;#ASMSTART7392; GFX90A-NEXT:    ; def v[0:1]7393; GFX90A-NEXT:    ;;#ASMEND7394; GFX90A-NEXT:    global_store_short_d16_hi v2, v1, s[16:17] offset:47395; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]7396; GFX90A-NEXT:    s_waitcnt vmcnt(0)7397; GFX90A-NEXT:    s_setpc_b64 s[30:31]7398;7399; GFX942-LABEL: v_shuffle_v3i16_v4i16__6_7_7:7400; GFX942:       ; %bb.0:7401; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7402; GFX942-NEXT:    v_mov_b32_e32 v2, 07403; GFX942-NEXT:    ;;#ASMSTART7404; GFX942-NEXT:    ; def v[0:1]7405; GFX942-NEXT:    ;;#ASMEND7406; GFX942-NEXT:    global_store_short_d16_hi v2, v1, s[0:1] offset:47407; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]7408; GFX942-NEXT:    s_waitcnt vmcnt(0)7409; GFX942-NEXT:    s_setpc_b64 s[30:31]7410  %vec0 = call <4 x i16> asm "; def $0", "=v"()7411  %vec1 = call <4 x i16> asm "; def $0", "=v"()7412  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 6, i32 7, i32 7>7413  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 87414  ret void7415}7416 7417define void @v_shuffle_v3i16_v4i16__7_u_7(ptr addrspace(1) inreg %ptr) {7418; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_u_7:7419; GFX900:       ; %bb.0:7420; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7421; GFX900-NEXT:    ;;#ASMSTART7422; GFX900-NEXT:    ; def v[0:1]7423; GFX900-NEXT:    ;;#ASMEND7424; GFX900-NEXT:    v_mov_b32_e32 v2, 07425; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v17426; GFX900-NEXT:    v_alignbit_b32 v1, s4, v1, 167427; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]7428; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:47429; GFX900-NEXT:    s_waitcnt vmcnt(0)7430; GFX900-NEXT:    s_setpc_b64 s[30:31]7431;7432; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_u_7:7433; GFX90A:       ; %bb.0:7434; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7435; GFX90A-NEXT:    ;;#ASMSTART7436; GFX90A-NEXT:    ; def v[0:1]7437; GFX90A-NEXT:    ;;#ASMEND7438; GFX90A-NEXT:    v_mov_b32_e32 v2, 07439; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v17440; GFX90A-NEXT:    v_alignbit_b32 v1, s4, v1, 167441; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]7442; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:47443; GFX90A-NEXT:    s_waitcnt vmcnt(0)7444; GFX90A-NEXT:    s_setpc_b64 s[30:31]7445;7446; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_u_7:7447; GFX942:       ; %bb.0:7448; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7449; GFX942-NEXT:    ;;#ASMSTART7450; GFX942-NEXT:    ; def v[0:1]7451; GFX942-NEXT:    ;;#ASMEND7452; GFX942-NEXT:    v_mov_b32_e32 v2, 07453; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v17454; GFX942-NEXT:    v_alignbit_b32 v1, s0, v1, 167455; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]7456; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:47457; GFX942-NEXT:    s_waitcnt vmcnt(0)7458; GFX942-NEXT:    s_setpc_b64 s[30:31]7459  %vec0 = call <4 x i16> asm "; def $0", "=v"()7460  %vec1 = call <4 x i16> asm "; def $0", "=v"()7461  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 poison, i32 7>7462  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 87463  ret void7464}7465 7466define void @v_shuffle_v3i16_v4i16__7_0_7(ptr addrspace(1) inreg %ptr) {7467; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_0_7:7468; GFX900:       ; %bb.0:7469; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7470; GFX900-NEXT:    ;;#ASMSTART7471; GFX900-NEXT:    ; def v[0:1]7472; GFX900-NEXT:    ;;#ASMEND7473; GFX900-NEXT:    v_mov_b32_e32 v3, 07474; GFX900-NEXT:    ;;#ASMSTART7475; GFX900-NEXT:    ; def v[1:2]7476; GFX900-NEXT:    ;;#ASMEND7477; GFX900-NEXT:    v_alignbit_b32 v0, v0, v2, 167478; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v27479; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]7480; GFX900-NEXT:    global_store_short v3, v1, s[16:17] offset:47481; GFX900-NEXT:    s_waitcnt vmcnt(0)7482; GFX900-NEXT:    s_setpc_b64 s[30:31]7483;7484; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_0_7:7485; GFX90A:       ; %bb.0:7486; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7487; GFX90A-NEXT:    ;;#ASMSTART7488; GFX90A-NEXT:    ; def v[0:1]7489; GFX90A-NEXT:    ;;#ASMEND7490; GFX90A-NEXT:    v_mov_b32_e32 v4, 07491; GFX90A-NEXT:    ;;#ASMSTART7492; GFX90A-NEXT:    ; def v[2:3]7493; GFX90A-NEXT:    ;;#ASMEND7494; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v3, 167495; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v37496; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]7497; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:47498; GFX90A-NEXT:    s_waitcnt vmcnt(0)7499; GFX90A-NEXT:    s_setpc_b64 s[30:31]7500;7501; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_0_7:7502; GFX942:       ; %bb.0:7503; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7504; GFX942-NEXT:    ;;#ASMSTART7505; GFX942-NEXT:    ; def v[0:1]7506; GFX942-NEXT:    ;;#ASMEND7507; GFX942-NEXT:    v_mov_b32_e32 v4, 07508; GFX942-NEXT:    ;;#ASMSTART7509; GFX942-NEXT:    ; def v[2:3]7510; GFX942-NEXT:    ;;#ASMEND7511; GFX942-NEXT:    s_nop 07512; GFX942-NEXT:    v_alignbit_b32 v0, v0, v3, 167513; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v37514; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]7515; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:47516; GFX942-NEXT:    s_waitcnt vmcnt(0)7517; GFX942-NEXT:    s_setpc_b64 s[30:31]7518  %vec0 = call <4 x i16> asm "; def $0", "=v"()7519  %vec1 = call <4 x i16> asm "; def $0", "=v"()7520  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 0, i32 7>7521  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 87522  ret void7523}7524 7525define void @v_shuffle_v3i16_v4i16__7_1_7(ptr addrspace(1) inreg %ptr) {7526; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_1_7:7527; GFX900:       ; %bb.0:7528; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7529; GFX900-NEXT:    ;;#ASMSTART7530; GFX900-NEXT:    ; def v[0:1]7531; GFX900-NEXT:    ;;#ASMEND7532; GFX900-NEXT:    s_mov_b32 s4, 0x70603027533; GFX900-NEXT:    v_mov_b32_e32 v3, 07534; GFX900-NEXT:    ;;#ASMSTART7535; GFX900-NEXT:    ; def v[1:2]7536; GFX900-NEXT:    ;;#ASMEND7537; GFX900-NEXT:    v_perm_b32 v0, v0, v2, s47538; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v27539; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]7540; GFX900-NEXT:    global_store_short v3, v1, s[16:17] offset:47541; GFX900-NEXT:    s_waitcnt vmcnt(0)7542; GFX900-NEXT:    s_setpc_b64 s[30:31]7543;7544; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_1_7:7545; GFX90A:       ; %bb.0:7546; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7547; GFX90A-NEXT:    ;;#ASMSTART7548; GFX90A-NEXT:    ; def v[0:1]7549; GFX90A-NEXT:    ;;#ASMEND7550; GFX90A-NEXT:    s_mov_b32 s4, 0x70603027551; GFX90A-NEXT:    v_mov_b32_e32 v4, 07552; GFX90A-NEXT:    ;;#ASMSTART7553; GFX90A-NEXT:    ; def v[2:3]7554; GFX90A-NEXT:    ;;#ASMEND7555; GFX90A-NEXT:    v_perm_b32 v0, v0, v3, s47556; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v37557; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]7558; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:47559; GFX90A-NEXT:    s_waitcnt vmcnt(0)7560; GFX90A-NEXT:    s_setpc_b64 s[30:31]7561;7562; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_1_7:7563; GFX942:       ; %bb.0:7564; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7565; GFX942-NEXT:    ;;#ASMSTART7566; GFX942-NEXT:    ; def v[0:1]7567; GFX942-NEXT:    ;;#ASMEND7568; GFX942-NEXT:    s_mov_b32 s2, 0x70603027569; GFX942-NEXT:    v_mov_b32_e32 v4, 07570; GFX942-NEXT:    ;;#ASMSTART7571; GFX942-NEXT:    ; def v[2:3]7572; GFX942-NEXT:    ;;#ASMEND7573; GFX942-NEXT:    s_nop 07574; GFX942-NEXT:    v_perm_b32 v0, v0, v3, s27575; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v37576; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]7577; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:47578; GFX942-NEXT:    s_waitcnt vmcnt(0)7579; GFX942-NEXT:    s_setpc_b64 s[30:31]7580  %vec0 = call <4 x i16> asm "; def $0", "=v"()7581  %vec1 = call <4 x i16> asm "; def $0", "=v"()7582  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 1, i32 7>7583  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 87584  ret void7585}7586 7587define void @v_shuffle_v3i16_v4i16__7_2_7(ptr addrspace(1) inreg %ptr) {7588; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_2_7:7589; GFX900:       ; %bb.0:7590; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7591; GFX900-NEXT:    ;;#ASMSTART7592; GFX900-NEXT:    ; def v[0:1]7593; GFX900-NEXT:    ;;#ASMEND7594; GFX900-NEXT:    v_mov_b32_e32 v4, 07595; GFX900-NEXT:    ;;#ASMSTART7596; GFX900-NEXT:    ; def v[2:3]7597; GFX900-NEXT:    ;;#ASMEND7598; GFX900-NEXT:    v_alignbit_b32 v0, v1, v3, 167599; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v37600; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:47601; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]7602; GFX900-NEXT:    s_waitcnt vmcnt(0)7603; GFX900-NEXT:    s_setpc_b64 s[30:31]7604;7605; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_2_7:7606; GFX90A:       ; %bb.0:7607; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7608; GFX90A-NEXT:    ;;#ASMSTART7609; GFX90A-NEXT:    ; def v[0:1]7610; GFX90A-NEXT:    ;;#ASMEND7611; GFX90A-NEXT:    v_mov_b32_e32 v4, 07612; GFX90A-NEXT:    ;;#ASMSTART7613; GFX90A-NEXT:    ; def v[2:3]7614; GFX90A-NEXT:    ;;#ASMEND7615; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v3, 167616; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v37617; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:47618; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]7619; GFX90A-NEXT:    s_waitcnt vmcnt(0)7620; GFX90A-NEXT:    s_setpc_b64 s[30:31]7621;7622; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_2_7:7623; GFX942:       ; %bb.0:7624; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7625; GFX942-NEXT:    ;;#ASMSTART7626; GFX942-NEXT:    ; def v[0:1]7627; GFX942-NEXT:    ;;#ASMEND7628; GFX942-NEXT:    v_mov_b32_e32 v4, 07629; GFX942-NEXT:    ;;#ASMSTART7630; GFX942-NEXT:    ; def v[2:3]7631; GFX942-NEXT:    ;;#ASMEND7632; GFX942-NEXT:    s_nop 07633; GFX942-NEXT:    v_alignbit_b32 v0, v1, v3, 167634; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v37635; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:47636; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]7637; GFX942-NEXT:    s_waitcnt vmcnt(0)7638; GFX942-NEXT:    s_setpc_b64 s[30:31]7639  %vec0 = call <4 x i16> asm "; def $0", "=v"()7640  %vec1 = call <4 x i16> asm "; def $0", "=v"()7641  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 2, i32 7>7642  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 87643  ret void7644}7645 7646define void @v_shuffle_v3i16_v4i16__7_3_7(ptr addrspace(1) inreg %ptr) {7647; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_3_7:7648; GFX900:       ; %bb.0:7649; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7650; GFX900-NEXT:    ;;#ASMSTART7651; GFX900-NEXT:    ; def v[0:1]7652; GFX900-NEXT:    ;;#ASMEND7653; GFX900-NEXT:    s_mov_b32 s4, 0x70603027654; GFX900-NEXT:    v_mov_b32_e32 v4, 07655; GFX900-NEXT:    ;;#ASMSTART7656; GFX900-NEXT:    ; def v[2:3]7657; GFX900-NEXT:    ;;#ASMEND7658; GFX900-NEXT:    v_perm_b32 v0, v1, v3, s47659; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v37660; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]7661; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:47662; GFX900-NEXT:    s_waitcnt vmcnt(0)7663; GFX900-NEXT:    s_setpc_b64 s[30:31]7664;7665; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_3_7:7666; GFX90A:       ; %bb.0:7667; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7668; GFX90A-NEXT:    ;;#ASMSTART7669; GFX90A-NEXT:    ; def v[0:1]7670; GFX90A-NEXT:    ;;#ASMEND7671; GFX90A-NEXT:    s_mov_b32 s4, 0x70603027672; GFX90A-NEXT:    v_mov_b32_e32 v4, 07673; GFX90A-NEXT:    ;;#ASMSTART7674; GFX90A-NEXT:    ; def v[2:3]7675; GFX90A-NEXT:    ;;#ASMEND7676; GFX90A-NEXT:    v_perm_b32 v0, v1, v3, s47677; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v37678; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]7679; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:47680; GFX90A-NEXT:    s_waitcnt vmcnt(0)7681; GFX90A-NEXT:    s_setpc_b64 s[30:31]7682;7683; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_3_7:7684; GFX942:       ; %bb.0:7685; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7686; GFX942-NEXT:    ;;#ASMSTART7687; GFX942-NEXT:    ; def v[0:1]7688; GFX942-NEXT:    ;;#ASMEND7689; GFX942-NEXT:    s_mov_b32 s2, 0x70603027690; GFX942-NEXT:    v_mov_b32_e32 v4, 07691; GFX942-NEXT:    ;;#ASMSTART7692; GFX942-NEXT:    ; def v[2:3]7693; GFX942-NEXT:    ;;#ASMEND7694; GFX942-NEXT:    s_nop 07695; GFX942-NEXT:    v_perm_b32 v0, v1, v3, s27696; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v37697; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]7698; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:47699; GFX942-NEXT:    s_waitcnt vmcnt(0)7700; GFX942-NEXT:    s_setpc_b64 s[30:31]7701  %vec0 = call <4 x i16> asm "; def $0", "=v"()7702  %vec1 = call <4 x i16> asm "; def $0", "=v"()7703  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 3, i32 7>7704  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 87705  ret void7706}7707 7708define void @v_shuffle_v3i16_v4i16__7_4_7(ptr addrspace(1) inreg %ptr) {7709; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_4_7:7710; GFX900:       ; %bb.0:7711; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7712; GFX900-NEXT:    ;;#ASMSTART7713; GFX900-NEXT:    ; def v[0:1]7714; GFX900-NEXT:    ;;#ASMEND7715; GFX900-NEXT:    v_mov_b32_e32 v2, 07716; GFX900-NEXT:    v_alignbit_b32 v0, v0, v1, 167717; GFX900-NEXT:    v_lshrrev_b32_e32 v3, 16, v17718; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]7719; GFX900-NEXT:    global_store_short v2, v3, s[16:17] offset:47720; GFX900-NEXT:    s_waitcnt vmcnt(0)7721; GFX900-NEXT:    s_setpc_b64 s[30:31]7722;7723; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_4_7:7724; GFX90A:       ; %bb.0:7725; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7726; GFX90A-NEXT:    ;;#ASMSTART7727; GFX90A-NEXT:    ; def v[0:1]7728; GFX90A-NEXT:    ;;#ASMEND7729; GFX90A-NEXT:    v_mov_b32_e32 v2, 07730; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v1, 167731; GFX90A-NEXT:    v_lshrrev_b32_e32 v3, 16, v17732; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]7733; GFX90A-NEXT:    global_store_short v2, v3, s[16:17] offset:47734; GFX90A-NEXT:    s_waitcnt vmcnt(0)7735; GFX90A-NEXT:    s_setpc_b64 s[30:31]7736;7737; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_4_7:7738; GFX942:       ; %bb.0:7739; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7740; GFX942-NEXT:    ;;#ASMSTART7741; GFX942-NEXT:    ; def v[0:1]7742; GFX942-NEXT:    ;;#ASMEND7743; GFX942-NEXT:    v_mov_b32_e32 v2, 07744; GFX942-NEXT:    v_alignbit_b32 v0, v0, v1, 167745; GFX942-NEXT:    v_lshrrev_b32_e32 v3, 16, v17746; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]7747; GFX942-NEXT:    global_store_short v2, v3, s[0:1] offset:47748; GFX942-NEXT:    s_waitcnt vmcnt(0)7749; GFX942-NEXT:    s_setpc_b64 s[30:31]7750  %vec0 = call <4 x i16> asm "; def $0", "=v"()7751  %vec1 = call <4 x i16> asm "; def $0", "=v"()7752  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 4, i32 7>7753  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 87754  ret void7755}7756 7757define void @v_shuffle_v3i16_v4i16__7_5_7(ptr addrspace(1) inreg %ptr) {7758; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_5_7:7759; GFX900:       ; %bb.0:7760; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7761; GFX900-NEXT:    ;;#ASMSTART7762; GFX900-NEXT:    ; def v[0:1]7763; GFX900-NEXT:    ;;#ASMEND7764; GFX900-NEXT:    s_mov_b32 s4, 0x70603027765; GFX900-NEXT:    v_mov_b32_e32 v2, 07766; GFX900-NEXT:    v_perm_b32 v0, v0, v1, s47767; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v17768; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]7769; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:47770; GFX900-NEXT:    s_waitcnt vmcnt(0)7771; GFX900-NEXT:    s_setpc_b64 s[30:31]7772;7773; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_5_7:7774; GFX90A:       ; %bb.0:7775; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7776; GFX90A-NEXT:    ;;#ASMSTART7777; GFX90A-NEXT:    ; def v[0:1]7778; GFX90A-NEXT:    ;;#ASMEND7779; GFX90A-NEXT:    s_mov_b32 s4, 0x70603027780; GFX90A-NEXT:    v_mov_b32_e32 v2, 07781; GFX90A-NEXT:    v_perm_b32 v0, v0, v1, s47782; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v17783; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]7784; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:47785; GFX90A-NEXT:    s_waitcnt vmcnt(0)7786; GFX90A-NEXT:    s_setpc_b64 s[30:31]7787;7788; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_5_7:7789; GFX942:       ; %bb.0:7790; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7791; GFX942-NEXT:    ;;#ASMSTART7792; GFX942-NEXT:    ; def v[0:1]7793; GFX942-NEXT:    ;;#ASMEND7794; GFX942-NEXT:    s_mov_b32 s2, 0x70603027795; GFX942-NEXT:    v_mov_b32_e32 v2, 07796; GFX942-NEXT:    v_perm_b32 v0, v0, v1, s27797; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v17798; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]7799; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:47800; GFX942-NEXT:    s_waitcnt vmcnt(0)7801; GFX942-NEXT:    s_setpc_b64 s[30:31]7802  %vec0 = call <4 x i16> asm "; def $0", "=v"()7803  %vec1 = call <4 x i16> asm "; def $0", "=v"()7804  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 5, i32 7>7805  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 87806  ret void7807}7808 7809define void @v_shuffle_v3i16_v4i16__7_6_7(ptr addrspace(1) inreg %ptr) {7810; GFX900-LABEL: v_shuffle_v3i16_v4i16__7_6_7:7811; GFX900:       ; %bb.0:7812; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7813; GFX900-NEXT:    ;;#ASMSTART7814; GFX900-NEXT:    ; def v[0:1]7815; GFX900-NEXT:    ;;#ASMEND7816; GFX900-NEXT:    v_mov_b32_e32 v2, 07817; GFX900-NEXT:    v_alignbit_b32 v0, v1, v1, 167818; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v17819; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:47820; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]7821; GFX900-NEXT:    s_waitcnt vmcnt(0)7822; GFX900-NEXT:    s_setpc_b64 s[30:31]7823;7824; GFX90A-LABEL: v_shuffle_v3i16_v4i16__7_6_7:7825; GFX90A:       ; %bb.0:7826; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7827; GFX90A-NEXT:    ;;#ASMSTART7828; GFX90A-NEXT:    ; def v[0:1]7829; GFX90A-NEXT:    ;;#ASMEND7830; GFX90A-NEXT:    v_mov_b32_e32 v2, 07831; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v1, 167832; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v17833; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:47834; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]7835; GFX90A-NEXT:    s_waitcnt vmcnt(0)7836; GFX90A-NEXT:    s_setpc_b64 s[30:31]7837;7838; GFX942-LABEL: v_shuffle_v3i16_v4i16__7_6_7:7839; GFX942:       ; %bb.0:7840; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7841; GFX942-NEXT:    ;;#ASMSTART7842; GFX942-NEXT:    ; def v[0:1]7843; GFX942-NEXT:    ;;#ASMEND7844; GFX942-NEXT:    v_mov_b32_e32 v2, 07845; GFX942-NEXT:    v_alignbit_b32 v0, v1, v1, 167846; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v17847; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:47848; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]7849; GFX942-NEXT:    s_waitcnt vmcnt(0)7850; GFX942-NEXT:    s_setpc_b64 s[30:31]7851  %vec0 = call <4 x i16> asm "; def $0", "=v"()7852  %vec1 = call <4 x i16> asm "; def $0", "=v"()7853  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 6, i32 7>7854  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 87855  ret void7856}7857 7858define void @s_shuffle_v3i16_v4i16__u_u_u() {7859; GFX9-LABEL: s_shuffle_v3i16_v4i16__u_u_u:7860; GFX9:       ; %bb.0:7861; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7862; GFX9-NEXT:    ;;#ASMSTART7863; GFX9-NEXT:    ; use s[8:9]7864; GFX9-NEXT:    ;;#ASMEND7865; GFX9-NEXT:    s_setpc_b64 s[30:31]7866  %vec0 = call <4 x i16> asm "; def $0", "=s"()7867  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> poison7868  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>7869  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)7870  ret void7871}7872 7873define void @s_shuffle_v3i16_v4i16__0_u_u() {7874; GFX900-LABEL: s_shuffle_v3i16_v4i16__0_u_u:7875; GFX900:       ; %bb.0:7876; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7877; GFX900-NEXT:    ;;#ASMSTART7878; GFX900-NEXT:    ; def s[8:9]7879; GFX900-NEXT:    ;;#ASMEND7880; GFX900-NEXT:    ;;#ASMSTART7881; GFX900-NEXT:    ; use s[8:9]7882; GFX900-NEXT:    ;;#ASMEND7883; GFX900-NEXT:    s_setpc_b64 s[30:31]7884;7885; GFX90A-LABEL: s_shuffle_v3i16_v4i16__0_u_u:7886; GFX90A:       ; %bb.0:7887; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7888; GFX90A-NEXT:    ;;#ASMSTART7889; GFX90A-NEXT:    ; def s[8:9]7890; GFX90A-NEXT:    ;;#ASMEND7891; GFX90A-NEXT:    ;;#ASMSTART7892; GFX90A-NEXT:    ; use s[8:9]7893; GFX90A-NEXT:    ;;#ASMEND7894; GFX90A-NEXT:    s_setpc_b64 s[30:31]7895;7896; GFX942-LABEL: s_shuffle_v3i16_v4i16__0_u_u:7897; GFX942:       ; %bb.0:7898; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7899; GFX942-NEXT:    ;;#ASMSTART7900; GFX942-NEXT:    ; def s[8:9]7901; GFX942-NEXT:    ;;#ASMEND7902; GFX942-NEXT:    s_nop 07903; GFX942-NEXT:    ;;#ASMSTART7904; GFX942-NEXT:    ; use s[8:9]7905; GFX942-NEXT:    ;;#ASMEND7906; GFX942-NEXT:    s_setpc_b64 s[30:31]7907  %vec0 = call <4 x i16> asm "; def $0", "=s"()7908  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 poison, i32 poison>7909  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>7910  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)7911  ret void7912}7913 7914define void @s_shuffle_v3i16_v4i16__1_u_u() {7915; GFX900-LABEL: s_shuffle_v3i16_v4i16__1_u_u:7916; GFX900:       ; %bb.0:7917; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7918; GFX900-NEXT:    ;;#ASMSTART7919; GFX900-NEXT:    ; def s[4:5]7920; GFX900-NEXT:    ;;#ASMEND7921; GFX900-NEXT:    s_lshr_b32 s8, s4, 167922; GFX900-NEXT:    ;;#ASMSTART7923; GFX900-NEXT:    ; use s[8:9]7924; GFX900-NEXT:    ;;#ASMEND7925; GFX900-NEXT:    s_setpc_b64 s[30:31]7926;7927; GFX90A-LABEL: s_shuffle_v3i16_v4i16__1_u_u:7928; GFX90A:       ; %bb.0:7929; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7930; GFX90A-NEXT:    ;;#ASMSTART7931; GFX90A-NEXT:    ; def s[4:5]7932; GFX90A-NEXT:    ;;#ASMEND7933; GFX90A-NEXT:    s_lshr_b32 s8, s4, 167934; GFX90A-NEXT:    ;;#ASMSTART7935; GFX90A-NEXT:    ; use s[8:9]7936; GFX90A-NEXT:    ;;#ASMEND7937; GFX90A-NEXT:    s_setpc_b64 s[30:31]7938;7939; GFX942-LABEL: s_shuffle_v3i16_v4i16__1_u_u:7940; GFX942:       ; %bb.0:7941; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7942; GFX942-NEXT:    ;;#ASMSTART7943; GFX942-NEXT:    ; def s[0:1]7944; GFX942-NEXT:    ;;#ASMEND7945; GFX942-NEXT:    s_lshr_b32 s8, s0, 167946; GFX942-NEXT:    ;;#ASMSTART7947; GFX942-NEXT:    ; use s[8:9]7948; GFX942-NEXT:    ;;#ASMEND7949; GFX942-NEXT:    s_setpc_b64 s[30:31]7950  %vec0 = call <4 x i16> asm "; def $0", "=s"()7951  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 1, i32 poison, i32 poison>7952  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>7953  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)7954  ret void7955}7956 7957define void @s_shuffle_v3i16_v4i16__2_u_u() {7958; GFX900-LABEL: s_shuffle_v3i16_v4i16__2_u_u:7959; GFX900:       ; %bb.0:7960; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7961; GFX900-NEXT:    ;;#ASMSTART7962; GFX900-NEXT:    ; def s[4:5]7963; GFX900-NEXT:    ;;#ASMEND7964; GFX900-NEXT:    s_mov_b32 s8, s57965; GFX900-NEXT:    ;;#ASMSTART7966; GFX900-NEXT:    ; use s[8:9]7967; GFX900-NEXT:    ;;#ASMEND7968; GFX900-NEXT:    s_setpc_b64 s[30:31]7969;7970; GFX90A-LABEL: s_shuffle_v3i16_v4i16__2_u_u:7971; GFX90A:       ; %bb.0:7972; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7973; GFX90A-NEXT:    ;;#ASMSTART7974; GFX90A-NEXT:    ; def s[4:5]7975; GFX90A-NEXT:    ;;#ASMEND7976; GFX90A-NEXT:    s_mov_b32 s8, s57977; GFX90A-NEXT:    ;;#ASMSTART7978; GFX90A-NEXT:    ; use s[8:9]7979; GFX90A-NEXT:    ;;#ASMEND7980; GFX90A-NEXT:    s_setpc_b64 s[30:31]7981;7982; GFX942-LABEL: s_shuffle_v3i16_v4i16__2_u_u:7983; GFX942:       ; %bb.0:7984; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7985; GFX942-NEXT:    ;;#ASMSTART7986; GFX942-NEXT:    ; def s[0:1]7987; GFX942-NEXT:    ;;#ASMEND7988; GFX942-NEXT:    s_mov_b32 s8, s17989; GFX942-NEXT:    ;;#ASMSTART7990; GFX942-NEXT:    ; use s[8:9]7991; GFX942-NEXT:    ;;#ASMEND7992; GFX942-NEXT:    s_setpc_b64 s[30:31]7993  %vec0 = call <4 x i16> asm "; def $0", "=s"()7994  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 2, i32 poison, i32 poison>7995  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>7996  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)7997  ret void7998}7999 8000define void @s_shuffle_v3i16_v4i16__3_u_u() {8001; GFX900-LABEL: s_shuffle_v3i16_v4i16__3_u_u:8002; GFX900:       ; %bb.0:8003; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8004; GFX900-NEXT:    ;;#ASMSTART8005; GFX900-NEXT:    ; def s[4:5]8006; GFX900-NEXT:    ;;#ASMEND8007; GFX900-NEXT:    s_lshr_b32 s8, s5, 168008; GFX900-NEXT:    ;;#ASMSTART8009; GFX900-NEXT:    ; use s[8:9]8010; GFX900-NEXT:    ;;#ASMEND8011; GFX900-NEXT:    s_setpc_b64 s[30:31]8012;8013; GFX90A-LABEL: s_shuffle_v3i16_v4i16__3_u_u:8014; GFX90A:       ; %bb.0:8015; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8016; GFX90A-NEXT:    ;;#ASMSTART8017; GFX90A-NEXT:    ; def s[4:5]8018; GFX90A-NEXT:    ;;#ASMEND8019; GFX90A-NEXT:    s_lshr_b32 s8, s5, 168020; GFX90A-NEXT:    ;;#ASMSTART8021; GFX90A-NEXT:    ; use s[8:9]8022; GFX90A-NEXT:    ;;#ASMEND8023; GFX90A-NEXT:    s_setpc_b64 s[30:31]8024;8025; GFX942-LABEL: s_shuffle_v3i16_v4i16__3_u_u:8026; GFX942:       ; %bb.0:8027; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8028; GFX942-NEXT:    ;;#ASMSTART8029; GFX942-NEXT:    ; def s[0:1]8030; GFX942-NEXT:    ;;#ASMEND8031; GFX942-NEXT:    s_lshr_b32 s8, s1, 168032; GFX942-NEXT:    ;;#ASMSTART8033; GFX942-NEXT:    ; use s[8:9]8034; GFX942-NEXT:    ;;#ASMEND8035; GFX942-NEXT:    s_setpc_b64 s[30:31]8036  %vec0 = call <4 x i16> asm "; def $0", "=s"()8037  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 3, i32 poison, i32 poison>8038  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8039  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)8040  ret void8041}8042 8043define void @s_shuffle_v3i16_v4i16__4_u_u() {8044; GFX9-LABEL: s_shuffle_v3i16_v4i16__4_u_u:8045; GFX9:       ; %bb.0:8046; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8047; GFX9-NEXT:    ;;#ASMSTART8048; GFX9-NEXT:    ; use s[8:9]8049; GFX9-NEXT:    ;;#ASMEND8050; GFX9-NEXT:    s_setpc_b64 s[30:31]8051  %vec0 = call <4 x i16> asm "; def $0", "=s"()8052  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 4, i32 poison, i32 poison>8053  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8054  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)8055  ret void8056}8057 8058define void @s_shuffle_v3i16_v4i16__5_u_u() {8059; GFX900-LABEL: s_shuffle_v3i16_v4i16__5_u_u:8060; GFX900:       ; %bb.0:8061; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8062; GFX900-NEXT:    ;;#ASMSTART8063; GFX900-NEXT:    ; def s[4:5]8064; GFX900-NEXT:    ;;#ASMEND8065; GFX900-NEXT:    s_lshr_b32 s8, s4, 168066; GFX900-NEXT:    ;;#ASMSTART8067; GFX900-NEXT:    ; use s[8:9]8068; GFX900-NEXT:    ;;#ASMEND8069; GFX900-NEXT:    s_setpc_b64 s[30:31]8070;8071; GFX90A-LABEL: s_shuffle_v3i16_v4i16__5_u_u:8072; GFX90A:       ; %bb.0:8073; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8074; GFX90A-NEXT:    ;;#ASMSTART8075; GFX90A-NEXT:    ; def s[4:5]8076; GFX90A-NEXT:    ;;#ASMEND8077; GFX90A-NEXT:    s_lshr_b32 s8, s4, 168078; GFX90A-NEXT:    ;;#ASMSTART8079; GFX90A-NEXT:    ; use s[8:9]8080; GFX90A-NEXT:    ;;#ASMEND8081; GFX90A-NEXT:    s_setpc_b64 s[30:31]8082;8083; GFX942-LABEL: s_shuffle_v3i16_v4i16__5_u_u:8084; GFX942:       ; %bb.0:8085; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8086; GFX942-NEXT:    ;;#ASMSTART8087; GFX942-NEXT:    ; def s[0:1]8088; GFX942-NEXT:    ;;#ASMEND8089; GFX942-NEXT:    s_lshr_b32 s8, s0, 168090; GFX942-NEXT:    ;;#ASMSTART8091; GFX942-NEXT:    ; use s[8:9]8092; GFX942-NEXT:    ;;#ASMEND8093; GFX942-NEXT:    s_setpc_b64 s[30:31]8094  %vec0 = call <4 x i16> asm "; def $0", "=s"()8095  %vec1 = call <4 x i16> asm "; def $0", "=s"()8096  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 5, i32 poison, i32 poison>8097  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8098  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)8099  ret void8100}8101 8102define void @s_shuffle_v3i16_v4i16__6_u_u() {8103; GFX900-LABEL: s_shuffle_v3i16_v4i16__6_u_u:8104; GFX900:       ; %bb.0:8105; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8106; GFX900-NEXT:    ;;#ASMSTART8107; GFX900-NEXT:    ; def s[4:5]8108; GFX900-NEXT:    ;;#ASMEND8109; GFX900-NEXT:    s_mov_b32 s8, s58110; GFX900-NEXT:    ;;#ASMSTART8111; GFX900-NEXT:    ; use s[8:9]8112; GFX900-NEXT:    ;;#ASMEND8113; GFX900-NEXT:    s_setpc_b64 s[30:31]8114;8115; GFX90A-LABEL: s_shuffle_v3i16_v4i16__6_u_u:8116; GFX90A:       ; %bb.0:8117; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8118; GFX90A-NEXT:    ;;#ASMSTART8119; GFX90A-NEXT:    ; def s[4:5]8120; GFX90A-NEXT:    ;;#ASMEND8121; GFX90A-NEXT:    s_mov_b32 s8, s58122; GFX90A-NEXT:    ;;#ASMSTART8123; GFX90A-NEXT:    ; use s[8:9]8124; GFX90A-NEXT:    ;;#ASMEND8125; GFX90A-NEXT:    s_setpc_b64 s[30:31]8126;8127; GFX942-LABEL: s_shuffle_v3i16_v4i16__6_u_u:8128; GFX942:       ; %bb.0:8129; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8130; GFX942-NEXT:    ;;#ASMSTART8131; GFX942-NEXT:    ; def s[0:1]8132; GFX942-NEXT:    ;;#ASMEND8133; GFX942-NEXT:    s_mov_b32 s8, s18134; GFX942-NEXT:    ;;#ASMSTART8135; GFX942-NEXT:    ; use s[8:9]8136; GFX942-NEXT:    ;;#ASMEND8137; GFX942-NEXT:    s_setpc_b64 s[30:31]8138  %vec0 = call <4 x i16> asm "; def $0", "=s"()8139  %vec1 = call <4 x i16> asm "; def $0", "=s"()8140  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 6, i32 poison, i32 poison>8141  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8142  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)8143  ret void8144}8145 8146define void @s_shuffle_v3i16_v4i16__7_u_u() {8147; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_u_u:8148; GFX900:       ; %bb.0:8149; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8150; GFX900-NEXT:    ;;#ASMSTART8151; GFX900-NEXT:    ; def s[4:5]8152; GFX900-NEXT:    ;;#ASMEND8153; GFX900-NEXT:    s_lshr_b32 s8, s5, 168154; GFX900-NEXT:    ;;#ASMSTART8155; GFX900-NEXT:    ; use s[8:9]8156; GFX900-NEXT:    ;;#ASMEND8157; GFX900-NEXT:    s_setpc_b64 s[30:31]8158;8159; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_u_u:8160; GFX90A:       ; %bb.0:8161; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8162; GFX90A-NEXT:    ;;#ASMSTART8163; GFX90A-NEXT:    ; def s[4:5]8164; GFX90A-NEXT:    ;;#ASMEND8165; GFX90A-NEXT:    s_lshr_b32 s8, s5, 168166; GFX90A-NEXT:    ;;#ASMSTART8167; GFX90A-NEXT:    ; use s[8:9]8168; GFX90A-NEXT:    ;;#ASMEND8169; GFX90A-NEXT:    s_setpc_b64 s[30:31]8170;8171; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_u_u:8172; GFX942:       ; %bb.0:8173; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8174; GFX942-NEXT:    ;;#ASMSTART8175; GFX942-NEXT:    ; def s[0:1]8176; GFX942-NEXT:    ;;#ASMEND8177; GFX942-NEXT:    s_lshr_b32 s8, s1, 168178; GFX942-NEXT:    ;;#ASMSTART8179; GFX942-NEXT:    ; use s[8:9]8180; GFX942-NEXT:    ;;#ASMEND8181; GFX942-NEXT:    s_setpc_b64 s[30:31]8182  %vec0 = call <4 x i16> asm "; def $0", "=s"()8183  %vec1 = call <4 x i16> asm "; def $0", "=s"()8184  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 poison, i32 poison>8185  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8186  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)8187  ret void8188}8189 8190define void @s_shuffle_v3i16_v4i16__7_0_u() {8191; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_0_u:8192; GFX900:       ; %bb.0:8193; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8194; GFX900-NEXT:    ;;#ASMSTART8195; GFX900-NEXT:    ; def s[4:5]8196; GFX900-NEXT:    ;;#ASMEND8197; GFX900-NEXT:    ;;#ASMSTART8198; GFX900-NEXT:    ; def s[6:7]8199; GFX900-NEXT:    ;;#ASMEND8200; GFX900-NEXT:    s_lshr_b32 s5, s7, 168201; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s48202; GFX900-NEXT:    ;;#ASMSTART8203; GFX900-NEXT:    ; use s[8:9]8204; GFX900-NEXT:    ;;#ASMEND8205; GFX900-NEXT:    s_setpc_b64 s[30:31]8206;8207; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_0_u:8208; GFX90A:       ; %bb.0:8209; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8210; GFX90A-NEXT:    ;;#ASMSTART8211; GFX90A-NEXT:    ; def s[4:5]8212; GFX90A-NEXT:    ;;#ASMEND8213; GFX90A-NEXT:    ;;#ASMSTART8214; GFX90A-NEXT:    ; def s[6:7]8215; GFX90A-NEXT:    ;;#ASMEND8216; GFX90A-NEXT:    s_lshr_b32 s5, s7, 168217; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s48218; GFX90A-NEXT:    ;;#ASMSTART8219; GFX90A-NEXT:    ; use s[8:9]8220; GFX90A-NEXT:    ;;#ASMEND8221; GFX90A-NEXT:    s_setpc_b64 s[30:31]8222;8223; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_0_u:8224; GFX942:       ; %bb.0:8225; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8226; GFX942-NEXT:    ;;#ASMSTART8227; GFX942-NEXT:    ; def s[0:1]8228; GFX942-NEXT:    ;;#ASMEND8229; GFX942-NEXT:    ;;#ASMSTART8230; GFX942-NEXT:    ; def s[2:3]8231; GFX942-NEXT:    ;;#ASMEND8232; GFX942-NEXT:    s_lshr_b32 s1, s3, 168233; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s08234; GFX942-NEXT:    ;;#ASMSTART8235; GFX942-NEXT:    ; use s[8:9]8236; GFX942-NEXT:    ;;#ASMEND8237; GFX942-NEXT:    s_setpc_b64 s[30:31]8238  %vec0 = call <4 x i16> asm "; def $0", "=s"()8239  %vec1 = call <4 x i16> asm "; def $0", "=s"()8240  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 0, i32 poison>8241  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8242  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)8243  ret void8244}8245 8246define void @s_shuffle_v3i16_v4i16__7_1_u() {8247; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_1_u:8248; GFX900:       ; %bb.0:8249; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8250; GFX900-NEXT:    ;;#ASMSTART8251; GFX900-NEXT:    ; def s[4:5]8252; GFX900-NEXT:    ;;#ASMEND8253; GFX900-NEXT:    ;;#ASMSTART8254; GFX900-NEXT:    ; def s[6:7]8255; GFX900-NEXT:    ;;#ASMEND8256; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s7, s48257; GFX900-NEXT:    ;;#ASMSTART8258; GFX900-NEXT:    ; use s[8:9]8259; GFX900-NEXT:    ;;#ASMEND8260; GFX900-NEXT:    s_setpc_b64 s[30:31]8261;8262; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_1_u:8263; GFX90A:       ; %bb.0:8264; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8265; GFX90A-NEXT:    ;;#ASMSTART8266; GFX90A-NEXT:    ; def s[4:5]8267; GFX90A-NEXT:    ;;#ASMEND8268; GFX90A-NEXT:    ;;#ASMSTART8269; GFX90A-NEXT:    ; def s[6:7]8270; GFX90A-NEXT:    ;;#ASMEND8271; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s7, s48272; GFX90A-NEXT:    ;;#ASMSTART8273; GFX90A-NEXT:    ; use s[8:9]8274; GFX90A-NEXT:    ;;#ASMEND8275; GFX90A-NEXT:    s_setpc_b64 s[30:31]8276;8277; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_1_u:8278; GFX942:       ; %bb.0:8279; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8280; GFX942-NEXT:    ;;#ASMSTART8281; GFX942-NEXT:    ; def s[0:1]8282; GFX942-NEXT:    ;;#ASMEND8283; GFX942-NEXT:    ;;#ASMSTART8284; GFX942-NEXT:    ; def s[2:3]8285; GFX942-NEXT:    ;;#ASMEND8286; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s3, s08287; GFX942-NEXT:    ;;#ASMSTART8288; GFX942-NEXT:    ; use s[8:9]8289; GFX942-NEXT:    ;;#ASMEND8290; GFX942-NEXT:    s_setpc_b64 s[30:31]8291  %vec0 = call <4 x i16> asm "; def $0", "=s"()8292  %vec1 = call <4 x i16> asm "; def $0", "=s"()8293  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 1, i32 poison>8294  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8295  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)8296  ret void8297}8298 8299define void @s_shuffle_v3i16_v4i16__7_2_u() {8300; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_2_u:8301; GFX900:       ; %bb.0:8302; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8303; GFX900-NEXT:    ;;#ASMSTART8304; GFX900-NEXT:    ; def s[4:5]8305; GFX900-NEXT:    ;;#ASMEND8306; GFX900-NEXT:    ;;#ASMSTART8307; GFX900-NEXT:    ; def s[6:7]8308; GFX900-NEXT:    ;;#ASMEND8309; GFX900-NEXT:    s_lshr_b32 s4, s7, 168310; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s58311; GFX900-NEXT:    ;;#ASMSTART8312; GFX900-NEXT:    ; use s[8:9]8313; GFX900-NEXT:    ;;#ASMEND8314; GFX900-NEXT:    s_setpc_b64 s[30:31]8315;8316; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_2_u:8317; GFX90A:       ; %bb.0:8318; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8319; GFX90A-NEXT:    ;;#ASMSTART8320; GFX90A-NEXT:    ; def s[4:5]8321; GFX90A-NEXT:    ;;#ASMEND8322; GFX90A-NEXT:    ;;#ASMSTART8323; GFX90A-NEXT:    ; def s[6:7]8324; GFX90A-NEXT:    ;;#ASMEND8325; GFX90A-NEXT:    s_lshr_b32 s4, s7, 168326; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s58327; GFX90A-NEXT:    ;;#ASMSTART8328; GFX90A-NEXT:    ; use s[8:9]8329; GFX90A-NEXT:    ;;#ASMEND8330; GFX90A-NEXT:    s_setpc_b64 s[30:31]8331;8332; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_2_u:8333; GFX942:       ; %bb.0:8334; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8335; GFX942-NEXT:    ;;#ASMSTART8336; GFX942-NEXT:    ; def s[0:1]8337; GFX942-NEXT:    ;;#ASMEND8338; GFX942-NEXT:    ;;#ASMSTART8339; GFX942-NEXT:    ; def s[2:3]8340; GFX942-NEXT:    ;;#ASMEND8341; GFX942-NEXT:    s_lshr_b32 s0, s3, 168342; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s18343; GFX942-NEXT:    ;;#ASMSTART8344; GFX942-NEXT:    ; use s[8:9]8345; GFX942-NEXT:    ;;#ASMEND8346; GFX942-NEXT:    s_setpc_b64 s[30:31]8347  %vec0 = call <4 x i16> asm "; def $0", "=s"()8348  %vec1 = call <4 x i16> asm "; def $0", "=s"()8349  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 2, i32 poison>8350  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8351  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)8352  ret void8353}8354 8355define void @s_shuffle_v3i16_v4i16__7_3_u() {8356; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_3_u:8357; GFX900:       ; %bb.0:8358; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8359; GFX900-NEXT:    ;;#ASMSTART8360; GFX900-NEXT:    ; def s[4:5]8361; GFX900-NEXT:    ;;#ASMEND8362; GFX900-NEXT:    ;;#ASMSTART8363; GFX900-NEXT:    ; def s[6:7]8364; GFX900-NEXT:    ;;#ASMEND8365; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s7, s58366; GFX900-NEXT:    ;;#ASMSTART8367; GFX900-NEXT:    ; use s[8:9]8368; GFX900-NEXT:    ;;#ASMEND8369; GFX900-NEXT:    s_setpc_b64 s[30:31]8370;8371; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_3_u:8372; GFX90A:       ; %bb.0:8373; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8374; GFX90A-NEXT:    ;;#ASMSTART8375; GFX90A-NEXT:    ; def s[4:5]8376; GFX90A-NEXT:    ;;#ASMEND8377; GFX90A-NEXT:    ;;#ASMSTART8378; GFX90A-NEXT:    ; def s[6:7]8379; GFX90A-NEXT:    ;;#ASMEND8380; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s7, s58381; GFX90A-NEXT:    ;;#ASMSTART8382; GFX90A-NEXT:    ; use s[8:9]8383; GFX90A-NEXT:    ;;#ASMEND8384; GFX90A-NEXT:    s_setpc_b64 s[30:31]8385;8386; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_3_u:8387; GFX942:       ; %bb.0:8388; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8389; GFX942-NEXT:    ;;#ASMSTART8390; GFX942-NEXT:    ; def s[0:1]8391; GFX942-NEXT:    ;;#ASMEND8392; GFX942-NEXT:    ;;#ASMSTART8393; GFX942-NEXT:    ; def s[2:3]8394; GFX942-NEXT:    ;;#ASMEND8395; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s3, s18396; GFX942-NEXT:    ;;#ASMSTART8397; GFX942-NEXT:    ; use s[8:9]8398; GFX942-NEXT:    ;;#ASMEND8399; GFX942-NEXT:    s_setpc_b64 s[30:31]8400  %vec0 = call <4 x i16> asm "; def $0", "=s"()8401  %vec1 = call <4 x i16> asm "; def $0", "=s"()8402  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 3, i32 poison>8403  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8404  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)8405  ret void8406}8407 8408define void @s_shuffle_v3i16_v4i16__7_4_u() {8409; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_4_u:8410; GFX900:       ; %bb.0:8411; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8412; GFX900-NEXT:    ;;#ASMSTART8413; GFX900-NEXT:    ; def s[4:5]8414; GFX900-NEXT:    ;;#ASMEND8415; GFX900-NEXT:    s_lshr_b32 s5, s5, 168416; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s48417; GFX900-NEXT:    ;;#ASMSTART8418; GFX900-NEXT:    ; use s[8:9]8419; GFX900-NEXT:    ;;#ASMEND8420; GFX900-NEXT:    s_setpc_b64 s[30:31]8421;8422; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_4_u:8423; GFX90A:       ; %bb.0:8424; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8425; GFX90A-NEXT:    ;;#ASMSTART8426; GFX90A-NEXT:    ; def s[4:5]8427; GFX90A-NEXT:    ;;#ASMEND8428; GFX90A-NEXT:    s_lshr_b32 s5, s5, 168429; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s48430; GFX90A-NEXT:    ;;#ASMSTART8431; GFX90A-NEXT:    ; use s[8:9]8432; GFX90A-NEXT:    ;;#ASMEND8433; GFX90A-NEXT:    s_setpc_b64 s[30:31]8434;8435; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_4_u:8436; GFX942:       ; %bb.0:8437; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8438; GFX942-NEXT:    ;;#ASMSTART8439; GFX942-NEXT:    ; def s[0:1]8440; GFX942-NEXT:    ;;#ASMEND8441; GFX942-NEXT:    s_lshr_b32 s1, s1, 168442; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s08443; GFX942-NEXT:    ;;#ASMSTART8444; GFX942-NEXT:    ; use s[8:9]8445; GFX942-NEXT:    ;;#ASMEND8446; GFX942-NEXT:    s_setpc_b64 s[30:31]8447  %vec0 = call <4 x i16> asm "; def $0", "=s"()8448  %vec1 = call <4 x i16> asm "; def $0", "=s"()8449  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 4, i32 poison>8450  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8451  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)8452  ret void8453}8454 8455define void @s_shuffle_v3i16_v4i16__7_5_u() {8456; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_5_u:8457; GFX900:       ; %bb.0:8458; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8459; GFX900-NEXT:    ;;#ASMSTART8460; GFX900-NEXT:    ; def s[4:5]8461; GFX900-NEXT:    ;;#ASMEND8462; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s48463; GFX900-NEXT:    ;;#ASMSTART8464; GFX900-NEXT:    ; use s[8:9]8465; GFX900-NEXT:    ;;#ASMEND8466; GFX900-NEXT:    s_setpc_b64 s[30:31]8467;8468; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_5_u:8469; GFX90A:       ; %bb.0:8470; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8471; GFX90A-NEXT:    ;;#ASMSTART8472; GFX90A-NEXT:    ; def s[4:5]8473; GFX90A-NEXT:    ;;#ASMEND8474; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s48475; GFX90A-NEXT:    ;;#ASMSTART8476; GFX90A-NEXT:    ; use s[8:9]8477; GFX90A-NEXT:    ;;#ASMEND8478; GFX90A-NEXT:    s_setpc_b64 s[30:31]8479;8480; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_5_u:8481; GFX942:       ; %bb.0:8482; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8483; GFX942-NEXT:    ;;#ASMSTART8484; GFX942-NEXT:    ; def s[0:1]8485; GFX942-NEXT:    ;;#ASMEND8486; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s08487; GFX942-NEXT:    ;;#ASMSTART8488; GFX942-NEXT:    ; use s[8:9]8489; GFX942-NEXT:    ;;#ASMEND8490; GFX942-NEXT:    s_setpc_b64 s[30:31]8491  %vec0 = call <4 x i16> asm "; def $0", "=s"()8492  %vec1 = call <4 x i16> asm "; def $0", "=s"()8493  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 5, i32 poison>8494  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8495  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)8496  ret void8497}8498 8499define void @s_shuffle_v3i16_v4i16__7_6_u() {8500; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_6_u:8501; GFX900:       ; %bb.0:8502; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8503; GFX900-NEXT:    ;;#ASMSTART8504; GFX900-NEXT:    ; def s[4:5]8505; GFX900-NEXT:    ;;#ASMEND8506; GFX900-NEXT:    s_lshr_b32 s4, s5, 168507; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s58508; GFX900-NEXT:    ;;#ASMSTART8509; GFX900-NEXT:    ; use s[8:9]8510; GFX900-NEXT:    ;;#ASMEND8511; GFX900-NEXT:    s_setpc_b64 s[30:31]8512;8513; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_6_u:8514; GFX90A:       ; %bb.0:8515; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8516; GFX90A-NEXT:    ;;#ASMSTART8517; GFX90A-NEXT:    ; def s[4:5]8518; GFX90A-NEXT:    ;;#ASMEND8519; GFX90A-NEXT:    s_lshr_b32 s4, s5, 168520; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s58521; GFX90A-NEXT:    ;;#ASMSTART8522; GFX90A-NEXT:    ; use s[8:9]8523; GFX90A-NEXT:    ;;#ASMEND8524; GFX90A-NEXT:    s_setpc_b64 s[30:31]8525;8526; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_6_u:8527; GFX942:       ; %bb.0:8528; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8529; GFX942-NEXT:    ;;#ASMSTART8530; GFX942-NEXT:    ; def s[0:1]8531; GFX942-NEXT:    ;;#ASMEND8532; GFX942-NEXT:    s_lshr_b32 s0, s1, 168533; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s18534; GFX942-NEXT:    ;;#ASMSTART8535; GFX942-NEXT:    ; use s[8:9]8536; GFX942-NEXT:    ;;#ASMEND8537; GFX942-NEXT:    s_setpc_b64 s[30:31]8538  %vec0 = call <4 x i16> asm "; def $0", "=s"()8539  %vec1 = call <4 x i16> asm "; def $0", "=s"()8540  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 6, i32 poison>8541  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8542  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)8543  ret void8544}8545 8546define void @s_shuffle_v3i16_v4i16__7_7_u() {8547; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_7_u:8548; GFX900:       ; %bb.0:8549; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8550; GFX900-NEXT:    ;;#ASMSTART8551; GFX900-NEXT:    ; def s[4:5]8552; GFX900-NEXT:    ;;#ASMEND8553; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s58554; GFX900-NEXT:    ;;#ASMSTART8555; GFX900-NEXT:    ; use s[8:9]8556; GFX900-NEXT:    ;;#ASMEND8557; GFX900-NEXT:    s_setpc_b64 s[30:31]8558;8559; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_7_u:8560; GFX90A:       ; %bb.0:8561; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8562; GFX90A-NEXT:    ;;#ASMSTART8563; GFX90A-NEXT:    ; def s[4:5]8564; GFX90A-NEXT:    ;;#ASMEND8565; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s58566; GFX90A-NEXT:    ;;#ASMSTART8567; GFX90A-NEXT:    ; use s[8:9]8568; GFX90A-NEXT:    ;;#ASMEND8569; GFX90A-NEXT:    s_setpc_b64 s[30:31]8570;8571; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_7_u:8572; GFX942:       ; %bb.0:8573; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8574; GFX942-NEXT:    ;;#ASMSTART8575; GFX942-NEXT:    ; def s[0:1]8576; GFX942-NEXT:    ;;#ASMEND8577; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s18578; GFX942-NEXT:    ;;#ASMSTART8579; GFX942-NEXT:    ; use s[8:9]8580; GFX942-NEXT:    ;;#ASMEND8581; GFX942-NEXT:    s_setpc_b64 s[30:31]8582  %vec0 = call <4 x i16> asm "; def $0", "=s"()8583  %vec1 = call <4 x i16> asm "; def $0", "=s"()8584  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 7, i32 poison>8585  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8586  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)8587  ret void8588}8589 8590define void @s_shuffle_v3i16_v4i16__7_7_0() {8591; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_7_0:8592; GFX900:       ; %bb.0:8593; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8594; GFX900-NEXT:    ;;#ASMSTART8595; GFX900-NEXT:    ; def s[4:5]8596; GFX900-NEXT:    ;;#ASMEND8597; GFX900-NEXT:    ;;#ASMSTART8598; GFX900-NEXT:    ; def s[6:7]8599; GFX900-NEXT:    ;;#ASMEND8600; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s7, s78601; GFX900-NEXT:    s_mov_b32 s9, s48602; GFX900-NEXT:    ;;#ASMSTART8603; GFX900-NEXT:    ; use s[8:9]8604; GFX900-NEXT:    ;;#ASMEND8605; GFX900-NEXT:    s_setpc_b64 s[30:31]8606;8607; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_7_0:8608; GFX90A:       ; %bb.0:8609; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8610; GFX90A-NEXT:    ;;#ASMSTART8611; GFX90A-NEXT:    ; def s[4:5]8612; GFX90A-NEXT:    ;;#ASMEND8613; GFX90A-NEXT:    ;;#ASMSTART8614; GFX90A-NEXT:    ; def s[6:7]8615; GFX90A-NEXT:    ;;#ASMEND8616; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s7, s78617; GFX90A-NEXT:    s_mov_b32 s9, s48618; GFX90A-NEXT:    ;;#ASMSTART8619; GFX90A-NEXT:    ; use s[8:9]8620; GFX90A-NEXT:    ;;#ASMEND8621; GFX90A-NEXT:    s_setpc_b64 s[30:31]8622;8623; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_7_0:8624; GFX942:       ; %bb.0:8625; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8626; GFX942-NEXT:    ;;#ASMSTART8627; GFX942-NEXT:    ; def s[0:1]8628; GFX942-NEXT:    ;;#ASMEND8629; GFX942-NEXT:    ;;#ASMSTART8630; GFX942-NEXT:    ; def s[2:3]8631; GFX942-NEXT:    ;;#ASMEND8632; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s3, s38633; GFX942-NEXT:    s_mov_b32 s9, s08634; GFX942-NEXT:    ;;#ASMSTART8635; GFX942-NEXT:    ; use s[8:9]8636; GFX942-NEXT:    ;;#ASMEND8637; GFX942-NEXT:    s_setpc_b64 s[30:31]8638  %vec0 = call <4 x i16> asm "; def $0", "=s"()8639  %vec1 = call <4 x i16> asm "; def $0", "=s"()8640  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 7, i32 0>8641  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8642  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)8643  ret void8644}8645 8646define void @s_shuffle_v3i16_v4i16__7_7_1() {8647; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_7_1:8648; GFX900:       ; %bb.0:8649; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8650; GFX900-NEXT:    ;;#ASMSTART8651; GFX900-NEXT:    ; def s[4:5]8652; GFX900-NEXT:    ;;#ASMEND8653; GFX900-NEXT:    ;;#ASMSTART8654; GFX900-NEXT:    ; def s[6:7]8655; GFX900-NEXT:    ;;#ASMEND8656; GFX900-NEXT:    s_lshr_b32 s9, s4, 168657; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s7, s78658; GFX900-NEXT:    ;;#ASMSTART8659; GFX900-NEXT:    ; use s[8:9]8660; GFX900-NEXT:    ;;#ASMEND8661; GFX900-NEXT:    s_setpc_b64 s[30:31]8662;8663; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_7_1:8664; GFX90A:       ; %bb.0:8665; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8666; GFX90A-NEXT:    ;;#ASMSTART8667; GFX90A-NEXT:    ; def s[4:5]8668; GFX90A-NEXT:    ;;#ASMEND8669; GFX90A-NEXT:    ;;#ASMSTART8670; GFX90A-NEXT:    ; def s[6:7]8671; GFX90A-NEXT:    ;;#ASMEND8672; GFX90A-NEXT:    s_lshr_b32 s9, s4, 168673; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s7, s78674; GFX90A-NEXT:    ;;#ASMSTART8675; GFX90A-NEXT:    ; use s[8:9]8676; GFX90A-NEXT:    ;;#ASMEND8677; GFX90A-NEXT:    s_setpc_b64 s[30:31]8678;8679; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_7_1:8680; GFX942:       ; %bb.0:8681; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8682; GFX942-NEXT:    ;;#ASMSTART8683; GFX942-NEXT:    ; def s[0:1]8684; GFX942-NEXT:    ;;#ASMEND8685; GFX942-NEXT:    ;;#ASMSTART8686; GFX942-NEXT:    ; def s[2:3]8687; GFX942-NEXT:    ;;#ASMEND8688; GFX942-NEXT:    s_lshr_b32 s9, s0, 168689; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s3, s38690; GFX942-NEXT:    ;;#ASMSTART8691; GFX942-NEXT:    ; use s[8:9]8692; GFX942-NEXT:    ;;#ASMEND8693; GFX942-NEXT:    s_setpc_b64 s[30:31]8694  %vec0 = call <4 x i16> asm "; def $0", "=s"()8695  %vec1 = call <4 x i16> asm "; def $0", "=s"()8696  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 7, i32 1>8697  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8698  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)8699  ret void8700}8701 8702define void @s_shuffle_v3i16_v4i16__7_7_2() {8703; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_7_2:8704; GFX900:       ; %bb.0:8705; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8706; GFX900-NEXT:    ;;#ASMSTART8707; GFX900-NEXT:    ; def s[8:9]8708; GFX900-NEXT:    ;;#ASMEND8709; GFX900-NEXT:    ;;#ASMSTART8710; GFX900-NEXT:    ; def s[4:5]8711; GFX900-NEXT:    ;;#ASMEND8712; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s58713; GFX900-NEXT:    ;;#ASMSTART8714; GFX900-NEXT:    ; use s[8:9]8715; GFX900-NEXT:    ;;#ASMEND8716; GFX900-NEXT:    s_setpc_b64 s[30:31]8717;8718; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_7_2:8719; GFX90A:       ; %bb.0:8720; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8721; GFX90A-NEXT:    ;;#ASMSTART8722; GFX90A-NEXT:    ; def s[8:9]8723; GFX90A-NEXT:    ;;#ASMEND8724; GFX90A-NEXT:    ;;#ASMSTART8725; GFX90A-NEXT:    ; def s[4:5]8726; GFX90A-NEXT:    ;;#ASMEND8727; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s58728; GFX90A-NEXT:    ;;#ASMSTART8729; GFX90A-NEXT:    ; use s[8:9]8730; GFX90A-NEXT:    ;;#ASMEND8731; GFX90A-NEXT:    s_setpc_b64 s[30:31]8732;8733; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_7_2:8734; GFX942:       ; %bb.0:8735; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8736; GFX942-NEXT:    ;;#ASMSTART8737; GFX942-NEXT:    ; def s[8:9]8738; GFX942-NEXT:    ;;#ASMEND8739; GFX942-NEXT:    ;;#ASMSTART8740; GFX942-NEXT:    ; def s[0:1]8741; GFX942-NEXT:    ;;#ASMEND8742; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s18743; GFX942-NEXT:    ;;#ASMSTART8744; GFX942-NEXT:    ; use s[8:9]8745; GFX942-NEXT:    ;;#ASMEND8746; GFX942-NEXT:    s_setpc_b64 s[30:31]8747  %vec0 = call <4 x i16> asm "; def $0", "=s"()8748  %vec1 = call <4 x i16> asm "; def $0", "=s"()8749  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 7, i32 2>8750  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8751  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)8752  ret void8753}8754 8755define void @s_shuffle_v3i16_v4i16__7_7_3() {8756; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_7_3:8757; GFX900:       ; %bb.0:8758; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8759; GFX900-NEXT:    ;;#ASMSTART8760; GFX900-NEXT:    ; def s[4:5]8761; GFX900-NEXT:    ;;#ASMEND8762; GFX900-NEXT:    ;;#ASMSTART8763; GFX900-NEXT:    ; def s[6:7]8764; GFX900-NEXT:    ;;#ASMEND8765; GFX900-NEXT:    s_lshr_b32 s9, s5, 168766; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s7, s78767; GFX900-NEXT:    ;;#ASMSTART8768; GFX900-NEXT:    ; use s[8:9]8769; GFX900-NEXT:    ;;#ASMEND8770; GFX900-NEXT:    s_setpc_b64 s[30:31]8771;8772; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_7_3:8773; GFX90A:       ; %bb.0:8774; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8775; GFX90A-NEXT:    ;;#ASMSTART8776; GFX90A-NEXT:    ; def s[4:5]8777; GFX90A-NEXT:    ;;#ASMEND8778; GFX90A-NEXT:    ;;#ASMSTART8779; GFX90A-NEXT:    ; def s[6:7]8780; GFX90A-NEXT:    ;;#ASMEND8781; GFX90A-NEXT:    s_lshr_b32 s9, s5, 168782; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s7, s78783; GFX90A-NEXT:    ;;#ASMSTART8784; GFX90A-NEXT:    ; use s[8:9]8785; GFX90A-NEXT:    ;;#ASMEND8786; GFX90A-NEXT:    s_setpc_b64 s[30:31]8787;8788; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_7_3:8789; GFX942:       ; %bb.0:8790; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8791; GFX942-NEXT:    ;;#ASMSTART8792; GFX942-NEXT:    ; def s[0:1]8793; GFX942-NEXT:    ;;#ASMEND8794; GFX942-NEXT:    ;;#ASMSTART8795; GFX942-NEXT:    ; def s[2:3]8796; GFX942-NEXT:    ;;#ASMEND8797; GFX942-NEXT:    s_lshr_b32 s9, s1, 168798; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s3, s38799; GFX942-NEXT:    ;;#ASMSTART8800; GFX942-NEXT:    ; use s[8:9]8801; GFX942-NEXT:    ;;#ASMEND8802; GFX942-NEXT:    s_setpc_b64 s[30:31]8803  %vec0 = call <4 x i16> asm "; def $0", "=s"()8804  %vec1 = call <4 x i16> asm "; def $0", "=s"()8805  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 7, i32 3>8806  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8807  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)8808  ret void8809}8810 8811define void @s_shuffle_v3i16_v4i16__7_7_4() {8812; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_7_4:8813; GFX900:       ; %bb.0:8814; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8815; GFX900-NEXT:    ;;#ASMSTART8816; GFX900-NEXT:    ; def s[4:5]8817; GFX900-NEXT:    ;;#ASMEND8818; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s58819; GFX900-NEXT:    s_mov_b32 s9, s48820; GFX900-NEXT:    ;;#ASMSTART8821; GFX900-NEXT:    ; use s[8:9]8822; GFX900-NEXT:    ;;#ASMEND8823; GFX900-NEXT:    s_setpc_b64 s[30:31]8824;8825; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_7_4:8826; GFX90A:       ; %bb.0:8827; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8828; GFX90A-NEXT:    ;;#ASMSTART8829; GFX90A-NEXT:    ; def s[4:5]8830; GFX90A-NEXT:    ;;#ASMEND8831; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s58832; GFX90A-NEXT:    s_mov_b32 s9, s48833; GFX90A-NEXT:    ;;#ASMSTART8834; GFX90A-NEXT:    ; use s[8:9]8835; GFX90A-NEXT:    ;;#ASMEND8836; GFX90A-NEXT:    s_setpc_b64 s[30:31]8837;8838; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_7_4:8839; GFX942:       ; %bb.0:8840; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8841; GFX942-NEXT:    ;;#ASMSTART8842; GFX942-NEXT:    ; def s[0:1]8843; GFX942-NEXT:    ;;#ASMEND8844; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s18845; GFX942-NEXT:    s_mov_b32 s9, s08846; GFX942-NEXT:    ;;#ASMSTART8847; GFX942-NEXT:    ; use s[8:9]8848; GFX942-NEXT:    ;;#ASMEND8849; GFX942-NEXT:    s_setpc_b64 s[30:31]8850  %vec0 = call <4 x i16> asm "; def $0", "=s"()8851  %vec1 = call <4 x i16> asm "; def $0", "=s"()8852  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 7, i32 4>8853  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8854  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)8855  ret void8856}8857 8858define void @s_shuffle_v3i16_v4i16__7_7_5() {8859; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_7_5:8860; GFX900:       ; %bb.0:8861; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8862; GFX900-NEXT:    ;;#ASMSTART8863; GFX900-NEXT:    ; def s[4:5]8864; GFX900-NEXT:    ;;#ASMEND8865; GFX900-NEXT:    s_lshr_b32 s9, s4, 168866; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s58867; GFX900-NEXT:    ;;#ASMSTART8868; GFX900-NEXT:    ; use s[8:9]8869; GFX900-NEXT:    ;;#ASMEND8870; GFX900-NEXT:    s_setpc_b64 s[30:31]8871;8872; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_7_5:8873; GFX90A:       ; %bb.0:8874; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8875; GFX90A-NEXT:    ;;#ASMSTART8876; GFX90A-NEXT:    ; def s[4:5]8877; GFX90A-NEXT:    ;;#ASMEND8878; GFX90A-NEXT:    s_lshr_b32 s9, s4, 168879; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s58880; GFX90A-NEXT:    ;;#ASMSTART8881; GFX90A-NEXT:    ; use s[8:9]8882; GFX90A-NEXT:    ;;#ASMEND8883; GFX90A-NEXT:    s_setpc_b64 s[30:31]8884;8885; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_7_5:8886; GFX942:       ; %bb.0:8887; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8888; GFX942-NEXT:    ;;#ASMSTART8889; GFX942-NEXT:    ; def s[0:1]8890; GFX942-NEXT:    ;;#ASMEND8891; GFX942-NEXT:    s_lshr_b32 s9, s0, 168892; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s18893; GFX942-NEXT:    ;;#ASMSTART8894; GFX942-NEXT:    ; use s[8:9]8895; GFX942-NEXT:    ;;#ASMEND8896; GFX942-NEXT:    s_setpc_b64 s[30:31]8897  %vec0 = call <4 x i16> asm "; def $0", "=s"()8898  %vec1 = call <4 x i16> asm "; def $0", "=s"()8899  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 7, i32 5>8900  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8901  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)8902  ret void8903}8904 8905define void @s_shuffle_v3i16_v4i16__7_7_6() {8906; GFX9-LABEL: s_shuffle_v3i16_v4i16__7_7_6:8907; GFX9:       ; %bb.0:8908; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8909; GFX9-NEXT:    ;;#ASMSTART8910; GFX9-NEXT:    ; def s[8:9]8911; GFX9-NEXT:    ;;#ASMEND8912; GFX9-NEXT:    s_pack_hh_b32_b16 s8, s9, s98913; GFX9-NEXT:    ;;#ASMSTART8914; GFX9-NEXT:    ; use s[8:9]8915; GFX9-NEXT:    ;;#ASMEND8916; GFX9-NEXT:    s_setpc_b64 s[30:31]8917  %vec0 = call <4 x i16> asm "; def $0", "=s"()8918  %vec1 = call <4 x i16> asm "; def $0", "=s"()8919  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 7, i32 6>8920  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8921  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)8922  ret void8923}8924 8925define void @s_shuffle_v3i16_v4i16__7_7_7() {8926; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_7_7:8927; GFX900:       ; %bb.0:8928; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8929; GFX900-NEXT:    ;;#ASMSTART8930; GFX900-NEXT:    ; def s[4:5]8931; GFX900-NEXT:    ;;#ASMEND8932; GFX900-NEXT:    s_lshr_b32 s9, s5, 168933; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s58934; GFX900-NEXT:    ;;#ASMSTART8935; GFX900-NEXT:    ; use s[8:9]8936; GFX900-NEXT:    ;;#ASMEND8937; GFX900-NEXT:    s_setpc_b64 s[30:31]8938;8939; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_7_7:8940; GFX90A:       ; %bb.0:8941; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8942; GFX90A-NEXT:    ;;#ASMSTART8943; GFX90A-NEXT:    ; def s[4:5]8944; GFX90A-NEXT:    ;;#ASMEND8945; GFX90A-NEXT:    s_lshr_b32 s9, s5, 168946; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s58947; GFX90A-NEXT:    ;;#ASMSTART8948; GFX90A-NEXT:    ; use s[8:9]8949; GFX90A-NEXT:    ;;#ASMEND8950; GFX90A-NEXT:    s_setpc_b64 s[30:31]8951;8952; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_7_7:8953; GFX942:       ; %bb.0:8954; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8955; GFX942-NEXT:    ;;#ASMSTART8956; GFX942-NEXT:    ; def s[0:1]8957; GFX942-NEXT:    ;;#ASMEND8958; GFX942-NEXT:    s_lshr_b32 s9, s1, 168959; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s18960; GFX942-NEXT:    ;;#ASMSTART8961; GFX942-NEXT:    ; use s[8:9]8962; GFX942-NEXT:    ;;#ASMEND8963; GFX942-NEXT:    s_setpc_b64 s[30:31]8964  %vec0 = call <4 x i16> asm "; def $0", "=s"()8965  %vec1 = call <4 x i16> asm "; def $0", "=s"()8966  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 7, i32 7>8967  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8968  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)8969  ret void8970}8971 8972define void @s_shuffle_v3i16_v4i16__u_0_0() {8973; GFX900-LABEL: s_shuffle_v3i16_v4i16__u_0_0:8974; GFX900:       ; %bb.0:8975; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8976; GFX900-NEXT:    ;;#ASMSTART8977; GFX900-NEXT:    ; def s[4:5]8978; GFX900-NEXT:    ;;#ASMEND8979; GFX900-NEXT:    s_lshl_b32 s8, s4, 168980; GFX900-NEXT:    s_mov_b32 s9, s48981; GFX900-NEXT:    ;;#ASMSTART8982; GFX900-NEXT:    ; use s[8:9]8983; GFX900-NEXT:    ;;#ASMEND8984; GFX900-NEXT:    s_setpc_b64 s[30:31]8985;8986; GFX90A-LABEL: s_shuffle_v3i16_v4i16__u_0_0:8987; GFX90A:       ; %bb.0:8988; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8989; GFX90A-NEXT:    ;;#ASMSTART8990; GFX90A-NEXT:    ; def s[4:5]8991; GFX90A-NEXT:    ;;#ASMEND8992; GFX90A-NEXT:    s_lshl_b32 s8, s4, 168993; GFX90A-NEXT:    s_mov_b32 s9, s48994; GFX90A-NEXT:    ;;#ASMSTART8995; GFX90A-NEXT:    ; use s[8:9]8996; GFX90A-NEXT:    ;;#ASMEND8997; GFX90A-NEXT:    s_setpc_b64 s[30:31]8998;8999; GFX942-LABEL: s_shuffle_v3i16_v4i16__u_0_0:9000; GFX942:       ; %bb.0:9001; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9002; GFX942-NEXT:    ;;#ASMSTART9003; GFX942-NEXT:    ; def s[0:1]9004; GFX942-NEXT:    ;;#ASMEND9005; GFX942-NEXT:    s_lshl_b32 s8, s0, 169006; GFX942-NEXT:    s_mov_b32 s9, s09007; GFX942-NEXT:    ;;#ASMSTART9008; GFX942-NEXT:    ; use s[8:9]9009; GFX942-NEXT:    ;;#ASMEND9010; GFX942-NEXT:    s_setpc_b64 s[30:31]9011  %vec0 = call <4 x i16> asm "; def $0", "=s"()9012  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 poison, i32 0, i32 0>9013  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9014  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)9015  ret void9016}9017 9018define void @s_shuffle_v3i16_v4i16__0_0_0() {9019; GFX900-LABEL: s_shuffle_v3i16_v4i16__0_0_0:9020; GFX900:       ; %bb.0:9021; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9022; GFX900-NEXT:    ;;#ASMSTART9023; GFX900-NEXT:    ; def s[4:5]9024; GFX900-NEXT:    ;;#ASMEND9025; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s49026; GFX900-NEXT:    s_mov_b32 s9, s49027; GFX900-NEXT:    ;;#ASMSTART9028; GFX900-NEXT:    ; use s[8:9]9029; GFX900-NEXT:    ;;#ASMEND9030; GFX900-NEXT:    s_setpc_b64 s[30:31]9031;9032; GFX90A-LABEL: s_shuffle_v3i16_v4i16__0_0_0:9033; GFX90A:       ; %bb.0:9034; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9035; GFX90A-NEXT:    ;;#ASMSTART9036; GFX90A-NEXT:    ; def s[4:5]9037; GFX90A-NEXT:    ;;#ASMEND9038; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s49039; GFX90A-NEXT:    s_mov_b32 s9, s49040; GFX90A-NEXT:    ;;#ASMSTART9041; GFX90A-NEXT:    ; use s[8:9]9042; GFX90A-NEXT:    ;;#ASMEND9043; GFX90A-NEXT:    s_setpc_b64 s[30:31]9044;9045; GFX942-LABEL: s_shuffle_v3i16_v4i16__0_0_0:9046; GFX942:       ; %bb.0:9047; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9048; GFX942-NEXT:    ;;#ASMSTART9049; GFX942-NEXT:    ; def s[0:1]9050; GFX942-NEXT:    ;;#ASMEND9051; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s09052; GFX942-NEXT:    s_mov_b32 s9, s09053; GFX942-NEXT:    ;;#ASMSTART9054; GFX942-NEXT:    ; use s[8:9]9055; GFX942-NEXT:    ;;#ASMEND9056; GFX942-NEXT:    s_setpc_b64 s[30:31]9057  %vec0 = call <4 x i16> asm "; def $0", "=s"()9058  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> zeroinitializer9059  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9060  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)9061  ret void9062}9063 9064define void @s_shuffle_v3i16_v4i16__1_0_0() {9065; GFX900-LABEL: s_shuffle_v3i16_v4i16__1_0_0:9066; GFX900:       ; %bb.0:9067; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9068; GFX900-NEXT:    ;;#ASMSTART9069; GFX900-NEXT:    ; def s[4:5]9070; GFX900-NEXT:    ;;#ASMEND9071; GFX900-NEXT:    s_lshr_b32 s5, s4, 169072; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s49073; GFX900-NEXT:    s_mov_b32 s9, s49074; GFX900-NEXT:    ;;#ASMSTART9075; GFX900-NEXT:    ; use s[8:9]9076; GFX900-NEXT:    ;;#ASMEND9077; GFX900-NEXT:    s_setpc_b64 s[30:31]9078;9079; GFX90A-LABEL: s_shuffle_v3i16_v4i16__1_0_0:9080; GFX90A:       ; %bb.0:9081; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9082; GFX90A-NEXT:    ;;#ASMSTART9083; GFX90A-NEXT:    ; def s[4:5]9084; GFX90A-NEXT:    ;;#ASMEND9085; GFX90A-NEXT:    s_lshr_b32 s5, s4, 169086; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s49087; GFX90A-NEXT:    s_mov_b32 s9, s49088; GFX90A-NEXT:    ;;#ASMSTART9089; GFX90A-NEXT:    ; use s[8:9]9090; GFX90A-NEXT:    ;;#ASMEND9091; GFX90A-NEXT:    s_setpc_b64 s[30:31]9092;9093; GFX942-LABEL: s_shuffle_v3i16_v4i16__1_0_0:9094; GFX942:       ; %bb.0:9095; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9096; GFX942-NEXT:    ;;#ASMSTART9097; GFX942-NEXT:    ; def s[0:1]9098; GFX942-NEXT:    ;;#ASMEND9099; GFX942-NEXT:    s_lshr_b32 s1, s0, 169100; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s09101; GFX942-NEXT:    s_mov_b32 s9, s09102; 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  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 1, i32 0, i32 0>9108  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9109  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)9110  ret void9111}9112 9113define void @s_shuffle_v3i16_v4i16__2_0_0() {9114; GFX900-LABEL: s_shuffle_v3i16_v4i16__2_0_0:9115; GFX900:       ; %bb.0:9116; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9117; GFX900-NEXT:    ;;#ASMSTART9118; GFX900-NEXT:    ; def s[4:5]9119; GFX900-NEXT:    ;;#ASMEND9120; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s49121; GFX900-NEXT:    s_mov_b32 s9, s49122; GFX900-NEXT:    ;;#ASMSTART9123; GFX900-NEXT:    ; use s[8:9]9124; GFX900-NEXT:    ;;#ASMEND9125; GFX900-NEXT:    s_setpc_b64 s[30:31]9126;9127; GFX90A-LABEL: s_shuffle_v3i16_v4i16__2_0_0:9128; GFX90A:       ; %bb.0:9129; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9130; GFX90A-NEXT:    ;;#ASMSTART9131; GFX90A-NEXT:    ; def s[4:5]9132; GFX90A-NEXT:    ;;#ASMEND9133; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s49134; GFX90A-NEXT:    s_mov_b32 s9, s49135; GFX90A-NEXT:    ;;#ASMSTART9136; GFX90A-NEXT:    ; use s[8:9]9137; GFX90A-NEXT:    ;;#ASMEND9138; GFX90A-NEXT:    s_setpc_b64 s[30:31]9139;9140; GFX942-LABEL: s_shuffle_v3i16_v4i16__2_0_0:9141; GFX942:       ; %bb.0:9142; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9143; GFX942-NEXT:    ;;#ASMSTART9144; GFX942-NEXT:    ; def s[0:1]9145; GFX942-NEXT:    ;;#ASMEND9146; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s09147; GFX942-NEXT:    s_mov_b32 s9, s09148; GFX942-NEXT:    ;;#ASMSTART9149; GFX942-NEXT:    ; use s[8:9]9150; GFX942-NEXT:    ;;#ASMEND9151; GFX942-NEXT:    s_setpc_b64 s[30:31]9152  %vec0 = call <4 x i16> asm "; def $0", "=s"()9153  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 2, i32 0, i32 0>9154  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9155  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)9156  ret void9157}9158 9159define void @s_shuffle_v3i16_v4i16__3_0_0() {9160; GFX900-LABEL: s_shuffle_v3i16_v4i16__3_0_0:9161; GFX900:       ; %bb.0:9162; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9163; GFX900-NEXT:    ;;#ASMSTART9164; GFX900-NEXT:    ; def s[4:5]9165; GFX900-NEXT:    ;;#ASMEND9166; GFX900-NEXT:    s_lshr_b32 s5, s5, 169167; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s49168; GFX900-NEXT:    s_mov_b32 s9, s49169; GFX900-NEXT:    ;;#ASMSTART9170; GFX900-NEXT:    ; use s[8:9]9171; GFX900-NEXT:    ;;#ASMEND9172; GFX900-NEXT:    s_setpc_b64 s[30:31]9173;9174; GFX90A-LABEL: s_shuffle_v3i16_v4i16__3_0_0:9175; GFX90A:       ; %bb.0:9176; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9177; GFX90A-NEXT:    ;;#ASMSTART9178; GFX90A-NEXT:    ; def s[4:5]9179; GFX90A-NEXT:    ;;#ASMEND9180; GFX90A-NEXT:    s_lshr_b32 s5, s5, 169181; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s49182; GFX90A-NEXT:    s_mov_b32 s9, s49183; GFX90A-NEXT:    ;;#ASMSTART9184; GFX90A-NEXT:    ; use s[8:9]9185; GFX90A-NEXT:    ;;#ASMEND9186; GFX90A-NEXT:    s_setpc_b64 s[30:31]9187;9188; GFX942-LABEL: s_shuffle_v3i16_v4i16__3_0_0:9189; GFX942:       ; %bb.0:9190; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9191; GFX942-NEXT:    ;;#ASMSTART9192; GFX942-NEXT:    ; def s[0:1]9193; GFX942-NEXT:    ;;#ASMEND9194; GFX942-NEXT:    s_lshr_b32 s1, s1, 169195; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s09196; GFX942-NEXT:    s_mov_b32 s9, s09197; GFX942-NEXT:    ;;#ASMSTART9198; GFX942-NEXT:    ; use s[8:9]9199; GFX942-NEXT:    ;;#ASMEND9200; GFX942-NEXT:    s_setpc_b64 s[30:31]9201  %vec0 = call <4 x i16> asm "; def $0", "=s"()9202  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 3, i32 0, i32 0>9203  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9204  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)9205  ret void9206}9207 9208define void @s_shuffle_v3i16_v4i16__4_0_0() {9209; GFX900-LABEL: s_shuffle_v3i16_v4i16__4_0_0:9210; GFX900:       ; %bb.0:9211; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9212; GFX900-NEXT:    ;;#ASMSTART9213; GFX900-NEXT:    ; def s[4:5]9214; GFX900-NEXT:    ;;#ASMEND9215; GFX900-NEXT:    s_lshl_b32 s8, s4, 169216; GFX900-NEXT:    s_mov_b32 s9, s49217; GFX900-NEXT:    ;;#ASMSTART9218; GFX900-NEXT:    ; use s[8:9]9219; GFX900-NEXT:    ;;#ASMEND9220; GFX900-NEXT:    s_setpc_b64 s[30:31]9221;9222; GFX90A-LABEL: s_shuffle_v3i16_v4i16__4_0_0:9223; GFX90A:       ; %bb.0:9224; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9225; GFX90A-NEXT:    ;;#ASMSTART9226; GFX90A-NEXT:    ; def s[4:5]9227; GFX90A-NEXT:    ;;#ASMEND9228; GFX90A-NEXT:    s_lshl_b32 s8, s4, 169229; GFX90A-NEXT:    s_mov_b32 s9, s49230; GFX90A-NEXT:    ;;#ASMSTART9231; GFX90A-NEXT:    ; use s[8:9]9232; GFX90A-NEXT:    ;;#ASMEND9233; GFX90A-NEXT:    s_setpc_b64 s[30:31]9234;9235; GFX942-LABEL: s_shuffle_v3i16_v4i16__4_0_0:9236; GFX942:       ; %bb.0:9237; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9238; GFX942-NEXT:    ;;#ASMSTART9239; GFX942-NEXT:    ; def s[0:1]9240; GFX942-NEXT:    ;;#ASMEND9241; GFX942-NEXT:    s_lshl_b32 s8, s0, 169242; GFX942-NEXT:    s_mov_b32 s9, s09243; GFX942-NEXT:    ;;#ASMSTART9244; GFX942-NEXT:    ; use s[8:9]9245; GFX942-NEXT:    ;;#ASMEND9246; GFX942-NEXT:    s_setpc_b64 s[30:31]9247  %vec0 = call <4 x i16> asm "; def $0", "=s"()9248  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 4, i32 0, i32 0>9249  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9250  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)9251  ret void9252}9253 9254define void @s_shuffle_v3i16_v4i16__5_0_0() {9255; GFX900-LABEL: s_shuffle_v3i16_v4i16__5_0_0:9256; GFX900:       ; %bb.0:9257; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9258; GFX900-NEXT:    ;;#ASMSTART9259; GFX900-NEXT:    ; def s[4:5]9260; GFX900-NEXT:    ;;#ASMEND9261; GFX900-NEXT:    ;;#ASMSTART9262; GFX900-NEXT:    ; def s[6:7]9263; GFX900-NEXT:    ;;#ASMEND9264; GFX900-NEXT:    s_lshr_b32 s5, s6, 169265; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s49266; GFX900-NEXT:    s_mov_b32 s9, s49267; GFX900-NEXT:    ;;#ASMSTART9268; GFX900-NEXT:    ; use s[8:9]9269; GFX900-NEXT:    ;;#ASMEND9270; GFX900-NEXT:    s_setpc_b64 s[30:31]9271;9272; GFX90A-LABEL: s_shuffle_v3i16_v4i16__5_0_0:9273; GFX90A:       ; %bb.0:9274; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9275; GFX90A-NEXT:    ;;#ASMSTART9276; GFX90A-NEXT:    ; def s[4:5]9277; GFX90A-NEXT:    ;;#ASMEND9278; GFX90A-NEXT:    ;;#ASMSTART9279; GFX90A-NEXT:    ; def s[6:7]9280; GFX90A-NEXT:    ;;#ASMEND9281; GFX90A-NEXT:    s_lshr_b32 s5, s6, 169282; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s49283; GFX90A-NEXT:    s_mov_b32 s9, s49284; GFX90A-NEXT:    ;;#ASMSTART9285; GFX90A-NEXT:    ; use s[8:9]9286; GFX90A-NEXT:    ;;#ASMEND9287; GFX90A-NEXT:    s_setpc_b64 s[30:31]9288;9289; GFX942-LABEL: s_shuffle_v3i16_v4i16__5_0_0:9290; GFX942:       ; %bb.0:9291; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9292; GFX942-NEXT:    ;;#ASMSTART9293; GFX942-NEXT:    ; def s[0:1]9294; GFX942-NEXT:    ;;#ASMEND9295; GFX942-NEXT:    ;;#ASMSTART9296; GFX942-NEXT:    ; def s[2:3]9297; GFX942-NEXT:    ;;#ASMEND9298; GFX942-NEXT:    s_lshr_b32 s1, s2, 169299; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s09300; GFX942-NEXT:    s_mov_b32 s9, s09301; GFX942-NEXT:    ;;#ASMSTART9302; GFX942-NEXT:    ; use s[8:9]9303; GFX942-NEXT:    ;;#ASMEND9304; GFX942-NEXT:    s_setpc_b64 s[30:31]9305  %vec0 = call <4 x i16> asm "; def $0", "=s"()9306  %vec1 = call <4 x i16> asm "; def $0", "=s"()9307  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 5, i32 0, i32 0>9308  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9309  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)9310  ret void9311}9312 9313define void @s_shuffle_v3i16_v4i16__6_0_0() {9314; GFX900-LABEL: s_shuffle_v3i16_v4i16__6_0_0:9315; GFX900:       ; %bb.0:9316; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9317; GFX900-NEXT:    ;;#ASMSTART9318; GFX900-NEXT:    ; def s[4:5]9319; GFX900-NEXT:    ;;#ASMEND9320; GFX900-NEXT:    ;;#ASMSTART9321; GFX900-NEXT:    ; def s[6:7]9322; GFX900-NEXT:    ;;#ASMEND9323; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s49324; GFX900-NEXT:    s_mov_b32 s9, s49325; GFX900-NEXT:    ;;#ASMSTART9326; GFX900-NEXT:    ; use s[8:9]9327; GFX900-NEXT:    ;;#ASMEND9328; GFX900-NEXT:    s_setpc_b64 s[30:31]9329;9330; GFX90A-LABEL: s_shuffle_v3i16_v4i16__6_0_0:9331; GFX90A:       ; %bb.0:9332; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9333; GFX90A-NEXT:    ;;#ASMSTART9334; GFX90A-NEXT:    ; def s[4:5]9335; GFX90A-NEXT:    ;;#ASMEND9336; GFX90A-NEXT:    ;;#ASMSTART9337; GFX90A-NEXT:    ; def s[6:7]9338; GFX90A-NEXT:    ;;#ASMEND9339; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s49340; GFX90A-NEXT:    s_mov_b32 s9, s49341; GFX90A-NEXT:    ;;#ASMSTART9342; GFX90A-NEXT:    ; use s[8:9]9343; GFX90A-NEXT:    ;;#ASMEND9344; GFX90A-NEXT:    s_setpc_b64 s[30:31]9345;9346; GFX942-LABEL: s_shuffle_v3i16_v4i16__6_0_0:9347; GFX942:       ; %bb.0:9348; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9349; GFX942-NEXT:    ;;#ASMSTART9350; GFX942-NEXT:    ; def s[0:1]9351; GFX942-NEXT:    ;;#ASMEND9352; GFX942-NEXT:    ;;#ASMSTART9353; GFX942-NEXT:    ; def s[2:3]9354; GFX942-NEXT:    ;;#ASMEND9355; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s09356; GFX942-NEXT:    s_mov_b32 s9, s09357; GFX942-NEXT:    ;;#ASMSTART9358; GFX942-NEXT:    ; use s[8:9]9359; GFX942-NEXT:    ;;#ASMEND9360; GFX942-NEXT:    s_setpc_b64 s[30:31]9361  %vec0 = call <4 x i16> asm "; def $0", "=s"()9362  %vec1 = call <4 x i16> asm "; def $0", "=s"()9363  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 6, i32 0, i32 0>9364  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9365  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)9366  ret void9367}9368 9369define void @s_shuffle_v3i16_v4i16__7_0_0() {9370; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_0_0:9371; GFX900:       ; %bb.0:9372; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9373; GFX900-NEXT:    ;;#ASMSTART9374; GFX900-NEXT:    ; def s[4:5]9375; GFX900-NEXT:    ;;#ASMEND9376; GFX900-NEXT:    ;;#ASMSTART9377; GFX900-NEXT:    ; def s[6:7]9378; GFX900-NEXT:    ;;#ASMEND9379; GFX900-NEXT:    s_lshr_b32 s5, s7, 169380; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s49381; GFX900-NEXT:    s_mov_b32 s9, s49382; GFX900-NEXT:    ;;#ASMSTART9383; GFX900-NEXT:    ; use s[8:9]9384; GFX900-NEXT:    ;;#ASMEND9385; GFX900-NEXT:    s_setpc_b64 s[30:31]9386;9387; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_0_0:9388; GFX90A:       ; %bb.0:9389; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9390; GFX90A-NEXT:    ;;#ASMSTART9391; GFX90A-NEXT:    ; def s[4:5]9392; GFX90A-NEXT:    ;;#ASMEND9393; GFX90A-NEXT:    ;;#ASMSTART9394; GFX90A-NEXT:    ; def s[6:7]9395; GFX90A-NEXT:    ;;#ASMEND9396; GFX90A-NEXT:    s_lshr_b32 s5, s7, 169397; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s49398; GFX90A-NEXT:    s_mov_b32 s9, s49399; GFX90A-NEXT:    ;;#ASMSTART9400; GFX90A-NEXT:    ; use s[8:9]9401; GFX90A-NEXT:    ;;#ASMEND9402; GFX90A-NEXT:    s_setpc_b64 s[30:31]9403;9404; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_0_0:9405; GFX942:       ; %bb.0:9406; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9407; GFX942-NEXT:    ;;#ASMSTART9408; GFX942-NEXT:    ; def s[0:1]9409; GFX942-NEXT:    ;;#ASMEND9410; GFX942-NEXT:    ;;#ASMSTART9411; GFX942-NEXT:    ; def s[2:3]9412; GFX942-NEXT:    ;;#ASMEND9413; GFX942-NEXT:    s_lshr_b32 s1, s3, 169414; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s09415; GFX942-NEXT:    s_mov_b32 s9, s09416; GFX942-NEXT:    ;;#ASMSTART9417; GFX942-NEXT:    ; use s[8:9]9418; GFX942-NEXT:    ;;#ASMEND9419; GFX942-NEXT:    s_setpc_b64 s[30:31]9420  %vec0 = call <4 x i16> asm "; def $0", "=s"()9421  %vec1 = call <4 x i16> asm "; def $0", "=s"()9422  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 0, i32 0>9423  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9424  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)9425  ret void9426}9427 9428define void @s_shuffle_v3i16_v4i16__7_u_0() {9429; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_u_0:9430; GFX900:       ; %bb.0:9431; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9432; GFX900-NEXT:    ;;#ASMSTART9433; GFX900-NEXT:    ; def s[4:5]9434; GFX900-NEXT:    ;;#ASMEND9435; GFX900-NEXT:    ;;#ASMSTART9436; GFX900-NEXT:    ; def s[6:7]9437; GFX900-NEXT:    ;;#ASMEND9438; GFX900-NEXT:    s_lshr_b32 s8, s7, 169439; GFX900-NEXT:    s_mov_b32 s9, s49440; GFX900-NEXT:    ;;#ASMSTART9441; GFX900-NEXT:    ; use s[8:9]9442; GFX900-NEXT:    ;;#ASMEND9443; GFX900-NEXT:    s_setpc_b64 s[30:31]9444;9445; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_u_0:9446; GFX90A:       ; %bb.0:9447; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9448; GFX90A-NEXT:    ;;#ASMSTART9449; GFX90A-NEXT:    ; def s[4:5]9450; GFX90A-NEXT:    ;;#ASMEND9451; GFX90A-NEXT:    ;;#ASMSTART9452; GFX90A-NEXT:    ; def s[6:7]9453; GFX90A-NEXT:    ;;#ASMEND9454; GFX90A-NEXT:    s_lshr_b32 s8, s7, 169455; GFX90A-NEXT:    s_mov_b32 s9, s49456; GFX90A-NEXT:    ;;#ASMSTART9457; GFX90A-NEXT:    ; use s[8:9]9458; GFX90A-NEXT:    ;;#ASMEND9459; GFX90A-NEXT:    s_setpc_b64 s[30:31]9460;9461; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_u_0:9462; GFX942:       ; %bb.0:9463; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9464; GFX942-NEXT:    ;;#ASMSTART9465; GFX942-NEXT:    ; def s[0:1]9466; GFX942-NEXT:    ;;#ASMEND9467; GFX942-NEXT:    ;;#ASMSTART9468; GFX942-NEXT:    ; def s[2:3]9469; GFX942-NEXT:    ;;#ASMEND9470; GFX942-NEXT:    s_lshr_b32 s8, s3, 169471; GFX942-NEXT:    s_mov_b32 s9, s09472; GFX942-NEXT:    ;;#ASMSTART9473; GFX942-NEXT:    ; use s[8:9]9474; GFX942-NEXT:    ;;#ASMEND9475; GFX942-NEXT:    s_setpc_b64 s[30:31]9476  %vec0 = call <4 x i16> asm "; def $0", "=s"()9477  %vec1 = call <4 x i16> asm "; def $0", "=s"()9478  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 poison, i32 0>9479  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9480  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)9481  ret void9482}9483 9484define void @s_shuffle_v3i16_v4i16__7_1_0() {9485; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_1_0:9486; GFX900:       ; %bb.0:9487; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9488; GFX900-NEXT:    ;;#ASMSTART9489; GFX900-NEXT:    ; def s[4:5]9490; GFX900-NEXT:    ;;#ASMEND9491; GFX900-NEXT:    ;;#ASMSTART9492; GFX900-NEXT:    ; def s[6:7]9493; GFX900-NEXT:    ;;#ASMEND9494; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s7, s49495; GFX900-NEXT:    s_mov_b32 s9, s49496; GFX900-NEXT:    ;;#ASMSTART9497; GFX900-NEXT:    ; use s[8:9]9498; GFX900-NEXT:    ;;#ASMEND9499; GFX900-NEXT:    s_setpc_b64 s[30:31]9500;9501; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_1_0:9502; GFX90A:       ; %bb.0:9503; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9504; GFX90A-NEXT:    ;;#ASMSTART9505; GFX90A-NEXT:    ; def s[4:5]9506; GFX90A-NEXT:    ;;#ASMEND9507; GFX90A-NEXT:    ;;#ASMSTART9508; GFX90A-NEXT:    ; def s[6:7]9509; GFX90A-NEXT:    ;;#ASMEND9510; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s7, s49511; GFX90A-NEXT:    s_mov_b32 s9, 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_v3i16_v4i16__7_1_0: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:    ;;#ASMSTART9524; GFX942-NEXT:    ; def s[2:3]9525; GFX942-NEXT:    ;;#ASMEND9526; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s3, s09527; GFX942-NEXT:    s_mov_b32 s9, s09528; GFX942-NEXT:    ;;#ASMSTART9529; GFX942-NEXT:    ; use s[8:9]9530; GFX942-NEXT:    ;;#ASMEND9531; GFX942-NEXT:    s_setpc_b64 s[30:31]9532  %vec0 = call <4 x i16> asm "; def $0", "=s"()9533  %vec1 = call <4 x i16> asm "; def $0", "=s"()9534  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 1, i32 0>9535  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9536  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)9537  ret void9538}9539 9540define void @s_shuffle_v3i16_v4i16__7_2_0() {9541; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_2_0:9542; GFX900:       ; %bb.0:9543; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9544; GFX900-NEXT:    ;;#ASMSTART9545; GFX900-NEXT:    ; def s[6:7]9546; GFX900-NEXT:    ;;#ASMEND9547; GFX900-NEXT:    s_lshr_b32 s6, s7, 169548; GFX900-NEXT:    ;;#ASMSTART9549; GFX900-NEXT:    ; def s[4:5]9550; GFX900-NEXT:    ;;#ASMEND9551; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s6, s59552; GFX900-NEXT:    s_mov_b32 s9, s49553; GFX900-NEXT:    ;;#ASMSTART9554; GFX900-NEXT:    ; use s[8:9]9555; GFX900-NEXT:    ;;#ASMEND9556; GFX900-NEXT:    s_setpc_b64 s[30:31]9557;9558; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_2_0:9559; GFX90A:       ; %bb.0:9560; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9561; GFX90A-NEXT:    ;;#ASMSTART9562; GFX90A-NEXT:    ; def s[6:7]9563; GFX90A-NEXT:    ;;#ASMEND9564; GFX90A-NEXT:    s_lshr_b32 s6, s7, 169565; GFX90A-NEXT:    ;;#ASMSTART9566; GFX90A-NEXT:    ; def s[4:5]9567; GFX90A-NEXT:    ;;#ASMEND9568; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s6, s59569; GFX90A-NEXT:    s_mov_b32 s9, s49570; GFX90A-NEXT:    ;;#ASMSTART9571; GFX90A-NEXT:    ; use s[8:9]9572; GFX90A-NEXT:    ;;#ASMEND9573; GFX90A-NEXT:    s_setpc_b64 s[30:31]9574;9575; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_2_0:9576; GFX942:       ; %bb.0:9577; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9578; GFX942-NEXT:    ;;#ASMSTART9579; GFX942-NEXT:    ; def s[2:3]9580; GFX942-NEXT:    ;;#ASMEND9581; GFX942-NEXT:    s_lshr_b32 s2, s3, 169582; GFX942-NEXT:    ;;#ASMSTART9583; GFX942-NEXT:    ; def s[0:1]9584; GFX942-NEXT:    ;;#ASMEND9585; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s2, s19586; GFX942-NEXT:    s_mov_b32 s9, s09587; GFX942-NEXT:    ;;#ASMSTART9588; GFX942-NEXT:    ; use s[8:9]9589; GFX942-NEXT:    ;;#ASMEND9590; GFX942-NEXT:    s_setpc_b64 s[30:31]9591  %vec0 = call <4 x i16> asm "; def $0", "=s"()9592  %vec1 = call <4 x i16> asm "; def $0", "=s"()9593  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 2, i32 0>9594  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9595  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)9596  ret void9597}9598 9599define void @s_shuffle_v3i16_v4i16__7_3_0() {9600; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_3_0:9601; GFX900:       ; %bb.0:9602; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9603; GFX900-NEXT:    ;;#ASMSTART9604; GFX900-NEXT:    ; def s[4:5]9605; GFX900-NEXT:    ;;#ASMEND9606; GFX900-NEXT:    ;;#ASMSTART9607; GFX900-NEXT:    ; def s[6:7]9608; GFX900-NEXT:    ;;#ASMEND9609; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s7, s59610; GFX900-NEXT:    s_mov_b32 s9, s49611; GFX900-NEXT:    ;;#ASMSTART9612; GFX900-NEXT:    ; use s[8:9]9613; GFX900-NEXT:    ;;#ASMEND9614; GFX900-NEXT:    s_setpc_b64 s[30:31]9615;9616; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_3_0:9617; GFX90A:       ; %bb.0:9618; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9619; GFX90A-NEXT:    ;;#ASMSTART9620; GFX90A-NEXT:    ; def s[4:5]9621; GFX90A-NEXT:    ;;#ASMEND9622; GFX90A-NEXT:    ;;#ASMSTART9623; GFX90A-NEXT:    ; def s[6:7]9624; GFX90A-NEXT:    ;;#ASMEND9625; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s7, s59626; GFX90A-NEXT:    s_mov_b32 s9, s49627; GFX90A-NEXT:    ;;#ASMSTART9628; GFX90A-NEXT:    ; use s[8:9]9629; GFX90A-NEXT:    ;;#ASMEND9630; GFX90A-NEXT:    s_setpc_b64 s[30:31]9631;9632; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_3_0:9633; GFX942:       ; %bb.0:9634; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9635; GFX942-NEXT:    ;;#ASMSTART9636; GFX942-NEXT:    ; def s[0:1]9637; GFX942-NEXT:    ;;#ASMEND9638; GFX942-NEXT:    ;;#ASMSTART9639; GFX942-NEXT:    ; def s[2:3]9640; GFX942-NEXT:    ;;#ASMEND9641; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s3, s19642; GFX942-NEXT:    s_mov_b32 s9, s09643; GFX942-NEXT:    ;;#ASMSTART9644; GFX942-NEXT:    ; use s[8:9]9645; GFX942-NEXT:    ;;#ASMEND9646; GFX942-NEXT:    s_setpc_b64 s[30:31]9647  %vec0 = call <4 x i16> asm "; def $0", "=s"()9648  %vec1 = call <4 x i16> asm "; def $0", "=s"()9649  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 3, i32 0>9650  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9651  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)9652  ret void9653}9654 9655define void @s_shuffle_v3i16_v4i16__7_4_0() {9656; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_4_0:9657; GFX900:       ; %bb.0:9658; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9659; GFX900-NEXT:    ;;#ASMSTART9660; GFX900-NEXT:    ; def s[4:5]9661; GFX900-NEXT:    ;;#ASMEND9662; GFX900-NEXT:    ;;#ASMSTART9663; GFX900-NEXT:    ; def s[6:7]9664; GFX900-NEXT:    ;;#ASMEND9665; GFX900-NEXT:    s_lshr_b32 s5, s7, 169666; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s69667; GFX900-NEXT:    s_mov_b32 s9, s49668; GFX900-NEXT:    ;;#ASMSTART9669; GFX900-NEXT:    ; use s[8:9]9670; GFX900-NEXT:    ;;#ASMEND9671; GFX900-NEXT:    s_setpc_b64 s[30:31]9672;9673; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_4_0:9674; GFX90A:       ; %bb.0:9675; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9676; GFX90A-NEXT:    ;;#ASMSTART9677; GFX90A-NEXT:    ; def s[4:5]9678; GFX90A-NEXT:    ;;#ASMEND9679; GFX90A-NEXT:    ;;#ASMSTART9680; GFX90A-NEXT:    ; def s[6:7]9681; GFX90A-NEXT:    ;;#ASMEND9682; GFX90A-NEXT:    s_lshr_b32 s5, s7, 169683; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s69684; GFX90A-NEXT:    s_mov_b32 s9, s49685; GFX90A-NEXT:    ;;#ASMSTART9686; GFX90A-NEXT:    ; use s[8:9]9687; GFX90A-NEXT:    ;;#ASMEND9688; GFX90A-NEXT:    s_setpc_b64 s[30:31]9689;9690; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_4_0:9691; GFX942:       ; %bb.0:9692; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9693; GFX942-NEXT:    ;;#ASMSTART9694; GFX942-NEXT:    ; def s[0:1]9695; GFX942-NEXT:    ;;#ASMEND9696; GFX942-NEXT:    ;;#ASMSTART9697; GFX942-NEXT:    ; def s[2:3]9698; GFX942-NEXT:    ;;#ASMEND9699; GFX942-NEXT:    s_lshr_b32 s1, s3, 169700; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s29701; GFX942-NEXT:    s_mov_b32 s9, s09702; GFX942-NEXT:    ;;#ASMSTART9703; GFX942-NEXT:    ; use s[8:9]9704; GFX942-NEXT:    ;;#ASMEND9705; GFX942-NEXT:    s_setpc_b64 s[30:31]9706  %vec0 = call <4 x i16> asm "; def $0", "=s"()9707  %vec1 = call <4 x i16> asm "; def $0", "=s"()9708  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 4, i32 0>9709  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9710  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)9711  ret void9712}9713 9714define void @s_shuffle_v3i16_v4i16__7_5_0() {9715; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_5_0:9716; GFX900:       ; %bb.0:9717; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9718; GFX900-NEXT:    ;;#ASMSTART9719; GFX900-NEXT:    ; def s[4:5]9720; GFX900-NEXT:    ;;#ASMEND9721; GFX900-NEXT:    ;;#ASMSTART9722; GFX900-NEXT:    ; def s[6:7]9723; GFX900-NEXT:    ;;#ASMEND9724; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s7, s69725; GFX900-NEXT:    s_mov_b32 s9, s49726; GFX900-NEXT:    ;;#ASMSTART9727; GFX900-NEXT:    ; use s[8:9]9728; GFX900-NEXT:    ;;#ASMEND9729; GFX900-NEXT:    s_setpc_b64 s[30:31]9730;9731; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_5_0:9732; GFX90A:       ; %bb.0:9733; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9734; GFX90A-NEXT:    ;;#ASMSTART9735; GFX90A-NEXT:    ; def s[4:5]9736; GFX90A-NEXT:    ;;#ASMEND9737; GFX90A-NEXT:    ;;#ASMSTART9738; GFX90A-NEXT:    ; def s[6:7]9739; GFX90A-NEXT:    ;;#ASMEND9740; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s7, s69741; GFX90A-NEXT:    s_mov_b32 s9, s49742; GFX90A-NEXT:    ;;#ASMSTART9743; GFX90A-NEXT:    ; use s[8:9]9744; GFX90A-NEXT:    ;;#ASMEND9745; GFX90A-NEXT:    s_setpc_b64 s[30:31]9746;9747; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_5_0:9748; GFX942:       ; %bb.0:9749; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9750; GFX942-NEXT:    ;;#ASMSTART9751; GFX942-NEXT:    ; def s[0:1]9752; GFX942-NEXT:    ;;#ASMEND9753; GFX942-NEXT:    ;;#ASMSTART9754; GFX942-NEXT:    ; def s[2:3]9755; GFX942-NEXT:    ;;#ASMEND9756; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s3, s29757; GFX942-NEXT:    s_mov_b32 s9, s09758; GFX942-NEXT:    ;;#ASMSTART9759; GFX942-NEXT:    ; use s[8:9]9760; GFX942-NEXT:    ;;#ASMEND9761; GFX942-NEXT:    s_setpc_b64 s[30:31]9762  %vec0 = call <4 x i16> asm "; def $0", "=s"()9763  %vec1 = call <4 x i16> asm "; def $0", "=s"()9764  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 5, i32 0>9765  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9766  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)9767  ret void9768}9769 9770define void @s_shuffle_v3i16_v4i16__7_6_0() {9771; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_6_0:9772; GFX900:       ; %bb.0:9773; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9774; GFX900-NEXT:    ;;#ASMSTART9775; GFX900-NEXT:    ; def s[4:5]9776; GFX900-NEXT:    ;;#ASMEND9777; GFX900-NEXT:    ;;#ASMSTART9778; GFX900-NEXT:    ; def s[6:7]9779; GFX900-NEXT:    ;;#ASMEND9780; GFX900-NEXT:    s_lshr_b32 s5, s7, 169781; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s79782; GFX900-NEXT:    s_mov_b32 s9, s49783; GFX900-NEXT:    ;;#ASMSTART9784; GFX900-NEXT:    ; use s[8:9]9785; GFX900-NEXT:    ;;#ASMEND9786; GFX900-NEXT:    s_setpc_b64 s[30:31]9787;9788; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_6_0:9789; GFX90A:       ; %bb.0:9790; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9791; GFX90A-NEXT:    ;;#ASMSTART9792; GFX90A-NEXT:    ; def s[4:5]9793; GFX90A-NEXT:    ;;#ASMEND9794; GFX90A-NEXT:    ;;#ASMSTART9795; GFX90A-NEXT:    ; def s[6:7]9796; GFX90A-NEXT:    ;;#ASMEND9797; GFX90A-NEXT:    s_lshr_b32 s5, s7, 169798; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s79799; GFX90A-NEXT:    s_mov_b32 s9, s49800; GFX90A-NEXT:    ;;#ASMSTART9801; GFX90A-NEXT:    ; use s[8:9]9802; GFX90A-NEXT:    ;;#ASMEND9803; GFX90A-NEXT:    s_setpc_b64 s[30:31]9804;9805; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_6_0:9806; GFX942:       ; %bb.0:9807; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9808; GFX942-NEXT:    ;;#ASMSTART9809; GFX942-NEXT:    ; def s[0:1]9810; GFX942-NEXT:    ;;#ASMEND9811; GFX942-NEXT:    ;;#ASMSTART9812; GFX942-NEXT:    ; def s[2:3]9813; GFX942-NEXT:    ;;#ASMEND9814; GFX942-NEXT:    s_lshr_b32 s1, s3, 169815; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s39816; GFX942-NEXT:    s_mov_b32 s9, s09817; GFX942-NEXT:    ;;#ASMSTART9818; GFX942-NEXT:    ; use s[8:9]9819; GFX942-NEXT:    ;;#ASMEND9820; GFX942-NEXT:    s_setpc_b64 s[30:31]9821  %vec0 = call <4 x i16> asm "; def $0", "=s"()9822  %vec1 = call <4 x i16> asm "; def $0", "=s"()9823  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 6, i32 0>9824  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9825  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)9826  ret void9827}9828 9829define void @s_shuffle_v3i16_v4i16__u_1_1() {9830; GFX9-LABEL: s_shuffle_v3i16_v4i16__u_1_1:9831; GFX9:       ; %bb.0:9832; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9833; GFX9-NEXT:    ;;#ASMSTART9834; GFX9-NEXT:    ; def s[8:9]9835; GFX9-NEXT:    ;;#ASMEND9836; GFX9-NEXT:    s_lshr_b32 s9, s8, 169837; GFX9-NEXT:    ;;#ASMSTART9838; GFX9-NEXT:    ; use s[8:9]9839; GFX9-NEXT:    ;;#ASMEND9840; GFX9-NEXT:    s_setpc_b64 s[30:31]9841  %vec0 = call <4 x i16> asm "; def $0", "=s"()9842  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 poison, i32 1, i32 1>9843  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9844  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)9845  ret void9846}9847 9848define void @s_shuffle_v3i16_v4i16__0_1_1() {9849; GFX9-LABEL: s_shuffle_v3i16_v4i16__0_1_1:9850; GFX9:       ; %bb.0:9851; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9852; GFX9-NEXT:    ;;#ASMSTART9853; GFX9-NEXT:    ; def s[8:9]9854; GFX9-NEXT:    ;;#ASMEND9855; GFX9-NEXT:    s_lshr_b32 s9, s8, 169856; GFX9-NEXT:    ;;#ASMSTART9857; GFX9-NEXT:    ; use s[8:9]9858; GFX9-NEXT:    ;;#ASMEND9859; GFX9-NEXT:    s_setpc_b64 s[30:31]9860  %vec0 = call <4 x i16> asm "; def $0", "=s"()9861  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 1, i32 1>9862  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9863  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)9864  ret void9865}9866 9867define void @s_shuffle_v3i16_v4i16__1_1_1() {9868; GFX900-LABEL: s_shuffle_v3i16_v4i16__1_1_1:9869; GFX900:       ; %bb.0:9870; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9871; GFX900-NEXT:    ;;#ASMSTART9872; GFX900-NEXT:    ; def s[4:5]9873; GFX900-NEXT:    ;;#ASMEND9874; GFX900-NEXT:    s_lshr_b32 s9, s4, 169875; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s49876; GFX900-NEXT:    ;;#ASMSTART9877; GFX900-NEXT:    ; use s[8:9]9878; GFX900-NEXT:    ;;#ASMEND9879; GFX900-NEXT:    s_setpc_b64 s[30:31]9880;9881; GFX90A-LABEL: s_shuffle_v3i16_v4i16__1_1_1:9882; GFX90A:       ; %bb.0:9883; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9884; GFX90A-NEXT:    ;;#ASMSTART9885; GFX90A-NEXT:    ; def s[4:5]9886; GFX90A-NEXT:    ;;#ASMEND9887; GFX90A-NEXT:    s_lshr_b32 s9, s4, 169888; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s49889; GFX90A-NEXT:    ;;#ASMSTART9890; GFX90A-NEXT:    ; use s[8:9]9891; GFX90A-NEXT:    ;;#ASMEND9892; GFX90A-NEXT:    s_setpc_b64 s[30:31]9893;9894; GFX942-LABEL: s_shuffle_v3i16_v4i16__1_1_1:9895; GFX942:       ; %bb.0:9896; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9897; GFX942-NEXT:    ;;#ASMSTART9898; GFX942-NEXT:    ; def s[0:1]9899; GFX942-NEXT:    ;;#ASMEND9900; GFX942-NEXT:    s_lshr_b32 s9, s0, 169901; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s09902; GFX942-NEXT:    ;;#ASMSTART9903; GFX942-NEXT:    ; use s[8:9]9904; GFX942-NEXT:    ;;#ASMEND9905; GFX942-NEXT:    s_setpc_b64 s[30:31]9906  %vec0 = call <4 x i16> asm "; def $0", "=s"()9907  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 1, i32 1, i32 1>9908  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9909  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)9910  ret void9911}9912 9913define void @s_shuffle_v3i16_v4i16__2_1_1() {9914; GFX900-LABEL: s_shuffle_v3i16_v4i16__2_1_1:9915; GFX900:       ; %bb.0:9916; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9917; GFX900-NEXT:    ;;#ASMSTART9918; GFX900-NEXT:    ; def s[4:5]9919; GFX900-NEXT:    ;;#ASMEND9920; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s5, s49921; GFX900-NEXT:    s_lshr_b32 s9, s4, 169922; GFX900-NEXT:    ;;#ASMSTART9923; GFX900-NEXT:    ; use s[8:9]9924; GFX900-NEXT:    ;;#ASMEND9925; GFX900-NEXT:    s_setpc_b64 s[30:31]9926;9927; GFX90A-LABEL: s_shuffle_v3i16_v4i16__2_1_1:9928; GFX90A:       ; %bb.0:9929; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9930; GFX90A-NEXT:    ;;#ASMSTART9931; GFX90A-NEXT:    ; def s[4:5]9932; GFX90A-NEXT:    ;;#ASMEND9933; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s5, s49934; GFX90A-NEXT:    s_lshr_b32 s9, s4, 169935; GFX90A-NEXT:    ;;#ASMSTART9936; GFX90A-NEXT:    ; use s[8:9]9937; GFX90A-NEXT:    ;;#ASMEND9938; GFX90A-NEXT:    s_setpc_b64 s[30:31]9939;9940; GFX942-LABEL: s_shuffle_v3i16_v4i16__2_1_1:9941; GFX942:       ; %bb.0:9942; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9943; GFX942-NEXT:    ;;#ASMSTART9944; GFX942-NEXT:    ; def s[0:1]9945; GFX942-NEXT:    ;;#ASMEND9946; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s1, s09947; GFX942-NEXT:    s_lshr_b32 s9, s0, 169948; GFX942-NEXT:    ;;#ASMSTART9949; GFX942-NEXT:    ; use s[8:9]9950; GFX942-NEXT:    ;;#ASMEND9951; GFX942-NEXT:    s_setpc_b64 s[30:31]9952  %vec0 = call <4 x i16> asm "; def $0", "=s"()9953  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 2, i32 1, i32 1>9954  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9955  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)9956  ret void9957}9958 9959define void @s_shuffle_v3i16_v4i16__3_1_1() {9960; GFX900-LABEL: s_shuffle_v3i16_v4i16__3_1_1:9961; GFX900:       ; %bb.0:9962; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9963; GFX900-NEXT:    ;;#ASMSTART9964; GFX900-NEXT:    ; def s[4:5]9965; GFX900-NEXT:    ;;#ASMEND9966; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s49967; GFX900-NEXT:    s_lshr_b32 s9, s4, 169968; GFX900-NEXT:    ;;#ASMSTART9969; GFX900-NEXT:    ; use s[8:9]9970; GFX900-NEXT:    ;;#ASMEND9971; GFX900-NEXT:    s_setpc_b64 s[30:31]9972;9973; GFX90A-LABEL: s_shuffle_v3i16_v4i16__3_1_1:9974; GFX90A:       ; %bb.0:9975; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9976; GFX90A-NEXT:    ;;#ASMSTART9977; GFX90A-NEXT:    ; def s[4:5]9978; GFX90A-NEXT:    ;;#ASMEND9979; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s49980; GFX90A-NEXT:    s_lshr_b32 s9, s4, 169981; GFX90A-NEXT:    ;;#ASMSTART9982; GFX90A-NEXT:    ; use s[8:9]9983; GFX90A-NEXT:    ;;#ASMEND9984; GFX90A-NEXT:    s_setpc_b64 s[30:31]9985;9986; GFX942-LABEL: s_shuffle_v3i16_v4i16__3_1_1:9987; GFX942:       ; %bb.0:9988; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9989; GFX942-NEXT:    ;;#ASMSTART9990; GFX942-NEXT:    ; def s[0:1]9991; GFX942-NEXT:    ;;#ASMEND9992; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s09993; GFX942-NEXT:    s_lshr_b32 s9, s0, 169994; GFX942-NEXT:    ;;#ASMSTART9995; GFX942-NEXT:    ; use s[8:9]9996; GFX942-NEXT:    ;;#ASMEND9997; GFX942-NEXT:    s_setpc_b64 s[30:31]9998  %vec0 = call <4 x i16> asm "; def $0", "=s"()9999  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 3, i32 1, i32 1>10000  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10001  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)10002  ret void10003}10004 10005define void @s_shuffle_v3i16_v4i16__4_1_1() {10006; GFX9-LABEL: s_shuffle_v3i16_v4i16__4_1_1:10007; GFX9:       ; %bb.0:10008; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10009; GFX9-NEXT:    ;;#ASMSTART10010; GFX9-NEXT:    ; def s[8:9]10011; GFX9-NEXT:    ;;#ASMEND10012; GFX9-NEXT:    s_lshr_b32 s9, s8, 1610013; GFX9-NEXT:    ;;#ASMSTART10014; GFX9-NEXT:    ; use s[8:9]10015; GFX9-NEXT:    ;;#ASMEND10016; GFX9-NEXT:    s_setpc_b64 s[30:31]10017  %vec0 = call <4 x i16> asm "; def $0", "=s"()10018  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 4, i32 1, i32 1>10019  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10020  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)10021  ret void10022}10023 10024define void @s_shuffle_v3i16_v4i16__5_1_1() {10025; GFX900-LABEL: s_shuffle_v3i16_v4i16__5_1_1:10026; GFX900:       ; %bb.0:10027; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10028; GFX900-NEXT:    ;;#ASMSTART10029; GFX900-NEXT:    ; def s[4:5]10030; GFX900-NEXT:    ;;#ASMEND10031; GFX900-NEXT:    ;;#ASMSTART10032; GFX900-NEXT:    ; def s[6:7]10033; GFX900-NEXT:    ;;#ASMEND10034; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s6, s410035; GFX900-NEXT:    s_lshr_b32 s9, s4, 1610036; GFX900-NEXT:    ;;#ASMSTART10037; GFX900-NEXT:    ; use s[8:9]10038; GFX900-NEXT:    ;;#ASMEND10039; GFX900-NEXT:    s_setpc_b64 s[30:31]10040;10041; GFX90A-LABEL: s_shuffle_v3i16_v4i16__5_1_1:10042; GFX90A:       ; %bb.0:10043; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10044; GFX90A-NEXT:    ;;#ASMSTART10045; GFX90A-NEXT:    ; def s[4:5]10046; GFX90A-NEXT:    ;;#ASMEND10047; GFX90A-NEXT:    ;;#ASMSTART10048; GFX90A-NEXT:    ; def s[6:7]10049; GFX90A-NEXT:    ;;#ASMEND10050; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s6, s410051; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1610052; GFX90A-NEXT:    ;;#ASMSTART10053; GFX90A-NEXT:    ; use s[8:9]10054; GFX90A-NEXT:    ;;#ASMEND10055; GFX90A-NEXT:    s_setpc_b64 s[30:31]10056;10057; GFX942-LABEL: s_shuffle_v3i16_v4i16__5_1_1:10058; GFX942:       ; %bb.0:10059; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10060; GFX942-NEXT:    ;;#ASMSTART10061; GFX942-NEXT:    ; def s[0:1]10062; GFX942-NEXT:    ;;#ASMEND10063; GFX942-NEXT:    ;;#ASMSTART10064; GFX942-NEXT:    ; def s[2:3]10065; GFX942-NEXT:    ;;#ASMEND10066; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s2, s010067; GFX942-NEXT:    s_lshr_b32 s9, s0, 1610068; GFX942-NEXT:    ;;#ASMSTART10069; GFX942-NEXT:    ; use s[8:9]10070; GFX942-NEXT:    ;;#ASMEND10071; GFX942-NEXT:    s_setpc_b64 s[30:31]10072  %vec0 = call <4 x i16> asm "; def $0", "=s"()10073  %vec1 = call <4 x i16> asm "; def $0", "=s"()10074  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 5, i32 1, i32 1>10075  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10076  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)10077  ret void10078}10079 10080define void @s_shuffle_v3i16_v4i16__6_1_1() {10081; GFX900-LABEL: s_shuffle_v3i16_v4i16__6_1_1:10082; GFX900:       ; %bb.0:10083; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10084; GFX900-NEXT:    ;;#ASMSTART10085; GFX900-NEXT:    ; def s[4:5]10086; GFX900-NEXT:    ;;#ASMEND10087; GFX900-NEXT:    ;;#ASMSTART10088; GFX900-NEXT:    ; def s[6:7]10089; GFX900-NEXT:    ;;#ASMEND10090; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s7, s410091; GFX900-NEXT:    s_lshr_b32 s9, s4, 1610092; GFX900-NEXT:    ;;#ASMSTART10093; GFX900-NEXT:    ; use s[8:9]10094; GFX900-NEXT:    ;;#ASMEND10095; GFX900-NEXT:    s_setpc_b64 s[30:31]10096;10097; GFX90A-LABEL: s_shuffle_v3i16_v4i16__6_1_1:10098; GFX90A:       ; %bb.0:10099; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10100; GFX90A-NEXT:    ;;#ASMSTART10101; GFX90A-NEXT:    ; def s[4:5]10102; GFX90A-NEXT:    ;;#ASMEND10103; GFX90A-NEXT:    ;;#ASMSTART10104; GFX90A-NEXT:    ; def s[6:7]10105; GFX90A-NEXT:    ;;#ASMEND10106; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s7, s410107; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1610108; GFX90A-NEXT:    ;;#ASMSTART10109; GFX90A-NEXT:    ; use s[8:9]10110; GFX90A-NEXT:    ;;#ASMEND10111; GFX90A-NEXT:    s_setpc_b64 s[30:31]10112;10113; GFX942-LABEL: s_shuffle_v3i16_v4i16__6_1_1:10114; GFX942:       ; %bb.0:10115; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10116; GFX942-NEXT:    ;;#ASMSTART10117; GFX942-NEXT:    ; def s[0:1]10118; GFX942-NEXT:    ;;#ASMEND10119; GFX942-NEXT:    ;;#ASMSTART10120; GFX942-NEXT:    ; def s[2:3]10121; GFX942-NEXT:    ;;#ASMEND10122; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s3, s010123; GFX942-NEXT:    s_lshr_b32 s9, s0, 1610124; GFX942-NEXT:    ;;#ASMSTART10125; GFX942-NEXT:    ; use s[8:9]10126; GFX942-NEXT:    ;;#ASMEND10127; GFX942-NEXT:    s_setpc_b64 s[30:31]10128  %vec0 = call <4 x i16> asm "; def $0", "=s"()10129  %vec1 = call <4 x i16> asm "; def $0", "=s"()10130  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 6, i32 1, i32 1>10131  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10132  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)10133  ret void10134}10135 10136define void @s_shuffle_v3i16_v4i16__7_1_1() {10137; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_1_1:10138; GFX900:       ; %bb.0:10139; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10140; GFX900-NEXT:    ;;#ASMSTART10141; GFX900-NEXT:    ; def s[4:5]10142; GFX900-NEXT:    ;;#ASMEND10143; GFX900-NEXT:    ;;#ASMSTART10144; GFX900-NEXT:    ; def s[6:7]10145; GFX900-NEXT:    ;;#ASMEND10146; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s7, s410147; GFX900-NEXT:    s_lshr_b32 s9, s4, 1610148; GFX900-NEXT:    ;;#ASMSTART10149; GFX900-NEXT:    ; use s[8:9]10150; GFX900-NEXT:    ;;#ASMEND10151; GFX900-NEXT:    s_setpc_b64 s[30:31]10152;10153; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_1_1:10154; GFX90A:       ; %bb.0:10155; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10156; GFX90A-NEXT:    ;;#ASMSTART10157; GFX90A-NEXT:    ; def s[4:5]10158; GFX90A-NEXT:    ;;#ASMEND10159; GFX90A-NEXT:    ;;#ASMSTART10160; GFX90A-NEXT:    ; def s[6:7]10161; GFX90A-NEXT:    ;;#ASMEND10162; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s7, s410163; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1610164; GFX90A-NEXT:    ;;#ASMSTART10165; GFX90A-NEXT:    ; use s[8:9]10166; GFX90A-NEXT:    ;;#ASMEND10167; GFX90A-NEXT:    s_setpc_b64 s[30:31]10168;10169; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_1_1:10170; GFX942:       ; %bb.0:10171; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10172; GFX942-NEXT:    ;;#ASMSTART10173; GFX942-NEXT:    ; def s[0:1]10174; GFX942-NEXT:    ;;#ASMEND10175; GFX942-NEXT:    ;;#ASMSTART10176; GFX942-NEXT:    ; def s[2:3]10177; GFX942-NEXT:    ;;#ASMEND10178; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s3, s010179; GFX942-NEXT:    s_lshr_b32 s9, s0, 1610180; GFX942-NEXT:    ;;#ASMSTART10181; GFX942-NEXT:    ; use s[8:9]10182; GFX942-NEXT:    ;;#ASMEND10183; GFX942-NEXT:    s_setpc_b64 s[30:31]10184  %vec0 = call <4 x i16> asm "; def $0", "=s"()10185  %vec1 = call <4 x i16> asm "; def $0", "=s"()10186  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 1, i32 1>10187  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10188  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)10189  ret void10190}10191 10192define void @s_shuffle_v3i16_v4i16__7_u_1() {10193; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_u_1:10194; GFX900:       ; %bb.0:10195; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10196; GFX900-NEXT:    ;;#ASMSTART10197; GFX900-NEXT:    ; def s[4:5]10198; GFX900-NEXT:    ;;#ASMEND10199; GFX900-NEXT:    ;;#ASMSTART10200; GFX900-NEXT:    ; def s[6:7]10201; GFX900-NEXT:    ;;#ASMEND10202; GFX900-NEXT:    s_lshr_b32 s9, s4, 1610203; GFX900-NEXT:    s_lshr_b32 s8, s7, 1610204; GFX900-NEXT:    ;;#ASMSTART10205; GFX900-NEXT:    ; use s[8:9]10206; GFX900-NEXT:    ;;#ASMEND10207; GFX900-NEXT:    s_setpc_b64 s[30:31]10208;10209; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_u_1:10210; GFX90A:       ; %bb.0:10211; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10212; GFX90A-NEXT:    ;;#ASMSTART10213; GFX90A-NEXT:    ; def s[4:5]10214; GFX90A-NEXT:    ;;#ASMEND10215; GFX90A-NEXT:    ;;#ASMSTART10216; GFX90A-NEXT:    ; def s[6:7]10217; GFX90A-NEXT:    ;;#ASMEND10218; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1610219; GFX90A-NEXT:    s_lshr_b32 s8, s7, 1610220; GFX90A-NEXT:    ;;#ASMSTART10221; GFX90A-NEXT:    ; use s[8:9]10222; GFX90A-NEXT:    ;;#ASMEND10223; GFX90A-NEXT:    s_setpc_b64 s[30:31]10224;10225; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_u_1:10226; GFX942:       ; %bb.0:10227; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10228; GFX942-NEXT:    ;;#ASMSTART10229; GFX942-NEXT:    ; def s[0:1]10230; GFX942-NEXT:    ;;#ASMEND10231; GFX942-NEXT:    ;;#ASMSTART10232; GFX942-NEXT:    ; def s[2:3]10233; GFX942-NEXT:    ;;#ASMEND10234; GFX942-NEXT:    s_lshr_b32 s9, s0, 1610235; GFX942-NEXT:    s_lshr_b32 s8, s3, 1610236; GFX942-NEXT:    ;;#ASMSTART10237; GFX942-NEXT:    ; use s[8:9]10238; GFX942-NEXT:    ;;#ASMEND10239; GFX942-NEXT:    s_setpc_b64 s[30:31]10240  %vec0 = call <4 x i16> asm "; def $0", "=s"()10241  %vec1 = call <4 x i16> asm "; def $0", "=s"()10242  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 poison, i32 1>10243  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10244  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)10245  ret void10246}10247 10248define void @s_shuffle_v3i16_v4i16__7_0_1() {10249; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_0_1:10250; GFX900:       ; %bb.0:10251; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10252; GFX900-NEXT:    ;;#ASMSTART10253; GFX900-NEXT:    ; def s[4:5]10254; GFX900-NEXT:    ;;#ASMEND10255; GFX900-NEXT:    ;;#ASMSTART10256; GFX900-NEXT:    ; def s[6:7]10257; GFX900-NEXT:    ;;#ASMEND10258; GFX900-NEXT:    s_lshr_b32 s5, s7, 1610259; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s410260; GFX900-NEXT:    s_lshr_b32 s9, s4, 1610261; GFX900-NEXT:    ;;#ASMSTART10262; GFX900-NEXT:    ; use s[8:9]10263; GFX900-NEXT:    ;;#ASMEND10264; GFX900-NEXT:    s_setpc_b64 s[30:31]10265;10266; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_0_1:10267; GFX90A:       ; %bb.0:10268; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10269; GFX90A-NEXT:    ;;#ASMSTART10270; GFX90A-NEXT:    ; def s[4:5]10271; GFX90A-NEXT:    ;;#ASMEND10272; GFX90A-NEXT:    ;;#ASMSTART10273; GFX90A-NEXT:    ; def s[6:7]10274; GFX90A-NEXT:    ;;#ASMEND10275; GFX90A-NEXT:    s_lshr_b32 s5, s7, 1610276; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s410277; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1610278; GFX90A-NEXT:    ;;#ASMSTART10279; GFX90A-NEXT:    ; use s[8:9]10280; GFX90A-NEXT:    ;;#ASMEND10281; GFX90A-NEXT:    s_setpc_b64 s[30:31]10282;10283; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_0_1:10284; GFX942:       ; %bb.0:10285; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10286; GFX942-NEXT:    ;;#ASMSTART10287; GFX942-NEXT:    ; def s[0:1]10288; GFX942-NEXT:    ;;#ASMEND10289; GFX942-NEXT:    ;;#ASMSTART10290; GFX942-NEXT:    ; def s[2:3]10291; GFX942-NEXT:    ;;#ASMEND10292; GFX942-NEXT:    s_lshr_b32 s1, s3, 1610293; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s010294; GFX942-NEXT:    s_lshr_b32 s9, s0, 1610295; GFX942-NEXT:    ;;#ASMSTART10296; GFX942-NEXT:    ; use s[8:9]10297; GFX942-NEXT:    ;;#ASMEND10298; GFX942-NEXT:    s_setpc_b64 s[30:31]10299  %vec0 = call <4 x i16> asm "; def $0", "=s"()10300  %vec1 = call <4 x i16> asm "; def $0", "=s"()10301  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 0, i32 1>10302  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10303  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)10304  ret void10305}10306 10307define void @s_shuffle_v3i16_v4i16__7_2_1() {10308; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_2_1:10309; GFX900:       ; %bb.0:10310; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10311; GFX900-NEXT:    ;;#ASMSTART10312; GFX900-NEXT:    ; def s[6:7]10313; GFX900-NEXT:    ;;#ASMEND10314; GFX900-NEXT:    s_lshr_b32 s6, s7, 1610315; GFX900-NEXT:    ;;#ASMSTART10316; GFX900-NEXT:    ; def s[4:5]10317; GFX900-NEXT:    ;;#ASMEND10318; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s6, s510319; GFX900-NEXT:    s_lshr_b32 s9, s4, 1610320; GFX900-NEXT:    ;;#ASMSTART10321; GFX900-NEXT:    ; use s[8:9]10322; GFX900-NEXT:    ;;#ASMEND10323; GFX900-NEXT:    s_setpc_b64 s[30:31]10324;10325; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_2_1:10326; GFX90A:       ; %bb.0:10327; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10328; GFX90A-NEXT:    ;;#ASMSTART10329; GFX90A-NEXT:    ; def s[6:7]10330; GFX90A-NEXT:    ;;#ASMEND10331; GFX90A-NEXT:    s_lshr_b32 s6, s7, 1610332; GFX90A-NEXT:    ;;#ASMSTART10333; GFX90A-NEXT:    ; def s[4:5]10334; GFX90A-NEXT:    ;;#ASMEND10335; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s6, s510336; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1610337; GFX90A-NEXT:    ;;#ASMSTART10338; GFX90A-NEXT:    ; use s[8:9]10339; GFX90A-NEXT:    ;;#ASMEND10340; GFX90A-NEXT:    s_setpc_b64 s[30:31]10341;10342; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_2_1:10343; GFX942:       ; %bb.0:10344; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10345; GFX942-NEXT:    ;;#ASMSTART10346; GFX942-NEXT:    ; def s[2:3]10347; GFX942-NEXT:    ;;#ASMEND10348; GFX942-NEXT:    s_lshr_b32 s2, s3, 1610349; GFX942-NEXT:    ;;#ASMSTART10350; GFX942-NEXT:    ; def s[0:1]10351; GFX942-NEXT:    ;;#ASMEND10352; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s2, s110353; GFX942-NEXT:    s_lshr_b32 s9, s0, 1610354; GFX942-NEXT:    ;;#ASMSTART10355; GFX942-NEXT:    ; use s[8:9]10356; GFX942-NEXT:    ;;#ASMEND10357; GFX942-NEXT:    s_setpc_b64 s[30:31]10358  %vec0 = call <4 x i16> asm "; def $0", "=s"()10359  %vec1 = call <4 x i16> asm "; def $0", "=s"()10360  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 2, i32 1>10361  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10362  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)10363  ret void10364}10365 10366define void @s_shuffle_v3i16_v4i16__7_3_1() {10367; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_3_1:10368; GFX900:       ; %bb.0:10369; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10370; GFX900-NEXT:    ;;#ASMSTART10371; GFX900-NEXT:    ; def s[4:5]10372; GFX900-NEXT:    ;;#ASMEND10373; GFX900-NEXT:    ;;#ASMSTART10374; GFX900-NEXT:    ; def s[6:7]10375; GFX900-NEXT:    ;;#ASMEND10376; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s7, s510377; GFX900-NEXT:    s_lshr_b32 s9, s4, 1610378; GFX900-NEXT:    ;;#ASMSTART10379; GFX900-NEXT:    ; use s[8:9]10380; GFX900-NEXT:    ;;#ASMEND10381; GFX900-NEXT:    s_setpc_b64 s[30:31]10382;10383; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_3_1:10384; GFX90A:       ; %bb.0:10385; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10386; GFX90A-NEXT:    ;;#ASMSTART10387; GFX90A-NEXT:    ; def s[4:5]10388; GFX90A-NEXT:    ;;#ASMEND10389; GFX90A-NEXT:    ;;#ASMSTART10390; GFX90A-NEXT:    ; def s[6:7]10391; GFX90A-NEXT:    ;;#ASMEND10392; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s7, s510393; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1610394; GFX90A-NEXT:    ;;#ASMSTART10395; GFX90A-NEXT:    ; use s[8:9]10396; GFX90A-NEXT:    ;;#ASMEND10397; GFX90A-NEXT:    s_setpc_b64 s[30:31]10398;10399; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_3_1:10400; GFX942:       ; %bb.0:10401; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10402; GFX942-NEXT:    ;;#ASMSTART10403; GFX942-NEXT:    ; def s[0:1]10404; GFX942-NEXT:    ;;#ASMEND10405; GFX942-NEXT:    ;;#ASMSTART10406; GFX942-NEXT:    ; def s[2:3]10407; GFX942-NEXT:    ;;#ASMEND10408; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s3, s110409; GFX942-NEXT:    s_lshr_b32 s9, s0, 1610410; GFX942-NEXT:    ;;#ASMSTART10411; GFX942-NEXT:    ; use s[8:9]10412; GFX942-NEXT:    ;;#ASMEND10413; GFX942-NEXT:    s_setpc_b64 s[30:31]10414  %vec0 = call <4 x i16> asm "; def $0", "=s"()10415  %vec1 = call <4 x i16> asm "; def $0", "=s"()10416  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 3, i32 1>10417  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10418  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)10419  ret void10420}10421 10422define void @s_shuffle_v3i16_v4i16__7_4_1() {10423; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_4_1:10424; GFX900:       ; %bb.0:10425; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10426; GFX900-NEXT:    ;;#ASMSTART10427; GFX900-NEXT:    ; def s[4:5]10428; GFX900-NEXT:    ;;#ASMEND10429; GFX900-NEXT:    ;;#ASMSTART10430; GFX900-NEXT:    ; def s[6:7]10431; GFX900-NEXT:    ;;#ASMEND10432; GFX900-NEXT:    s_lshr_b32 s5, s7, 1610433; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s610434; GFX900-NEXT:    s_lshr_b32 s9, s4, 1610435; GFX900-NEXT:    ;;#ASMSTART10436; GFX900-NEXT:    ; use s[8:9]10437; GFX900-NEXT:    ;;#ASMEND10438; GFX900-NEXT:    s_setpc_b64 s[30:31]10439;10440; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_4_1:10441; GFX90A:       ; %bb.0:10442; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10443; GFX90A-NEXT:    ;;#ASMSTART10444; GFX90A-NEXT:    ; def s[4:5]10445; GFX90A-NEXT:    ;;#ASMEND10446; GFX90A-NEXT:    ;;#ASMSTART10447; GFX90A-NEXT:    ; def s[6:7]10448; GFX90A-NEXT:    ;;#ASMEND10449; GFX90A-NEXT:    s_lshr_b32 s5, s7, 1610450; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s610451; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1610452; GFX90A-NEXT:    ;;#ASMSTART10453; GFX90A-NEXT:    ; use s[8:9]10454; GFX90A-NEXT:    ;;#ASMEND10455; GFX90A-NEXT:    s_setpc_b64 s[30:31]10456;10457; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_4_1:10458; GFX942:       ; %bb.0:10459; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10460; GFX942-NEXT:    ;;#ASMSTART10461; GFX942-NEXT:    ; def s[0:1]10462; GFX942-NEXT:    ;;#ASMEND10463; GFX942-NEXT:    ;;#ASMSTART10464; GFX942-NEXT:    ; def s[2:3]10465; GFX942-NEXT:    ;;#ASMEND10466; GFX942-NEXT:    s_lshr_b32 s1, s3, 1610467; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s210468; GFX942-NEXT:    s_lshr_b32 s9, s0, 1610469; GFX942-NEXT:    ;;#ASMSTART10470; GFX942-NEXT:    ; use s[8:9]10471; GFX942-NEXT:    ;;#ASMEND10472; GFX942-NEXT:    s_setpc_b64 s[30:31]10473  %vec0 = call <4 x i16> asm "; def $0", "=s"()10474  %vec1 = call <4 x i16> asm "; def $0", "=s"()10475  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 4, i32 1>10476  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10477  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)10478  ret void10479}10480 10481define void @s_shuffle_v3i16_v4i16__7_5_1() {10482; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_5_1:10483; GFX900:       ; %bb.0:10484; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10485; GFX900-NEXT:    ;;#ASMSTART10486; GFX900-NEXT:    ; def s[4:5]10487; GFX900-NEXT:    ;;#ASMEND10488; GFX900-NEXT:    ;;#ASMSTART10489; GFX900-NEXT:    ; def s[6:7]10490; GFX900-NEXT:    ;;#ASMEND10491; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s7, s610492; GFX900-NEXT:    s_lshr_b32 s9, s4, 1610493; GFX900-NEXT:    ;;#ASMSTART10494; GFX900-NEXT:    ; use s[8:9]10495; GFX900-NEXT:    ;;#ASMEND10496; GFX900-NEXT:    s_setpc_b64 s[30:31]10497;10498; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_5_1:10499; GFX90A:       ; %bb.0:10500; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10501; GFX90A-NEXT:    ;;#ASMSTART10502; GFX90A-NEXT:    ; def s[4:5]10503; GFX90A-NEXT:    ;;#ASMEND10504; GFX90A-NEXT:    ;;#ASMSTART10505; GFX90A-NEXT:    ; def s[6:7]10506; GFX90A-NEXT:    ;;#ASMEND10507; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s7, s610508; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1610509; GFX90A-NEXT:    ;;#ASMSTART10510; GFX90A-NEXT:    ; use s[8:9]10511; GFX90A-NEXT:    ;;#ASMEND10512; GFX90A-NEXT:    s_setpc_b64 s[30:31]10513;10514; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_5_1:10515; GFX942:       ; %bb.0:10516; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10517; GFX942-NEXT:    ;;#ASMSTART10518; GFX942-NEXT:    ; def s[0:1]10519; GFX942-NEXT:    ;;#ASMEND10520; GFX942-NEXT:    ;;#ASMSTART10521; GFX942-NEXT:    ; def s[2:3]10522; GFX942-NEXT:    ;;#ASMEND10523; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s3, s210524; GFX942-NEXT:    s_lshr_b32 s9, s0, 1610525; GFX942-NEXT:    ;;#ASMSTART10526; GFX942-NEXT:    ; use s[8:9]10527; GFX942-NEXT:    ;;#ASMEND10528; GFX942-NEXT:    s_setpc_b64 s[30:31]10529  %vec0 = call <4 x i16> asm "; def $0", "=s"()10530  %vec1 = call <4 x i16> asm "; def $0", "=s"()10531  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 5, i32 1>10532  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10533  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)10534  ret void10535}10536 10537define void @s_shuffle_v3i16_v4i16__7_6_1() {10538; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_6_1:10539; GFX900:       ; %bb.0:10540; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10541; GFX900-NEXT:    ;;#ASMSTART10542; GFX900-NEXT:    ; def s[4:5]10543; GFX900-NEXT:    ;;#ASMEND10544; GFX900-NEXT:    ;;#ASMSTART10545; GFX900-NEXT:    ; def s[6:7]10546; GFX900-NEXT:    ;;#ASMEND10547; GFX900-NEXT:    s_lshr_b32 s5, s7, 1610548; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s710549; GFX900-NEXT:    s_lshr_b32 s9, s4, 1610550; GFX900-NEXT:    ;;#ASMSTART10551; GFX900-NEXT:    ; use s[8:9]10552; GFX900-NEXT:    ;;#ASMEND10553; GFX900-NEXT:    s_setpc_b64 s[30:31]10554;10555; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_6_1:10556; GFX90A:       ; %bb.0:10557; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10558; GFX90A-NEXT:    ;;#ASMSTART10559; GFX90A-NEXT:    ; def s[4:5]10560; GFX90A-NEXT:    ;;#ASMEND10561; GFX90A-NEXT:    ;;#ASMSTART10562; GFX90A-NEXT:    ; def s[6:7]10563; GFX90A-NEXT:    ;;#ASMEND10564; GFX90A-NEXT:    s_lshr_b32 s5, s7, 1610565; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s710566; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1610567; GFX90A-NEXT:    ;;#ASMSTART10568; GFX90A-NEXT:    ; use s[8:9]10569; GFX90A-NEXT:    ;;#ASMEND10570; GFX90A-NEXT:    s_setpc_b64 s[30:31]10571;10572; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_6_1:10573; GFX942:       ; %bb.0:10574; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10575; GFX942-NEXT:    ;;#ASMSTART10576; GFX942-NEXT:    ; def s[0:1]10577; GFX942-NEXT:    ;;#ASMEND10578; GFX942-NEXT:    ;;#ASMSTART10579; GFX942-NEXT:    ; def s[2:3]10580; GFX942-NEXT:    ;;#ASMEND10581; GFX942-NEXT:    s_lshr_b32 s1, s3, 1610582; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s310583; GFX942-NEXT:    s_lshr_b32 s9, s0, 1610584; GFX942-NEXT:    ;;#ASMSTART10585; GFX942-NEXT:    ; use s[8:9]10586; GFX942-NEXT:    ;;#ASMEND10587; GFX942-NEXT:    s_setpc_b64 s[30:31]10588  %vec0 = call <4 x i16> asm "; def $0", "=s"()10589  %vec1 = call <4 x i16> asm "; def $0", "=s"()10590  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 6, i32 1>10591  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10592  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)10593  ret void10594}10595 10596define void @s_shuffle_v3i16_v4i16__u_2_2() {10597; GFX9-LABEL: s_shuffle_v3i16_v4i16__u_2_2:10598; GFX9:       ; %bb.0:10599; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10600; GFX9-NEXT:    ;;#ASMSTART10601; GFX9-NEXT:    ; def s[8:9]10602; GFX9-NEXT:    ;;#ASMEND10603; GFX9-NEXT:    s_lshl_b32 s8, s9, 1610604; GFX9-NEXT:    ;;#ASMSTART10605; GFX9-NEXT:    ; use s[8:9]10606; GFX9-NEXT:    ;;#ASMEND10607; GFX9-NEXT:    s_setpc_b64 s[30:31]10608  %vec0 = call <4 x i16> asm "; def $0", "=s"()10609  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 poison, i32 2, i32 2>10610  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10611  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)10612  ret void10613}10614 10615define void @s_shuffle_v3i16_v4i16__0_2_2() {10616; GFX9-LABEL: s_shuffle_v3i16_v4i16__0_2_2:10617; GFX9:       ; %bb.0:10618; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10619; GFX9-NEXT:    ;;#ASMSTART10620; GFX9-NEXT:    ; def s[8:9]10621; GFX9-NEXT:    ;;#ASMEND10622; GFX9-NEXT:    s_pack_ll_b32_b16 s8, s8, s910623; GFX9-NEXT:    ;;#ASMSTART10624; GFX9-NEXT:    ; use s[8:9]10625; GFX9-NEXT:    ;;#ASMEND10626; GFX9-NEXT:    s_setpc_b64 s[30:31]10627  %vec0 = call <4 x i16> asm "; def $0", "=s"()10628  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 2, i32 2>10629  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10630  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)10631  ret void10632}10633 10634define void @s_shuffle_v3i16_v4i16__1_2_2() {10635; GFX900-LABEL: s_shuffle_v3i16_v4i16__1_2_2:10636; GFX900:       ; %bb.0:10637; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10638; GFX900-NEXT:    ;;#ASMSTART10639; GFX900-NEXT:    ; def s[8:9]10640; GFX900-NEXT:    ;;#ASMEND10641; GFX900-NEXT:    s_lshr_b32 s4, s8, 1610642; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s910643; GFX900-NEXT:    ;;#ASMSTART10644; GFX900-NEXT:    ; use s[8:9]10645; GFX900-NEXT:    ;;#ASMEND10646; GFX900-NEXT:    s_setpc_b64 s[30:31]10647;10648; GFX90A-LABEL: s_shuffle_v3i16_v4i16__1_2_2:10649; GFX90A:       ; %bb.0:10650; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10651; GFX90A-NEXT:    ;;#ASMSTART10652; GFX90A-NEXT:    ; def s[8:9]10653; GFX90A-NEXT:    ;;#ASMEND10654; GFX90A-NEXT:    s_lshr_b32 s4, s8, 1610655; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s910656; GFX90A-NEXT:    ;;#ASMSTART10657; GFX90A-NEXT:    ; use s[8:9]10658; GFX90A-NEXT:    ;;#ASMEND10659; GFX90A-NEXT:    s_setpc_b64 s[30:31]10660;10661; GFX942-LABEL: s_shuffle_v3i16_v4i16__1_2_2:10662; GFX942:       ; %bb.0:10663; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10664; GFX942-NEXT:    ;;#ASMSTART10665; GFX942-NEXT:    ; def s[8:9]10666; GFX942-NEXT:    ;;#ASMEND10667; GFX942-NEXT:    s_lshr_b32 s0, s8, 1610668; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s910669; GFX942-NEXT:    ;;#ASMSTART10670; GFX942-NEXT:    ; use s[8:9]10671; GFX942-NEXT:    ;;#ASMEND10672; GFX942-NEXT:    s_setpc_b64 s[30:31]10673  %vec0 = call <4 x i16> asm "; def $0", "=s"()10674  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 1, i32 2, i32 2>10675  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10676  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)10677  ret void10678}10679 10680define void @s_shuffle_v3i16_v4i16__2_2_2() {10681; GFX9-LABEL: s_shuffle_v3i16_v4i16__2_2_2:10682; GFX9:       ; %bb.0:10683; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10684; GFX9-NEXT:    ;;#ASMSTART10685; GFX9-NEXT:    ; def s[8:9]10686; GFX9-NEXT:    ;;#ASMEND10687; GFX9-NEXT:    s_pack_ll_b32_b16 s8, s9, s910688; GFX9-NEXT:    ;;#ASMSTART10689; GFX9-NEXT:    ; use s[8:9]10690; GFX9-NEXT:    ;;#ASMEND10691; GFX9-NEXT:    s_setpc_b64 s[30:31]10692  %vec0 = call <4 x i16> asm "; def $0", "=s"()10693  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 2, i32 2, i32 2>10694  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10695  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)10696  ret void10697}10698 10699define void @s_shuffle_v3i16_v4i16__3_2_2() {10700; GFX900-LABEL: s_shuffle_v3i16_v4i16__3_2_2:10701; GFX900:       ; %bb.0:10702; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10703; GFX900-NEXT:    ;;#ASMSTART10704; GFX900-NEXT:    ; def s[8:9]10705; GFX900-NEXT:    ;;#ASMEND10706; GFX900-NEXT:    s_lshr_b32 s4, s9, 1610707; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s910708; GFX900-NEXT:    ;;#ASMSTART10709; GFX900-NEXT:    ; use s[8:9]10710; GFX900-NEXT:    ;;#ASMEND10711; GFX900-NEXT:    s_setpc_b64 s[30:31]10712;10713; GFX90A-LABEL: s_shuffle_v3i16_v4i16__3_2_2:10714; GFX90A:       ; %bb.0:10715; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10716; GFX90A-NEXT:    ;;#ASMSTART10717; GFX90A-NEXT:    ; def s[8:9]10718; GFX90A-NEXT:    ;;#ASMEND10719; GFX90A-NEXT:    s_lshr_b32 s4, s9, 1610720; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s910721; GFX90A-NEXT:    ;;#ASMSTART10722; GFX90A-NEXT:    ; use s[8:9]10723; GFX90A-NEXT:    ;;#ASMEND10724; GFX90A-NEXT:    s_setpc_b64 s[30:31]10725;10726; GFX942-LABEL: s_shuffle_v3i16_v4i16__3_2_2:10727; GFX942:       ; %bb.0:10728; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10729; GFX942-NEXT:    ;;#ASMSTART10730; GFX942-NEXT:    ; def s[8:9]10731; GFX942-NEXT:    ;;#ASMEND10732; GFX942-NEXT:    s_lshr_b32 s0, s9, 1610733; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s910734; GFX942-NEXT:    ;;#ASMSTART10735; GFX942-NEXT:    ; use s[8:9]10736; GFX942-NEXT:    ;;#ASMEND10737; GFX942-NEXT:    s_setpc_b64 s[30:31]10738  %vec0 = call <4 x i16> asm "; def $0", "=s"()10739  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 3, i32 2, i32 2>10740  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10741  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)10742  ret void10743}10744 10745define void @s_shuffle_v3i16_v4i16__4_2_2() {10746; GFX9-LABEL: s_shuffle_v3i16_v4i16__4_2_2:10747; GFX9:       ; %bb.0:10748; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10749; GFX9-NEXT:    ;;#ASMSTART10750; GFX9-NEXT:    ; def s[8:9]10751; GFX9-NEXT:    ;;#ASMEND10752; GFX9-NEXT:    s_lshl_b32 s8, s9, 1610753; GFX9-NEXT:    ;;#ASMSTART10754; GFX9-NEXT:    ; use s[8:9]10755; GFX9-NEXT:    ;;#ASMEND10756; GFX9-NEXT:    s_setpc_b64 s[30:31]10757  %vec0 = call <4 x i16> asm "; def $0", "=s"()10758  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 4, i32 2, i32 2>10759  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10760  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)10761  ret void10762}10763 10764define void @s_shuffle_v3i16_v4i16__5_2_2() {10765; GFX900-LABEL: s_shuffle_v3i16_v4i16__5_2_2:10766; GFX900:       ; %bb.0:10767; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10768; GFX900-NEXT:    ;;#ASMSTART10769; GFX900-NEXT:    ; def s[4:5]10770; GFX900-NEXT:    ;;#ASMEND10771; GFX900-NEXT:    ;;#ASMSTART10772; GFX900-NEXT:    ; def s[8:9]10773; GFX900-NEXT:    ;;#ASMEND10774; GFX900-NEXT:    s_lshr_b32 s4, s4, 1610775; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s910776; GFX900-NEXT:    ;;#ASMSTART10777; GFX900-NEXT:    ; use s[8:9]10778; GFX900-NEXT:    ;;#ASMEND10779; GFX900-NEXT:    s_setpc_b64 s[30:31]10780;10781; GFX90A-LABEL: s_shuffle_v3i16_v4i16__5_2_2:10782; GFX90A:       ; %bb.0:10783; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10784; GFX90A-NEXT:    ;;#ASMSTART10785; GFX90A-NEXT:    ; def s[4:5]10786; GFX90A-NEXT:    ;;#ASMEND10787; GFX90A-NEXT:    ;;#ASMSTART10788; GFX90A-NEXT:    ; def s[8:9]10789; GFX90A-NEXT:    ;;#ASMEND10790; GFX90A-NEXT:    s_lshr_b32 s4, s4, 1610791; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s910792; GFX90A-NEXT:    ;;#ASMSTART10793; GFX90A-NEXT:    ; use s[8:9]10794; GFX90A-NEXT:    ;;#ASMEND10795; GFX90A-NEXT:    s_setpc_b64 s[30:31]10796;10797; GFX942-LABEL: s_shuffle_v3i16_v4i16__5_2_2:10798; GFX942:       ; %bb.0:10799; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10800; GFX942-NEXT:    ;;#ASMSTART10801; GFX942-NEXT:    ; def s[0:1]10802; GFX942-NEXT:    ;;#ASMEND10803; GFX942-NEXT:    ;;#ASMSTART10804; GFX942-NEXT:    ; def s[8:9]10805; GFX942-NEXT:    ;;#ASMEND10806; GFX942-NEXT:    s_lshr_b32 s0, s0, 1610807; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s910808; GFX942-NEXT:    ;;#ASMSTART10809; GFX942-NEXT:    ; use s[8:9]10810; GFX942-NEXT:    ;;#ASMEND10811; GFX942-NEXT:    s_setpc_b64 s[30:31]10812  %vec0 = call <4 x i16> asm "; def $0", "=s"()10813  %vec1 = call <4 x i16> asm "; def $0", "=s"()10814  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 5, i32 2, i32 2>10815  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10816  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)10817  ret void10818}10819 10820define void @s_shuffle_v3i16_v4i16__6_2_2() {10821; GFX900-LABEL: s_shuffle_v3i16_v4i16__6_2_2:10822; GFX900:       ; %bb.0:10823; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10824; GFX900-NEXT:    ;;#ASMSTART10825; GFX900-NEXT:    ; def s[8:9]10826; GFX900-NEXT:    ;;#ASMEND10827; GFX900-NEXT:    ;;#ASMSTART10828; GFX900-NEXT:    ; def s[4:5]10829; GFX900-NEXT:    ;;#ASMEND10830; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s910831; GFX900-NEXT:    ;;#ASMSTART10832; GFX900-NEXT:    ; use s[8:9]10833; GFX900-NEXT:    ;;#ASMEND10834; GFX900-NEXT:    s_setpc_b64 s[30:31]10835;10836; GFX90A-LABEL: s_shuffle_v3i16_v4i16__6_2_2:10837; GFX90A:       ; %bb.0:10838; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10839; GFX90A-NEXT:    ;;#ASMSTART10840; GFX90A-NEXT:    ; def s[8:9]10841; GFX90A-NEXT:    ;;#ASMEND10842; GFX90A-NEXT:    ;;#ASMSTART10843; GFX90A-NEXT:    ; def s[4:5]10844; GFX90A-NEXT:    ;;#ASMEND10845; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s910846; GFX90A-NEXT:    ;;#ASMSTART10847; GFX90A-NEXT:    ; use s[8:9]10848; GFX90A-NEXT:    ;;#ASMEND10849; GFX90A-NEXT:    s_setpc_b64 s[30:31]10850;10851; GFX942-LABEL: s_shuffle_v3i16_v4i16__6_2_2:10852; GFX942:       ; %bb.0:10853; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10854; GFX942-NEXT:    ;;#ASMSTART10855; GFX942-NEXT:    ; def s[8:9]10856; GFX942-NEXT:    ;;#ASMEND10857; GFX942-NEXT:    ;;#ASMSTART10858; GFX942-NEXT:    ; def s[0:1]10859; GFX942-NEXT:    ;;#ASMEND10860; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s910861; 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  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 6, i32 2, i32 2>10868  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10869  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)10870  ret void10871}10872 10873define void @s_shuffle_v3i16_v4i16__7_2_2() {10874; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_2_2:10875; GFX900:       ; %bb.0:10876; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10877; GFX900-NEXT:    ;;#ASMSTART10878; GFX900-NEXT:    ; def s[4:5]10879; GFX900-NEXT:    ;;#ASMEND10880; GFX900-NEXT:    ;;#ASMSTART10881; GFX900-NEXT:    ; def s[8:9]10882; GFX900-NEXT:    ;;#ASMEND10883; GFX900-NEXT:    s_lshr_b32 s4, s5, 1610884; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s910885; GFX900-NEXT:    ;;#ASMSTART10886; GFX900-NEXT:    ; use s[8:9]10887; GFX900-NEXT:    ;;#ASMEND10888; GFX900-NEXT:    s_setpc_b64 s[30:31]10889;10890; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_2_2:10891; GFX90A:       ; %bb.0:10892; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10893; GFX90A-NEXT:    ;;#ASMSTART10894; GFX90A-NEXT:    ; def s[4:5]10895; GFX90A-NEXT:    ;;#ASMEND10896; GFX90A-NEXT:    ;;#ASMSTART10897; GFX90A-NEXT:    ; def s[8:9]10898; GFX90A-NEXT:    ;;#ASMEND10899; GFX90A-NEXT:    s_lshr_b32 s4, s5, 1610900; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s910901; GFX90A-NEXT:    ;;#ASMSTART10902; GFX90A-NEXT:    ; use s[8:9]10903; GFX90A-NEXT:    ;;#ASMEND10904; GFX90A-NEXT:    s_setpc_b64 s[30:31]10905;10906; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_2_2:10907; GFX942:       ; %bb.0:10908; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10909; GFX942-NEXT:    ;;#ASMSTART10910; GFX942-NEXT:    ; def s[0:1]10911; GFX942-NEXT:    ;;#ASMEND10912; GFX942-NEXT:    ;;#ASMSTART10913; GFX942-NEXT:    ; def s[8:9]10914; GFX942-NEXT:    ;;#ASMEND10915; GFX942-NEXT:    s_lshr_b32 s0, s1, 1610916; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s910917; GFX942-NEXT:    ;;#ASMSTART10918; GFX942-NEXT:    ; use s[8:9]10919; GFX942-NEXT:    ;;#ASMEND10920; GFX942-NEXT:    s_setpc_b64 s[30:31]10921  %vec0 = call <4 x i16> asm "; def $0", "=s"()10922  %vec1 = call <4 x i16> asm "; def $0", "=s"()10923  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 2, i32 2>10924  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10925  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)10926  ret void10927}10928 10929define void @s_shuffle_v3i16_v4i16__7_u_2() {10930; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_u_2:10931; GFX900:       ; %bb.0:10932; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10933; GFX900-NEXT:    ;;#ASMSTART10934; GFX900-NEXT:    ; def s[8:9]10935; GFX900-NEXT:    ;;#ASMEND10936; GFX900-NEXT:    ;;#ASMSTART10937; GFX900-NEXT:    ; def s[4:5]10938; GFX900-NEXT:    ;;#ASMEND10939; GFX900-NEXT:    s_lshr_b32 s8, s5, 1610940; GFX900-NEXT:    ;;#ASMSTART10941; GFX900-NEXT:    ; use s[8:9]10942; GFX900-NEXT:    ;;#ASMEND10943; GFX900-NEXT:    s_setpc_b64 s[30:31]10944;10945; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_u_2:10946; GFX90A:       ; %bb.0:10947; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10948; GFX90A-NEXT:    ;;#ASMSTART10949; GFX90A-NEXT:    ; def s[8:9]10950; GFX90A-NEXT:    ;;#ASMEND10951; GFX90A-NEXT:    ;;#ASMSTART10952; GFX90A-NEXT:    ; def s[4:5]10953; GFX90A-NEXT:    ;;#ASMEND10954; GFX90A-NEXT:    s_lshr_b32 s8, s5, 1610955; GFX90A-NEXT:    ;;#ASMSTART10956; GFX90A-NEXT:    ; use s[8:9]10957; GFX90A-NEXT:    ;;#ASMEND10958; GFX90A-NEXT:    s_setpc_b64 s[30:31]10959;10960; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_u_2:10961; GFX942:       ; %bb.0:10962; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10963; GFX942-NEXT:    ;;#ASMSTART10964; GFX942-NEXT:    ; def s[8:9]10965; GFX942-NEXT:    ;;#ASMEND10966; GFX942-NEXT:    ;;#ASMSTART10967; GFX942-NEXT:    ; def s[0:1]10968; GFX942-NEXT:    ;;#ASMEND10969; GFX942-NEXT:    s_lshr_b32 s8, s1, 1610970; GFX942-NEXT:    ;;#ASMSTART10971; GFX942-NEXT:    ; use s[8:9]10972; GFX942-NEXT:    ;;#ASMEND10973; GFX942-NEXT:    s_setpc_b64 s[30:31]10974  %vec0 = call <4 x i16> asm "; def $0", "=s"()10975  %vec1 = call <4 x i16> asm "; def $0", "=s"()10976  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 poison, i32 2>10977  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10978  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)10979  ret void10980}10981 10982define void @s_shuffle_v3i16_v4i16__7_0_2() {10983; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_0_2:10984; GFX900:       ; %bb.0:10985; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10986; GFX900-NEXT:    ;;#ASMSTART10987; GFX900-NEXT:    ; def s[4:5]10988; GFX900-NEXT:    ;;#ASMEND10989; GFX900-NEXT:    ;;#ASMSTART10990; GFX900-NEXT:    ; def s[8:9]10991; GFX900-NEXT:    ;;#ASMEND10992; GFX900-NEXT:    s_lshr_b32 s4, s5, 1610993; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s810994; GFX900-NEXT:    ;;#ASMSTART10995; GFX900-NEXT:    ; use s[8:9]10996; GFX900-NEXT:    ;;#ASMEND10997; GFX900-NEXT:    s_setpc_b64 s[30:31]10998;10999; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_0_2:11000; GFX90A:       ; %bb.0:11001; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11002; GFX90A-NEXT:    ;;#ASMSTART11003; GFX90A-NEXT:    ; def s[4:5]11004; GFX90A-NEXT:    ;;#ASMEND11005; GFX90A-NEXT:    ;;#ASMSTART11006; GFX90A-NEXT:    ; def s[8:9]11007; GFX90A-NEXT:    ;;#ASMEND11008; GFX90A-NEXT:    s_lshr_b32 s4, s5, 1611009; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s811010; GFX90A-NEXT:    ;;#ASMSTART11011; GFX90A-NEXT:    ; use s[8:9]11012; GFX90A-NEXT:    ;;#ASMEND11013; GFX90A-NEXT:    s_setpc_b64 s[30:31]11014;11015; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_0_2:11016; GFX942:       ; %bb.0:11017; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11018; GFX942-NEXT:    ;;#ASMSTART11019; GFX942-NEXT:    ; def s[0:1]11020; GFX942-NEXT:    ;;#ASMEND11021; GFX942-NEXT:    ;;#ASMSTART11022; GFX942-NEXT:    ; def s[8:9]11023; GFX942-NEXT:    ;;#ASMEND11024; GFX942-NEXT:    s_lshr_b32 s0, s1, 1611025; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s811026; GFX942-NEXT:    ;;#ASMSTART11027; GFX942-NEXT:    ; use s[8:9]11028; GFX942-NEXT:    ;;#ASMEND11029; GFX942-NEXT:    s_setpc_b64 s[30:31]11030  %vec0 = call <4 x i16> asm "; def $0", "=s"()11031  %vec1 = call <4 x i16> asm "; def $0", "=s"()11032  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 0, i32 2>11033  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11034  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)11035  ret void11036}11037 11038define void @s_shuffle_v3i16_v4i16__7_1_2() {11039; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_1_2:11040; GFX900:       ; %bb.0:11041; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11042; GFX900-NEXT:    ;;#ASMSTART11043; GFX900-NEXT:    ; def s[8:9]11044; GFX900-NEXT:    ;;#ASMEND11045; GFX900-NEXT:    ;;#ASMSTART11046; GFX900-NEXT:    ; def s[4:5]11047; GFX900-NEXT:    ;;#ASMEND11048; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s811049; GFX900-NEXT:    ;;#ASMSTART11050; GFX900-NEXT:    ; use s[8:9]11051; GFX900-NEXT:    ;;#ASMEND11052; GFX900-NEXT:    s_setpc_b64 s[30:31]11053;11054; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_1_2:11055; GFX90A:       ; %bb.0:11056; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11057; GFX90A-NEXT:    ;;#ASMSTART11058; GFX90A-NEXT:    ; def s[8:9]11059; GFX90A-NEXT:    ;;#ASMEND11060; GFX90A-NEXT:    ;;#ASMSTART11061; GFX90A-NEXT:    ; def s[4:5]11062; GFX90A-NEXT:    ;;#ASMEND11063; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s811064; GFX90A-NEXT:    ;;#ASMSTART11065; GFX90A-NEXT:    ; use s[8:9]11066; GFX90A-NEXT:    ;;#ASMEND11067; GFX90A-NEXT:    s_setpc_b64 s[30:31]11068;11069; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_1_2:11070; GFX942:       ; %bb.0:11071; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11072; GFX942-NEXT:    ;;#ASMSTART11073; GFX942-NEXT:    ; def s[8:9]11074; GFX942-NEXT:    ;;#ASMEND11075; GFX942-NEXT:    ;;#ASMSTART11076; GFX942-NEXT:    ; def s[0:1]11077; GFX942-NEXT:    ;;#ASMEND11078; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s811079; GFX942-NEXT:    ;;#ASMSTART11080; GFX942-NEXT:    ; use s[8:9]11081; GFX942-NEXT:    ;;#ASMEND11082; GFX942-NEXT:    s_setpc_b64 s[30:31]11083  %vec0 = call <4 x i16> asm "; def $0", "=s"()11084  %vec1 = call <4 x i16> asm "; def $0", "=s"()11085  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 1, i32 2>11086  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11087  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)11088  ret void11089}11090 11091define void @s_shuffle_v3i16_v4i16__7_3_2() {11092; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_3_2:11093; GFX900:       ; %bb.0:11094; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11095; GFX900-NEXT:    ;;#ASMSTART11096; GFX900-NEXT:    ; def s[8:9]11097; GFX900-NEXT:    ;;#ASMEND11098; GFX900-NEXT:    ;;#ASMSTART11099; GFX900-NEXT:    ; def s[4:5]11100; GFX900-NEXT:    ;;#ASMEND11101; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s911102; GFX900-NEXT:    ;;#ASMSTART11103; GFX900-NEXT:    ; use s[8:9]11104; GFX900-NEXT:    ;;#ASMEND11105; GFX900-NEXT:    s_setpc_b64 s[30:31]11106;11107; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_3_2:11108; GFX90A:       ; %bb.0:11109; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11110; GFX90A-NEXT:    ;;#ASMSTART11111; GFX90A-NEXT:    ; def s[8:9]11112; GFX90A-NEXT:    ;;#ASMEND11113; GFX90A-NEXT:    ;;#ASMSTART11114; GFX90A-NEXT:    ; def s[4:5]11115; GFX90A-NEXT:    ;;#ASMEND11116; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s911117; GFX90A-NEXT:    ;;#ASMSTART11118; GFX90A-NEXT:    ; use s[8:9]11119; GFX90A-NEXT:    ;;#ASMEND11120; GFX90A-NEXT:    s_setpc_b64 s[30:31]11121;11122; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_3_2:11123; GFX942:       ; %bb.0:11124; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11125; GFX942-NEXT:    ;;#ASMSTART11126; GFX942-NEXT:    ; def s[8:9]11127; GFX942-NEXT:    ;;#ASMEND11128; GFX942-NEXT:    ;;#ASMSTART11129; GFX942-NEXT:    ; def s[0:1]11130; GFX942-NEXT:    ;;#ASMEND11131; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s911132; GFX942-NEXT:    ;;#ASMSTART11133; GFX942-NEXT:    ; use s[8:9]11134; GFX942-NEXT:    ;;#ASMEND11135; GFX942-NEXT:    s_setpc_b64 s[30:31]11136  %vec0 = call <4 x i16> asm "; def $0", "=s"()11137  %vec1 = call <4 x i16> asm "; def $0", "=s"()11138  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 3, i32 2>11139  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11140  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)11141  ret void11142}11143 11144define void @s_shuffle_v3i16_v4i16__7_4_2() {11145; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_4_2:11146; GFX900:       ; %bb.0:11147; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11148; GFX900-NEXT:    ;;#ASMSTART11149; GFX900-NEXT:    ; def s[4:5]11150; GFX900-NEXT:    ;;#ASMEND11151; GFX900-NEXT:    ;;#ASMSTART11152; GFX900-NEXT:    ; def s[8:9]11153; GFX900-NEXT:    ;;#ASMEND11154; GFX900-NEXT:    s_lshr_b32 s5, s5, 1611155; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s411156; GFX900-NEXT:    ;;#ASMSTART11157; GFX900-NEXT:    ; use s[8:9]11158; GFX900-NEXT:    ;;#ASMEND11159; GFX900-NEXT:    s_setpc_b64 s[30:31]11160;11161; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_4_2:11162; GFX90A:       ; %bb.0:11163; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11164; GFX90A-NEXT:    ;;#ASMSTART11165; GFX90A-NEXT:    ; def s[4:5]11166; GFX90A-NEXT:    ;;#ASMEND11167; GFX90A-NEXT:    ;;#ASMSTART11168; GFX90A-NEXT:    ; def s[8:9]11169; GFX90A-NEXT:    ;;#ASMEND11170; GFX90A-NEXT:    s_lshr_b32 s5, s5, 1611171; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s411172; GFX90A-NEXT:    ;;#ASMSTART11173; GFX90A-NEXT:    ; use s[8:9]11174; GFX90A-NEXT:    ;;#ASMEND11175; GFX90A-NEXT:    s_setpc_b64 s[30:31]11176;11177; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_4_2:11178; GFX942:       ; %bb.0:11179; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11180; GFX942-NEXT:    ;;#ASMSTART11181; GFX942-NEXT:    ; def s[0:1]11182; GFX942-NEXT:    ;;#ASMEND11183; GFX942-NEXT:    ;;#ASMSTART11184; GFX942-NEXT:    ; def s[8:9]11185; GFX942-NEXT:    ;;#ASMEND11186; GFX942-NEXT:    s_lshr_b32 s1, s1, 1611187; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s011188; GFX942-NEXT:    ;;#ASMSTART11189; GFX942-NEXT:    ; use s[8:9]11190; GFX942-NEXT:    ;;#ASMEND11191; GFX942-NEXT:    s_setpc_b64 s[30:31]11192  %vec0 = call <4 x i16> asm "; def $0", "=s"()11193  %vec1 = call <4 x i16> asm "; def $0", "=s"()11194  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 4, i32 2>11195  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11196  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)11197  ret void11198}11199 11200define void @s_shuffle_v3i16_v4i16__7_5_2() {11201; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_5_2:11202; GFX900:       ; %bb.0:11203; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11204; GFX900-NEXT:    ;;#ASMSTART11205; GFX900-NEXT:    ; def s[8:9]11206; GFX900-NEXT:    ;;#ASMEND11207; GFX900-NEXT:    ;;#ASMSTART11208; GFX900-NEXT:    ; def s[4:5]11209; GFX900-NEXT:    ;;#ASMEND11210; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s411211; GFX900-NEXT:    ;;#ASMSTART11212; GFX900-NEXT:    ; use s[8:9]11213; GFX900-NEXT:    ;;#ASMEND11214; GFX900-NEXT:    s_setpc_b64 s[30:31]11215;11216; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_5_2:11217; GFX90A:       ; %bb.0:11218; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11219; GFX90A-NEXT:    ;;#ASMSTART11220; GFX90A-NEXT:    ; def s[8:9]11221; GFX90A-NEXT:    ;;#ASMEND11222; GFX90A-NEXT:    ;;#ASMSTART11223; GFX90A-NEXT:    ; def s[4:5]11224; GFX90A-NEXT:    ;;#ASMEND11225; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s411226; GFX90A-NEXT:    ;;#ASMSTART11227; GFX90A-NEXT:    ; use s[8:9]11228; GFX90A-NEXT:    ;;#ASMEND11229; GFX90A-NEXT:    s_setpc_b64 s[30:31]11230;11231; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_5_2:11232; GFX942:       ; %bb.0:11233; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11234; GFX942-NEXT:    ;;#ASMSTART11235; GFX942-NEXT:    ; def s[8:9]11236; GFX942-NEXT:    ;;#ASMEND11237; GFX942-NEXT:    ;;#ASMSTART11238; GFX942-NEXT:    ; def s[0:1]11239; GFX942-NEXT:    ;;#ASMEND11240; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s011241; GFX942-NEXT:    ;;#ASMSTART11242; GFX942-NEXT:    ; use s[8:9]11243; GFX942-NEXT:    ;;#ASMEND11244; GFX942-NEXT:    s_setpc_b64 s[30:31]11245  %vec0 = call <4 x i16> asm "; def $0", "=s"()11246  %vec1 = call <4 x i16> asm "; def $0", "=s"()11247  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 5, i32 2>11248  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11249  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)11250  ret void11251}11252 11253define void @s_shuffle_v3i16_v4i16__7_6_2() {11254; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_6_2:11255; GFX900:       ; %bb.0:11256; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11257; GFX900-NEXT:    ;;#ASMSTART11258; GFX900-NEXT:    ; def s[4:5]11259; GFX900-NEXT:    ;;#ASMEND11260; GFX900-NEXT:    ;;#ASMSTART11261; GFX900-NEXT:    ; def s[8:9]11262; GFX900-NEXT:    ;;#ASMEND11263; GFX900-NEXT:    s_lshr_b32 s4, s5, 1611264; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s511265; GFX900-NEXT:    ;;#ASMSTART11266; GFX900-NEXT:    ; use s[8:9]11267; GFX900-NEXT:    ;;#ASMEND11268; GFX900-NEXT:    s_setpc_b64 s[30:31]11269;11270; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_6_2:11271; GFX90A:       ; %bb.0:11272; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11273; GFX90A-NEXT:    ;;#ASMSTART11274; GFX90A-NEXT:    ; def s[4:5]11275; GFX90A-NEXT:    ;;#ASMEND11276; GFX90A-NEXT:    ;;#ASMSTART11277; GFX90A-NEXT:    ; def s[8:9]11278; GFX90A-NEXT:    ;;#ASMEND11279; GFX90A-NEXT:    s_lshr_b32 s4, s5, 1611280; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s511281; GFX90A-NEXT:    ;;#ASMSTART11282; GFX90A-NEXT:    ; use s[8:9]11283; GFX90A-NEXT:    ;;#ASMEND11284; GFX90A-NEXT:    s_setpc_b64 s[30:31]11285;11286; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_6_2:11287; GFX942:       ; %bb.0:11288; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11289; GFX942-NEXT:    ;;#ASMSTART11290; GFX942-NEXT:    ; def s[0:1]11291; GFX942-NEXT:    ;;#ASMEND11292; GFX942-NEXT:    ;;#ASMSTART11293; GFX942-NEXT:    ; def s[8:9]11294; GFX942-NEXT:    ;;#ASMEND11295; GFX942-NEXT:    s_lshr_b32 s0, s1, 1611296; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s111297; GFX942-NEXT:    ;;#ASMSTART11298; GFX942-NEXT:    ; use s[8:9]11299; GFX942-NEXT:    ;;#ASMEND11300; GFX942-NEXT:    s_setpc_b64 s[30:31]11301  %vec0 = call <4 x i16> asm "; def $0", "=s"()11302  %vec1 = call <4 x i16> asm "; def $0", "=s"()11303  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 6, i32 2>11304  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11305  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)11306  ret void11307}11308 11309define void @s_shuffle_v3i16_v4i16__u_3_3() {11310; GFX900-LABEL: s_shuffle_v3i16_v4i16__u_3_3:11311; GFX900:       ; %bb.0:11312; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11313; GFX900-NEXT:    ;;#ASMSTART11314; GFX900-NEXT:    ; def s[4:5]11315; GFX900-NEXT:    ;;#ASMEND11316; GFX900-NEXT:    s_lshr_b32 s9, s5, 1611317; GFX900-NEXT:    s_mov_b32 s8, s511318; GFX900-NEXT:    ;;#ASMSTART11319; GFX900-NEXT:    ; use s[8:9]11320; GFX900-NEXT:    ;;#ASMEND11321; GFX900-NEXT:    s_setpc_b64 s[30:31]11322;11323; GFX90A-LABEL: s_shuffle_v3i16_v4i16__u_3_3:11324; GFX90A:       ; %bb.0:11325; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11326; GFX90A-NEXT:    ;;#ASMSTART11327; GFX90A-NEXT:    ; def s[4:5]11328; GFX90A-NEXT:    ;;#ASMEND11329; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1611330; GFX90A-NEXT:    s_mov_b32 s8, s511331; GFX90A-NEXT:    ;;#ASMSTART11332; GFX90A-NEXT:    ; use s[8:9]11333; GFX90A-NEXT:    ;;#ASMEND11334; GFX90A-NEXT:    s_setpc_b64 s[30:31]11335;11336; GFX942-LABEL: s_shuffle_v3i16_v4i16__u_3_3:11337; GFX942:       ; %bb.0:11338; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11339; GFX942-NEXT:    ;;#ASMSTART11340; GFX942-NEXT:    ; def s[0:1]11341; GFX942-NEXT:    ;;#ASMEND11342; GFX942-NEXT:    s_lshr_b32 s9, s1, 1611343; GFX942-NEXT:    s_mov_b32 s8, s111344; GFX942-NEXT:    ;;#ASMSTART11345; GFX942-NEXT:    ; use s[8:9]11346; GFX942-NEXT:    ;;#ASMEND11347; GFX942-NEXT:    s_setpc_b64 s[30:31]11348  %vec0 = call <4 x i16> asm "; def $0", "=s"()11349  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 poison, i32 3, i32 3>11350  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11351  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)11352  ret void11353}11354 11355define void @s_shuffle_v3i16_v4i16__0_3_3() {11356; GFX900-LABEL: s_shuffle_v3i16_v4i16__0_3_3:11357; GFX900:       ; %bb.0:11358; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11359; GFX900-NEXT:    ;;#ASMSTART11360; GFX900-NEXT:    ; def s[4:5]11361; GFX900-NEXT:    ;;#ASMEND11362; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s4, s511363; GFX900-NEXT:    s_lshr_b32 s9, s5, 1611364; GFX900-NEXT:    ;;#ASMSTART11365; GFX900-NEXT:    ; use s[8:9]11366; GFX900-NEXT:    ;;#ASMEND11367; GFX900-NEXT:    s_setpc_b64 s[30:31]11368;11369; GFX90A-LABEL: s_shuffle_v3i16_v4i16__0_3_3:11370; GFX90A:       ; %bb.0:11371; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11372; GFX90A-NEXT:    ;;#ASMSTART11373; GFX90A-NEXT:    ; def s[4:5]11374; GFX90A-NEXT:    ;;#ASMEND11375; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s4, s511376; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1611377; GFX90A-NEXT:    ;;#ASMSTART11378; GFX90A-NEXT:    ; use s[8:9]11379; GFX90A-NEXT:    ;;#ASMEND11380; GFX90A-NEXT:    s_setpc_b64 s[30:31]11381;11382; GFX942-LABEL: s_shuffle_v3i16_v4i16__0_3_3:11383; GFX942:       ; %bb.0:11384; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11385; GFX942-NEXT:    ;;#ASMSTART11386; GFX942-NEXT:    ; def s[0:1]11387; GFX942-NEXT:    ;;#ASMEND11388; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s0, s111389; GFX942-NEXT:    s_lshr_b32 s9, s1, 1611390; GFX942-NEXT:    ;;#ASMSTART11391; GFX942-NEXT:    ; use s[8:9]11392; GFX942-NEXT:    ;;#ASMEND11393; GFX942-NEXT:    s_setpc_b64 s[30:31]11394  %vec0 = call <4 x i16> asm "; def $0", "=s"()11395  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 3, i32 3>11396  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11397  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)11398  ret void11399}11400 11401define void @s_shuffle_v3i16_v4i16__1_3_3() {11402; GFX900-LABEL: s_shuffle_v3i16_v4i16__1_3_3:11403; GFX900:       ; %bb.0:11404; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11405; GFX900-NEXT:    ;;#ASMSTART11406; GFX900-NEXT:    ; def s[4:5]11407; GFX900-NEXT:    ;;#ASMEND11408; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s511409; GFX900-NEXT:    s_lshr_b32 s9, s5, 1611410; GFX900-NEXT:    ;;#ASMSTART11411; GFX900-NEXT:    ; use s[8:9]11412; GFX900-NEXT:    ;;#ASMEND11413; GFX900-NEXT:    s_setpc_b64 s[30:31]11414;11415; GFX90A-LABEL: s_shuffle_v3i16_v4i16__1_3_3:11416; GFX90A:       ; %bb.0:11417; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11418; GFX90A-NEXT:    ;;#ASMSTART11419; GFX90A-NEXT:    ; def s[4:5]11420; GFX90A-NEXT:    ;;#ASMEND11421; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s511422; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1611423; GFX90A-NEXT:    ;;#ASMSTART11424; GFX90A-NEXT:    ; use s[8:9]11425; GFX90A-NEXT:    ;;#ASMEND11426; GFX90A-NEXT:    s_setpc_b64 s[30:31]11427;11428; GFX942-LABEL: s_shuffle_v3i16_v4i16__1_3_3:11429; GFX942:       ; %bb.0:11430; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11431; GFX942-NEXT:    ;;#ASMSTART11432; GFX942-NEXT:    ; def s[0:1]11433; GFX942-NEXT:    ;;#ASMEND11434; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s111435; GFX942-NEXT:    s_lshr_b32 s9, s1, 1611436; GFX942-NEXT:    ;;#ASMSTART11437; GFX942-NEXT:    ; use s[8:9]11438; GFX942-NEXT:    ;;#ASMEND11439; GFX942-NEXT:    s_setpc_b64 s[30:31]11440  %vec0 = call <4 x i16> asm "; def $0", "=s"()11441  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 1, i32 3, i32 3>11442  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11443  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)11444  ret void11445}11446 11447define void @s_shuffle_v3i16_v4i16__2_3_3() {11448; GFX900-LABEL: s_shuffle_v3i16_v4i16__2_3_3:11449; GFX900:       ; %bb.0:11450; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11451; GFX900-NEXT:    ;;#ASMSTART11452; GFX900-NEXT:    ; def s[4:5]11453; GFX900-NEXT:    ;;#ASMEND11454; GFX900-NEXT:    s_lshr_b32 s9, s5, 1611455; GFX900-NEXT:    s_mov_b32 s8, s511456; GFX900-NEXT:    ;;#ASMSTART11457; GFX900-NEXT:    ; use s[8:9]11458; GFX900-NEXT:    ;;#ASMEND11459; GFX900-NEXT:    s_setpc_b64 s[30:31]11460;11461; GFX90A-LABEL: s_shuffle_v3i16_v4i16__2_3_3:11462; GFX90A:       ; %bb.0:11463; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11464; GFX90A-NEXT:    ;;#ASMSTART11465; GFX90A-NEXT:    ; def s[4:5]11466; GFX90A-NEXT:    ;;#ASMEND11467; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1611468; GFX90A-NEXT:    s_mov_b32 s8, s511469; GFX90A-NEXT:    ;;#ASMSTART11470; GFX90A-NEXT:    ; use s[8:9]11471; GFX90A-NEXT:    ;;#ASMEND11472; GFX90A-NEXT:    s_setpc_b64 s[30:31]11473;11474; GFX942-LABEL: s_shuffle_v3i16_v4i16__2_3_3:11475; GFX942:       ; %bb.0:11476; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11477; GFX942-NEXT:    ;;#ASMSTART11478; GFX942-NEXT:    ; def s[0:1]11479; GFX942-NEXT:    ;;#ASMEND11480; GFX942-NEXT:    s_lshr_b32 s9, s1, 1611481; GFX942-NEXT:    s_mov_b32 s8, s111482; GFX942-NEXT:    ;;#ASMSTART11483; GFX942-NEXT:    ; use s[8:9]11484; GFX942-NEXT:    ;;#ASMEND11485; GFX942-NEXT:    s_setpc_b64 s[30:31]11486  %vec0 = call <4 x i16> asm "; def $0", "=s"()11487  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 2, i32 3, i32 3>11488  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11489  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)11490  ret void11491}11492 11493define void @s_shuffle_v3i16_v4i16__3_3_3() {11494; GFX900-LABEL: s_shuffle_v3i16_v4i16__3_3_3:11495; GFX900:       ; %bb.0:11496; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11497; GFX900-NEXT:    ;;#ASMSTART11498; GFX900-NEXT:    ; def s[4:5]11499; GFX900-NEXT:    ;;#ASMEND11500; GFX900-NEXT:    s_lshr_b32 s9, s5, 1611501; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s511502; GFX900-NEXT:    ;;#ASMSTART11503; GFX900-NEXT:    ; use s[8:9]11504; GFX900-NEXT:    ;;#ASMEND11505; GFX900-NEXT:    s_setpc_b64 s[30:31]11506;11507; GFX90A-LABEL: s_shuffle_v3i16_v4i16__3_3_3:11508; GFX90A:       ; %bb.0:11509; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11510; GFX90A-NEXT:    ;;#ASMSTART11511; GFX90A-NEXT:    ; def s[4:5]11512; GFX90A-NEXT:    ;;#ASMEND11513; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1611514; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s511515; GFX90A-NEXT:    ;;#ASMSTART11516; GFX90A-NEXT:    ; use s[8:9]11517; GFX90A-NEXT:    ;;#ASMEND11518; GFX90A-NEXT:    s_setpc_b64 s[30:31]11519;11520; GFX942-LABEL: s_shuffle_v3i16_v4i16__3_3_3:11521; GFX942:       ; %bb.0:11522; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11523; GFX942-NEXT:    ;;#ASMSTART11524; GFX942-NEXT:    ; def s[0:1]11525; GFX942-NEXT:    ;;#ASMEND11526; GFX942-NEXT:    s_lshr_b32 s9, s1, 1611527; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s111528; GFX942-NEXT:    ;;#ASMSTART11529; GFX942-NEXT:    ; use s[8:9]11530; GFX942-NEXT:    ;;#ASMEND11531; GFX942-NEXT:    s_setpc_b64 s[30:31]11532  %vec0 = call <4 x i16> asm "; def $0", "=s"()11533  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 3, i32 3, i32 3>11534  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11535  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)11536  ret void11537}11538 11539define void @s_shuffle_v3i16_v4i16__4_3_3() {11540; GFX900-LABEL: s_shuffle_v3i16_v4i16__4_3_3:11541; GFX900:       ; %bb.0:11542; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11543; GFX900-NEXT:    ;;#ASMSTART11544; GFX900-NEXT:    ; def s[4:5]11545; GFX900-NEXT:    ;;#ASMEND11546; GFX900-NEXT:    s_lshr_b32 s9, s5, 1611547; GFX900-NEXT:    s_mov_b32 s8, s511548; GFX900-NEXT:    ;;#ASMSTART11549; GFX900-NEXT:    ; use s[8:9]11550; GFX900-NEXT:    ;;#ASMEND11551; GFX900-NEXT:    s_setpc_b64 s[30:31]11552;11553; GFX90A-LABEL: s_shuffle_v3i16_v4i16__4_3_3:11554; GFX90A:       ; %bb.0:11555; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11556; GFX90A-NEXT:    ;;#ASMSTART11557; GFX90A-NEXT:    ; def s[4:5]11558; GFX90A-NEXT:    ;;#ASMEND11559; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1611560; GFX90A-NEXT:    s_mov_b32 s8, s511561; GFX90A-NEXT:    ;;#ASMSTART11562; GFX90A-NEXT:    ; use s[8:9]11563; GFX90A-NEXT:    ;;#ASMEND11564; GFX90A-NEXT:    s_setpc_b64 s[30:31]11565;11566; GFX942-LABEL: s_shuffle_v3i16_v4i16__4_3_3:11567; GFX942:       ; %bb.0:11568; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11569; GFX942-NEXT:    ;;#ASMSTART11570; GFX942-NEXT:    ; def s[0:1]11571; GFX942-NEXT:    ;;#ASMEND11572; GFX942-NEXT:    s_lshr_b32 s9, s1, 1611573; GFX942-NEXT:    s_mov_b32 s8, s111574; GFX942-NEXT:    ;;#ASMSTART11575; GFX942-NEXT:    ; use s[8:9]11576; GFX942-NEXT:    ;;#ASMEND11577; GFX942-NEXT:    s_setpc_b64 s[30:31]11578  %vec0 = call <4 x i16> asm "; def $0", "=s"()11579  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 4, i32 3, i32 3>11580  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11581  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)11582  ret void11583}11584 11585define void @s_shuffle_v3i16_v4i16__5_3_3() {11586; GFX900-LABEL: s_shuffle_v3i16_v4i16__5_3_3:11587; GFX900:       ; %bb.0:11588; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11589; GFX900-NEXT:    ;;#ASMSTART11590; GFX900-NEXT:    ; def s[4:5]11591; GFX900-NEXT:    ;;#ASMEND11592; GFX900-NEXT:    ;;#ASMSTART11593; GFX900-NEXT:    ; def s[6:7]11594; GFX900-NEXT:    ;;#ASMEND11595; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s6, s511596; GFX900-NEXT:    s_lshr_b32 s9, s5, 1611597; GFX900-NEXT:    ;;#ASMSTART11598; GFX900-NEXT:    ; use s[8:9]11599; GFX900-NEXT:    ;;#ASMEND11600; GFX900-NEXT:    s_setpc_b64 s[30:31]11601;11602; GFX90A-LABEL: s_shuffle_v3i16_v4i16__5_3_3:11603; GFX90A:       ; %bb.0:11604; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11605; GFX90A-NEXT:    ;;#ASMSTART11606; GFX90A-NEXT:    ; def s[4:5]11607; GFX90A-NEXT:    ;;#ASMEND11608; GFX90A-NEXT:    ;;#ASMSTART11609; GFX90A-NEXT:    ; def s[6:7]11610; GFX90A-NEXT:    ;;#ASMEND11611; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s6, s511612; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1611613; GFX90A-NEXT:    ;;#ASMSTART11614; GFX90A-NEXT:    ; use s[8:9]11615; GFX90A-NEXT:    ;;#ASMEND11616; GFX90A-NEXT:    s_setpc_b64 s[30:31]11617;11618; GFX942-LABEL: s_shuffle_v3i16_v4i16__5_3_3:11619; GFX942:       ; %bb.0:11620; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11621; GFX942-NEXT:    ;;#ASMSTART11622; GFX942-NEXT:    ; def s[0:1]11623; GFX942-NEXT:    ;;#ASMEND11624; GFX942-NEXT:    ;;#ASMSTART11625; GFX942-NEXT:    ; def s[2:3]11626; GFX942-NEXT:    ;;#ASMEND11627; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s2, s111628; GFX942-NEXT:    s_lshr_b32 s9, s1, 1611629; GFX942-NEXT:    ;;#ASMSTART11630; GFX942-NEXT:    ; use s[8:9]11631; GFX942-NEXT:    ;;#ASMEND11632; GFX942-NEXT:    s_setpc_b64 s[30:31]11633  %vec0 = call <4 x i16> asm "; def $0", "=s"()11634  %vec1 = call <4 x i16> asm "; def $0", "=s"()11635  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 5, i32 3, i32 3>11636  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11637  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)11638  ret void11639}11640 11641define void @s_shuffle_v3i16_v4i16__6_3_3() {11642; GFX900-LABEL: s_shuffle_v3i16_v4i16__6_3_3:11643; GFX900:       ; %bb.0:11644; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11645; GFX900-NEXT:    ;;#ASMSTART11646; GFX900-NEXT:    ; def s[4:5]11647; GFX900-NEXT:    ;;#ASMEND11648; GFX900-NEXT:    ;;#ASMSTART11649; GFX900-NEXT:    ; def s[6:7]11650; GFX900-NEXT:    ;;#ASMEND11651; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s7, s511652; GFX900-NEXT:    s_lshr_b32 s9, s5, 1611653; GFX900-NEXT:    ;;#ASMSTART11654; GFX900-NEXT:    ; use s[8:9]11655; GFX900-NEXT:    ;;#ASMEND11656; GFX900-NEXT:    s_setpc_b64 s[30:31]11657;11658; GFX90A-LABEL: s_shuffle_v3i16_v4i16__6_3_3:11659; GFX90A:       ; %bb.0:11660; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11661; GFX90A-NEXT:    ;;#ASMSTART11662; GFX90A-NEXT:    ; def s[4:5]11663; GFX90A-NEXT:    ;;#ASMEND11664; GFX90A-NEXT:    ;;#ASMSTART11665; GFX90A-NEXT:    ; def s[6:7]11666; GFX90A-NEXT:    ;;#ASMEND11667; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s7, s511668; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1611669; GFX90A-NEXT:    ;;#ASMSTART11670; GFX90A-NEXT:    ; use s[8:9]11671; GFX90A-NEXT:    ;;#ASMEND11672; GFX90A-NEXT:    s_setpc_b64 s[30:31]11673;11674; GFX942-LABEL: s_shuffle_v3i16_v4i16__6_3_3:11675; GFX942:       ; %bb.0:11676; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11677; GFX942-NEXT:    ;;#ASMSTART11678; GFX942-NEXT:    ; def s[0:1]11679; GFX942-NEXT:    ;;#ASMEND11680; GFX942-NEXT:    ;;#ASMSTART11681; GFX942-NEXT:    ; def s[2:3]11682; GFX942-NEXT:    ;;#ASMEND11683; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s3, s111684; GFX942-NEXT:    s_lshr_b32 s9, s1, 1611685; GFX942-NEXT:    ;;#ASMSTART11686; GFX942-NEXT:    ; use s[8:9]11687; GFX942-NEXT:    ;;#ASMEND11688; GFX942-NEXT:    s_setpc_b64 s[30:31]11689  %vec0 = call <4 x i16> asm "; def $0", "=s"()11690  %vec1 = call <4 x i16> asm "; def $0", "=s"()11691  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 6, i32 3, i32 3>11692  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11693  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)11694  ret void11695}11696 11697define void @s_shuffle_v3i16_v4i16__7_3_3() {11698; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_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_hh_b32_b16 s8, s7, s511708; GFX900-NEXT:    s_lshr_b32 s9, s5, 1611709; 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_v3i16_v4i16__7_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_hh_b32_b16 s8, s7, s511724; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1611725; 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_v3i16_v4i16__7_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_hh_b32_b16 s8, s3, s111740; GFX942-NEXT:    s_lshr_b32 s9, s1, 1611741; 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  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 3, i32 3>11748  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11749  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)11750  ret void11751}11752 11753define void @s_shuffle_v3i16_v4i16__7_u_3() {11754; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_u_3:11755; GFX900:       ; %bb.0:11756; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11757; GFX900-NEXT:    ;;#ASMSTART11758; GFX900-NEXT:    ; def s[4:5]11759; GFX900-NEXT:    ;;#ASMEND11760; GFX900-NEXT:    ;;#ASMSTART11761; GFX900-NEXT:    ; def s[6:7]11762; GFX900-NEXT:    ;;#ASMEND11763; GFX900-NEXT:    s_lshr_b32 s9, s5, 1611764; GFX900-NEXT:    s_lshr_b32 s8, s7, 1611765; GFX900-NEXT:    ;;#ASMSTART11766; GFX900-NEXT:    ; use s[8:9]11767; GFX900-NEXT:    ;;#ASMEND11768; GFX900-NEXT:    s_setpc_b64 s[30:31]11769;11770; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_u_3:11771; GFX90A:       ; %bb.0:11772; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11773; GFX90A-NEXT:    ;;#ASMSTART11774; GFX90A-NEXT:    ; def s[4:5]11775; GFX90A-NEXT:    ;;#ASMEND11776; GFX90A-NEXT:    ;;#ASMSTART11777; GFX90A-NEXT:    ; def s[6:7]11778; GFX90A-NEXT:    ;;#ASMEND11779; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1611780; GFX90A-NEXT:    s_lshr_b32 s8, s7, 1611781; GFX90A-NEXT:    ;;#ASMSTART11782; GFX90A-NEXT:    ; use s[8:9]11783; GFX90A-NEXT:    ;;#ASMEND11784; GFX90A-NEXT:    s_setpc_b64 s[30:31]11785;11786; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_u_3:11787; GFX942:       ; %bb.0:11788; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11789; GFX942-NEXT:    ;;#ASMSTART11790; GFX942-NEXT:    ; def s[0:1]11791; GFX942-NEXT:    ;;#ASMEND11792; GFX942-NEXT:    ;;#ASMSTART11793; GFX942-NEXT:    ; def s[2:3]11794; GFX942-NEXT:    ;;#ASMEND11795; GFX942-NEXT:    s_lshr_b32 s9, s1, 1611796; GFX942-NEXT:    s_lshr_b32 s8, s3, 1611797; GFX942-NEXT:    ;;#ASMSTART11798; GFX942-NEXT:    ; use s[8:9]11799; GFX942-NEXT:    ;;#ASMEND11800; GFX942-NEXT:    s_setpc_b64 s[30:31]11801  %vec0 = call <4 x i16> asm "; def $0", "=s"()11802  %vec1 = call <4 x i16> asm "; def $0", "=s"()11803  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 poison, i32 3>11804  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11805  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)11806  ret void11807}11808 11809define void @s_shuffle_v3i16_v4i16__7_0_3() {11810; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_0_3:11811; GFX900:       ; %bb.0:11812; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11813; GFX900-NEXT:    ;;#ASMSTART11814; GFX900-NEXT:    ; def s[6:7]11815; GFX900-NEXT:    ;;#ASMEND11816; GFX900-NEXT:    s_lshr_b32 s6, s7, 1611817; GFX900-NEXT:    ;;#ASMSTART11818; GFX900-NEXT:    ; def s[4:5]11819; GFX900-NEXT:    ;;#ASMEND11820; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s6, s411821; GFX900-NEXT:    s_lshr_b32 s9, s5, 1611822; GFX900-NEXT:    ;;#ASMSTART11823; GFX900-NEXT:    ; use s[8:9]11824; GFX900-NEXT:    ;;#ASMEND11825; GFX900-NEXT:    s_setpc_b64 s[30:31]11826;11827; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_0_3:11828; GFX90A:       ; %bb.0:11829; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11830; GFX90A-NEXT:    ;;#ASMSTART11831; GFX90A-NEXT:    ; def s[6:7]11832; GFX90A-NEXT:    ;;#ASMEND11833; GFX90A-NEXT:    s_lshr_b32 s6, s7, 1611834; GFX90A-NEXT:    ;;#ASMSTART11835; GFX90A-NEXT:    ; def s[4:5]11836; GFX90A-NEXT:    ;;#ASMEND11837; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s6, s411838; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1611839; GFX90A-NEXT:    ;;#ASMSTART11840; GFX90A-NEXT:    ; use s[8:9]11841; GFX90A-NEXT:    ;;#ASMEND11842; GFX90A-NEXT:    s_setpc_b64 s[30:31]11843;11844; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_0_3:11845; GFX942:       ; %bb.0:11846; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11847; GFX942-NEXT:    ;;#ASMSTART11848; GFX942-NEXT:    ; def s[2:3]11849; GFX942-NEXT:    ;;#ASMEND11850; GFX942-NEXT:    s_lshr_b32 s2, s3, 1611851; GFX942-NEXT:    ;;#ASMSTART11852; GFX942-NEXT:    ; def s[0:1]11853; GFX942-NEXT:    ;;#ASMEND11854; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s2, s011855; GFX942-NEXT:    s_lshr_b32 s9, s1, 1611856; GFX942-NEXT:    ;;#ASMSTART11857; GFX942-NEXT:    ; use s[8:9]11858; GFX942-NEXT:    ;;#ASMEND11859; GFX942-NEXT:    s_setpc_b64 s[30:31]11860  %vec0 = call <4 x i16> asm "; def $0", "=s"()11861  %vec1 = call <4 x i16> asm "; def $0", "=s"()11862  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 0, i32 3>11863  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11864  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)11865  ret void11866}11867 11868define void @s_shuffle_v3i16_v4i16__7_1_3() {11869; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_1_3:11870; GFX900:       ; %bb.0:11871; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11872; GFX900-NEXT:    ;;#ASMSTART11873; GFX900-NEXT:    ; def s[4:5]11874; GFX900-NEXT:    ;;#ASMEND11875; GFX900-NEXT:    ;;#ASMSTART11876; GFX900-NEXT:    ; def s[6:7]11877; GFX900-NEXT:    ;;#ASMEND11878; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s7, s411879; GFX900-NEXT:    s_lshr_b32 s9, s5, 1611880; GFX900-NEXT:    ;;#ASMSTART11881; GFX900-NEXT:    ; use s[8:9]11882; GFX900-NEXT:    ;;#ASMEND11883; GFX900-NEXT:    s_setpc_b64 s[30:31]11884;11885; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_1_3:11886; GFX90A:       ; %bb.0:11887; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11888; GFX90A-NEXT:    ;;#ASMSTART11889; GFX90A-NEXT:    ; def s[4:5]11890; GFX90A-NEXT:    ;;#ASMEND11891; GFX90A-NEXT:    ;;#ASMSTART11892; GFX90A-NEXT:    ; def s[6:7]11893; GFX90A-NEXT:    ;;#ASMEND11894; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s7, s411895; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1611896; GFX90A-NEXT:    ;;#ASMSTART11897; GFX90A-NEXT:    ; use s[8:9]11898; GFX90A-NEXT:    ;;#ASMEND11899; GFX90A-NEXT:    s_setpc_b64 s[30:31]11900;11901; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_1_3:11902; GFX942:       ; %bb.0:11903; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11904; GFX942-NEXT:    ;;#ASMSTART11905; GFX942-NEXT:    ; def s[0:1]11906; GFX942-NEXT:    ;;#ASMEND11907; GFX942-NEXT:    ;;#ASMSTART11908; GFX942-NEXT:    ; def s[2:3]11909; GFX942-NEXT:    ;;#ASMEND11910; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s3, s011911; GFX942-NEXT:    s_lshr_b32 s9, s1, 1611912; GFX942-NEXT:    ;;#ASMSTART11913; GFX942-NEXT:    ; use s[8:9]11914; GFX942-NEXT:    ;;#ASMEND11915; GFX942-NEXT:    s_setpc_b64 s[30:31]11916  %vec0 = call <4 x i16> asm "; def $0", "=s"()11917  %vec1 = call <4 x i16> asm "; def $0", "=s"()11918  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 1, i32 3>11919  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11920  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)11921  ret void11922}11923 11924define void @s_shuffle_v3i16_v4i16__7_2_3() {11925; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_2_3:11926; GFX900:       ; %bb.0:11927; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11928; GFX900-NEXT:    ;;#ASMSTART11929; GFX900-NEXT:    ; def s[4:5]11930; GFX900-NEXT:    ;;#ASMEND11931; GFX900-NEXT:    ;;#ASMSTART11932; GFX900-NEXT:    ; def s[6:7]11933; GFX900-NEXT:    ;;#ASMEND11934; GFX900-NEXT:    s_lshr_b32 s4, s7, 1611935; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s511936; GFX900-NEXT:    s_lshr_b32 s9, s5, 1611937; GFX900-NEXT:    ;;#ASMSTART11938; GFX900-NEXT:    ; use s[8:9]11939; GFX900-NEXT:    ;;#ASMEND11940; GFX900-NEXT:    s_setpc_b64 s[30:31]11941;11942; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_2_3:11943; GFX90A:       ; %bb.0:11944; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11945; GFX90A-NEXT:    ;;#ASMSTART11946; GFX90A-NEXT:    ; def s[4:5]11947; GFX90A-NEXT:    ;;#ASMEND11948; GFX90A-NEXT:    ;;#ASMSTART11949; GFX90A-NEXT:    ; def s[6:7]11950; GFX90A-NEXT:    ;;#ASMEND11951; GFX90A-NEXT:    s_lshr_b32 s4, s7, 1611952; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s511953; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1611954; GFX90A-NEXT:    ;;#ASMSTART11955; GFX90A-NEXT:    ; use s[8:9]11956; GFX90A-NEXT:    ;;#ASMEND11957; GFX90A-NEXT:    s_setpc_b64 s[30:31]11958;11959; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_2_3:11960; GFX942:       ; %bb.0:11961; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11962; GFX942-NEXT:    ;;#ASMSTART11963; GFX942-NEXT:    ; def s[0:1]11964; GFX942-NEXT:    ;;#ASMEND11965; GFX942-NEXT:    ;;#ASMSTART11966; GFX942-NEXT:    ; def s[2:3]11967; GFX942-NEXT:    ;;#ASMEND11968; GFX942-NEXT:    s_lshr_b32 s0, s3, 1611969; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s111970; GFX942-NEXT:    s_lshr_b32 s9, s1, 1611971; GFX942-NEXT:    ;;#ASMSTART11972; GFX942-NEXT:    ; use s[8:9]11973; GFX942-NEXT:    ;;#ASMEND11974; GFX942-NEXT:    s_setpc_b64 s[30:31]11975  %vec0 = call <4 x i16> asm "; def $0", "=s"()11976  %vec1 = call <4 x i16> asm "; def $0", "=s"()11977  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 2, i32 3>11978  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11979  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)11980  ret void11981}11982 11983define void @s_shuffle_v3i16_v4i16__7_4_3() {11984; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_4_3:11985; GFX900:       ; %bb.0:11986; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11987; GFX900-NEXT:    ;;#ASMSTART11988; GFX900-NEXT:    ; def s[4:5]11989; GFX900-NEXT:    ;;#ASMEND11990; GFX900-NEXT:    ;;#ASMSTART11991; GFX900-NEXT:    ; def s[6:7]11992; GFX900-NEXT:    ;;#ASMEND11993; GFX900-NEXT:    s_lshr_b32 s4, s7, 1611994; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s611995; GFX900-NEXT:    s_lshr_b32 s9, s5, 1611996; GFX900-NEXT:    ;;#ASMSTART11997; GFX900-NEXT:    ; use s[8:9]11998; GFX900-NEXT:    ;;#ASMEND11999; GFX900-NEXT:    s_setpc_b64 s[30:31]12000;12001; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_4_3:12002; GFX90A:       ; %bb.0:12003; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12004; GFX90A-NEXT:    ;;#ASMSTART12005; GFX90A-NEXT:    ; def s[4:5]12006; GFX90A-NEXT:    ;;#ASMEND12007; GFX90A-NEXT:    ;;#ASMSTART12008; GFX90A-NEXT:    ; def s[6:7]12009; GFX90A-NEXT:    ;;#ASMEND12010; GFX90A-NEXT:    s_lshr_b32 s4, s7, 1612011; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s612012; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1612013; GFX90A-NEXT:    ;;#ASMSTART12014; GFX90A-NEXT:    ; use s[8:9]12015; GFX90A-NEXT:    ;;#ASMEND12016; GFX90A-NEXT:    s_setpc_b64 s[30:31]12017;12018; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_4_3:12019; GFX942:       ; %bb.0:12020; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12021; GFX942-NEXT:    ;;#ASMSTART12022; GFX942-NEXT:    ; def s[0:1]12023; GFX942-NEXT:    ;;#ASMEND12024; GFX942-NEXT:    ;;#ASMSTART12025; GFX942-NEXT:    ; def s[2:3]12026; GFX942-NEXT:    ;;#ASMEND12027; GFX942-NEXT:    s_lshr_b32 s0, s3, 1612028; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s212029; GFX942-NEXT:    s_lshr_b32 s9, s1, 1612030; GFX942-NEXT:    ;;#ASMSTART12031; GFX942-NEXT:    ; use s[8:9]12032; GFX942-NEXT:    ;;#ASMEND12033; GFX942-NEXT:    s_setpc_b64 s[30:31]12034  %vec0 = call <4 x i16> asm "; def $0", "=s"()12035  %vec1 = call <4 x i16> asm "; def $0", "=s"()12036  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 4, i32 3>12037  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12038  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)12039  ret void12040}12041 12042define void @s_shuffle_v3i16_v4i16__7_5_3() {12043; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_5_3:12044; GFX900:       ; %bb.0:12045; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12046; GFX900-NEXT:    ;;#ASMSTART12047; GFX900-NEXT:    ; def s[4:5]12048; GFX900-NEXT:    ;;#ASMEND12049; GFX900-NEXT:    ;;#ASMSTART12050; GFX900-NEXT:    ; def s[6:7]12051; GFX900-NEXT:    ;;#ASMEND12052; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s7, s612053; GFX900-NEXT:    s_lshr_b32 s9, s5, 1612054; GFX900-NEXT:    ;;#ASMSTART12055; GFX900-NEXT:    ; use s[8:9]12056; GFX900-NEXT:    ;;#ASMEND12057; GFX900-NEXT:    s_setpc_b64 s[30:31]12058;12059; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_5_3:12060; GFX90A:       ; %bb.0:12061; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12062; GFX90A-NEXT:    ;;#ASMSTART12063; GFX90A-NEXT:    ; def s[4:5]12064; GFX90A-NEXT:    ;;#ASMEND12065; GFX90A-NEXT:    ;;#ASMSTART12066; GFX90A-NEXT:    ; def s[6:7]12067; GFX90A-NEXT:    ;;#ASMEND12068; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s7, s612069; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1612070; GFX90A-NEXT:    ;;#ASMSTART12071; GFX90A-NEXT:    ; use s[8:9]12072; GFX90A-NEXT:    ;;#ASMEND12073; GFX90A-NEXT:    s_setpc_b64 s[30:31]12074;12075; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_5_3:12076; GFX942:       ; %bb.0:12077; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12078; GFX942-NEXT:    ;;#ASMSTART12079; GFX942-NEXT:    ; def s[0:1]12080; GFX942-NEXT:    ;;#ASMEND12081; GFX942-NEXT:    ;;#ASMSTART12082; GFX942-NEXT:    ; def s[2:3]12083; GFX942-NEXT:    ;;#ASMEND12084; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s3, s212085; GFX942-NEXT:    s_lshr_b32 s9, s1, 1612086; GFX942-NEXT:    ;;#ASMSTART12087; GFX942-NEXT:    ; use s[8:9]12088; GFX942-NEXT:    ;;#ASMEND12089; GFX942-NEXT:    s_setpc_b64 s[30:31]12090  %vec0 = call <4 x i16> asm "; def $0", "=s"()12091  %vec1 = call <4 x i16> asm "; def $0", "=s"()12092  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 5, i32 3>12093  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12094  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)12095  ret void12096}12097 12098define void @s_shuffle_v3i16_v4i16__7_6_3() {12099; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_6_3:12100; GFX900:       ; %bb.0:12101; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12102; GFX900-NEXT:    ;;#ASMSTART12103; GFX900-NEXT:    ; def s[4:5]12104; GFX900-NEXT:    ;;#ASMEND12105; GFX900-NEXT:    ;;#ASMSTART12106; GFX900-NEXT:    ; def s[6:7]12107; GFX900-NEXT:    ;;#ASMEND12108; GFX900-NEXT:    s_lshr_b32 s4, s7, 1612109; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s712110; GFX900-NEXT:    s_lshr_b32 s9, s5, 1612111; GFX900-NEXT:    ;;#ASMSTART12112; GFX900-NEXT:    ; use s[8:9]12113; GFX900-NEXT:    ;;#ASMEND12114; GFX900-NEXT:    s_setpc_b64 s[30:31]12115;12116; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_6_3:12117; GFX90A:       ; %bb.0:12118; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12119; GFX90A-NEXT:    ;;#ASMSTART12120; GFX90A-NEXT:    ; def s[4:5]12121; GFX90A-NEXT:    ;;#ASMEND12122; GFX90A-NEXT:    ;;#ASMSTART12123; GFX90A-NEXT:    ; def s[6:7]12124; GFX90A-NEXT:    ;;#ASMEND12125; GFX90A-NEXT:    s_lshr_b32 s4, s7, 1612126; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s712127; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1612128; GFX90A-NEXT:    ;;#ASMSTART12129; GFX90A-NEXT:    ; use s[8:9]12130; GFX90A-NEXT:    ;;#ASMEND12131; GFX90A-NEXT:    s_setpc_b64 s[30:31]12132;12133; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_6_3:12134; GFX942:       ; %bb.0:12135; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12136; GFX942-NEXT:    ;;#ASMSTART12137; GFX942-NEXT:    ; def s[0:1]12138; GFX942-NEXT:    ;;#ASMEND12139; GFX942-NEXT:    ;;#ASMSTART12140; GFX942-NEXT:    ; def s[2:3]12141; GFX942-NEXT:    ;;#ASMEND12142; GFX942-NEXT:    s_lshr_b32 s0, s3, 1612143; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s312144; GFX942-NEXT:    s_lshr_b32 s9, s1, 1612145; GFX942-NEXT:    ;;#ASMSTART12146; GFX942-NEXT:    ; use s[8:9]12147; GFX942-NEXT:    ;;#ASMEND12148; GFX942-NEXT:    s_setpc_b64 s[30:31]12149  %vec0 = call <4 x i16> asm "; def $0", "=s"()12150  %vec1 = call <4 x i16> asm "; def $0", "=s"()12151  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 6, i32 3>12152  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12153  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)12154  ret void12155}12156 12157define void @s_shuffle_v3i16_v4i16__u_4_4() {12158; GFX9-LABEL: s_shuffle_v3i16_v4i16__u_4_4:12159; GFX9:       ; %bb.0:12160; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12161; GFX9-NEXT:    ;;#ASMSTART12162; GFX9-NEXT:    ; use s[8:9]12163; GFX9-NEXT:    ;;#ASMEND12164; GFX9-NEXT:    s_setpc_b64 s[30:31]12165  %vec0 = call <4 x i16> asm "; def $0", "=s"()12166  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 poison, i32 4, i32 4>12167  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12168  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)12169  ret void12170}12171 12172define void @s_shuffle_v3i16_v4i16__0_4_4() {12173; GFX900-LABEL: s_shuffle_v3i16_v4i16__0_4_4:12174; GFX900:       ; %bb.0:12175; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12176; GFX900-NEXT:    ;;#ASMSTART12177; GFX900-NEXT:    ; def s[8:9]12178; GFX900-NEXT:    ;;#ASMEND12179; GFX900-NEXT:    ;;#ASMSTART12180; GFX900-NEXT:    ; use s[8:9]12181; GFX900-NEXT:    ;;#ASMEND12182; GFX900-NEXT:    s_setpc_b64 s[30:31]12183;12184; GFX90A-LABEL: s_shuffle_v3i16_v4i16__0_4_4:12185; GFX90A:       ; %bb.0:12186; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12187; GFX90A-NEXT:    ;;#ASMSTART12188; GFX90A-NEXT:    ; def s[8:9]12189; GFX90A-NEXT:    ;;#ASMEND12190; GFX90A-NEXT:    ;;#ASMSTART12191; GFX90A-NEXT:    ; use s[8:9]12192; GFX90A-NEXT:    ;;#ASMEND12193; GFX90A-NEXT:    s_setpc_b64 s[30:31]12194;12195; GFX942-LABEL: s_shuffle_v3i16_v4i16__0_4_4:12196; GFX942:       ; %bb.0:12197; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12198; GFX942-NEXT:    ;;#ASMSTART12199; GFX942-NEXT:    ; def s[8:9]12200; GFX942-NEXT:    ;;#ASMEND12201; GFX942-NEXT:    s_nop 012202; GFX942-NEXT:    ;;#ASMSTART12203; GFX942-NEXT:    ; use s[8:9]12204; GFX942-NEXT:    ;;#ASMEND12205; GFX942-NEXT:    s_setpc_b64 s[30:31]12206  %vec0 = call <4 x i16> asm "; def $0", "=s"()12207  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 0, i32 4, i32 4>12208  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12209  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)12210  ret void12211}12212 12213define void @s_shuffle_v3i16_v4i16__1_4_4() {12214; GFX900-LABEL: s_shuffle_v3i16_v4i16__1_4_4:12215; GFX900:       ; %bb.0:12216; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12217; GFX900-NEXT:    ;;#ASMSTART12218; GFX900-NEXT:    ; def s[4:5]12219; GFX900-NEXT:    ;;#ASMEND12220; GFX900-NEXT:    s_lshr_b32 s8, s4, 1612221; GFX900-NEXT:    ;;#ASMSTART12222; GFX900-NEXT:    ; use s[8:9]12223; GFX900-NEXT:    ;;#ASMEND12224; GFX900-NEXT:    s_setpc_b64 s[30:31]12225;12226; GFX90A-LABEL: s_shuffle_v3i16_v4i16__1_4_4:12227; GFX90A:       ; %bb.0:12228; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12229; GFX90A-NEXT:    ;;#ASMSTART12230; GFX90A-NEXT:    ; def s[4:5]12231; GFX90A-NEXT:    ;;#ASMEND12232; GFX90A-NEXT:    s_lshr_b32 s8, s4, 1612233; GFX90A-NEXT:    ;;#ASMSTART12234; GFX90A-NEXT:    ; use s[8:9]12235; GFX90A-NEXT:    ;;#ASMEND12236; GFX90A-NEXT:    s_setpc_b64 s[30:31]12237;12238; GFX942-LABEL: s_shuffle_v3i16_v4i16__1_4_4:12239; GFX942:       ; %bb.0:12240; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12241; GFX942-NEXT:    ;;#ASMSTART12242; GFX942-NEXT:    ; def s[0:1]12243; GFX942-NEXT:    ;;#ASMEND12244; GFX942-NEXT:    s_lshr_b32 s8, s0, 1612245; 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  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 1, i32 4, i32 4>12251  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12252  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)12253  ret void12254}12255 12256define void @s_shuffle_v3i16_v4i16__2_4_4() {12257; GFX900-LABEL: s_shuffle_v3i16_v4i16__2_4_4:12258; GFX900:       ; %bb.0:12259; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12260; GFX900-NEXT:    ;;#ASMSTART12261; GFX900-NEXT:    ; def s[4:5]12262; GFX900-NEXT:    ;;#ASMEND12263; GFX900-NEXT:    s_mov_b32 s8, s512264; GFX900-NEXT:    ;;#ASMSTART12265; GFX900-NEXT:    ; use s[8:9]12266; GFX900-NEXT:    ;;#ASMEND12267; GFX900-NEXT:    s_setpc_b64 s[30:31]12268;12269; GFX90A-LABEL: s_shuffle_v3i16_v4i16__2_4_4:12270; GFX90A:       ; %bb.0:12271; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12272; GFX90A-NEXT:    ;;#ASMSTART12273; GFX90A-NEXT:    ; def s[4:5]12274; GFX90A-NEXT:    ;;#ASMEND12275; GFX90A-NEXT:    s_mov_b32 s8, s512276; GFX90A-NEXT:    ;;#ASMSTART12277; GFX90A-NEXT:    ; use s[8:9]12278; GFX90A-NEXT:    ;;#ASMEND12279; GFX90A-NEXT:    s_setpc_b64 s[30:31]12280;12281; GFX942-LABEL: s_shuffle_v3i16_v4i16__2_4_4:12282; GFX942:       ; %bb.0:12283; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12284; GFX942-NEXT:    ;;#ASMSTART12285; GFX942-NEXT:    ; def s[0:1]12286; GFX942-NEXT:    ;;#ASMEND12287; GFX942-NEXT:    s_mov_b32 s8, s112288; GFX942-NEXT:    ;;#ASMSTART12289; GFX942-NEXT:    ; use s[8:9]12290; GFX942-NEXT:    ;;#ASMEND12291; GFX942-NEXT:    s_setpc_b64 s[30:31]12292  %vec0 = call <4 x i16> asm "; def $0", "=s"()12293  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 2, i32 4, i32 4>12294  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12295  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)12296  ret void12297}12298 12299define void @s_shuffle_v3i16_v4i16__3_4_4() {12300; GFX900-LABEL: s_shuffle_v3i16_v4i16__3_4_4:12301; GFX900:       ; %bb.0:12302; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12303; GFX900-NEXT:    ;;#ASMSTART12304; GFX900-NEXT:    ; def s[4:5]12305; GFX900-NEXT:    ;;#ASMEND12306; GFX900-NEXT:    s_lshr_b32 s8, s5, 1612307; GFX900-NEXT:    ;;#ASMSTART12308; GFX900-NEXT:    ; use s[8:9]12309; GFX900-NEXT:    ;;#ASMEND12310; GFX900-NEXT:    s_setpc_b64 s[30:31]12311;12312; GFX90A-LABEL: s_shuffle_v3i16_v4i16__3_4_4:12313; GFX90A:       ; %bb.0:12314; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12315; GFX90A-NEXT:    ;;#ASMSTART12316; GFX90A-NEXT:    ; def s[4:5]12317; GFX90A-NEXT:    ;;#ASMEND12318; GFX90A-NEXT:    s_lshr_b32 s8, s5, 1612319; GFX90A-NEXT:    ;;#ASMSTART12320; GFX90A-NEXT:    ; use s[8:9]12321; GFX90A-NEXT:    ;;#ASMEND12322; GFX90A-NEXT:    s_setpc_b64 s[30:31]12323;12324; GFX942-LABEL: s_shuffle_v3i16_v4i16__3_4_4:12325; GFX942:       ; %bb.0:12326; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12327; GFX942-NEXT:    ;;#ASMSTART12328; GFX942-NEXT:    ; def s[0:1]12329; GFX942-NEXT:    ;;#ASMEND12330; GFX942-NEXT:    s_lshr_b32 s8, s1, 1612331; GFX942-NEXT:    ;;#ASMSTART12332; GFX942-NEXT:    ; use s[8:9]12333; GFX942-NEXT:    ;;#ASMEND12334; GFX942-NEXT:    s_setpc_b64 s[30:31]12335  %vec0 = call <4 x i16> asm "; def $0", "=s"()12336  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 3, i32 4, i32 4>12337  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12338  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)12339  ret void12340}12341 12342define void @s_shuffle_v3i16_v4i16__4_4_4() {12343; GFX9-LABEL: s_shuffle_v3i16_v4i16__4_4_4:12344; GFX9:       ; %bb.0:12345; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12346; GFX9-NEXT:    ;;#ASMSTART12347; GFX9-NEXT:    ; use s[8:9]12348; GFX9-NEXT:    ;;#ASMEND12349; GFX9-NEXT:    s_setpc_b64 s[30:31]12350  %vec0 = call <4 x i16> asm "; def $0", "=s"()12351  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <3 x i32> <i32 4, i32 4, i32 4>12352  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12353  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)12354  ret void12355}12356 12357define void @s_shuffle_v3i16_v4i16__5_4_4() {12358; GFX900-LABEL: s_shuffle_v3i16_v4i16__5_4_4:12359; GFX900:       ; %bb.0:12360; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12361; GFX900-NEXT:    ;;#ASMSTART12362; GFX900-NEXT:    ; def s[4:5]12363; GFX900-NEXT:    ;;#ASMEND12364; GFX900-NEXT:    s_lshr_b32 s5, s4, 1612365; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s412366; GFX900-NEXT:    s_mov_b32 s9, s412367; GFX900-NEXT:    ;;#ASMSTART12368; GFX900-NEXT:    ; use s[8:9]12369; GFX900-NEXT:    ;;#ASMEND12370; GFX900-NEXT:    s_setpc_b64 s[30:31]12371;12372; GFX90A-LABEL: s_shuffle_v3i16_v4i16__5_4_4:12373; GFX90A:       ; %bb.0:12374; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12375; GFX90A-NEXT:    ;;#ASMSTART12376; GFX90A-NEXT:    ; def s[4:5]12377; GFX90A-NEXT:    ;;#ASMEND12378; GFX90A-NEXT:    s_lshr_b32 s5, s4, 1612379; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s412380; GFX90A-NEXT:    s_mov_b32 s9, s412381; GFX90A-NEXT:    ;;#ASMSTART12382; GFX90A-NEXT:    ; use s[8:9]12383; GFX90A-NEXT:    ;;#ASMEND12384; GFX90A-NEXT:    s_setpc_b64 s[30:31]12385;12386; GFX942-LABEL: s_shuffle_v3i16_v4i16__5_4_4:12387; GFX942:       ; %bb.0:12388; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12389; GFX942-NEXT:    ;;#ASMSTART12390; GFX942-NEXT:    ; def s[0:1]12391; GFX942-NEXT:    ;;#ASMEND12392; GFX942-NEXT:    s_lshr_b32 s1, s0, 1612393; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s012394; GFX942-NEXT:    s_mov_b32 s9, s012395; GFX942-NEXT:    ;;#ASMSTART12396; GFX942-NEXT:    ; use s[8:9]12397; GFX942-NEXT:    ;;#ASMEND12398; GFX942-NEXT:    s_setpc_b64 s[30:31]12399  %vec0 = call <4 x i16> asm "; def $0", "=s"()12400  %vec1 = call <4 x i16> asm "; def $0", "=s"()12401  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 5, i32 4, i32 4>12402  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12403  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)12404  ret void12405}12406 12407define void @s_shuffle_v3i16_v4i16__6_4_4() {12408; GFX900-LABEL: s_shuffle_v3i16_v4i16__6_4_4:12409; GFX900:       ; %bb.0:12410; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12411; GFX900-NEXT:    ;;#ASMSTART12412; GFX900-NEXT:    ; def s[4:5]12413; GFX900-NEXT:    ;;#ASMEND12414; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s412415; GFX900-NEXT:    s_mov_b32 s9, s412416; GFX900-NEXT:    ;;#ASMSTART12417; GFX900-NEXT:    ; use s[8:9]12418; GFX900-NEXT:    ;;#ASMEND12419; GFX900-NEXT:    s_setpc_b64 s[30:31]12420;12421; GFX90A-LABEL: s_shuffle_v3i16_v4i16__6_4_4:12422; GFX90A:       ; %bb.0:12423; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12424; GFX90A-NEXT:    ;;#ASMSTART12425; GFX90A-NEXT:    ; def s[4:5]12426; GFX90A-NEXT:    ;;#ASMEND12427; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s412428; GFX90A-NEXT:    s_mov_b32 s9, s412429; GFX90A-NEXT:    ;;#ASMSTART12430; GFX90A-NEXT:    ; use s[8:9]12431; GFX90A-NEXT:    ;;#ASMEND12432; GFX90A-NEXT:    s_setpc_b64 s[30:31]12433;12434; GFX942-LABEL: s_shuffle_v3i16_v4i16__6_4_4:12435; GFX942:       ; %bb.0:12436; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12437; GFX942-NEXT:    ;;#ASMSTART12438; GFX942-NEXT:    ; def s[0:1]12439; GFX942-NEXT:    ;;#ASMEND12440; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s012441; GFX942-NEXT:    s_mov_b32 s9, s012442; GFX942-NEXT:    ;;#ASMSTART12443; GFX942-NEXT:    ; use s[8:9]12444; GFX942-NEXT:    ;;#ASMEND12445; GFX942-NEXT:    s_setpc_b64 s[30:31]12446  %vec0 = call <4 x i16> asm "; def $0", "=s"()12447  %vec1 = call <4 x i16> asm "; def $0", "=s"()12448  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 6, i32 4, i32 4>12449  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12450  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)12451  ret void12452}12453 12454define void @s_shuffle_v3i16_v4i16__7_4_4() {12455; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_4_4:12456; GFX900:       ; %bb.0:12457; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12458; GFX900-NEXT:    ;;#ASMSTART12459; GFX900-NEXT:    ; def s[4:5]12460; GFX900-NEXT:    ;;#ASMEND12461; GFX900-NEXT:    s_lshr_b32 s5, s5, 1612462; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s412463; GFX900-NEXT:    s_mov_b32 s9, s412464; GFX900-NEXT:    ;;#ASMSTART12465; GFX900-NEXT:    ; use s[8:9]12466; GFX900-NEXT:    ;;#ASMEND12467; GFX900-NEXT:    s_setpc_b64 s[30:31]12468;12469; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_4_4:12470; GFX90A:       ; %bb.0:12471; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12472; GFX90A-NEXT:    ;;#ASMSTART12473; GFX90A-NEXT:    ; def s[4:5]12474; GFX90A-NEXT:    ;;#ASMEND12475; GFX90A-NEXT:    s_lshr_b32 s5, s5, 1612476; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s412477; GFX90A-NEXT:    s_mov_b32 s9, s412478; GFX90A-NEXT:    ;;#ASMSTART12479; GFX90A-NEXT:    ; use s[8:9]12480; GFX90A-NEXT:    ;;#ASMEND12481; GFX90A-NEXT:    s_setpc_b64 s[30:31]12482;12483; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_4_4:12484; GFX942:       ; %bb.0:12485; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12486; GFX942-NEXT:    ;;#ASMSTART12487; GFX942-NEXT:    ; def s[0:1]12488; GFX942-NEXT:    ;;#ASMEND12489; GFX942-NEXT:    s_lshr_b32 s1, s1, 1612490; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s012491; GFX942-NEXT:    s_mov_b32 s9, s012492; GFX942-NEXT:    ;;#ASMSTART12493; GFX942-NEXT:    ; use s[8:9]12494; GFX942-NEXT:    ;;#ASMEND12495; GFX942-NEXT:    s_setpc_b64 s[30:31]12496  %vec0 = call <4 x i16> asm "; def $0", "=s"()12497  %vec1 = call <4 x i16> asm "; def $0", "=s"()12498  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 4, i32 4>12499  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12500  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)12501  ret void12502}12503 12504define void @s_shuffle_v3i16_v4i16__7_u_4() {12505; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_u_4:12506; GFX900:       ; %bb.0:12507; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12508; GFX900-NEXT:    ;;#ASMSTART12509; GFX900-NEXT:    ; def s[4:5]12510; GFX900-NEXT:    ;;#ASMEND12511; GFX900-NEXT:    s_lshr_b32 s8, s5, 1612512; GFX900-NEXT:    s_mov_b32 s9, s412513; GFX900-NEXT:    ;;#ASMSTART12514; GFX900-NEXT:    ; use s[8:9]12515; GFX900-NEXT:    ;;#ASMEND12516; GFX900-NEXT:    s_setpc_b64 s[30:31]12517;12518; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_u_4:12519; GFX90A:       ; %bb.0:12520; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12521; GFX90A-NEXT:    ;;#ASMSTART12522; GFX90A-NEXT:    ; def s[4:5]12523; GFX90A-NEXT:    ;;#ASMEND12524; GFX90A-NEXT:    s_lshr_b32 s8, s5, 1612525; GFX90A-NEXT:    s_mov_b32 s9, s412526; GFX90A-NEXT:    ;;#ASMSTART12527; GFX90A-NEXT:    ; use s[8:9]12528; GFX90A-NEXT:    ;;#ASMEND12529; GFX90A-NEXT:    s_setpc_b64 s[30:31]12530;12531; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_u_4:12532; GFX942:       ; %bb.0:12533; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12534; GFX942-NEXT:    ;;#ASMSTART12535; GFX942-NEXT:    ; def s[0:1]12536; GFX942-NEXT:    ;;#ASMEND12537; GFX942-NEXT:    s_lshr_b32 s8, s1, 1612538; GFX942-NEXT:    s_mov_b32 s9, s012539; GFX942-NEXT:    ;;#ASMSTART12540; GFX942-NEXT:    ; use s[8:9]12541; GFX942-NEXT:    ;;#ASMEND12542; GFX942-NEXT:    s_setpc_b64 s[30:31]12543  %vec0 = call <4 x i16> asm "; def $0", "=s"()12544  %vec1 = call <4 x i16> asm "; def $0", "=s"()12545  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 poison, i32 4>12546  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12547  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)12548  ret void12549}12550 12551define void @s_shuffle_v3i16_v4i16__7_0_4() {12552; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_0_4:12553; GFX900:       ; %bb.0:12554; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12555; GFX900-NEXT:    ;;#ASMSTART12556; GFX900-NEXT:    ; def s[4:5]12557; GFX900-NEXT:    ;;#ASMEND12558; GFX900-NEXT:    ;;#ASMSTART12559; GFX900-NEXT:    ; def s[6:7]12560; GFX900-NEXT:    ;;#ASMEND12561; GFX900-NEXT:    s_lshr_b32 s5, s7, 1612562; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s412563; GFX900-NEXT:    s_mov_b32 s9, s612564; GFX900-NEXT:    ;;#ASMSTART12565; GFX900-NEXT:    ; use s[8:9]12566; GFX900-NEXT:    ;;#ASMEND12567; GFX900-NEXT:    s_setpc_b64 s[30:31]12568;12569; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_0_4:12570; GFX90A:       ; %bb.0:12571; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12572; GFX90A-NEXT:    ;;#ASMSTART12573; GFX90A-NEXT:    ; def s[4:5]12574; GFX90A-NEXT:    ;;#ASMEND12575; GFX90A-NEXT:    ;;#ASMSTART12576; GFX90A-NEXT:    ; def s[6:7]12577; GFX90A-NEXT:    ;;#ASMEND12578; GFX90A-NEXT:    s_lshr_b32 s5, s7, 1612579; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s412580; GFX90A-NEXT:    s_mov_b32 s9, s612581; GFX90A-NEXT:    ;;#ASMSTART12582; GFX90A-NEXT:    ; use s[8:9]12583; GFX90A-NEXT:    ;;#ASMEND12584; GFX90A-NEXT:    s_setpc_b64 s[30:31]12585;12586; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_0_4:12587; GFX942:       ; %bb.0:12588; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12589; GFX942-NEXT:    ;;#ASMSTART12590; GFX942-NEXT:    ; def s[0:1]12591; GFX942-NEXT:    ;;#ASMEND12592; GFX942-NEXT:    ;;#ASMSTART12593; GFX942-NEXT:    ; def s[2:3]12594; GFX942-NEXT:    ;;#ASMEND12595; GFX942-NEXT:    s_lshr_b32 s1, s3, 1612596; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s012597; GFX942-NEXT:    s_mov_b32 s9, s212598; GFX942-NEXT:    ;;#ASMSTART12599; GFX942-NEXT:    ; use s[8:9]12600; GFX942-NEXT:    ;;#ASMEND12601; GFX942-NEXT:    s_setpc_b64 s[30:31]12602  %vec0 = call <4 x i16> asm "; def $0", "=s"()12603  %vec1 = call <4 x i16> asm "; def $0", "=s"()12604  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 0, i32 4>12605  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12606  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)12607  ret void12608}12609 12610define void @s_shuffle_v3i16_v4i16__7_1_4() {12611; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_1_4:12612; GFX900:       ; %bb.0:12613; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12614; GFX900-NEXT:    ;;#ASMSTART12615; GFX900-NEXT:    ; def s[4:5]12616; GFX900-NEXT:    ;;#ASMEND12617; GFX900-NEXT:    ;;#ASMSTART12618; GFX900-NEXT:    ; def s[6:7]12619; GFX900-NEXT:    ;;#ASMEND12620; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s7, s412621; GFX900-NEXT:    s_mov_b32 s9, s612622; GFX900-NEXT:    ;;#ASMSTART12623; GFX900-NEXT:    ; use s[8:9]12624; GFX900-NEXT:    ;;#ASMEND12625; GFX900-NEXT:    s_setpc_b64 s[30:31]12626;12627; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_1_4:12628; GFX90A:       ; %bb.0:12629; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12630; GFX90A-NEXT:    ;;#ASMSTART12631; GFX90A-NEXT:    ; def s[4:5]12632; GFX90A-NEXT:    ;;#ASMEND12633; GFX90A-NEXT:    ;;#ASMSTART12634; GFX90A-NEXT:    ; def s[6:7]12635; GFX90A-NEXT:    ;;#ASMEND12636; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s7, s412637; GFX90A-NEXT:    s_mov_b32 s9, s612638; GFX90A-NEXT:    ;;#ASMSTART12639; GFX90A-NEXT:    ; use s[8:9]12640; GFX90A-NEXT:    ;;#ASMEND12641; GFX90A-NEXT:    s_setpc_b64 s[30:31]12642;12643; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_1_4:12644; GFX942:       ; %bb.0:12645; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12646; GFX942-NEXT:    ;;#ASMSTART12647; GFX942-NEXT:    ; def s[0:1]12648; GFX942-NEXT:    ;;#ASMEND12649; GFX942-NEXT:    ;;#ASMSTART12650; GFX942-NEXT:    ; def s[2:3]12651; GFX942-NEXT:    ;;#ASMEND12652; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s3, s012653; GFX942-NEXT:    s_mov_b32 s9, s212654; GFX942-NEXT:    ;;#ASMSTART12655; GFX942-NEXT:    ; use s[8:9]12656; GFX942-NEXT:    ;;#ASMEND12657; GFX942-NEXT:    s_setpc_b64 s[30:31]12658  %vec0 = call <4 x i16> asm "; def $0", "=s"()12659  %vec1 = call <4 x i16> asm "; def $0", "=s"()12660  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 1, i32 4>12661  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12662  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)12663  ret void12664}12665 12666define void @s_shuffle_v3i16_v4i16__7_2_4() {12667; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_2_4:12668; GFX900:       ; %bb.0:12669; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12670; GFX900-NEXT:    ;;#ASMSTART12671; GFX900-NEXT:    ; def s[4:5]12672; GFX900-NEXT:    ;;#ASMEND12673; GFX900-NEXT:    ;;#ASMSTART12674; GFX900-NEXT:    ; def s[6:7]12675; GFX900-NEXT:    ;;#ASMEND12676; GFX900-NEXT:    s_lshr_b32 s4, s7, 1612677; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s512678; GFX900-NEXT:    s_mov_b32 s9, s612679; GFX900-NEXT:    ;;#ASMSTART12680; GFX900-NEXT:    ; use s[8:9]12681; GFX900-NEXT:    ;;#ASMEND12682; GFX900-NEXT:    s_setpc_b64 s[30:31]12683;12684; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_2_4:12685; GFX90A:       ; %bb.0:12686; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12687; GFX90A-NEXT:    ;;#ASMSTART12688; GFX90A-NEXT:    ; def s[4:5]12689; GFX90A-NEXT:    ;;#ASMEND12690; GFX90A-NEXT:    ;;#ASMSTART12691; GFX90A-NEXT:    ; def s[6:7]12692; GFX90A-NEXT:    ;;#ASMEND12693; GFX90A-NEXT:    s_lshr_b32 s4, s7, 1612694; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s512695; GFX90A-NEXT:    s_mov_b32 s9, s612696; GFX90A-NEXT:    ;;#ASMSTART12697; GFX90A-NEXT:    ; use s[8:9]12698; GFX90A-NEXT:    ;;#ASMEND12699; GFX90A-NEXT:    s_setpc_b64 s[30:31]12700;12701; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_2_4:12702; GFX942:       ; %bb.0:12703; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12704; GFX942-NEXT:    ;;#ASMSTART12705; GFX942-NEXT:    ; def s[0:1]12706; GFX942-NEXT:    ;;#ASMEND12707; GFX942-NEXT:    ;;#ASMSTART12708; GFX942-NEXT:    ; def s[2:3]12709; GFX942-NEXT:    ;;#ASMEND12710; GFX942-NEXT:    s_lshr_b32 s0, s3, 1612711; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s112712; GFX942-NEXT:    s_mov_b32 s9, s212713; GFX942-NEXT:    ;;#ASMSTART12714; GFX942-NEXT:    ; use s[8:9]12715; GFX942-NEXT:    ;;#ASMEND12716; GFX942-NEXT:    s_setpc_b64 s[30:31]12717  %vec0 = call <4 x i16> asm "; def $0", "=s"()12718  %vec1 = call <4 x i16> asm "; def $0", "=s"()12719  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 2, i32 4>12720  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12721  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)12722  ret void12723}12724 12725define void @s_shuffle_v3i16_v4i16__7_3_4() {12726; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_3_4:12727; GFX900:       ; %bb.0:12728; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12729; GFX900-NEXT:    ;;#ASMSTART12730; GFX900-NEXT:    ; def s[4:5]12731; GFX900-NEXT:    ;;#ASMEND12732; GFX900-NEXT:    ;;#ASMSTART12733; GFX900-NEXT:    ; def s[6:7]12734; GFX900-NEXT:    ;;#ASMEND12735; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s7, s512736; GFX900-NEXT:    s_mov_b32 s9, s612737; GFX900-NEXT:    ;;#ASMSTART12738; GFX900-NEXT:    ; use s[8:9]12739; GFX900-NEXT:    ;;#ASMEND12740; GFX900-NEXT:    s_setpc_b64 s[30:31]12741;12742; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_3_4:12743; GFX90A:       ; %bb.0:12744; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12745; GFX90A-NEXT:    ;;#ASMSTART12746; GFX90A-NEXT:    ; def s[4:5]12747; GFX90A-NEXT:    ;;#ASMEND12748; GFX90A-NEXT:    ;;#ASMSTART12749; GFX90A-NEXT:    ; def s[6:7]12750; GFX90A-NEXT:    ;;#ASMEND12751; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s7, s512752; GFX90A-NEXT:    s_mov_b32 s9, s612753; GFX90A-NEXT:    ;;#ASMSTART12754; GFX90A-NEXT:    ; use s[8:9]12755; GFX90A-NEXT:    ;;#ASMEND12756; GFX90A-NEXT:    s_setpc_b64 s[30:31]12757;12758; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_3_4:12759; GFX942:       ; %bb.0:12760; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12761; GFX942-NEXT:    ;;#ASMSTART12762; GFX942-NEXT:    ; def s[0:1]12763; GFX942-NEXT:    ;;#ASMEND12764; GFX942-NEXT:    ;;#ASMSTART12765; GFX942-NEXT:    ; def s[2:3]12766; GFX942-NEXT:    ;;#ASMEND12767; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s3, s112768; GFX942-NEXT:    s_mov_b32 s9, s212769; GFX942-NEXT:    ;;#ASMSTART12770; GFX942-NEXT:    ; use s[8:9]12771; GFX942-NEXT:    ;;#ASMEND12772; GFX942-NEXT:    s_setpc_b64 s[30:31]12773  %vec0 = call <4 x i16> asm "; def $0", "=s"()12774  %vec1 = call <4 x i16> asm "; def $0", "=s"()12775  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 3, i32 4>12776  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12777  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)12778  ret void12779}12780 12781define void @s_shuffle_v3i16_v4i16__7_5_4() {12782; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_5_4:12783; GFX900:       ; %bb.0:12784; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12785; GFX900-NEXT:    ;;#ASMSTART12786; GFX900-NEXT:    ; def s[4:5]12787; GFX900-NEXT:    ;;#ASMEND12788; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s412789; GFX900-NEXT:    s_mov_b32 s9, s412790; GFX900-NEXT:    ;;#ASMSTART12791; GFX900-NEXT:    ; use s[8:9]12792; GFX900-NEXT:    ;;#ASMEND12793; GFX900-NEXT:    s_setpc_b64 s[30:31]12794;12795; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_5_4:12796; GFX90A:       ; %bb.0:12797; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12798; GFX90A-NEXT:    ;;#ASMSTART12799; GFX90A-NEXT:    ; def s[4:5]12800; GFX90A-NEXT:    ;;#ASMEND12801; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s412802; GFX90A-NEXT:    s_mov_b32 s9, s412803; GFX90A-NEXT:    ;;#ASMSTART12804; GFX90A-NEXT:    ; use s[8:9]12805; GFX90A-NEXT:    ;;#ASMEND12806; GFX90A-NEXT:    s_setpc_b64 s[30:31]12807;12808; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_5_4:12809; GFX942:       ; %bb.0:12810; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12811; GFX942-NEXT:    ;;#ASMSTART12812; GFX942-NEXT:    ; def s[0:1]12813; GFX942-NEXT:    ;;#ASMEND12814; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s012815; GFX942-NEXT:    s_mov_b32 s9, s012816; GFX942-NEXT:    ;;#ASMSTART12817; GFX942-NEXT:    ; use s[8:9]12818; GFX942-NEXT:    ;;#ASMEND12819; GFX942-NEXT:    s_setpc_b64 s[30:31]12820  %vec0 = call <4 x i16> asm "; def $0", "=s"()12821  %vec1 = call <4 x i16> asm "; def $0", "=s"()12822  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 5, i32 4>12823  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12824  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)12825  ret void12826}12827 12828define void @s_shuffle_v3i16_v4i16__7_6_4() {12829; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_6_4:12830; GFX900:       ; %bb.0:12831; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12832; GFX900-NEXT:    ;;#ASMSTART12833; GFX900-NEXT:    ; def s[4:5]12834; GFX900-NEXT:    ;;#ASMEND12835; GFX900-NEXT:    s_lshr_b32 s6, s5, 1612836; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s6, s512837; GFX900-NEXT:    s_mov_b32 s9, s412838; GFX900-NEXT:    ;;#ASMSTART12839; GFX900-NEXT:    ; use s[8:9]12840; GFX900-NEXT:    ;;#ASMEND12841; GFX900-NEXT:    s_setpc_b64 s[30:31]12842;12843; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_6_4:12844; GFX90A:       ; %bb.0:12845; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12846; GFX90A-NEXT:    ;;#ASMSTART12847; GFX90A-NEXT:    ; def s[4:5]12848; GFX90A-NEXT:    ;;#ASMEND12849; GFX90A-NEXT:    s_lshr_b32 s6, s5, 1612850; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s6, s512851; GFX90A-NEXT:    s_mov_b32 s9, s412852; GFX90A-NEXT:    ;;#ASMSTART12853; GFX90A-NEXT:    ; use s[8:9]12854; GFX90A-NEXT:    ;;#ASMEND12855; GFX90A-NEXT:    s_setpc_b64 s[30:31]12856;12857; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_6_4:12858; GFX942:       ; %bb.0:12859; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12860; GFX942-NEXT:    ;;#ASMSTART12861; GFX942-NEXT:    ; def s[0:1]12862; GFX942-NEXT:    ;;#ASMEND12863; GFX942-NEXT:    s_lshr_b32 s2, s1, 1612864; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s2, s112865; GFX942-NEXT:    s_mov_b32 s9, s012866; GFX942-NEXT:    ;;#ASMSTART12867; GFX942-NEXT:    ; use s[8:9]12868; GFX942-NEXT:    ;;#ASMEND12869; GFX942-NEXT:    s_setpc_b64 s[30:31]12870  %vec0 = call <4 x i16> asm "; def $0", "=s"()12871  %vec1 = call <4 x i16> asm "; def $0", "=s"()12872  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 6, i32 4>12873  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12874  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)12875  ret void12876}12877 12878define void @s_shuffle_v3i16_v4i16__u_5_5() {12879; GFX9-LABEL: s_shuffle_v3i16_v4i16__u_5_5:12880; GFX9:       ; %bb.0:12881; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12882; GFX9-NEXT:    ;;#ASMSTART12883; GFX9-NEXT:    ; def s[8:9]12884; GFX9-NEXT:    ;;#ASMEND12885; GFX9-NEXT:    s_lshr_b32 s9, s8, 1612886; GFX9-NEXT:    ;;#ASMSTART12887; GFX9-NEXT:    ; use s[8:9]12888; GFX9-NEXT:    ;;#ASMEND12889; GFX9-NEXT:    s_setpc_b64 s[30:31]12890  %vec0 = call <4 x i16> asm "; def $0", "=s"()12891  %vec1 = call <4 x i16> asm "; def $0", "=s"()12892  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 poison, i32 5, i32 5>12893  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12894  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)12895  ret void12896}12897 12898define void @s_shuffle_v3i16_v4i16__0_5_5() {12899; GFX900-LABEL: s_shuffle_v3i16_v4i16__0_5_5:12900; GFX900:       ; %bb.0:12901; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12902; GFX900-NEXT:    ;;#ASMSTART12903; GFX900-NEXT:    ; def s[4:5]12904; GFX900-NEXT:    ;;#ASMEND12905; GFX900-NEXT:    ;;#ASMSTART12906; GFX900-NEXT:    ; def s[6:7]12907; GFX900-NEXT:    ;;#ASMEND12908; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s4, s612909; GFX900-NEXT:    s_lshr_b32 s9, s6, 1612910; GFX900-NEXT:    ;;#ASMSTART12911; GFX900-NEXT:    ; use s[8:9]12912; GFX900-NEXT:    ;;#ASMEND12913; GFX900-NEXT:    s_setpc_b64 s[30:31]12914;12915; GFX90A-LABEL: s_shuffle_v3i16_v4i16__0_5_5:12916; GFX90A:       ; %bb.0:12917; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12918; GFX90A-NEXT:    ;;#ASMSTART12919; GFX90A-NEXT:    ; def s[4:5]12920; GFX90A-NEXT:    ;;#ASMEND12921; GFX90A-NEXT:    ;;#ASMSTART12922; GFX90A-NEXT:    ; def s[6:7]12923; GFX90A-NEXT:    ;;#ASMEND12924; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s4, s612925; GFX90A-NEXT:    s_lshr_b32 s9, s6, 1612926; GFX90A-NEXT:    ;;#ASMSTART12927; GFX90A-NEXT:    ; use s[8:9]12928; GFX90A-NEXT:    ;;#ASMEND12929; GFX90A-NEXT:    s_setpc_b64 s[30:31]12930;12931; GFX942-LABEL: s_shuffle_v3i16_v4i16__0_5_5:12932; GFX942:       ; %bb.0:12933; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12934; GFX942-NEXT:    ;;#ASMSTART12935; GFX942-NEXT:    ; def s[0:1]12936; GFX942-NEXT:    ;;#ASMEND12937; GFX942-NEXT:    ;;#ASMSTART12938; GFX942-NEXT:    ; def s[2:3]12939; GFX942-NEXT:    ;;#ASMEND12940; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s0, s212941; GFX942-NEXT:    s_lshr_b32 s9, s2, 1612942; GFX942-NEXT:    ;;#ASMSTART12943; GFX942-NEXT:    ; use s[8:9]12944; GFX942-NEXT:    ;;#ASMEND12945; GFX942-NEXT:    s_setpc_b64 s[30:31]12946  %vec0 = call <4 x i16> asm "; def $0", "=s"()12947  %vec1 = call <4 x i16> asm "; def $0", "=s"()12948  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 0, i32 5, i32 5>12949  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12950  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)12951  ret void12952}12953 12954define void @s_shuffle_v3i16_v4i16__1_5_5() {12955; GFX900-LABEL: s_shuffle_v3i16_v4i16__1_5_5:12956; GFX900:       ; %bb.0:12957; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12958; GFX900-NEXT:    ;;#ASMSTART12959; GFX900-NEXT:    ; def s[4:5]12960; GFX900-NEXT:    ;;#ASMEND12961; GFX900-NEXT:    ;;#ASMSTART12962; GFX900-NEXT:    ; def s[6:7]12963; GFX900-NEXT:    ;;#ASMEND12964; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s612965; GFX900-NEXT:    s_lshr_b32 s9, s6, 1612966; GFX900-NEXT:    ;;#ASMSTART12967; GFX900-NEXT:    ; use s[8:9]12968; GFX900-NEXT:    ;;#ASMEND12969; GFX900-NEXT:    s_setpc_b64 s[30:31]12970;12971; GFX90A-LABEL: s_shuffle_v3i16_v4i16__1_5_5:12972; GFX90A:       ; %bb.0:12973; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12974; GFX90A-NEXT:    ;;#ASMSTART12975; GFX90A-NEXT:    ; def s[4:5]12976; GFX90A-NEXT:    ;;#ASMEND12977; GFX90A-NEXT:    ;;#ASMSTART12978; GFX90A-NEXT:    ; def s[6:7]12979; GFX90A-NEXT:    ;;#ASMEND12980; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s612981; GFX90A-NEXT:    s_lshr_b32 s9, s6, 1612982; GFX90A-NEXT:    ;;#ASMSTART12983; GFX90A-NEXT:    ; use s[8:9]12984; GFX90A-NEXT:    ;;#ASMEND12985; GFX90A-NEXT:    s_setpc_b64 s[30:31]12986;12987; GFX942-LABEL: s_shuffle_v3i16_v4i16__1_5_5:12988; GFX942:       ; %bb.0:12989; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12990; GFX942-NEXT:    ;;#ASMSTART12991; GFX942-NEXT:    ; def s[0:1]12992; GFX942-NEXT:    ;;#ASMEND12993; GFX942-NEXT:    ;;#ASMSTART12994; GFX942-NEXT:    ; def s[2:3]12995; GFX942-NEXT:    ;;#ASMEND12996; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s212997; GFX942-NEXT:    s_lshr_b32 s9, s2, 1612998; GFX942-NEXT:    ;;#ASMSTART12999; GFX942-NEXT:    ; use s[8:9]13000; GFX942-NEXT:    ;;#ASMEND13001; GFX942-NEXT:    s_setpc_b64 s[30:31]13002  %vec0 = call <4 x i16> asm "; def $0", "=s"()13003  %vec1 = call <4 x i16> asm "; def $0", "=s"()13004  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 1, i32 5, i32 5>13005  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13006  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)13007  ret void13008}13009 13010define void @s_shuffle_v3i16_v4i16__2_5_5() {13011; GFX900-LABEL: s_shuffle_v3i16_v4i16__2_5_5:13012; GFX900:       ; %bb.0:13013; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13014; GFX900-NEXT:    ;;#ASMSTART13015; GFX900-NEXT:    ; def s[4:5]13016; GFX900-NEXT:    ;;#ASMEND13017; GFX900-NEXT:    ;;#ASMSTART13018; GFX900-NEXT:    ; def s[6:7]13019; GFX900-NEXT:    ;;#ASMEND13020; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s5, s613021; GFX900-NEXT:    s_lshr_b32 s9, s6, 1613022; GFX900-NEXT:    ;;#ASMSTART13023; GFX900-NEXT:    ; use s[8:9]13024; GFX900-NEXT:    ;;#ASMEND13025; GFX900-NEXT:    s_setpc_b64 s[30:31]13026;13027; GFX90A-LABEL: s_shuffle_v3i16_v4i16__2_5_5:13028; GFX90A:       ; %bb.0:13029; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13030; GFX90A-NEXT:    ;;#ASMSTART13031; GFX90A-NEXT:    ; def s[4:5]13032; GFX90A-NEXT:    ;;#ASMEND13033; GFX90A-NEXT:    ;;#ASMSTART13034; GFX90A-NEXT:    ; def s[6:7]13035; GFX90A-NEXT:    ;;#ASMEND13036; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s5, s613037; GFX90A-NEXT:    s_lshr_b32 s9, s6, 1613038; GFX90A-NEXT:    ;;#ASMSTART13039; GFX90A-NEXT:    ; use s[8:9]13040; GFX90A-NEXT:    ;;#ASMEND13041; GFX90A-NEXT:    s_setpc_b64 s[30:31]13042;13043; GFX942-LABEL: s_shuffle_v3i16_v4i16__2_5_5:13044; GFX942:       ; %bb.0:13045; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13046; GFX942-NEXT:    ;;#ASMSTART13047; GFX942-NEXT:    ; def s[0:1]13048; GFX942-NEXT:    ;;#ASMEND13049; GFX942-NEXT:    ;;#ASMSTART13050; GFX942-NEXT:    ; def s[2:3]13051; GFX942-NEXT:    ;;#ASMEND13052; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s1, s213053; GFX942-NEXT:    s_lshr_b32 s9, s2, 1613054; GFX942-NEXT:    ;;#ASMSTART13055; GFX942-NEXT:    ; use s[8:9]13056; GFX942-NEXT:    ;;#ASMEND13057; GFX942-NEXT:    s_setpc_b64 s[30:31]13058  %vec0 = call <4 x i16> asm "; def $0", "=s"()13059  %vec1 = call <4 x i16> asm "; def $0", "=s"()13060  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 2, i32 5, i32 5>13061  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13062  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)13063  ret void13064}13065 13066define void @s_shuffle_v3i16_v4i16__3_5_5() {13067; GFX900-LABEL: s_shuffle_v3i16_v4i16__3_5_5:13068; GFX900:       ; %bb.0:13069; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13070; GFX900-NEXT:    ;;#ASMSTART13071; GFX900-NEXT:    ; def s[4:5]13072; GFX900-NEXT:    ;;#ASMEND13073; GFX900-NEXT:    ;;#ASMSTART13074; GFX900-NEXT:    ; def s[6:7]13075; GFX900-NEXT:    ;;#ASMEND13076; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s613077; GFX900-NEXT:    s_lshr_b32 s9, s6, 1613078; GFX900-NEXT:    ;;#ASMSTART13079; GFX900-NEXT:    ; use s[8:9]13080; GFX900-NEXT:    ;;#ASMEND13081; GFX900-NEXT:    s_setpc_b64 s[30:31]13082;13083; GFX90A-LABEL: s_shuffle_v3i16_v4i16__3_5_5:13084; GFX90A:       ; %bb.0:13085; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13086; GFX90A-NEXT:    ;;#ASMSTART13087; GFX90A-NEXT:    ; def s[4:5]13088; GFX90A-NEXT:    ;;#ASMEND13089; GFX90A-NEXT:    ;;#ASMSTART13090; GFX90A-NEXT:    ; def s[6:7]13091; GFX90A-NEXT:    ;;#ASMEND13092; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s613093; GFX90A-NEXT:    s_lshr_b32 s9, s6, 1613094; GFX90A-NEXT:    ;;#ASMSTART13095; GFX90A-NEXT:    ; use s[8:9]13096; GFX90A-NEXT:    ;;#ASMEND13097; GFX90A-NEXT:    s_setpc_b64 s[30:31]13098;13099; GFX942-LABEL: s_shuffle_v3i16_v4i16__3_5_5:13100; GFX942:       ; %bb.0:13101; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13102; GFX942-NEXT:    ;;#ASMSTART13103; GFX942-NEXT:    ; def s[0:1]13104; GFX942-NEXT:    ;;#ASMEND13105; GFX942-NEXT:    ;;#ASMSTART13106; GFX942-NEXT:    ; def s[2:3]13107; GFX942-NEXT:    ;;#ASMEND13108; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s213109; GFX942-NEXT:    s_lshr_b32 s9, s2, 1613110; GFX942-NEXT:    ;;#ASMSTART13111; GFX942-NEXT:    ; use s[8:9]13112; GFX942-NEXT:    ;;#ASMEND13113; GFX942-NEXT:    s_setpc_b64 s[30:31]13114  %vec0 = call <4 x i16> asm "; def $0", "=s"()13115  %vec1 = call <4 x i16> asm "; def $0", "=s"()13116  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 3, i32 5, i32 5>13117  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13118  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)13119  ret void13120}13121 13122define void @s_shuffle_v3i16_v4i16__4_5_5() {13123; GFX9-LABEL: s_shuffle_v3i16_v4i16__4_5_5:13124; GFX9:       ; %bb.0:13125; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13126; GFX9-NEXT:    ;;#ASMSTART13127; GFX9-NEXT:    ; def s[8:9]13128; GFX9-NEXT:    ;;#ASMEND13129; GFX9-NEXT:    s_lshr_b32 s9, s8, 1613130; GFX9-NEXT:    ;;#ASMSTART13131; GFX9-NEXT:    ; use s[8:9]13132; GFX9-NEXT:    ;;#ASMEND13133; GFX9-NEXT:    s_setpc_b64 s[30:31]13134  %vec0 = call <4 x i16> asm "; def $0", "=s"()13135  %vec1 = call <4 x i16> asm "; def $0", "=s"()13136  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 4, i32 5, i32 5>13137  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13138  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)13139  ret void13140}13141 13142define void @s_shuffle_v3i16_v4i16__5_5_5() {13143; GFX900-LABEL: s_shuffle_v3i16_v4i16__5_5_5:13144; GFX900:       ; %bb.0:13145; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13146; GFX900-NEXT:    ;;#ASMSTART13147; GFX900-NEXT:    ; def s[4:5]13148; GFX900-NEXT:    ;;#ASMEND13149; GFX900-NEXT:    s_lshr_b32 s9, s4, 1613150; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s413151; GFX900-NEXT:    ;;#ASMSTART13152; GFX900-NEXT:    ; use s[8:9]13153; GFX900-NEXT:    ;;#ASMEND13154; GFX900-NEXT:    s_setpc_b64 s[30:31]13155;13156; GFX90A-LABEL: s_shuffle_v3i16_v4i16__5_5_5:13157; GFX90A:       ; %bb.0:13158; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13159; GFX90A-NEXT:    ;;#ASMSTART13160; GFX90A-NEXT:    ; def s[4:5]13161; GFX90A-NEXT:    ;;#ASMEND13162; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1613163; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s413164; GFX90A-NEXT:    ;;#ASMSTART13165; GFX90A-NEXT:    ; use s[8:9]13166; GFX90A-NEXT:    ;;#ASMEND13167; GFX90A-NEXT:    s_setpc_b64 s[30:31]13168;13169; GFX942-LABEL: s_shuffle_v3i16_v4i16__5_5_5:13170; GFX942:       ; %bb.0:13171; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13172; GFX942-NEXT:    ;;#ASMSTART13173; GFX942-NEXT:    ; def s[0:1]13174; GFX942-NEXT:    ;;#ASMEND13175; GFX942-NEXT:    s_lshr_b32 s9, s0, 1613176; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s013177; GFX942-NEXT:    ;;#ASMSTART13178; GFX942-NEXT:    ; use s[8:9]13179; GFX942-NEXT:    ;;#ASMEND13180; GFX942-NEXT:    s_setpc_b64 s[30:31]13181  %vec0 = call <4 x i16> asm "; def $0", "=s"()13182  %vec1 = call <4 x i16> asm "; def $0", "=s"()13183  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 5, i32 5, i32 5>13184  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13185  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)13186  ret void13187}13188 13189define void @s_shuffle_v3i16_v4i16__6_5_5() {13190; GFX900-LABEL: s_shuffle_v3i16_v4i16__6_5_5:13191; GFX900:       ; %bb.0:13192; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13193; GFX900-NEXT:    ;;#ASMSTART13194; GFX900-NEXT:    ; def s[4:5]13195; GFX900-NEXT:    ;;#ASMEND13196; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s5, s413197; GFX900-NEXT:    s_lshr_b32 s9, s4, 1613198; GFX900-NEXT:    ;;#ASMSTART13199; GFX900-NEXT:    ; use s[8:9]13200; GFX900-NEXT:    ;;#ASMEND13201; GFX900-NEXT:    s_setpc_b64 s[30:31]13202;13203; GFX90A-LABEL: s_shuffle_v3i16_v4i16__6_5_5:13204; GFX90A:       ; %bb.0:13205; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13206; GFX90A-NEXT:    ;;#ASMSTART13207; GFX90A-NEXT:    ; def s[4:5]13208; GFX90A-NEXT:    ;;#ASMEND13209; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s5, s413210; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1613211; GFX90A-NEXT:    ;;#ASMSTART13212; GFX90A-NEXT:    ; use s[8:9]13213; GFX90A-NEXT:    ;;#ASMEND13214; GFX90A-NEXT:    s_setpc_b64 s[30:31]13215;13216; GFX942-LABEL: s_shuffle_v3i16_v4i16__6_5_5:13217; GFX942:       ; %bb.0:13218; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13219; GFX942-NEXT:    ;;#ASMSTART13220; GFX942-NEXT:    ; def s[0:1]13221; GFX942-NEXT:    ;;#ASMEND13222; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s1, s013223; GFX942-NEXT:    s_lshr_b32 s9, s0, 1613224; GFX942-NEXT:    ;;#ASMSTART13225; GFX942-NEXT:    ; use s[8:9]13226; GFX942-NEXT:    ;;#ASMEND13227; GFX942-NEXT:    s_setpc_b64 s[30:31]13228  %vec0 = call <4 x i16> asm "; def $0", "=s"()13229  %vec1 = call <4 x i16> asm "; def $0", "=s"()13230  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 6, i32 5, i32 5>13231  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13232  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)13233  ret void13234}13235 13236define void @s_shuffle_v3i16_v4i16__7_5_5() {13237; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_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_hh_b32_b16 s8, s5, s413244; GFX900-NEXT:    s_lshr_b32 s9, s4, 1613245; 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_v3i16_v4i16__7_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_hh_b32_b16 s8, s5, s413257; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1613258; 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_v3i16_v4i16__7_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_hh_b32_b16 s8, s1, s013270; GFX942-NEXT:    s_lshr_b32 s9, s0, 1613271; 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  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 5, i32 5>13278  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13279  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)13280  ret void13281}13282 13283define void @s_shuffle_v3i16_v4i16__7_u_5() {13284; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_u_5:13285; GFX900:       ; %bb.0:13286; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13287; GFX900-NEXT:    ;;#ASMSTART13288; GFX900-NEXT:    ; def s[4:5]13289; GFX900-NEXT:    ;;#ASMEND13290; GFX900-NEXT:    s_lshr_b32 s9, s4, 1613291; GFX900-NEXT:    s_lshr_b32 s8, s5, 1613292; GFX900-NEXT:    ;;#ASMSTART13293; GFX900-NEXT:    ; use s[8:9]13294; GFX900-NEXT:    ;;#ASMEND13295; GFX900-NEXT:    s_setpc_b64 s[30:31]13296;13297; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_u_5:13298; GFX90A:       ; %bb.0:13299; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13300; GFX90A-NEXT:    ;;#ASMSTART13301; GFX90A-NEXT:    ; def s[4:5]13302; GFX90A-NEXT:    ;;#ASMEND13303; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1613304; GFX90A-NEXT:    s_lshr_b32 s8, s5, 1613305; GFX90A-NEXT:    ;;#ASMSTART13306; GFX90A-NEXT:    ; use s[8:9]13307; GFX90A-NEXT:    ;;#ASMEND13308; GFX90A-NEXT:    s_setpc_b64 s[30:31]13309;13310; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_u_5:13311; GFX942:       ; %bb.0:13312; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13313; GFX942-NEXT:    ;;#ASMSTART13314; GFX942-NEXT:    ; def s[0:1]13315; GFX942-NEXT:    ;;#ASMEND13316; GFX942-NEXT:    s_lshr_b32 s9, s0, 1613317; GFX942-NEXT:    s_lshr_b32 s8, s1, 1613318; GFX942-NEXT:    ;;#ASMSTART13319; GFX942-NEXT:    ; use s[8:9]13320; GFX942-NEXT:    ;;#ASMEND13321; GFX942-NEXT:    s_setpc_b64 s[30:31]13322  %vec0 = call <4 x i16> asm "; def $0", "=s"()13323  %vec1 = call <4 x i16> asm "; def $0", "=s"()13324  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 poison, i32 5>13325  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13326  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)13327  ret void13328}13329 13330define void @s_shuffle_v3i16_v4i16__7_0_5() {13331; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_0_5:13332; GFX900:       ; %bb.0:13333; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13334; GFX900-NEXT:    ;;#ASMSTART13335; GFX900-NEXT:    ; def s[4:5]13336; GFX900-NEXT:    ;;#ASMEND13337; GFX900-NEXT:    ;;#ASMSTART13338; GFX900-NEXT:    ; def s[6:7]13339; GFX900-NEXT:    ;;#ASMEND13340; GFX900-NEXT:    s_lshr_b32 s5, s7, 1613341; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s413342; GFX900-NEXT:    s_lshr_b32 s9, s6, 1613343; GFX900-NEXT:    ;;#ASMSTART13344; GFX900-NEXT:    ; use s[8:9]13345; GFX900-NEXT:    ;;#ASMEND13346; GFX900-NEXT:    s_setpc_b64 s[30:31]13347;13348; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_0_5:13349; GFX90A:       ; %bb.0:13350; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13351; GFX90A-NEXT:    ;;#ASMSTART13352; GFX90A-NEXT:    ; def s[4:5]13353; GFX90A-NEXT:    ;;#ASMEND13354; GFX90A-NEXT:    ;;#ASMSTART13355; GFX90A-NEXT:    ; def s[6:7]13356; GFX90A-NEXT:    ;;#ASMEND13357; GFX90A-NEXT:    s_lshr_b32 s5, s7, 1613358; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s413359; GFX90A-NEXT:    s_lshr_b32 s9, s6, 1613360; GFX90A-NEXT:    ;;#ASMSTART13361; GFX90A-NEXT:    ; use s[8:9]13362; GFX90A-NEXT:    ;;#ASMEND13363; GFX90A-NEXT:    s_setpc_b64 s[30:31]13364;13365; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_0_5:13366; GFX942:       ; %bb.0:13367; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13368; GFX942-NEXT:    ;;#ASMSTART13369; GFX942-NEXT:    ; def s[0:1]13370; GFX942-NEXT:    ;;#ASMEND13371; GFX942-NEXT:    ;;#ASMSTART13372; GFX942-NEXT:    ; def s[2:3]13373; GFX942-NEXT:    ;;#ASMEND13374; GFX942-NEXT:    s_lshr_b32 s1, s3, 1613375; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s013376; GFX942-NEXT:    s_lshr_b32 s9, s2, 1613377; GFX942-NEXT:    ;;#ASMSTART13378; GFX942-NEXT:    ; use s[8:9]13379; GFX942-NEXT:    ;;#ASMEND13380; GFX942-NEXT:    s_setpc_b64 s[30:31]13381  %vec0 = call <4 x i16> asm "; def $0", "=s"()13382  %vec1 = call <4 x i16> asm "; def $0", "=s"()13383  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 0, i32 5>13384  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13385  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)13386  ret void13387}13388 13389define void @s_shuffle_v3i16_v4i16__7_1_5() {13390; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_1_5:13391; GFX900:       ; %bb.0:13392; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13393; GFX900-NEXT:    ;;#ASMSTART13394; GFX900-NEXT:    ; def s[4:5]13395; GFX900-NEXT:    ;;#ASMEND13396; GFX900-NEXT:    ;;#ASMSTART13397; GFX900-NEXT:    ; def s[6:7]13398; GFX900-NEXT:    ;;#ASMEND13399; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s7, s413400; GFX900-NEXT:    s_lshr_b32 s9, s6, 1613401; GFX900-NEXT:    ;;#ASMSTART13402; GFX900-NEXT:    ; use s[8:9]13403; GFX900-NEXT:    ;;#ASMEND13404; GFX900-NEXT:    s_setpc_b64 s[30:31]13405;13406; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_1_5:13407; GFX90A:       ; %bb.0:13408; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13409; GFX90A-NEXT:    ;;#ASMSTART13410; GFX90A-NEXT:    ; def s[4:5]13411; GFX90A-NEXT:    ;;#ASMEND13412; GFX90A-NEXT:    ;;#ASMSTART13413; GFX90A-NEXT:    ; def s[6:7]13414; GFX90A-NEXT:    ;;#ASMEND13415; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s7, s413416; GFX90A-NEXT:    s_lshr_b32 s9, s6, 1613417; GFX90A-NEXT:    ;;#ASMSTART13418; GFX90A-NEXT:    ; use s[8:9]13419; GFX90A-NEXT:    ;;#ASMEND13420; GFX90A-NEXT:    s_setpc_b64 s[30:31]13421;13422; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_1_5:13423; GFX942:       ; %bb.0:13424; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13425; GFX942-NEXT:    ;;#ASMSTART13426; GFX942-NEXT:    ; def s[0:1]13427; GFX942-NEXT:    ;;#ASMEND13428; GFX942-NEXT:    ;;#ASMSTART13429; GFX942-NEXT:    ; def s[2:3]13430; GFX942-NEXT:    ;;#ASMEND13431; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s3, s013432; GFX942-NEXT:    s_lshr_b32 s9, s2, 1613433; GFX942-NEXT:    ;;#ASMSTART13434; GFX942-NEXT:    ; use s[8:9]13435; GFX942-NEXT:    ;;#ASMEND13436; GFX942-NEXT:    s_setpc_b64 s[30:31]13437  %vec0 = call <4 x i16> asm "; def $0", "=s"()13438  %vec1 = call <4 x i16> asm "; def $0", "=s"()13439  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 1, i32 5>13440  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13441  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)13442  ret void13443}13444 13445define void @s_shuffle_v3i16_v4i16__7_2_5() {13446; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_2_5:13447; GFX900:       ; %bb.0:13448; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13449; GFX900-NEXT:    ;;#ASMSTART13450; GFX900-NEXT:    ; def s[4:5]13451; GFX900-NEXT:    ;;#ASMEND13452; GFX900-NEXT:    ;;#ASMSTART13453; GFX900-NEXT:    ; def s[6:7]13454; GFX900-NEXT:    ;;#ASMEND13455; GFX900-NEXT:    s_lshr_b32 s4, s7, 1613456; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s513457; GFX900-NEXT:    s_lshr_b32 s9, s6, 1613458; GFX900-NEXT:    ;;#ASMSTART13459; GFX900-NEXT:    ; use s[8:9]13460; GFX900-NEXT:    ;;#ASMEND13461; GFX900-NEXT:    s_setpc_b64 s[30:31]13462;13463; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_2_5:13464; GFX90A:       ; %bb.0:13465; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13466; GFX90A-NEXT:    ;;#ASMSTART13467; GFX90A-NEXT:    ; def s[4:5]13468; GFX90A-NEXT:    ;;#ASMEND13469; GFX90A-NEXT:    ;;#ASMSTART13470; GFX90A-NEXT:    ; def s[6:7]13471; GFX90A-NEXT:    ;;#ASMEND13472; GFX90A-NEXT:    s_lshr_b32 s4, s7, 1613473; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s513474; GFX90A-NEXT:    s_lshr_b32 s9, s6, 1613475; GFX90A-NEXT:    ;;#ASMSTART13476; GFX90A-NEXT:    ; use s[8:9]13477; GFX90A-NEXT:    ;;#ASMEND13478; GFX90A-NEXT:    s_setpc_b64 s[30:31]13479;13480; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_2_5:13481; GFX942:       ; %bb.0:13482; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13483; GFX942-NEXT:    ;;#ASMSTART13484; GFX942-NEXT:    ; def s[0:1]13485; GFX942-NEXT:    ;;#ASMEND13486; GFX942-NEXT:    ;;#ASMSTART13487; GFX942-NEXT:    ; def s[2:3]13488; GFX942-NEXT:    ;;#ASMEND13489; GFX942-NEXT:    s_lshr_b32 s0, s3, 1613490; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s113491; GFX942-NEXT:    s_lshr_b32 s9, s2, 1613492; GFX942-NEXT:    ;;#ASMSTART13493; GFX942-NEXT:    ; use s[8:9]13494; GFX942-NEXT:    ;;#ASMEND13495; GFX942-NEXT:    s_setpc_b64 s[30:31]13496  %vec0 = call <4 x i16> asm "; def $0", "=s"()13497  %vec1 = call <4 x i16> asm "; def $0", "=s"()13498  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 2, i32 5>13499  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13500  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)13501  ret void13502}13503 13504define void @s_shuffle_v3i16_v4i16__7_3_5() {13505; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_3_5:13506; GFX900:       ; %bb.0:13507; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13508; GFX900-NEXT:    ;;#ASMSTART13509; GFX900-NEXT:    ; def s[4:5]13510; GFX900-NEXT:    ;;#ASMEND13511; GFX900-NEXT:    ;;#ASMSTART13512; GFX900-NEXT:    ; def s[6:7]13513; GFX900-NEXT:    ;;#ASMEND13514; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s7, s513515; GFX900-NEXT:    s_lshr_b32 s9, s6, 1613516; GFX900-NEXT:    ;;#ASMSTART13517; GFX900-NEXT:    ; use s[8:9]13518; GFX900-NEXT:    ;;#ASMEND13519; GFX900-NEXT:    s_setpc_b64 s[30:31]13520;13521; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_3_5:13522; GFX90A:       ; %bb.0:13523; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13524; GFX90A-NEXT:    ;;#ASMSTART13525; GFX90A-NEXT:    ; def s[4:5]13526; GFX90A-NEXT:    ;;#ASMEND13527; GFX90A-NEXT:    ;;#ASMSTART13528; GFX90A-NEXT:    ; def s[6:7]13529; GFX90A-NEXT:    ;;#ASMEND13530; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s7, s513531; GFX90A-NEXT:    s_lshr_b32 s9, s6, 1613532; GFX90A-NEXT:    ;;#ASMSTART13533; GFX90A-NEXT:    ; use s[8:9]13534; GFX90A-NEXT:    ;;#ASMEND13535; GFX90A-NEXT:    s_setpc_b64 s[30:31]13536;13537; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_3_5:13538; GFX942:       ; %bb.0:13539; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13540; GFX942-NEXT:    ;;#ASMSTART13541; GFX942-NEXT:    ; def s[0:1]13542; GFX942-NEXT:    ;;#ASMEND13543; GFX942-NEXT:    ;;#ASMSTART13544; GFX942-NEXT:    ; def s[2:3]13545; GFX942-NEXT:    ;;#ASMEND13546; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s3, s113547; GFX942-NEXT:    s_lshr_b32 s9, s2, 1613548; GFX942-NEXT:    ;;#ASMSTART13549; GFX942-NEXT:    ; use s[8:9]13550; GFX942-NEXT:    ;;#ASMEND13551; GFX942-NEXT:    s_setpc_b64 s[30:31]13552  %vec0 = call <4 x i16> asm "; def $0", "=s"()13553  %vec1 = call <4 x i16> asm "; def $0", "=s"()13554  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 3, i32 5>13555  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13556  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)13557  ret void13558}13559 13560define void @s_shuffle_v3i16_v4i16__7_4_5() {13561; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_4_5:13562; GFX900:       ; %bb.0:13563; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13564; GFX900-NEXT:    ;;#ASMSTART13565; GFX900-NEXT:    ; def s[4:5]13566; GFX900-NEXT:    ;;#ASMEND13567; GFX900-NEXT:    s_lshr_b32 s5, s5, 1613568; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s413569; GFX900-NEXT:    s_lshr_b32 s9, s4, 1613570; GFX900-NEXT:    ;;#ASMSTART13571; GFX900-NEXT:    ; use s[8:9]13572; GFX900-NEXT:    ;;#ASMEND13573; GFX900-NEXT:    s_setpc_b64 s[30:31]13574;13575; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_4_5:13576; GFX90A:       ; %bb.0:13577; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13578; GFX90A-NEXT:    ;;#ASMSTART13579; GFX90A-NEXT:    ; def s[4:5]13580; GFX90A-NEXT:    ;;#ASMEND13581; GFX90A-NEXT:    s_lshr_b32 s5, s5, 1613582; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s413583; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1613584; GFX90A-NEXT:    ;;#ASMSTART13585; GFX90A-NEXT:    ; use s[8:9]13586; GFX90A-NEXT:    ;;#ASMEND13587; GFX90A-NEXT:    s_setpc_b64 s[30:31]13588;13589; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_4_5:13590; GFX942:       ; %bb.0:13591; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13592; GFX942-NEXT:    ;;#ASMSTART13593; GFX942-NEXT:    ; def s[0:1]13594; GFX942-NEXT:    ;;#ASMEND13595; GFX942-NEXT:    s_lshr_b32 s1, s1, 1613596; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s013597; GFX942-NEXT:    s_lshr_b32 s9, s0, 1613598; GFX942-NEXT:    ;;#ASMSTART13599; GFX942-NEXT:    ; use s[8:9]13600; GFX942-NEXT:    ;;#ASMEND13601; GFX942-NEXT:    s_setpc_b64 s[30:31]13602  %vec0 = call <4 x i16> asm "; def $0", "=s"()13603  %vec1 = call <4 x i16> asm "; def $0", "=s"()13604  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 4, i32 5>13605  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13606  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)13607  ret void13608}13609 13610define void @s_shuffle_v3i16_v4i16__7_6_5() {13611; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_6_5:13612; GFX900:       ; %bb.0:13613; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13614; GFX900-NEXT:    ;;#ASMSTART13615; GFX900-NEXT:    ; def s[4:5]13616; GFX900-NEXT:    ;;#ASMEND13617; GFX900-NEXT:    s_lshr_b32 s6, s5, 1613618; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s6, s513619; GFX900-NEXT:    s_lshr_b32 s9, s4, 1613620; GFX900-NEXT:    ;;#ASMSTART13621; GFX900-NEXT:    ; use s[8:9]13622; GFX900-NEXT:    ;;#ASMEND13623; GFX900-NEXT:    s_setpc_b64 s[30:31]13624;13625; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_6_5:13626; GFX90A:       ; %bb.0:13627; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13628; GFX90A-NEXT:    ;;#ASMSTART13629; GFX90A-NEXT:    ; def s[4:5]13630; GFX90A-NEXT:    ;;#ASMEND13631; GFX90A-NEXT:    s_lshr_b32 s6, s5, 1613632; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s6, s513633; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1613634; GFX90A-NEXT:    ;;#ASMSTART13635; GFX90A-NEXT:    ; use s[8:9]13636; GFX90A-NEXT:    ;;#ASMEND13637; GFX90A-NEXT:    s_setpc_b64 s[30:31]13638;13639; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_6_5:13640; GFX942:       ; %bb.0:13641; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13642; GFX942-NEXT:    ;;#ASMSTART13643; GFX942-NEXT:    ; def s[0:1]13644; GFX942-NEXT:    ;;#ASMEND13645; GFX942-NEXT:    s_lshr_b32 s2, s1, 1613646; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s2, s113647; GFX942-NEXT:    s_lshr_b32 s9, s0, 1613648; GFX942-NEXT:    ;;#ASMSTART13649; GFX942-NEXT:    ; use s[8:9]13650; GFX942-NEXT:    ;;#ASMEND13651; GFX942-NEXT:    s_setpc_b64 s[30:31]13652  %vec0 = call <4 x i16> asm "; def $0", "=s"()13653  %vec1 = call <4 x i16> asm "; def $0", "=s"()13654  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 6, i32 5>13655  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13656  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)13657  ret void13658}13659 13660define void @s_shuffle_v3i16_v4i16__u_6_6() {13661; GFX9-LABEL: s_shuffle_v3i16_v4i16__u_6_6:13662; GFX9:       ; %bb.0:13663; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13664; GFX9-NEXT:    ;;#ASMSTART13665; GFX9-NEXT:    ; def s[8:9]13666; GFX9-NEXT:    ;;#ASMEND13667; GFX9-NEXT:    s_lshl_b32 s8, s9, 1613668; GFX9-NEXT:    ;;#ASMSTART13669; GFX9-NEXT:    ; use s[8:9]13670; GFX9-NEXT:    ;;#ASMEND13671; GFX9-NEXT:    s_setpc_b64 s[30:31]13672  %vec0 = call <4 x i16> asm "; def $0", "=s"()13673  %vec1 = call <4 x i16> asm "; def $0", "=s"()13674  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 poison, i32 6, i32 6>13675  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13676  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)13677  ret void13678}13679 13680define void @s_shuffle_v3i16_v4i16__0_6_6() {13681; GFX900-LABEL: s_shuffle_v3i16_v4i16__0_6_6:13682; GFX900:       ; %bb.0:13683; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13684; GFX900-NEXT:    ;;#ASMSTART13685; GFX900-NEXT:    ; def s[8:9]13686; GFX900-NEXT:    ;;#ASMEND13687; GFX900-NEXT:    ;;#ASMSTART13688; GFX900-NEXT:    ; def s[4:5]13689; GFX900-NEXT:    ;;#ASMEND13690; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s913691; GFX900-NEXT:    ;;#ASMSTART13692; GFX900-NEXT:    ; use s[8:9]13693; GFX900-NEXT:    ;;#ASMEND13694; GFX900-NEXT:    s_setpc_b64 s[30:31]13695;13696; GFX90A-LABEL: s_shuffle_v3i16_v4i16__0_6_6:13697; GFX90A:       ; %bb.0:13698; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13699; GFX90A-NEXT:    ;;#ASMSTART13700; GFX90A-NEXT:    ; def s[8:9]13701; GFX90A-NEXT:    ;;#ASMEND13702; GFX90A-NEXT:    ;;#ASMSTART13703; GFX90A-NEXT:    ; def s[4:5]13704; GFX90A-NEXT:    ;;#ASMEND13705; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s913706; GFX90A-NEXT:    ;;#ASMSTART13707; GFX90A-NEXT:    ; use s[8:9]13708; GFX90A-NEXT:    ;;#ASMEND13709; GFX90A-NEXT:    s_setpc_b64 s[30:31]13710;13711; GFX942-LABEL: s_shuffle_v3i16_v4i16__0_6_6:13712; GFX942:       ; %bb.0:13713; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13714; GFX942-NEXT:    ;;#ASMSTART13715; GFX942-NEXT:    ; def s[8:9]13716; GFX942-NEXT:    ;;#ASMEND13717; GFX942-NEXT:    ;;#ASMSTART13718; GFX942-NEXT:    ; def s[0:1]13719; GFX942-NEXT:    ;;#ASMEND13720; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s913721; GFX942-NEXT:    ;;#ASMSTART13722; GFX942-NEXT:    ; use s[8:9]13723; GFX942-NEXT:    ;;#ASMEND13724; GFX942-NEXT:    s_setpc_b64 s[30:31]13725  %vec0 = call <4 x i16> asm "; def $0", "=s"()13726  %vec1 = call <4 x i16> asm "; def $0", "=s"()13727  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 0, i32 6, i32 6>13728  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13729  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)13730  ret void13731}13732 13733define void @s_shuffle_v3i16_v4i16__1_6_6() {13734; GFX900-LABEL: s_shuffle_v3i16_v4i16__1_6_6:13735; GFX900:       ; %bb.0:13736; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13737; GFX900-NEXT:    ;;#ASMSTART13738; GFX900-NEXT:    ; def s[4:5]13739; GFX900-NEXT:    ;;#ASMEND13740; GFX900-NEXT:    ;;#ASMSTART13741; GFX900-NEXT:    ; def s[8:9]13742; GFX900-NEXT:    ;;#ASMEND13743; GFX900-NEXT:    s_lshr_b32 s4, s4, 1613744; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s913745; GFX900-NEXT:    ;;#ASMSTART13746; GFX900-NEXT:    ; use s[8:9]13747; GFX900-NEXT:    ;;#ASMEND13748; GFX900-NEXT:    s_setpc_b64 s[30:31]13749;13750; GFX90A-LABEL: s_shuffle_v3i16_v4i16__1_6_6:13751; GFX90A:       ; %bb.0:13752; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13753; GFX90A-NEXT:    ;;#ASMSTART13754; GFX90A-NEXT:    ; def s[4:5]13755; GFX90A-NEXT:    ;;#ASMEND13756; GFX90A-NEXT:    ;;#ASMSTART13757; GFX90A-NEXT:    ; def s[8:9]13758; GFX90A-NEXT:    ;;#ASMEND13759; GFX90A-NEXT:    s_lshr_b32 s4, s4, 1613760; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s913761; GFX90A-NEXT:    ;;#ASMSTART13762; GFX90A-NEXT:    ; use s[8:9]13763; GFX90A-NEXT:    ;;#ASMEND13764; GFX90A-NEXT:    s_setpc_b64 s[30:31]13765;13766; GFX942-LABEL: s_shuffle_v3i16_v4i16__1_6_6:13767; GFX942:       ; %bb.0:13768; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13769; GFX942-NEXT:    ;;#ASMSTART13770; GFX942-NEXT:    ; def s[0:1]13771; GFX942-NEXT:    ;;#ASMEND13772; GFX942-NEXT:    ;;#ASMSTART13773; GFX942-NEXT:    ; def s[8:9]13774; GFX942-NEXT:    ;;#ASMEND13775; GFX942-NEXT:    s_lshr_b32 s0, s0, 1613776; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s913777; GFX942-NEXT:    ;;#ASMSTART13778; GFX942-NEXT:    ; use s[8:9]13779; GFX942-NEXT:    ;;#ASMEND13780; GFX942-NEXT:    s_setpc_b64 s[30:31]13781  %vec0 = call <4 x i16> asm "; def $0", "=s"()13782  %vec1 = call <4 x i16> asm "; def $0", "=s"()13783  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 1, i32 6, i32 6>13784  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13785  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)13786  ret void13787}13788 13789define void @s_shuffle_v3i16_v4i16__2_6_6() {13790; GFX900-LABEL: s_shuffle_v3i16_v4i16__2_6_6:13791; GFX900:       ; %bb.0:13792; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13793; GFX900-NEXT:    ;;#ASMSTART13794; GFX900-NEXT:    ; def s[8:9]13795; GFX900-NEXT:    ;;#ASMEND13796; GFX900-NEXT:    ;;#ASMSTART13797; GFX900-NEXT:    ; def s[4:5]13798; GFX900-NEXT:    ;;#ASMEND13799; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s913800; GFX900-NEXT:    ;;#ASMSTART13801; GFX900-NEXT:    ; use s[8:9]13802; GFX900-NEXT:    ;;#ASMEND13803; GFX900-NEXT:    s_setpc_b64 s[30:31]13804;13805; GFX90A-LABEL: s_shuffle_v3i16_v4i16__2_6_6:13806; GFX90A:       ; %bb.0:13807; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13808; GFX90A-NEXT:    ;;#ASMSTART13809; GFX90A-NEXT:    ; def s[8:9]13810; GFX90A-NEXT:    ;;#ASMEND13811; GFX90A-NEXT:    ;;#ASMSTART13812; GFX90A-NEXT:    ; def s[4:5]13813; GFX90A-NEXT:    ;;#ASMEND13814; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s913815; GFX90A-NEXT:    ;;#ASMSTART13816; GFX90A-NEXT:    ; use s[8:9]13817; GFX90A-NEXT:    ;;#ASMEND13818; GFX90A-NEXT:    s_setpc_b64 s[30:31]13819;13820; GFX942-LABEL: s_shuffle_v3i16_v4i16__2_6_6:13821; GFX942:       ; %bb.0:13822; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13823; GFX942-NEXT:    ;;#ASMSTART13824; GFX942-NEXT:    ; def s[8:9]13825; GFX942-NEXT:    ;;#ASMEND13826; GFX942-NEXT:    ;;#ASMSTART13827; GFX942-NEXT:    ; def s[0:1]13828; GFX942-NEXT:    ;;#ASMEND13829; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s913830; GFX942-NEXT:    ;;#ASMSTART13831; GFX942-NEXT:    ; use s[8:9]13832; GFX942-NEXT:    ;;#ASMEND13833; GFX942-NEXT:    s_setpc_b64 s[30:31]13834  %vec0 = call <4 x i16> asm "; def $0", "=s"()13835  %vec1 = call <4 x i16> asm "; def $0", "=s"()13836  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 2, i32 6, i32 6>13837  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13838  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)13839  ret void13840}13841 13842define void @s_shuffle_v3i16_v4i16__3_6_6() {13843; GFX900-LABEL: s_shuffle_v3i16_v4i16__3_6_6:13844; GFX900:       ; %bb.0:13845; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13846; GFX900-NEXT:    ;;#ASMSTART13847; GFX900-NEXT:    ; def s[4:5]13848; GFX900-NEXT:    ;;#ASMEND13849; GFX900-NEXT:    ;;#ASMSTART13850; GFX900-NEXT:    ; def s[8:9]13851; GFX900-NEXT:    ;;#ASMEND13852; GFX900-NEXT:    s_lshr_b32 s4, s5, 1613853; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s913854; GFX900-NEXT:    ;;#ASMSTART13855; GFX900-NEXT:    ; use s[8:9]13856; GFX900-NEXT:    ;;#ASMEND13857; GFX900-NEXT:    s_setpc_b64 s[30:31]13858;13859; GFX90A-LABEL: s_shuffle_v3i16_v4i16__3_6_6:13860; GFX90A:       ; %bb.0:13861; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13862; GFX90A-NEXT:    ;;#ASMSTART13863; GFX90A-NEXT:    ; def s[4:5]13864; GFX90A-NEXT:    ;;#ASMEND13865; GFX90A-NEXT:    ;;#ASMSTART13866; GFX90A-NEXT:    ; def s[8:9]13867; GFX90A-NEXT:    ;;#ASMEND13868; GFX90A-NEXT:    s_lshr_b32 s4, s5, 1613869; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s913870; GFX90A-NEXT:    ;;#ASMSTART13871; GFX90A-NEXT:    ; use s[8:9]13872; GFX90A-NEXT:    ;;#ASMEND13873; GFX90A-NEXT:    s_setpc_b64 s[30:31]13874;13875; GFX942-LABEL: s_shuffle_v3i16_v4i16__3_6_6:13876; GFX942:       ; %bb.0:13877; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13878; GFX942-NEXT:    ;;#ASMSTART13879; GFX942-NEXT:    ; def s[0:1]13880; GFX942-NEXT:    ;;#ASMEND13881; GFX942-NEXT:    ;;#ASMSTART13882; GFX942-NEXT:    ; def s[8:9]13883; GFX942-NEXT:    ;;#ASMEND13884; GFX942-NEXT:    s_lshr_b32 s0, s1, 1613885; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s913886; GFX942-NEXT:    ;;#ASMSTART13887; GFX942-NEXT:    ; use s[8:9]13888; GFX942-NEXT:    ;;#ASMEND13889; GFX942-NEXT:    s_setpc_b64 s[30:31]13890  %vec0 = call <4 x i16> asm "; def $0", "=s"()13891  %vec1 = call <4 x i16> asm "; def $0", "=s"()13892  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 3, i32 6, i32 6>13893  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13894  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)13895  ret void13896}13897 13898define void @s_shuffle_v3i16_v4i16__4_6_6() {13899; GFX9-LABEL: s_shuffle_v3i16_v4i16__4_6_6:13900; GFX9:       ; %bb.0:13901; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13902; GFX9-NEXT:    ;;#ASMSTART13903; GFX9-NEXT:    ; def s[8:9]13904; GFX9-NEXT:    ;;#ASMEND13905; GFX9-NEXT:    s_pack_ll_b32_b16 s8, s8, s913906; GFX9-NEXT:    ;;#ASMSTART13907; GFX9-NEXT:    ; use s[8:9]13908; GFX9-NEXT:    ;;#ASMEND13909; GFX9-NEXT:    s_setpc_b64 s[30:31]13910  %vec0 = call <4 x i16> asm "; def $0", "=s"()13911  %vec1 = call <4 x i16> asm "; def $0", "=s"()13912  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 4, i32 6, i32 6>13913  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13914  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)13915  ret void13916}13917 13918define void @s_shuffle_v3i16_v4i16__5_6_6() {13919; GFX900-LABEL: s_shuffle_v3i16_v4i16__5_6_6:13920; GFX900:       ; %bb.0:13921; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13922; GFX900-NEXT:    ;;#ASMSTART13923; GFX900-NEXT:    ; def s[8:9]13924; GFX900-NEXT:    ;;#ASMEND13925; GFX900-NEXT:    s_lshr_b32 s4, s8, 1613926; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s913927; GFX900-NEXT:    ;;#ASMSTART13928; GFX900-NEXT:    ; use s[8:9]13929; GFX900-NEXT:    ;;#ASMEND13930; GFX900-NEXT:    s_setpc_b64 s[30:31]13931;13932; GFX90A-LABEL: s_shuffle_v3i16_v4i16__5_6_6:13933; GFX90A:       ; %bb.0:13934; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13935; GFX90A-NEXT:    ;;#ASMSTART13936; GFX90A-NEXT:    ; def s[8:9]13937; GFX90A-NEXT:    ;;#ASMEND13938; GFX90A-NEXT:    s_lshr_b32 s4, s8, 1613939; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s913940; GFX90A-NEXT:    ;;#ASMSTART13941; GFX90A-NEXT:    ; use s[8:9]13942; GFX90A-NEXT:    ;;#ASMEND13943; GFX90A-NEXT:    s_setpc_b64 s[30:31]13944;13945; GFX942-LABEL: s_shuffle_v3i16_v4i16__5_6_6:13946; GFX942:       ; %bb.0:13947; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13948; GFX942-NEXT:    ;;#ASMSTART13949; GFX942-NEXT:    ; def s[8:9]13950; GFX942-NEXT:    ;;#ASMEND13951; GFX942-NEXT:    s_lshr_b32 s0, s8, 1613952; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s913953; GFX942-NEXT:    ;;#ASMSTART13954; GFX942-NEXT:    ; use s[8:9]13955; GFX942-NEXT:    ;;#ASMEND13956; GFX942-NEXT:    s_setpc_b64 s[30:31]13957  %vec0 = call <4 x i16> asm "; def $0", "=s"()13958  %vec1 = call <4 x i16> asm "; def $0", "=s"()13959  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 5, i32 6, i32 6>13960  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13961  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)13962  ret void13963}13964 13965define void @s_shuffle_v3i16_v4i16__6_6_6() {13966; GFX9-LABEL: s_shuffle_v3i16_v4i16__6_6_6:13967; GFX9:       ; %bb.0:13968; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13969; GFX9-NEXT:    ;;#ASMSTART13970; GFX9-NEXT:    ; def s[8:9]13971; GFX9-NEXT:    ;;#ASMEND13972; GFX9-NEXT:    s_pack_ll_b32_b16 s8, s9, s913973; GFX9-NEXT:    ;;#ASMSTART13974; GFX9-NEXT:    ; use s[8:9]13975; GFX9-NEXT:    ;;#ASMEND13976; GFX9-NEXT:    s_setpc_b64 s[30:31]13977  %vec0 = call <4 x i16> asm "; def $0", "=s"()13978  %vec1 = call <4 x i16> asm "; def $0", "=s"()13979  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 6, i32 6, i32 6>13980  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13981  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)13982  ret void13983}13984 13985define void @s_shuffle_v3i16_v4i16__7_6_6() {13986; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_6_6:13987; GFX900:       ; %bb.0:13988; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13989; GFX900-NEXT:    ;;#ASMSTART13990; GFX900-NEXT:    ; def s[8:9]13991; GFX900-NEXT:    ;;#ASMEND13992; GFX900-NEXT:    s_lshr_b32 s4, s9, 1613993; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s913994; GFX900-NEXT:    ;;#ASMSTART13995; GFX900-NEXT:    ; use s[8:9]13996; GFX900-NEXT:    ;;#ASMEND13997; GFX900-NEXT:    s_setpc_b64 s[30:31]13998;13999; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_6_6:14000; GFX90A:       ; %bb.0:14001; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14002; GFX90A-NEXT:    ;;#ASMSTART14003; GFX90A-NEXT:    ; def s[8:9]14004; GFX90A-NEXT:    ;;#ASMEND14005; GFX90A-NEXT:    s_lshr_b32 s4, s9, 1614006; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s914007; GFX90A-NEXT:    ;;#ASMSTART14008; GFX90A-NEXT:    ; use s[8:9]14009; GFX90A-NEXT:    ;;#ASMEND14010; GFX90A-NEXT:    s_setpc_b64 s[30:31]14011;14012; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_6_6:14013; GFX942:       ; %bb.0:14014; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14015; GFX942-NEXT:    ;;#ASMSTART14016; GFX942-NEXT:    ; def s[8:9]14017; GFX942-NEXT:    ;;#ASMEND14018; GFX942-NEXT:    s_lshr_b32 s0, s9, 1614019; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s914020; GFX942-NEXT:    ;;#ASMSTART14021; GFX942-NEXT:    ; use s[8:9]14022; GFX942-NEXT:    ;;#ASMEND14023; GFX942-NEXT:    s_setpc_b64 s[30:31]14024  %vec0 = call <4 x i16> asm "; def $0", "=s"()14025  %vec1 = call <4 x i16> asm "; def $0", "=s"()14026  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 6, i32 6>14027  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14028  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)14029  ret void14030}14031 14032define void @s_shuffle_v3i16_v4i16__7_u_6() {14033; GFX9-LABEL: s_shuffle_v3i16_v4i16__7_u_6:14034; GFX9:       ; %bb.0:14035; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14036; GFX9-NEXT:    ;;#ASMSTART14037; GFX9-NEXT:    ; def s[8:9]14038; GFX9-NEXT:    ;;#ASMEND14039; GFX9-NEXT:    s_lshr_b32 s8, s9, 1614040; GFX9-NEXT:    ;;#ASMSTART14041; GFX9-NEXT:    ; use s[8:9]14042; GFX9-NEXT:    ;;#ASMEND14043; GFX9-NEXT:    s_setpc_b64 s[30:31]14044  %vec0 = call <4 x i16> asm "; def $0", "=s"()14045  %vec1 = call <4 x i16> asm "; def $0", "=s"()14046  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 poison, i32 6>14047  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14048  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)14049  ret void14050}14051 14052define void @s_shuffle_v3i16_v4i16__7_0_6() {14053; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_0_6:14054; GFX900:       ; %bb.0:14055; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14056; GFX900-NEXT:    ;;#ASMSTART14057; GFX900-NEXT:    ; def s[4:5]14058; GFX900-NEXT:    ;;#ASMEND14059; GFX900-NEXT:    ;;#ASMSTART14060; GFX900-NEXT:    ; def s[8:9]14061; GFX900-NEXT:    ;;#ASMEND14062; GFX900-NEXT:    s_lshr_b32 s5, s9, 1614063; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s414064; GFX900-NEXT:    ;;#ASMSTART14065; GFX900-NEXT:    ; use s[8:9]14066; GFX900-NEXT:    ;;#ASMEND14067; GFX900-NEXT:    s_setpc_b64 s[30:31]14068;14069; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_0_6:14070; GFX90A:       ; %bb.0:14071; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14072; GFX90A-NEXT:    ;;#ASMSTART14073; GFX90A-NEXT:    ; def s[4:5]14074; GFX90A-NEXT:    ;;#ASMEND14075; GFX90A-NEXT:    ;;#ASMSTART14076; GFX90A-NEXT:    ; def s[8:9]14077; GFX90A-NEXT:    ;;#ASMEND14078; GFX90A-NEXT:    s_lshr_b32 s5, s9, 1614079; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s414080; GFX90A-NEXT:    ;;#ASMSTART14081; GFX90A-NEXT:    ; use s[8:9]14082; GFX90A-NEXT:    ;;#ASMEND14083; GFX90A-NEXT:    s_setpc_b64 s[30:31]14084;14085; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_0_6:14086; GFX942:       ; %bb.0:14087; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14088; GFX942-NEXT:    ;;#ASMSTART14089; GFX942-NEXT:    ; def s[0:1]14090; GFX942-NEXT:    ;;#ASMEND14091; GFX942-NEXT:    ;;#ASMSTART14092; GFX942-NEXT:    ; def s[8:9]14093; GFX942-NEXT:    ;;#ASMEND14094; GFX942-NEXT:    s_lshr_b32 s1, s9, 1614095; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s014096; GFX942-NEXT:    ;;#ASMSTART14097; GFX942-NEXT:    ; use s[8:9]14098; GFX942-NEXT:    ;;#ASMEND14099; GFX942-NEXT:    s_setpc_b64 s[30:31]14100  %vec0 = call <4 x i16> asm "; def $0", "=s"()14101  %vec1 = call <4 x i16> asm "; def $0", "=s"()14102  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 0, i32 6>14103  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14104  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)14105  ret void14106}14107 14108define void @s_shuffle_v3i16_v4i16__7_1_6() {14109; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_1_6:14110; GFX900:       ; %bb.0:14111; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14112; GFX900-NEXT:    ;;#ASMSTART14113; GFX900-NEXT:    ; def s[8:9]14114; GFX900-NEXT:    ;;#ASMEND14115; GFX900-NEXT:    ;;#ASMSTART14116; GFX900-NEXT:    ; def s[4:5]14117; GFX900-NEXT:    ;;#ASMEND14118; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s9, s414119; GFX900-NEXT:    ;;#ASMSTART14120; GFX900-NEXT:    ; use s[8:9]14121; GFX900-NEXT:    ;;#ASMEND14122; GFX900-NEXT:    s_setpc_b64 s[30:31]14123;14124; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_1_6:14125; GFX90A:       ; %bb.0:14126; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14127; GFX90A-NEXT:    ;;#ASMSTART14128; GFX90A-NEXT:    ; def s[8:9]14129; GFX90A-NEXT:    ;;#ASMEND14130; GFX90A-NEXT:    ;;#ASMSTART14131; GFX90A-NEXT:    ; def s[4:5]14132; GFX90A-NEXT:    ;;#ASMEND14133; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s9, s414134; GFX90A-NEXT:    ;;#ASMSTART14135; GFX90A-NEXT:    ; use s[8:9]14136; GFX90A-NEXT:    ;;#ASMEND14137; GFX90A-NEXT:    s_setpc_b64 s[30:31]14138;14139; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_1_6:14140; GFX942:       ; %bb.0:14141; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14142; GFX942-NEXT:    ;;#ASMSTART14143; GFX942-NEXT:    ; def s[8:9]14144; GFX942-NEXT:    ;;#ASMEND14145; GFX942-NEXT:    ;;#ASMSTART14146; GFX942-NEXT:    ; def s[0:1]14147; GFX942-NEXT:    ;;#ASMEND14148; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s9, s014149; GFX942-NEXT:    ;;#ASMSTART14150; GFX942-NEXT:    ; use s[8:9]14151; GFX942-NEXT:    ;;#ASMEND14152; GFX942-NEXT:    s_setpc_b64 s[30:31]14153  %vec0 = call <4 x i16> asm "; def $0", "=s"()14154  %vec1 = call <4 x i16> asm "; def $0", "=s"()14155  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 1, i32 6>14156  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14157  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)14158  ret void14159}14160 14161define void @s_shuffle_v3i16_v4i16__7_2_6() {14162; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_2_6:14163; GFX900:       ; %bb.0:14164; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14165; GFX900-NEXT:    ;;#ASMSTART14166; GFX900-NEXT:    ; def s[4:5]14167; GFX900-NEXT:    ;;#ASMEND14168; GFX900-NEXT:    ;;#ASMSTART14169; GFX900-NEXT:    ; def s[8:9]14170; GFX900-NEXT:    ;;#ASMEND14171; GFX900-NEXT:    s_lshr_b32 s4, s9, 1614172; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s514173; GFX900-NEXT:    ;;#ASMSTART14174; GFX900-NEXT:    ; use s[8:9]14175; GFX900-NEXT:    ;;#ASMEND14176; GFX900-NEXT:    s_setpc_b64 s[30:31]14177;14178; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_2_6:14179; GFX90A:       ; %bb.0:14180; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14181; GFX90A-NEXT:    ;;#ASMSTART14182; GFX90A-NEXT:    ; def s[4:5]14183; GFX90A-NEXT:    ;;#ASMEND14184; GFX90A-NEXT:    ;;#ASMSTART14185; GFX90A-NEXT:    ; def s[8:9]14186; GFX90A-NEXT:    ;;#ASMEND14187; GFX90A-NEXT:    s_lshr_b32 s4, s9, 1614188; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s514189; GFX90A-NEXT:    ;;#ASMSTART14190; GFX90A-NEXT:    ; use s[8:9]14191; GFX90A-NEXT:    ;;#ASMEND14192; GFX90A-NEXT:    s_setpc_b64 s[30:31]14193;14194; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_2_6:14195; GFX942:       ; %bb.0:14196; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14197; GFX942-NEXT:    ;;#ASMSTART14198; GFX942-NEXT:    ; def s[0:1]14199; GFX942-NEXT:    ;;#ASMEND14200; GFX942-NEXT:    ;;#ASMSTART14201; GFX942-NEXT:    ; def s[8:9]14202; GFX942-NEXT:    ;;#ASMEND14203; GFX942-NEXT:    s_lshr_b32 s0, s9, 1614204; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s114205; GFX942-NEXT:    ;;#ASMSTART14206; GFX942-NEXT:    ; use s[8:9]14207; GFX942-NEXT:    ;;#ASMEND14208; GFX942-NEXT:    s_setpc_b64 s[30:31]14209  %vec0 = call <4 x i16> asm "; def $0", "=s"()14210  %vec1 = call <4 x i16> asm "; def $0", "=s"()14211  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 2, i32 6>14212  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14213  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)14214  ret void14215}14216 14217define void @s_shuffle_v3i16_v4i16__7_3_6() {14218; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_3_6:14219; GFX900:       ; %bb.0:14220; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14221; GFX900-NEXT:    ;;#ASMSTART14222; GFX900-NEXT:    ; def s[8:9]14223; GFX900-NEXT:    ;;#ASMEND14224; GFX900-NEXT:    ;;#ASMSTART14225; GFX900-NEXT:    ; def s[4:5]14226; GFX900-NEXT:    ;;#ASMEND14227; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s9, s514228; GFX900-NEXT:    ;;#ASMSTART14229; GFX900-NEXT:    ; use s[8:9]14230; GFX900-NEXT:    ;;#ASMEND14231; GFX900-NEXT:    s_setpc_b64 s[30:31]14232;14233; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_3_6:14234; GFX90A:       ; %bb.0:14235; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14236; GFX90A-NEXT:    ;;#ASMSTART14237; GFX90A-NEXT:    ; def s[8:9]14238; GFX90A-NEXT:    ;;#ASMEND14239; GFX90A-NEXT:    ;;#ASMSTART14240; GFX90A-NEXT:    ; def s[4:5]14241; GFX90A-NEXT:    ;;#ASMEND14242; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s9, s514243; GFX90A-NEXT:    ;;#ASMSTART14244; GFX90A-NEXT:    ; use s[8:9]14245; GFX90A-NEXT:    ;;#ASMEND14246; GFX90A-NEXT:    s_setpc_b64 s[30:31]14247;14248; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_3_6:14249; GFX942:       ; %bb.0:14250; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14251; GFX942-NEXT:    ;;#ASMSTART14252; GFX942-NEXT:    ; def s[8:9]14253; GFX942-NEXT:    ;;#ASMEND14254; GFX942-NEXT:    ;;#ASMSTART14255; GFX942-NEXT:    ; def s[0:1]14256; GFX942-NEXT:    ;;#ASMEND14257; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s9, s114258; GFX942-NEXT:    ;;#ASMSTART14259; GFX942-NEXT:    ; use s[8:9]14260; GFX942-NEXT:    ;;#ASMEND14261; GFX942-NEXT:    s_setpc_b64 s[30:31]14262  %vec0 = call <4 x i16> asm "; def $0", "=s"()14263  %vec1 = call <4 x i16> asm "; def $0", "=s"()14264  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 3, i32 6>14265  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14266  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)14267  ret void14268}14269 14270define void @s_shuffle_v3i16_v4i16__7_4_6() {14271; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_4_6:14272; GFX900:       ; %bb.0:14273; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14274; GFX900-NEXT:    ;;#ASMSTART14275; GFX900-NEXT:    ; def s[8:9]14276; GFX900-NEXT:    ;;#ASMEND14277; GFX900-NEXT:    s_lshr_b32 s4, s9, 1614278; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s814279; GFX900-NEXT:    ;;#ASMSTART14280; GFX900-NEXT:    ; use s[8:9]14281; GFX900-NEXT:    ;;#ASMEND14282; GFX900-NEXT:    s_setpc_b64 s[30:31]14283;14284; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_4_6:14285; GFX90A:       ; %bb.0:14286; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14287; GFX90A-NEXT:    ;;#ASMSTART14288; GFX90A-NEXT:    ; def s[8:9]14289; GFX90A-NEXT:    ;;#ASMEND14290; GFX90A-NEXT:    s_lshr_b32 s4, s9, 1614291; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s814292; GFX90A-NEXT:    ;;#ASMSTART14293; GFX90A-NEXT:    ; use s[8:9]14294; GFX90A-NEXT:    ;;#ASMEND14295; GFX90A-NEXT:    s_setpc_b64 s[30:31]14296;14297; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_4_6:14298; GFX942:       ; %bb.0:14299; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14300; GFX942-NEXT:    ;;#ASMSTART14301; GFX942-NEXT:    ; def s[8:9]14302; GFX942-NEXT:    ;;#ASMEND14303; GFX942-NEXT:    s_lshr_b32 s0, s9, 1614304; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s814305; GFX942-NEXT:    ;;#ASMSTART14306; GFX942-NEXT:    ; use s[8:9]14307; GFX942-NEXT:    ;;#ASMEND14308; GFX942-NEXT:    s_setpc_b64 s[30:31]14309  %vec0 = call <4 x i16> asm "; def $0", "=s"()14310  %vec1 = call <4 x i16> asm "; def $0", "=s"()14311  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 4, i32 6>14312  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14313  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)14314  ret void14315}14316 14317define void @s_shuffle_v3i16_v4i16__7_5_6() {14318; GFX9-LABEL: s_shuffle_v3i16_v4i16__7_5_6:14319; GFX9:       ; %bb.0:14320; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14321; GFX9-NEXT:    ;;#ASMSTART14322; GFX9-NEXT:    ; def s[8:9]14323; GFX9-NEXT:    ;;#ASMEND14324; GFX9-NEXT:    s_pack_hh_b32_b16 s8, s9, s814325; GFX9-NEXT:    ;;#ASMSTART14326; GFX9-NEXT:    ; use s[8:9]14327; GFX9-NEXT:    ;;#ASMEND14328; GFX9-NEXT:    s_setpc_b64 s[30:31]14329  %vec0 = call <4 x i16> asm "; def $0", "=s"()14330  %vec1 = call <4 x i16> asm "; def $0", "=s"()14331  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 5, i32 6>14332  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14333  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)14334  ret void14335}14336 14337define void @s_shuffle_v3i16_v4i16__u_7_7() {14338; GFX900-LABEL: s_shuffle_v3i16_v4i16__u_7_7:14339; GFX900:       ; %bb.0:14340; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14341; GFX900-NEXT:    ;;#ASMSTART14342; GFX900-NEXT:    ; def s[4:5]14343; GFX900-NEXT:    ;;#ASMEND14344; GFX900-NEXT:    s_lshr_b32 s9, s5, 1614345; GFX900-NEXT:    s_mov_b32 s8, s514346; GFX900-NEXT:    ;;#ASMSTART14347; GFX900-NEXT:    ; use s[8:9]14348; GFX900-NEXT:    ;;#ASMEND14349; GFX900-NEXT:    s_setpc_b64 s[30:31]14350;14351; GFX90A-LABEL: s_shuffle_v3i16_v4i16__u_7_7:14352; GFX90A:       ; %bb.0:14353; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14354; GFX90A-NEXT:    ;;#ASMSTART14355; GFX90A-NEXT:    ; def s[4:5]14356; GFX90A-NEXT:    ;;#ASMEND14357; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1614358; GFX90A-NEXT:    s_mov_b32 s8, s514359; GFX90A-NEXT:    ;;#ASMSTART14360; GFX90A-NEXT:    ; use s[8:9]14361; GFX90A-NEXT:    ;;#ASMEND14362; GFX90A-NEXT:    s_setpc_b64 s[30:31]14363;14364; GFX942-LABEL: s_shuffle_v3i16_v4i16__u_7_7:14365; GFX942:       ; %bb.0:14366; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14367; GFX942-NEXT:    ;;#ASMSTART14368; GFX942-NEXT:    ; def s[0:1]14369; GFX942-NEXT:    ;;#ASMEND14370; GFX942-NEXT:    s_lshr_b32 s9, s1, 1614371; GFX942-NEXT:    s_mov_b32 s8, s114372; GFX942-NEXT:    ;;#ASMSTART14373; GFX942-NEXT:    ; use s[8:9]14374; GFX942-NEXT:    ;;#ASMEND14375; GFX942-NEXT:    s_setpc_b64 s[30:31]14376  %vec0 = call <4 x i16> asm "; def $0", "=s"()14377  %vec1 = call <4 x i16> asm "; def $0", "=s"()14378  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 poison, i32 7, i32 7>14379  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14380  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)14381  ret void14382}14383 14384define void @s_shuffle_v3i16_v4i16__0_7_7() {14385; GFX900-LABEL: s_shuffle_v3i16_v4i16__0_7_7:14386; GFX900:       ; %bb.0:14387; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14388; GFX900-NEXT:    ;;#ASMSTART14389; GFX900-NEXT:    ; def s[4:5]14390; GFX900-NEXT:    ;;#ASMEND14391; GFX900-NEXT:    ;;#ASMSTART14392; GFX900-NEXT:    ; def s[6:7]14393; GFX900-NEXT:    ;;#ASMEND14394; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s4, s714395; GFX900-NEXT:    s_lshr_b32 s9, s7, 1614396; GFX900-NEXT:    ;;#ASMSTART14397; GFX900-NEXT:    ; use s[8:9]14398; GFX900-NEXT:    ;;#ASMEND14399; GFX900-NEXT:    s_setpc_b64 s[30:31]14400;14401; GFX90A-LABEL: s_shuffle_v3i16_v4i16__0_7_7:14402; GFX90A:       ; %bb.0:14403; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14404; GFX90A-NEXT:    ;;#ASMSTART14405; GFX90A-NEXT:    ; def s[4:5]14406; GFX90A-NEXT:    ;;#ASMEND14407; GFX90A-NEXT:    ;;#ASMSTART14408; GFX90A-NEXT:    ; def s[6:7]14409; GFX90A-NEXT:    ;;#ASMEND14410; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s4, s714411; GFX90A-NEXT:    s_lshr_b32 s9, s7, 1614412; GFX90A-NEXT:    ;;#ASMSTART14413; GFX90A-NEXT:    ; use s[8:9]14414; GFX90A-NEXT:    ;;#ASMEND14415; GFX90A-NEXT:    s_setpc_b64 s[30:31]14416;14417; GFX942-LABEL: s_shuffle_v3i16_v4i16__0_7_7:14418; GFX942:       ; %bb.0:14419; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14420; GFX942-NEXT:    ;;#ASMSTART14421; GFX942-NEXT:    ; def s[0:1]14422; GFX942-NEXT:    ;;#ASMEND14423; GFX942-NEXT:    ;;#ASMSTART14424; GFX942-NEXT:    ; def s[2:3]14425; GFX942-NEXT:    ;;#ASMEND14426; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s0, s314427; GFX942-NEXT:    s_lshr_b32 s9, s3, 1614428; GFX942-NEXT:    ;;#ASMSTART14429; GFX942-NEXT:    ; use s[8:9]14430; GFX942-NEXT:    ;;#ASMEND14431; GFX942-NEXT:    s_setpc_b64 s[30:31]14432  %vec0 = call <4 x i16> asm "; def $0", "=s"()14433  %vec1 = call <4 x i16> asm "; def $0", "=s"()14434  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 0, i32 7, i32 7>14435  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14436  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)14437  ret void14438}14439 14440define void @s_shuffle_v3i16_v4i16__1_7_7() {14441; GFX900-LABEL: s_shuffle_v3i16_v4i16__1_7_7:14442; GFX900:       ; %bb.0:14443; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14444; GFX900-NEXT:    ;;#ASMSTART14445; GFX900-NEXT:    ; def s[4:5]14446; GFX900-NEXT:    ;;#ASMEND14447; GFX900-NEXT:    ;;#ASMSTART14448; GFX900-NEXT:    ; def s[6:7]14449; GFX900-NEXT:    ;;#ASMEND14450; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s714451; GFX900-NEXT:    s_lshr_b32 s9, s7, 1614452; GFX900-NEXT:    ;;#ASMSTART14453; GFX900-NEXT:    ; use s[8:9]14454; GFX900-NEXT:    ;;#ASMEND14455; GFX900-NEXT:    s_setpc_b64 s[30:31]14456;14457; GFX90A-LABEL: s_shuffle_v3i16_v4i16__1_7_7:14458; GFX90A:       ; %bb.0:14459; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14460; GFX90A-NEXT:    ;;#ASMSTART14461; GFX90A-NEXT:    ; def s[4:5]14462; GFX90A-NEXT:    ;;#ASMEND14463; GFX90A-NEXT:    ;;#ASMSTART14464; GFX90A-NEXT:    ; def s[6:7]14465; GFX90A-NEXT:    ;;#ASMEND14466; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s714467; GFX90A-NEXT:    s_lshr_b32 s9, s7, 1614468; GFX90A-NEXT:    ;;#ASMSTART14469; GFX90A-NEXT:    ; use s[8:9]14470; GFX90A-NEXT:    ;;#ASMEND14471; GFX90A-NEXT:    s_setpc_b64 s[30:31]14472;14473; GFX942-LABEL: s_shuffle_v3i16_v4i16__1_7_7:14474; GFX942:       ; %bb.0:14475; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14476; GFX942-NEXT:    ;;#ASMSTART14477; GFX942-NEXT:    ; def s[0:1]14478; GFX942-NEXT:    ;;#ASMEND14479; GFX942-NEXT:    ;;#ASMSTART14480; GFX942-NEXT:    ; def s[2:3]14481; GFX942-NEXT:    ;;#ASMEND14482; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s314483; GFX942-NEXT:    s_lshr_b32 s9, s3, 1614484; GFX942-NEXT:    ;;#ASMSTART14485; GFX942-NEXT:    ; use s[8:9]14486; GFX942-NEXT:    ;;#ASMEND14487; GFX942-NEXT:    s_setpc_b64 s[30:31]14488  %vec0 = call <4 x i16> asm "; def $0", "=s"()14489  %vec1 = call <4 x i16> asm "; def $0", "=s"()14490  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 1, i32 7, i32 7>14491  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14492  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)14493  ret void14494}14495 14496define void @s_shuffle_v3i16_v4i16__2_7_7() {14497; GFX900-LABEL: s_shuffle_v3i16_v4i16__2_7_7:14498; GFX900:       ; %bb.0:14499; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14500; GFX900-NEXT:    ;;#ASMSTART14501; GFX900-NEXT:    ; def s[4:5]14502; GFX900-NEXT:    ;;#ASMEND14503; GFX900-NEXT:    ;;#ASMSTART14504; GFX900-NEXT:    ; def s[6:7]14505; GFX900-NEXT:    ;;#ASMEND14506; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s5, s714507; GFX900-NEXT:    s_lshr_b32 s9, s7, 1614508; GFX900-NEXT:    ;;#ASMSTART14509; GFX900-NEXT:    ; use s[8:9]14510; GFX900-NEXT:    ;;#ASMEND14511; GFX900-NEXT:    s_setpc_b64 s[30:31]14512;14513; GFX90A-LABEL: s_shuffle_v3i16_v4i16__2_7_7:14514; GFX90A:       ; %bb.0:14515; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14516; GFX90A-NEXT:    ;;#ASMSTART14517; GFX90A-NEXT:    ; def s[4:5]14518; GFX90A-NEXT:    ;;#ASMEND14519; GFX90A-NEXT:    ;;#ASMSTART14520; GFX90A-NEXT:    ; def s[6:7]14521; GFX90A-NEXT:    ;;#ASMEND14522; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s5, s714523; GFX90A-NEXT:    s_lshr_b32 s9, s7, 1614524; GFX90A-NEXT:    ;;#ASMSTART14525; GFX90A-NEXT:    ; use s[8:9]14526; GFX90A-NEXT:    ;;#ASMEND14527; GFX90A-NEXT:    s_setpc_b64 s[30:31]14528;14529; GFX942-LABEL: s_shuffle_v3i16_v4i16__2_7_7:14530; GFX942:       ; %bb.0:14531; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14532; GFX942-NEXT:    ;;#ASMSTART14533; GFX942-NEXT:    ; def s[0:1]14534; GFX942-NEXT:    ;;#ASMEND14535; GFX942-NEXT:    ;;#ASMSTART14536; GFX942-NEXT:    ; def s[2:3]14537; GFX942-NEXT:    ;;#ASMEND14538; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s1, s314539; GFX942-NEXT:    s_lshr_b32 s9, s3, 1614540; GFX942-NEXT:    ;;#ASMSTART14541; GFX942-NEXT:    ; use s[8:9]14542; GFX942-NEXT:    ;;#ASMEND14543; GFX942-NEXT:    s_setpc_b64 s[30:31]14544  %vec0 = call <4 x i16> asm "; def $0", "=s"()14545  %vec1 = call <4 x i16> asm "; def $0", "=s"()14546  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 2, i32 7, i32 7>14547  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14548  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)14549  ret void14550}14551 14552define void @s_shuffle_v3i16_v4i16__3_7_7() {14553; GFX900-LABEL: s_shuffle_v3i16_v4i16__3_7_7:14554; GFX900:       ; %bb.0:14555; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14556; GFX900-NEXT:    ;;#ASMSTART14557; GFX900-NEXT:    ; def s[4:5]14558; GFX900-NEXT:    ;;#ASMEND14559; GFX900-NEXT:    ;;#ASMSTART14560; GFX900-NEXT:    ; def s[6:7]14561; GFX900-NEXT:    ;;#ASMEND14562; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s714563; GFX900-NEXT:    s_lshr_b32 s9, s7, 1614564; GFX900-NEXT:    ;;#ASMSTART14565; GFX900-NEXT:    ; use s[8:9]14566; GFX900-NEXT:    ;;#ASMEND14567; GFX900-NEXT:    s_setpc_b64 s[30:31]14568;14569; GFX90A-LABEL: s_shuffle_v3i16_v4i16__3_7_7:14570; GFX90A:       ; %bb.0:14571; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14572; GFX90A-NEXT:    ;;#ASMSTART14573; GFX90A-NEXT:    ; def s[4:5]14574; GFX90A-NEXT:    ;;#ASMEND14575; GFX90A-NEXT:    ;;#ASMSTART14576; GFX90A-NEXT:    ; def s[6:7]14577; GFX90A-NEXT:    ;;#ASMEND14578; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s714579; GFX90A-NEXT:    s_lshr_b32 s9, s7, 1614580; GFX90A-NEXT:    ;;#ASMSTART14581; GFX90A-NEXT:    ; use s[8:9]14582; GFX90A-NEXT:    ;;#ASMEND14583; GFX90A-NEXT:    s_setpc_b64 s[30:31]14584;14585; GFX942-LABEL: s_shuffle_v3i16_v4i16__3_7_7:14586; GFX942:       ; %bb.0:14587; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14588; GFX942-NEXT:    ;;#ASMSTART14589; GFX942-NEXT:    ; def s[0:1]14590; GFX942-NEXT:    ;;#ASMEND14591; GFX942-NEXT:    ;;#ASMSTART14592; GFX942-NEXT:    ; def s[2:3]14593; GFX942-NEXT:    ;;#ASMEND14594; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s314595; GFX942-NEXT:    s_lshr_b32 s9, s3, 1614596; GFX942-NEXT:    ;;#ASMSTART14597; GFX942-NEXT:    ; use s[8:9]14598; GFX942-NEXT:    ;;#ASMEND14599; GFX942-NEXT:    s_setpc_b64 s[30:31]14600  %vec0 = call <4 x i16> asm "; def $0", "=s"()14601  %vec1 = call <4 x i16> asm "; def $0", "=s"()14602  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 3, i32 7, i32 7>14603  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14604  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)14605  ret void14606}14607 14608define void @s_shuffle_v3i16_v4i16__4_7_7() {14609; GFX900-LABEL: s_shuffle_v3i16_v4i16__4_7_7:14610; GFX900:       ; %bb.0:14611; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14612; GFX900-NEXT:    ;;#ASMSTART14613; GFX900-NEXT:    ; def s[4:5]14614; GFX900-NEXT:    ;;#ASMEND14615; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s4, s514616; GFX900-NEXT:    s_lshr_b32 s9, s5, 1614617; GFX900-NEXT:    ;;#ASMSTART14618; GFX900-NEXT:    ; use s[8:9]14619; GFX900-NEXT:    ;;#ASMEND14620; GFX900-NEXT:    s_setpc_b64 s[30:31]14621;14622; GFX90A-LABEL: s_shuffle_v3i16_v4i16__4_7_7:14623; GFX90A:       ; %bb.0:14624; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14625; GFX90A-NEXT:    ;;#ASMSTART14626; GFX90A-NEXT:    ; def s[4:5]14627; GFX90A-NEXT:    ;;#ASMEND14628; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s4, s514629; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1614630; GFX90A-NEXT:    ;;#ASMSTART14631; GFX90A-NEXT:    ; use s[8:9]14632; GFX90A-NEXT:    ;;#ASMEND14633; GFX90A-NEXT:    s_setpc_b64 s[30:31]14634;14635; GFX942-LABEL: s_shuffle_v3i16_v4i16__4_7_7:14636; GFX942:       ; %bb.0:14637; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14638; GFX942-NEXT:    ;;#ASMSTART14639; GFX942-NEXT:    ; def s[0:1]14640; GFX942-NEXT:    ;;#ASMEND14641; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s0, s114642; GFX942-NEXT:    s_lshr_b32 s9, s1, 1614643; GFX942-NEXT:    ;;#ASMSTART14644; GFX942-NEXT:    ; use s[8:9]14645; GFX942-NEXT:    ;;#ASMEND14646; GFX942-NEXT:    s_setpc_b64 s[30:31]14647  %vec0 = call <4 x i16> asm "; def $0", "=s"()14648  %vec1 = call <4 x i16> asm "; def $0", "=s"()14649  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 4, i32 7, i32 7>14650  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14651  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)14652  ret void14653}14654 14655define void @s_shuffle_v3i16_v4i16__5_7_7() {14656; GFX900-LABEL: s_shuffle_v3i16_v4i16__5_7_7:14657; GFX900:       ; %bb.0:14658; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14659; GFX900-NEXT:    ;;#ASMSTART14660; GFX900-NEXT:    ; def s[4:5]14661; GFX900-NEXT:    ;;#ASMEND14662; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s514663; GFX900-NEXT:    s_lshr_b32 s9, s5, 1614664; GFX900-NEXT:    ;;#ASMSTART14665; GFX900-NEXT:    ; use s[8:9]14666; GFX900-NEXT:    ;;#ASMEND14667; GFX900-NEXT:    s_setpc_b64 s[30:31]14668;14669; GFX90A-LABEL: s_shuffle_v3i16_v4i16__5_7_7:14670; GFX90A:       ; %bb.0:14671; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14672; GFX90A-NEXT:    ;;#ASMSTART14673; GFX90A-NEXT:    ; def s[4:5]14674; GFX90A-NEXT:    ;;#ASMEND14675; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s514676; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1614677; GFX90A-NEXT:    ;;#ASMSTART14678; GFX90A-NEXT:    ; use s[8:9]14679; GFX90A-NEXT:    ;;#ASMEND14680; GFX90A-NEXT:    s_setpc_b64 s[30:31]14681;14682; GFX942-LABEL: s_shuffle_v3i16_v4i16__5_7_7:14683; GFX942:       ; %bb.0:14684; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14685; GFX942-NEXT:    ;;#ASMSTART14686; GFX942-NEXT:    ; def s[0:1]14687; GFX942-NEXT:    ;;#ASMEND14688; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s114689; GFX942-NEXT:    s_lshr_b32 s9, s1, 1614690; GFX942-NEXT:    ;;#ASMSTART14691; GFX942-NEXT:    ; use s[8:9]14692; GFX942-NEXT:    ;;#ASMEND14693; GFX942-NEXT:    s_setpc_b64 s[30:31]14694  %vec0 = call <4 x i16> asm "; def $0", "=s"()14695  %vec1 = call <4 x i16> asm "; def $0", "=s"()14696  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 5, i32 7, i32 7>14697  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14698  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)14699  ret void14700}14701 14702define void @s_shuffle_v3i16_v4i16__6_7_7() {14703; GFX900-LABEL: s_shuffle_v3i16_v4i16__6_7_7:14704; GFX900:       ; %bb.0:14705; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14706; GFX900-NEXT:    ;;#ASMSTART14707; GFX900-NEXT:    ; def s[4:5]14708; GFX900-NEXT:    ;;#ASMEND14709; GFX900-NEXT:    s_lshr_b32 s9, s5, 1614710; GFX900-NEXT:    s_mov_b32 s8, s514711; GFX900-NEXT:    ;;#ASMSTART14712; GFX900-NEXT:    ; use s[8:9]14713; GFX900-NEXT:    ;;#ASMEND14714; GFX900-NEXT:    s_setpc_b64 s[30:31]14715;14716; GFX90A-LABEL: s_shuffle_v3i16_v4i16__6_7_7:14717; GFX90A:       ; %bb.0:14718; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14719; GFX90A-NEXT:    ;;#ASMSTART14720; GFX90A-NEXT:    ; def s[4:5]14721; GFX90A-NEXT:    ;;#ASMEND14722; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1614723; GFX90A-NEXT:    s_mov_b32 s8, s514724; GFX90A-NEXT:    ;;#ASMSTART14725; GFX90A-NEXT:    ; use s[8:9]14726; GFX90A-NEXT:    ;;#ASMEND14727; GFX90A-NEXT:    s_setpc_b64 s[30:31]14728;14729; GFX942-LABEL: s_shuffle_v3i16_v4i16__6_7_7:14730; GFX942:       ; %bb.0:14731; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14732; GFX942-NEXT:    ;;#ASMSTART14733; GFX942-NEXT:    ; def s[0:1]14734; GFX942-NEXT:    ;;#ASMEND14735; GFX942-NEXT:    s_lshr_b32 s9, s1, 1614736; GFX942-NEXT:    s_mov_b32 s8, s114737; GFX942-NEXT:    ;;#ASMSTART14738; GFX942-NEXT:    ; use s[8:9]14739; GFX942-NEXT:    ;;#ASMEND14740; GFX942-NEXT:    s_setpc_b64 s[30:31]14741  %vec0 = call <4 x i16> asm "; def $0", "=s"()14742  %vec1 = call <4 x i16> asm "; def $0", "=s"()14743  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 6, i32 7, i32 7>14744  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14745  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)14746  ret void14747}14748 14749define void @s_shuffle_v3i16_v4i16__7_u_7() {14750; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_u_7:14751; GFX900:       ; %bb.0:14752; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14753; GFX900-NEXT:    ;;#ASMSTART14754; GFX900-NEXT:    ; def s[4:5]14755; GFX900-NEXT:    ;;#ASMEND14756; GFX900-NEXT:    s_lshr_b32 s8, s5, 1614757; GFX900-NEXT:    s_mov_b32 s9, s814758; GFX900-NEXT:    ;;#ASMSTART14759; GFX900-NEXT:    ; use s[8:9]14760; GFX900-NEXT:    ;;#ASMEND14761; GFX900-NEXT:    s_setpc_b64 s[30:31]14762;14763; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_u_7:14764; GFX90A:       ; %bb.0:14765; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14766; GFX90A-NEXT:    ;;#ASMSTART14767; GFX90A-NEXT:    ; def s[4:5]14768; GFX90A-NEXT:    ;;#ASMEND14769; GFX90A-NEXT:    s_lshr_b32 s8, s5, 1614770; GFX90A-NEXT:    s_mov_b32 s9, s814771; GFX90A-NEXT:    ;;#ASMSTART14772; GFX90A-NEXT:    ; use s[8:9]14773; GFX90A-NEXT:    ;;#ASMEND14774; GFX90A-NEXT:    s_setpc_b64 s[30:31]14775;14776; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_u_7:14777; GFX942:       ; %bb.0:14778; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14779; GFX942-NEXT:    ;;#ASMSTART14780; GFX942-NEXT:    ; def s[0:1]14781; GFX942-NEXT:    ;;#ASMEND14782; GFX942-NEXT:    s_lshr_b32 s8, s1, 1614783; GFX942-NEXT:    s_mov_b32 s9, s814784; GFX942-NEXT:    ;;#ASMSTART14785; GFX942-NEXT:    ; use s[8:9]14786; GFX942-NEXT:    ;;#ASMEND14787; GFX942-NEXT:    s_setpc_b64 s[30:31]14788  %vec0 = call <4 x i16> asm "; def $0", "=s"()14789  %vec1 = call <4 x i16> asm "; def $0", "=s"()14790  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 poison, i32 7>14791  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14792  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)14793  ret void14794}14795 14796define void @s_shuffle_v3i16_v4i16__7_0_7() {14797; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_0_7:14798; GFX900:       ; %bb.0:14799; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14800; GFX900-NEXT:    ;;#ASMSTART14801; GFX900-NEXT:    ; def s[6:7]14802; GFX900-NEXT:    ;;#ASMEND14803; GFX900-NEXT:    s_lshr_b32 s9, s7, 1614804; GFX900-NEXT:    ;;#ASMSTART14805; GFX900-NEXT:    ; def s[4:5]14806; GFX900-NEXT:    ;;#ASMEND14807; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s9, s414808; GFX900-NEXT:    ;;#ASMSTART14809; GFX900-NEXT:    ; use s[8:9]14810; GFX900-NEXT:    ;;#ASMEND14811; GFX900-NEXT:    s_setpc_b64 s[30:31]14812;14813; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_0_7:14814; GFX90A:       ; %bb.0:14815; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14816; GFX90A-NEXT:    ;;#ASMSTART14817; GFX90A-NEXT:    ; def s[6:7]14818; GFX90A-NEXT:    ;;#ASMEND14819; GFX90A-NEXT:    s_lshr_b32 s9, s7, 1614820; GFX90A-NEXT:    ;;#ASMSTART14821; GFX90A-NEXT:    ; def s[4:5]14822; GFX90A-NEXT:    ;;#ASMEND14823; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s9, s414824; GFX90A-NEXT:    ;;#ASMSTART14825; GFX90A-NEXT:    ; use s[8:9]14826; GFX90A-NEXT:    ;;#ASMEND14827; GFX90A-NEXT:    s_setpc_b64 s[30:31]14828;14829; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_0_7:14830; GFX942:       ; %bb.0:14831; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14832; GFX942-NEXT:    ;;#ASMSTART14833; GFX942-NEXT:    ; def s[2:3]14834; GFX942-NEXT:    ;;#ASMEND14835; GFX942-NEXT:    s_lshr_b32 s9, s3, 1614836; GFX942-NEXT:    ;;#ASMSTART14837; GFX942-NEXT:    ; def s[0:1]14838; GFX942-NEXT:    ;;#ASMEND14839; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s9, s014840; GFX942-NEXT:    ;;#ASMSTART14841; GFX942-NEXT:    ; use s[8:9]14842; GFX942-NEXT:    ;;#ASMEND14843; GFX942-NEXT:    s_setpc_b64 s[30:31]14844  %vec0 = call <4 x i16> asm "; def $0", "=s"()14845  %vec1 = call <4 x i16> asm "; def $0", "=s"()14846  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 0, i32 7>14847  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14848  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)14849  ret void14850}14851 14852define void @s_shuffle_v3i16_v4i16__7_1_7() {14853; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_1_7:14854; GFX900:       ; %bb.0:14855; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14856; GFX900-NEXT:    ;;#ASMSTART14857; GFX900-NEXT:    ; def s[4:5]14858; GFX900-NEXT:    ;;#ASMEND14859; GFX900-NEXT:    ;;#ASMSTART14860; GFX900-NEXT:    ; def s[6:7]14861; GFX900-NEXT:    ;;#ASMEND14862; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s7, s414863; GFX900-NEXT:    s_lshr_b32 s9, s7, 1614864; GFX900-NEXT:    ;;#ASMSTART14865; GFX900-NEXT:    ; use s[8:9]14866; GFX900-NEXT:    ;;#ASMEND14867; GFX900-NEXT:    s_setpc_b64 s[30:31]14868;14869; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_1_7:14870; GFX90A:       ; %bb.0:14871; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14872; GFX90A-NEXT:    ;;#ASMSTART14873; GFX90A-NEXT:    ; def s[4:5]14874; GFX90A-NEXT:    ;;#ASMEND14875; GFX90A-NEXT:    ;;#ASMSTART14876; GFX90A-NEXT:    ; def s[6:7]14877; GFX90A-NEXT:    ;;#ASMEND14878; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s7, s414879; GFX90A-NEXT:    s_lshr_b32 s9, s7, 1614880; GFX90A-NEXT:    ;;#ASMSTART14881; GFX90A-NEXT:    ; use s[8:9]14882; GFX90A-NEXT:    ;;#ASMEND14883; GFX90A-NEXT:    s_setpc_b64 s[30:31]14884;14885; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_1_7:14886; GFX942:       ; %bb.0:14887; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14888; GFX942-NEXT:    ;;#ASMSTART14889; GFX942-NEXT:    ; def s[0:1]14890; GFX942-NEXT:    ;;#ASMEND14891; GFX942-NEXT:    ;;#ASMSTART14892; GFX942-NEXT:    ; def s[2:3]14893; GFX942-NEXT:    ;;#ASMEND14894; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s3, s014895; GFX942-NEXT:    s_lshr_b32 s9, s3, 1614896; GFX942-NEXT:    ;;#ASMSTART14897; GFX942-NEXT:    ; use s[8:9]14898; GFX942-NEXT:    ;;#ASMEND14899; GFX942-NEXT:    s_setpc_b64 s[30:31]14900  %vec0 = call <4 x i16> asm "; def $0", "=s"()14901  %vec1 = call <4 x i16> asm "; def $0", "=s"()14902  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 1, i32 7>14903  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14904  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)14905  ret void14906}14907 14908define void @s_shuffle_v3i16_v4i16__7_2_7() {14909; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_2_7:14910; GFX900:       ; %bb.0:14911; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14912; GFX900-NEXT:    ;;#ASMSTART14913; GFX900-NEXT:    ; def s[6:7]14914; GFX900-NEXT:    ;;#ASMEND14915; GFX900-NEXT:    s_lshr_b32 s9, s7, 1614916; GFX900-NEXT:    ;;#ASMSTART14917; GFX900-NEXT:    ; def s[4:5]14918; GFX900-NEXT:    ;;#ASMEND14919; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s9, s514920; GFX900-NEXT:    ;;#ASMSTART14921; GFX900-NEXT:    ; use s[8:9]14922; GFX900-NEXT:    ;;#ASMEND14923; GFX900-NEXT:    s_setpc_b64 s[30:31]14924;14925; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_2_7:14926; GFX90A:       ; %bb.0:14927; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14928; GFX90A-NEXT:    ;;#ASMSTART14929; GFX90A-NEXT:    ; def s[6:7]14930; GFX90A-NEXT:    ;;#ASMEND14931; GFX90A-NEXT:    s_lshr_b32 s9, s7, 1614932; GFX90A-NEXT:    ;;#ASMSTART14933; GFX90A-NEXT:    ; def s[4:5]14934; GFX90A-NEXT:    ;;#ASMEND14935; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s9, s514936; GFX90A-NEXT:    ;;#ASMSTART14937; GFX90A-NEXT:    ; use s[8:9]14938; GFX90A-NEXT:    ;;#ASMEND14939; GFX90A-NEXT:    s_setpc_b64 s[30:31]14940;14941; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_2_7:14942; GFX942:       ; %bb.0:14943; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14944; GFX942-NEXT:    ;;#ASMSTART14945; GFX942-NEXT:    ; def s[2:3]14946; GFX942-NEXT:    ;;#ASMEND14947; GFX942-NEXT:    s_lshr_b32 s9, s3, 1614948; GFX942-NEXT:    ;;#ASMSTART14949; GFX942-NEXT:    ; def s[0:1]14950; GFX942-NEXT:    ;;#ASMEND14951; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s9, s114952; GFX942-NEXT:    ;;#ASMSTART14953; GFX942-NEXT:    ; use s[8:9]14954; GFX942-NEXT:    ;;#ASMEND14955; GFX942-NEXT:    s_setpc_b64 s[30:31]14956  %vec0 = call <4 x i16> asm "; def $0", "=s"()14957  %vec1 = call <4 x i16> asm "; def $0", "=s"()14958  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 2, i32 7>14959  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14960  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)14961  ret void14962}14963 14964define void @s_shuffle_v3i16_v4i16__7_3_7() {14965; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_3_7:14966; GFX900:       ; %bb.0:14967; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14968; GFX900-NEXT:    ;;#ASMSTART14969; GFX900-NEXT:    ; def s[4:5]14970; GFX900-NEXT:    ;;#ASMEND14971; GFX900-NEXT:    ;;#ASMSTART14972; GFX900-NEXT:    ; def s[6:7]14973; GFX900-NEXT:    ;;#ASMEND14974; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s7, s514975; GFX900-NEXT:    s_lshr_b32 s9, s7, 1614976; GFX900-NEXT:    ;;#ASMSTART14977; GFX900-NEXT:    ; use s[8:9]14978; GFX900-NEXT:    ;;#ASMEND14979; GFX900-NEXT:    s_setpc_b64 s[30:31]14980;14981; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_3_7:14982; GFX90A:       ; %bb.0:14983; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14984; GFX90A-NEXT:    ;;#ASMSTART14985; GFX90A-NEXT:    ; def s[4:5]14986; GFX90A-NEXT:    ;;#ASMEND14987; GFX90A-NEXT:    ;;#ASMSTART14988; GFX90A-NEXT:    ; def s[6:7]14989; GFX90A-NEXT:    ;;#ASMEND14990; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s7, s514991; GFX90A-NEXT:    s_lshr_b32 s9, s7, 1614992; GFX90A-NEXT:    ;;#ASMSTART14993; GFX90A-NEXT:    ; use s[8:9]14994; GFX90A-NEXT:    ;;#ASMEND14995; GFX90A-NEXT:    s_setpc_b64 s[30:31]14996;14997; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_3_7:14998; GFX942:       ; %bb.0:14999; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15000; GFX942-NEXT:    ;;#ASMSTART15001; GFX942-NEXT:    ; def s[0:1]15002; GFX942-NEXT:    ;;#ASMEND15003; GFX942-NEXT:    ;;#ASMSTART15004; GFX942-NEXT:    ; def s[2:3]15005; GFX942-NEXT:    ;;#ASMEND15006; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s3, s115007; GFX942-NEXT:    s_lshr_b32 s9, s3, 1615008; GFX942-NEXT:    ;;#ASMSTART15009; GFX942-NEXT:    ; use s[8:9]15010; GFX942-NEXT:    ;;#ASMEND15011; GFX942-NEXT:    s_setpc_b64 s[30:31]15012  %vec0 = call <4 x i16> asm "; def $0", "=s"()15013  %vec1 = call <4 x i16> asm "; def $0", "=s"()15014  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 3, i32 7>15015  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>15016  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)15017  ret void15018}15019 15020define void @s_shuffle_v3i16_v4i16__7_4_7() {15021; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_4_7:15022; GFX900:       ; %bb.0:15023; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15024; GFX900-NEXT:    ;;#ASMSTART15025; GFX900-NEXT:    ; def s[4:5]15026; GFX900-NEXT:    ;;#ASMEND15027; GFX900-NEXT:    s_lshr_b32 s9, s5, 1615028; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s9, s415029; GFX900-NEXT:    ;;#ASMSTART15030; GFX900-NEXT:    ; use s[8:9]15031; GFX900-NEXT:    ;;#ASMEND15032; GFX900-NEXT:    s_setpc_b64 s[30:31]15033;15034; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_4_7:15035; GFX90A:       ; %bb.0:15036; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15037; GFX90A-NEXT:    ;;#ASMSTART15038; GFX90A-NEXT:    ; def s[4:5]15039; GFX90A-NEXT:    ;;#ASMEND15040; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1615041; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s9, s415042; GFX90A-NEXT:    ;;#ASMSTART15043; GFX90A-NEXT:    ; use s[8:9]15044; GFX90A-NEXT:    ;;#ASMEND15045; GFX90A-NEXT:    s_setpc_b64 s[30:31]15046;15047; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_4_7:15048; GFX942:       ; %bb.0:15049; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15050; GFX942-NEXT:    ;;#ASMSTART15051; GFX942-NEXT:    ; def s[0:1]15052; GFX942-NEXT:    ;;#ASMEND15053; GFX942-NEXT:    s_lshr_b32 s9, s1, 1615054; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s9, s015055; GFX942-NEXT:    ;;#ASMSTART15056; GFX942-NEXT:    ; use s[8:9]15057; GFX942-NEXT:    ;;#ASMEND15058; GFX942-NEXT:    s_setpc_b64 s[30:31]15059  %vec0 = call <4 x i16> asm "; def $0", "=s"()15060  %vec1 = call <4 x i16> asm "; def $0", "=s"()15061  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 4, i32 7>15062  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>15063  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)15064  ret void15065}15066 15067define void @s_shuffle_v3i16_v4i16__7_5_7() {15068; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_5_7:15069; GFX900:       ; %bb.0:15070; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15071; GFX900-NEXT:    ;;#ASMSTART15072; GFX900-NEXT:    ; def s[4:5]15073; GFX900-NEXT:    ;;#ASMEND15074; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s415075; GFX900-NEXT:    s_lshr_b32 s9, s5, 1615076; GFX900-NEXT:    ;;#ASMSTART15077; GFX900-NEXT:    ; use s[8:9]15078; GFX900-NEXT:    ;;#ASMEND15079; GFX900-NEXT:    s_setpc_b64 s[30:31]15080;15081; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_5_7:15082; GFX90A:       ; %bb.0:15083; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15084; GFX90A-NEXT:    ;;#ASMSTART15085; GFX90A-NEXT:    ; def s[4:5]15086; GFX90A-NEXT:    ;;#ASMEND15087; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s415088; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1615089; GFX90A-NEXT:    ;;#ASMSTART15090; GFX90A-NEXT:    ; use s[8:9]15091; GFX90A-NEXT:    ;;#ASMEND15092; GFX90A-NEXT:    s_setpc_b64 s[30:31]15093;15094; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_5_7:15095; GFX942:       ; %bb.0:15096; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15097; GFX942-NEXT:    ;;#ASMSTART15098; GFX942-NEXT:    ; def s[0:1]15099; GFX942-NEXT:    ;;#ASMEND15100; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s015101; GFX942-NEXT:    s_lshr_b32 s9, s1, 1615102; GFX942-NEXT:    ;;#ASMSTART15103; GFX942-NEXT:    ; use s[8:9]15104; GFX942-NEXT:    ;;#ASMEND15105; GFX942-NEXT:    s_setpc_b64 s[30:31]15106  %vec0 = call <4 x i16> asm "; def $0", "=s"()15107  %vec1 = call <4 x i16> asm "; def $0", "=s"()15108  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 5, i32 7>15109  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>15110  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)15111  ret void15112}15113 15114define void @s_shuffle_v3i16_v4i16__7_6_7() {15115; GFX900-LABEL: s_shuffle_v3i16_v4i16__7_6_7:15116; GFX900:       ; %bb.0:15117; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15118; GFX900-NEXT:    ;;#ASMSTART15119; GFX900-NEXT:    ; def s[4:5]15120; GFX900-NEXT:    ;;#ASMEND15121; GFX900-NEXT:    s_lshr_b32 s9, s5, 1615122; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s9, s515123; GFX900-NEXT:    ;;#ASMSTART15124; GFX900-NEXT:    ; use s[8:9]15125; GFX900-NEXT:    ;;#ASMEND15126; GFX900-NEXT:    s_setpc_b64 s[30:31]15127;15128; GFX90A-LABEL: s_shuffle_v3i16_v4i16__7_6_7:15129; GFX90A:       ; %bb.0:15130; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15131; GFX90A-NEXT:    ;;#ASMSTART15132; GFX90A-NEXT:    ; def s[4:5]15133; GFX90A-NEXT:    ;;#ASMEND15134; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1615135; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s9, s515136; GFX90A-NEXT:    ;;#ASMSTART15137; GFX90A-NEXT:    ; use s[8:9]15138; GFX90A-NEXT:    ;;#ASMEND15139; GFX90A-NEXT:    s_setpc_b64 s[30:31]15140;15141; GFX942-LABEL: s_shuffle_v3i16_v4i16__7_6_7:15142; GFX942:       ; %bb.0:15143; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15144; GFX942-NEXT:    ;;#ASMSTART15145; GFX942-NEXT:    ; def s[0:1]15146; GFX942-NEXT:    ;;#ASMEND15147; GFX942-NEXT:    s_lshr_b32 s9, s1, 1615148; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s9, s115149; GFX942-NEXT:    ;;#ASMSTART15150; GFX942-NEXT:    ; use s[8:9]15151; GFX942-NEXT:    ;;#ASMEND15152; GFX942-NEXT:    s_setpc_b64 s[30:31]15153  %vec0 = call <4 x i16> asm "; def $0", "=s"()15154  %vec1 = call <4 x i16> asm "; def $0", "=s"()15155  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <3 x i32> <i32 7, i32 6, i32 7>15156  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>15157  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)15158  ret void15159}15160;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:15161; GFX90APLUS: {{.*}}15162