brintos

brintos / llvm-project-archived public Read only

0
0
Text · 248.5 KiB · a15919d Raw
7216 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9,GFX900 %s3; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX90A %s4; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx942 < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX942 %s5 6 7define void @v_shuffle_v2i16_v4i16__u_u(ptr addrspace(1) inreg %ptr) {8; GFX9-LABEL: v_shuffle_v2i16_v4i16__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, <2 x i32> poison14  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 415  ret void16}17 18define void @v_shuffle_v2i16_v4i16__0_u(ptr addrspace(1) inreg %ptr) {19; GFX900-LABEL: v_shuffle_v2i16_v4i16__0_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_dword v2, v0, s[16:17]27; GFX900-NEXT:    s_waitcnt vmcnt(0)28; GFX900-NEXT:    s_setpc_b64 s[30:31]29;30; GFX90A-LABEL: v_shuffle_v2i16_v4i16__0_u:31; GFX90A:       ; %bb.0:32; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)33; GFX90A-NEXT:    v_mov_b32_e32 v2, 034; GFX90A-NEXT:    ;;#ASMSTART35; GFX90A-NEXT:    ; def v[0:1]36; GFX90A-NEXT:    ;;#ASMEND37; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]38; GFX90A-NEXT:    s_waitcnt vmcnt(0)39; GFX90A-NEXT:    s_setpc_b64 s[30:31]40;41; GFX942-LABEL: v_shuffle_v2i16_v4i16__0_u:42; GFX942:       ; %bb.0:43; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)44; GFX942-NEXT:    v_mov_b32_e32 v2, 045; GFX942-NEXT:    ;;#ASMSTART46; GFX942-NEXT:    ; def v[0:1]47; GFX942-NEXT:    ;;#ASMEND48; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]49; GFX942-NEXT:    s_waitcnt vmcnt(0)50; GFX942-NEXT:    s_setpc_b64 s[30:31]51  %vec0 = call <4 x i16> asm "; def $0", "=v"()52  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 0, i32 poison>53  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 454  ret void55}56 57define void @v_shuffle_v2i16_v4i16__1_u(ptr addrspace(1) inreg %ptr) {58; GFX900-LABEL: v_shuffle_v2i16_v4i16__1_u:59; GFX900:       ; %bb.0:60; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)61; GFX900-NEXT:    ;;#ASMSTART62; GFX900-NEXT:    ; def v[0:1]63; GFX900-NEXT:    ;;#ASMEND64; GFX900-NEXT:    v_mov_b32_e32 v2, 065; GFX900-NEXT:    v_alignbit_b32 v0, s4, v0, 1666; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]67; GFX900-NEXT:    s_waitcnt vmcnt(0)68; GFX900-NEXT:    s_setpc_b64 s[30:31]69;70; GFX90A-LABEL: v_shuffle_v2i16_v4i16__1_u:71; GFX90A:       ; %bb.0:72; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)73; GFX90A-NEXT:    ;;#ASMSTART74; GFX90A-NEXT:    ; def v[0:1]75; GFX90A-NEXT:    ;;#ASMEND76; GFX90A-NEXT:    v_mov_b32_e32 v2, 077; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v0, 1678; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]79; GFX90A-NEXT:    s_waitcnt vmcnt(0)80; GFX90A-NEXT:    s_setpc_b64 s[30:31]81;82; GFX942-LABEL: v_shuffle_v2i16_v4i16__1_u:83; GFX942:       ; %bb.0:84; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)85; GFX942-NEXT:    ;;#ASMSTART86; GFX942-NEXT:    ; def v[0:1]87; GFX942-NEXT:    ;;#ASMEND88; GFX942-NEXT:    v_mov_b32_e32 v2, 089; GFX942-NEXT:    v_alignbit_b32 v0, s0, v0, 1690; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]91; GFX942-NEXT:    s_waitcnt vmcnt(0)92; GFX942-NEXT:    s_setpc_b64 s[30:31]93  %vec0 = call <4 x i16> asm "; def $0", "=v"()94  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 poison>95  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 496  ret void97}98 99define void @v_shuffle_v2i16_v4i16__2_u(ptr addrspace(1) inreg %ptr) {100; GFX900-LABEL: v_shuffle_v2i16_v4i16__2_u:101; GFX900:       ; %bb.0:102; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)103; GFX900-NEXT:    v_mov_b32_e32 v2, 0104; GFX900-NEXT:    ;;#ASMSTART105; GFX900-NEXT:    ; def v[0:1]106; GFX900-NEXT:    ;;#ASMEND107; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]108; GFX900-NEXT:    s_waitcnt vmcnt(0)109; GFX900-NEXT:    s_setpc_b64 s[30:31]110;111; GFX90A-LABEL: v_shuffle_v2i16_v4i16__2_u:112; GFX90A:       ; %bb.0:113; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)114; GFX90A-NEXT:    v_mov_b32_e32 v2, 0115; GFX90A-NEXT:    ;;#ASMSTART116; GFX90A-NEXT:    ; def v[0:1]117; GFX90A-NEXT:    ;;#ASMEND118; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]119; GFX90A-NEXT:    s_waitcnt vmcnt(0)120; GFX90A-NEXT:    s_setpc_b64 s[30:31]121;122; GFX942-LABEL: v_shuffle_v2i16_v4i16__2_u:123; GFX942:       ; %bb.0:124; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)125; GFX942-NEXT:    v_mov_b32_e32 v2, 0126; GFX942-NEXT:    ;;#ASMSTART127; GFX942-NEXT:    ; def v[0:1]128; GFX942-NEXT:    ;;#ASMEND129; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]130; GFX942-NEXT:    s_waitcnt vmcnt(0)131; GFX942-NEXT:    s_setpc_b64 s[30:31]132  %vec0 = call <4 x i16> asm "; def $0", "=v"()133  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 poison>134  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4135  ret void136}137 138define void @v_shuffle_v2i16_v4i16__3_u(ptr addrspace(1) inreg %ptr) {139; GFX900-LABEL: v_shuffle_v2i16_v4i16__3_u:140; GFX900:       ; %bb.0:141; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)142; GFX900-NEXT:    ;;#ASMSTART143; GFX900-NEXT:    ; def v[0:1]144; GFX900-NEXT:    ;;#ASMEND145; GFX900-NEXT:    v_mov_b32_e32 v2, 0146; GFX900-NEXT:    v_alignbit_b32 v0, s4, v1, 16147; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]148; GFX900-NEXT:    s_waitcnt vmcnt(0)149; GFX900-NEXT:    s_setpc_b64 s[30:31]150;151; GFX90A-LABEL: v_shuffle_v2i16_v4i16__3_u:152; GFX90A:       ; %bb.0:153; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)154; GFX90A-NEXT:    ;;#ASMSTART155; GFX90A-NEXT:    ; def v[0:1]156; GFX90A-NEXT:    ;;#ASMEND157; GFX90A-NEXT:    v_mov_b32_e32 v2, 0158; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v1, 16159; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]160; GFX90A-NEXT:    s_waitcnt vmcnt(0)161; GFX90A-NEXT:    s_setpc_b64 s[30:31]162;163; GFX942-LABEL: v_shuffle_v2i16_v4i16__3_u:164; GFX942:       ; %bb.0:165; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)166; GFX942-NEXT:    ;;#ASMSTART167; GFX942-NEXT:    ; def v[0:1]168; GFX942-NEXT:    ;;#ASMEND169; GFX942-NEXT:    v_mov_b32_e32 v2, 0170; GFX942-NEXT:    v_alignbit_b32 v0, s0, v1, 16171; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]172; GFX942-NEXT:    s_waitcnt vmcnt(0)173; GFX942-NEXT:    s_setpc_b64 s[30:31]174  %vec0 = call <4 x i16> asm "; def $0", "=v"()175  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 poison>176  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4177  ret void178}179 180define void @v_shuffle_v2i16_v4i16__4_u(ptr addrspace(1) inreg %ptr) {181; GFX9-LABEL: v_shuffle_v2i16_v4i16__4_u:182; GFX9:       ; %bb.0:183; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)184; GFX9-NEXT:    s_setpc_b64 s[30:31]185  %vec0 = call <4 x i16> asm "; def $0", "=v"()186  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 poison>187  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4188  ret void189}190 191define void @v_shuffle_v2i16_v4i16__5_u(ptr addrspace(1) inreg %ptr) {192; GFX900-LABEL: v_shuffle_v2i16_v4i16__5_u:193; GFX900:       ; %bb.0:194; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)195; GFX900-NEXT:    ;;#ASMSTART196; GFX900-NEXT:    ; def v[0:1]197; GFX900-NEXT:    ;;#ASMEND198; GFX900-NEXT:    v_mov_b32_e32 v2, 0199; GFX900-NEXT:    v_alignbit_b32 v0, s4, v0, 16200; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]201; GFX900-NEXT:    s_waitcnt vmcnt(0)202; GFX900-NEXT:    s_setpc_b64 s[30:31]203;204; GFX90A-LABEL: v_shuffle_v2i16_v4i16__5_u:205; GFX90A:       ; %bb.0:206; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)207; GFX90A-NEXT:    ;;#ASMSTART208; GFX90A-NEXT:    ; def v[0:1]209; GFX90A-NEXT:    ;;#ASMEND210; GFX90A-NEXT:    v_mov_b32_e32 v2, 0211; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v0, 16212; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]213; GFX90A-NEXT:    s_waitcnt vmcnt(0)214; GFX90A-NEXT:    s_setpc_b64 s[30:31]215;216; GFX942-LABEL: v_shuffle_v2i16_v4i16__5_u:217; GFX942:       ; %bb.0:218; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)219; GFX942-NEXT:    ;;#ASMSTART220; GFX942-NEXT:    ; def v[0:1]221; GFX942-NEXT:    ;;#ASMEND222; GFX942-NEXT:    v_mov_b32_e32 v2, 0223; GFX942-NEXT:    v_alignbit_b32 v0, s0, v0, 16224; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]225; GFX942-NEXT:    s_waitcnt vmcnt(0)226; GFX942-NEXT:    s_setpc_b64 s[30:31]227  %vec0 = call <4 x i16> asm "; def $0", "=v"()228  %vec1 = call <4 x i16> asm "; def $0", "=v"()229  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 poison>230  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4231  ret void232}233 234define void @v_shuffle_v2i16_v4i16__6_u(ptr addrspace(1) inreg %ptr) {235; GFX900-LABEL: v_shuffle_v2i16_v4i16__6_u:236; GFX900:       ; %bb.0:237; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)238; GFX900-NEXT:    v_mov_b32_e32 v2, 0239; GFX900-NEXT:    ;;#ASMSTART240; GFX900-NEXT:    ; def v[0:1]241; GFX900-NEXT:    ;;#ASMEND242; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]243; GFX900-NEXT:    s_waitcnt vmcnt(0)244; GFX900-NEXT:    s_setpc_b64 s[30:31]245;246; GFX90A-LABEL: v_shuffle_v2i16_v4i16__6_u:247; GFX90A:       ; %bb.0:248; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)249; GFX90A-NEXT:    v_mov_b32_e32 v2, 0250; GFX90A-NEXT:    ;;#ASMSTART251; GFX90A-NEXT:    ; def v[0:1]252; GFX90A-NEXT:    ;;#ASMEND253; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]254; GFX90A-NEXT:    s_waitcnt vmcnt(0)255; GFX90A-NEXT:    s_setpc_b64 s[30:31]256;257; GFX942-LABEL: v_shuffle_v2i16_v4i16__6_u:258; GFX942:       ; %bb.0:259; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)260; GFX942-NEXT:    v_mov_b32_e32 v2, 0261; GFX942-NEXT:    ;;#ASMSTART262; GFX942-NEXT:    ; def v[0:1]263; GFX942-NEXT:    ;;#ASMEND264; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]265; GFX942-NEXT:    s_waitcnt vmcnt(0)266; GFX942-NEXT:    s_setpc_b64 s[30:31]267  %vec0 = call <4 x i16> asm "; def $0", "=v"()268  %vec1 = call <4 x i16> asm "; def $0", "=v"()269  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 poison>270  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4271  ret void272}273 274define void @v_shuffle_v2i16_v4i16__7_u(ptr addrspace(1) inreg %ptr) {275; GFX900-LABEL: v_shuffle_v2i16_v4i16__7_u:276; GFX900:       ; %bb.0:277; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)278; GFX900-NEXT:    ;;#ASMSTART279; GFX900-NEXT:    ; def v[0:1]280; GFX900-NEXT:    ;;#ASMEND281; GFX900-NEXT:    v_mov_b32_e32 v2, 0282; GFX900-NEXT:    v_alignbit_b32 v0, s4, v1, 16283; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]284; GFX900-NEXT:    s_waitcnt vmcnt(0)285; GFX900-NEXT:    s_setpc_b64 s[30:31]286;287; GFX90A-LABEL: v_shuffle_v2i16_v4i16__7_u:288; GFX90A:       ; %bb.0:289; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)290; GFX90A-NEXT:    ;;#ASMSTART291; GFX90A-NEXT:    ; def v[0:1]292; GFX90A-NEXT:    ;;#ASMEND293; GFX90A-NEXT:    v_mov_b32_e32 v2, 0294; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v1, 16295; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]296; GFX90A-NEXT:    s_waitcnt vmcnt(0)297; GFX90A-NEXT:    s_setpc_b64 s[30:31]298;299; GFX942-LABEL: v_shuffle_v2i16_v4i16__7_u:300; GFX942:       ; %bb.0:301; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)302; GFX942-NEXT:    ;;#ASMSTART303; GFX942-NEXT:    ; def v[0:1]304; GFX942-NEXT:    ;;#ASMEND305; GFX942-NEXT:    v_mov_b32_e32 v2, 0306; GFX942-NEXT:    v_alignbit_b32 v0, s0, v1, 16307; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]308; GFX942-NEXT:    s_waitcnt vmcnt(0)309; GFX942-NEXT:    s_setpc_b64 s[30:31]310  %vec0 = call <4 x i16> asm "; def $0", "=v"()311  %vec1 = call <4 x i16> asm "; def $0", "=v"()312  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 poison>313  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4314  ret void315}316 317define void @v_shuffle_v2i16_v4i16__7_0(ptr addrspace(1) inreg %ptr) {318; GFX900-LABEL: v_shuffle_v2i16_v4i16__7_0:319; GFX900:       ; %bb.0:320; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)321; GFX900-NEXT:    ;;#ASMSTART322; GFX900-NEXT:    ; def v[0:1]323; GFX900-NEXT:    ;;#ASMEND324; GFX900-NEXT:    v_mov_b32_e32 v3, 0325; GFX900-NEXT:    ;;#ASMSTART326; GFX900-NEXT:    ; def v[1:2]327; GFX900-NEXT:    ;;#ASMEND328; GFX900-NEXT:    v_alignbit_b32 v0, v0, v2, 16329; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]330; GFX900-NEXT:    s_waitcnt vmcnt(0)331; GFX900-NEXT:    s_setpc_b64 s[30:31]332;333; GFX90A-LABEL: v_shuffle_v2i16_v4i16__7_0:334; GFX90A:       ; %bb.0:335; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)336; GFX90A-NEXT:    ;;#ASMSTART337; GFX90A-NEXT:    ; def v[0:1]338; GFX90A-NEXT:    ;;#ASMEND339; GFX90A-NEXT:    v_mov_b32_e32 v4, 0340; GFX90A-NEXT:    ;;#ASMSTART341; GFX90A-NEXT:    ; def v[2:3]342; GFX90A-NEXT:    ;;#ASMEND343; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v3, 16344; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]345; GFX90A-NEXT:    s_waitcnt vmcnt(0)346; GFX90A-NEXT:    s_setpc_b64 s[30:31]347;348; GFX942-LABEL: v_shuffle_v2i16_v4i16__7_0:349; GFX942:       ; %bb.0:350; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)351; GFX942-NEXT:    ;;#ASMSTART352; GFX942-NEXT:    ; def v[0:1]353; GFX942-NEXT:    ;;#ASMEND354; GFX942-NEXT:    v_mov_b32_e32 v4, 0355; GFX942-NEXT:    ;;#ASMSTART356; GFX942-NEXT:    ; def v[2:3]357; GFX942-NEXT:    ;;#ASMEND358; GFX942-NEXT:    s_nop 0359; GFX942-NEXT:    v_alignbit_b32 v0, v0, v3, 16360; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]361; GFX942-NEXT:    s_waitcnt vmcnt(0)362; GFX942-NEXT:    s_setpc_b64 s[30:31]363  %vec0 = call <4 x i16> asm "; def $0", "=v"()364  %vec1 = call <4 x i16> asm "; def $0", "=v"()365  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 0>366  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4367  ret void368}369 370define void @v_shuffle_v2i16_v4i16__7_1(ptr addrspace(1) inreg %ptr) {371; GFX900-LABEL: v_shuffle_v2i16_v4i16__7_1:372; GFX900:       ; %bb.0:373; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)374; GFX900-NEXT:    ;;#ASMSTART375; GFX900-NEXT:    ; def v[0:1]376; GFX900-NEXT:    ;;#ASMEND377; GFX900-NEXT:    s_mov_b32 s4, 0x7060302378; GFX900-NEXT:    v_mov_b32_e32 v3, 0379; GFX900-NEXT:    ;;#ASMSTART380; GFX900-NEXT:    ; def v[1:2]381; GFX900-NEXT:    ;;#ASMEND382; GFX900-NEXT:    v_perm_b32 v0, v0, v2, s4383; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]384; GFX900-NEXT:    s_waitcnt vmcnt(0)385; GFX900-NEXT:    s_setpc_b64 s[30:31]386;387; GFX90A-LABEL: v_shuffle_v2i16_v4i16__7_1:388; GFX90A:       ; %bb.0:389; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)390; GFX90A-NEXT:    ;;#ASMSTART391; GFX90A-NEXT:    ; def v[0:1]392; GFX90A-NEXT:    ;;#ASMEND393; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302394; GFX90A-NEXT:    v_mov_b32_e32 v4, 0395; GFX90A-NEXT:    ;;#ASMSTART396; GFX90A-NEXT:    ; def v[2:3]397; GFX90A-NEXT:    ;;#ASMEND398; GFX90A-NEXT:    v_perm_b32 v0, v0, v3, s4399; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]400; GFX90A-NEXT:    s_waitcnt vmcnt(0)401; GFX90A-NEXT:    s_setpc_b64 s[30:31]402;403; GFX942-LABEL: v_shuffle_v2i16_v4i16__7_1:404; GFX942:       ; %bb.0:405; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)406; GFX942-NEXT:    ;;#ASMSTART407; GFX942-NEXT:    ; def v[0:1]408; GFX942-NEXT:    ;;#ASMEND409; GFX942-NEXT:    s_mov_b32 s2, 0x7060302410; GFX942-NEXT:    v_mov_b32_e32 v4, 0411; GFX942-NEXT:    ;;#ASMSTART412; GFX942-NEXT:    ; def v[2:3]413; GFX942-NEXT:    ;;#ASMEND414; GFX942-NEXT:    s_nop 0415; GFX942-NEXT:    v_perm_b32 v0, v0, v3, s2416; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]417; GFX942-NEXT:    s_waitcnt vmcnt(0)418; GFX942-NEXT:    s_setpc_b64 s[30:31]419  %vec0 = call <4 x i16> asm "; def $0", "=v"()420  %vec1 = call <4 x i16> asm "; def $0", "=v"()421  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 1>422  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4423  ret void424}425 426define void @v_shuffle_v2i16_v4i16__7_2(ptr addrspace(1) inreg %ptr) {427; GFX900-LABEL: v_shuffle_v2i16_v4i16__7_2:428; GFX900:       ; %bb.0:429; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)430; GFX900-NEXT:    ;;#ASMSTART431; GFX900-NEXT:    ; def v[0:1]432; GFX900-NEXT:    ;;#ASMEND433; GFX900-NEXT:    v_mov_b32_e32 v4, 0434; GFX900-NEXT:    ;;#ASMSTART435; GFX900-NEXT:    ; def v[2:3]436; GFX900-NEXT:    ;;#ASMEND437; GFX900-NEXT:    v_alignbit_b32 v0, v1, v3, 16438; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]439; GFX900-NEXT:    s_waitcnt vmcnt(0)440; GFX900-NEXT:    s_setpc_b64 s[30:31]441;442; GFX90A-LABEL: v_shuffle_v2i16_v4i16__7_2:443; GFX90A:       ; %bb.0:444; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)445; GFX90A-NEXT:    ;;#ASMSTART446; GFX90A-NEXT:    ; def v[0:1]447; GFX90A-NEXT:    ;;#ASMEND448; GFX90A-NEXT:    v_mov_b32_e32 v4, 0449; GFX90A-NEXT:    ;;#ASMSTART450; GFX90A-NEXT:    ; def v[2:3]451; GFX90A-NEXT:    ;;#ASMEND452; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v3, 16453; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]454; GFX90A-NEXT:    s_waitcnt vmcnt(0)455; GFX90A-NEXT:    s_setpc_b64 s[30:31]456;457; GFX942-LABEL: v_shuffle_v2i16_v4i16__7_2:458; GFX942:       ; %bb.0:459; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)460; GFX942-NEXT:    ;;#ASMSTART461; GFX942-NEXT:    ; def v[0:1]462; GFX942-NEXT:    ;;#ASMEND463; GFX942-NEXT:    v_mov_b32_e32 v4, 0464; GFX942-NEXT:    ;;#ASMSTART465; GFX942-NEXT:    ; def v[2:3]466; GFX942-NEXT:    ;;#ASMEND467; GFX942-NEXT:    s_nop 0468; GFX942-NEXT:    v_alignbit_b32 v0, v1, v3, 16469; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]470; GFX942-NEXT:    s_waitcnt vmcnt(0)471; GFX942-NEXT:    s_setpc_b64 s[30:31]472  %vec0 = call <4 x i16> asm "; def $0", "=v"()473  %vec1 = call <4 x i16> asm "; def $0", "=v"()474  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 2>475  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4476  ret void477}478 479define void @v_shuffle_v2i16_v4i16__7_3(ptr addrspace(1) inreg %ptr) {480; GFX900-LABEL: v_shuffle_v2i16_v4i16__7_3:481; GFX900:       ; %bb.0:482; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)483; GFX900-NEXT:    ;;#ASMSTART484; GFX900-NEXT:    ; def v[0:1]485; GFX900-NEXT:    ;;#ASMEND486; GFX900-NEXT:    s_mov_b32 s4, 0x7060302487; GFX900-NEXT:    v_mov_b32_e32 v4, 0488; GFX900-NEXT:    ;;#ASMSTART489; GFX900-NEXT:    ; def v[2:3]490; GFX900-NEXT:    ;;#ASMEND491; GFX900-NEXT:    v_perm_b32 v0, v1, v3, s4492; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]493; GFX900-NEXT:    s_waitcnt vmcnt(0)494; GFX900-NEXT:    s_setpc_b64 s[30:31]495;496; GFX90A-LABEL: v_shuffle_v2i16_v4i16__7_3:497; GFX90A:       ; %bb.0:498; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)499; GFX90A-NEXT:    ;;#ASMSTART500; GFX90A-NEXT:    ; def v[0:1]501; GFX90A-NEXT:    ;;#ASMEND502; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302503; GFX90A-NEXT:    v_mov_b32_e32 v4, 0504; GFX90A-NEXT:    ;;#ASMSTART505; GFX90A-NEXT:    ; def v[2:3]506; GFX90A-NEXT:    ;;#ASMEND507; GFX90A-NEXT:    v_perm_b32 v0, v1, v3, s4508; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]509; GFX90A-NEXT:    s_waitcnt vmcnt(0)510; GFX90A-NEXT:    s_setpc_b64 s[30:31]511;512; GFX942-LABEL: v_shuffle_v2i16_v4i16__7_3:513; GFX942:       ; %bb.0:514; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)515; GFX942-NEXT:    ;;#ASMSTART516; GFX942-NEXT:    ; def v[0:1]517; GFX942-NEXT:    ;;#ASMEND518; GFX942-NEXT:    s_mov_b32 s2, 0x7060302519; GFX942-NEXT:    v_mov_b32_e32 v4, 0520; GFX942-NEXT:    ;;#ASMSTART521; GFX942-NEXT:    ; def v[2:3]522; GFX942-NEXT:    ;;#ASMEND523; GFX942-NEXT:    s_nop 0524; GFX942-NEXT:    v_perm_b32 v0, v1, v3, s2525; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]526; GFX942-NEXT:    s_waitcnt vmcnt(0)527; GFX942-NEXT:    s_setpc_b64 s[30:31]528  %vec0 = call <4 x i16> asm "; def $0", "=v"()529  %vec1 = call <4 x i16> asm "; def $0", "=v"()530  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 3>531  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4532  ret void533}534 535define void @v_shuffle_v2i16_v4i16__7_4(ptr addrspace(1) inreg %ptr) {536; GFX900-LABEL: v_shuffle_v2i16_v4i16__7_4:537; GFX900:       ; %bb.0:538; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)539; GFX900-NEXT:    ;;#ASMSTART540; GFX900-NEXT:    ; def v[0:1]541; GFX900-NEXT:    ;;#ASMEND542; GFX900-NEXT:    v_mov_b32_e32 v2, 0543; GFX900-NEXT:    v_alignbit_b32 v0, v0, v1, 16544; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]545; GFX900-NEXT:    s_waitcnt vmcnt(0)546; GFX900-NEXT:    s_setpc_b64 s[30:31]547;548; GFX90A-LABEL: v_shuffle_v2i16_v4i16__7_4:549; GFX90A:       ; %bb.0:550; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)551; GFX90A-NEXT:    ;;#ASMSTART552; GFX90A-NEXT:    ; def v[0:1]553; GFX90A-NEXT:    ;;#ASMEND554; GFX90A-NEXT:    v_mov_b32_e32 v2, 0555; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v1, 16556; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]557; GFX90A-NEXT:    s_waitcnt vmcnt(0)558; GFX90A-NEXT:    s_setpc_b64 s[30:31]559;560; GFX942-LABEL: v_shuffle_v2i16_v4i16__7_4:561; GFX942:       ; %bb.0:562; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)563; GFX942-NEXT:    ;;#ASMSTART564; GFX942-NEXT:    ; def v[0:1]565; GFX942-NEXT:    ;;#ASMEND566; GFX942-NEXT:    v_mov_b32_e32 v2, 0567; GFX942-NEXT:    v_alignbit_b32 v0, v0, v1, 16568; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]569; GFX942-NEXT:    s_waitcnt vmcnt(0)570; GFX942-NEXT:    s_setpc_b64 s[30:31]571  %vec0 = call <4 x i16> asm "; def $0", "=v"()572  %vec1 = call <4 x i16> asm "; def $0", "=v"()573  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 4>574  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4575  ret void576}577 578define void @v_shuffle_v2i16_v4i16__7_5(ptr addrspace(1) inreg %ptr) {579; GFX900-LABEL: v_shuffle_v2i16_v4i16__7_5:580; GFX900:       ; %bb.0:581; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)582; GFX900-NEXT:    ;;#ASMSTART583; GFX900-NEXT:    ; def v[0:1]584; GFX900-NEXT:    ;;#ASMEND585; GFX900-NEXT:    s_mov_b32 s4, 0x7060302586; GFX900-NEXT:    v_mov_b32_e32 v2, 0587; GFX900-NEXT:    v_perm_b32 v0, v0, v1, s4588; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]589; GFX900-NEXT:    s_waitcnt vmcnt(0)590; GFX900-NEXT:    s_setpc_b64 s[30:31]591;592; GFX90A-LABEL: v_shuffle_v2i16_v4i16__7_5:593; GFX90A:       ; %bb.0:594; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)595; GFX90A-NEXT:    ;;#ASMSTART596; GFX90A-NEXT:    ; def v[0:1]597; GFX90A-NEXT:    ;;#ASMEND598; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302599; GFX90A-NEXT:    v_mov_b32_e32 v2, 0600; GFX90A-NEXT:    v_perm_b32 v0, v0, v1, s4601; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]602; GFX90A-NEXT:    s_waitcnt vmcnt(0)603; GFX90A-NEXT:    s_setpc_b64 s[30:31]604;605; GFX942-LABEL: v_shuffle_v2i16_v4i16__7_5:606; GFX942:       ; %bb.0:607; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)608; GFX942-NEXT:    ;;#ASMSTART609; GFX942-NEXT:    ; def v[0:1]610; GFX942-NEXT:    ;;#ASMEND611; GFX942-NEXT:    s_mov_b32 s2, 0x7060302612; GFX942-NEXT:    v_mov_b32_e32 v2, 0613; GFX942-NEXT:    v_perm_b32 v0, v0, v1, s2614; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]615; GFX942-NEXT:    s_waitcnt vmcnt(0)616; GFX942-NEXT:    s_setpc_b64 s[30:31]617  %vec0 = call <4 x i16> asm "; def $0", "=v"()618  %vec1 = call <4 x i16> asm "; def $0", "=v"()619  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 5>620  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4621  ret void622}623 624define void @v_shuffle_v2i16_v4i16__7_6(ptr addrspace(1) inreg %ptr) {625; GFX900-LABEL: v_shuffle_v2i16_v4i16__7_6:626; GFX900:       ; %bb.0:627; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)628; GFX900-NEXT:    ;;#ASMSTART629; GFX900-NEXT:    ; def v[0:1]630; GFX900-NEXT:    ;;#ASMEND631; GFX900-NEXT:    v_mov_b32_e32 v2, 0632; GFX900-NEXT:    v_alignbit_b32 v0, v1, v1, 16633; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]634; GFX900-NEXT:    s_waitcnt vmcnt(0)635; GFX900-NEXT:    s_setpc_b64 s[30:31]636;637; GFX90A-LABEL: v_shuffle_v2i16_v4i16__7_6:638; GFX90A:       ; %bb.0:639; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)640; GFX90A-NEXT:    ;;#ASMSTART641; GFX90A-NEXT:    ; def v[0:1]642; GFX90A-NEXT:    ;;#ASMEND643; GFX90A-NEXT:    v_mov_b32_e32 v2, 0644; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v1, 16645; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]646; GFX90A-NEXT:    s_waitcnt vmcnt(0)647; GFX90A-NEXT:    s_setpc_b64 s[30:31]648;649; GFX942-LABEL: v_shuffle_v2i16_v4i16__7_6:650; GFX942:       ; %bb.0:651; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)652; GFX942-NEXT:    ;;#ASMSTART653; GFX942-NEXT:    ; def v[0:1]654; GFX942-NEXT:    ;;#ASMEND655; GFX942-NEXT:    v_mov_b32_e32 v2, 0656; GFX942-NEXT:    v_alignbit_b32 v0, v1, v1, 16657; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]658; GFX942-NEXT:    s_waitcnt vmcnt(0)659; GFX942-NEXT:    s_setpc_b64 s[30:31]660  %vec0 = call <4 x i16> asm "; def $0", "=v"()661  %vec1 = call <4 x i16> asm "; def $0", "=v"()662  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 6>663  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4664  ret void665}666 667define void @v_shuffle_v2i16_v4i16__7_7(ptr addrspace(1) inreg %ptr) {668; GFX900-LABEL: v_shuffle_v2i16_v4i16__7_7:669; GFX900:       ; %bb.0:670; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)671; GFX900-NEXT:    ;;#ASMSTART672; GFX900-NEXT:    ; def v[0:1]673; GFX900-NEXT:    ;;#ASMEND674; GFX900-NEXT:    s_mov_b32 s4, 0x7060302675; GFX900-NEXT:    v_mov_b32_e32 v2, 0676; GFX900-NEXT:    v_perm_b32 v0, v1, v1, s4677; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]678; GFX900-NEXT:    s_waitcnt vmcnt(0)679; GFX900-NEXT:    s_setpc_b64 s[30:31]680;681; GFX90A-LABEL: v_shuffle_v2i16_v4i16__7_7:682; GFX90A:       ; %bb.0:683; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)684; GFX90A-NEXT:    ;;#ASMSTART685; GFX90A-NEXT:    ; def v[0:1]686; GFX90A-NEXT:    ;;#ASMEND687; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302688; GFX90A-NEXT:    v_mov_b32_e32 v2, 0689; GFX90A-NEXT:    v_perm_b32 v0, v1, v1, s4690; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]691; GFX90A-NEXT:    s_waitcnt vmcnt(0)692; GFX90A-NEXT:    s_setpc_b64 s[30:31]693;694; GFX942-LABEL: v_shuffle_v2i16_v4i16__7_7:695; GFX942:       ; %bb.0:696; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)697; GFX942-NEXT:    ;;#ASMSTART698; GFX942-NEXT:    ; def v[0:1]699; GFX942-NEXT:    ;;#ASMEND700; GFX942-NEXT:    s_mov_b32 s2, 0x7060302701; GFX942-NEXT:    v_mov_b32_e32 v2, 0702; GFX942-NEXT:    v_perm_b32 v0, v1, v1, s2703; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]704; GFX942-NEXT:    s_waitcnt vmcnt(0)705; GFX942-NEXT:    s_setpc_b64 s[30:31]706  %vec0 = call <4 x i16> asm "; def $0", "=v"()707  %vec1 = call <4 x i16> asm "; def $0", "=v"()708  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 7>709  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4710  ret void711}712 713define void @v_shuffle_v2i16_v4i16__u_0(ptr addrspace(1) inreg %ptr) {714; GFX900-LABEL: v_shuffle_v2i16_v4i16__u_0:715; GFX900:       ; %bb.0:716; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)717; GFX900-NEXT:    ;;#ASMSTART718; GFX900-NEXT:    ; def v[0:1]719; GFX900-NEXT:    ;;#ASMEND720; GFX900-NEXT:    v_mov_b32_e32 v2, 0721; GFX900-NEXT:    v_lshlrev_b32_e32 v0, 16, v0722; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]723; GFX900-NEXT:    s_waitcnt vmcnt(0)724; GFX900-NEXT:    s_setpc_b64 s[30:31]725;726; GFX90A-LABEL: v_shuffle_v2i16_v4i16__u_0:727; GFX90A:       ; %bb.0:728; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)729; GFX90A-NEXT:    ;;#ASMSTART730; GFX90A-NEXT:    ; def v[0:1]731; GFX90A-NEXT:    ;;#ASMEND732; GFX90A-NEXT:    v_mov_b32_e32 v2, 0733; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 16, v0734; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]735; GFX90A-NEXT:    s_waitcnt vmcnt(0)736; GFX90A-NEXT:    s_setpc_b64 s[30:31]737;738; GFX942-LABEL: v_shuffle_v2i16_v4i16__u_0:739; GFX942:       ; %bb.0:740; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)741; GFX942-NEXT:    ;;#ASMSTART742; GFX942-NEXT:    ; def v[0:1]743; GFX942-NEXT:    ;;#ASMEND744; GFX942-NEXT:    v_mov_b32_e32 v2, 0745; GFX942-NEXT:    v_lshlrev_b32_e32 v0, 16, v0746; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]747; GFX942-NEXT:    s_waitcnt vmcnt(0)748; GFX942-NEXT:    s_setpc_b64 s[30:31]749  %vec0 = call <4 x i16> asm "; def $0", "=v"()750  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 poison, i32 0>751  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4752  ret void753}754 755define void @v_shuffle_v2i16_v4i16__0_0(ptr addrspace(1) inreg %ptr) {756; GFX900-LABEL: v_shuffle_v2i16_v4i16__0_0:757; GFX900:       ; %bb.0:758; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)759; GFX900-NEXT:    ;;#ASMSTART760; GFX900-NEXT:    ; def v[0:1]761; GFX900-NEXT:    ;;#ASMEND762; GFX900-NEXT:    s_mov_b32 s4, 0x5040100763; GFX900-NEXT:    v_mov_b32_e32 v2, 0764; GFX900-NEXT:    v_perm_b32 v0, v0, v0, s4765; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]766; GFX900-NEXT:    s_waitcnt vmcnt(0)767; GFX900-NEXT:    s_setpc_b64 s[30:31]768;769; GFX90A-LABEL: v_shuffle_v2i16_v4i16__0_0:770; GFX90A:       ; %bb.0:771; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)772; GFX90A-NEXT:    ;;#ASMSTART773; GFX90A-NEXT:    ; def v[0:1]774; GFX90A-NEXT:    ;;#ASMEND775; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100776; GFX90A-NEXT:    v_mov_b32_e32 v2, 0777; GFX90A-NEXT:    v_perm_b32 v0, v0, v0, s4778; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]779; GFX90A-NEXT:    s_waitcnt vmcnt(0)780; GFX90A-NEXT:    s_setpc_b64 s[30:31]781;782; GFX942-LABEL: v_shuffle_v2i16_v4i16__0_0:783; GFX942:       ; %bb.0:784; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)785; GFX942-NEXT:    ;;#ASMSTART786; GFX942-NEXT:    ; def v[0:1]787; GFX942-NEXT:    ;;#ASMEND788; GFX942-NEXT:    s_mov_b32 s2, 0x5040100789; GFX942-NEXT:    v_mov_b32_e32 v2, 0790; GFX942-NEXT:    v_perm_b32 v0, v0, v0, s2791; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]792; GFX942-NEXT:    s_waitcnt vmcnt(0)793; GFX942-NEXT:    s_setpc_b64 s[30:31]794  %vec0 = call <4 x i16> asm "; def $0", "=v"()795  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> zeroinitializer796  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4797  ret void798}799 800define void @v_shuffle_v2i16_v4i16__1_0(ptr addrspace(1) inreg %ptr) {801; GFX900-LABEL: v_shuffle_v2i16_v4i16__1_0:802; GFX900:       ; %bb.0:803; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)804; GFX900-NEXT:    ;;#ASMSTART805; GFX900-NEXT:    ; def v[0:1]806; GFX900-NEXT:    ;;#ASMEND807; GFX900-NEXT:    v_mov_b32_e32 v2, 0808; GFX900-NEXT:    v_alignbit_b32 v0, v0, v0, 16809; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]810; GFX900-NEXT:    s_waitcnt vmcnt(0)811; GFX900-NEXT:    s_setpc_b64 s[30:31]812;813; GFX90A-LABEL: v_shuffle_v2i16_v4i16__1_0:814; GFX90A:       ; %bb.0:815; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)816; GFX90A-NEXT:    ;;#ASMSTART817; GFX90A-NEXT:    ; def v[0:1]818; GFX90A-NEXT:    ;;#ASMEND819; GFX90A-NEXT:    v_mov_b32_e32 v2, 0820; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v0, 16821; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]822; GFX90A-NEXT:    s_waitcnt vmcnt(0)823; GFX90A-NEXT:    s_setpc_b64 s[30:31]824;825; GFX942-LABEL: v_shuffle_v2i16_v4i16__1_0:826; GFX942:       ; %bb.0:827; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)828; GFX942-NEXT:    ;;#ASMSTART829; GFX942-NEXT:    ; def v[0:1]830; GFX942-NEXT:    ;;#ASMEND831; GFX942-NEXT:    v_mov_b32_e32 v2, 0832; GFX942-NEXT:    v_alignbit_b32 v0, v0, v0, 16833; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]834; GFX942-NEXT:    s_waitcnt vmcnt(0)835; GFX942-NEXT:    s_setpc_b64 s[30:31]836  %vec0 = call <4 x i16> asm "; def $0", "=v"()837  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 0>838  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4839  ret void840}841 842define void @v_shuffle_v2i16_v4i16__2_0(ptr addrspace(1) inreg %ptr) {843; GFX900-LABEL: v_shuffle_v2i16_v4i16__2_0:844; GFX900:       ; %bb.0:845; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)846; GFX900-NEXT:    ;;#ASMSTART847; GFX900-NEXT:    ; def v[0:1]848; GFX900-NEXT:    ;;#ASMEND849; GFX900-NEXT:    s_mov_b32 s4, 0x5040100850; GFX900-NEXT:    v_mov_b32_e32 v2, 0851; GFX900-NEXT:    v_perm_b32 v0, v0, v1, s4852; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]853; GFX900-NEXT:    s_waitcnt vmcnt(0)854; GFX900-NEXT:    s_setpc_b64 s[30:31]855;856; GFX90A-LABEL: v_shuffle_v2i16_v4i16__2_0:857; GFX90A:       ; %bb.0:858; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)859; GFX90A-NEXT:    ;;#ASMSTART860; GFX90A-NEXT:    ; def v[0:1]861; GFX90A-NEXT:    ;;#ASMEND862; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100863; GFX90A-NEXT:    v_mov_b32_e32 v2, 0864; GFX90A-NEXT:    v_perm_b32 v0, v0, v1, s4865; GFX90A-NEXT:    global_store_dword v2, 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_v2i16_v4i16__2_0:870; GFX942:       ; %bb.0:871; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)872; GFX942-NEXT:    ;;#ASMSTART873; GFX942-NEXT:    ; def v[0:1]874; GFX942-NEXT:    ;;#ASMEND875; GFX942-NEXT:    s_mov_b32 s2, 0x5040100876; GFX942-NEXT:    v_mov_b32_e32 v2, 0877; GFX942-NEXT:    v_perm_b32 v0, v0, v1, s2878; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]879; GFX942-NEXT:    s_waitcnt vmcnt(0)880; GFX942-NEXT:    s_setpc_b64 s[30:31]881  %vec0 = call <4 x i16> asm "; def $0", "=v"()882  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 0>883  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4884  ret void885}886 887define void @v_shuffle_v2i16_v4i16__3_0(ptr addrspace(1) inreg %ptr) {888; GFX900-LABEL: v_shuffle_v2i16_v4i16__3_0:889; GFX900:       ; %bb.0:890; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)891; GFX900-NEXT:    ;;#ASMSTART892; GFX900-NEXT:    ; def v[0:1]893; GFX900-NEXT:    ;;#ASMEND894; GFX900-NEXT:    v_mov_b32_e32 v2, 0895; GFX900-NEXT:    v_alignbit_b32 v0, v0, v1, 16896; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]897; GFX900-NEXT:    s_waitcnt vmcnt(0)898; GFX900-NEXT:    s_setpc_b64 s[30:31]899;900; GFX90A-LABEL: v_shuffle_v2i16_v4i16__3_0:901; GFX90A:       ; %bb.0:902; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)903; GFX90A-NEXT:    ;;#ASMSTART904; GFX90A-NEXT:    ; def v[0:1]905; GFX90A-NEXT:    ;;#ASMEND906; GFX90A-NEXT:    v_mov_b32_e32 v2, 0907; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v1, 16908; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]909; GFX90A-NEXT:    s_waitcnt vmcnt(0)910; GFX90A-NEXT:    s_setpc_b64 s[30:31]911;912; GFX942-LABEL: v_shuffle_v2i16_v4i16__3_0:913; GFX942:       ; %bb.0:914; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)915; GFX942-NEXT:    ;;#ASMSTART916; GFX942-NEXT:    ; def v[0:1]917; GFX942-NEXT:    ;;#ASMEND918; GFX942-NEXT:    v_mov_b32_e32 v2, 0919; GFX942-NEXT:    v_alignbit_b32 v0, v0, v1, 16920; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]921; GFX942-NEXT:    s_waitcnt vmcnt(0)922; GFX942-NEXT:    s_setpc_b64 s[30:31]923  %vec0 = call <4 x i16> asm "; def $0", "=v"()924  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 0>925  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4926  ret void927}928 929define void @v_shuffle_v2i16_v4i16__4_0(ptr addrspace(1) inreg %ptr) {930; GFX900-LABEL: v_shuffle_v2i16_v4i16__4_0:931; GFX900:       ; %bb.0:932; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)933; GFX900-NEXT:    ;;#ASMSTART934; GFX900-NEXT:    ; def v[0:1]935; GFX900-NEXT:    ;;#ASMEND936; GFX900-NEXT:    v_mov_b32_e32 v2, 0937; GFX900-NEXT:    v_lshlrev_b32_e32 v0, 16, v0938; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]939; GFX900-NEXT:    s_waitcnt vmcnt(0)940; GFX900-NEXT:    s_setpc_b64 s[30:31]941;942; GFX90A-LABEL: v_shuffle_v2i16_v4i16__4_0:943; GFX90A:       ; %bb.0:944; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)945; GFX90A-NEXT:    ;;#ASMSTART946; GFX90A-NEXT:    ; def v[0:1]947; GFX90A-NEXT:    ;;#ASMEND948; GFX90A-NEXT:    v_mov_b32_e32 v2, 0949; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 16, v0950; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]951; GFX90A-NEXT:    s_waitcnt vmcnt(0)952; GFX90A-NEXT:    s_setpc_b64 s[30:31]953;954; GFX942-LABEL: v_shuffle_v2i16_v4i16__4_0:955; GFX942:       ; %bb.0:956; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)957; GFX942-NEXT:    ;;#ASMSTART958; GFX942-NEXT:    ; def v[0:1]959; GFX942-NEXT:    ;;#ASMEND960; GFX942-NEXT:    v_mov_b32_e32 v2, 0961; GFX942-NEXT:    v_lshlrev_b32_e32 v0, 16, v0962; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]963; GFX942-NEXT:    s_waitcnt vmcnt(0)964; GFX942-NEXT:    s_setpc_b64 s[30:31]965  %vec0 = call <4 x i16> asm "; def $0", "=v"()966  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 0>967  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4968  ret void969}970 971define void @v_shuffle_v2i16_v4i16__5_0(ptr addrspace(1) inreg %ptr) {972; GFX900-LABEL: v_shuffle_v2i16_v4i16__5_0:973; GFX900:       ; %bb.0:974; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)975; GFX900-NEXT:    ;;#ASMSTART976; GFX900-NEXT:    ; def v[0:1]977; GFX900-NEXT:    ;;#ASMEND978; GFX900-NEXT:    v_mov_b32_e32 v3, 0979; GFX900-NEXT:    ;;#ASMSTART980; GFX900-NEXT:    ; def v[1:2]981; GFX900-NEXT:    ;;#ASMEND982; GFX900-NEXT:    v_alignbit_b32 v0, v0, v1, 16983; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]984; GFX900-NEXT:    s_waitcnt vmcnt(0)985; GFX900-NEXT:    s_setpc_b64 s[30:31]986;987; GFX90A-LABEL: v_shuffle_v2i16_v4i16__5_0:988; GFX90A:       ; %bb.0:989; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)990; GFX90A-NEXT:    ;;#ASMSTART991; GFX90A-NEXT:    ; def v[0:1]992; GFX90A-NEXT:    ;;#ASMEND993; GFX90A-NEXT:    v_mov_b32_e32 v4, 0994; GFX90A-NEXT:    ;;#ASMSTART995; GFX90A-NEXT:    ; def v[2:3]996; GFX90A-NEXT:    ;;#ASMEND997; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v2, 16998; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]999; GFX90A-NEXT:    s_waitcnt vmcnt(0)1000; GFX90A-NEXT:    s_setpc_b64 s[30:31]1001;1002; GFX942-LABEL: v_shuffle_v2i16_v4i16__5_0:1003; GFX942:       ; %bb.0:1004; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1005; GFX942-NEXT:    ;;#ASMSTART1006; GFX942-NEXT:    ; def v[0:1]1007; GFX942-NEXT:    ;;#ASMEND1008; GFX942-NEXT:    v_mov_b32_e32 v4, 01009; GFX942-NEXT:    ;;#ASMSTART1010; GFX942-NEXT:    ; def v[2:3]1011; GFX942-NEXT:    ;;#ASMEND1012; GFX942-NEXT:    s_nop 01013; GFX942-NEXT:    v_alignbit_b32 v0, v0, v2, 161014; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]1015; GFX942-NEXT:    s_waitcnt vmcnt(0)1016; GFX942-NEXT:    s_setpc_b64 s[30:31]1017  %vec0 = call <4 x i16> asm "; def $0", "=v"()1018  %vec1 = call <4 x i16> asm "; def $0", "=v"()1019  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 0>1020  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41021  ret void1022}1023 1024define void @v_shuffle_v2i16_v4i16__6_0(ptr addrspace(1) inreg %ptr) {1025; GFX900-LABEL: v_shuffle_v2i16_v4i16__6_0:1026; GFX900:       ; %bb.0:1027; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1028; GFX900-NEXT:    ;;#ASMSTART1029; GFX900-NEXT:    ; def v[0:1]1030; GFX900-NEXT:    ;;#ASMEND1031; GFX900-NEXT:    s_mov_b32 s4, 0x50401001032; GFX900-NEXT:    v_mov_b32_e32 v3, 01033; GFX900-NEXT:    ;;#ASMSTART1034; GFX900-NEXT:    ; def v[1:2]1035; GFX900-NEXT:    ;;#ASMEND1036; GFX900-NEXT:    v_perm_b32 v0, v0, v2, s41037; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]1038; GFX900-NEXT:    s_waitcnt vmcnt(0)1039; GFX900-NEXT:    s_setpc_b64 s[30:31]1040;1041; GFX90A-LABEL: v_shuffle_v2i16_v4i16__6_0:1042; GFX90A:       ; %bb.0:1043; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1044; GFX90A-NEXT:    ;;#ASMSTART1045; GFX90A-NEXT:    ; def v[0:1]1046; GFX90A-NEXT:    ;;#ASMEND1047; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001048; GFX90A-NEXT:    v_mov_b32_e32 v4, 01049; GFX90A-NEXT:    ;;#ASMSTART1050; GFX90A-NEXT:    ; def v[2:3]1051; GFX90A-NEXT:    ;;#ASMEND1052; GFX90A-NEXT:    v_perm_b32 v0, v0, v3, s41053; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]1054; GFX90A-NEXT:    s_waitcnt vmcnt(0)1055; GFX90A-NEXT:    s_setpc_b64 s[30:31]1056;1057; GFX942-LABEL: v_shuffle_v2i16_v4i16__6_0:1058; GFX942:       ; %bb.0:1059; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1060; GFX942-NEXT:    ;;#ASMSTART1061; GFX942-NEXT:    ; def v[0:1]1062; GFX942-NEXT:    ;;#ASMEND1063; GFX942-NEXT:    s_mov_b32 s2, 0x50401001064; GFX942-NEXT:    v_mov_b32_e32 v4, 01065; GFX942-NEXT:    ;;#ASMSTART1066; GFX942-NEXT:    ; def v[2:3]1067; GFX942-NEXT:    ;;#ASMEND1068; GFX942-NEXT:    s_nop 01069; GFX942-NEXT:    v_perm_b32 v0, v0, v3, s21070; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]1071; GFX942-NEXT:    s_waitcnt vmcnt(0)1072; GFX942-NEXT:    s_setpc_b64 s[30:31]1073  %vec0 = call <4 x i16> asm "; def $0", "=v"()1074  %vec1 = call <4 x i16> asm "; def $0", "=v"()1075  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 0>1076  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41077  ret void1078}1079 1080define void @v_shuffle_v2i16_v4i16__u_1(ptr addrspace(1) inreg %ptr) {1081; GFX900-LABEL: v_shuffle_v2i16_v4i16__u_1:1082; GFX900:       ; %bb.0:1083; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1084; GFX900-NEXT:    v_mov_b32_e32 v2, 01085; GFX900-NEXT:    ;;#ASMSTART1086; GFX900-NEXT:    ; def v[0:1]1087; GFX900-NEXT:    ;;#ASMEND1088; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]1089; GFX900-NEXT:    s_waitcnt vmcnt(0)1090; GFX900-NEXT:    s_setpc_b64 s[30:31]1091;1092; GFX90A-LABEL: v_shuffle_v2i16_v4i16__u_1:1093; GFX90A:       ; %bb.0:1094; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1095; GFX90A-NEXT:    v_mov_b32_e32 v2, 01096; GFX90A-NEXT:    ;;#ASMSTART1097; GFX90A-NEXT:    ; def v[0:1]1098; GFX90A-NEXT:    ;;#ASMEND1099; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]1100; GFX90A-NEXT:    s_waitcnt vmcnt(0)1101; GFX90A-NEXT:    s_setpc_b64 s[30:31]1102;1103; GFX942-LABEL: v_shuffle_v2i16_v4i16__u_1:1104; GFX942:       ; %bb.0:1105; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1106; GFX942-NEXT:    v_mov_b32_e32 v2, 01107; GFX942-NEXT:    ;;#ASMSTART1108; GFX942-NEXT:    ; def v[0:1]1109; GFX942-NEXT:    ;;#ASMEND1110; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]1111; GFX942-NEXT:    s_waitcnt vmcnt(0)1112; GFX942-NEXT:    s_setpc_b64 s[30:31]1113  %vec0 = call <4 x i16> asm "; def $0", "=v"()1114  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 poison, i32 1>1115  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41116  ret void1117}1118 1119define void @v_shuffle_v2i16_v4i16__0_1(ptr addrspace(1) inreg %ptr) {1120; GFX900-LABEL: v_shuffle_v2i16_v4i16__0_1:1121; GFX900:       ; %bb.0:1122; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1123; GFX900-NEXT:    v_mov_b32_e32 v2, 01124; GFX900-NEXT:    ;;#ASMSTART1125; GFX900-NEXT:    ; def v[0:1]1126; GFX900-NEXT:    ;;#ASMEND1127; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]1128; GFX900-NEXT:    s_waitcnt vmcnt(0)1129; GFX900-NEXT:    s_setpc_b64 s[30:31]1130;1131; GFX90A-LABEL: v_shuffle_v2i16_v4i16__0_1:1132; GFX90A:       ; %bb.0:1133; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1134; GFX90A-NEXT:    v_mov_b32_e32 v2, 01135; GFX90A-NEXT:    ;;#ASMSTART1136; GFX90A-NEXT:    ; def v[0:1]1137; GFX90A-NEXT:    ;;#ASMEND1138; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]1139; GFX90A-NEXT:    s_waitcnt vmcnt(0)1140; GFX90A-NEXT:    s_setpc_b64 s[30:31]1141;1142; GFX942-LABEL: v_shuffle_v2i16_v4i16__0_1:1143; GFX942:       ; %bb.0:1144; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1145; GFX942-NEXT:    v_mov_b32_e32 v2, 01146; GFX942-NEXT:    ;;#ASMSTART1147; GFX942-NEXT:    ; def v[0:1]1148; GFX942-NEXT:    ;;#ASMEND1149; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]1150; GFX942-NEXT:    s_waitcnt vmcnt(0)1151; GFX942-NEXT:    s_setpc_b64 s[30:31]1152  %vec0 = call <4 x i16> asm "; def $0", "=v"()1153  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 0, i32 1>1154  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41155  ret void1156}1157 1158define void @v_shuffle_v2i16_v4i16__1_1(ptr addrspace(1) inreg %ptr) {1159; GFX900-LABEL: v_shuffle_v2i16_v4i16__1_1:1160; GFX900:       ; %bb.0:1161; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1162; GFX900-NEXT:    ;;#ASMSTART1163; GFX900-NEXT:    ; def v[0:1]1164; GFX900-NEXT:    ;;#ASMEND1165; GFX900-NEXT:    s_mov_b32 s4, 0x70603021166; GFX900-NEXT:    v_mov_b32_e32 v2, 01167; GFX900-NEXT:    v_perm_b32 v0, v0, v0, s41168; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]1169; GFX900-NEXT:    s_waitcnt vmcnt(0)1170; GFX900-NEXT:    s_setpc_b64 s[30:31]1171;1172; GFX90A-LABEL: v_shuffle_v2i16_v4i16__1_1:1173; GFX90A:       ; %bb.0:1174; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1175; GFX90A-NEXT:    ;;#ASMSTART1176; GFX90A-NEXT:    ; def v[0:1]1177; GFX90A-NEXT:    ;;#ASMEND1178; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021179; GFX90A-NEXT:    v_mov_b32_e32 v2, 01180; GFX90A-NEXT:    v_perm_b32 v0, v0, v0, s41181; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]1182; GFX90A-NEXT:    s_waitcnt vmcnt(0)1183; GFX90A-NEXT:    s_setpc_b64 s[30:31]1184;1185; GFX942-LABEL: v_shuffle_v2i16_v4i16__1_1:1186; GFX942:       ; %bb.0:1187; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1188; GFX942-NEXT:    ;;#ASMSTART1189; GFX942-NEXT:    ; def v[0:1]1190; GFX942-NEXT:    ;;#ASMEND1191; GFX942-NEXT:    s_mov_b32 s2, 0x70603021192; GFX942-NEXT:    v_mov_b32_e32 v2, 01193; GFX942-NEXT:    v_perm_b32 v0, v0, v0, s21194; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]1195; GFX942-NEXT:    s_waitcnt vmcnt(0)1196; GFX942-NEXT:    s_setpc_b64 s[30:31]1197  %vec0 = call <4 x i16> asm "; def $0", "=v"()1198  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 1>1199  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41200  ret void1201}1202 1203define void @v_shuffle_v2i16_v4i16__2_1(ptr addrspace(1) inreg %ptr) {1204; GFX900-LABEL: v_shuffle_v2i16_v4i16__2_1:1205; GFX900:       ; %bb.0:1206; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1207; GFX900-NEXT:    ;;#ASMSTART1208; GFX900-NEXT:    ; def v[0:1]1209; GFX900-NEXT:    ;;#ASMEND1210; GFX900-NEXT:    s_mov_b32 s4, 0xffff1211; GFX900-NEXT:    v_mov_b32_e32 v2, 01212; GFX900-NEXT:    v_bfi_b32 v0, s4, v1, v01213; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]1214; GFX900-NEXT:    s_waitcnt vmcnt(0)1215; GFX900-NEXT:    s_setpc_b64 s[30:31]1216;1217; GFX90A-LABEL: v_shuffle_v2i16_v4i16__2_1:1218; GFX90A:       ; %bb.0:1219; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1220; GFX90A-NEXT:    ;;#ASMSTART1221; GFX90A-NEXT:    ; def v[0:1]1222; GFX90A-NEXT:    ;;#ASMEND1223; GFX90A-NEXT:    s_mov_b32 s4, 0xffff1224; GFX90A-NEXT:    v_mov_b32_e32 v2, 01225; GFX90A-NEXT:    v_bfi_b32 v0, s4, v1, v01226; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]1227; GFX90A-NEXT:    s_waitcnt vmcnt(0)1228; GFX90A-NEXT:    s_setpc_b64 s[30:31]1229;1230; GFX942-LABEL: v_shuffle_v2i16_v4i16__2_1:1231; GFX942:       ; %bb.0:1232; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1233; GFX942-NEXT:    ;;#ASMSTART1234; GFX942-NEXT:    ; def v[0:1]1235; GFX942-NEXT:    ;;#ASMEND1236; GFX942-NEXT:    s_mov_b32 s2, 0xffff1237; GFX942-NEXT:    v_mov_b32_e32 v2, 01238; GFX942-NEXT:    v_bfi_b32 v0, s2, v1, v01239; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]1240; GFX942-NEXT:    s_waitcnt vmcnt(0)1241; GFX942-NEXT:    s_setpc_b64 s[30:31]1242  %vec0 = call <4 x i16> asm "; def $0", "=v"()1243  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 1>1244  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41245  ret void1246}1247 1248define void @v_shuffle_v2i16_v4i16__3_1(ptr addrspace(1) inreg %ptr) {1249; GFX900-LABEL: v_shuffle_v2i16_v4i16__3_1:1250; GFX900:       ; %bb.0:1251; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1252; GFX900-NEXT:    ;;#ASMSTART1253; GFX900-NEXT:    ; def v[0:1]1254; GFX900-NEXT:    ;;#ASMEND1255; GFX900-NEXT:    s_mov_b32 s4, 0x70603021256; GFX900-NEXT:    v_mov_b32_e32 v2, 01257; GFX900-NEXT:    v_perm_b32 v0, v0, v1, s41258; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]1259; GFX900-NEXT:    s_waitcnt vmcnt(0)1260; GFX900-NEXT:    s_setpc_b64 s[30:31]1261;1262; GFX90A-LABEL: v_shuffle_v2i16_v4i16__3_1:1263; GFX90A:       ; %bb.0:1264; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1265; GFX90A-NEXT:    ;;#ASMSTART1266; GFX90A-NEXT:    ; def v[0:1]1267; GFX90A-NEXT:    ;;#ASMEND1268; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021269; GFX90A-NEXT:    v_mov_b32_e32 v2, 01270; GFX90A-NEXT:    v_perm_b32 v0, v0, v1, s41271; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]1272; GFX90A-NEXT:    s_waitcnt vmcnt(0)1273; GFX90A-NEXT:    s_setpc_b64 s[30:31]1274;1275; GFX942-LABEL: v_shuffle_v2i16_v4i16__3_1:1276; GFX942:       ; %bb.0:1277; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1278; GFX942-NEXT:    ;;#ASMSTART1279; GFX942-NEXT:    ; def v[0:1]1280; GFX942-NEXT:    ;;#ASMEND1281; GFX942-NEXT:    s_mov_b32 s2, 0x70603021282; GFX942-NEXT:    v_mov_b32_e32 v2, 01283; GFX942-NEXT:    v_perm_b32 v0, v0, v1, s21284; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]1285; GFX942-NEXT:    s_waitcnt vmcnt(0)1286; GFX942-NEXT:    s_setpc_b64 s[30:31]1287  %vec0 = call <4 x i16> asm "; def $0", "=v"()1288  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 1>1289  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41290  ret void1291}1292 1293define void @v_shuffle_v2i16_v4i16__4_1(ptr addrspace(1) inreg %ptr) {1294; GFX900-LABEL: v_shuffle_v2i16_v4i16__4_1:1295; GFX900:       ; %bb.0:1296; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1297; GFX900-NEXT:    v_mov_b32_e32 v2, 01298; GFX900-NEXT:    ;;#ASMSTART1299; GFX900-NEXT:    ; def v[0:1]1300; GFX900-NEXT:    ;;#ASMEND1301; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]1302; GFX900-NEXT:    s_waitcnt vmcnt(0)1303; GFX900-NEXT:    s_setpc_b64 s[30:31]1304;1305; GFX90A-LABEL: v_shuffle_v2i16_v4i16__4_1:1306; GFX90A:       ; %bb.0:1307; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1308; GFX90A-NEXT:    v_mov_b32_e32 v2, 01309; GFX90A-NEXT:    ;;#ASMSTART1310; GFX90A-NEXT:    ; def v[0:1]1311; GFX90A-NEXT:    ;;#ASMEND1312; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]1313; GFX90A-NEXT:    s_waitcnt vmcnt(0)1314; GFX90A-NEXT:    s_setpc_b64 s[30:31]1315;1316; GFX942-LABEL: v_shuffle_v2i16_v4i16__4_1:1317; GFX942:       ; %bb.0:1318; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1319; GFX942-NEXT:    v_mov_b32_e32 v2, 01320; GFX942-NEXT:    ;;#ASMSTART1321; GFX942-NEXT:    ; def v[0:1]1322; GFX942-NEXT:    ;;#ASMEND1323; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]1324; GFX942-NEXT:    s_waitcnt vmcnt(0)1325; GFX942-NEXT:    s_setpc_b64 s[30:31]1326  %vec0 = call <4 x i16> asm "; def $0", "=v"()1327  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 1>1328  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41329  ret void1330}1331 1332define void @v_shuffle_v2i16_v4i16__5_1(ptr addrspace(1) inreg %ptr) {1333; GFX900-LABEL: v_shuffle_v2i16_v4i16__5_1:1334; GFX900:       ; %bb.0:1335; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1336; GFX900-NEXT:    ;;#ASMSTART1337; GFX900-NEXT:    ; def v[0:1]1338; GFX900-NEXT:    ;;#ASMEND1339; GFX900-NEXT:    s_mov_b32 s4, 0x70603021340; GFX900-NEXT:    v_mov_b32_e32 v3, 01341; GFX900-NEXT:    ;;#ASMSTART1342; GFX900-NEXT:    ; def v[1:2]1343; GFX900-NEXT:    ;;#ASMEND1344; GFX900-NEXT:    v_perm_b32 v0, v0, v1, s41345; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]1346; GFX900-NEXT:    s_waitcnt vmcnt(0)1347; GFX900-NEXT:    s_setpc_b64 s[30:31]1348;1349; GFX90A-LABEL: v_shuffle_v2i16_v4i16__5_1:1350; GFX90A:       ; %bb.0:1351; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1352; GFX90A-NEXT:    ;;#ASMSTART1353; GFX90A-NEXT:    ; def v[0:1]1354; GFX90A-NEXT:    ;;#ASMEND1355; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021356; GFX90A-NEXT:    v_mov_b32_e32 v4, 01357; GFX90A-NEXT:    ;;#ASMSTART1358; GFX90A-NEXT:    ; def v[2:3]1359; GFX90A-NEXT:    ;;#ASMEND1360; GFX90A-NEXT:    v_perm_b32 v0, v0, v2, s41361; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]1362; GFX90A-NEXT:    s_waitcnt vmcnt(0)1363; GFX90A-NEXT:    s_setpc_b64 s[30:31]1364;1365; GFX942-LABEL: v_shuffle_v2i16_v4i16__5_1:1366; GFX942:       ; %bb.0:1367; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1368; GFX942-NEXT:    ;;#ASMSTART1369; GFX942-NEXT:    ; def v[0:1]1370; GFX942-NEXT:    ;;#ASMEND1371; GFX942-NEXT:    s_mov_b32 s2, 0x70603021372; GFX942-NEXT:    v_mov_b32_e32 v4, 01373; GFX942-NEXT:    ;;#ASMSTART1374; GFX942-NEXT:    ; def v[2:3]1375; GFX942-NEXT:    ;;#ASMEND1376; GFX942-NEXT:    s_nop 01377; GFX942-NEXT:    v_perm_b32 v0, v0, v2, s21378; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]1379; GFX942-NEXT:    s_waitcnt vmcnt(0)1380; GFX942-NEXT:    s_setpc_b64 s[30:31]1381  %vec0 = call <4 x i16> asm "; def $0", "=v"()1382  %vec1 = call <4 x i16> asm "; def $0", "=v"()1383  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 1>1384  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41385  ret void1386}1387 1388define void @v_shuffle_v2i16_v4i16__6_1(ptr addrspace(1) inreg %ptr) {1389; GFX900-LABEL: v_shuffle_v2i16_v4i16__6_1:1390; GFX900:       ; %bb.0:1391; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1392; GFX900-NEXT:    ;;#ASMSTART1393; GFX900-NEXT:    ; def v[0:1]1394; GFX900-NEXT:    ;;#ASMEND1395; GFX900-NEXT:    s_mov_b32 s4, 0xffff1396; GFX900-NEXT:    v_mov_b32_e32 v3, 01397; GFX900-NEXT:    ;;#ASMSTART1398; GFX900-NEXT:    ; def v[1:2]1399; GFX900-NEXT:    ;;#ASMEND1400; GFX900-NEXT:    v_bfi_b32 v0, s4, v2, v01401; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]1402; GFX900-NEXT:    s_waitcnt vmcnt(0)1403; GFX900-NEXT:    s_setpc_b64 s[30:31]1404;1405; GFX90A-LABEL: v_shuffle_v2i16_v4i16__6_1:1406; GFX90A:       ; %bb.0:1407; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1408; GFX90A-NEXT:    ;;#ASMSTART1409; GFX90A-NEXT:    ; def v[0:1]1410; GFX90A-NEXT:    ;;#ASMEND1411; GFX90A-NEXT:    s_mov_b32 s4, 0xffff1412; GFX90A-NEXT:    v_mov_b32_e32 v4, 01413; GFX90A-NEXT:    ;;#ASMSTART1414; GFX90A-NEXT:    ; def v[2:3]1415; GFX90A-NEXT:    ;;#ASMEND1416; GFX90A-NEXT:    v_bfi_b32 v0, s4, v3, v01417; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]1418; GFX90A-NEXT:    s_waitcnt vmcnt(0)1419; GFX90A-NEXT:    s_setpc_b64 s[30:31]1420;1421; GFX942-LABEL: v_shuffle_v2i16_v4i16__6_1:1422; GFX942:       ; %bb.0:1423; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1424; GFX942-NEXT:    ;;#ASMSTART1425; GFX942-NEXT:    ; def v[0:1]1426; GFX942-NEXT:    ;;#ASMEND1427; GFX942-NEXT:    s_mov_b32 s2, 0xffff1428; GFX942-NEXT:    v_mov_b32_e32 v4, 01429; GFX942-NEXT:    ;;#ASMSTART1430; GFX942-NEXT:    ; def v[2:3]1431; GFX942-NEXT:    ;;#ASMEND1432; GFX942-NEXT:    s_nop 01433; GFX942-NEXT:    v_bfi_b32 v0, s2, v3, v01434; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]1435; GFX942-NEXT:    s_waitcnt vmcnt(0)1436; GFX942-NEXT:    s_setpc_b64 s[30:31]1437  %vec0 = call <4 x i16> asm "; def $0", "=v"()1438  %vec1 = call <4 x i16> asm "; def $0", "=v"()1439  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 1>1440  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41441  ret void1442}1443 1444define void @v_shuffle_v2i16_v4i16__u_2(ptr addrspace(1) inreg %ptr) {1445; GFX900-LABEL: v_shuffle_v2i16_v4i16__u_2:1446; GFX900:       ; %bb.0:1447; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1448; GFX900-NEXT:    ;;#ASMSTART1449; GFX900-NEXT:    ; def v[0:1]1450; GFX900-NEXT:    ;;#ASMEND1451; GFX900-NEXT:    v_mov_b32_e32 v2, 01452; GFX900-NEXT:    v_lshlrev_b32_e32 v0, 16, v11453; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]1454; GFX900-NEXT:    s_waitcnt vmcnt(0)1455; GFX900-NEXT:    s_setpc_b64 s[30:31]1456;1457; GFX90A-LABEL: v_shuffle_v2i16_v4i16__u_2:1458; GFX90A:       ; %bb.0:1459; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1460; GFX90A-NEXT:    ;;#ASMSTART1461; GFX90A-NEXT:    ; def v[0:1]1462; GFX90A-NEXT:    ;;#ASMEND1463; GFX90A-NEXT:    v_mov_b32_e32 v2, 01464; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 16, v11465; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]1466; GFX90A-NEXT:    s_waitcnt vmcnt(0)1467; GFX90A-NEXT:    s_setpc_b64 s[30:31]1468;1469; GFX942-LABEL: v_shuffle_v2i16_v4i16__u_2:1470; GFX942:       ; %bb.0:1471; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1472; GFX942-NEXT:    ;;#ASMSTART1473; GFX942-NEXT:    ; def v[0:1]1474; GFX942-NEXT:    ;;#ASMEND1475; GFX942-NEXT:    v_mov_b32_e32 v2, 01476; GFX942-NEXT:    v_lshlrev_b32_e32 v0, 16, v11477; GFX942-NEXT:    global_store_dword v2, v0, 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  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 poison, i32 2>1482  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41483  ret void1484}1485 1486define void @v_shuffle_v2i16_v4i16__0_2(ptr addrspace(1) inreg %ptr) {1487; GFX900-LABEL: v_shuffle_v2i16_v4i16__0_2:1488; GFX900:       ; %bb.0:1489; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1490; GFX900-NEXT:    ;;#ASMSTART1491; GFX900-NEXT:    ; def v[0:1]1492; GFX900-NEXT:    ;;#ASMEND1493; GFX900-NEXT:    s_mov_b32 s4, 0x50401001494; GFX900-NEXT:    v_mov_b32_e32 v2, 01495; GFX900-NEXT:    v_perm_b32 v0, v1, v0, s41496; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]1497; GFX900-NEXT:    s_waitcnt vmcnt(0)1498; GFX900-NEXT:    s_setpc_b64 s[30:31]1499;1500; GFX90A-LABEL: v_shuffle_v2i16_v4i16__0_2:1501; GFX90A:       ; %bb.0:1502; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1503; GFX90A-NEXT:    ;;#ASMSTART1504; GFX90A-NEXT:    ; def v[0:1]1505; GFX90A-NEXT:    ;;#ASMEND1506; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001507; GFX90A-NEXT:    v_mov_b32_e32 v2, 01508; GFX90A-NEXT:    v_perm_b32 v0, v1, v0, s41509; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]1510; GFX90A-NEXT:    s_waitcnt vmcnt(0)1511; GFX90A-NEXT:    s_setpc_b64 s[30:31]1512;1513; GFX942-LABEL: v_shuffle_v2i16_v4i16__0_2:1514; GFX942:       ; %bb.0:1515; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1516; GFX942-NEXT:    ;;#ASMSTART1517; GFX942-NEXT:    ; def v[0:1]1518; GFX942-NEXT:    ;;#ASMEND1519; GFX942-NEXT:    s_mov_b32 s2, 0x50401001520; GFX942-NEXT:    v_mov_b32_e32 v2, 01521; GFX942-NEXT:    v_perm_b32 v0, v1, v0, s21522; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]1523; GFX942-NEXT:    s_waitcnt vmcnt(0)1524; GFX942-NEXT:    s_setpc_b64 s[30:31]1525  %vec0 = call <4 x i16> asm "; def $0", "=v"()1526  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 0, i32 2>1527  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41528  ret void1529}1530 1531define void @v_shuffle_v2i16_v4i16__1_2(ptr addrspace(1) inreg %ptr) {1532; GFX900-LABEL: v_shuffle_v2i16_v4i16__1_2:1533; GFX900:       ; %bb.0:1534; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1535; GFX900-NEXT:    ;;#ASMSTART1536; GFX900-NEXT:    ; def v[0:1]1537; GFX900-NEXT:    ;;#ASMEND1538; GFX900-NEXT:    v_mov_b32_e32 v2, 01539; GFX900-NEXT:    v_alignbit_b32 v0, v1, v0, 161540; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]1541; GFX900-NEXT:    s_waitcnt vmcnt(0)1542; GFX900-NEXT:    s_setpc_b64 s[30:31]1543;1544; GFX90A-LABEL: v_shuffle_v2i16_v4i16__1_2:1545; GFX90A:       ; %bb.0:1546; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1547; GFX90A-NEXT:    ;;#ASMSTART1548; GFX90A-NEXT:    ; def v[0:1]1549; GFX90A-NEXT:    ;;#ASMEND1550; GFX90A-NEXT:    v_mov_b32_e32 v2, 01551; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v0, 161552; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]1553; GFX90A-NEXT:    s_waitcnt vmcnt(0)1554; GFX90A-NEXT:    s_setpc_b64 s[30:31]1555;1556; GFX942-LABEL: v_shuffle_v2i16_v4i16__1_2:1557; GFX942:       ; %bb.0:1558; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1559; GFX942-NEXT:    ;;#ASMSTART1560; GFX942-NEXT:    ; def v[0:1]1561; GFX942-NEXT:    ;;#ASMEND1562; GFX942-NEXT:    v_mov_b32_e32 v2, 01563; GFX942-NEXT:    v_alignbit_b32 v0, v1, v0, 161564; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]1565; GFX942-NEXT:    s_waitcnt vmcnt(0)1566; GFX942-NEXT:    s_setpc_b64 s[30:31]1567  %vec0 = call <4 x i16> asm "; def $0", "=v"()1568  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 2>1569  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41570  ret void1571}1572 1573define void @v_shuffle_v2i16_v4i16__2_2(ptr addrspace(1) inreg %ptr) {1574; GFX900-LABEL: v_shuffle_v2i16_v4i16__2_2:1575; GFX900:       ; %bb.0:1576; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1577; GFX900-NEXT:    ;;#ASMSTART1578; GFX900-NEXT:    ; def v[0:1]1579; GFX900-NEXT:    ;;#ASMEND1580; GFX900-NEXT:    s_mov_b32 s4, 0x50401001581; GFX900-NEXT:    v_mov_b32_e32 v2, 01582; GFX900-NEXT:    v_perm_b32 v0, v1, v1, s41583; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]1584; GFX900-NEXT:    s_waitcnt vmcnt(0)1585; GFX900-NEXT:    s_setpc_b64 s[30:31]1586;1587; GFX90A-LABEL: v_shuffle_v2i16_v4i16__2_2:1588; GFX90A:       ; %bb.0:1589; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1590; GFX90A-NEXT:    ;;#ASMSTART1591; GFX90A-NEXT:    ; def v[0:1]1592; GFX90A-NEXT:    ;;#ASMEND1593; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001594; GFX90A-NEXT:    v_mov_b32_e32 v2, 01595; GFX90A-NEXT:    v_perm_b32 v0, v1, v1, s41596; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]1597; GFX90A-NEXT:    s_waitcnt vmcnt(0)1598; GFX90A-NEXT:    s_setpc_b64 s[30:31]1599;1600; GFX942-LABEL: v_shuffle_v2i16_v4i16__2_2:1601; GFX942:       ; %bb.0:1602; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1603; GFX942-NEXT:    ;;#ASMSTART1604; GFX942-NEXT:    ; def v[0:1]1605; GFX942-NEXT:    ;;#ASMEND1606; GFX942-NEXT:    s_mov_b32 s2, 0x50401001607; GFX942-NEXT:    v_mov_b32_e32 v2, 01608; GFX942-NEXT:    v_perm_b32 v0, v1, v1, s21609; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]1610; GFX942-NEXT:    s_waitcnt vmcnt(0)1611; GFX942-NEXT:    s_setpc_b64 s[30:31]1612  %vec0 = call <4 x i16> asm "; def $0", "=v"()1613  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 2>1614  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41615  ret void1616}1617 1618define void @v_shuffle_v2i16_v4i16__3_2(ptr addrspace(1) inreg %ptr) {1619; GFX900-LABEL: v_shuffle_v2i16_v4i16__3_2:1620; GFX900:       ; %bb.0:1621; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1622; GFX900-NEXT:    ;;#ASMSTART1623; GFX900-NEXT:    ; def v[0:1]1624; GFX900-NEXT:    ;;#ASMEND1625; GFX900-NEXT:    v_mov_b32_e32 v2, 01626; GFX900-NEXT:    v_alignbit_b32 v0, v1, v1, 161627; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]1628; GFX900-NEXT:    s_waitcnt vmcnt(0)1629; GFX900-NEXT:    s_setpc_b64 s[30:31]1630;1631; GFX90A-LABEL: v_shuffle_v2i16_v4i16__3_2:1632; GFX90A:       ; %bb.0:1633; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1634; GFX90A-NEXT:    ;;#ASMSTART1635; GFX90A-NEXT:    ; def v[0:1]1636; GFX90A-NEXT:    ;;#ASMEND1637; GFX90A-NEXT:    v_mov_b32_e32 v2, 01638; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v1, 161639; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]1640; GFX90A-NEXT:    s_waitcnt vmcnt(0)1641; GFX90A-NEXT:    s_setpc_b64 s[30:31]1642;1643; GFX942-LABEL: v_shuffle_v2i16_v4i16__3_2:1644; GFX942:       ; %bb.0:1645; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1646; GFX942-NEXT:    ;;#ASMSTART1647; GFX942-NEXT:    ; def v[0:1]1648; GFX942-NEXT:    ;;#ASMEND1649; GFX942-NEXT:    v_mov_b32_e32 v2, 01650; GFX942-NEXT:    v_alignbit_b32 v0, v1, v1, 161651; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]1652; GFX942-NEXT:    s_waitcnt vmcnt(0)1653; GFX942-NEXT:    s_setpc_b64 s[30:31]1654  %vec0 = call <4 x i16> asm "; def $0", "=v"()1655  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 2>1656  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41657  ret void1658}1659 1660define void @v_shuffle_v2i16_v4i16__4_2(ptr addrspace(1) inreg %ptr) {1661; GFX900-LABEL: v_shuffle_v2i16_v4i16__4_2:1662; GFX900:       ; %bb.0:1663; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1664; GFX900-NEXT:    ;;#ASMSTART1665; GFX900-NEXT:    ; def v[0:1]1666; GFX900-NEXT:    ;;#ASMEND1667; GFX900-NEXT:    v_mov_b32_e32 v2, 01668; GFX900-NEXT:    v_lshlrev_b32_e32 v0, 16, v11669; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]1670; GFX900-NEXT:    s_waitcnt vmcnt(0)1671; GFX900-NEXT:    s_setpc_b64 s[30:31]1672;1673; GFX90A-LABEL: v_shuffle_v2i16_v4i16__4_2:1674; GFX90A:       ; %bb.0:1675; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1676; GFX90A-NEXT:    ;;#ASMSTART1677; GFX90A-NEXT:    ; def v[0:1]1678; GFX90A-NEXT:    ;;#ASMEND1679; GFX90A-NEXT:    v_mov_b32_e32 v2, 01680; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 16, v11681; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]1682; GFX90A-NEXT:    s_waitcnt vmcnt(0)1683; GFX90A-NEXT:    s_setpc_b64 s[30:31]1684;1685; GFX942-LABEL: v_shuffle_v2i16_v4i16__4_2:1686; GFX942:       ; %bb.0:1687; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1688; GFX942-NEXT:    ;;#ASMSTART1689; GFX942-NEXT:    ; def v[0:1]1690; GFX942-NEXT:    ;;#ASMEND1691; GFX942-NEXT:    v_mov_b32_e32 v2, 01692; GFX942-NEXT:    v_lshlrev_b32_e32 v0, 16, v11693; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]1694; GFX942-NEXT:    s_waitcnt vmcnt(0)1695; GFX942-NEXT:    s_setpc_b64 s[30:31]1696  %vec0 = call <4 x i16> asm "; def $0", "=v"()1697  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 2>1698  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41699  ret void1700}1701 1702define void @v_shuffle_v2i16_v4i16__5_2(ptr addrspace(1) inreg %ptr) {1703; GFX900-LABEL: v_shuffle_v2i16_v4i16__5_2:1704; GFX900:       ; %bb.0:1705; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1706; GFX900-NEXT:    ;;#ASMSTART1707; GFX900-NEXT:    ; def v[0:1]1708; GFX900-NEXT:    ;;#ASMEND1709; GFX900-NEXT:    v_mov_b32_e32 v4, 01710; GFX900-NEXT:    ;;#ASMSTART1711; GFX900-NEXT:    ; def v[2:3]1712; GFX900-NEXT:    ;;#ASMEND1713; GFX900-NEXT:    v_alignbit_b32 v0, v1, v2, 161714; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]1715; GFX900-NEXT:    s_waitcnt vmcnt(0)1716; GFX900-NEXT:    s_setpc_b64 s[30:31]1717;1718; GFX90A-LABEL: v_shuffle_v2i16_v4i16__5_2:1719; GFX90A:       ; %bb.0:1720; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1721; GFX90A-NEXT:    ;;#ASMSTART1722; GFX90A-NEXT:    ; def v[0:1]1723; GFX90A-NEXT:    ;;#ASMEND1724; GFX90A-NEXT:    v_mov_b32_e32 v4, 01725; GFX90A-NEXT:    ;;#ASMSTART1726; GFX90A-NEXT:    ; def v[2:3]1727; GFX90A-NEXT:    ;;#ASMEND1728; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v2, 161729; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]1730; GFX90A-NEXT:    s_waitcnt vmcnt(0)1731; GFX90A-NEXT:    s_setpc_b64 s[30:31]1732;1733; GFX942-LABEL: v_shuffle_v2i16_v4i16__5_2:1734; GFX942:       ; %bb.0:1735; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1736; GFX942-NEXT:    ;;#ASMSTART1737; GFX942-NEXT:    ; def v[0:1]1738; GFX942-NEXT:    ;;#ASMEND1739; GFX942-NEXT:    v_mov_b32_e32 v4, 01740; GFX942-NEXT:    ;;#ASMSTART1741; GFX942-NEXT:    ; def v[2:3]1742; GFX942-NEXT:    ;;#ASMEND1743; GFX942-NEXT:    s_nop 01744; GFX942-NEXT:    v_alignbit_b32 v0, v1, v2, 161745; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]1746; GFX942-NEXT:    s_waitcnt vmcnt(0)1747; GFX942-NEXT:    s_setpc_b64 s[30:31]1748  %vec0 = call <4 x i16> asm "; def $0", "=v"()1749  %vec1 = call <4 x i16> asm "; def $0", "=v"()1750  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 2>1751  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41752  ret void1753}1754 1755define void @v_shuffle_v2i16_v4i16__6_2(ptr addrspace(1) inreg %ptr) {1756; GFX900-LABEL: v_shuffle_v2i16_v4i16__6_2:1757; GFX900:       ; %bb.0:1758; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1759; GFX900-NEXT:    ;;#ASMSTART1760; GFX900-NEXT:    ; def v[0:1]1761; GFX900-NEXT:    ;;#ASMEND1762; GFX900-NEXT:    s_mov_b32 s4, 0x50401001763; GFX900-NEXT:    v_mov_b32_e32 v4, 01764; GFX900-NEXT:    ;;#ASMSTART1765; GFX900-NEXT:    ; def v[2:3]1766; GFX900-NEXT:    ;;#ASMEND1767; GFX900-NEXT:    v_perm_b32 v0, v1, v3, s41768; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]1769; GFX900-NEXT:    s_waitcnt vmcnt(0)1770; GFX900-NEXT:    s_setpc_b64 s[30:31]1771;1772; GFX90A-LABEL: v_shuffle_v2i16_v4i16__6_2:1773; GFX90A:       ; %bb.0:1774; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1775; GFX90A-NEXT:    ;;#ASMSTART1776; GFX90A-NEXT:    ; def v[0:1]1777; GFX90A-NEXT:    ;;#ASMEND1778; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001779; GFX90A-NEXT:    v_mov_b32_e32 v4, 01780; GFX90A-NEXT:    ;;#ASMSTART1781; GFX90A-NEXT:    ; def v[2:3]1782; GFX90A-NEXT:    ;;#ASMEND1783; GFX90A-NEXT:    v_perm_b32 v0, v1, v3, s41784; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]1785; GFX90A-NEXT:    s_waitcnt vmcnt(0)1786; GFX90A-NEXT:    s_setpc_b64 s[30:31]1787;1788; GFX942-LABEL: v_shuffle_v2i16_v4i16__6_2:1789; GFX942:       ; %bb.0:1790; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1791; GFX942-NEXT:    ;;#ASMSTART1792; GFX942-NEXT:    ; def v[0:1]1793; GFX942-NEXT:    ;;#ASMEND1794; GFX942-NEXT:    s_mov_b32 s2, 0x50401001795; GFX942-NEXT:    v_mov_b32_e32 v4, 01796; GFX942-NEXT:    ;;#ASMSTART1797; GFX942-NEXT:    ; def v[2:3]1798; GFX942-NEXT:    ;;#ASMEND1799; GFX942-NEXT:    s_nop 01800; GFX942-NEXT:    v_perm_b32 v0, v1, v3, s21801; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]1802; GFX942-NEXT:    s_waitcnt vmcnt(0)1803; GFX942-NEXT:    s_setpc_b64 s[30:31]1804  %vec0 = call <4 x i16> asm "; def $0", "=v"()1805  %vec1 = call <4 x i16> asm "; def $0", "=v"()1806  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 2>1807  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41808  ret void1809}1810 1811define void @v_shuffle_v2i16_v4i16__u_3(ptr addrspace(1) inreg %ptr) {1812; GFX900-LABEL: v_shuffle_v2i16_v4i16__u_3:1813; GFX900:       ; %bb.0:1814; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1815; GFX900-NEXT:    v_mov_b32_e32 v2, 01816; GFX900-NEXT:    ;;#ASMSTART1817; GFX900-NEXT:    ; def v[0:1]1818; GFX900-NEXT:    ;;#ASMEND1819; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]1820; GFX900-NEXT:    s_waitcnt vmcnt(0)1821; GFX900-NEXT:    s_setpc_b64 s[30:31]1822;1823; GFX90A-LABEL: v_shuffle_v2i16_v4i16__u_3:1824; GFX90A:       ; %bb.0:1825; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1826; GFX90A-NEXT:    v_mov_b32_e32 v2, 01827; GFX90A-NEXT:    ;;#ASMSTART1828; GFX90A-NEXT:    ; def v[0:1]1829; GFX90A-NEXT:    ;;#ASMEND1830; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]1831; GFX90A-NEXT:    s_waitcnt vmcnt(0)1832; GFX90A-NEXT:    s_setpc_b64 s[30:31]1833;1834; GFX942-LABEL: v_shuffle_v2i16_v4i16__u_3:1835; GFX942:       ; %bb.0:1836; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1837; GFX942-NEXT:    v_mov_b32_e32 v2, 01838; GFX942-NEXT:    ;;#ASMSTART1839; GFX942-NEXT:    ; def v[0:1]1840; GFX942-NEXT:    ;;#ASMEND1841; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]1842; GFX942-NEXT:    s_waitcnt vmcnt(0)1843; GFX942-NEXT:    s_setpc_b64 s[30:31]1844  %vec0 = call <4 x i16> asm "; def $0", "=v"()1845  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 poison, i32 3>1846  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41847  ret void1848}1849 1850define void @v_shuffle_v2i16_v4i16__0_3(ptr addrspace(1) inreg %ptr) {1851; GFX900-LABEL: v_shuffle_v2i16_v4i16__0_3:1852; GFX900:       ; %bb.0:1853; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1854; GFX900-NEXT:    ;;#ASMSTART1855; GFX900-NEXT:    ; def v[0:1]1856; GFX900-NEXT:    ;;#ASMEND1857; GFX900-NEXT:    s_mov_b32 s4, 0xffff1858; GFX900-NEXT:    v_mov_b32_e32 v2, 01859; GFX900-NEXT:    v_bfi_b32 v0, s4, v0, v11860; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]1861; GFX900-NEXT:    s_waitcnt vmcnt(0)1862; GFX900-NEXT:    s_setpc_b64 s[30:31]1863;1864; GFX90A-LABEL: v_shuffle_v2i16_v4i16__0_3:1865; GFX90A:       ; %bb.0:1866; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1867; GFX90A-NEXT:    ;;#ASMSTART1868; GFX90A-NEXT:    ; def v[0:1]1869; GFX90A-NEXT:    ;;#ASMEND1870; GFX90A-NEXT:    s_mov_b32 s4, 0xffff1871; GFX90A-NEXT:    v_mov_b32_e32 v2, 01872; GFX90A-NEXT:    v_bfi_b32 v0, s4, v0, v11873; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]1874; GFX90A-NEXT:    s_waitcnt vmcnt(0)1875; GFX90A-NEXT:    s_setpc_b64 s[30:31]1876;1877; GFX942-LABEL: v_shuffle_v2i16_v4i16__0_3:1878; GFX942:       ; %bb.0:1879; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1880; GFX942-NEXT:    ;;#ASMSTART1881; GFX942-NEXT:    ; def v[0:1]1882; GFX942-NEXT:    ;;#ASMEND1883; GFX942-NEXT:    s_mov_b32 s2, 0xffff1884; GFX942-NEXT:    v_mov_b32_e32 v2, 01885; GFX942-NEXT:    v_bfi_b32 v0, s2, v0, v11886; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]1887; GFX942-NEXT:    s_waitcnt vmcnt(0)1888; GFX942-NEXT:    s_setpc_b64 s[30:31]1889  %vec0 = call <4 x i16> asm "; def $0", "=v"()1890  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 0, i32 3>1891  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41892  ret void1893}1894 1895define void @v_shuffle_v2i16_v4i16__1_3(ptr addrspace(1) inreg %ptr) {1896; GFX900-LABEL: v_shuffle_v2i16_v4i16__1_3:1897; GFX900:       ; %bb.0:1898; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1899; GFX900-NEXT:    ;;#ASMSTART1900; GFX900-NEXT:    ; def v[0:1]1901; GFX900-NEXT:    ;;#ASMEND1902; GFX900-NEXT:    s_mov_b32 s4, 0x70603021903; GFX900-NEXT:    v_mov_b32_e32 v2, 01904; GFX900-NEXT:    v_perm_b32 v0, v1, v0, s41905; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]1906; GFX900-NEXT:    s_waitcnt vmcnt(0)1907; GFX900-NEXT:    s_setpc_b64 s[30:31]1908;1909; GFX90A-LABEL: v_shuffle_v2i16_v4i16__1_3:1910; GFX90A:       ; %bb.0:1911; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1912; GFX90A-NEXT:    ;;#ASMSTART1913; GFX90A-NEXT:    ; def v[0:1]1914; GFX90A-NEXT:    ;;#ASMEND1915; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021916; GFX90A-NEXT:    v_mov_b32_e32 v2, 01917; GFX90A-NEXT:    v_perm_b32 v0, v1, v0, s41918; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]1919; GFX90A-NEXT:    s_waitcnt vmcnt(0)1920; GFX90A-NEXT:    s_setpc_b64 s[30:31]1921;1922; GFX942-LABEL: v_shuffle_v2i16_v4i16__1_3:1923; GFX942:       ; %bb.0:1924; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1925; GFX942-NEXT:    ;;#ASMSTART1926; GFX942-NEXT:    ; def v[0:1]1927; GFX942-NEXT:    ;;#ASMEND1928; GFX942-NEXT:    s_mov_b32 s2, 0x70603021929; GFX942-NEXT:    v_mov_b32_e32 v2, 01930; GFX942-NEXT:    v_perm_b32 v0, v1, v0, s21931; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]1932; GFX942-NEXT:    s_waitcnt vmcnt(0)1933; GFX942-NEXT:    s_setpc_b64 s[30:31]1934  %vec0 = call <4 x i16> asm "; def $0", "=v"()1935  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 3>1936  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41937  ret void1938}1939 1940define void @v_shuffle_v2i16_v4i16__2_3(ptr addrspace(1) inreg %ptr) {1941; GFX900-LABEL: v_shuffle_v2i16_v4i16__2_3:1942; GFX900:       ; %bb.0:1943; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1944; GFX900-NEXT:    v_mov_b32_e32 v2, 01945; GFX900-NEXT:    ;;#ASMSTART1946; GFX900-NEXT:    ; def v[0:1]1947; GFX900-NEXT:    ;;#ASMEND1948; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]1949; GFX900-NEXT:    s_waitcnt vmcnt(0)1950; GFX900-NEXT:    s_setpc_b64 s[30:31]1951;1952; GFX90A-LABEL: v_shuffle_v2i16_v4i16__2_3:1953; GFX90A:       ; %bb.0:1954; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1955; GFX90A-NEXT:    v_mov_b32_e32 v2, 01956; GFX90A-NEXT:    ;;#ASMSTART1957; GFX90A-NEXT:    ; def v[0:1]1958; GFX90A-NEXT:    ;;#ASMEND1959; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]1960; GFX90A-NEXT:    s_waitcnt vmcnt(0)1961; GFX90A-NEXT:    s_setpc_b64 s[30:31]1962;1963; GFX942-LABEL: v_shuffle_v2i16_v4i16__2_3:1964; GFX942:       ; %bb.0:1965; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1966; GFX942-NEXT:    v_mov_b32_e32 v2, 01967; GFX942-NEXT:    ;;#ASMSTART1968; GFX942-NEXT:    ; def v[0:1]1969; GFX942-NEXT:    ;;#ASMEND1970; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]1971; GFX942-NEXT:    s_waitcnt vmcnt(0)1972; GFX942-NEXT:    s_setpc_b64 s[30:31]1973  %vec0 = call <4 x i16> asm "; def $0", "=v"()1974  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 3>1975  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 41976  ret void1977}1978 1979define void @v_shuffle_v2i16_v4i16__3_3(ptr addrspace(1) inreg %ptr) {1980; GFX900-LABEL: v_shuffle_v2i16_v4i16__3_3:1981; GFX900:       ; %bb.0:1982; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1983; GFX900-NEXT:    ;;#ASMSTART1984; GFX900-NEXT:    ; def v[0:1]1985; GFX900-NEXT:    ;;#ASMEND1986; GFX900-NEXT:    s_mov_b32 s4, 0x70603021987; GFX900-NEXT:    v_mov_b32_e32 v2, 01988; GFX900-NEXT:    v_perm_b32 v0, v1, v1, s41989; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]1990; GFX900-NEXT:    s_waitcnt vmcnt(0)1991; GFX900-NEXT:    s_setpc_b64 s[30:31]1992;1993; GFX90A-LABEL: v_shuffle_v2i16_v4i16__3_3:1994; GFX90A:       ; %bb.0:1995; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1996; GFX90A-NEXT:    ;;#ASMSTART1997; GFX90A-NEXT:    ; def v[0:1]1998; GFX90A-NEXT:    ;;#ASMEND1999; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022000; GFX90A-NEXT:    v_mov_b32_e32 v2, 02001; GFX90A-NEXT:    v_perm_b32 v0, v1, v1, s42002; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]2003; GFX90A-NEXT:    s_waitcnt vmcnt(0)2004; GFX90A-NEXT:    s_setpc_b64 s[30:31]2005;2006; GFX942-LABEL: v_shuffle_v2i16_v4i16__3_3:2007; GFX942:       ; %bb.0:2008; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2009; GFX942-NEXT:    ;;#ASMSTART2010; GFX942-NEXT:    ; def v[0:1]2011; GFX942-NEXT:    ;;#ASMEND2012; GFX942-NEXT:    s_mov_b32 s2, 0x70603022013; GFX942-NEXT:    v_mov_b32_e32 v2, 02014; GFX942-NEXT:    v_perm_b32 v0, v1, v1, s22015; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]2016; GFX942-NEXT:    s_waitcnt vmcnt(0)2017; GFX942-NEXT:    s_setpc_b64 s[30:31]2018  %vec0 = call <4 x i16> asm "; def $0", "=v"()2019  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 3>2020  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 42021  ret void2022}2023 2024define void @v_shuffle_v2i16_v4i16__4_3(ptr addrspace(1) inreg %ptr) {2025; GFX900-LABEL: v_shuffle_v2i16_v4i16__4_3:2026; GFX900:       ; %bb.0:2027; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2028; GFX900-NEXT:    v_mov_b32_e32 v2, 02029; GFX900-NEXT:    ;;#ASMSTART2030; GFX900-NEXT:    ; def v[0:1]2031; GFX900-NEXT:    ;;#ASMEND2032; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]2033; GFX900-NEXT:    s_waitcnt vmcnt(0)2034; GFX900-NEXT:    s_setpc_b64 s[30:31]2035;2036; GFX90A-LABEL: v_shuffle_v2i16_v4i16__4_3:2037; GFX90A:       ; %bb.0:2038; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2039; GFX90A-NEXT:    v_mov_b32_e32 v2, 02040; GFX90A-NEXT:    ;;#ASMSTART2041; GFX90A-NEXT:    ; def v[0:1]2042; GFX90A-NEXT:    ;;#ASMEND2043; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]2044; GFX90A-NEXT:    s_waitcnt vmcnt(0)2045; GFX90A-NEXT:    s_setpc_b64 s[30:31]2046;2047; GFX942-LABEL: v_shuffle_v2i16_v4i16__4_3:2048; GFX942:       ; %bb.0:2049; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2050; GFX942-NEXT:    v_mov_b32_e32 v2, 02051; GFX942-NEXT:    ;;#ASMSTART2052; GFX942-NEXT:    ; def v[0:1]2053; GFX942-NEXT:    ;;#ASMEND2054; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]2055; GFX942-NEXT:    s_waitcnt vmcnt(0)2056; GFX942-NEXT:    s_setpc_b64 s[30:31]2057  %vec0 = call <4 x i16> asm "; def $0", "=v"()2058  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 3>2059  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 42060  ret void2061}2062 2063define void @v_shuffle_v2i16_v4i16__5_3(ptr addrspace(1) inreg %ptr) {2064; GFX900-LABEL: v_shuffle_v2i16_v4i16__5_3:2065; GFX900:       ; %bb.0:2066; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2067; GFX900-NEXT:    ;;#ASMSTART2068; GFX900-NEXT:    ; def v[0:1]2069; GFX900-NEXT:    ;;#ASMEND2070; GFX900-NEXT:    s_mov_b32 s4, 0x70603022071; GFX900-NEXT:    v_mov_b32_e32 v4, 02072; GFX900-NEXT:    ;;#ASMSTART2073; GFX900-NEXT:    ; def v[2:3]2074; GFX900-NEXT:    ;;#ASMEND2075; GFX900-NEXT:    v_perm_b32 v0, v1, v2, s42076; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]2077; GFX900-NEXT:    s_waitcnt vmcnt(0)2078; GFX900-NEXT:    s_setpc_b64 s[30:31]2079;2080; GFX90A-LABEL: v_shuffle_v2i16_v4i16__5_3:2081; GFX90A:       ; %bb.0:2082; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2083; GFX90A-NEXT:    ;;#ASMSTART2084; GFX90A-NEXT:    ; def v[0:1]2085; GFX90A-NEXT:    ;;#ASMEND2086; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022087; GFX90A-NEXT:    v_mov_b32_e32 v4, 02088; GFX90A-NEXT:    ;;#ASMSTART2089; GFX90A-NEXT:    ; def v[2:3]2090; GFX90A-NEXT:    ;;#ASMEND2091; GFX90A-NEXT:    v_perm_b32 v0, v1, v2, s42092; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]2093; GFX90A-NEXT:    s_waitcnt vmcnt(0)2094; GFX90A-NEXT:    s_setpc_b64 s[30:31]2095;2096; GFX942-LABEL: v_shuffle_v2i16_v4i16__5_3:2097; GFX942:       ; %bb.0:2098; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2099; GFX942-NEXT:    ;;#ASMSTART2100; GFX942-NEXT:    ; def v[0:1]2101; GFX942-NEXT:    ;;#ASMEND2102; GFX942-NEXT:    s_mov_b32 s2, 0x70603022103; GFX942-NEXT:    v_mov_b32_e32 v4, 02104; GFX942-NEXT:    ;;#ASMSTART2105; GFX942-NEXT:    ; def v[2:3]2106; GFX942-NEXT:    ;;#ASMEND2107; GFX942-NEXT:    s_nop 02108; GFX942-NEXT:    v_perm_b32 v0, v1, v2, s22109; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]2110; GFX942-NEXT:    s_waitcnt vmcnt(0)2111; GFX942-NEXT:    s_setpc_b64 s[30:31]2112  %vec0 = call <4 x i16> asm "; def $0", "=v"()2113  %vec1 = call <4 x i16> asm "; def $0", "=v"()2114  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 3>2115  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 42116  ret void2117}2118 2119define void @v_shuffle_v2i16_v4i16__6_3(ptr addrspace(1) inreg %ptr) {2120; GFX900-LABEL: v_shuffle_v2i16_v4i16__6_3:2121; GFX900:       ; %bb.0:2122; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2123; GFX900-NEXT:    ;;#ASMSTART2124; GFX900-NEXT:    ; def v[0:1]2125; GFX900-NEXT:    ;;#ASMEND2126; GFX900-NEXT:    s_mov_b32 s4, 0xffff2127; GFX900-NEXT:    v_mov_b32_e32 v4, 02128; GFX900-NEXT:    ;;#ASMSTART2129; GFX900-NEXT:    ; def v[2:3]2130; GFX900-NEXT:    ;;#ASMEND2131; GFX900-NEXT:    v_bfi_b32 v0, s4, v3, v12132; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]2133; GFX900-NEXT:    s_waitcnt vmcnt(0)2134; GFX900-NEXT:    s_setpc_b64 s[30:31]2135;2136; GFX90A-LABEL: v_shuffle_v2i16_v4i16__6_3:2137; GFX90A:       ; %bb.0:2138; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2139; GFX90A-NEXT:    ;;#ASMSTART2140; GFX90A-NEXT:    ; def v[0:1]2141; GFX90A-NEXT:    ;;#ASMEND2142; GFX90A-NEXT:    s_mov_b32 s4, 0xffff2143; GFX90A-NEXT:    v_mov_b32_e32 v4, 02144; GFX90A-NEXT:    ;;#ASMSTART2145; GFX90A-NEXT:    ; def v[2:3]2146; GFX90A-NEXT:    ;;#ASMEND2147; GFX90A-NEXT:    v_bfi_b32 v0, s4, v3, v12148; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]2149; GFX90A-NEXT:    s_waitcnt vmcnt(0)2150; GFX90A-NEXT:    s_setpc_b64 s[30:31]2151;2152; GFX942-LABEL: v_shuffle_v2i16_v4i16__6_3:2153; GFX942:       ; %bb.0:2154; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2155; GFX942-NEXT:    ;;#ASMSTART2156; GFX942-NEXT:    ; def v[0:1]2157; GFX942-NEXT:    ;;#ASMEND2158; GFX942-NEXT:    s_mov_b32 s2, 0xffff2159; GFX942-NEXT:    v_mov_b32_e32 v4, 02160; GFX942-NEXT:    ;;#ASMSTART2161; GFX942-NEXT:    ; def v[2:3]2162; GFX942-NEXT:    ;;#ASMEND2163; GFX942-NEXT:    s_nop 02164; GFX942-NEXT:    v_bfi_b32 v0, s2, v3, v12165; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]2166; GFX942-NEXT:    s_waitcnt vmcnt(0)2167; GFX942-NEXT:    s_setpc_b64 s[30:31]2168  %vec0 = call <4 x i16> asm "; def $0", "=v"()2169  %vec1 = call <4 x i16> asm "; def $0", "=v"()2170  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 3>2171  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 42172  ret void2173}2174 2175define void @v_shuffle_v2i16_v4i16__u_4(ptr addrspace(1) inreg %ptr) {2176; GFX9-LABEL: v_shuffle_v2i16_v4i16__u_4:2177; GFX9:       ; %bb.0:2178; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2179; GFX9-NEXT:    s_setpc_b64 s[30:31]2180  %vec0 = call <4 x i16> asm "; def $0", "=v"()2181  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 poison, i32 4>2182  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 42183  ret void2184}2185 2186define void @v_shuffle_v2i16_v4i16__0_4(ptr addrspace(1) inreg %ptr) {2187; GFX900-LABEL: v_shuffle_v2i16_v4i16__0_4:2188; GFX900:       ; %bb.0:2189; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2190; GFX900-NEXT:    v_mov_b32_e32 v2, 02191; GFX900-NEXT:    ;;#ASMSTART2192; GFX900-NEXT:    ; def v[0:1]2193; GFX900-NEXT:    ;;#ASMEND2194; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]2195; GFX900-NEXT:    s_waitcnt vmcnt(0)2196; GFX900-NEXT:    s_setpc_b64 s[30:31]2197;2198; GFX90A-LABEL: v_shuffle_v2i16_v4i16__0_4:2199; GFX90A:       ; %bb.0:2200; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2201; GFX90A-NEXT:    v_mov_b32_e32 v2, 02202; GFX90A-NEXT:    ;;#ASMSTART2203; GFX90A-NEXT:    ; def v[0:1]2204; GFX90A-NEXT:    ;;#ASMEND2205; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]2206; GFX90A-NEXT:    s_waitcnt vmcnt(0)2207; GFX90A-NEXT:    s_setpc_b64 s[30:31]2208;2209; GFX942-LABEL: v_shuffle_v2i16_v4i16__0_4:2210; GFX942:       ; %bb.0:2211; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2212; GFX942-NEXT:    v_mov_b32_e32 v2, 02213; GFX942-NEXT:    ;;#ASMSTART2214; GFX942-NEXT:    ; def v[0:1]2215; GFX942-NEXT:    ;;#ASMEND2216; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]2217; GFX942-NEXT:    s_waitcnt vmcnt(0)2218; GFX942-NEXT:    s_setpc_b64 s[30:31]2219  %vec0 = call <4 x i16> asm "; def $0", "=v"()2220  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 0, i32 4>2221  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 42222  ret void2223}2224 2225define void @v_shuffle_v2i16_v4i16__1_4(ptr addrspace(1) inreg %ptr) {2226; GFX900-LABEL: v_shuffle_v2i16_v4i16__1_4:2227; GFX900:       ; %bb.0:2228; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2229; GFX900-NEXT:    ;;#ASMSTART2230; GFX900-NEXT:    ; def v[0:1]2231; GFX900-NEXT:    ;;#ASMEND2232; GFX900-NEXT:    v_mov_b32_e32 v2, 02233; GFX900-NEXT:    v_alignbit_b32 v0, s4, v0, 162234; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]2235; GFX900-NEXT:    s_waitcnt vmcnt(0)2236; GFX900-NEXT:    s_setpc_b64 s[30:31]2237;2238; GFX90A-LABEL: v_shuffle_v2i16_v4i16__1_4:2239; GFX90A:       ; %bb.0:2240; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2241; GFX90A-NEXT:    ;;#ASMSTART2242; GFX90A-NEXT:    ; def v[0:1]2243; GFX90A-NEXT:    ;;#ASMEND2244; GFX90A-NEXT:    v_mov_b32_e32 v2, 02245; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v0, 162246; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]2247; GFX90A-NEXT:    s_waitcnt vmcnt(0)2248; GFX90A-NEXT:    s_setpc_b64 s[30:31]2249;2250; GFX942-LABEL: v_shuffle_v2i16_v4i16__1_4:2251; GFX942:       ; %bb.0:2252; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2253; GFX942-NEXT:    ;;#ASMSTART2254; GFX942-NEXT:    ; def v[0:1]2255; GFX942-NEXT:    ;;#ASMEND2256; GFX942-NEXT:    v_mov_b32_e32 v2, 02257; GFX942-NEXT:    v_alignbit_b32 v0, s0, v0, 162258; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]2259; GFX942-NEXT:    s_waitcnt vmcnt(0)2260; GFX942-NEXT:    s_setpc_b64 s[30:31]2261  %vec0 = call <4 x i16> asm "; def $0", "=v"()2262  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 4>2263  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 42264  ret void2265}2266 2267define void @v_shuffle_v2i16_v4i16__2_4(ptr addrspace(1) inreg %ptr) {2268; GFX900-LABEL: v_shuffle_v2i16_v4i16__2_4:2269; GFX900:       ; %bb.0:2270; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2271; GFX900-NEXT:    v_mov_b32_e32 v2, 02272; GFX900-NEXT:    ;;#ASMSTART2273; GFX900-NEXT:    ; def v[0:1]2274; GFX900-NEXT:    ;;#ASMEND2275; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]2276; GFX900-NEXT:    s_waitcnt vmcnt(0)2277; GFX900-NEXT:    s_setpc_b64 s[30:31]2278;2279; GFX90A-LABEL: v_shuffle_v2i16_v4i16__2_4:2280; GFX90A:       ; %bb.0:2281; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2282; GFX90A-NEXT:    v_mov_b32_e32 v2, 02283; GFX90A-NEXT:    ;;#ASMSTART2284; GFX90A-NEXT:    ; def v[0:1]2285; GFX90A-NEXT:    ;;#ASMEND2286; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]2287; GFX90A-NEXT:    s_waitcnt vmcnt(0)2288; GFX90A-NEXT:    s_setpc_b64 s[30:31]2289;2290; GFX942-LABEL: v_shuffle_v2i16_v4i16__2_4:2291; GFX942:       ; %bb.0:2292; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2293; GFX942-NEXT:    v_mov_b32_e32 v2, 02294; GFX942-NEXT:    ;;#ASMSTART2295; GFX942-NEXT:    ; def v[0:1]2296; GFX942-NEXT:    ;;#ASMEND2297; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]2298; GFX942-NEXT:    s_waitcnt vmcnt(0)2299; GFX942-NEXT:    s_setpc_b64 s[30:31]2300  %vec0 = call <4 x i16> asm "; def $0", "=v"()2301  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 4>2302  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 42303  ret void2304}2305 2306define void @v_shuffle_v2i16_v4i16__3_4(ptr addrspace(1) inreg %ptr) {2307; GFX900-LABEL: v_shuffle_v2i16_v4i16__3_4:2308; GFX900:       ; %bb.0:2309; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2310; GFX900-NEXT:    ;;#ASMSTART2311; GFX900-NEXT:    ; def v[0:1]2312; GFX900-NEXT:    ;;#ASMEND2313; GFX900-NEXT:    v_mov_b32_e32 v2, 02314; GFX900-NEXT:    v_alignbit_b32 v0, s4, v1, 162315; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]2316; GFX900-NEXT:    s_waitcnt vmcnt(0)2317; GFX900-NEXT:    s_setpc_b64 s[30:31]2318;2319; GFX90A-LABEL: v_shuffle_v2i16_v4i16__3_4:2320; GFX90A:       ; %bb.0:2321; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2322; GFX90A-NEXT:    ;;#ASMSTART2323; GFX90A-NEXT:    ; def v[0:1]2324; GFX90A-NEXT:    ;;#ASMEND2325; GFX90A-NEXT:    v_mov_b32_e32 v2, 02326; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v1, 162327; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]2328; GFX90A-NEXT:    s_waitcnt vmcnt(0)2329; GFX90A-NEXT:    s_setpc_b64 s[30:31]2330;2331; GFX942-LABEL: v_shuffle_v2i16_v4i16__3_4:2332; GFX942:       ; %bb.0:2333; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2334; GFX942-NEXT:    ;;#ASMSTART2335; GFX942-NEXT:    ; def v[0:1]2336; GFX942-NEXT:    ;;#ASMEND2337; GFX942-NEXT:    v_mov_b32_e32 v2, 02338; GFX942-NEXT:    v_alignbit_b32 v0, s0, v1, 162339; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]2340; GFX942-NEXT:    s_waitcnt vmcnt(0)2341; GFX942-NEXT:    s_setpc_b64 s[30:31]2342  %vec0 = call <4 x i16> asm "; def $0", "=v"()2343  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 4>2344  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 42345  ret void2346}2347 2348define void @v_shuffle_v2i16_v4i16__4_4(ptr addrspace(1) inreg %ptr) {2349; GFX9-LABEL: v_shuffle_v2i16_v4i16__4_4:2350; GFX9:       ; %bb.0:2351; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2352; GFX9-NEXT:    s_setpc_b64 s[30:31]2353  %vec0 = call <4 x i16> asm "; def $0", "=v"()2354  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 4>2355  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 42356  ret void2357}2358 2359define void @v_shuffle_v2i16_v4i16__5_4(ptr addrspace(1) inreg %ptr) {2360; GFX900-LABEL: v_shuffle_v2i16_v4i16__5_4:2361; GFX900:       ; %bb.0:2362; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2363; GFX900-NEXT:    ;;#ASMSTART2364; GFX900-NEXT:    ; def v[0:1]2365; GFX900-NEXT:    ;;#ASMEND2366; GFX900-NEXT:    v_mov_b32_e32 v2, 02367; GFX900-NEXT:    v_alignbit_b32 v0, v0, v0, 162368; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]2369; GFX900-NEXT:    s_waitcnt vmcnt(0)2370; GFX900-NEXT:    s_setpc_b64 s[30:31]2371;2372; GFX90A-LABEL: v_shuffle_v2i16_v4i16__5_4:2373; GFX90A:       ; %bb.0:2374; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2375; GFX90A-NEXT:    ;;#ASMSTART2376; GFX90A-NEXT:    ; def v[0:1]2377; GFX90A-NEXT:    ;;#ASMEND2378; GFX90A-NEXT:    v_mov_b32_e32 v2, 02379; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v0, 162380; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]2381; GFX90A-NEXT:    s_waitcnt vmcnt(0)2382; GFX90A-NEXT:    s_setpc_b64 s[30:31]2383;2384; GFX942-LABEL: v_shuffle_v2i16_v4i16__5_4:2385; GFX942:       ; %bb.0:2386; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2387; GFX942-NEXT:    ;;#ASMSTART2388; GFX942-NEXT:    ; def v[0:1]2389; GFX942-NEXT:    ;;#ASMEND2390; GFX942-NEXT:    v_mov_b32_e32 v2, 02391; GFX942-NEXT:    v_alignbit_b32 v0, v0, v0, 162392; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]2393; GFX942-NEXT:    s_waitcnt vmcnt(0)2394; GFX942-NEXT:    s_setpc_b64 s[30:31]2395  %vec0 = call <4 x i16> asm "; def $0", "=v"()2396  %vec1 = call <4 x i16> asm "; def $0", "=v"()2397  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 4>2398  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 42399  ret void2400}2401 2402define void @v_shuffle_v2i16_v4i16__6_4(ptr addrspace(1) inreg %ptr) {2403; GFX900-LABEL: v_shuffle_v2i16_v4i16__6_4:2404; GFX900:       ; %bb.0:2405; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2406; GFX900-NEXT:    ;;#ASMSTART2407; GFX900-NEXT:    ; def v[0:1]2408; GFX900-NEXT:    ;;#ASMEND2409; GFX900-NEXT:    s_mov_b32 s4, 0x50401002410; GFX900-NEXT:    v_mov_b32_e32 v2, 02411; GFX900-NEXT:    v_perm_b32 v0, v0, v1, s42412; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]2413; GFX900-NEXT:    s_waitcnt vmcnt(0)2414; GFX900-NEXT:    s_setpc_b64 s[30:31]2415;2416; GFX90A-LABEL: v_shuffle_v2i16_v4i16__6_4:2417; GFX90A:       ; %bb.0:2418; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2419; GFX90A-NEXT:    ;;#ASMSTART2420; GFX90A-NEXT:    ; def v[0:1]2421; GFX90A-NEXT:    ;;#ASMEND2422; GFX90A-NEXT:    s_mov_b32 s4, 0x50401002423; GFX90A-NEXT:    v_mov_b32_e32 v2, 02424; GFX90A-NEXT:    v_perm_b32 v0, v0, v1, s42425; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]2426; GFX90A-NEXT:    s_waitcnt vmcnt(0)2427; GFX90A-NEXT:    s_setpc_b64 s[30:31]2428;2429; GFX942-LABEL: v_shuffle_v2i16_v4i16__6_4:2430; GFX942:       ; %bb.0:2431; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2432; GFX942-NEXT:    ;;#ASMSTART2433; GFX942-NEXT:    ; def v[0:1]2434; GFX942-NEXT:    ;;#ASMEND2435; GFX942-NEXT:    s_mov_b32 s2, 0x50401002436; GFX942-NEXT:    v_mov_b32_e32 v2, 02437; GFX942-NEXT:    v_perm_b32 v0, v0, v1, s22438; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]2439; GFX942-NEXT:    s_waitcnt vmcnt(0)2440; GFX942-NEXT:    s_setpc_b64 s[30:31]2441  %vec0 = call <4 x i16> asm "; def $0", "=v"()2442  %vec1 = call <4 x i16> asm "; def $0", "=v"()2443  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 4>2444  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 42445  ret void2446}2447 2448define void @v_shuffle_v2i16_v4i16__u_5(ptr addrspace(1) inreg %ptr) {2449; GFX900-LABEL: v_shuffle_v2i16_v4i16__u_5:2450; GFX900:       ; %bb.0:2451; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2452; GFX900-NEXT:    v_mov_b32_e32 v2, 02453; GFX900-NEXT:    ;;#ASMSTART2454; GFX900-NEXT:    ; def v[0:1]2455; GFX900-NEXT:    ;;#ASMEND2456; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]2457; GFX900-NEXT:    s_waitcnt vmcnt(0)2458; GFX900-NEXT:    s_setpc_b64 s[30:31]2459;2460; GFX90A-LABEL: v_shuffle_v2i16_v4i16__u_5:2461; GFX90A:       ; %bb.0:2462; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2463; GFX90A-NEXT:    v_mov_b32_e32 v2, 02464; GFX90A-NEXT:    ;;#ASMSTART2465; GFX90A-NEXT:    ; def v[0:1]2466; GFX90A-NEXT:    ;;#ASMEND2467; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]2468; GFX90A-NEXT:    s_waitcnt vmcnt(0)2469; GFX90A-NEXT:    s_setpc_b64 s[30:31]2470;2471; GFX942-LABEL: v_shuffle_v2i16_v4i16__u_5:2472; GFX942:       ; %bb.0:2473; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2474; GFX942-NEXT:    v_mov_b32_e32 v2, 02475; GFX942-NEXT:    ;;#ASMSTART2476; GFX942-NEXT:    ; def v[0:1]2477; GFX942-NEXT:    ;;#ASMEND2478; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]2479; GFX942-NEXT:    s_waitcnt vmcnt(0)2480; GFX942-NEXT:    s_setpc_b64 s[30:31]2481  %vec0 = call <4 x i16> asm "; def $0", "=v"()2482  %vec1 = call <4 x i16> asm "; def $0", "=v"()2483  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 poison, i32 5>2484  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 42485  ret void2486}2487 2488define void @v_shuffle_v2i16_v4i16__0_5(ptr addrspace(1) inreg %ptr) {2489; GFX900-LABEL: v_shuffle_v2i16_v4i16__0_5:2490; GFX900:       ; %bb.0:2491; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2492; GFX900-NEXT:    ;;#ASMSTART2493; GFX900-NEXT:    ; def v[0:1]2494; GFX900-NEXT:    ;;#ASMEND2495; GFX900-NEXT:    s_mov_b32 s4, 0xffff2496; GFX900-NEXT:    v_mov_b32_e32 v3, 02497; GFX900-NEXT:    ;;#ASMSTART2498; GFX900-NEXT:    ; def v[1:2]2499; GFX900-NEXT:    ;;#ASMEND2500; GFX900-NEXT:    v_bfi_b32 v0, s4, v0, v12501; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]2502; GFX900-NEXT:    s_waitcnt vmcnt(0)2503; GFX900-NEXT:    s_setpc_b64 s[30:31]2504;2505; GFX90A-LABEL: v_shuffle_v2i16_v4i16__0_5:2506; GFX90A:       ; %bb.0:2507; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2508; GFX90A-NEXT:    ;;#ASMSTART2509; GFX90A-NEXT:    ; def v[0:1]2510; GFX90A-NEXT:    ;;#ASMEND2511; GFX90A-NEXT:    s_mov_b32 s4, 0xffff2512; GFX90A-NEXT:    v_mov_b32_e32 v4, 02513; GFX90A-NEXT:    ;;#ASMSTART2514; GFX90A-NEXT:    ; def v[2:3]2515; GFX90A-NEXT:    ;;#ASMEND2516; GFX90A-NEXT:    v_bfi_b32 v0, s4, v0, v22517; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]2518; GFX90A-NEXT:    s_waitcnt vmcnt(0)2519; GFX90A-NEXT:    s_setpc_b64 s[30:31]2520;2521; GFX942-LABEL: v_shuffle_v2i16_v4i16__0_5:2522; GFX942:       ; %bb.0:2523; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2524; GFX942-NEXT:    ;;#ASMSTART2525; GFX942-NEXT:    ; def v[0:1]2526; GFX942-NEXT:    ;;#ASMEND2527; GFX942-NEXT:    s_mov_b32 s2, 0xffff2528; GFX942-NEXT:    v_mov_b32_e32 v4, 02529; GFX942-NEXT:    ;;#ASMSTART2530; GFX942-NEXT:    ; def v[2:3]2531; GFX942-NEXT:    ;;#ASMEND2532; GFX942-NEXT:    s_nop 02533; GFX942-NEXT:    v_bfi_b32 v0, s2, v0, v22534; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]2535; GFX942-NEXT:    s_waitcnt vmcnt(0)2536; GFX942-NEXT:    s_setpc_b64 s[30:31]2537  %vec0 = call <4 x i16> asm "; def $0", "=v"()2538  %vec1 = call <4 x i16> asm "; def $0", "=v"()2539  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 0, i32 5>2540  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 42541  ret void2542}2543 2544define void @v_shuffle_v2i16_v4i16__1_5(ptr addrspace(1) inreg %ptr) {2545; GFX900-LABEL: v_shuffle_v2i16_v4i16__1_5:2546; GFX900:       ; %bb.0:2547; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2548; GFX900-NEXT:    ;;#ASMSTART2549; GFX900-NEXT:    ; def v[0:1]2550; GFX900-NEXT:    ;;#ASMEND2551; GFX900-NEXT:    s_mov_b32 s4, 0x70603022552; GFX900-NEXT:    v_mov_b32_e32 v3, 02553; GFX900-NEXT:    ;;#ASMSTART2554; GFX900-NEXT:    ; def v[1:2]2555; GFX900-NEXT:    ;;#ASMEND2556; GFX900-NEXT:    v_perm_b32 v0, v1, v0, s42557; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]2558; GFX900-NEXT:    s_waitcnt vmcnt(0)2559; GFX900-NEXT:    s_setpc_b64 s[30:31]2560;2561; GFX90A-LABEL: v_shuffle_v2i16_v4i16__1_5:2562; GFX90A:       ; %bb.0:2563; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2564; GFX90A-NEXT:    ;;#ASMSTART2565; GFX90A-NEXT:    ; def v[0:1]2566; GFX90A-NEXT:    ;;#ASMEND2567; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022568; GFX90A-NEXT:    v_mov_b32_e32 v4, 02569; GFX90A-NEXT:    ;;#ASMSTART2570; GFX90A-NEXT:    ; def v[2:3]2571; GFX90A-NEXT:    ;;#ASMEND2572; GFX90A-NEXT:    v_perm_b32 v0, v2, v0, s42573; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]2574; GFX90A-NEXT:    s_waitcnt vmcnt(0)2575; GFX90A-NEXT:    s_setpc_b64 s[30:31]2576;2577; GFX942-LABEL: v_shuffle_v2i16_v4i16__1_5:2578; GFX942:       ; %bb.0:2579; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2580; GFX942-NEXT:    ;;#ASMSTART2581; GFX942-NEXT:    ; def v[0:1]2582; GFX942-NEXT:    ;;#ASMEND2583; GFX942-NEXT:    s_mov_b32 s2, 0x70603022584; GFX942-NEXT:    v_mov_b32_e32 v4, 02585; GFX942-NEXT:    ;;#ASMSTART2586; GFX942-NEXT:    ; def v[2:3]2587; GFX942-NEXT:    ;;#ASMEND2588; GFX942-NEXT:    s_nop 02589; GFX942-NEXT:    v_perm_b32 v0, v2, v0, s22590; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]2591; GFX942-NEXT:    s_waitcnt vmcnt(0)2592; GFX942-NEXT:    s_setpc_b64 s[30:31]2593  %vec0 = call <4 x i16> asm "; def $0", "=v"()2594  %vec1 = call <4 x i16> asm "; def $0", "=v"()2595  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 1, i32 5>2596  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 42597  ret void2598}2599 2600define void @v_shuffle_v2i16_v4i16__2_5(ptr addrspace(1) inreg %ptr) {2601; GFX900-LABEL: v_shuffle_v2i16_v4i16__2_5:2602; GFX900:       ; %bb.0:2603; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2604; GFX900-NEXT:    ;;#ASMSTART2605; GFX900-NEXT:    ; def v[0:1]2606; GFX900-NEXT:    ;;#ASMEND2607; GFX900-NEXT:    s_mov_b32 s4, 0xffff2608; GFX900-NEXT:    v_mov_b32_e32 v4, 02609; GFX900-NEXT:    ;;#ASMSTART2610; GFX900-NEXT:    ; def v[2:3]2611; GFX900-NEXT:    ;;#ASMEND2612; GFX900-NEXT:    v_bfi_b32 v0, s4, v1, v22613; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]2614; GFX900-NEXT:    s_waitcnt vmcnt(0)2615; GFX900-NEXT:    s_setpc_b64 s[30:31]2616;2617; GFX90A-LABEL: v_shuffle_v2i16_v4i16__2_5:2618; GFX90A:       ; %bb.0:2619; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2620; GFX90A-NEXT:    ;;#ASMSTART2621; GFX90A-NEXT:    ; def v[0:1]2622; GFX90A-NEXT:    ;;#ASMEND2623; GFX90A-NEXT:    s_mov_b32 s4, 0xffff2624; GFX90A-NEXT:    v_mov_b32_e32 v4, 02625; GFX90A-NEXT:    ;;#ASMSTART2626; GFX90A-NEXT:    ; def v[2:3]2627; GFX90A-NEXT:    ;;#ASMEND2628; GFX90A-NEXT:    v_bfi_b32 v0, s4, v1, v22629; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]2630; GFX90A-NEXT:    s_waitcnt vmcnt(0)2631; GFX90A-NEXT:    s_setpc_b64 s[30:31]2632;2633; GFX942-LABEL: v_shuffle_v2i16_v4i16__2_5:2634; GFX942:       ; %bb.0:2635; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2636; GFX942-NEXT:    ;;#ASMSTART2637; GFX942-NEXT:    ; def v[0:1]2638; GFX942-NEXT:    ;;#ASMEND2639; GFX942-NEXT:    s_mov_b32 s2, 0xffff2640; GFX942-NEXT:    v_mov_b32_e32 v4, 02641; GFX942-NEXT:    ;;#ASMSTART2642; GFX942-NEXT:    ; def v[2:3]2643; GFX942-NEXT:    ;;#ASMEND2644; GFX942-NEXT:    s_nop 02645; GFX942-NEXT:    v_bfi_b32 v0, s2, v1, v22646; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]2647; GFX942-NEXT:    s_waitcnt vmcnt(0)2648; GFX942-NEXT:    s_setpc_b64 s[30:31]2649  %vec0 = call <4 x i16> asm "; def $0", "=v"()2650  %vec1 = call <4 x i16> asm "; def $0", "=v"()2651  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 2, i32 5>2652  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 42653  ret void2654}2655 2656define void @v_shuffle_v2i16_v4i16__3_5(ptr addrspace(1) inreg %ptr) {2657; GFX900-LABEL: v_shuffle_v2i16_v4i16__3_5:2658; GFX900:       ; %bb.0:2659; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2660; GFX900-NEXT:    ;;#ASMSTART2661; GFX900-NEXT:    ; def v[0:1]2662; GFX900-NEXT:    ;;#ASMEND2663; GFX900-NEXT:    s_mov_b32 s4, 0x70603022664; GFX900-NEXT:    v_mov_b32_e32 v4, 02665; GFX900-NEXT:    ;;#ASMSTART2666; GFX900-NEXT:    ; def v[2:3]2667; GFX900-NEXT:    ;;#ASMEND2668; GFX900-NEXT:    v_perm_b32 v0, v2, v1, s42669; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]2670; GFX900-NEXT:    s_waitcnt vmcnt(0)2671; GFX900-NEXT:    s_setpc_b64 s[30:31]2672;2673; GFX90A-LABEL: v_shuffle_v2i16_v4i16__3_5:2674; GFX90A:       ; %bb.0:2675; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2676; GFX90A-NEXT:    ;;#ASMSTART2677; GFX90A-NEXT:    ; def v[0:1]2678; GFX90A-NEXT:    ;;#ASMEND2679; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022680; GFX90A-NEXT:    v_mov_b32_e32 v4, 02681; GFX90A-NEXT:    ;;#ASMSTART2682; GFX90A-NEXT:    ; def v[2:3]2683; GFX90A-NEXT:    ;;#ASMEND2684; GFX90A-NEXT:    v_perm_b32 v0, v2, v1, s42685; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]2686; GFX90A-NEXT:    s_waitcnt vmcnt(0)2687; GFX90A-NEXT:    s_setpc_b64 s[30:31]2688;2689; GFX942-LABEL: v_shuffle_v2i16_v4i16__3_5:2690; GFX942:       ; %bb.0:2691; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2692; GFX942-NEXT:    ;;#ASMSTART2693; GFX942-NEXT:    ; def v[0:1]2694; GFX942-NEXT:    ;;#ASMEND2695; GFX942-NEXT:    s_mov_b32 s2, 0x70603022696; GFX942-NEXT:    v_mov_b32_e32 v4, 02697; GFX942-NEXT:    ;;#ASMSTART2698; GFX942-NEXT:    ; def v[2:3]2699; GFX942-NEXT:    ;;#ASMEND2700; GFX942-NEXT:    s_nop 02701; GFX942-NEXT:    v_perm_b32 v0, v2, v1, s22702; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]2703; GFX942-NEXT:    s_waitcnt vmcnt(0)2704; GFX942-NEXT:    s_setpc_b64 s[30:31]2705  %vec0 = call <4 x i16> asm "; def $0", "=v"()2706  %vec1 = call <4 x i16> asm "; def $0", "=v"()2707  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 3, i32 5>2708  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 42709  ret void2710}2711 2712define void @v_shuffle_v2i16_v4i16__4_5(ptr addrspace(1) inreg %ptr) {2713; GFX900-LABEL: v_shuffle_v2i16_v4i16__4_5:2714; GFX900:       ; %bb.0:2715; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2716; GFX900-NEXT:    v_mov_b32_e32 v2, 02717; GFX900-NEXT:    ;;#ASMSTART2718; GFX900-NEXT:    ; def v[0:1]2719; GFX900-NEXT:    ;;#ASMEND2720; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]2721; GFX900-NEXT:    s_waitcnt vmcnt(0)2722; GFX900-NEXT:    s_setpc_b64 s[30:31]2723;2724; GFX90A-LABEL: v_shuffle_v2i16_v4i16__4_5:2725; GFX90A:       ; %bb.0:2726; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2727; GFX90A-NEXT:    v_mov_b32_e32 v2, 02728; GFX90A-NEXT:    ;;#ASMSTART2729; GFX90A-NEXT:    ; def v[0:1]2730; GFX90A-NEXT:    ;;#ASMEND2731; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]2732; GFX90A-NEXT:    s_waitcnt vmcnt(0)2733; GFX90A-NEXT:    s_setpc_b64 s[30:31]2734;2735; GFX942-LABEL: v_shuffle_v2i16_v4i16__4_5:2736; GFX942:       ; %bb.0:2737; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2738; GFX942-NEXT:    v_mov_b32_e32 v2, 02739; GFX942-NEXT:    ;;#ASMSTART2740; GFX942-NEXT:    ; def v[0:1]2741; GFX942-NEXT:    ;;#ASMEND2742; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]2743; GFX942-NEXT:    s_waitcnt vmcnt(0)2744; GFX942-NEXT:    s_setpc_b64 s[30:31]2745  %vec0 = call <4 x i16> asm "; def $0", "=v"()2746  %vec1 = call <4 x i16> asm "; def $0", "=v"()2747  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 4, i32 5>2748  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 42749  ret void2750}2751 2752define void @v_shuffle_v2i16_v4i16__5_5(ptr addrspace(1) inreg %ptr) {2753; GFX900-LABEL: v_shuffle_v2i16_v4i16__5_5:2754; GFX900:       ; %bb.0:2755; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2756; GFX900-NEXT:    ;;#ASMSTART2757; GFX900-NEXT:    ; def v[0:1]2758; GFX900-NEXT:    ;;#ASMEND2759; GFX900-NEXT:    s_mov_b32 s4, 0x70603022760; GFX900-NEXT:    v_mov_b32_e32 v2, 02761; GFX900-NEXT:    v_perm_b32 v0, v0, v0, s42762; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]2763; GFX900-NEXT:    s_waitcnt vmcnt(0)2764; GFX900-NEXT:    s_setpc_b64 s[30:31]2765;2766; GFX90A-LABEL: v_shuffle_v2i16_v4i16__5_5:2767; GFX90A:       ; %bb.0:2768; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2769; GFX90A-NEXT:    ;;#ASMSTART2770; GFX90A-NEXT:    ; def v[0:1]2771; GFX90A-NEXT:    ;;#ASMEND2772; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022773; GFX90A-NEXT:    v_mov_b32_e32 v2, 02774; GFX90A-NEXT:    v_perm_b32 v0, v0, v0, s42775; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]2776; GFX90A-NEXT:    s_waitcnt vmcnt(0)2777; GFX90A-NEXT:    s_setpc_b64 s[30:31]2778;2779; GFX942-LABEL: v_shuffle_v2i16_v4i16__5_5:2780; GFX942:       ; %bb.0:2781; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2782; GFX942-NEXT:    ;;#ASMSTART2783; GFX942-NEXT:    ; def v[0:1]2784; GFX942-NEXT:    ;;#ASMEND2785; GFX942-NEXT:    s_mov_b32 s2, 0x70603022786; GFX942-NEXT:    v_mov_b32_e32 v2, 02787; GFX942-NEXT:    v_perm_b32 v0, v0, v0, s22788; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]2789; GFX942-NEXT:    s_waitcnt vmcnt(0)2790; GFX942-NEXT:    s_setpc_b64 s[30:31]2791  %vec0 = call <4 x i16> asm "; def $0", "=v"()2792  %vec1 = call <4 x i16> asm "; def $0", "=v"()2793  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 5>2794  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 42795  ret void2796}2797 2798define void @v_shuffle_v2i16_v4i16__6_5(ptr addrspace(1) inreg %ptr) {2799; GFX900-LABEL: v_shuffle_v2i16_v4i16__6_5:2800; GFX900:       ; %bb.0:2801; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2802; GFX900-NEXT:    ;;#ASMSTART2803; GFX900-NEXT:    ; def v[0:1]2804; GFX900-NEXT:    ;;#ASMEND2805; GFX900-NEXT:    s_mov_b32 s4, 0xffff2806; GFX900-NEXT:    v_mov_b32_e32 v2, 02807; GFX900-NEXT:    v_bfi_b32 v0, s4, v1, v02808; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]2809; GFX900-NEXT:    s_waitcnt vmcnt(0)2810; GFX900-NEXT:    s_setpc_b64 s[30:31]2811;2812; GFX90A-LABEL: v_shuffle_v2i16_v4i16__6_5:2813; GFX90A:       ; %bb.0:2814; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2815; GFX90A-NEXT:    ;;#ASMSTART2816; GFX90A-NEXT:    ; def v[0:1]2817; GFX90A-NEXT:    ;;#ASMEND2818; GFX90A-NEXT:    s_mov_b32 s4, 0xffff2819; GFX90A-NEXT:    v_mov_b32_e32 v2, 02820; GFX90A-NEXT:    v_bfi_b32 v0, s4, v1, v02821; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]2822; GFX90A-NEXT:    s_waitcnt vmcnt(0)2823; GFX90A-NEXT:    s_setpc_b64 s[30:31]2824;2825; GFX942-LABEL: v_shuffle_v2i16_v4i16__6_5:2826; GFX942:       ; %bb.0:2827; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2828; GFX942-NEXT:    ;;#ASMSTART2829; GFX942-NEXT:    ; def v[0:1]2830; GFX942-NEXT:    ;;#ASMEND2831; GFX942-NEXT:    s_mov_b32 s2, 0xffff2832; GFX942-NEXT:    v_mov_b32_e32 v2, 02833; GFX942-NEXT:    v_bfi_b32 v0, s2, v1, v02834; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]2835; GFX942-NEXT:    s_waitcnt vmcnt(0)2836; GFX942-NEXT:    s_setpc_b64 s[30:31]2837  %vec0 = call <4 x i16> asm "; def $0", "=v"()2838  %vec1 = call <4 x i16> asm "; def $0", "=v"()2839  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 5>2840  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 42841  ret void2842}2843 2844define void @v_shuffle_v2i16_v4i16__u_6(ptr addrspace(1) inreg %ptr) {2845; GFX900-LABEL: v_shuffle_v2i16_v4i16__u_6:2846; GFX900:       ; %bb.0:2847; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2848; GFX900-NEXT:    ;;#ASMSTART2849; GFX900-NEXT:    ; def v[0:1]2850; GFX900-NEXT:    ;;#ASMEND2851; GFX900-NEXT:    v_mov_b32_e32 v2, 02852; GFX900-NEXT:    v_lshlrev_b32_e32 v0, 16, v12853; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]2854; GFX900-NEXT:    s_waitcnt vmcnt(0)2855; GFX900-NEXT:    s_setpc_b64 s[30:31]2856;2857; GFX90A-LABEL: v_shuffle_v2i16_v4i16__u_6:2858; GFX90A:       ; %bb.0:2859; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2860; GFX90A-NEXT:    ;;#ASMSTART2861; GFX90A-NEXT:    ; def v[0:1]2862; GFX90A-NEXT:    ;;#ASMEND2863; GFX90A-NEXT:    v_mov_b32_e32 v2, 02864; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 16, v12865; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]2866; GFX90A-NEXT:    s_waitcnt vmcnt(0)2867; GFX90A-NEXT:    s_setpc_b64 s[30:31]2868;2869; GFX942-LABEL: v_shuffle_v2i16_v4i16__u_6:2870; GFX942:       ; %bb.0:2871; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2872; GFX942-NEXT:    ;;#ASMSTART2873; GFX942-NEXT:    ; def v[0:1]2874; GFX942-NEXT:    ;;#ASMEND2875; GFX942-NEXT:    v_mov_b32_e32 v2, 02876; GFX942-NEXT:    v_lshlrev_b32_e32 v0, 16, v12877; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]2878; GFX942-NEXT:    s_waitcnt vmcnt(0)2879; GFX942-NEXT:    s_setpc_b64 s[30:31]2880  %vec0 = call <4 x i16> asm "; def $0", "=v"()2881  %vec1 = call <4 x i16> asm "; def $0", "=v"()2882  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 poison, i32 6>2883  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 42884  ret void2885}2886 2887define void @v_shuffle_v2i16_v4i16__0_6(ptr addrspace(1) inreg %ptr) {2888; GFX900-LABEL: v_shuffle_v2i16_v4i16__0_6:2889; GFX900:       ; %bb.0:2890; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2891; GFX900-NEXT:    ;;#ASMSTART2892; GFX900-NEXT:    ; def v[0:1]2893; GFX900-NEXT:    ;;#ASMEND2894; GFX900-NEXT:    s_mov_b32 s4, 0x50401002895; GFX900-NEXT:    v_mov_b32_e32 v3, 02896; GFX900-NEXT:    ;;#ASMSTART2897; GFX900-NEXT:    ; def v[1:2]2898; GFX900-NEXT:    ;;#ASMEND2899; GFX900-NEXT:    v_perm_b32 v0, v2, v0, s42900; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]2901; GFX900-NEXT:    s_waitcnt vmcnt(0)2902; GFX900-NEXT:    s_setpc_b64 s[30:31]2903;2904; GFX90A-LABEL: v_shuffle_v2i16_v4i16__0_6:2905; GFX90A:       ; %bb.0:2906; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2907; GFX90A-NEXT:    ;;#ASMSTART2908; GFX90A-NEXT:    ; def v[0:1]2909; GFX90A-NEXT:    ;;#ASMEND2910; GFX90A-NEXT:    s_mov_b32 s4, 0x50401002911; GFX90A-NEXT:    v_mov_b32_e32 v4, 02912; GFX90A-NEXT:    ;;#ASMSTART2913; GFX90A-NEXT:    ; def v[2:3]2914; GFX90A-NEXT:    ;;#ASMEND2915; GFX90A-NEXT:    v_perm_b32 v0, v3, v0, s42916; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]2917; GFX90A-NEXT:    s_waitcnt vmcnt(0)2918; GFX90A-NEXT:    s_setpc_b64 s[30:31]2919;2920; GFX942-LABEL: v_shuffle_v2i16_v4i16__0_6:2921; GFX942:       ; %bb.0:2922; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2923; GFX942-NEXT:    ;;#ASMSTART2924; GFX942-NEXT:    ; def v[0:1]2925; GFX942-NEXT:    ;;#ASMEND2926; GFX942-NEXT:    s_mov_b32 s2, 0x50401002927; GFX942-NEXT:    v_mov_b32_e32 v4, 02928; GFX942-NEXT:    ;;#ASMSTART2929; GFX942-NEXT:    ; def v[2:3]2930; GFX942-NEXT:    ;;#ASMEND2931; GFX942-NEXT:    s_nop 02932; GFX942-NEXT:    v_perm_b32 v0, v3, v0, s22933; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]2934; GFX942-NEXT:    s_waitcnt vmcnt(0)2935; GFX942-NEXT:    s_setpc_b64 s[30:31]2936  %vec0 = call <4 x i16> asm "; def $0", "=v"()2937  %vec1 = call <4 x i16> asm "; def $0", "=v"()2938  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 0, i32 6>2939  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 42940  ret void2941}2942 2943define void @v_shuffle_v2i16_v4i16__1_6(ptr addrspace(1) inreg %ptr) {2944; GFX900-LABEL: v_shuffle_v2i16_v4i16__1_6:2945; GFX900:       ; %bb.0:2946; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2947; GFX900-NEXT:    ;;#ASMSTART2948; GFX900-NEXT:    ; def v[0:1]2949; GFX900-NEXT:    ;;#ASMEND2950; GFX900-NEXT:    v_mov_b32_e32 v3, 02951; GFX900-NEXT:    ;;#ASMSTART2952; GFX900-NEXT:    ; def v[1:2]2953; GFX900-NEXT:    ;;#ASMEND2954; GFX900-NEXT:    v_alignbit_b32 v0, v2, v0, 162955; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]2956; GFX900-NEXT:    s_waitcnt vmcnt(0)2957; GFX900-NEXT:    s_setpc_b64 s[30:31]2958;2959; GFX90A-LABEL: v_shuffle_v2i16_v4i16__1_6:2960; GFX90A:       ; %bb.0:2961; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2962; GFX90A-NEXT:    ;;#ASMSTART2963; GFX90A-NEXT:    ; def v[0:1]2964; GFX90A-NEXT:    ;;#ASMEND2965; GFX90A-NEXT:    v_mov_b32_e32 v4, 02966; GFX90A-NEXT:    ;;#ASMSTART2967; GFX90A-NEXT:    ; def v[2:3]2968; GFX90A-NEXT:    ;;#ASMEND2969; GFX90A-NEXT:    v_alignbit_b32 v0, v3, v0, 162970; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]2971; GFX90A-NEXT:    s_waitcnt vmcnt(0)2972; GFX90A-NEXT:    s_setpc_b64 s[30:31]2973;2974; GFX942-LABEL: v_shuffle_v2i16_v4i16__1_6:2975; GFX942:       ; %bb.0:2976; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2977; GFX942-NEXT:    ;;#ASMSTART2978; GFX942-NEXT:    ; def v[0:1]2979; GFX942-NEXT:    ;;#ASMEND2980; GFX942-NEXT:    v_mov_b32_e32 v4, 02981; GFX942-NEXT:    ;;#ASMSTART2982; GFX942-NEXT:    ; def v[2:3]2983; GFX942-NEXT:    ;;#ASMEND2984; GFX942-NEXT:    s_nop 02985; GFX942-NEXT:    v_alignbit_b32 v0, v3, v0, 162986; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]2987; GFX942-NEXT:    s_waitcnt vmcnt(0)2988; GFX942-NEXT:    s_setpc_b64 s[30:31]2989  %vec0 = call <4 x i16> asm "; def $0", "=v"()2990  %vec1 = call <4 x i16> asm "; def $0", "=v"()2991  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 1, i32 6>2992  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 42993  ret void2994}2995 2996define void @v_shuffle_v2i16_v4i16__2_6(ptr addrspace(1) inreg %ptr) {2997; GFX900-LABEL: v_shuffle_v2i16_v4i16__2_6:2998; GFX900:       ; %bb.0:2999; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3000; GFX900-NEXT:    ;;#ASMSTART3001; GFX900-NEXT:    ; def v[0:1]3002; GFX900-NEXT:    ;;#ASMEND3003; GFX900-NEXT:    s_mov_b32 s4, 0x50401003004; GFX900-NEXT:    v_mov_b32_e32 v4, 03005; GFX900-NEXT:    ;;#ASMSTART3006; GFX900-NEXT:    ; def v[2:3]3007; GFX900-NEXT:    ;;#ASMEND3008; GFX900-NEXT:    v_perm_b32 v0, v3, v1, s43009; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]3010; GFX900-NEXT:    s_waitcnt vmcnt(0)3011; GFX900-NEXT:    s_setpc_b64 s[30:31]3012;3013; GFX90A-LABEL: v_shuffle_v2i16_v4i16__2_6:3014; GFX90A:       ; %bb.0:3015; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3016; GFX90A-NEXT:    ;;#ASMSTART3017; GFX90A-NEXT:    ; def v[0:1]3018; GFX90A-NEXT:    ;;#ASMEND3019; GFX90A-NEXT:    s_mov_b32 s4, 0x50401003020; GFX90A-NEXT:    v_mov_b32_e32 v4, 03021; GFX90A-NEXT:    ;;#ASMSTART3022; GFX90A-NEXT:    ; def v[2:3]3023; GFX90A-NEXT:    ;;#ASMEND3024; GFX90A-NEXT:    v_perm_b32 v0, v3, v1, s43025; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]3026; GFX90A-NEXT:    s_waitcnt vmcnt(0)3027; GFX90A-NEXT:    s_setpc_b64 s[30:31]3028;3029; GFX942-LABEL: v_shuffle_v2i16_v4i16__2_6:3030; GFX942:       ; %bb.0:3031; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3032; GFX942-NEXT:    ;;#ASMSTART3033; GFX942-NEXT:    ; def v[0:1]3034; GFX942-NEXT:    ;;#ASMEND3035; GFX942-NEXT:    s_mov_b32 s2, 0x50401003036; GFX942-NEXT:    v_mov_b32_e32 v4, 03037; GFX942-NEXT:    ;;#ASMSTART3038; GFX942-NEXT:    ; def v[2:3]3039; GFX942-NEXT:    ;;#ASMEND3040; GFX942-NEXT:    s_nop 03041; GFX942-NEXT:    v_perm_b32 v0, v3, v1, s23042; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]3043; GFX942-NEXT:    s_waitcnt vmcnt(0)3044; GFX942-NEXT:    s_setpc_b64 s[30:31]3045  %vec0 = call <4 x i16> asm "; def $0", "=v"()3046  %vec1 = call <4 x i16> asm "; def $0", "=v"()3047  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 2, i32 6>3048  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 43049  ret void3050}3051 3052define void @v_shuffle_v2i16_v4i16__3_6(ptr addrspace(1) inreg %ptr) {3053; GFX900-LABEL: v_shuffle_v2i16_v4i16__3_6:3054; GFX900:       ; %bb.0:3055; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3056; GFX900-NEXT:    ;;#ASMSTART3057; GFX900-NEXT:    ; def v[0:1]3058; GFX900-NEXT:    ;;#ASMEND3059; GFX900-NEXT:    v_mov_b32_e32 v4, 03060; GFX900-NEXT:    ;;#ASMSTART3061; GFX900-NEXT:    ; def v[2:3]3062; GFX900-NEXT:    ;;#ASMEND3063; GFX900-NEXT:    v_alignbit_b32 v0, v3, v1, 163064; GFX900-NEXT:    global_store_dword v4, 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_v2i16_v4i16__3_6:3069; GFX90A:       ; %bb.0:3070; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3071; GFX90A-NEXT:    ;;#ASMSTART3072; GFX90A-NEXT:    ; def v[0:1]3073; GFX90A-NEXT:    ;;#ASMEND3074; GFX90A-NEXT:    v_mov_b32_e32 v4, 03075; GFX90A-NEXT:    ;;#ASMSTART3076; GFX90A-NEXT:    ; def v[2:3]3077; GFX90A-NEXT:    ;;#ASMEND3078; GFX90A-NEXT:    v_alignbit_b32 v0, v3, v1, 163079; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]3080; GFX90A-NEXT:    s_waitcnt vmcnt(0)3081; GFX90A-NEXT:    s_setpc_b64 s[30:31]3082;3083; GFX942-LABEL: v_shuffle_v2i16_v4i16__3_6:3084; GFX942:       ; %bb.0:3085; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3086; GFX942-NEXT:    ;;#ASMSTART3087; GFX942-NEXT:    ; def v[0:1]3088; GFX942-NEXT:    ;;#ASMEND3089; GFX942-NEXT:    v_mov_b32_e32 v4, 03090; GFX942-NEXT:    ;;#ASMSTART3091; GFX942-NEXT:    ; def v[2:3]3092; GFX942-NEXT:    ;;#ASMEND3093; GFX942-NEXT:    s_nop 03094; GFX942-NEXT:    v_alignbit_b32 v0, v3, v1, 163095; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]3096; GFX942-NEXT:    s_waitcnt vmcnt(0)3097; GFX942-NEXT:    s_setpc_b64 s[30:31]3098  %vec0 = call <4 x i16> asm "; def $0", "=v"()3099  %vec1 = call <4 x i16> asm "; def $0", "=v"()3100  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 3, i32 6>3101  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 43102  ret void3103}3104 3105define void @v_shuffle_v2i16_v4i16__4_6(ptr addrspace(1) inreg %ptr) {3106; GFX900-LABEL: v_shuffle_v2i16_v4i16__4_6:3107; GFX900:       ; %bb.0:3108; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3109; GFX900-NEXT:    ;;#ASMSTART3110; GFX900-NEXT:    ; def v[0:1]3111; GFX900-NEXT:    ;;#ASMEND3112; GFX900-NEXT:    s_mov_b32 s4, 0x50401003113; GFX900-NEXT:    v_mov_b32_e32 v2, 03114; GFX900-NEXT:    v_perm_b32 v0, v1, v0, s43115; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]3116; GFX900-NEXT:    s_waitcnt vmcnt(0)3117; GFX900-NEXT:    s_setpc_b64 s[30:31]3118;3119; GFX90A-LABEL: v_shuffle_v2i16_v4i16__4_6:3120; GFX90A:       ; %bb.0:3121; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3122; GFX90A-NEXT:    ;;#ASMSTART3123; GFX90A-NEXT:    ; def v[0:1]3124; GFX90A-NEXT:    ;;#ASMEND3125; GFX90A-NEXT:    s_mov_b32 s4, 0x50401003126; GFX90A-NEXT:    v_mov_b32_e32 v2, 03127; GFX90A-NEXT:    v_perm_b32 v0, v1, v0, s43128; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]3129; GFX90A-NEXT:    s_waitcnt vmcnt(0)3130; GFX90A-NEXT:    s_setpc_b64 s[30:31]3131;3132; GFX942-LABEL: v_shuffle_v2i16_v4i16__4_6:3133; GFX942:       ; %bb.0:3134; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3135; GFX942-NEXT:    ;;#ASMSTART3136; GFX942-NEXT:    ; def v[0:1]3137; GFX942-NEXT:    ;;#ASMEND3138; GFX942-NEXT:    s_mov_b32 s2, 0x50401003139; GFX942-NEXT:    v_mov_b32_e32 v2, 03140; GFX942-NEXT:    v_perm_b32 v0, v1, v0, s23141; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]3142; GFX942-NEXT:    s_waitcnt vmcnt(0)3143; GFX942-NEXT:    s_setpc_b64 s[30:31]3144  %vec0 = call <4 x i16> asm "; def $0", "=v"()3145  %vec1 = call <4 x i16> asm "; def $0", "=v"()3146  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 4, i32 6>3147  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 43148  ret void3149}3150 3151define void @v_shuffle_v2i16_v4i16__5_6(ptr addrspace(1) inreg %ptr) {3152; GFX900-LABEL: v_shuffle_v2i16_v4i16__5_6:3153; GFX900:       ; %bb.0:3154; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3155; GFX900-NEXT:    ;;#ASMSTART3156; GFX900-NEXT:    ; def v[0:1]3157; GFX900-NEXT:    ;;#ASMEND3158; GFX900-NEXT:    v_mov_b32_e32 v2, 03159; GFX900-NEXT:    v_alignbit_b32 v0, v1, v0, 163160; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]3161; GFX900-NEXT:    s_waitcnt vmcnt(0)3162; GFX900-NEXT:    s_setpc_b64 s[30:31]3163;3164; GFX90A-LABEL: v_shuffle_v2i16_v4i16__5_6:3165; GFX90A:       ; %bb.0:3166; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3167; GFX90A-NEXT:    ;;#ASMSTART3168; GFX90A-NEXT:    ; def v[0:1]3169; GFX90A-NEXT:    ;;#ASMEND3170; GFX90A-NEXT:    v_mov_b32_e32 v2, 03171; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v0, 163172; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]3173; GFX90A-NEXT:    s_waitcnt vmcnt(0)3174; GFX90A-NEXT:    s_setpc_b64 s[30:31]3175;3176; GFX942-LABEL: v_shuffle_v2i16_v4i16__5_6:3177; GFX942:       ; %bb.0:3178; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3179; GFX942-NEXT:    ;;#ASMSTART3180; GFX942-NEXT:    ; def v[0:1]3181; GFX942-NEXT:    ;;#ASMEND3182; GFX942-NEXT:    v_mov_b32_e32 v2, 03183; GFX942-NEXT:    v_alignbit_b32 v0, v1, v0, 163184; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]3185; GFX942-NEXT:    s_waitcnt vmcnt(0)3186; GFX942-NEXT:    s_setpc_b64 s[30:31]3187  %vec0 = call <4 x i16> asm "; def $0", "=v"()3188  %vec1 = call <4 x i16> asm "; def $0", "=v"()3189  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 6>3190  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 43191  ret void3192}3193 3194define void @v_shuffle_v2i16_v4i16__6_6(ptr addrspace(1) inreg %ptr) {3195; GFX900-LABEL: v_shuffle_v2i16_v4i16__6_6:3196; GFX900:       ; %bb.0:3197; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3198; GFX900-NEXT:    ;;#ASMSTART3199; GFX900-NEXT:    ; def v[0:1]3200; GFX900-NEXT:    ;;#ASMEND3201; GFX900-NEXT:    s_mov_b32 s4, 0x50401003202; GFX900-NEXT:    v_mov_b32_e32 v2, 03203; GFX900-NEXT:    v_perm_b32 v0, v1, v1, s43204; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]3205; GFX900-NEXT:    s_waitcnt vmcnt(0)3206; GFX900-NEXT:    s_setpc_b64 s[30:31]3207;3208; GFX90A-LABEL: v_shuffle_v2i16_v4i16__6_6:3209; GFX90A:       ; %bb.0:3210; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3211; GFX90A-NEXT:    ;;#ASMSTART3212; GFX90A-NEXT:    ; def v[0:1]3213; GFX90A-NEXT:    ;;#ASMEND3214; GFX90A-NEXT:    s_mov_b32 s4, 0x50401003215; GFX90A-NEXT:    v_mov_b32_e32 v2, 03216; GFX90A-NEXT:    v_perm_b32 v0, v1, v1, s43217; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]3218; GFX90A-NEXT:    s_waitcnt vmcnt(0)3219; GFX90A-NEXT:    s_setpc_b64 s[30:31]3220;3221; GFX942-LABEL: v_shuffle_v2i16_v4i16__6_6:3222; GFX942:       ; %bb.0:3223; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3224; GFX942-NEXT:    ;;#ASMSTART3225; GFX942-NEXT:    ; def v[0:1]3226; GFX942-NEXT:    ;;#ASMEND3227; GFX942-NEXT:    s_mov_b32 s2, 0x50401003228; GFX942-NEXT:    v_mov_b32_e32 v2, 03229; GFX942-NEXT:    v_perm_b32 v0, v1, v1, s23230; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]3231; GFX942-NEXT:    s_waitcnt vmcnt(0)3232; GFX942-NEXT:    s_setpc_b64 s[30:31]3233  %vec0 = call <4 x i16> asm "; def $0", "=v"()3234  %vec1 = call <4 x i16> asm "; def $0", "=v"()3235  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 6>3236  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 43237  ret void3238}3239 3240define void @v_shuffle_v2i16_v4i16__u_7(ptr addrspace(1) inreg %ptr) {3241; GFX900-LABEL: v_shuffle_v2i16_v4i16__u_7:3242; GFX900:       ; %bb.0:3243; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3244; GFX900-NEXT:    v_mov_b32_e32 v2, 03245; GFX900-NEXT:    ;;#ASMSTART3246; GFX900-NEXT:    ; def v[0:1]3247; GFX900-NEXT:    ;;#ASMEND3248; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]3249; GFX900-NEXT:    s_waitcnt vmcnt(0)3250; GFX900-NEXT:    s_setpc_b64 s[30:31]3251;3252; GFX90A-LABEL: v_shuffle_v2i16_v4i16__u_7:3253; GFX90A:       ; %bb.0:3254; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3255; GFX90A-NEXT:    v_mov_b32_e32 v2, 03256; GFX90A-NEXT:    ;;#ASMSTART3257; GFX90A-NEXT:    ; def v[0:1]3258; GFX90A-NEXT:    ;;#ASMEND3259; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]3260; GFX90A-NEXT:    s_waitcnt vmcnt(0)3261; GFX90A-NEXT:    s_setpc_b64 s[30:31]3262;3263; GFX942-LABEL: v_shuffle_v2i16_v4i16__u_7:3264; GFX942:       ; %bb.0:3265; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3266; GFX942-NEXT:    v_mov_b32_e32 v2, 03267; GFX942-NEXT:    ;;#ASMSTART3268; GFX942-NEXT:    ; def v[0:1]3269; GFX942-NEXT:    ;;#ASMEND3270; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]3271; GFX942-NEXT:    s_waitcnt vmcnt(0)3272; GFX942-NEXT:    s_setpc_b64 s[30:31]3273  %vec0 = call <4 x i16> asm "; def $0", "=v"()3274  %vec1 = call <4 x i16> asm "; def $0", "=v"()3275  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 poison, i32 7>3276  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 43277  ret void3278}3279 3280define void @v_shuffle_v2i16_v4i16__0_7(ptr addrspace(1) inreg %ptr) {3281; GFX900-LABEL: v_shuffle_v2i16_v4i16__0_7:3282; GFX900:       ; %bb.0:3283; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3284; GFX900-NEXT:    ;;#ASMSTART3285; GFX900-NEXT:    ; def v[0:1]3286; GFX900-NEXT:    ;;#ASMEND3287; GFX900-NEXT:    s_mov_b32 s4, 0xffff3288; GFX900-NEXT:    v_mov_b32_e32 v3, 03289; GFX900-NEXT:    ;;#ASMSTART3290; GFX900-NEXT:    ; def v[1:2]3291; GFX900-NEXT:    ;;#ASMEND3292; GFX900-NEXT:    v_bfi_b32 v0, s4, v0, v23293; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]3294; GFX900-NEXT:    s_waitcnt vmcnt(0)3295; GFX900-NEXT:    s_setpc_b64 s[30:31]3296;3297; GFX90A-LABEL: v_shuffle_v2i16_v4i16__0_7:3298; GFX90A:       ; %bb.0:3299; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3300; GFX90A-NEXT:    ;;#ASMSTART3301; GFX90A-NEXT:    ; def v[0:1]3302; GFX90A-NEXT:    ;;#ASMEND3303; GFX90A-NEXT:    s_mov_b32 s4, 0xffff3304; GFX90A-NEXT:    v_mov_b32_e32 v4, 03305; GFX90A-NEXT:    ;;#ASMSTART3306; GFX90A-NEXT:    ; def v[2:3]3307; GFX90A-NEXT:    ;;#ASMEND3308; GFX90A-NEXT:    v_bfi_b32 v0, s4, v0, v33309; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]3310; GFX90A-NEXT:    s_waitcnt vmcnt(0)3311; GFX90A-NEXT:    s_setpc_b64 s[30:31]3312;3313; GFX942-LABEL: v_shuffle_v2i16_v4i16__0_7:3314; GFX942:       ; %bb.0:3315; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3316; GFX942-NEXT:    ;;#ASMSTART3317; GFX942-NEXT:    ; def v[0:1]3318; GFX942-NEXT:    ;;#ASMEND3319; GFX942-NEXT:    s_mov_b32 s2, 0xffff3320; GFX942-NEXT:    v_mov_b32_e32 v4, 03321; GFX942-NEXT:    ;;#ASMSTART3322; GFX942-NEXT:    ; def v[2:3]3323; GFX942-NEXT:    ;;#ASMEND3324; GFX942-NEXT:    s_nop 03325; GFX942-NEXT:    v_bfi_b32 v0, s2, v0, v33326; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]3327; GFX942-NEXT:    s_waitcnt vmcnt(0)3328; GFX942-NEXT:    s_setpc_b64 s[30:31]3329  %vec0 = call <4 x i16> asm "; def $0", "=v"()3330  %vec1 = call <4 x i16> asm "; def $0", "=v"()3331  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 0, i32 7>3332  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 43333  ret void3334}3335 3336define void @v_shuffle_v2i16_v4i16__1_7(ptr addrspace(1) inreg %ptr) {3337; GFX900-LABEL: v_shuffle_v2i16_v4i16__1_7:3338; GFX900:       ; %bb.0:3339; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3340; GFX900-NEXT:    ;;#ASMSTART3341; GFX900-NEXT:    ; def v[0:1]3342; GFX900-NEXT:    ;;#ASMEND3343; GFX900-NEXT:    s_mov_b32 s4, 0x70603023344; GFX900-NEXT:    v_mov_b32_e32 v3, 03345; GFX900-NEXT:    ;;#ASMSTART3346; GFX900-NEXT:    ; def v[1:2]3347; GFX900-NEXT:    ;;#ASMEND3348; GFX900-NEXT:    v_perm_b32 v0, v2, v0, s43349; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]3350; GFX900-NEXT:    s_waitcnt vmcnt(0)3351; GFX900-NEXT:    s_setpc_b64 s[30:31]3352;3353; GFX90A-LABEL: v_shuffle_v2i16_v4i16__1_7:3354; GFX90A:       ; %bb.0:3355; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3356; GFX90A-NEXT:    ;;#ASMSTART3357; GFX90A-NEXT:    ; def v[0:1]3358; GFX90A-NEXT:    ;;#ASMEND3359; GFX90A-NEXT:    s_mov_b32 s4, 0x70603023360; GFX90A-NEXT:    v_mov_b32_e32 v4, 03361; GFX90A-NEXT:    ;;#ASMSTART3362; GFX90A-NEXT:    ; def v[2:3]3363; GFX90A-NEXT:    ;;#ASMEND3364; GFX90A-NEXT:    v_perm_b32 v0, v3, v0, s43365; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]3366; GFX90A-NEXT:    s_waitcnt vmcnt(0)3367; GFX90A-NEXT:    s_setpc_b64 s[30:31]3368;3369; GFX942-LABEL: v_shuffle_v2i16_v4i16__1_7:3370; GFX942:       ; %bb.0:3371; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3372; GFX942-NEXT:    ;;#ASMSTART3373; GFX942-NEXT:    ; def v[0:1]3374; GFX942-NEXT:    ;;#ASMEND3375; GFX942-NEXT:    s_mov_b32 s2, 0x70603023376; GFX942-NEXT:    v_mov_b32_e32 v4, 03377; GFX942-NEXT:    ;;#ASMSTART3378; GFX942-NEXT:    ; def v[2:3]3379; GFX942-NEXT:    ;;#ASMEND3380; GFX942-NEXT:    s_nop 03381; GFX942-NEXT:    v_perm_b32 v0, v3, v0, s23382; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]3383; GFX942-NEXT:    s_waitcnt vmcnt(0)3384; GFX942-NEXT:    s_setpc_b64 s[30:31]3385  %vec0 = call <4 x i16> asm "; def $0", "=v"()3386  %vec1 = call <4 x i16> asm "; def $0", "=v"()3387  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 1, i32 7>3388  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 43389  ret void3390}3391 3392define void @v_shuffle_v2i16_v4i16__2_7(ptr addrspace(1) inreg %ptr) {3393; GFX900-LABEL: v_shuffle_v2i16_v4i16__2_7:3394; GFX900:       ; %bb.0:3395; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3396; GFX900-NEXT:    ;;#ASMSTART3397; GFX900-NEXT:    ; def v[0:1]3398; GFX900-NEXT:    ;;#ASMEND3399; GFX900-NEXT:    s_mov_b32 s4, 0xffff3400; GFX900-NEXT:    v_mov_b32_e32 v4, 03401; GFX900-NEXT:    ;;#ASMSTART3402; GFX900-NEXT:    ; def v[2:3]3403; GFX900-NEXT:    ;;#ASMEND3404; GFX900-NEXT:    v_bfi_b32 v0, s4, v1, v33405; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]3406; GFX900-NEXT:    s_waitcnt vmcnt(0)3407; GFX900-NEXT:    s_setpc_b64 s[30:31]3408;3409; GFX90A-LABEL: v_shuffle_v2i16_v4i16__2_7:3410; GFX90A:       ; %bb.0:3411; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3412; GFX90A-NEXT:    ;;#ASMSTART3413; GFX90A-NEXT:    ; def v[0:1]3414; GFX90A-NEXT:    ;;#ASMEND3415; GFX90A-NEXT:    s_mov_b32 s4, 0xffff3416; GFX90A-NEXT:    v_mov_b32_e32 v4, 03417; GFX90A-NEXT:    ;;#ASMSTART3418; GFX90A-NEXT:    ; def v[2:3]3419; GFX90A-NEXT:    ;;#ASMEND3420; GFX90A-NEXT:    v_bfi_b32 v0, s4, v1, v33421; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]3422; GFX90A-NEXT:    s_waitcnt vmcnt(0)3423; GFX90A-NEXT:    s_setpc_b64 s[30:31]3424;3425; GFX942-LABEL: v_shuffle_v2i16_v4i16__2_7:3426; GFX942:       ; %bb.0:3427; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3428; GFX942-NEXT:    ;;#ASMSTART3429; GFX942-NEXT:    ; def v[0:1]3430; GFX942-NEXT:    ;;#ASMEND3431; GFX942-NEXT:    s_mov_b32 s2, 0xffff3432; GFX942-NEXT:    v_mov_b32_e32 v4, 03433; GFX942-NEXT:    ;;#ASMSTART3434; GFX942-NEXT:    ; def v[2:3]3435; GFX942-NEXT:    ;;#ASMEND3436; GFX942-NEXT:    s_nop 03437; GFX942-NEXT:    v_bfi_b32 v0, s2, v1, v33438; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]3439; GFX942-NEXT:    s_waitcnt vmcnt(0)3440; GFX942-NEXT:    s_setpc_b64 s[30:31]3441  %vec0 = call <4 x i16> asm "; def $0", "=v"()3442  %vec1 = call <4 x i16> asm "; def $0", "=v"()3443  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 2, i32 7>3444  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 43445  ret void3446}3447 3448define void @v_shuffle_v2i16_v4i16__3_7(ptr addrspace(1) inreg %ptr) {3449; GFX900-LABEL: v_shuffle_v2i16_v4i16__3_7:3450; GFX900:       ; %bb.0:3451; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3452; GFX900-NEXT:    ;;#ASMSTART3453; GFX900-NEXT:    ; def v[0:1]3454; GFX900-NEXT:    ;;#ASMEND3455; GFX900-NEXT:    s_mov_b32 s4, 0x70603023456; GFX900-NEXT:    v_mov_b32_e32 v4, 03457; GFX900-NEXT:    ;;#ASMSTART3458; GFX900-NEXT:    ; def v[2:3]3459; GFX900-NEXT:    ;;#ASMEND3460; GFX900-NEXT:    v_perm_b32 v0, v3, v1, s43461; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]3462; GFX900-NEXT:    s_waitcnt vmcnt(0)3463; GFX900-NEXT:    s_setpc_b64 s[30:31]3464;3465; GFX90A-LABEL: v_shuffle_v2i16_v4i16__3_7:3466; GFX90A:       ; %bb.0:3467; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3468; GFX90A-NEXT:    ;;#ASMSTART3469; GFX90A-NEXT:    ; def v[0:1]3470; GFX90A-NEXT:    ;;#ASMEND3471; GFX90A-NEXT:    s_mov_b32 s4, 0x70603023472; GFX90A-NEXT:    v_mov_b32_e32 v4, 03473; GFX90A-NEXT:    ;;#ASMSTART3474; GFX90A-NEXT:    ; def v[2:3]3475; GFX90A-NEXT:    ;;#ASMEND3476; GFX90A-NEXT:    v_perm_b32 v0, v3, v1, s43477; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]3478; GFX90A-NEXT:    s_waitcnt vmcnt(0)3479; GFX90A-NEXT:    s_setpc_b64 s[30:31]3480;3481; GFX942-LABEL: v_shuffle_v2i16_v4i16__3_7:3482; GFX942:       ; %bb.0:3483; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3484; GFX942-NEXT:    ;;#ASMSTART3485; GFX942-NEXT:    ; def v[0:1]3486; GFX942-NEXT:    ;;#ASMEND3487; GFX942-NEXT:    s_mov_b32 s2, 0x70603023488; GFX942-NEXT:    v_mov_b32_e32 v4, 03489; GFX942-NEXT:    ;;#ASMSTART3490; GFX942-NEXT:    ; def v[2:3]3491; GFX942-NEXT:    ;;#ASMEND3492; GFX942-NEXT:    s_nop 03493; GFX942-NEXT:    v_perm_b32 v0, v3, v1, s23494; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]3495; GFX942-NEXT:    s_waitcnt vmcnt(0)3496; GFX942-NEXT:    s_setpc_b64 s[30:31]3497  %vec0 = call <4 x i16> asm "; def $0", "=v"()3498  %vec1 = call <4 x i16> asm "; def $0", "=v"()3499  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 3, i32 7>3500  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 43501  ret void3502}3503 3504define void @v_shuffle_v2i16_v4i16__4_7(ptr addrspace(1) inreg %ptr) {3505; GFX900-LABEL: v_shuffle_v2i16_v4i16__4_7:3506; GFX900:       ; %bb.0:3507; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3508; GFX900-NEXT:    ;;#ASMSTART3509; GFX900-NEXT:    ; def v[0:1]3510; GFX900-NEXT:    ;;#ASMEND3511; GFX900-NEXT:    s_mov_b32 s4, 0xffff3512; GFX900-NEXT:    v_mov_b32_e32 v2, 03513; GFX900-NEXT:    v_bfi_b32 v0, s4, v0, v13514; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]3515; GFX900-NEXT:    s_waitcnt vmcnt(0)3516; GFX900-NEXT:    s_setpc_b64 s[30:31]3517;3518; GFX90A-LABEL: v_shuffle_v2i16_v4i16__4_7:3519; GFX90A:       ; %bb.0:3520; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3521; GFX90A-NEXT:    ;;#ASMSTART3522; GFX90A-NEXT:    ; def v[0:1]3523; GFX90A-NEXT:    ;;#ASMEND3524; GFX90A-NEXT:    s_mov_b32 s4, 0xffff3525; GFX90A-NEXT:    v_mov_b32_e32 v2, 03526; GFX90A-NEXT:    v_bfi_b32 v0, s4, v0, v13527; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]3528; GFX90A-NEXT:    s_waitcnt vmcnt(0)3529; GFX90A-NEXT:    s_setpc_b64 s[30:31]3530;3531; GFX942-LABEL: v_shuffle_v2i16_v4i16__4_7:3532; GFX942:       ; %bb.0:3533; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3534; GFX942-NEXT:    ;;#ASMSTART3535; GFX942-NEXT:    ; def v[0:1]3536; GFX942-NEXT:    ;;#ASMEND3537; GFX942-NEXT:    s_mov_b32 s2, 0xffff3538; GFX942-NEXT:    v_mov_b32_e32 v2, 03539; GFX942-NEXT:    v_bfi_b32 v0, s2, v0, v13540; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]3541; GFX942-NEXT:    s_waitcnt vmcnt(0)3542; GFX942-NEXT:    s_setpc_b64 s[30:31]3543  %vec0 = call <4 x i16> asm "; def $0", "=v"()3544  %vec1 = call <4 x i16> asm "; def $0", "=v"()3545  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 4, i32 7>3546  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 43547  ret void3548}3549 3550define void @v_shuffle_v2i16_v4i16__5_7(ptr addrspace(1) inreg %ptr) {3551; GFX900-LABEL: v_shuffle_v2i16_v4i16__5_7:3552; GFX900:       ; %bb.0:3553; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3554; GFX900-NEXT:    ;;#ASMSTART3555; GFX900-NEXT:    ; def v[0:1]3556; GFX900-NEXT:    ;;#ASMEND3557; GFX900-NEXT:    s_mov_b32 s4, 0x70603023558; GFX900-NEXT:    v_mov_b32_e32 v2, 03559; GFX900-NEXT:    v_perm_b32 v0, v1, v0, s43560; GFX900-NEXT:    global_store_dword v2, 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_v2i16_v4i16__5_7:3565; GFX90A:       ; %bb.0:3566; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3567; GFX90A-NEXT:    ;;#ASMSTART3568; GFX90A-NEXT:    ; def v[0:1]3569; GFX90A-NEXT:    ;;#ASMEND3570; GFX90A-NEXT:    s_mov_b32 s4, 0x70603023571; GFX90A-NEXT:    v_mov_b32_e32 v2, 03572; GFX90A-NEXT:    v_perm_b32 v0, v1, v0, s43573; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]3574; GFX90A-NEXT:    s_waitcnt vmcnt(0)3575; GFX90A-NEXT:    s_setpc_b64 s[30:31]3576;3577; GFX942-LABEL: v_shuffle_v2i16_v4i16__5_7:3578; GFX942:       ; %bb.0:3579; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3580; GFX942-NEXT:    ;;#ASMSTART3581; GFX942-NEXT:    ; def v[0:1]3582; GFX942-NEXT:    ;;#ASMEND3583; GFX942-NEXT:    s_mov_b32 s2, 0x70603023584; GFX942-NEXT:    v_mov_b32_e32 v2, 03585; GFX942-NEXT:    v_perm_b32 v0, v1, v0, s23586; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]3587; GFX942-NEXT:    s_waitcnt vmcnt(0)3588; GFX942-NEXT:    s_setpc_b64 s[30:31]3589  %vec0 = call <4 x i16> asm "; def $0", "=v"()3590  %vec1 = call <4 x i16> asm "; def $0", "=v"()3591  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 7>3592  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 43593  ret void3594}3595 3596define void @v_shuffle_v2i16_v4i16__6_7(ptr addrspace(1) inreg %ptr) {3597; GFX900-LABEL: v_shuffle_v2i16_v4i16__6_7:3598; GFX900:       ; %bb.0:3599; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3600; GFX900-NEXT:    v_mov_b32_e32 v2, 03601; GFX900-NEXT:    ;;#ASMSTART3602; GFX900-NEXT:    ; def v[0:1]3603; GFX900-NEXT:    ;;#ASMEND3604; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]3605; GFX900-NEXT:    s_waitcnt vmcnt(0)3606; GFX900-NEXT:    s_setpc_b64 s[30:31]3607;3608; GFX90A-LABEL: v_shuffle_v2i16_v4i16__6_7:3609; GFX90A:       ; %bb.0:3610; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3611; GFX90A-NEXT:    v_mov_b32_e32 v2, 03612; GFX90A-NEXT:    ;;#ASMSTART3613; GFX90A-NEXT:    ; def v[0:1]3614; GFX90A-NEXT:    ;;#ASMEND3615; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]3616; GFX90A-NEXT:    s_waitcnt vmcnt(0)3617; GFX90A-NEXT:    s_setpc_b64 s[30:31]3618;3619; GFX942-LABEL: v_shuffle_v2i16_v4i16__6_7:3620; GFX942:       ; %bb.0:3621; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3622; GFX942-NEXT:    v_mov_b32_e32 v2, 03623; GFX942-NEXT:    ;;#ASMSTART3624; GFX942-NEXT:    ; def v[0:1]3625; GFX942-NEXT:    ;;#ASMEND3626; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]3627; GFX942-NEXT:    s_waitcnt vmcnt(0)3628; GFX942-NEXT:    s_setpc_b64 s[30:31]3629  %vec0 = call <4 x i16> asm "; def $0", "=v"()3630  %vec1 = call <4 x i16> asm "; def $0", "=v"()3631  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 7>3632  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 43633  ret void3634}3635 3636define void @s_shuffle_v2i16_v4i16__u_u() {3637; GFX9-LABEL: s_shuffle_v2i16_v4i16__u_u:3638; GFX9:       ; %bb.0:3639; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3640; GFX9-NEXT:    ;;#ASMSTART3641; GFX9-NEXT:    ; use s83642; GFX9-NEXT:    ;;#ASMEND3643; GFX9-NEXT:    s_setpc_b64 s[30:31]3644  %vec0 = call <4 x i16> asm "; def $0", "=s"()3645  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> poison3646  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3647  ret void3648}3649 3650define void @s_shuffle_v2i16_v4i16__0_u() {3651; GFX900-LABEL: s_shuffle_v2i16_v4i16__0_u:3652; GFX900:       ; %bb.0:3653; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3654; GFX900-NEXT:    ;;#ASMSTART3655; GFX900-NEXT:    ; def s[8:9]3656; GFX900-NEXT:    ;;#ASMEND3657; GFX900-NEXT:    ;;#ASMSTART3658; GFX900-NEXT:    ; use s83659; GFX900-NEXT:    ;;#ASMEND3660; GFX900-NEXT:    s_setpc_b64 s[30:31]3661;3662; GFX90A-LABEL: s_shuffle_v2i16_v4i16__0_u:3663; GFX90A:       ; %bb.0:3664; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3665; GFX90A-NEXT:    ;;#ASMSTART3666; GFX90A-NEXT:    ; def s[8:9]3667; GFX90A-NEXT:    ;;#ASMEND3668; GFX90A-NEXT:    ;;#ASMSTART3669; GFX90A-NEXT:    ; use s83670; GFX90A-NEXT:    ;;#ASMEND3671; GFX90A-NEXT:    s_setpc_b64 s[30:31]3672;3673; GFX942-LABEL: s_shuffle_v2i16_v4i16__0_u:3674; GFX942:       ; %bb.0:3675; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3676; GFX942-NEXT:    ;;#ASMSTART3677; GFX942-NEXT:    ; def s[8:9]3678; GFX942-NEXT:    ;;#ASMEND3679; GFX942-NEXT:    s_nop 03680; GFX942-NEXT:    ;;#ASMSTART3681; GFX942-NEXT:    ; use s83682; GFX942-NEXT:    ;;#ASMEND3683; GFX942-NEXT:    s_setpc_b64 s[30:31]3684  %vec0 = call <4 x i16> asm "; def $0", "=s"()3685  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 0, i32 poison>3686  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3687  ret void3688}3689 3690define void @s_shuffle_v2i16_v4i16__1_u() {3691; GFX900-LABEL: s_shuffle_v2i16_v4i16__1_u:3692; GFX900:       ; %bb.0:3693; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3694; GFX900-NEXT:    ;;#ASMSTART3695; GFX900-NEXT:    ; def s[4:5]3696; GFX900-NEXT:    ;;#ASMEND3697; GFX900-NEXT:    s_lshr_b32 s8, s4, 163698; GFX900-NEXT:    ;;#ASMSTART3699; GFX900-NEXT:    ; use s83700; GFX900-NEXT:    ;;#ASMEND3701; GFX900-NEXT:    s_setpc_b64 s[30:31]3702;3703; GFX90A-LABEL: s_shuffle_v2i16_v4i16__1_u:3704; GFX90A:       ; %bb.0:3705; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3706; GFX90A-NEXT:    ;;#ASMSTART3707; GFX90A-NEXT:    ; def s[4:5]3708; GFX90A-NEXT:    ;;#ASMEND3709; GFX90A-NEXT:    s_lshr_b32 s8, s4, 163710; GFX90A-NEXT:    ;;#ASMSTART3711; GFX90A-NEXT:    ; use s83712; GFX90A-NEXT:    ;;#ASMEND3713; GFX90A-NEXT:    s_setpc_b64 s[30:31]3714;3715; GFX942-LABEL: s_shuffle_v2i16_v4i16__1_u:3716; GFX942:       ; %bb.0:3717; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3718; GFX942-NEXT:    ;;#ASMSTART3719; GFX942-NEXT:    ; def s[0:1]3720; GFX942-NEXT:    ;;#ASMEND3721; GFX942-NEXT:    s_lshr_b32 s8, s0, 163722; GFX942-NEXT:    ;;#ASMSTART3723; GFX942-NEXT:    ; use s83724; GFX942-NEXT:    ;;#ASMEND3725; GFX942-NEXT:    s_setpc_b64 s[30:31]3726  %vec0 = call <4 x i16> asm "; def $0", "=s"()3727  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 poison>3728  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3729  ret void3730}3731 3732define void @s_shuffle_v2i16_v4i16__2_u() {3733; GFX900-LABEL: s_shuffle_v2i16_v4i16__2_u:3734; GFX900:       ; %bb.0:3735; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3736; GFX900-NEXT:    ;;#ASMSTART3737; GFX900-NEXT:    ; def s[4:5]3738; GFX900-NEXT:    ;;#ASMEND3739; GFX900-NEXT:    s_mov_b32 s8, s53740; GFX900-NEXT:    ;;#ASMSTART3741; GFX900-NEXT:    ; use s83742; GFX900-NEXT:    ;;#ASMEND3743; GFX900-NEXT:    s_setpc_b64 s[30:31]3744;3745; GFX90A-LABEL: s_shuffle_v2i16_v4i16__2_u:3746; GFX90A:       ; %bb.0:3747; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3748; GFX90A-NEXT:    ;;#ASMSTART3749; GFX90A-NEXT:    ; def s[4:5]3750; GFX90A-NEXT:    ;;#ASMEND3751; GFX90A-NEXT:    s_mov_b32 s8, s53752; GFX90A-NEXT:    ;;#ASMSTART3753; GFX90A-NEXT:    ; use s83754; GFX90A-NEXT:    ;;#ASMEND3755; GFX90A-NEXT:    s_setpc_b64 s[30:31]3756;3757; GFX942-LABEL: s_shuffle_v2i16_v4i16__2_u:3758; GFX942:       ; %bb.0:3759; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3760; GFX942-NEXT:    ;;#ASMSTART3761; GFX942-NEXT:    ; def s[0:1]3762; GFX942-NEXT:    ;;#ASMEND3763; GFX942-NEXT:    s_mov_b32 s8, s13764; GFX942-NEXT:    ;;#ASMSTART3765; GFX942-NEXT:    ; use s83766; GFX942-NEXT:    ;;#ASMEND3767; GFX942-NEXT:    s_setpc_b64 s[30:31]3768  %vec0 = call <4 x i16> asm "; def $0", "=s"()3769  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 poison>3770  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3771  ret void3772}3773 3774define void @s_shuffle_v2i16_v4i16__3_u() {3775; GFX900-LABEL: s_shuffle_v2i16_v4i16__3_u:3776; GFX900:       ; %bb.0:3777; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3778; GFX900-NEXT:    ;;#ASMSTART3779; GFX900-NEXT:    ; def s[4:5]3780; GFX900-NEXT:    ;;#ASMEND3781; GFX900-NEXT:    s_lshr_b32 s8, s5, 163782; GFX900-NEXT:    ;;#ASMSTART3783; GFX900-NEXT:    ; use s83784; GFX900-NEXT:    ;;#ASMEND3785; GFX900-NEXT:    s_setpc_b64 s[30:31]3786;3787; GFX90A-LABEL: s_shuffle_v2i16_v4i16__3_u:3788; GFX90A:       ; %bb.0:3789; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3790; GFX90A-NEXT:    ;;#ASMSTART3791; GFX90A-NEXT:    ; def s[4:5]3792; GFX90A-NEXT:    ;;#ASMEND3793; GFX90A-NEXT:    s_lshr_b32 s8, s5, 163794; GFX90A-NEXT:    ;;#ASMSTART3795; GFX90A-NEXT:    ; use s83796; GFX90A-NEXT:    ;;#ASMEND3797; GFX90A-NEXT:    s_setpc_b64 s[30:31]3798;3799; GFX942-LABEL: s_shuffle_v2i16_v4i16__3_u:3800; GFX942:       ; %bb.0:3801; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3802; GFX942-NEXT:    ;;#ASMSTART3803; GFX942-NEXT:    ; def s[0:1]3804; GFX942-NEXT:    ;;#ASMEND3805; GFX942-NEXT:    s_lshr_b32 s8, s1, 163806; GFX942-NEXT:    ;;#ASMSTART3807; GFX942-NEXT:    ; use s83808; GFX942-NEXT:    ;;#ASMEND3809; GFX942-NEXT:    s_setpc_b64 s[30:31]3810  %vec0 = call <4 x i16> asm "; def $0", "=s"()3811  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 poison>3812  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3813  ret void3814}3815 3816define void @s_shuffle_v2i16_v4i16__4_u() {3817; GFX9-LABEL: s_shuffle_v2i16_v4i16__4_u:3818; GFX9:       ; %bb.0:3819; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3820; GFX9-NEXT:    ;;#ASMSTART3821; GFX9-NEXT:    ; use s83822; GFX9-NEXT:    ;;#ASMEND3823; GFX9-NEXT:    s_setpc_b64 s[30:31]3824  %vec0 = call <4 x i16> asm "; def $0", "=s"()3825  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 poison>3826  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3827  ret void3828}3829 3830define void @s_shuffle_v2i16_v4i16__5_u() {3831; GFX900-LABEL: s_shuffle_v2i16_v4i16__5_u:3832; GFX900:       ; %bb.0:3833; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3834; GFX900-NEXT:    ;;#ASMSTART3835; GFX900-NEXT:    ; def s[4:5]3836; GFX900-NEXT:    ;;#ASMEND3837; GFX900-NEXT:    s_lshr_b32 s8, s4, 163838; GFX900-NEXT:    ;;#ASMSTART3839; GFX900-NEXT:    ; use s83840; GFX900-NEXT:    ;;#ASMEND3841; GFX900-NEXT:    s_setpc_b64 s[30:31]3842;3843; GFX90A-LABEL: s_shuffle_v2i16_v4i16__5_u:3844; GFX90A:       ; %bb.0:3845; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3846; GFX90A-NEXT:    ;;#ASMSTART3847; GFX90A-NEXT:    ; def s[4:5]3848; GFX90A-NEXT:    ;;#ASMEND3849; GFX90A-NEXT:    s_lshr_b32 s8, s4, 163850; GFX90A-NEXT:    ;;#ASMSTART3851; GFX90A-NEXT:    ; use s83852; GFX90A-NEXT:    ;;#ASMEND3853; GFX90A-NEXT:    s_setpc_b64 s[30:31]3854;3855; GFX942-LABEL: s_shuffle_v2i16_v4i16__5_u:3856; GFX942:       ; %bb.0:3857; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3858; GFX942-NEXT:    ;;#ASMSTART3859; GFX942-NEXT:    ; def s[0:1]3860; GFX942-NEXT:    ;;#ASMEND3861; GFX942-NEXT:    s_lshr_b32 s8, s0, 163862; GFX942-NEXT:    ;;#ASMSTART3863; GFX942-NEXT:    ; use s83864; GFX942-NEXT:    ;;#ASMEND3865; GFX942-NEXT:    s_setpc_b64 s[30:31]3866  %vec0 = call <4 x i16> asm "; def $0", "=s"()3867  %vec1 = call <4 x i16> asm "; def $0", "=s"()3868  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 poison>3869  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3870  ret void3871}3872 3873define void @s_shuffle_v2i16_v4i16__6_u() {3874; GFX900-LABEL: s_shuffle_v2i16_v4i16__6_u:3875; GFX900:       ; %bb.0:3876; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3877; GFX900-NEXT:    ;;#ASMSTART3878; GFX900-NEXT:    ; def s[4:5]3879; GFX900-NEXT:    ;;#ASMEND3880; GFX900-NEXT:    s_mov_b32 s8, s53881; GFX900-NEXT:    ;;#ASMSTART3882; GFX900-NEXT:    ; use s83883; GFX900-NEXT:    ;;#ASMEND3884; GFX900-NEXT:    s_setpc_b64 s[30:31]3885;3886; GFX90A-LABEL: s_shuffle_v2i16_v4i16__6_u:3887; GFX90A:       ; %bb.0:3888; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3889; GFX90A-NEXT:    ;;#ASMSTART3890; GFX90A-NEXT:    ; def s[4:5]3891; GFX90A-NEXT:    ;;#ASMEND3892; GFX90A-NEXT:    s_mov_b32 s8, s53893; GFX90A-NEXT:    ;;#ASMSTART3894; GFX90A-NEXT:    ; use s83895; GFX90A-NEXT:    ;;#ASMEND3896; GFX90A-NEXT:    s_setpc_b64 s[30:31]3897;3898; GFX942-LABEL: s_shuffle_v2i16_v4i16__6_u:3899; GFX942:       ; %bb.0:3900; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3901; GFX942-NEXT:    ;;#ASMSTART3902; GFX942-NEXT:    ; def s[0:1]3903; GFX942-NEXT:    ;;#ASMEND3904; GFX942-NEXT:    s_mov_b32 s8, s13905; GFX942-NEXT:    ;;#ASMSTART3906; GFX942-NEXT:    ; use s83907; GFX942-NEXT:    ;;#ASMEND3908; GFX942-NEXT:    s_setpc_b64 s[30:31]3909  %vec0 = call <4 x i16> asm "; def $0", "=s"()3910  %vec1 = call <4 x i16> asm "; def $0", "=s"()3911  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 poison>3912  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3913  ret void3914}3915 3916define void @s_shuffle_v2i16_v4i16__7_u() {3917; GFX900-LABEL: s_shuffle_v2i16_v4i16__7_u:3918; GFX900:       ; %bb.0:3919; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3920; GFX900-NEXT:    ;;#ASMSTART3921; GFX900-NEXT:    ; def s[4:5]3922; GFX900-NEXT:    ;;#ASMEND3923; GFX900-NEXT:    s_lshr_b32 s8, s5, 163924; GFX900-NEXT:    ;;#ASMSTART3925; GFX900-NEXT:    ; use s83926; GFX900-NEXT:    ;;#ASMEND3927; GFX900-NEXT:    s_setpc_b64 s[30:31]3928;3929; GFX90A-LABEL: s_shuffle_v2i16_v4i16__7_u:3930; GFX90A:       ; %bb.0:3931; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3932; GFX90A-NEXT:    ;;#ASMSTART3933; GFX90A-NEXT:    ; def s[4:5]3934; GFX90A-NEXT:    ;;#ASMEND3935; GFX90A-NEXT:    s_lshr_b32 s8, s5, 163936; GFX90A-NEXT:    ;;#ASMSTART3937; GFX90A-NEXT:    ; use s83938; GFX90A-NEXT:    ;;#ASMEND3939; GFX90A-NEXT:    s_setpc_b64 s[30:31]3940;3941; GFX942-LABEL: s_shuffle_v2i16_v4i16__7_u:3942; GFX942:       ; %bb.0:3943; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3944; GFX942-NEXT:    ;;#ASMSTART3945; GFX942-NEXT:    ; def s[0:1]3946; GFX942-NEXT:    ;;#ASMEND3947; GFX942-NEXT:    s_lshr_b32 s8, s1, 163948; GFX942-NEXT:    ;;#ASMSTART3949; GFX942-NEXT:    ; use s83950; GFX942-NEXT:    ;;#ASMEND3951; GFX942-NEXT:    s_setpc_b64 s[30:31]3952  %vec0 = call <4 x i16> asm "; def $0", "=s"()3953  %vec1 = call <4 x i16> asm "; def $0", "=s"()3954  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 poison>3955  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)3956  ret void3957}3958 3959define void @s_shuffle_v2i16_v4i16__7_0() {3960; GFX900-LABEL: s_shuffle_v2i16_v4i16__7_0:3961; GFX900:       ; %bb.0:3962; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3963; GFX900-NEXT:    ;;#ASMSTART3964; GFX900-NEXT:    ; def s[4:5]3965; GFX900-NEXT:    ;;#ASMEND3966; GFX900-NEXT:    ;;#ASMSTART3967; GFX900-NEXT:    ; def s[6:7]3968; GFX900-NEXT:    ;;#ASMEND3969; GFX900-NEXT:    s_lshr_b32 s5, s7, 163970; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s43971; GFX900-NEXT:    ;;#ASMSTART3972; GFX900-NEXT:    ; use s83973; GFX900-NEXT:    ;;#ASMEND3974; GFX900-NEXT:    s_setpc_b64 s[30:31]3975;3976; GFX90A-LABEL: s_shuffle_v2i16_v4i16__7_0:3977; GFX90A:       ; %bb.0:3978; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3979; GFX90A-NEXT:    ;;#ASMSTART3980; GFX90A-NEXT:    ; def s[4:5]3981; GFX90A-NEXT:    ;;#ASMEND3982; GFX90A-NEXT:    ;;#ASMSTART3983; GFX90A-NEXT:    ; def s[6:7]3984; GFX90A-NEXT:    ;;#ASMEND3985; GFX90A-NEXT:    s_lshr_b32 s5, s7, 163986; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s43987; GFX90A-NEXT:    ;;#ASMSTART3988; GFX90A-NEXT:    ; use s83989; GFX90A-NEXT:    ;;#ASMEND3990; GFX90A-NEXT:    s_setpc_b64 s[30:31]3991;3992; GFX942-LABEL: s_shuffle_v2i16_v4i16__7_0:3993; GFX942:       ; %bb.0:3994; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3995; GFX942-NEXT:    ;;#ASMSTART3996; GFX942-NEXT:    ; def s[0:1]3997; GFX942-NEXT:    ;;#ASMEND3998; GFX942-NEXT:    ;;#ASMSTART3999; GFX942-NEXT:    ; def s[2:3]4000; GFX942-NEXT:    ;;#ASMEND4001; GFX942-NEXT:    s_lshr_b32 s1, s3, 164002; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s04003; GFX942-NEXT:    ;;#ASMSTART4004; GFX942-NEXT:    ; use s84005; GFX942-NEXT:    ;;#ASMEND4006; GFX942-NEXT:    s_setpc_b64 s[30:31]4007  %vec0 = call <4 x i16> asm "; def $0", "=s"()4008  %vec1 = call <4 x i16> asm "; def $0", "=s"()4009  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 0>4010  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)4011  ret void4012}4013 4014define void @s_shuffle_v2i16_v4i16__7_1() {4015; GFX900-LABEL: s_shuffle_v2i16_v4i16__7_1:4016; GFX900:       ; %bb.0:4017; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4018; GFX900-NEXT:    ;;#ASMSTART4019; GFX900-NEXT:    ; def s[4:5]4020; GFX900-NEXT:    ;;#ASMEND4021; GFX900-NEXT:    ;;#ASMSTART4022; GFX900-NEXT:    ; def s[6:7]4023; GFX900-NEXT:    ;;#ASMEND4024; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s7, s44025; GFX900-NEXT:    ;;#ASMSTART4026; GFX900-NEXT:    ; use s84027; GFX900-NEXT:    ;;#ASMEND4028; GFX900-NEXT:    s_setpc_b64 s[30:31]4029;4030; GFX90A-LABEL: s_shuffle_v2i16_v4i16__7_1:4031; GFX90A:       ; %bb.0:4032; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4033; GFX90A-NEXT:    ;;#ASMSTART4034; GFX90A-NEXT:    ; def s[4:5]4035; GFX90A-NEXT:    ;;#ASMEND4036; GFX90A-NEXT:    ;;#ASMSTART4037; GFX90A-NEXT:    ; def s[6:7]4038; GFX90A-NEXT:    ;;#ASMEND4039; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s7, s44040; GFX90A-NEXT:    ;;#ASMSTART4041; GFX90A-NEXT:    ; use s84042; GFX90A-NEXT:    ;;#ASMEND4043; GFX90A-NEXT:    s_setpc_b64 s[30:31]4044;4045; GFX942-LABEL: s_shuffle_v2i16_v4i16__7_1:4046; GFX942:       ; %bb.0:4047; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4048; GFX942-NEXT:    ;;#ASMSTART4049; GFX942-NEXT:    ; def s[0:1]4050; GFX942-NEXT:    ;;#ASMEND4051; GFX942-NEXT:    ;;#ASMSTART4052; GFX942-NEXT:    ; def s[2:3]4053; GFX942-NEXT:    ;;#ASMEND4054; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s3, s04055; GFX942-NEXT:    ;;#ASMSTART4056; GFX942-NEXT:    ; use s84057; GFX942-NEXT:    ;;#ASMEND4058; GFX942-NEXT:    s_setpc_b64 s[30:31]4059  %vec0 = call <4 x i16> asm "; def $0", "=s"()4060  %vec1 = call <4 x i16> asm "; def $0", "=s"()4061  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 1>4062  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)4063  ret void4064}4065 4066define void @s_shuffle_v2i16_v4i16__7_2() {4067; GFX900-LABEL: s_shuffle_v2i16_v4i16__7_2:4068; GFX900:       ; %bb.0:4069; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4070; GFX900-NEXT:    ;;#ASMSTART4071; GFX900-NEXT:    ; def s[4:5]4072; GFX900-NEXT:    ;;#ASMEND4073; GFX900-NEXT:    ;;#ASMSTART4074; GFX900-NEXT:    ; def s[6:7]4075; GFX900-NEXT:    ;;#ASMEND4076; GFX900-NEXT:    s_lshr_b32 s4, s7, 164077; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s54078; GFX900-NEXT:    ;;#ASMSTART4079; GFX900-NEXT:    ; use s84080; GFX900-NEXT:    ;;#ASMEND4081; GFX900-NEXT:    s_setpc_b64 s[30:31]4082;4083; GFX90A-LABEL: s_shuffle_v2i16_v4i16__7_2:4084; GFX90A:       ; %bb.0:4085; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4086; GFX90A-NEXT:    ;;#ASMSTART4087; GFX90A-NEXT:    ; def s[4:5]4088; GFX90A-NEXT:    ;;#ASMEND4089; GFX90A-NEXT:    ;;#ASMSTART4090; GFX90A-NEXT:    ; def s[6:7]4091; GFX90A-NEXT:    ;;#ASMEND4092; GFX90A-NEXT:    s_lshr_b32 s4, s7, 164093; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s54094; GFX90A-NEXT:    ;;#ASMSTART4095; GFX90A-NEXT:    ; use s84096; GFX90A-NEXT:    ;;#ASMEND4097; GFX90A-NEXT:    s_setpc_b64 s[30:31]4098;4099; GFX942-LABEL: s_shuffle_v2i16_v4i16__7_2:4100; GFX942:       ; %bb.0:4101; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4102; GFX942-NEXT:    ;;#ASMSTART4103; GFX942-NEXT:    ; def s[0:1]4104; GFX942-NEXT:    ;;#ASMEND4105; GFX942-NEXT:    ;;#ASMSTART4106; GFX942-NEXT:    ; def s[2:3]4107; GFX942-NEXT:    ;;#ASMEND4108; GFX942-NEXT:    s_lshr_b32 s0, s3, 164109; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s14110; GFX942-NEXT:    ;;#ASMSTART4111; GFX942-NEXT:    ; use s84112; GFX942-NEXT:    ;;#ASMEND4113; GFX942-NEXT:    s_setpc_b64 s[30:31]4114  %vec0 = call <4 x i16> asm "; def $0", "=s"()4115  %vec1 = call <4 x i16> asm "; def $0", "=s"()4116  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 2>4117  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)4118  ret void4119}4120 4121define void @s_shuffle_v2i16_v4i16__7_3() {4122; GFX900-LABEL: s_shuffle_v2i16_v4i16__7_3:4123; GFX900:       ; %bb.0:4124; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4125; GFX900-NEXT:    ;;#ASMSTART4126; GFX900-NEXT:    ; def s[4:5]4127; GFX900-NEXT:    ;;#ASMEND4128; GFX900-NEXT:    ;;#ASMSTART4129; GFX900-NEXT:    ; def s[6:7]4130; GFX900-NEXT:    ;;#ASMEND4131; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s7, s54132; GFX900-NEXT:    ;;#ASMSTART4133; GFX900-NEXT:    ; use s84134; GFX900-NEXT:    ;;#ASMEND4135; GFX900-NEXT:    s_setpc_b64 s[30:31]4136;4137; GFX90A-LABEL: s_shuffle_v2i16_v4i16__7_3:4138; GFX90A:       ; %bb.0:4139; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4140; GFX90A-NEXT:    ;;#ASMSTART4141; GFX90A-NEXT:    ; def s[4:5]4142; GFX90A-NEXT:    ;;#ASMEND4143; GFX90A-NEXT:    ;;#ASMSTART4144; GFX90A-NEXT:    ; def s[6:7]4145; GFX90A-NEXT:    ;;#ASMEND4146; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s7, s54147; GFX90A-NEXT:    ;;#ASMSTART4148; GFX90A-NEXT:    ; use s84149; GFX90A-NEXT:    ;;#ASMEND4150; GFX90A-NEXT:    s_setpc_b64 s[30:31]4151;4152; GFX942-LABEL: s_shuffle_v2i16_v4i16__7_3:4153; GFX942:       ; %bb.0:4154; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4155; GFX942-NEXT:    ;;#ASMSTART4156; GFX942-NEXT:    ; def s[0:1]4157; GFX942-NEXT:    ;;#ASMEND4158; GFX942-NEXT:    ;;#ASMSTART4159; GFX942-NEXT:    ; def s[2:3]4160; GFX942-NEXT:    ;;#ASMEND4161; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s3, s14162; GFX942-NEXT:    ;;#ASMSTART4163; GFX942-NEXT:    ; use s84164; GFX942-NEXT:    ;;#ASMEND4165; GFX942-NEXT:    s_setpc_b64 s[30:31]4166  %vec0 = call <4 x i16> asm "; def $0", "=s"()4167  %vec1 = call <4 x i16> asm "; def $0", "=s"()4168  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 3>4169  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)4170  ret void4171}4172 4173define void @s_shuffle_v2i16_v4i16__7_4() {4174; GFX900-LABEL: s_shuffle_v2i16_v4i16__7_4:4175; GFX900:       ; %bb.0:4176; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4177; GFX900-NEXT:    ;;#ASMSTART4178; GFX900-NEXT:    ; def s[4:5]4179; GFX900-NEXT:    ;;#ASMEND4180; GFX900-NEXT:    s_lshr_b32 s5, s5, 164181; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s44182; GFX900-NEXT:    ;;#ASMSTART4183; GFX900-NEXT:    ; use s84184; GFX900-NEXT:    ;;#ASMEND4185; GFX900-NEXT:    s_setpc_b64 s[30:31]4186;4187; GFX90A-LABEL: s_shuffle_v2i16_v4i16__7_4:4188; GFX90A:       ; %bb.0:4189; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4190; GFX90A-NEXT:    ;;#ASMSTART4191; GFX90A-NEXT:    ; def s[4:5]4192; GFX90A-NEXT:    ;;#ASMEND4193; GFX90A-NEXT:    s_lshr_b32 s5, s5, 164194; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s44195; GFX90A-NEXT:    ;;#ASMSTART4196; GFX90A-NEXT:    ; use s84197; GFX90A-NEXT:    ;;#ASMEND4198; GFX90A-NEXT:    s_setpc_b64 s[30:31]4199;4200; GFX942-LABEL: s_shuffle_v2i16_v4i16__7_4:4201; GFX942:       ; %bb.0:4202; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4203; GFX942-NEXT:    ;;#ASMSTART4204; GFX942-NEXT:    ; def s[0:1]4205; GFX942-NEXT:    ;;#ASMEND4206; GFX942-NEXT:    s_lshr_b32 s1, s1, 164207; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s04208; GFX942-NEXT:    ;;#ASMSTART4209; GFX942-NEXT:    ; use s84210; GFX942-NEXT:    ;;#ASMEND4211; GFX942-NEXT:    s_setpc_b64 s[30:31]4212  %vec0 = call <4 x i16> asm "; def $0", "=s"()4213  %vec1 = call <4 x i16> asm "; def $0", "=s"()4214  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 4>4215  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)4216  ret void4217}4218 4219define void @s_shuffle_v2i16_v4i16__7_5() {4220; GFX900-LABEL: s_shuffle_v2i16_v4i16__7_5:4221; GFX900:       ; %bb.0:4222; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4223; GFX900-NEXT:    ;;#ASMSTART4224; GFX900-NEXT:    ; def s[4:5]4225; GFX900-NEXT:    ;;#ASMEND4226; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s44227; GFX900-NEXT:    ;;#ASMSTART4228; GFX900-NEXT:    ; use s84229; GFX900-NEXT:    ;;#ASMEND4230; GFX900-NEXT:    s_setpc_b64 s[30:31]4231;4232; GFX90A-LABEL: s_shuffle_v2i16_v4i16__7_5:4233; GFX90A:       ; %bb.0:4234; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4235; GFX90A-NEXT:    ;;#ASMSTART4236; GFX90A-NEXT:    ; def s[4:5]4237; GFX90A-NEXT:    ;;#ASMEND4238; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s44239; GFX90A-NEXT:    ;;#ASMSTART4240; GFX90A-NEXT:    ; use s84241; GFX90A-NEXT:    ;;#ASMEND4242; GFX90A-NEXT:    s_setpc_b64 s[30:31]4243;4244; GFX942-LABEL: s_shuffle_v2i16_v4i16__7_5:4245; GFX942:       ; %bb.0:4246; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4247; GFX942-NEXT:    ;;#ASMSTART4248; GFX942-NEXT:    ; def s[0:1]4249; GFX942-NEXT:    ;;#ASMEND4250; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s04251; GFX942-NEXT:    ;;#ASMSTART4252; GFX942-NEXT:    ; use s84253; GFX942-NEXT:    ;;#ASMEND4254; GFX942-NEXT:    s_setpc_b64 s[30:31]4255  %vec0 = call <4 x i16> asm "; def $0", "=s"()4256  %vec1 = call <4 x i16> asm "; def $0", "=s"()4257  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 5>4258  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)4259  ret void4260}4261 4262define void @s_shuffle_v2i16_v4i16__7_6() {4263; GFX900-LABEL: s_shuffle_v2i16_v4i16__7_6:4264; GFX900:       ; %bb.0:4265; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4266; GFX900-NEXT:    ;;#ASMSTART4267; GFX900-NEXT:    ; def s[4:5]4268; GFX900-NEXT:    ;;#ASMEND4269; GFX900-NEXT:    s_lshr_b32 s4, s5, 164270; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s54271; GFX900-NEXT:    ;;#ASMSTART4272; GFX900-NEXT:    ; use s84273; GFX900-NEXT:    ;;#ASMEND4274; GFX900-NEXT:    s_setpc_b64 s[30:31]4275;4276; GFX90A-LABEL: s_shuffle_v2i16_v4i16__7_6:4277; GFX90A:       ; %bb.0:4278; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4279; GFX90A-NEXT:    ;;#ASMSTART4280; GFX90A-NEXT:    ; def s[4:5]4281; GFX90A-NEXT:    ;;#ASMEND4282; GFX90A-NEXT:    s_lshr_b32 s4, s5, 164283; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s54284; GFX90A-NEXT:    ;;#ASMSTART4285; GFX90A-NEXT:    ; use s84286; GFX90A-NEXT:    ;;#ASMEND4287; GFX90A-NEXT:    s_setpc_b64 s[30:31]4288;4289; GFX942-LABEL: s_shuffle_v2i16_v4i16__7_6:4290; GFX942:       ; %bb.0:4291; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4292; GFX942-NEXT:    ;;#ASMSTART4293; GFX942-NEXT:    ; def s[0:1]4294; GFX942-NEXT:    ;;#ASMEND4295; GFX942-NEXT:    s_lshr_b32 s0, s1, 164296; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s14297; GFX942-NEXT:    ;;#ASMSTART4298; GFX942-NEXT:    ; use s84299; GFX942-NEXT:    ;;#ASMEND4300; GFX942-NEXT:    s_setpc_b64 s[30:31]4301  %vec0 = call <4 x i16> asm "; def $0", "=s"()4302  %vec1 = call <4 x i16> asm "; def $0", "=s"()4303  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 6>4304  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)4305  ret void4306}4307 4308define void @s_shuffle_v2i16_v4i16__7_7() {4309; GFX900-LABEL: s_shuffle_v2i16_v4i16__7_7:4310; GFX900:       ; %bb.0:4311; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4312; GFX900-NEXT:    ;;#ASMSTART4313; GFX900-NEXT:    ; def s[4:5]4314; GFX900-NEXT:    ;;#ASMEND4315; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s54316; GFX900-NEXT:    ;;#ASMSTART4317; GFX900-NEXT:    ; use s84318; GFX900-NEXT:    ;;#ASMEND4319; GFX900-NEXT:    s_setpc_b64 s[30:31]4320;4321; GFX90A-LABEL: s_shuffle_v2i16_v4i16__7_7:4322; GFX90A:       ; %bb.0:4323; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4324; GFX90A-NEXT:    ;;#ASMSTART4325; GFX90A-NEXT:    ; def s[4:5]4326; GFX90A-NEXT:    ;;#ASMEND4327; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s54328; GFX90A-NEXT:    ;;#ASMSTART4329; GFX90A-NEXT:    ; use s84330; GFX90A-NEXT:    ;;#ASMEND4331; GFX90A-NEXT:    s_setpc_b64 s[30:31]4332;4333; GFX942-LABEL: s_shuffle_v2i16_v4i16__7_7:4334; GFX942:       ; %bb.0:4335; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4336; GFX942-NEXT:    ;;#ASMSTART4337; GFX942-NEXT:    ; def s[0:1]4338; GFX942-NEXT:    ;;#ASMEND4339; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s14340; GFX942-NEXT:    ;;#ASMSTART4341; GFX942-NEXT:    ; use s84342; GFX942-NEXT:    ;;#ASMEND4343; GFX942-NEXT:    s_setpc_b64 s[30:31]4344  %vec0 = call <4 x i16> asm "; def $0", "=s"()4345  %vec1 = call <4 x i16> asm "; def $0", "=s"()4346  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 7, i32 7>4347  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)4348  ret void4349}4350 4351define void @s_shuffle_v2i16_v4i16__u_0() {4352; GFX900-LABEL: s_shuffle_v2i16_v4i16__u_0:4353; GFX900:       ; %bb.0:4354; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4355; GFX900-NEXT:    ;;#ASMSTART4356; GFX900-NEXT:    ; def s[4:5]4357; GFX900-NEXT:    ;;#ASMEND4358; GFX900-NEXT:    s_lshl_b32 s8, s4, 164359; GFX900-NEXT:    ;;#ASMSTART4360; GFX900-NEXT:    ; use s84361; GFX900-NEXT:    ;;#ASMEND4362; GFX900-NEXT:    s_setpc_b64 s[30:31]4363;4364; GFX90A-LABEL: s_shuffle_v2i16_v4i16__u_0:4365; GFX90A:       ; %bb.0:4366; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4367; GFX90A-NEXT:    ;;#ASMSTART4368; GFX90A-NEXT:    ; def s[4:5]4369; GFX90A-NEXT:    ;;#ASMEND4370; GFX90A-NEXT:    s_lshl_b32 s8, s4, 164371; GFX90A-NEXT:    ;;#ASMSTART4372; GFX90A-NEXT:    ; use s84373; GFX90A-NEXT:    ;;#ASMEND4374; GFX90A-NEXT:    s_setpc_b64 s[30:31]4375;4376; GFX942-LABEL: s_shuffle_v2i16_v4i16__u_0:4377; GFX942:       ; %bb.0:4378; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4379; GFX942-NEXT:    ;;#ASMSTART4380; GFX942-NEXT:    ; def s[0:1]4381; GFX942-NEXT:    ;;#ASMEND4382; GFX942-NEXT:    s_lshl_b32 s8, s0, 164383; GFX942-NEXT:    ;;#ASMSTART4384; GFX942-NEXT:    ; use s84385; GFX942-NEXT:    ;;#ASMEND4386; GFX942-NEXT:    s_setpc_b64 s[30:31]4387  %vec0 = call <4 x i16> asm "; def $0", "=s"()4388  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 poison, i32 0>4389  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)4390  ret void4391}4392 4393define void @s_shuffle_v2i16_v4i16__0_0() {4394; GFX900-LABEL: s_shuffle_v2i16_v4i16__0_0:4395; GFX900:       ; %bb.0:4396; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4397; GFX900-NEXT:    ;;#ASMSTART4398; GFX900-NEXT:    ; def s[4:5]4399; GFX900-NEXT:    ;;#ASMEND4400; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s44401; GFX900-NEXT:    ;;#ASMSTART4402; GFX900-NEXT:    ; use s84403; GFX900-NEXT:    ;;#ASMEND4404; GFX900-NEXT:    s_setpc_b64 s[30:31]4405;4406; GFX90A-LABEL: s_shuffle_v2i16_v4i16__0_0:4407; GFX90A:       ; %bb.0:4408; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4409; GFX90A-NEXT:    ;;#ASMSTART4410; GFX90A-NEXT:    ; def s[4:5]4411; GFX90A-NEXT:    ;;#ASMEND4412; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s44413; GFX90A-NEXT:    ;;#ASMSTART4414; GFX90A-NEXT:    ; use s84415; GFX90A-NEXT:    ;;#ASMEND4416; GFX90A-NEXT:    s_setpc_b64 s[30:31]4417;4418; GFX942-LABEL: s_shuffle_v2i16_v4i16__0_0:4419; GFX942:       ; %bb.0:4420; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4421; GFX942-NEXT:    ;;#ASMSTART4422; GFX942-NEXT:    ; def s[0:1]4423; GFX942-NEXT:    ;;#ASMEND4424; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s04425; GFX942-NEXT:    ;;#ASMSTART4426; GFX942-NEXT:    ; use s84427; GFX942-NEXT:    ;;#ASMEND4428; GFX942-NEXT:    s_setpc_b64 s[30:31]4429  %vec0 = call <4 x i16> asm "; def $0", "=s"()4430  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> zeroinitializer4431  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)4432  ret void4433}4434 4435define void @s_shuffle_v2i16_v4i16__1_0() {4436; GFX900-LABEL: s_shuffle_v2i16_v4i16__1_0:4437; GFX900:       ; %bb.0:4438; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4439; GFX900-NEXT:    ;;#ASMSTART4440; GFX900-NEXT:    ; def s[4:5]4441; GFX900-NEXT:    ;;#ASMEND4442; GFX900-NEXT:    s_lshr_b32 s5, s4, 164443; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s44444; GFX900-NEXT:    ;;#ASMSTART4445; GFX900-NEXT:    ; use s84446; GFX900-NEXT:    ;;#ASMEND4447; GFX900-NEXT:    s_setpc_b64 s[30:31]4448;4449; GFX90A-LABEL: s_shuffle_v2i16_v4i16__1_0:4450; GFX90A:       ; %bb.0:4451; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4452; GFX90A-NEXT:    ;;#ASMSTART4453; GFX90A-NEXT:    ; def s[4:5]4454; GFX90A-NEXT:    ;;#ASMEND4455; GFX90A-NEXT:    s_lshr_b32 s5, s4, 164456; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s44457; GFX90A-NEXT:    ;;#ASMSTART4458; GFX90A-NEXT:    ; use s84459; GFX90A-NEXT:    ;;#ASMEND4460; GFX90A-NEXT:    s_setpc_b64 s[30:31]4461;4462; GFX942-LABEL: s_shuffle_v2i16_v4i16__1_0:4463; GFX942:       ; %bb.0:4464; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4465; GFX942-NEXT:    ;;#ASMSTART4466; GFX942-NEXT:    ; def s[0:1]4467; GFX942-NEXT:    ;;#ASMEND4468; GFX942-NEXT:    s_lshr_b32 s1, s0, 164469; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s04470; GFX942-NEXT:    ;;#ASMSTART4471; GFX942-NEXT:    ; use s84472; GFX942-NEXT:    ;;#ASMEND4473; GFX942-NEXT:    s_setpc_b64 s[30:31]4474  %vec0 = call <4 x i16> asm "; def $0", "=s"()4475  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 0>4476  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)4477  ret void4478}4479 4480define void @s_shuffle_v2i16_v4i16__2_0() {4481; GFX900-LABEL: s_shuffle_v2i16_v4i16__2_0:4482; GFX900:       ; %bb.0:4483; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4484; GFX900-NEXT:    ;;#ASMSTART4485; GFX900-NEXT:    ; def s[4:5]4486; GFX900-NEXT:    ;;#ASMEND4487; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s44488; GFX900-NEXT:    ;;#ASMSTART4489; GFX900-NEXT:    ; use s84490; GFX900-NEXT:    ;;#ASMEND4491; GFX900-NEXT:    s_setpc_b64 s[30:31]4492;4493; GFX90A-LABEL: s_shuffle_v2i16_v4i16__2_0:4494; GFX90A:       ; %bb.0:4495; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4496; GFX90A-NEXT:    ;;#ASMSTART4497; GFX90A-NEXT:    ; def s[4:5]4498; GFX90A-NEXT:    ;;#ASMEND4499; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s44500; GFX90A-NEXT:    ;;#ASMSTART4501; GFX90A-NEXT:    ; use s84502; GFX90A-NEXT:    ;;#ASMEND4503; GFX90A-NEXT:    s_setpc_b64 s[30:31]4504;4505; GFX942-LABEL: s_shuffle_v2i16_v4i16__2_0:4506; GFX942:       ; %bb.0:4507; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4508; GFX942-NEXT:    ;;#ASMSTART4509; GFX942-NEXT:    ; def s[0:1]4510; GFX942-NEXT:    ;;#ASMEND4511; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s04512; GFX942-NEXT:    ;;#ASMSTART4513; GFX942-NEXT:    ; use s84514; GFX942-NEXT:    ;;#ASMEND4515; GFX942-NEXT:    s_setpc_b64 s[30:31]4516  %vec0 = call <4 x i16> asm "; def $0", "=s"()4517  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 0>4518  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)4519  ret void4520}4521 4522define void @s_shuffle_v2i16_v4i16__3_0() {4523; GFX900-LABEL: s_shuffle_v2i16_v4i16__3_0:4524; GFX900:       ; %bb.0:4525; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4526; GFX900-NEXT:    ;;#ASMSTART4527; GFX900-NEXT:    ; def s[4:5]4528; GFX900-NEXT:    ;;#ASMEND4529; GFX900-NEXT:    s_lshr_b32 s5, s5, 164530; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s44531; GFX900-NEXT:    ;;#ASMSTART4532; GFX900-NEXT:    ; use s84533; GFX900-NEXT:    ;;#ASMEND4534; GFX900-NEXT:    s_setpc_b64 s[30:31]4535;4536; GFX90A-LABEL: s_shuffle_v2i16_v4i16__3_0:4537; GFX90A:       ; %bb.0:4538; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4539; GFX90A-NEXT:    ;;#ASMSTART4540; GFX90A-NEXT:    ; def s[4:5]4541; GFX90A-NEXT:    ;;#ASMEND4542; GFX90A-NEXT:    s_lshr_b32 s5, s5, 164543; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s44544; GFX90A-NEXT:    ;;#ASMSTART4545; GFX90A-NEXT:    ; use s84546; GFX90A-NEXT:    ;;#ASMEND4547; GFX90A-NEXT:    s_setpc_b64 s[30:31]4548;4549; GFX942-LABEL: s_shuffle_v2i16_v4i16__3_0:4550; GFX942:       ; %bb.0:4551; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4552; GFX942-NEXT:    ;;#ASMSTART4553; GFX942-NEXT:    ; def s[0:1]4554; GFX942-NEXT:    ;;#ASMEND4555; GFX942-NEXT:    s_lshr_b32 s1, s1, 164556; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s04557; GFX942-NEXT:    ;;#ASMSTART4558; GFX942-NEXT:    ; use s84559; GFX942-NEXT:    ;;#ASMEND4560; GFX942-NEXT:    s_setpc_b64 s[30:31]4561  %vec0 = call <4 x i16> asm "; def $0", "=s"()4562  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 0>4563  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)4564  ret void4565}4566 4567define void @s_shuffle_v2i16_v4i16__4_0() {4568; GFX900-LABEL: s_shuffle_v2i16_v4i16__4_0:4569; GFX900:       ; %bb.0:4570; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4571; GFX900-NEXT:    ;;#ASMSTART4572; GFX900-NEXT:    ; def s[4:5]4573; GFX900-NEXT:    ;;#ASMEND4574; GFX900-NEXT:    s_lshl_b32 s8, s4, 164575; GFX900-NEXT:    ;;#ASMSTART4576; GFX900-NEXT:    ; use s84577; GFX900-NEXT:    ;;#ASMEND4578; GFX900-NEXT:    s_setpc_b64 s[30:31]4579;4580; GFX90A-LABEL: s_shuffle_v2i16_v4i16__4_0:4581; GFX90A:       ; %bb.0:4582; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4583; GFX90A-NEXT:    ;;#ASMSTART4584; GFX90A-NEXT:    ; def s[4:5]4585; GFX90A-NEXT:    ;;#ASMEND4586; GFX90A-NEXT:    s_lshl_b32 s8, s4, 164587; GFX90A-NEXT:    ;;#ASMSTART4588; GFX90A-NEXT:    ; use s84589; GFX90A-NEXT:    ;;#ASMEND4590; GFX90A-NEXT:    s_setpc_b64 s[30:31]4591;4592; GFX942-LABEL: s_shuffle_v2i16_v4i16__4_0:4593; GFX942:       ; %bb.0:4594; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4595; GFX942-NEXT:    ;;#ASMSTART4596; GFX942-NEXT:    ; def s[0:1]4597; GFX942-NEXT:    ;;#ASMEND4598; GFX942-NEXT:    s_lshl_b32 s8, s0, 164599; GFX942-NEXT:    ;;#ASMSTART4600; GFX942-NEXT:    ; use s84601; GFX942-NEXT:    ;;#ASMEND4602; GFX942-NEXT:    s_setpc_b64 s[30:31]4603  %vec0 = call <4 x i16> asm "; def $0", "=s"()4604  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 0>4605  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)4606  ret void4607}4608 4609define void @s_shuffle_v2i16_v4i16__5_0() {4610; GFX900-LABEL: s_shuffle_v2i16_v4i16__5_0:4611; GFX900:       ; %bb.0:4612; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4613; GFX900-NEXT:    ;;#ASMSTART4614; GFX900-NEXT:    ; def s[4:5]4615; GFX900-NEXT:    ;;#ASMEND4616; GFX900-NEXT:    ;;#ASMSTART4617; GFX900-NEXT:    ; def s[6:7]4618; GFX900-NEXT:    ;;#ASMEND4619; GFX900-NEXT:    s_lshr_b32 s5, s6, 164620; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s44621; GFX900-NEXT:    ;;#ASMSTART4622; GFX900-NEXT:    ; use s84623; GFX900-NEXT:    ;;#ASMEND4624; GFX900-NEXT:    s_setpc_b64 s[30:31]4625;4626; GFX90A-LABEL: s_shuffle_v2i16_v4i16__5_0:4627; GFX90A:       ; %bb.0:4628; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4629; GFX90A-NEXT:    ;;#ASMSTART4630; GFX90A-NEXT:    ; def s[4:5]4631; GFX90A-NEXT:    ;;#ASMEND4632; GFX90A-NEXT:    ;;#ASMSTART4633; GFX90A-NEXT:    ; def s[6:7]4634; GFX90A-NEXT:    ;;#ASMEND4635; GFX90A-NEXT:    s_lshr_b32 s5, s6, 164636; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s44637; GFX90A-NEXT:    ;;#ASMSTART4638; GFX90A-NEXT:    ; use s84639; GFX90A-NEXT:    ;;#ASMEND4640; GFX90A-NEXT:    s_setpc_b64 s[30:31]4641;4642; GFX942-LABEL: s_shuffle_v2i16_v4i16__5_0:4643; GFX942:       ; %bb.0:4644; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4645; GFX942-NEXT:    ;;#ASMSTART4646; GFX942-NEXT:    ; def s[0:1]4647; GFX942-NEXT:    ;;#ASMEND4648; GFX942-NEXT:    ;;#ASMSTART4649; GFX942-NEXT:    ; def s[2:3]4650; GFX942-NEXT:    ;;#ASMEND4651; GFX942-NEXT:    s_lshr_b32 s1, s2, 164652; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s04653; GFX942-NEXT:    ;;#ASMSTART4654; GFX942-NEXT:    ; use s84655; GFX942-NEXT:    ;;#ASMEND4656; GFX942-NEXT:    s_setpc_b64 s[30:31]4657  %vec0 = call <4 x i16> asm "; def $0", "=s"()4658  %vec1 = call <4 x i16> asm "; def $0", "=s"()4659  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 0>4660  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)4661  ret void4662}4663 4664define void @s_shuffle_v2i16_v4i16__6_0() {4665; GFX900-LABEL: s_shuffle_v2i16_v4i16__6_0:4666; GFX900:       ; %bb.0:4667; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4668; GFX900-NEXT:    ;;#ASMSTART4669; GFX900-NEXT:    ; def s[4:5]4670; GFX900-NEXT:    ;;#ASMEND4671; GFX900-NEXT:    ;;#ASMSTART4672; GFX900-NEXT:    ; def s[6:7]4673; GFX900-NEXT:    ;;#ASMEND4674; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s44675; GFX900-NEXT:    ;;#ASMSTART4676; GFX900-NEXT:    ; use s84677; GFX900-NEXT:    ;;#ASMEND4678; GFX900-NEXT:    s_setpc_b64 s[30:31]4679;4680; GFX90A-LABEL: s_shuffle_v2i16_v4i16__6_0:4681; GFX90A:       ; %bb.0:4682; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4683; GFX90A-NEXT:    ;;#ASMSTART4684; GFX90A-NEXT:    ; def s[4:5]4685; GFX90A-NEXT:    ;;#ASMEND4686; GFX90A-NEXT:    ;;#ASMSTART4687; GFX90A-NEXT:    ; def s[6:7]4688; GFX90A-NEXT:    ;;#ASMEND4689; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s44690; GFX90A-NEXT:    ;;#ASMSTART4691; GFX90A-NEXT:    ; use s84692; GFX90A-NEXT:    ;;#ASMEND4693; GFX90A-NEXT:    s_setpc_b64 s[30:31]4694;4695; GFX942-LABEL: s_shuffle_v2i16_v4i16__6_0:4696; GFX942:       ; %bb.0:4697; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4698; GFX942-NEXT:    ;;#ASMSTART4699; GFX942-NEXT:    ; def s[0:1]4700; GFX942-NEXT:    ;;#ASMEND4701; GFX942-NEXT:    ;;#ASMSTART4702; GFX942-NEXT:    ; def s[2:3]4703; GFX942-NEXT:    ;;#ASMEND4704; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s04705; GFX942-NEXT:    ;;#ASMSTART4706; GFX942-NEXT:    ; use s84707; GFX942-NEXT:    ;;#ASMEND4708; GFX942-NEXT:    s_setpc_b64 s[30:31]4709  %vec0 = call <4 x i16> asm "; def $0", "=s"()4710  %vec1 = call <4 x i16> asm "; def $0", "=s"()4711  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 0>4712  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)4713  ret void4714}4715 4716define void @s_shuffle_v2i16_v4i16__u_1() {4717; GFX900-LABEL: s_shuffle_v2i16_v4i16__u_1:4718; GFX900:       ; %bb.0:4719; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4720; GFX900-NEXT:    ;;#ASMSTART4721; GFX900-NEXT:    ; def s[8:9]4722; GFX900-NEXT:    ;;#ASMEND4723; GFX900-NEXT:    ;;#ASMSTART4724; GFX900-NEXT:    ; use s84725; GFX900-NEXT:    ;;#ASMEND4726; GFX900-NEXT:    s_setpc_b64 s[30:31]4727;4728; GFX90A-LABEL: s_shuffle_v2i16_v4i16__u_1:4729; GFX90A:       ; %bb.0:4730; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4731; GFX90A-NEXT:    ;;#ASMSTART4732; GFX90A-NEXT:    ; def s[8:9]4733; GFX90A-NEXT:    ;;#ASMEND4734; GFX90A-NEXT:    ;;#ASMSTART4735; GFX90A-NEXT:    ; use s84736; GFX90A-NEXT:    ;;#ASMEND4737; GFX90A-NEXT:    s_setpc_b64 s[30:31]4738;4739; GFX942-LABEL: s_shuffle_v2i16_v4i16__u_1:4740; GFX942:       ; %bb.0:4741; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4742; GFX942-NEXT:    ;;#ASMSTART4743; GFX942-NEXT:    ; def s[8:9]4744; GFX942-NEXT:    ;;#ASMEND4745; GFX942-NEXT:    s_nop 04746; GFX942-NEXT:    ;;#ASMSTART4747; GFX942-NEXT:    ; use s84748; GFX942-NEXT:    ;;#ASMEND4749; GFX942-NEXT:    s_setpc_b64 s[30:31]4750  %vec0 = call <4 x i16> asm "; def $0", "=s"()4751  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 poison, i32 1>4752  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)4753  ret void4754}4755 4756define void @s_shuffle_v2i16_v4i16__0_1() {4757; GFX900-LABEL: s_shuffle_v2i16_v4i16__0_1:4758; GFX900:       ; %bb.0:4759; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4760; GFX900-NEXT:    ;;#ASMSTART4761; GFX900-NEXT:    ; def s[8:9]4762; GFX900-NEXT:    ;;#ASMEND4763; GFX900-NEXT:    ;;#ASMSTART4764; GFX900-NEXT:    ; use s84765; GFX900-NEXT:    ;;#ASMEND4766; GFX900-NEXT:    s_setpc_b64 s[30:31]4767;4768; GFX90A-LABEL: s_shuffle_v2i16_v4i16__0_1:4769; GFX90A:       ; %bb.0:4770; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4771; GFX90A-NEXT:    ;;#ASMSTART4772; GFX90A-NEXT:    ; def s[8:9]4773; GFX90A-NEXT:    ;;#ASMEND4774; GFX90A-NEXT:    ;;#ASMSTART4775; GFX90A-NEXT:    ; use s84776; GFX90A-NEXT:    ;;#ASMEND4777; GFX90A-NEXT:    s_setpc_b64 s[30:31]4778;4779; GFX942-LABEL: s_shuffle_v2i16_v4i16__0_1:4780; GFX942:       ; %bb.0:4781; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4782; GFX942-NEXT:    ;;#ASMSTART4783; GFX942-NEXT:    ; def s[8:9]4784; GFX942-NEXT:    ;;#ASMEND4785; GFX942-NEXT:    s_nop 04786; GFX942-NEXT:    ;;#ASMSTART4787; GFX942-NEXT:    ; use s84788; GFX942-NEXT:    ;;#ASMEND4789; GFX942-NEXT:    s_setpc_b64 s[30:31]4790  %vec0 = call <4 x i16> asm "; def $0", "=s"()4791  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 0, i32 1>4792  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)4793  ret void4794}4795 4796define void @s_shuffle_v2i16_v4i16__1_1() {4797; GFX900-LABEL: s_shuffle_v2i16_v4i16__1_1:4798; GFX900:       ; %bb.0:4799; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4800; GFX900-NEXT:    ;;#ASMSTART4801; GFX900-NEXT:    ; def s[4:5]4802; GFX900-NEXT:    ;;#ASMEND4803; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s44804; GFX900-NEXT:    ;;#ASMSTART4805; GFX900-NEXT:    ; use s84806; GFX900-NEXT:    ;;#ASMEND4807; GFX900-NEXT:    s_setpc_b64 s[30:31]4808;4809; GFX90A-LABEL: s_shuffle_v2i16_v4i16__1_1:4810; GFX90A:       ; %bb.0:4811; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4812; GFX90A-NEXT:    ;;#ASMSTART4813; GFX90A-NEXT:    ; def s[4:5]4814; GFX90A-NEXT:    ;;#ASMEND4815; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s44816; GFX90A-NEXT:    ;;#ASMSTART4817; GFX90A-NEXT:    ; use s84818; GFX90A-NEXT:    ;;#ASMEND4819; GFX90A-NEXT:    s_setpc_b64 s[30:31]4820;4821; GFX942-LABEL: s_shuffle_v2i16_v4i16__1_1:4822; GFX942:       ; %bb.0:4823; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4824; GFX942-NEXT:    ;;#ASMSTART4825; GFX942-NEXT:    ; def s[0:1]4826; GFX942-NEXT:    ;;#ASMEND4827; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s04828; GFX942-NEXT:    ;;#ASMSTART4829; GFX942-NEXT:    ; use s84830; GFX942-NEXT:    ;;#ASMEND4831; GFX942-NEXT:    s_setpc_b64 s[30:31]4832  %vec0 = call <4 x i16> asm "; def $0", "=s"()4833  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 1>4834  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)4835  ret void4836}4837 4838define void @s_shuffle_v2i16_v4i16__2_1() {4839; GFX900-LABEL: s_shuffle_v2i16_v4i16__2_1:4840; GFX900:       ; %bb.0:4841; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4842; GFX900-NEXT:    ;;#ASMSTART4843; GFX900-NEXT:    ; def s[4:5]4844; GFX900-NEXT:    ;;#ASMEND4845; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s5, s44846; GFX900-NEXT:    ;;#ASMSTART4847; GFX900-NEXT:    ; use s84848; GFX900-NEXT:    ;;#ASMEND4849; GFX900-NEXT:    s_setpc_b64 s[30:31]4850;4851; GFX90A-LABEL: s_shuffle_v2i16_v4i16__2_1:4852; GFX90A:       ; %bb.0:4853; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4854; GFX90A-NEXT:    ;;#ASMSTART4855; GFX90A-NEXT:    ; def s[4:5]4856; GFX90A-NEXT:    ;;#ASMEND4857; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s5, s44858; GFX90A-NEXT:    ;;#ASMSTART4859; GFX90A-NEXT:    ; use s84860; GFX90A-NEXT:    ;;#ASMEND4861; GFX90A-NEXT:    s_setpc_b64 s[30:31]4862;4863; GFX942-LABEL: s_shuffle_v2i16_v4i16__2_1:4864; GFX942:       ; %bb.0:4865; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4866; GFX942-NEXT:    ;;#ASMSTART4867; GFX942-NEXT:    ; def s[0:1]4868; GFX942-NEXT:    ;;#ASMEND4869; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s1, s04870; GFX942-NEXT:    ;;#ASMSTART4871; GFX942-NEXT:    ; use s84872; GFX942-NEXT:    ;;#ASMEND4873; GFX942-NEXT:    s_setpc_b64 s[30:31]4874  %vec0 = call <4 x i16> asm "; def $0", "=s"()4875  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 1>4876  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)4877  ret void4878}4879 4880define void @s_shuffle_v2i16_v4i16__3_1() {4881; GFX900-LABEL: s_shuffle_v2i16_v4i16__3_1:4882; GFX900:       ; %bb.0:4883; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4884; GFX900-NEXT:    ;;#ASMSTART4885; GFX900-NEXT:    ; def s[4:5]4886; GFX900-NEXT:    ;;#ASMEND4887; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s44888; GFX900-NEXT:    ;;#ASMSTART4889; GFX900-NEXT:    ; use s84890; GFX900-NEXT:    ;;#ASMEND4891; GFX900-NEXT:    s_setpc_b64 s[30:31]4892;4893; GFX90A-LABEL: s_shuffle_v2i16_v4i16__3_1:4894; GFX90A:       ; %bb.0:4895; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4896; GFX90A-NEXT:    ;;#ASMSTART4897; GFX90A-NEXT:    ; def s[4:5]4898; GFX90A-NEXT:    ;;#ASMEND4899; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s44900; GFX90A-NEXT:    ;;#ASMSTART4901; GFX90A-NEXT:    ; use s84902; GFX90A-NEXT:    ;;#ASMEND4903; GFX90A-NEXT:    s_setpc_b64 s[30:31]4904;4905; GFX942-LABEL: s_shuffle_v2i16_v4i16__3_1:4906; GFX942:       ; %bb.0:4907; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4908; GFX942-NEXT:    ;;#ASMSTART4909; GFX942-NEXT:    ; def s[0:1]4910; GFX942-NEXT:    ;;#ASMEND4911; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s04912; GFX942-NEXT:    ;;#ASMSTART4913; GFX942-NEXT:    ; use s84914; GFX942-NEXT:    ;;#ASMEND4915; GFX942-NEXT:    s_setpc_b64 s[30:31]4916  %vec0 = call <4 x i16> asm "; def $0", "=s"()4917  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 1>4918  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)4919  ret void4920}4921 4922define void @s_shuffle_v2i16_v4i16__4_1() {4923; GFX900-LABEL: s_shuffle_v2i16_v4i16__4_1:4924; GFX900:       ; %bb.0:4925; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4926; GFX900-NEXT:    ;;#ASMSTART4927; GFX900-NEXT:    ; def s[8:9]4928; GFX900-NEXT:    ;;#ASMEND4929; GFX900-NEXT:    ;;#ASMSTART4930; GFX900-NEXT:    ; use s84931; GFX900-NEXT:    ;;#ASMEND4932; GFX900-NEXT:    s_setpc_b64 s[30:31]4933;4934; GFX90A-LABEL: s_shuffle_v2i16_v4i16__4_1:4935; GFX90A:       ; %bb.0:4936; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4937; GFX90A-NEXT:    ;;#ASMSTART4938; GFX90A-NEXT:    ; def s[8:9]4939; GFX90A-NEXT:    ;;#ASMEND4940; GFX90A-NEXT:    ;;#ASMSTART4941; GFX90A-NEXT:    ; use s84942; GFX90A-NEXT:    ;;#ASMEND4943; GFX90A-NEXT:    s_setpc_b64 s[30:31]4944;4945; GFX942-LABEL: s_shuffle_v2i16_v4i16__4_1:4946; GFX942:       ; %bb.0:4947; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4948; GFX942-NEXT:    ;;#ASMSTART4949; GFX942-NEXT:    ; def s[8:9]4950; GFX942-NEXT:    ;;#ASMEND4951; GFX942-NEXT:    s_nop 04952; GFX942-NEXT:    ;;#ASMSTART4953; GFX942-NEXT:    ; use s84954; GFX942-NEXT:    ;;#ASMEND4955; GFX942-NEXT:    s_setpc_b64 s[30:31]4956  %vec0 = call <4 x i16> asm "; def $0", "=s"()4957  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 1>4958  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)4959  ret void4960}4961 4962define void @s_shuffle_v2i16_v4i16__5_1() {4963; GFX900-LABEL: s_shuffle_v2i16_v4i16__5_1:4964; GFX900:       ; %bb.0:4965; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4966; GFX900-NEXT:    ;;#ASMSTART4967; GFX900-NEXT:    ; def s[4:5]4968; GFX900-NEXT:    ;;#ASMEND4969; GFX900-NEXT:    ;;#ASMSTART4970; GFX900-NEXT:    ; def s[6:7]4971; GFX900-NEXT:    ;;#ASMEND4972; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s6, s44973; GFX900-NEXT:    ;;#ASMSTART4974; GFX900-NEXT:    ; use s84975; GFX900-NEXT:    ;;#ASMEND4976; GFX900-NEXT:    s_setpc_b64 s[30:31]4977;4978; GFX90A-LABEL: s_shuffle_v2i16_v4i16__5_1:4979; GFX90A:       ; %bb.0:4980; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4981; GFX90A-NEXT:    ;;#ASMSTART4982; GFX90A-NEXT:    ; def s[4:5]4983; GFX90A-NEXT:    ;;#ASMEND4984; GFX90A-NEXT:    ;;#ASMSTART4985; GFX90A-NEXT:    ; def s[6:7]4986; GFX90A-NEXT:    ;;#ASMEND4987; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s6, s44988; GFX90A-NEXT:    ;;#ASMSTART4989; GFX90A-NEXT:    ; use s84990; GFX90A-NEXT:    ;;#ASMEND4991; GFX90A-NEXT:    s_setpc_b64 s[30:31]4992;4993; GFX942-LABEL: s_shuffle_v2i16_v4i16__5_1:4994; GFX942:       ; %bb.0:4995; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4996; GFX942-NEXT:    ;;#ASMSTART4997; GFX942-NEXT:    ; def s[0:1]4998; GFX942-NEXT:    ;;#ASMEND4999; GFX942-NEXT:    ;;#ASMSTART5000; GFX942-NEXT:    ; def s[2:3]5001; GFX942-NEXT:    ;;#ASMEND5002; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s2, s05003; GFX942-NEXT:    ;;#ASMSTART5004; GFX942-NEXT:    ; use s85005; GFX942-NEXT:    ;;#ASMEND5006; GFX942-NEXT:    s_setpc_b64 s[30:31]5007  %vec0 = call <4 x i16> asm "; def $0", "=s"()5008  %vec1 = call <4 x i16> asm "; def $0", "=s"()5009  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 1>5010  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)5011  ret void5012}5013 5014define void @s_shuffle_v2i16_v4i16__6_1() {5015; GFX900-LABEL: s_shuffle_v2i16_v4i16__6_1:5016; GFX900:       ; %bb.0:5017; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5018; GFX900-NEXT:    ;;#ASMSTART5019; GFX900-NEXT:    ; def s[4:5]5020; GFX900-NEXT:    ;;#ASMEND5021; GFX900-NEXT:    ;;#ASMSTART5022; GFX900-NEXT:    ; def s[6:7]5023; GFX900-NEXT:    ;;#ASMEND5024; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s7, s45025; GFX900-NEXT:    ;;#ASMSTART5026; GFX900-NEXT:    ; use s85027; GFX900-NEXT:    ;;#ASMEND5028; GFX900-NEXT:    s_setpc_b64 s[30:31]5029;5030; GFX90A-LABEL: s_shuffle_v2i16_v4i16__6_1:5031; GFX90A:       ; %bb.0:5032; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5033; GFX90A-NEXT:    ;;#ASMSTART5034; GFX90A-NEXT:    ; def s[4:5]5035; GFX90A-NEXT:    ;;#ASMEND5036; GFX90A-NEXT:    ;;#ASMSTART5037; GFX90A-NEXT:    ; def s[6:7]5038; GFX90A-NEXT:    ;;#ASMEND5039; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s7, s45040; GFX90A-NEXT:    ;;#ASMSTART5041; GFX90A-NEXT:    ; use s85042; GFX90A-NEXT:    ;;#ASMEND5043; GFX90A-NEXT:    s_setpc_b64 s[30:31]5044;5045; GFX942-LABEL: s_shuffle_v2i16_v4i16__6_1:5046; GFX942:       ; %bb.0:5047; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5048; GFX942-NEXT:    ;;#ASMSTART5049; GFX942-NEXT:    ; def s[0:1]5050; GFX942-NEXT:    ;;#ASMEND5051; GFX942-NEXT:    ;;#ASMSTART5052; GFX942-NEXT:    ; def s[2:3]5053; GFX942-NEXT:    ;;#ASMEND5054; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s3, s05055; GFX942-NEXT:    ;;#ASMSTART5056; GFX942-NEXT:    ; use s85057; GFX942-NEXT:    ;;#ASMEND5058; GFX942-NEXT:    s_setpc_b64 s[30:31]5059  %vec0 = call <4 x i16> asm "; def $0", "=s"()5060  %vec1 = call <4 x i16> asm "; def $0", "=s"()5061  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 1>5062  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)5063  ret void5064}5065 5066define void @s_shuffle_v2i16_v4i16__u_2() {5067; GFX900-LABEL: s_shuffle_v2i16_v4i16__u_2:5068; GFX900:       ; %bb.0:5069; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5070; GFX900-NEXT:    ;;#ASMSTART5071; GFX900-NEXT:    ; def s[4:5]5072; GFX900-NEXT:    ;;#ASMEND5073; GFX900-NEXT:    s_lshl_b32 s8, s5, 165074; GFX900-NEXT:    ;;#ASMSTART5075; GFX900-NEXT:    ; use s85076; GFX900-NEXT:    ;;#ASMEND5077; GFX900-NEXT:    s_setpc_b64 s[30:31]5078;5079; GFX90A-LABEL: s_shuffle_v2i16_v4i16__u_2:5080; GFX90A:       ; %bb.0:5081; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5082; GFX90A-NEXT:    ;;#ASMSTART5083; GFX90A-NEXT:    ; def s[4:5]5084; GFX90A-NEXT:    ;;#ASMEND5085; GFX90A-NEXT:    s_lshl_b32 s8, s5, 165086; GFX90A-NEXT:    ;;#ASMSTART5087; GFX90A-NEXT:    ; use s85088; GFX90A-NEXT:    ;;#ASMEND5089; GFX90A-NEXT:    s_setpc_b64 s[30:31]5090;5091; GFX942-LABEL: s_shuffle_v2i16_v4i16__u_2:5092; GFX942:       ; %bb.0:5093; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5094; GFX942-NEXT:    ;;#ASMSTART5095; GFX942-NEXT:    ; def s[0:1]5096; GFX942-NEXT:    ;;#ASMEND5097; GFX942-NEXT:    s_lshl_b32 s8, s1, 165098; GFX942-NEXT:    ;;#ASMSTART5099; GFX942-NEXT:    ; use s85100; GFX942-NEXT:    ;;#ASMEND5101; GFX942-NEXT:    s_setpc_b64 s[30:31]5102  %vec0 = call <4 x i16> asm "; def $0", "=s"()5103  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 poison, i32 2>5104  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)5105  ret void5106}5107 5108define void @s_shuffle_v2i16_v4i16__0_2() {5109; GFX900-LABEL: s_shuffle_v2i16_v4i16__0_2:5110; GFX900:       ; %bb.0:5111; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5112; GFX900-NEXT:    ;;#ASMSTART5113; GFX900-NEXT:    ; def s[4:5]5114; GFX900-NEXT:    ;;#ASMEND5115; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s55116; GFX900-NEXT:    ;;#ASMSTART5117; GFX900-NEXT:    ; use s85118; GFX900-NEXT:    ;;#ASMEND5119; GFX900-NEXT:    s_setpc_b64 s[30:31]5120;5121; GFX90A-LABEL: s_shuffle_v2i16_v4i16__0_2:5122; GFX90A:       ; %bb.0:5123; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5124; GFX90A-NEXT:    ;;#ASMSTART5125; GFX90A-NEXT:    ; def s[4:5]5126; GFX90A-NEXT:    ;;#ASMEND5127; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s55128; GFX90A-NEXT:    ;;#ASMSTART5129; GFX90A-NEXT:    ; use s85130; GFX90A-NEXT:    ;;#ASMEND5131; GFX90A-NEXT:    s_setpc_b64 s[30:31]5132;5133; GFX942-LABEL: s_shuffle_v2i16_v4i16__0_2:5134; GFX942:       ; %bb.0:5135; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5136; GFX942-NEXT:    ;;#ASMSTART5137; GFX942-NEXT:    ; def s[0:1]5138; GFX942-NEXT:    ;;#ASMEND5139; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s15140; GFX942-NEXT:    ;;#ASMSTART5141; GFX942-NEXT:    ; use s85142; GFX942-NEXT:    ;;#ASMEND5143; GFX942-NEXT:    s_setpc_b64 s[30:31]5144  %vec0 = call <4 x i16> asm "; def $0", "=s"()5145  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 0, i32 2>5146  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)5147  ret void5148}5149 5150define void @s_shuffle_v2i16_v4i16__1_2() {5151; GFX900-LABEL: s_shuffle_v2i16_v4i16__1_2:5152; GFX900:       ; %bb.0:5153; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5154; GFX900-NEXT:    ;;#ASMSTART5155; GFX900-NEXT:    ; def s[4:5]5156; GFX900-NEXT:    ;;#ASMEND5157; GFX900-NEXT:    s_lshr_b32 s4, s4, 165158; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s55159; GFX900-NEXT:    ;;#ASMSTART5160; GFX900-NEXT:    ; use s85161; GFX900-NEXT:    ;;#ASMEND5162; GFX900-NEXT:    s_setpc_b64 s[30:31]5163;5164; GFX90A-LABEL: s_shuffle_v2i16_v4i16__1_2:5165; GFX90A:       ; %bb.0:5166; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5167; GFX90A-NEXT:    ;;#ASMSTART5168; GFX90A-NEXT:    ; def s[4:5]5169; GFX90A-NEXT:    ;;#ASMEND5170; GFX90A-NEXT:    s_lshr_b32 s4, s4, 165171; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s55172; GFX90A-NEXT:    ;;#ASMSTART5173; GFX90A-NEXT:    ; use s85174; GFX90A-NEXT:    ;;#ASMEND5175; GFX90A-NEXT:    s_setpc_b64 s[30:31]5176;5177; GFX942-LABEL: s_shuffle_v2i16_v4i16__1_2:5178; GFX942:       ; %bb.0:5179; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5180; GFX942-NEXT:    ;;#ASMSTART5181; GFX942-NEXT:    ; def s[0:1]5182; GFX942-NEXT:    ;;#ASMEND5183; GFX942-NEXT:    s_lshr_b32 s0, s0, 165184; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s15185; GFX942-NEXT:    ;;#ASMSTART5186; GFX942-NEXT:    ; use s85187; GFX942-NEXT:    ;;#ASMEND5188; GFX942-NEXT:    s_setpc_b64 s[30:31]5189  %vec0 = call <4 x i16> asm "; def $0", "=s"()5190  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 2>5191  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)5192  ret void5193}5194 5195define void @s_shuffle_v2i16_v4i16__2_2() {5196; GFX900-LABEL: s_shuffle_v2i16_v4i16__2_2:5197; GFX900:       ; %bb.0:5198; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5199; GFX900-NEXT:    ;;#ASMSTART5200; GFX900-NEXT:    ; def s[4:5]5201; GFX900-NEXT:    ;;#ASMEND5202; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s55203; GFX900-NEXT:    ;;#ASMSTART5204; GFX900-NEXT:    ; use s85205; GFX900-NEXT:    ;;#ASMEND5206; GFX900-NEXT:    s_setpc_b64 s[30:31]5207;5208; GFX90A-LABEL: s_shuffle_v2i16_v4i16__2_2:5209; GFX90A:       ; %bb.0:5210; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5211; GFX90A-NEXT:    ;;#ASMSTART5212; GFX90A-NEXT:    ; def s[4:5]5213; GFX90A-NEXT:    ;;#ASMEND5214; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s55215; GFX90A-NEXT:    ;;#ASMSTART5216; GFX90A-NEXT:    ; use s85217; GFX90A-NEXT:    ;;#ASMEND5218; GFX90A-NEXT:    s_setpc_b64 s[30:31]5219;5220; GFX942-LABEL: s_shuffle_v2i16_v4i16__2_2:5221; GFX942:       ; %bb.0:5222; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5223; GFX942-NEXT:    ;;#ASMSTART5224; GFX942-NEXT:    ; def s[0:1]5225; GFX942-NEXT:    ;;#ASMEND5226; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s15227; GFX942-NEXT:    ;;#ASMSTART5228; GFX942-NEXT:    ; use s85229; GFX942-NEXT:    ;;#ASMEND5230; GFX942-NEXT:    s_setpc_b64 s[30:31]5231  %vec0 = call <4 x i16> asm "; def $0", "=s"()5232  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 2>5233  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)5234  ret void5235}5236 5237define void @s_shuffle_v2i16_v4i16__3_2() {5238; GFX900-LABEL: s_shuffle_v2i16_v4i16__3_2:5239; GFX900:       ; %bb.0:5240; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5241; GFX900-NEXT:    ;;#ASMSTART5242; GFX900-NEXT:    ; def s[4:5]5243; GFX900-NEXT:    ;;#ASMEND5244; GFX900-NEXT:    s_lshr_b32 s4, s5, 165245; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s55246; GFX900-NEXT:    ;;#ASMSTART5247; GFX900-NEXT:    ; use s85248; GFX900-NEXT:    ;;#ASMEND5249; GFX900-NEXT:    s_setpc_b64 s[30:31]5250;5251; GFX90A-LABEL: s_shuffle_v2i16_v4i16__3_2:5252; GFX90A:       ; %bb.0:5253; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5254; GFX90A-NEXT:    ;;#ASMSTART5255; GFX90A-NEXT:    ; def s[4:5]5256; GFX90A-NEXT:    ;;#ASMEND5257; GFX90A-NEXT:    s_lshr_b32 s4, s5, 165258; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s55259; GFX90A-NEXT:    ;;#ASMSTART5260; GFX90A-NEXT:    ; use s85261; GFX90A-NEXT:    ;;#ASMEND5262; GFX90A-NEXT:    s_setpc_b64 s[30:31]5263;5264; GFX942-LABEL: s_shuffle_v2i16_v4i16__3_2:5265; GFX942:       ; %bb.0:5266; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5267; GFX942-NEXT:    ;;#ASMSTART5268; GFX942-NEXT:    ; def s[0:1]5269; GFX942-NEXT:    ;;#ASMEND5270; GFX942-NEXT:    s_lshr_b32 s0, s1, 165271; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s15272; GFX942-NEXT:    ;;#ASMSTART5273; GFX942-NEXT:    ; use s85274; GFX942-NEXT:    ;;#ASMEND5275; GFX942-NEXT:    s_setpc_b64 s[30:31]5276  %vec0 = call <4 x i16> asm "; def $0", "=s"()5277  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 2>5278  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)5279  ret void5280}5281 5282define void @s_shuffle_v2i16_v4i16__4_2() {5283; GFX900-LABEL: s_shuffle_v2i16_v4i16__4_2:5284; GFX900:       ; %bb.0:5285; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5286; GFX900-NEXT:    ;;#ASMSTART5287; GFX900-NEXT:    ; def s[4:5]5288; GFX900-NEXT:    ;;#ASMEND5289; GFX900-NEXT:    s_lshl_b32 s8, s5, 165290; GFX900-NEXT:    ;;#ASMSTART5291; GFX900-NEXT:    ; use s85292; GFX900-NEXT:    ;;#ASMEND5293; GFX900-NEXT:    s_setpc_b64 s[30:31]5294;5295; GFX90A-LABEL: s_shuffle_v2i16_v4i16__4_2:5296; GFX90A:       ; %bb.0:5297; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5298; GFX90A-NEXT:    ;;#ASMSTART5299; GFX90A-NEXT:    ; def s[4:5]5300; GFX90A-NEXT:    ;;#ASMEND5301; GFX90A-NEXT:    s_lshl_b32 s8, s5, 165302; GFX90A-NEXT:    ;;#ASMSTART5303; GFX90A-NEXT:    ; use s85304; GFX90A-NEXT:    ;;#ASMEND5305; GFX90A-NEXT:    s_setpc_b64 s[30:31]5306;5307; GFX942-LABEL: s_shuffle_v2i16_v4i16__4_2:5308; GFX942:       ; %bb.0:5309; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5310; GFX942-NEXT:    ;;#ASMSTART5311; GFX942-NEXT:    ; def s[0:1]5312; GFX942-NEXT:    ;;#ASMEND5313; GFX942-NEXT:    s_lshl_b32 s8, s1, 165314; GFX942-NEXT:    ;;#ASMSTART5315; GFX942-NEXT:    ; use s85316; GFX942-NEXT:    ;;#ASMEND5317; GFX942-NEXT:    s_setpc_b64 s[30:31]5318  %vec0 = call <4 x i16> asm "; def $0", "=s"()5319  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 2>5320  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)5321  ret void5322}5323 5324define void @s_shuffle_v2i16_v4i16__5_2() {5325; GFX900-LABEL: s_shuffle_v2i16_v4i16__5_2:5326; GFX900:       ; %bb.0:5327; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5328; GFX900-NEXT:    ;;#ASMSTART5329; GFX900-NEXT:    ; def s[4:5]5330; GFX900-NEXT:    ;;#ASMEND5331; GFX900-NEXT:    ;;#ASMSTART5332; GFX900-NEXT:    ; def s[6:7]5333; GFX900-NEXT:    ;;#ASMEND5334; GFX900-NEXT:    s_lshr_b32 s4, s6, 165335; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s55336; GFX900-NEXT:    ;;#ASMSTART5337; GFX900-NEXT:    ; use s85338; GFX900-NEXT:    ;;#ASMEND5339; GFX900-NEXT:    s_setpc_b64 s[30:31]5340;5341; GFX90A-LABEL: s_shuffle_v2i16_v4i16__5_2:5342; GFX90A:       ; %bb.0:5343; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5344; GFX90A-NEXT:    ;;#ASMSTART5345; GFX90A-NEXT:    ; def s[4:5]5346; GFX90A-NEXT:    ;;#ASMEND5347; GFX90A-NEXT:    ;;#ASMSTART5348; GFX90A-NEXT:    ; def s[6:7]5349; GFX90A-NEXT:    ;;#ASMEND5350; GFX90A-NEXT:    s_lshr_b32 s4, s6, 165351; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s55352; GFX90A-NEXT:    ;;#ASMSTART5353; GFX90A-NEXT:    ; use s85354; GFX90A-NEXT:    ;;#ASMEND5355; GFX90A-NEXT:    s_setpc_b64 s[30:31]5356;5357; GFX942-LABEL: s_shuffle_v2i16_v4i16__5_2:5358; GFX942:       ; %bb.0:5359; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5360; GFX942-NEXT:    ;;#ASMSTART5361; GFX942-NEXT:    ; def s[0:1]5362; GFX942-NEXT:    ;;#ASMEND5363; GFX942-NEXT:    ;;#ASMSTART5364; GFX942-NEXT:    ; def s[2:3]5365; GFX942-NEXT:    ;;#ASMEND5366; GFX942-NEXT:    s_lshr_b32 s0, s2, 165367; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s15368; GFX942-NEXT:    ;;#ASMSTART5369; GFX942-NEXT:    ; use s85370; GFX942-NEXT:    ;;#ASMEND5371; GFX942-NEXT:    s_setpc_b64 s[30:31]5372  %vec0 = call <4 x i16> asm "; def $0", "=s"()5373  %vec1 = call <4 x i16> asm "; def $0", "=s"()5374  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 2>5375  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)5376  ret void5377}5378 5379define void @s_shuffle_v2i16_v4i16__6_2() {5380; GFX900-LABEL: s_shuffle_v2i16_v4i16__6_2:5381; GFX900:       ; %bb.0:5382; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5383; GFX900-NEXT:    ;;#ASMSTART5384; GFX900-NEXT:    ; def s[4:5]5385; GFX900-NEXT:    ;;#ASMEND5386; GFX900-NEXT:    ;;#ASMSTART5387; GFX900-NEXT:    ; def s[6:7]5388; GFX900-NEXT:    ;;#ASMEND5389; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s55390; GFX900-NEXT:    ;;#ASMSTART5391; GFX900-NEXT:    ; use s85392; GFX900-NEXT:    ;;#ASMEND5393; GFX900-NEXT:    s_setpc_b64 s[30:31]5394;5395; GFX90A-LABEL: s_shuffle_v2i16_v4i16__6_2:5396; GFX90A:       ; %bb.0:5397; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5398; GFX90A-NEXT:    ;;#ASMSTART5399; GFX90A-NEXT:    ; def s[4:5]5400; GFX90A-NEXT:    ;;#ASMEND5401; GFX90A-NEXT:    ;;#ASMSTART5402; GFX90A-NEXT:    ; def s[6:7]5403; GFX90A-NEXT:    ;;#ASMEND5404; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s55405; GFX90A-NEXT:    ;;#ASMSTART5406; GFX90A-NEXT:    ; use s85407; GFX90A-NEXT:    ;;#ASMEND5408; GFX90A-NEXT:    s_setpc_b64 s[30:31]5409;5410; GFX942-LABEL: s_shuffle_v2i16_v4i16__6_2:5411; GFX942:       ; %bb.0:5412; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5413; GFX942-NEXT:    ;;#ASMSTART5414; GFX942-NEXT:    ; def s[0:1]5415; GFX942-NEXT:    ;;#ASMEND5416; GFX942-NEXT:    ;;#ASMSTART5417; GFX942-NEXT:    ; def s[2:3]5418; GFX942-NEXT:    ;;#ASMEND5419; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s15420; GFX942-NEXT:    ;;#ASMSTART5421; GFX942-NEXT:    ; use s85422; GFX942-NEXT:    ;;#ASMEND5423; GFX942-NEXT:    s_setpc_b64 s[30:31]5424  %vec0 = call <4 x i16> asm "; def $0", "=s"()5425  %vec1 = call <4 x i16> asm "; def $0", "=s"()5426  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 2>5427  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)5428  ret void5429}5430 5431define void @s_shuffle_v2i16_v4i16__u_3() {5432; GFX900-LABEL: s_shuffle_v2i16_v4i16__u_3:5433; GFX900:       ; %bb.0:5434; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5435; GFX900-NEXT:    ;;#ASMSTART5436; GFX900-NEXT:    ; def s[4:5]5437; GFX900-NEXT:    ;;#ASMEND5438; GFX900-NEXT:    s_mov_b32 s8, s55439; GFX900-NEXT:    ;;#ASMSTART5440; GFX900-NEXT:    ; use s85441; GFX900-NEXT:    ;;#ASMEND5442; GFX900-NEXT:    s_setpc_b64 s[30:31]5443;5444; GFX90A-LABEL: s_shuffle_v2i16_v4i16__u_3:5445; GFX90A:       ; %bb.0:5446; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5447; GFX90A-NEXT:    ;;#ASMSTART5448; GFX90A-NEXT:    ; def s[4:5]5449; GFX90A-NEXT:    ;;#ASMEND5450; GFX90A-NEXT:    s_mov_b32 s8, s55451; GFX90A-NEXT:    ;;#ASMSTART5452; GFX90A-NEXT:    ; use s85453; GFX90A-NEXT:    ;;#ASMEND5454; GFX90A-NEXT:    s_setpc_b64 s[30:31]5455;5456; GFX942-LABEL: s_shuffle_v2i16_v4i16__u_3:5457; GFX942:       ; %bb.0:5458; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5459; GFX942-NEXT:    ;;#ASMSTART5460; GFX942-NEXT:    ; def s[0:1]5461; GFX942-NEXT:    ;;#ASMEND5462; GFX942-NEXT:    s_mov_b32 s8, s15463; GFX942-NEXT:    ;;#ASMSTART5464; GFX942-NEXT:    ; use s85465; GFX942-NEXT:    ;;#ASMEND5466; GFX942-NEXT:    s_setpc_b64 s[30:31]5467  %vec0 = call <4 x i16> asm "; def $0", "=s"()5468  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 poison, i32 3>5469  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)5470  ret void5471}5472 5473define void @s_shuffle_v2i16_v4i16__0_3() {5474; GFX900-LABEL: s_shuffle_v2i16_v4i16__0_3:5475; GFX900:       ; %bb.0:5476; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5477; GFX900-NEXT:    ;;#ASMSTART5478; GFX900-NEXT:    ; def s[4:5]5479; GFX900-NEXT:    ;;#ASMEND5480; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s4, s55481; GFX900-NEXT:    ;;#ASMSTART5482; GFX900-NEXT:    ; use s85483; GFX900-NEXT:    ;;#ASMEND5484; GFX900-NEXT:    s_setpc_b64 s[30:31]5485;5486; GFX90A-LABEL: s_shuffle_v2i16_v4i16__0_3:5487; GFX90A:       ; %bb.0:5488; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5489; GFX90A-NEXT:    ;;#ASMSTART5490; GFX90A-NEXT:    ; def s[4:5]5491; GFX90A-NEXT:    ;;#ASMEND5492; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s4, s55493; GFX90A-NEXT:    ;;#ASMSTART5494; GFX90A-NEXT:    ; use s85495; GFX90A-NEXT:    ;;#ASMEND5496; GFX90A-NEXT:    s_setpc_b64 s[30:31]5497;5498; GFX942-LABEL: s_shuffle_v2i16_v4i16__0_3:5499; GFX942:       ; %bb.0:5500; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5501; GFX942-NEXT:    ;;#ASMSTART5502; GFX942-NEXT:    ; def s[0:1]5503; GFX942-NEXT:    ;;#ASMEND5504; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s0, s15505; GFX942-NEXT:    ;;#ASMSTART5506; GFX942-NEXT:    ; use s85507; GFX942-NEXT:    ;;#ASMEND5508; GFX942-NEXT:    s_setpc_b64 s[30:31]5509  %vec0 = call <4 x i16> asm "; def $0", "=s"()5510  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 0, i32 3>5511  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)5512  ret void5513}5514 5515define void @s_shuffle_v2i16_v4i16__1_3() {5516; GFX900-LABEL: s_shuffle_v2i16_v4i16__1_3:5517; GFX900:       ; %bb.0:5518; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5519; GFX900-NEXT:    ;;#ASMSTART5520; GFX900-NEXT:    ; def s[4:5]5521; GFX900-NEXT:    ;;#ASMEND5522; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s55523; GFX900-NEXT:    ;;#ASMSTART5524; GFX900-NEXT:    ; use s85525; GFX900-NEXT:    ;;#ASMEND5526; GFX900-NEXT:    s_setpc_b64 s[30:31]5527;5528; GFX90A-LABEL: s_shuffle_v2i16_v4i16__1_3:5529; GFX90A:       ; %bb.0:5530; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5531; GFX90A-NEXT:    ;;#ASMSTART5532; GFX90A-NEXT:    ; def s[4:5]5533; GFX90A-NEXT:    ;;#ASMEND5534; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s55535; GFX90A-NEXT:    ;;#ASMSTART5536; GFX90A-NEXT:    ; use s85537; GFX90A-NEXT:    ;;#ASMEND5538; GFX90A-NEXT:    s_setpc_b64 s[30:31]5539;5540; GFX942-LABEL: s_shuffle_v2i16_v4i16__1_3:5541; GFX942:       ; %bb.0:5542; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5543; GFX942-NEXT:    ;;#ASMSTART5544; GFX942-NEXT:    ; def s[0:1]5545; GFX942-NEXT:    ;;#ASMEND5546; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s15547; GFX942-NEXT:    ;;#ASMSTART5548; GFX942-NEXT:    ; use s85549; GFX942-NEXT:    ;;#ASMEND5550; GFX942-NEXT:    s_setpc_b64 s[30:31]5551  %vec0 = call <4 x i16> asm "; def $0", "=s"()5552  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 3>5553  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)5554  ret void5555}5556 5557define void @s_shuffle_v2i16_v4i16__2_3() {5558; GFX900-LABEL: s_shuffle_v2i16_v4i16__2_3:5559; GFX900:       ; %bb.0:5560; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5561; GFX900-NEXT:    ;;#ASMSTART5562; GFX900-NEXT:    ; def s[4:5]5563; GFX900-NEXT:    ;;#ASMEND5564; GFX900-NEXT:    s_mov_b32 s8, s55565; GFX900-NEXT:    ;;#ASMSTART5566; GFX900-NEXT:    ; use s85567; GFX900-NEXT:    ;;#ASMEND5568; GFX900-NEXT:    s_setpc_b64 s[30:31]5569;5570; GFX90A-LABEL: s_shuffle_v2i16_v4i16__2_3:5571; GFX90A:       ; %bb.0:5572; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5573; GFX90A-NEXT:    ;;#ASMSTART5574; GFX90A-NEXT:    ; def s[4:5]5575; GFX90A-NEXT:    ;;#ASMEND5576; GFX90A-NEXT:    s_mov_b32 s8, s55577; GFX90A-NEXT:    ;;#ASMSTART5578; GFX90A-NEXT:    ; use s85579; GFX90A-NEXT:    ;;#ASMEND5580; GFX90A-NEXT:    s_setpc_b64 s[30:31]5581;5582; GFX942-LABEL: s_shuffle_v2i16_v4i16__2_3:5583; GFX942:       ; %bb.0:5584; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5585; GFX942-NEXT:    ;;#ASMSTART5586; GFX942-NEXT:    ; def s[0:1]5587; GFX942-NEXT:    ;;#ASMEND5588; GFX942-NEXT:    s_mov_b32 s8, s15589; GFX942-NEXT:    ;;#ASMSTART5590; GFX942-NEXT:    ; use s85591; GFX942-NEXT:    ;;#ASMEND5592; GFX942-NEXT:    s_setpc_b64 s[30:31]5593  %vec0 = call <4 x i16> asm "; def $0", "=s"()5594  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 3>5595  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)5596  ret void5597}5598 5599define void @s_shuffle_v2i16_v4i16__3_3() {5600; GFX900-LABEL: s_shuffle_v2i16_v4i16__3_3:5601; GFX900:       ; %bb.0:5602; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5603; GFX900-NEXT:    ;;#ASMSTART5604; GFX900-NEXT:    ; def s[4:5]5605; GFX900-NEXT:    ;;#ASMEND5606; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s55607; GFX900-NEXT:    ;;#ASMSTART5608; GFX900-NEXT:    ; use s85609; GFX900-NEXT:    ;;#ASMEND5610; GFX900-NEXT:    s_setpc_b64 s[30:31]5611;5612; GFX90A-LABEL: s_shuffle_v2i16_v4i16__3_3:5613; GFX90A:       ; %bb.0:5614; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5615; GFX90A-NEXT:    ;;#ASMSTART5616; GFX90A-NEXT:    ; def s[4:5]5617; GFX90A-NEXT:    ;;#ASMEND5618; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s55619; GFX90A-NEXT:    ;;#ASMSTART5620; GFX90A-NEXT:    ; use s85621; GFX90A-NEXT:    ;;#ASMEND5622; GFX90A-NEXT:    s_setpc_b64 s[30:31]5623;5624; GFX942-LABEL: s_shuffle_v2i16_v4i16__3_3:5625; GFX942:       ; %bb.0:5626; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5627; GFX942-NEXT:    ;;#ASMSTART5628; GFX942-NEXT:    ; def s[0:1]5629; GFX942-NEXT:    ;;#ASMEND5630; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s15631; GFX942-NEXT:    ;;#ASMSTART5632; GFX942-NEXT:    ; use s85633; GFX942-NEXT:    ;;#ASMEND5634; GFX942-NEXT:    s_setpc_b64 s[30:31]5635  %vec0 = call <4 x i16> asm "; def $0", "=s"()5636  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 3>5637  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)5638  ret void5639}5640 5641define void @s_shuffle_v2i16_v4i16__4_3() {5642; GFX900-LABEL: s_shuffle_v2i16_v4i16__4_3:5643; GFX900:       ; %bb.0:5644; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5645; GFX900-NEXT:    ;;#ASMSTART5646; GFX900-NEXT:    ; def s[4:5]5647; GFX900-NEXT:    ;;#ASMEND5648; GFX900-NEXT:    s_mov_b32 s8, s55649; GFX900-NEXT:    ;;#ASMSTART5650; GFX900-NEXT:    ; use s85651; GFX900-NEXT:    ;;#ASMEND5652; GFX900-NEXT:    s_setpc_b64 s[30:31]5653;5654; GFX90A-LABEL: s_shuffle_v2i16_v4i16__4_3:5655; GFX90A:       ; %bb.0:5656; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5657; GFX90A-NEXT:    ;;#ASMSTART5658; GFX90A-NEXT:    ; def s[4:5]5659; GFX90A-NEXT:    ;;#ASMEND5660; GFX90A-NEXT:    s_mov_b32 s8, s55661; GFX90A-NEXT:    ;;#ASMSTART5662; GFX90A-NEXT:    ; use s85663; GFX90A-NEXT:    ;;#ASMEND5664; GFX90A-NEXT:    s_setpc_b64 s[30:31]5665;5666; GFX942-LABEL: s_shuffle_v2i16_v4i16__4_3:5667; GFX942:       ; %bb.0:5668; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5669; GFX942-NEXT:    ;;#ASMSTART5670; GFX942-NEXT:    ; def s[0:1]5671; GFX942-NEXT:    ;;#ASMEND5672; GFX942-NEXT:    s_mov_b32 s8, s15673; GFX942-NEXT:    ;;#ASMSTART5674; GFX942-NEXT:    ; use s85675; GFX942-NEXT:    ;;#ASMEND5676; GFX942-NEXT:    s_setpc_b64 s[30:31]5677  %vec0 = call <4 x i16> asm "; def $0", "=s"()5678  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 3>5679  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)5680  ret void5681}5682 5683define void @s_shuffle_v2i16_v4i16__5_3() {5684; GFX900-LABEL: s_shuffle_v2i16_v4i16__5_3:5685; GFX900:       ; %bb.0:5686; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5687; GFX900-NEXT:    ;;#ASMSTART5688; GFX900-NEXT:    ; def s[4:5]5689; GFX900-NEXT:    ;;#ASMEND5690; GFX900-NEXT:    ;;#ASMSTART5691; GFX900-NEXT:    ; def s[6:7]5692; GFX900-NEXT:    ;;#ASMEND5693; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s6, s55694; GFX900-NEXT:    ;;#ASMSTART5695; GFX900-NEXT:    ; use s85696; GFX900-NEXT:    ;;#ASMEND5697; GFX900-NEXT:    s_setpc_b64 s[30:31]5698;5699; GFX90A-LABEL: s_shuffle_v2i16_v4i16__5_3:5700; GFX90A:       ; %bb.0:5701; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5702; GFX90A-NEXT:    ;;#ASMSTART5703; GFX90A-NEXT:    ; def s[4:5]5704; GFX90A-NEXT:    ;;#ASMEND5705; GFX90A-NEXT:    ;;#ASMSTART5706; GFX90A-NEXT:    ; def s[6:7]5707; GFX90A-NEXT:    ;;#ASMEND5708; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s6, s55709; GFX90A-NEXT:    ;;#ASMSTART5710; GFX90A-NEXT:    ; use s85711; GFX90A-NEXT:    ;;#ASMEND5712; GFX90A-NEXT:    s_setpc_b64 s[30:31]5713;5714; GFX942-LABEL: s_shuffle_v2i16_v4i16__5_3:5715; GFX942:       ; %bb.0:5716; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5717; GFX942-NEXT:    ;;#ASMSTART5718; GFX942-NEXT:    ; def s[0:1]5719; GFX942-NEXT:    ;;#ASMEND5720; GFX942-NEXT:    ;;#ASMSTART5721; GFX942-NEXT:    ; def s[2:3]5722; GFX942-NEXT:    ;;#ASMEND5723; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s2, s15724; GFX942-NEXT:    ;;#ASMSTART5725; GFX942-NEXT:    ; use s85726; GFX942-NEXT:    ;;#ASMEND5727; GFX942-NEXT:    s_setpc_b64 s[30:31]5728  %vec0 = call <4 x i16> asm "; def $0", "=s"()5729  %vec1 = call <4 x i16> asm "; def $0", "=s"()5730  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 3>5731  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)5732  ret void5733}5734 5735define void @s_shuffle_v2i16_v4i16__6_3() {5736; GFX900-LABEL: s_shuffle_v2i16_v4i16__6_3:5737; GFX900:       ; %bb.0:5738; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5739; GFX900-NEXT:    ;;#ASMSTART5740; GFX900-NEXT:    ; def s[4:5]5741; GFX900-NEXT:    ;;#ASMEND5742; GFX900-NEXT:    ;;#ASMSTART5743; GFX900-NEXT:    ; def s[6:7]5744; GFX900-NEXT:    ;;#ASMEND5745; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s7, s55746; GFX900-NEXT:    ;;#ASMSTART5747; GFX900-NEXT:    ; use s85748; GFX900-NEXT:    ;;#ASMEND5749; GFX900-NEXT:    s_setpc_b64 s[30:31]5750;5751; GFX90A-LABEL: s_shuffle_v2i16_v4i16__6_3:5752; GFX90A:       ; %bb.0:5753; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5754; GFX90A-NEXT:    ;;#ASMSTART5755; GFX90A-NEXT:    ; def s[4:5]5756; GFX90A-NEXT:    ;;#ASMEND5757; GFX90A-NEXT:    ;;#ASMSTART5758; GFX90A-NEXT:    ; def s[6:7]5759; GFX90A-NEXT:    ;;#ASMEND5760; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s7, s55761; GFX90A-NEXT:    ;;#ASMSTART5762; GFX90A-NEXT:    ; use s85763; GFX90A-NEXT:    ;;#ASMEND5764; GFX90A-NEXT:    s_setpc_b64 s[30:31]5765;5766; GFX942-LABEL: s_shuffle_v2i16_v4i16__6_3:5767; GFX942:       ; %bb.0:5768; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5769; GFX942-NEXT:    ;;#ASMSTART5770; GFX942-NEXT:    ; def s[0:1]5771; GFX942-NEXT:    ;;#ASMEND5772; GFX942-NEXT:    ;;#ASMSTART5773; GFX942-NEXT:    ; def s[2:3]5774; GFX942-NEXT:    ;;#ASMEND5775; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s3, s15776; GFX942-NEXT:    ;;#ASMSTART5777; GFX942-NEXT:    ; use s85778; GFX942-NEXT:    ;;#ASMEND5779; GFX942-NEXT:    s_setpc_b64 s[30:31]5780  %vec0 = call <4 x i16> asm "; def $0", "=s"()5781  %vec1 = call <4 x i16> asm "; def $0", "=s"()5782  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 3>5783  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)5784  ret void5785}5786 5787define void @s_shuffle_v2i16_v4i16__u_4() {5788; GFX9-LABEL: s_shuffle_v2i16_v4i16__u_4:5789; GFX9:       ; %bb.0:5790; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5791; GFX9-NEXT:    ;;#ASMSTART5792; GFX9-NEXT:    ; use s85793; GFX9-NEXT:    ;;#ASMEND5794; GFX9-NEXT:    s_setpc_b64 s[30:31]5795  %vec0 = call <4 x i16> asm "; def $0", "=s"()5796  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 poison, i32 4>5797  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)5798  ret void5799}5800 5801define void @s_shuffle_v2i16_v4i16__0_4() {5802; GFX900-LABEL: s_shuffle_v2i16_v4i16__0_4:5803; GFX900:       ; %bb.0:5804; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5805; GFX900-NEXT:    ;;#ASMSTART5806; GFX900-NEXT:    ; def s[8:9]5807; GFX900-NEXT:    ;;#ASMEND5808; GFX900-NEXT:    ;;#ASMSTART5809; GFX900-NEXT:    ; use s85810; GFX900-NEXT:    ;;#ASMEND5811; GFX900-NEXT:    s_setpc_b64 s[30:31]5812;5813; GFX90A-LABEL: s_shuffle_v2i16_v4i16__0_4:5814; GFX90A:       ; %bb.0:5815; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5816; GFX90A-NEXT:    ;;#ASMSTART5817; GFX90A-NEXT:    ; def s[8:9]5818; GFX90A-NEXT:    ;;#ASMEND5819; GFX90A-NEXT:    ;;#ASMSTART5820; GFX90A-NEXT:    ; use s85821; GFX90A-NEXT:    ;;#ASMEND5822; GFX90A-NEXT:    s_setpc_b64 s[30:31]5823;5824; GFX942-LABEL: s_shuffle_v2i16_v4i16__0_4:5825; GFX942:       ; %bb.0:5826; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5827; GFX942-NEXT:    ;;#ASMSTART5828; GFX942-NEXT:    ; def s[8:9]5829; GFX942-NEXT:    ;;#ASMEND5830; GFX942-NEXT:    s_nop 05831; GFX942-NEXT:    ;;#ASMSTART5832; GFX942-NEXT:    ; use s85833; GFX942-NEXT:    ;;#ASMEND5834; GFX942-NEXT:    s_setpc_b64 s[30:31]5835  %vec0 = call <4 x i16> asm "; def $0", "=s"()5836  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 0, i32 4>5837  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)5838  ret void5839}5840 5841define void @s_shuffle_v2i16_v4i16__1_4() {5842; GFX900-LABEL: s_shuffle_v2i16_v4i16__1_4:5843; GFX900:       ; %bb.0:5844; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5845; GFX900-NEXT:    ;;#ASMSTART5846; GFX900-NEXT:    ; def s[4:5]5847; GFX900-NEXT:    ;;#ASMEND5848; GFX900-NEXT:    s_lshr_b32 s8, s4, 165849; GFX900-NEXT:    ;;#ASMSTART5850; GFX900-NEXT:    ; use s85851; GFX900-NEXT:    ;;#ASMEND5852; GFX900-NEXT:    s_setpc_b64 s[30:31]5853;5854; GFX90A-LABEL: s_shuffle_v2i16_v4i16__1_4:5855; GFX90A:       ; %bb.0:5856; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5857; GFX90A-NEXT:    ;;#ASMSTART5858; GFX90A-NEXT:    ; def s[4:5]5859; GFX90A-NEXT:    ;;#ASMEND5860; GFX90A-NEXT:    s_lshr_b32 s8, s4, 165861; GFX90A-NEXT:    ;;#ASMSTART5862; GFX90A-NEXT:    ; use s85863; GFX90A-NEXT:    ;;#ASMEND5864; GFX90A-NEXT:    s_setpc_b64 s[30:31]5865;5866; GFX942-LABEL: s_shuffle_v2i16_v4i16__1_4:5867; GFX942:       ; %bb.0:5868; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5869; GFX942-NEXT:    ;;#ASMSTART5870; GFX942-NEXT:    ; def s[0:1]5871; GFX942-NEXT:    ;;#ASMEND5872; GFX942-NEXT:    s_lshr_b32 s8, s0, 165873; GFX942-NEXT:    ;;#ASMSTART5874; GFX942-NEXT:    ; use s85875; GFX942-NEXT:    ;;#ASMEND5876; GFX942-NEXT:    s_setpc_b64 s[30:31]5877  %vec0 = call <4 x i16> asm "; def $0", "=s"()5878  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 1, i32 4>5879  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)5880  ret void5881}5882 5883define void @s_shuffle_v2i16_v4i16__2_4() {5884; GFX900-LABEL: s_shuffle_v2i16_v4i16__2_4:5885; GFX900:       ; %bb.0:5886; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5887; GFX900-NEXT:    ;;#ASMSTART5888; GFX900-NEXT:    ; def s[4:5]5889; GFX900-NEXT:    ;;#ASMEND5890; GFX900-NEXT:    s_mov_b32 s8, s55891; GFX900-NEXT:    ;;#ASMSTART5892; GFX900-NEXT:    ; use s85893; GFX900-NEXT:    ;;#ASMEND5894; GFX900-NEXT:    s_setpc_b64 s[30:31]5895;5896; GFX90A-LABEL: s_shuffle_v2i16_v4i16__2_4:5897; GFX90A:       ; %bb.0:5898; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5899; GFX90A-NEXT:    ;;#ASMSTART5900; GFX90A-NEXT:    ; def s[4:5]5901; GFX90A-NEXT:    ;;#ASMEND5902; GFX90A-NEXT:    s_mov_b32 s8, s55903; GFX90A-NEXT:    ;;#ASMSTART5904; GFX90A-NEXT:    ; use s85905; GFX90A-NEXT:    ;;#ASMEND5906; GFX90A-NEXT:    s_setpc_b64 s[30:31]5907;5908; GFX942-LABEL: s_shuffle_v2i16_v4i16__2_4:5909; GFX942:       ; %bb.0:5910; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5911; GFX942-NEXT:    ;;#ASMSTART5912; GFX942-NEXT:    ; def s[0:1]5913; GFX942-NEXT:    ;;#ASMEND5914; GFX942-NEXT:    s_mov_b32 s8, s15915; GFX942-NEXT:    ;;#ASMSTART5916; GFX942-NEXT:    ; use s85917; GFX942-NEXT:    ;;#ASMEND5918; GFX942-NEXT:    s_setpc_b64 s[30:31]5919  %vec0 = call <4 x i16> asm "; def $0", "=s"()5920  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 2, i32 4>5921  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)5922  ret void5923}5924 5925define void @s_shuffle_v2i16_v4i16__3_4() {5926; GFX900-LABEL: s_shuffle_v2i16_v4i16__3_4:5927; GFX900:       ; %bb.0:5928; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5929; GFX900-NEXT:    ;;#ASMSTART5930; GFX900-NEXT:    ; def s[4:5]5931; GFX900-NEXT:    ;;#ASMEND5932; GFX900-NEXT:    s_lshr_b32 s8, s5, 165933; GFX900-NEXT:    ;;#ASMSTART5934; GFX900-NEXT:    ; use s85935; GFX900-NEXT:    ;;#ASMEND5936; GFX900-NEXT:    s_setpc_b64 s[30:31]5937;5938; GFX90A-LABEL: s_shuffle_v2i16_v4i16__3_4:5939; GFX90A:       ; %bb.0:5940; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5941; GFX90A-NEXT:    ;;#ASMSTART5942; GFX90A-NEXT:    ; def s[4:5]5943; GFX90A-NEXT:    ;;#ASMEND5944; GFX90A-NEXT:    s_lshr_b32 s8, s5, 165945; GFX90A-NEXT:    ;;#ASMSTART5946; GFX90A-NEXT:    ; use s85947; GFX90A-NEXT:    ;;#ASMEND5948; GFX90A-NEXT:    s_setpc_b64 s[30:31]5949;5950; GFX942-LABEL: s_shuffle_v2i16_v4i16__3_4:5951; GFX942:       ; %bb.0:5952; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5953; GFX942-NEXT:    ;;#ASMSTART5954; GFX942-NEXT:    ; def s[0:1]5955; GFX942-NEXT:    ;;#ASMEND5956; GFX942-NEXT:    s_lshr_b32 s8, s1, 165957; GFX942-NEXT:    ;;#ASMSTART5958; GFX942-NEXT:    ; use s85959; GFX942-NEXT:    ;;#ASMEND5960; GFX942-NEXT:    s_setpc_b64 s[30:31]5961  %vec0 = call <4 x i16> asm "; def $0", "=s"()5962  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 3, i32 4>5963  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)5964  ret void5965}5966 5967define void @s_shuffle_v2i16_v4i16__4_4() {5968; GFX9-LABEL: s_shuffle_v2i16_v4i16__4_4:5969; GFX9:       ; %bb.0:5970; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5971; GFX9-NEXT:    ;;#ASMSTART5972; GFX9-NEXT:    ; use s85973; GFX9-NEXT:    ;;#ASMEND5974; GFX9-NEXT:    s_setpc_b64 s[30:31]5975  %vec0 = call <4 x i16> asm "; def $0", "=s"()5976  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> poison, <2 x i32> <i32 4, i32 4>5977  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)5978  ret void5979}5980 5981define void @s_shuffle_v2i16_v4i16__5_4() {5982; GFX900-LABEL: s_shuffle_v2i16_v4i16__5_4:5983; GFX900:       ; %bb.0:5984; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5985; GFX900-NEXT:    ;;#ASMSTART5986; GFX900-NEXT:    ; def s[4:5]5987; GFX900-NEXT:    ;;#ASMEND5988; GFX900-NEXT:    s_lshr_b32 s5, s4, 165989; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s45990; GFX900-NEXT:    ;;#ASMSTART5991; GFX900-NEXT:    ; use s85992; GFX900-NEXT:    ;;#ASMEND5993; GFX900-NEXT:    s_setpc_b64 s[30:31]5994;5995; GFX90A-LABEL: s_shuffle_v2i16_v4i16__5_4:5996; GFX90A:       ; %bb.0:5997; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5998; GFX90A-NEXT:    ;;#ASMSTART5999; GFX90A-NEXT:    ; def s[4:5]6000; GFX90A-NEXT:    ;;#ASMEND6001; GFX90A-NEXT:    s_lshr_b32 s5, s4, 166002; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s46003; GFX90A-NEXT:    ;;#ASMSTART6004; GFX90A-NEXT:    ; use s86005; GFX90A-NEXT:    ;;#ASMEND6006; GFX90A-NEXT:    s_setpc_b64 s[30:31]6007;6008; GFX942-LABEL: s_shuffle_v2i16_v4i16__5_4:6009; GFX942:       ; %bb.0:6010; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6011; GFX942-NEXT:    ;;#ASMSTART6012; GFX942-NEXT:    ; def s[0:1]6013; GFX942-NEXT:    ;;#ASMEND6014; GFX942-NEXT:    s_lshr_b32 s1, s0, 166015; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s06016; GFX942-NEXT:    ;;#ASMSTART6017; GFX942-NEXT:    ; use s86018; GFX942-NEXT:    ;;#ASMEND6019; GFX942-NEXT:    s_setpc_b64 s[30:31]6020  %vec0 = call <4 x i16> asm "; def $0", "=s"()6021  %vec1 = call <4 x i16> asm "; def $0", "=s"()6022  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 4>6023  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)6024  ret void6025}6026 6027define void @s_shuffle_v2i16_v4i16__6_4() {6028; GFX900-LABEL: s_shuffle_v2i16_v4i16__6_4:6029; GFX900:       ; %bb.0:6030; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6031; GFX900-NEXT:    ;;#ASMSTART6032; GFX900-NEXT:    ; def s[4:5]6033; GFX900-NEXT:    ;;#ASMEND6034; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s46035; GFX900-NEXT:    ;;#ASMSTART6036; GFX900-NEXT:    ; use s86037; GFX900-NEXT:    ;;#ASMEND6038; GFX900-NEXT:    s_setpc_b64 s[30:31]6039;6040; GFX90A-LABEL: s_shuffle_v2i16_v4i16__6_4:6041; GFX90A:       ; %bb.0:6042; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6043; GFX90A-NEXT:    ;;#ASMSTART6044; GFX90A-NEXT:    ; def s[4:5]6045; GFX90A-NEXT:    ;;#ASMEND6046; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s46047; GFX90A-NEXT:    ;;#ASMSTART6048; GFX90A-NEXT:    ; use s86049; GFX90A-NEXT:    ;;#ASMEND6050; GFX90A-NEXT:    s_setpc_b64 s[30:31]6051;6052; GFX942-LABEL: s_shuffle_v2i16_v4i16__6_4:6053; GFX942:       ; %bb.0:6054; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6055; GFX942-NEXT:    ;;#ASMSTART6056; GFX942-NEXT:    ; def s[0:1]6057; GFX942-NEXT:    ;;#ASMEND6058; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s06059; GFX942-NEXT:    ;;#ASMSTART6060; GFX942-NEXT:    ; use s86061; GFX942-NEXT:    ;;#ASMEND6062; GFX942-NEXT:    s_setpc_b64 s[30:31]6063  %vec0 = call <4 x i16> asm "; def $0", "=s"()6064  %vec1 = call <4 x i16> asm "; def $0", "=s"()6065  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 4>6066  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)6067  ret void6068}6069 6070define void @s_shuffle_v2i16_v4i16__u_5() {6071; GFX900-LABEL: s_shuffle_v2i16_v4i16__u_5:6072; GFX900:       ; %bb.0:6073; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6074; GFX900-NEXT:    ;;#ASMSTART6075; GFX900-NEXT:    ; def s[8:9]6076; GFX900-NEXT:    ;;#ASMEND6077; GFX900-NEXT:    ;;#ASMSTART6078; GFX900-NEXT:    ; use s86079; GFX900-NEXT:    ;;#ASMEND6080; GFX900-NEXT:    s_setpc_b64 s[30:31]6081;6082; GFX90A-LABEL: s_shuffle_v2i16_v4i16__u_5:6083; GFX90A:       ; %bb.0:6084; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6085; GFX90A-NEXT:    ;;#ASMSTART6086; GFX90A-NEXT:    ; def s[8:9]6087; GFX90A-NEXT:    ;;#ASMEND6088; GFX90A-NEXT:    ;;#ASMSTART6089; GFX90A-NEXT:    ; use s86090; GFX90A-NEXT:    ;;#ASMEND6091; GFX90A-NEXT:    s_setpc_b64 s[30:31]6092;6093; GFX942-LABEL: s_shuffle_v2i16_v4i16__u_5:6094; GFX942:       ; %bb.0:6095; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6096; GFX942-NEXT:    ;;#ASMSTART6097; GFX942-NEXT:    ; def s[8:9]6098; GFX942-NEXT:    ;;#ASMEND6099; GFX942-NEXT:    s_nop 06100; GFX942-NEXT:    ;;#ASMSTART6101; GFX942-NEXT:    ; use s86102; GFX942-NEXT:    ;;#ASMEND6103; GFX942-NEXT:    s_setpc_b64 s[30:31]6104  %vec0 = call <4 x i16> asm "; def $0", "=s"()6105  %vec1 = call <4 x i16> asm "; def $0", "=s"()6106  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 poison, i32 5>6107  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)6108  ret void6109}6110 6111define void @s_shuffle_v2i16_v4i16__0_5() {6112; GFX900-LABEL: s_shuffle_v2i16_v4i16__0_5:6113; GFX900:       ; %bb.0:6114; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6115; GFX900-NEXT:    ;;#ASMSTART6116; GFX900-NEXT:    ; def s[4:5]6117; GFX900-NEXT:    ;;#ASMEND6118; GFX900-NEXT:    ;;#ASMSTART6119; GFX900-NEXT:    ; def s[6:7]6120; GFX900-NEXT:    ;;#ASMEND6121; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s4, s66122; GFX900-NEXT:    ;;#ASMSTART6123; GFX900-NEXT:    ; use s86124; GFX900-NEXT:    ;;#ASMEND6125; GFX900-NEXT:    s_setpc_b64 s[30:31]6126;6127; GFX90A-LABEL: s_shuffle_v2i16_v4i16__0_5:6128; GFX90A:       ; %bb.0:6129; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6130; GFX90A-NEXT:    ;;#ASMSTART6131; GFX90A-NEXT:    ; def s[4:5]6132; GFX90A-NEXT:    ;;#ASMEND6133; GFX90A-NEXT:    ;;#ASMSTART6134; GFX90A-NEXT:    ; def s[6:7]6135; GFX90A-NEXT:    ;;#ASMEND6136; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s4, s66137; GFX90A-NEXT:    ;;#ASMSTART6138; GFX90A-NEXT:    ; use s86139; GFX90A-NEXT:    ;;#ASMEND6140; GFX90A-NEXT:    s_setpc_b64 s[30:31]6141;6142; GFX942-LABEL: s_shuffle_v2i16_v4i16__0_5:6143; GFX942:       ; %bb.0:6144; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6145; GFX942-NEXT:    ;;#ASMSTART6146; GFX942-NEXT:    ; def s[0:1]6147; GFX942-NEXT:    ;;#ASMEND6148; GFX942-NEXT:    ;;#ASMSTART6149; GFX942-NEXT:    ; def s[2:3]6150; GFX942-NEXT:    ;;#ASMEND6151; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s0, s26152; GFX942-NEXT:    ;;#ASMSTART6153; GFX942-NEXT:    ; use s86154; GFX942-NEXT:    ;;#ASMEND6155; GFX942-NEXT:    s_setpc_b64 s[30:31]6156  %vec0 = call <4 x i16> asm "; def $0", "=s"()6157  %vec1 = call <4 x i16> asm "; def $0", "=s"()6158  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 0, i32 5>6159  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)6160  ret void6161}6162 6163define void @s_shuffle_v2i16_v4i16__1_5() {6164; GFX900-LABEL: s_shuffle_v2i16_v4i16__1_5:6165; GFX900:       ; %bb.0:6166; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6167; GFX900-NEXT:    ;;#ASMSTART6168; GFX900-NEXT:    ; def s[4:5]6169; GFX900-NEXT:    ;;#ASMEND6170; GFX900-NEXT:    ;;#ASMSTART6171; GFX900-NEXT:    ; def s[6:7]6172; GFX900-NEXT:    ;;#ASMEND6173; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s66174; GFX900-NEXT:    ;;#ASMSTART6175; GFX900-NEXT:    ; use s86176; GFX900-NEXT:    ;;#ASMEND6177; GFX900-NEXT:    s_setpc_b64 s[30:31]6178;6179; GFX90A-LABEL: s_shuffle_v2i16_v4i16__1_5:6180; GFX90A:       ; %bb.0:6181; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6182; GFX90A-NEXT:    ;;#ASMSTART6183; GFX90A-NEXT:    ; def s[4:5]6184; GFX90A-NEXT:    ;;#ASMEND6185; GFX90A-NEXT:    ;;#ASMSTART6186; GFX90A-NEXT:    ; def s[6:7]6187; GFX90A-NEXT:    ;;#ASMEND6188; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s66189; GFX90A-NEXT:    ;;#ASMSTART6190; GFX90A-NEXT:    ; use s86191; GFX90A-NEXT:    ;;#ASMEND6192; GFX90A-NEXT:    s_setpc_b64 s[30:31]6193;6194; GFX942-LABEL: s_shuffle_v2i16_v4i16__1_5:6195; GFX942:       ; %bb.0:6196; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6197; GFX942-NEXT:    ;;#ASMSTART6198; GFX942-NEXT:    ; def s[0:1]6199; GFX942-NEXT:    ;;#ASMEND6200; GFX942-NEXT:    ;;#ASMSTART6201; GFX942-NEXT:    ; def s[2:3]6202; GFX942-NEXT:    ;;#ASMEND6203; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s26204; GFX942-NEXT:    ;;#ASMSTART6205; GFX942-NEXT:    ; use s86206; GFX942-NEXT:    ;;#ASMEND6207; GFX942-NEXT:    s_setpc_b64 s[30:31]6208  %vec0 = call <4 x i16> asm "; def $0", "=s"()6209  %vec1 = call <4 x i16> asm "; def $0", "=s"()6210  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 1, i32 5>6211  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)6212  ret void6213}6214 6215define void @s_shuffle_v2i16_v4i16__2_5() {6216; GFX900-LABEL: s_shuffle_v2i16_v4i16__2_5:6217; GFX900:       ; %bb.0:6218; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6219; GFX900-NEXT:    ;;#ASMSTART6220; GFX900-NEXT:    ; def s[4:5]6221; GFX900-NEXT:    ;;#ASMEND6222; GFX900-NEXT:    ;;#ASMSTART6223; GFX900-NEXT:    ; def s[6:7]6224; GFX900-NEXT:    ;;#ASMEND6225; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s5, s66226; GFX900-NEXT:    ;;#ASMSTART6227; GFX900-NEXT:    ; use s86228; GFX900-NEXT:    ;;#ASMEND6229; GFX900-NEXT:    s_setpc_b64 s[30:31]6230;6231; GFX90A-LABEL: s_shuffle_v2i16_v4i16__2_5:6232; GFX90A:       ; %bb.0:6233; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6234; GFX90A-NEXT:    ;;#ASMSTART6235; GFX90A-NEXT:    ; def s[4:5]6236; GFX90A-NEXT:    ;;#ASMEND6237; GFX90A-NEXT:    ;;#ASMSTART6238; GFX90A-NEXT:    ; def s[6:7]6239; GFX90A-NEXT:    ;;#ASMEND6240; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s5, s66241; GFX90A-NEXT:    ;;#ASMSTART6242; GFX90A-NEXT:    ; use s86243; GFX90A-NEXT:    ;;#ASMEND6244; GFX90A-NEXT:    s_setpc_b64 s[30:31]6245;6246; GFX942-LABEL: s_shuffle_v2i16_v4i16__2_5:6247; GFX942:       ; %bb.0:6248; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6249; GFX942-NEXT:    ;;#ASMSTART6250; GFX942-NEXT:    ; def s[0:1]6251; GFX942-NEXT:    ;;#ASMEND6252; GFX942-NEXT:    ;;#ASMSTART6253; GFX942-NEXT:    ; def s[2:3]6254; GFX942-NEXT:    ;;#ASMEND6255; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s1, s26256; GFX942-NEXT:    ;;#ASMSTART6257; GFX942-NEXT:    ; use s86258; GFX942-NEXT:    ;;#ASMEND6259; GFX942-NEXT:    s_setpc_b64 s[30:31]6260  %vec0 = call <4 x i16> asm "; def $0", "=s"()6261  %vec1 = call <4 x i16> asm "; def $0", "=s"()6262  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 2, i32 5>6263  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)6264  ret void6265}6266 6267define void @s_shuffle_v2i16_v4i16__3_5() {6268; GFX900-LABEL: s_shuffle_v2i16_v4i16__3_5:6269; GFX900:       ; %bb.0:6270; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6271; GFX900-NEXT:    ;;#ASMSTART6272; GFX900-NEXT:    ; def s[4:5]6273; GFX900-NEXT:    ;;#ASMEND6274; GFX900-NEXT:    ;;#ASMSTART6275; GFX900-NEXT:    ; def s[6:7]6276; GFX900-NEXT:    ;;#ASMEND6277; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s66278; GFX900-NEXT:    ;;#ASMSTART6279; GFX900-NEXT:    ; use s86280; GFX900-NEXT:    ;;#ASMEND6281; GFX900-NEXT:    s_setpc_b64 s[30:31]6282;6283; GFX90A-LABEL: s_shuffle_v2i16_v4i16__3_5:6284; GFX90A:       ; %bb.0:6285; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6286; GFX90A-NEXT:    ;;#ASMSTART6287; GFX90A-NEXT:    ; def s[4:5]6288; GFX90A-NEXT:    ;;#ASMEND6289; GFX90A-NEXT:    ;;#ASMSTART6290; GFX90A-NEXT:    ; def s[6:7]6291; GFX90A-NEXT:    ;;#ASMEND6292; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s66293; GFX90A-NEXT:    ;;#ASMSTART6294; GFX90A-NEXT:    ; use s86295; GFX90A-NEXT:    ;;#ASMEND6296; GFX90A-NEXT:    s_setpc_b64 s[30:31]6297;6298; GFX942-LABEL: s_shuffle_v2i16_v4i16__3_5:6299; GFX942:       ; %bb.0:6300; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6301; GFX942-NEXT:    ;;#ASMSTART6302; GFX942-NEXT:    ; def s[0:1]6303; GFX942-NEXT:    ;;#ASMEND6304; GFX942-NEXT:    ;;#ASMSTART6305; GFX942-NEXT:    ; def s[2:3]6306; GFX942-NEXT:    ;;#ASMEND6307; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s26308; GFX942-NEXT:    ;;#ASMSTART6309; GFX942-NEXT:    ; use s86310; GFX942-NEXT:    ;;#ASMEND6311; GFX942-NEXT:    s_setpc_b64 s[30:31]6312  %vec0 = call <4 x i16> asm "; def $0", "=s"()6313  %vec1 = call <4 x i16> asm "; def $0", "=s"()6314  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 3, i32 5>6315  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)6316  ret void6317}6318 6319define void @s_shuffle_v2i16_v4i16__4_5() {6320; GFX900-LABEL: s_shuffle_v2i16_v4i16__4_5:6321; GFX900:       ; %bb.0:6322; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6323; GFX900-NEXT:    ;;#ASMSTART6324; GFX900-NEXT:    ; def s[8:9]6325; GFX900-NEXT:    ;;#ASMEND6326; GFX900-NEXT:    ;;#ASMSTART6327; GFX900-NEXT:    ; use s86328; GFX900-NEXT:    ;;#ASMEND6329; GFX900-NEXT:    s_setpc_b64 s[30:31]6330;6331; GFX90A-LABEL: s_shuffle_v2i16_v4i16__4_5:6332; GFX90A:       ; %bb.0:6333; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6334; GFX90A-NEXT:    ;;#ASMSTART6335; GFX90A-NEXT:    ; def s[8:9]6336; GFX90A-NEXT:    ;;#ASMEND6337; GFX90A-NEXT:    ;;#ASMSTART6338; GFX90A-NEXT:    ; use s86339; GFX90A-NEXT:    ;;#ASMEND6340; GFX90A-NEXT:    s_setpc_b64 s[30:31]6341;6342; GFX942-LABEL: s_shuffle_v2i16_v4i16__4_5:6343; GFX942:       ; %bb.0:6344; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6345; GFX942-NEXT:    ;;#ASMSTART6346; GFX942-NEXT:    ; def s[8:9]6347; GFX942-NEXT:    ;;#ASMEND6348; GFX942-NEXT:    s_nop 06349; GFX942-NEXT:    ;;#ASMSTART6350; GFX942-NEXT:    ; use s86351; GFX942-NEXT:    ;;#ASMEND6352; GFX942-NEXT:    s_setpc_b64 s[30:31]6353  %vec0 = call <4 x i16> asm "; def $0", "=s"()6354  %vec1 = call <4 x i16> asm "; def $0", "=s"()6355  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 4, i32 5>6356  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)6357  ret void6358}6359 6360define void @s_shuffle_v2i16_v4i16__5_5() {6361; GFX900-LABEL: s_shuffle_v2i16_v4i16__5_5:6362; GFX900:       ; %bb.0:6363; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6364; GFX900-NEXT:    ;;#ASMSTART6365; GFX900-NEXT:    ; def s[4:5]6366; GFX900-NEXT:    ;;#ASMEND6367; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s46368; GFX900-NEXT:    ;;#ASMSTART6369; GFX900-NEXT:    ; use s86370; GFX900-NEXT:    ;;#ASMEND6371; GFX900-NEXT:    s_setpc_b64 s[30:31]6372;6373; GFX90A-LABEL: s_shuffle_v2i16_v4i16__5_5:6374; GFX90A:       ; %bb.0:6375; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6376; GFX90A-NEXT:    ;;#ASMSTART6377; GFX90A-NEXT:    ; def s[4:5]6378; GFX90A-NEXT:    ;;#ASMEND6379; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s46380; GFX90A-NEXT:    ;;#ASMSTART6381; GFX90A-NEXT:    ; use s86382; GFX90A-NEXT:    ;;#ASMEND6383; GFX90A-NEXT:    s_setpc_b64 s[30:31]6384;6385; GFX942-LABEL: s_shuffle_v2i16_v4i16__5_5:6386; GFX942:       ; %bb.0:6387; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6388; GFX942-NEXT:    ;;#ASMSTART6389; GFX942-NEXT:    ; def s[0:1]6390; GFX942-NEXT:    ;;#ASMEND6391; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s06392; GFX942-NEXT:    ;;#ASMSTART6393; GFX942-NEXT:    ; use s86394; GFX942-NEXT:    ;;#ASMEND6395; GFX942-NEXT:    s_setpc_b64 s[30:31]6396  %vec0 = call <4 x i16> asm "; def $0", "=s"()6397  %vec1 = call <4 x i16> asm "; def $0", "=s"()6398  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 5>6399  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)6400  ret void6401}6402 6403define void @s_shuffle_v2i16_v4i16__6_5() {6404; GFX900-LABEL: s_shuffle_v2i16_v4i16__6_5:6405; GFX900:       ; %bb.0:6406; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6407; GFX900-NEXT:    ;;#ASMSTART6408; GFX900-NEXT:    ; def s[4:5]6409; GFX900-NEXT:    ;;#ASMEND6410; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s5, s46411; GFX900-NEXT:    ;;#ASMSTART6412; GFX900-NEXT:    ; use s86413; GFX900-NEXT:    ;;#ASMEND6414; GFX900-NEXT:    s_setpc_b64 s[30:31]6415;6416; GFX90A-LABEL: s_shuffle_v2i16_v4i16__6_5:6417; GFX90A:       ; %bb.0:6418; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6419; GFX90A-NEXT:    ;;#ASMSTART6420; GFX90A-NEXT:    ; def s[4:5]6421; GFX90A-NEXT:    ;;#ASMEND6422; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s5, s46423; GFX90A-NEXT:    ;;#ASMSTART6424; GFX90A-NEXT:    ; use s86425; GFX90A-NEXT:    ;;#ASMEND6426; GFX90A-NEXT:    s_setpc_b64 s[30:31]6427;6428; GFX942-LABEL: s_shuffle_v2i16_v4i16__6_5:6429; GFX942:       ; %bb.0:6430; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6431; GFX942-NEXT:    ;;#ASMSTART6432; GFX942-NEXT:    ; def s[0:1]6433; GFX942-NEXT:    ;;#ASMEND6434; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s1, s06435; GFX942-NEXT:    ;;#ASMSTART6436; GFX942-NEXT:    ; use s86437; GFX942-NEXT:    ;;#ASMEND6438; GFX942-NEXT:    s_setpc_b64 s[30:31]6439  %vec0 = call <4 x i16> asm "; def $0", "=s"()6440  %vec1 = call <4 x i16> asm "; def $0", "=s"()6441  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 5>6442  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)6443  ret void6444}6445 6446define void @s_shuffle_v2i16_v4i16__u_6() {6447; GFX900-LABEL: s_shuffle_v2i16_v4i16__u_6:6448; GFX900:       ; %bb.0:6449; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6450; GFX900-NEXT:    ;;#ASMSTART6451; GFX900-NEXT:    ; def s[4:5]6452; GFX900-NEXT:    ;;#ASMEND6453; GFX900-NEXT:    s_lshl_b32 s8, s5, 166454; GFX900-NEXT:    ;;#ASMSTART6455; GFX900-NEXT:    ; use s86456; GFX900-NEXT:    ;;#ASMEND6457; GFX900-NEXT:    s_setpc_b64 s[30:31]6458;6459; GFX90A-LABEL: s_shuffle_v2i16_v4i16__u_6:6460; GFX90A:       ; %bb.0:6461; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6462; GFX90A-NEXT:    ;;#ASMSTART6463; GFX90A-NEXT:    ; def s[4:5]6464; GFX90A-NEXT:    ;;#ASMEND6465; GFX90A-NEXT:    s_lshl_b32 s8, s5, 166466; GFX90A-NEXT:    ;;#ASMSTART6467; GFX90A-NEXT:    ; use s86468; GFX90A-NEXT:    ;;#ASMEND6469; GFX90A-NEXT:    s_setpc_b64 s[30:31]6470;6471; GFX942-LABEL: s_shuffle_v2i16_v4i16__u_6:6472; GFX942:       ; %bb.0:6473; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6474; GFX942-NEXT:    ;;#ASMSTART6475; GFX942-NEXT:    ; def s[0:1]6476; GFX942-NEXT:    ;;#ASMEND6477; GFX942-NEXT:    s_lshl_b32 s8, s1, 166478; GFX942-NEXT:    ;;#ASMSTART6479; GFX942-NEXT:    ; use s86480; GFX942-NEXT:    ;;#ASMEND6481; GFX942-NEXT:    s_setpc_b64 s[30:31]6482  %vec0 = call <4 x i16> asm "; def $0", "=s"()6483  %vec1 = call <4 x i16> asm "; def $0", "=s"()6484  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 poison, i32 6>6485  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)6486  ret void6487}6488 6489define void @s_shuffle_v2i16_v4i16__0_6() {6490; GFX900-LABEL: s_shuffle_v2i16_v4i16__0_6:6491; GFX900:       ; %bb.0:6492; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6493; GFX900-NEXT:    ;;#ASMSTART6494; GFX900-NEXT:    ; def s[4:5]6495; GFX900-NEXT:    ;;#ASMEND6496; GFX900-NEXT:    ;;#ASMSTART6497; GFX900-NEXT:    ; def s[6:7]6498; GFX900-NEXT:    ;;#ASMEND6499; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s76500; GFX900-NEXT:    ;;#ASMSTART6501; GFX900-NEXT:    ; use s86502; GFX900-NEXT:    ;;#ASMEND6503; GFX900-NEXT:    s_setpc_b64 s[30:31]6504;6505; GFX90A-LABEL: s_shuffle_v2i16_v4i16__0_6:6506; GFX90A:       ; %bb.0:6507; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6508; GFX90A-NEXT:    ;;#ASMSTART6509; GFX90A-NEXT:    ; def s[4:5]6510; GFX90A-NEXT:    ;;#ASMEND6511; GFX90A-NEXT:    ;;#ASMSTART6512; GFX90A-NEXT:    ; def s[6:7]6513; GFX90A-NEXT:    ;;#ASMEND6514; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s76515; GFX90A-NEXT:    ;;#ASMSTART6516; GFX90A-NEXT:    ; use s86517; GFX90A-NEXT:    ;;#ASMEND6518; GFX90A-NEXT:    s_setpc_b64 s[30:31]6519;6520; GFX942-LABEL: s_shuffle_v2i16_v4i16__0_6:6521; GFX942:       ; %bb.0:6522; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6523; GFX942-NEXT:    ;;#ASMSTART6524; GFX942-NEXT:    ; def s[0:1]6525; GFX942-NEXT:    ;;#ASMEND6526; GFX942-NEXT:    ;;#ASMSTART6527; GFX942-NEXT:    ; def s[2:3]6528; GFX942-NEXT:    ;;#ASMEND6529; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s36530; GFX942-NEXT:    ;;#ASMSTART6531; GFX942-NEXT:    ; use s86532; GFX942-NEXT:    ;;#ASMEND6533; GFX942-NEXT:    s_setpc_b64 s[30:31]6534  %vec0 = call <4 x i16> asm "; def $0", "=s"()6535  %vec1 = call <4 x i16> asm "; def $0", "=s"()6536  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 0, i32 6>6537  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)6538  ret void6539}6540 6541define void @s_shuffle_v2i16_v4i16__1_6() {6542; GFX900-LABEL: s_shuffle_v2i16_v4i16__1_6:6543; GFX900:       ; %bb.0:6544; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6545; GFX900-NEXT:    ;;#ASMSTART6546; GFX900-NEXT:    ; def s[4:5]6547; GFX900-NEXT:    ;;#ASMEND6548; GFX900-NEXT:    s_lshr_b32 s4, s4, 166549; GFX900-NEXT:    ;;#ASMSTART6550; GFX900-NEXT:    ; def s[6:7]6551; GFX900-NEXT:    ;;#ASMEND6552; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s76553; GFX900-NEXT:    ;;#ASMSTART6554; GFX900-NEXT:    ; use s86555; GFX900-NEXT:    ;;#ASMEND6556; GFX900-NEXT:    s_setpc_b64 s[30:31]6557;6558; GFX90A-LABEL: s_shuffle_v2i16_v4i16__1_6:6559; GFX90A:       ; %bb.0:6560; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6561; GFX90A-NEXT:    ;;#ASMSTART6562; GFX90A-NEXT:    ; def s[4:5]6563; GFX90A-NEXT:    ;;#ASMEND6564; GFX90A-NEXT:    s_lshr_b32 s4, s4, 166565; GFX90A-NEXT:    ;;#ASMSTART6566; GFX90A-NEXT:    ; def s[6:7]6567; GFX90A-NEXT:    ;;#ASMEND6568; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s76569; GFX90A-NEXT:    ;;#ASMSTART6570; GFX90A-NEXT:    ; use s86571; GFX90A-NEXT:    ;;#ASMEND6572; GFX90A-NEXT:    s_setpc_b64 s[30:31]6573;6574; GFX942-LABEL: s_shuffle_v2i16_v4i16__1_6:6575; GFX942:       ; %bb.0:6576; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6577; GFX942-NEXT:    ;;#ASMSTART6578; GFX942-NEXT:    ; def s[0:1]6579; GFX942-NEXT:    ;;#ASMEND6580; GFX942-NEXT:    s_lshr_b32 s0, s0, 166581; GFX942-NEXT:    ;;#ASMSTART6582; GFX942-NEXT:    ; def s[2:3]6583; GFX942-NEXT:    ;;#ASMEND6584; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s36585; GFX942-NEXT:    ;;#ASMSTART6586; GFX942-NEXT:    ; use s86587; GFX942-NEXT:    ;;#ASMEND6588; GFX942-NEXT:    s_setpc_b64 s[30:31]6589  %vec0 = call <4 x i16> asm "; def $0", "=s"()6590  %vec1 = call <4 x i16> asm "; def $0", "=s"()6591  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 1, i32 6>6592  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)6593  ret void6594}6595 6596define void @s_shuffle_v2i16_v4i16__2_6() {6597; GFX900-LABEL: s_shuffle_v2i16_v4i16__2_6:6598; GFX900:       ; %bb.0:6599; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6600; GFX900-NEXT:    ;;#ASMSTART6601; GFX900-NEXT:    ; def s[4:5]6602; GFX900-NEXT:    ;;#ASMEND6603; GFX900-NEXT:    ;;#ASMSTART6604; GFX900-NEXT:    ; def s[6:7]6605; GFX900-NEXT:    ;;#ASMEND6606; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s76607; GFX900-NEXT:    ;;#ASMSTART6608; GFX900-NEXT:    ; use s86609; GFX900-NEXT:    ;;#ASMEND6610; GFX900-NEXT:    s_setpc_b64 s[30:31]6611;6612; GFX90A-LABEL: s_shuffle_v2i16_v4i16__2_6:6613; GFX90A:       ; %bb.0:6614; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6615; GFX90A-NEXT:    ;;#ASMSTART6616; GFX90A-NEXT:    ; def s[4:5]6617; GFX90A-NEXT:    ;;#ASMEND6618; GFX90A-NEXT:    ;;#ASMSTART6619; GFX90A-NEXT:    ; def s[6:7]6620; GFX90A-NEXT:    ;;#ASMEND6621; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s76622; GFX90A-NEXT:    ;;#ASMSTART6623; GFX90A-NEXT:    ; use s86624; GFX90A-NEXT:    ;;#ASMEND6625; GFX90A-NEXT:    s_setpc_b64 s[30:31]6626;6627; GFX942-LABEL: s_shuffle_v2i16_v4i16__2_6:6628; GFX942:       ; %bb.0:6629; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6630; GFX942-NEXT:    ;;#ASMSTART6631; GFX942-NEXT:    ; def s[0:1]6632; GFX942-NEXT:    ;;#ASMEND6633; GFX942-NEXT:    ;;#ASMSTART6634; GFX942-NEXT:    ; def s[2:3]6635; GFX942-NEXT:    ;;#ASMEND6636; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s36637; GFX942-NEXT:    ;;#ASMSTART6638; GFX942-NEXT:    ; use s86639; GFX942-NEXT:    ;;#ASMEND6640; GFX942-NEXT:    s_setpc_b64 s[30:31]6641  %vec0 = call <4 x i16> asm "; def $0", "=s"()6642  %vec1 = call <4 x i16> asm "; def $0", "=s"()6643  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 2, i32 6>6644  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)6645  ret void6646}6647 6648define void @s_shuffle_v2i16_v4i16__3_6() {6649; GFX900-LABEL: s_shuffle_v2i16_v4i16__3_6:6650; GFX900:       ; %bb.0:6651; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6652; GFX900-NEXT:    ;;#ASMSTART6653; GFX900-NEXT:    ; def s[4:5]6654; GFX900-NEXT:    ;;#ASMEND6655; GFX900-NEXT:    s_lshr_b32 s4, s5, 166656; GFX900-NEXT:    ;;#ASMSTART6657; GFX900-NEXT:    ; def s[6:7]6658; GFX900-NEXT:    ;;#ASMEND6659; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s76660; GFX900-NEXT:    ;;#ASMSTART6661; GFX900-NEXT:    ; use s86662; GFX900-NEXT:    ;;#ASMEND6663; GFX900-NEXT:    s_setpc_b64 s[30:31]6664;6665; GFX90A-LABEL: s_shuffle_v2i16_v4i16__3_6:6666; GFX90A:       ; %bb.0:6667; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6668; GFX90A-NEXT:    ;;#ASMSTART6669; GFX90A-NEXT:    ; def s[4:5]6670; GFX90A-NEXT:    ;;#ASMEND6671; GFX90A-NEXT:    s_lshr_b32 s4, s5, 166672; GFX90A-NEXT:    ;;#ASMSTART6673; GFX90A-NEXT:    ; def s[6:7]6674; GFX90A-NEXT:    ;;#ASMEND6675; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s76676; GFX90A-NEXT:    ;;#ASMSTART6677; GFX90A-NEXT:    ; use s86678; GFX90A-NEXT:    ;;#ASMEND6679; GFX90A-NEXT:    s_setpc_b64 s[30:31]6680;6681; GFX942-LABEL: s_shuffle_v2i16_v4i16__3_6:6682; GFX942:       ; %bb.0:6683; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6684; GFX942-NEXT:    ;;#ASMSTART6685; GFX942-NEXT:    ; def s[0:1]6686; GFX942-NEXT:    ;;#ASMEND6687; GFX942-NEXT:    s_lshr_b32 s0, s1, 166688; GFX942-NEXT:    ;;#ASMSTART6689; GFX942-NEXT:    ; def s[2:3]6690; GFX942-NEXT:    ;;#ASMEND6691; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s36692; GFX942-NEXT:    ;;#ASMSTART6693; GFX942-NEXT:    ; use s86694; GFX942-NEXT:    ;;#ASMEND6695; GFX942-NEXT:    s_setpc_b64 s[30:31]6696  %vec0 = call <4 x i16> asm "; def $0", "=s"()6697  %vec1 = call <4 x i16> asm "; def $0", "=s"()6698  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 3, i32 6>6699  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)6700  ret void6701}6702 6703define void @s_shuffle_v2i16_v4i16__4_6() {6704; GFX900-LABEL: s_shuffle_v2i16_v4i16__4_6:6705; GFX900:       ; %bb.0:6706; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6707; GFX900-NEXT:    ;;#ASMSTART6708; GFX900-NEXT:    ; def s[4:5]6709; GFX900-NEXT:    ;;#ASMEND6710; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s56711; GFX900-NEXT:    ;;#ASMSTART6712; GFX900-NEXT:    ; use s86713; GFX900-NEXT:    ;;#ASMEND6714; GFX900-NEXT:    s_setpc_b64 s[30:31]6715;6716; GFX90A-LABEL: s_shuffle_v2i16_v4i16__4_6:6717; GFX90A:       ; %bb.0:6718; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6719; GFX90A-NEXT:    ;;#ASMSTART6720; GFX90A-NEXT:    ; def s[4:5]6721; GFX90A-NEXT:    ;;#ASMEND6722; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s56723; GFX90A-NEXT:    ;;#ASMSTART6724; GFX90A-NEXT:    ; use s86725; GFX90A-NEXT:    ;;#ASMEND6726; GFX90A-NEXT:    s_setpc_b64 s[30:31]6727;6728; GFX942-LABEL: s_shuffle_v2i16_v4i16__4_6:6729; GFX942:       ; %bb.0:6730; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6731; GFX942-NEXT:    ;;#ASMSTART6732; GFX942-NEXT:    ; def s[0:1]6733; GFX942-NEXT:    ;;#ASMEND6734; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s16735; GFX942-NEXT:    ;;#ASMSTART6736; GFX942-NEXT:    ; use s86737; GFX942-NEXT:    ;;#ASMEND6738; GFX942-NEXT:    s_setpc_b64 s[30:31]6739  %vec0 = call <4 x i16> asm "; def $0", "=s"()6740  %vec1 = call <4 x i16> asm "; def $0", "=s"()6741  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 4, i32 6>6742  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)6743  ret void6744}6745 6746define void @s_shuffle_v2i16_v4i16__5_6() {6747; GFX900-LABEL: s_shuffle_v2i16_v4i16__5_6:6748; GFX900:       ; %bb.0:6749; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6750; GFX900-NEXT:    ;;#ASMSTART6751; GFX900-NEXT:    ; def s[4:5]6752; GFX900-NEXT:    ;;#ASMEND6753; GFX900-NEXT:    s_lshr_b32 s4, s4, 166754; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s56755; GFX900-NEXT:    ;;#ASMSTART6756; GFX900-NEXT:    ; use s86757; GFX900-NEXT:    ;;#ASMEND6758; GFX900-NEXT:    s_setpc_b64 s[30:31]6759;6760; GFX90A-LABEL: s_shuffle_v2i16_v4i16__5_6:6761; GFX90A:       ; %bb.0:6762; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6763; GFX90A-NEXT:    ;;#ASMSTART6764; GFX90A-NEXT:    ; def s[4:5]6765; GFX90A-NEXT:    ;;#ASMEND6766; GFX90A-NEXT:    s_lshr_b32 s4, s4, 166767; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s56768; GFX90A-NEXT:    ;;#ASMSTART6769; GFX90A-NEXT:    ; use s86770; GFX90A-NEXT:    ;;#ASMEND6771; GFX90A-NEXT:    s_setpc_b64 s[30:31]6772;6773; GFX942-LABEL: s_shuffle_v2i16_v4i16__5_6:6774; GFX942:       ; %bb.0:6775; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6776; GFX942-NEXT:    ;;#ASMSTART6777; GFX942-NEXT:    ; def s[0:1]6778; GFX942-NEXT:    ;;#ASMEND6779; GFX942-NEXT:    s_lshr_b32 s0, s0, 166780; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s16781; GFX942-NEXT:    ;;#ASMSTART6782; GFX942-NEXT:    ; use s86783; GFX942-NEXT:    ;;#ASMEND6784; GFX942-NEXT:    s_setpc_b64 s[30:31]6785  %vec0 = call <4 x i16> asm "; def $0", "=s"()6786  %vec1 = call <4 x i16> asm "; def $0", "=s"()6787  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 6>6788  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)6789  ret void6790}6791 6792define void @s_shuffle_v2i16_v4i16__6_6() {6793; GFX900-LABEL: s_shuffle_v2i16_v4i16__6_6:6794; GFX900:       ; %bb.0:6795; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6796; GFX900-NEXT:    ;;#ASMSTART6797; GFX900-NEXT:    ; def s[4:5]6798; GFX900-NEXT:    ;;#ASMEND6799; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s56800; GFX900-NEXT:    ;;#ASMSTART6801; GFX900-NEXT:    ; use s86802; GFX900-NEXT:    ;;#ASMEND6803; GFX900-NEXT:    s_setpc_b64 s[30:31]6804;6805; GFX90A-LABEL: s_shuffle_v2i16_v4i16__6_6:6806; GFX90A:       ; %bb.0:6807; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6808; GFX90A-NEXT:    ;;#ASMSTART6809; GFX90A-NEXT:    ; def s[4:5]6810; GFX90A-NEXT:    ;;#ASMEND6811; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s56812; GFX90A-NEXT:    ;;#ASMSTART6813; GFX90A-NEXT:    ; use s86814; GFX90A-NEXT:    ;;#ASMEND6815; GFX90A-NEXT:    s_setpc_b64 s[30:31]6816;6817; GFX942-LABEL: s_shuffle_v2i16_v4i16__6_6:6818; GFX942:       ; %bb.0:6819; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6820; GFX942-NEXT:    ;;#ASMSTART6821; GFX942-NEXT:    ; def s[0:1]6822; GFX942-NEXT:    ;;#ASMEND6823; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s16824; GFX942-NEXT:    ;;#ASMSTART6825; GFX942-NEXT:    ; use s86826; GFX942-NEXT:    ;;#ASMEND6827; GFX942-NEXT:    s_setpc_b64 s[30:31]6828  %vec0 = call <4 x i16> asm "; def $0", "=s"()6829  %vec1 = call <4 x i16> asm "; def $0", "=s"()6830  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 6>6831  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)6832  ret void6833}6834 6835define void @s_shuffle_v2i16_v4i16__u_7() {6836; GFX900-LABEL: s_shuffle_v2i16_v4i16__u_7:6837; GFX900:       ; %bb.0:6838; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6839; GFX900-NEXT:    ;;#ASMSTART6840; GFX900-NEXT:    ; def s[4:5]6841; GFX900-NEXT:    ;;#ASMEND6842; GFX900-NEXT:    s_mov_b32 s8, s56843; GFX900-NEXT:    ;;#ASMSTART6844; GFX900-NEXT:    ; use s86845; GFX900-NEXT:    ;;#ASMEND6846; GFX900-NEXT:    s_setpc_b64 s[30:31]6847;6848; GFX90A-LABEL: s_shuffle_v2i16_v4i16__u_7:6849; GFX90A:       ; %bb.0:6850; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6851; GFX90A-NEXT:    ;;#ASMSTART6852; GFX90A-NEXT:    ; def s[4:5]6853; GFX90A-NEXT:    ;;#ASMEND6854; GFX90A-NEXT:    s_mov_b32 s8, s56855; GFX90A-NEXT:    ;;#ASMSTART6856; GFX90A-NEXT:    ; use s86857; GFX90A-NEXT:    ;;#ASMEND6858; GFX90A-NEXT:    s_setpc_b64 s[30:31]6859;6860; GFX942-LABEL: s_shuffle_v2i16_v4i16__u_7:6861; GFX942:       ; %bb.0:6862; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6863; GFX942-NEXT:    ;;#ASMSTART6864; GFX942-NEXT:    ; def s[0:1]6865; GFX942-NEXT:    ;;#ASMEND6866; GFX942-NEXT:    s_mov_b32 s8, s16867; GFX942-NEXT:    ;;#ASMSTART6868; GFX942-NEXT:    ; use s86869; GFX942-NEXT:    ;;#ASMEND6870; GFX942-NEXT:    s_setpc_b64 s[30:31]6871  %vec0 = call <4 x i16> asm "; def $0", "=s"()6872  %vec1 = call <4 x i16> asm "; def $0", "=s"()6873  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 poison, i32 7>6874  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)6875  ret void6876}6877 6878define void @s_shuffle_v2i16_v4i16__0_7() {6879; GFX900-LABEL: s_shuffle_v2i16_v4i16__0_7:6880; GFX900:       ; %bb.0:6881; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6882; GFX900-NEXT:    ;;#ASMSTART6883; GFX900-NEXT:    ; def s[4:5]6884; GFX900-NEXT:    ;;#ASMEND6885; GFX900-NEXT:    ;;#ASMSTART6886; GFX900-NEXT:    ; def s[6:7]6887; GFX900-NEXT:    ;;#ASMEND6888; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s4, s76889; GFX900-NEXT:    ;;#ASMSTART6890; GFX900-NEXT:    ; use s86891; GFX900-NEXT:    ;;#ASMEND6892; GFX900-NEXT:    s_setpc_b64 s[30:31]6893;6894; GFX90A-LABEL: s_shuffle_v2i16_v4i16__0_7:6895; GFX90A:       ; %bb.0:6896; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6897; GFX90A-NEXT:    ;;#ASMSTART6898; GFX90A-NEXT:    ; def s[4:5]6899; GFX90A-NEXT:    ;;#ASMEND6900; GFX90A-NEXT:    ;;#ASMSTART6901; GFX90A-NEXT:    ; def s[6:7]6902; GFX90A-NEXT:    ;;#ASMEND6903; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s4, s76904; GFX90A-NEXT:    ;;#ASMSTART6905; GFX90A-NEXT:    ; use s86906; GFX90A-NEXT:    ;;#ASMEND6907; GFX90A-NEXT:    s_setpc_b64 s[30:31]6908;6909; GFX942-LABEL: s_shuffle_v2i16_v4i16__0_7:6910; GFX942:       ; %bb.0:6911; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6912; GFX942-NEXT:    ;;#ASMSTART6913; GFX942-NEXT:    ; def s[0:1]6914; GFX942-NEXT:    ;;#ASMEND6915; GFX942-NEXT:    ;;#ASMSTART6916; GFX942-NEXT:    ; def s[2:3]6917; GFX942-NEXT:    ;;#ASMEND6918; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s0, s36919; GFX942-NEXT:    ;;#ASMSTART6920; GFX942-NEXT:    ; use s86921; GFX942-NEXT:    ;;#ASMEND6922; GFX942-NEXT:    s_setpc_b64 s[30:31]6923  %vec0 = call <4 x i16> asm "; def $0", "=s"()6924  %vec1 = call <4 x i16> asm "; def $0", "=s"()6925  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 0, i32 7>6926  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)6927  ret void6928}6929 6930define void @s_shuffle_v2i16_v4i16__1_7() {6931; GFX900-LABEL: s_shuffle_v2i16_v4i16__1_7:6932; GFX900:       ; %bb.0:6933; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6934; GFX900-NEXT:    ;;#ASMSTART6935; GFX900-NEXT:    ; def s[4:5]6936; GFX900-NEXT:    ;;#ASMEND6937; GFX900-NEXT:    ;;#ASMSTART6938; GFX900-NEXT:    ; def s[6:7]6939; GFX900-NEXT:    ;;#ASMEND6940; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s76941; GFX900-NEXT:    ;;#ASMSTART6942; GFX900-NEXT:    ; use s86943; GFX900-NEXT:    ;;#ASMEND6944; GFX900-NEXT:    s_setpc_b64 s[30:31]6945;6946; GFX90A-LABEL: s_shuffle_v2i16_v4i16__1_7:6947; GFX90A:       ; %bb.0:6948; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6949; GFX90A-NEXT:    ;;#ASMSTART6950; GFX90A-NEXT:    ; def s[4:5]6951; GFX90A-NEXT:    ;;#ASMEND6952; GFX90A-NEXT:    ;;#ASMSTART6953; GFX90A-NEXT:    ; def s[6:7]6954; GFX90A-NEXT:    ;;#ASMEND6955; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s76956; GFX90A-NEXT:    ;;#ASMSTART6957; GFX90A-NEXT:    ; use s86958; GFX90A-NEXT:    ;;#ASMEND6959; GFX90A-NEXT:    s_setpc_b64 s[30:31]6960;6961; GFX942-LABEL: s_shuffle_v2i16_v4i16__1_7:6962; GFX942:       ; %bb.0:6963; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6964; GFX942-NEXT:    ;;#ASMSTART6965; GFX942-NEXT:    ; def s[0:1]6966; GFX942-NEXT:    ;;#ASMEND6967; GFX942-NEXT:    ;;#ASMSTART6968; GFX942-NEXT:    ; def s[2:3]6969; GFX942-NEXT:    ;;#ASMEND6970; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s36971; GFX942-NEXT:    ;;#ASMSTART6972; GFX942-NEXT:    ; use s86973; GFX942-NEXT:    ;;#ASMEND6974; GFX942-NEXT:    s_setpc_b64 s[30:31]6975  %vec0 = call <4 x i16> asm "; def $0", "=s"()6976  %vec1 = call <4 x i16> asm "; def $0", "=s"()6977  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 1, i32 7>6978  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)6979  ret void6980}6981 6982define void @s_shuffle_v2i16_v4i16__2_7() {6983; GFX900-LABEL: s_shuffle_v2i16_v4i16__2_7:6984; GFX900:       ; %bb.0:6985; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6986; GFX900-NEXT:    ;;#ASMSTART6987; GFX900-NEXT:    ; def s[4:5]6988; GFX900-NEXT:    ;;#ASMEND6989; GFX900-NEXT:    ;;#ASMSTART6990; GFX900-NEXT:    ; def s[6:7]6991; GFX900-NEXT:    ;;#ASMEND6992; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s5, s76993; GFX900-NEXT:    ;;#ASMSTART6994; GFX900-NEXT:    ; use s86995; GFX900-NEXT:    ;;#ASMEND6996; GFX900-NEXT:    s_setpc_b64 s[30:31]6997;6998; GFX90A-LABEL: s_shuffle_v2i16_v4i16__2_7:6999; GFX90A:       ; %bb.0:7000; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7001; GFX90A-NEXT:    ;;#ASMSTART7002; GFX90A-NEXT:    ; def s[4:5]7003; GFX90A-NEXT:    ;;#ASMEND7004; GFX90A-NEXT:    ;;#ASMSTART7005; GFX90A-NEXT:    ; def s[6:7]7006; GFX90A-NEXT:    ;;#ASMEND7007; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s5, s77008; GFX90A-NEXT:    ;;#ASMSTART7009; GFX90A-NEXT:    ; use s87010; GFX90A-NEXT:    ;;#ASMEND7011; GFX90A-NEXT:    s_setpc_b64 s[30:31]7012;7013; GFX942-LABEL: s_shuffle_v2i16_v4i16__2_7:7014; GFX942:       ; %bb.0:7015; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7016; GFX942-NEXT:    ;;#ASMSTART7017; GFX942-NEXT:    ; def s[0:1]7018; GFX942-NEXT:    ;;#ASMEND7019; GFX942-NEXT:    ;;#ASMSTART7020; GFX942-NEXT:    ; def s[2:3]7021; GFX942-NEXT:    ;;#ASMEND7022; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s1, s37023; GFX942-NEXT:    ;;#ASMSTART7024; GFX942-NEXT:    ; use s87025; GFX942-NEXT:    ;;#ASMEND7026; GFX942-NEXT:    s_setpc_b64 s[30:31]7027  %vec0 = call <4 x i16> asm "; def $0", "=s"()7028  %vec1 = call <4 x i16> asm "; def $0", "=s"()7029  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 2, i32 7>7030  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)7031  ret void7032}7033 7034define void @s_shuffle_v2i16_v4i16__3_7() {7035; GFX900-LABEL: s_shuffle_v2i16_v4i16__3_7:7036; GFX900:       ; %bb.0:7037; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7038; GFX900-NEXT:    ;;#ASMSTART7039; GFX900-NEXT:    ; def s[4:5]7040; GFX900-NEXT:    ;;#ASMEND7041; GFX900-NEXT:    ;;#ASMSTART7042; GFX900-NEXT:    ; def s[6:7]7043; GFX900-NEXT:    ;;#ASMEND7044; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s77045; GFX900-NEXT:    ;;#ASMSTART7046; GFX900-NEXT:    ; use s87047; GFX900-NEXT:    ;;#ASMEND7048; GFX900-NEXT:    s_setpc_b64 s[30:31]7049;7050; GFX90A-LABEL: s_shuffle_v2i16_v4i16__3_7:7051; GFX90A:       ; %bb.0:7052; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7053; GFX90A-NEXT:    ;;#ASMSTART7054; GFX90A-NEXT:    ; def s[4:5]7055; GFX90A-NEXT:    ;;#ASMEND7056; GFX90A-NEXT:    ;;#ASMSTART7057; GFX90A-NEXT:    ; def s[6:7]7058; GFX90A-NEXT:    ;;#ASMEND7059; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s77060; GFX90A-NEXT:    ;;#ASMSTART7061; GFX90A-NEXT:    ; use s87062; GFX90A-NEXT:    ;;#ASMEND7063; GFX90A-NEXT:    s_setpc_b64 s[30:31]7064;7065; GFX942-LABEL: s_shuffle_v2i16_v4i16__3_7:7066; GFX942:       ; %bb.0:7067; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7068; GFX942-NEXT:    ;;#ASMSTART7069; GFX942-NEXT:    ; def s[0:1]7070; GFX942-NEXT:    ;;#ASMEND7071; GFX942-NEXT:    ;;#ASMSTART7072; GFX942-NEXT:    ; def s[2:3]7073; GFX942-NEXT:    ;;#ASMEND7074; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s37075; GFX942-NEXT:    ;;#ASMSTART7076; GFX942-NEXT:    ; use s87077; GFX942-NEXT:    ;;#ASMEND7078; GFX942-NEXT:    s_setpc_b64 s[30:31]7079  %vec0 = call <4 x i16> asm "; def $0", "=s"()7080  %vec1 = call <4 x i16> asm "; def $0", "=s"()7081  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 3, i32 7>7082  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)7083  ret void7084}7085 7086define void @s_shuffle_v2i16_v4i16__4_7() {7087; GFX900-LABEL: s_shuffle_v2i16_v4i16__4_7:7088; GFX900:       ; %bb.0:7089; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7090; GFX900-NEXT:    ;;#ASMSTART7091; GFX900-NEXT:    ; def s[4:5]7092; GFX900-NEXT:    ;;#ASMEND7093; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s4, s57094; GFX900-NEXT:    ;;#ASMSTART7095; GFX900-NEXT:    ; use s87096; GFX900-NEXT:    ;;#ASMEND7097; GFX900-NEXT:    s_setpc_b64 s[30:31]7098;7099; GFX90A-LABEL: s_shuffle_v2i16_v4i16__4_7:7100; GFX90A:       ; %bb.0:7101; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7102; GFX90A-NEXT:    ;;#ASMSTART7103; GFX90A-NEXT:    ; def s[4:5]7104; GFX90A-NEXT:    ;;#ASMEND7105; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s4, s57106; GFX90A-NEXT:    ;;#ASMSTART7107; GFX90A-NEXT:    ; use s87108; GFX90A-NEXT:    ;;#ASMEND7109; GFX90A-NEXT:    s_setpc_b64 s[30:31]7110;7111; GFX942-LABEL: s_shuffle_v2i16_v4i16__4_7:7112; GFX942:       ; %bb.0:7113; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7114; GFX942-NEXT:    ;;#ASMSTART7115; GFX942-NEXT:    ; def s[0:1]7116; GFX942-NEXT:    ;;#ASMEND7117; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s0, s17118; GFX942-NEXT:    ;;#ASMSTART7119; GFX942-NEXT:    ; use s87120; GFX942-NEXT:    ;;#ASMEND7121; GFX942-NEXT:    s_setpc_b64 s[30:31]7122  %vec0 = call <4 x i16> asm "; def $0", "=s"()7123  %vec1 = call <4 x i16> asm "; def $0", "=s"()7124  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 4, i32 7>7125  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)7126  ret void7127}7128 7129define void @s_shuffle_v2i16_v4i16__5_7() {7130; GFX900-LABEL: s_shuffle_v2i16_v4i16__5_7:7131; GFX900:       ; %bb.0:7132; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7133; GFX900-NEXT:    ;;#ASMSTART7134; GFX900-NEXT:    ; def s[4:5]7135; GFX900-NEXT:    ;;#ASMEND7136; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s57137; GFX900-NEXT:    ;;#ASMSTART7138; GFX900-NEXT:    ; use s87139; GFX900-NEXT:    ;;#ASMEND7140; GFX900-NEXT:    s_setpc_b64 s[30:31]7141;7142; GFX90A-LABEL: s_shuffle_v2i16_v4i16__5_7:7143; GFX90A:       ; %bb.0:7144; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7145; GFX90A-NEXT:    ;;#ASMSTART7146; GFX90A-NEXT:    ; def s[4:5]7147; GFX90A-NEXT:    ;;#ASMEND7148; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s57149; GFX90A-NEXT:    ;;#ASMSTART7150; GFX90A-NEXT:    ; use s87151; GFX90A-NEXT:    ;;#ASMEND7152; GFX90A-NEXT:    s_setpc_b64 s[30:31]7153;7154; GFX942-LABEL: s_shuffle_v2i16_v4i16__5_7:7155; GFX942:       ; %bb.0:7156; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7157; GFX942-NEXT:    ;;#ASMSTART7158; GFX942-NEXT:    ; def s[0:1]7159; GFX942-NEXT:    ;;#ASMEND7160; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s17161; GFX942-NEXT:    ;;#ASMSTART7162; GFX942-NEXT:    ; use s87163; GFX942-NEXT:    ;;#ASMEND7164; GFX942-NEXT:    s_setpc_b64 s[30:31]7165  %vec0 = call <4 x i16> asm "; def $0", "=s"()7166  %vec1 = call <4 x i16> asm "; def $0", "=s"()7167  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 5, i32 7>7168  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)7169  ret void7170}7171 7172define void @s_shuffle_v2i16_v4i16__6_7() {7173; GFX900-LABEL: s_shuffle_v2i16_v4i16__6_7:7174; GFX900:       ; %bb.0:7175; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7176; GFX900-NEXT:    ;;#ASMSTART7177; GFX900-NEXT:    ; def s[4:5]7178; GFX900-NEXT:    ;;#ASMEND7179; GFX900-NEXT:    s_mov_b32 s8, s57180; GFX900-NEXT:    ;;#ASMSTART7181; GFX900-NEXT:    ; use s87182; GFX900-NEXT:    ;;#ASMEND7183; GFX900-NEXT:    s_setpc_b64 s[30:31]7184;7185; GFX90A-LABEL: s_shuffle_v2i16_v4i16__6_7:7186; GFX90A:       ; %bb.0:7187; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7188; GFX90A-NEXT:    ;;#ASMSTART7189; GFX90A-NEXT:    ; def s[4:5]7190; GFX90A-NEXT:    ;;#ASMEND7191; GFX90A-NEXT:    s_mov_b32 s8, s57192; GFX90A-NEXT:    ;;#ASMSTART7193; GFX90A-NEXT:    ; use s87194; GFX90A-NEXT:    ;;#ASMEND7195; GFX90A-NEXT:    s_setpc_b64 s[30:31]7196;7197; GFX942-LABEL: s_shuffle_v2i16_v4i16__6_7:7198; GFX942:       ; %bb.0:7199; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7200; GFX942-NEXT:    ;;#ASMSTART7201; GFX942-NEXT:    ; def s[0:1]7202; GFX942-NEXT:    ;;#ASMEND7203; GFX942-NEXT:    s_mov_b32 s8, s17204; GFX942-NEXT:    ;;#ASMSTART7205; GFX942-NEXT:    ; use s87206; GFX942-NEXT:    ;;#ASMEND7207; GFX942-NEXT:    s_setpc_b64 s[30:31]7208  %vec0 = call <4 x i16> asm "; def $0", "=s"()7209  %vec1 = call <4 x i16> asm "; def $0", "=s"()7210  %shuf = shufflevector <4 x i16> %vec0, <4 x i16> %vec1, <2 x i32> <i32 6, i32 7>7211  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)7212  ret void7213}7214;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:7215; GFX90APLUS: {{.*}}7216