brintos

brintos / llvm-project-archived public Read only

0
0
Text · 220.4 KiB · c985c06 Raw
6200 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9,GFX900 %s3; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX90A %s4; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx942 < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX942 %s5 6 7define void @v_shuffle_v4i16_v2i16__u_u_u_u(ptr addrspace(1) inreg %ptr) {8; GFX9-LABEL: v_shuffle_v4i16_v2i16__u_u_u_u:9; GFX9:       ; %bb.0:10; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11; GFX9-NEXT:    s_setpc_b64 s[30:31]12  %vec0 = call <2 x i16> asm "; def $0", "=v"()13  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> poison14  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 815  ret void16}17 18define void @v_shuffle_v4i16_v2i16__0_u_u_u(ptr addrspace(1) inreg %ptr) {19; GFX900-LABEL: v_shuffle_v4i16_v2i16__0_u_u_u:20; GFX900:       ; %bb.0:21; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22; GFX900-NEXT:    v_mov_b32_e32 v1, 023; GFX900-NEXT:    ;;#ASMSTART24; GFX900-NEXT:    ; def v025; GFX900-NEXT:    ;;#ASMEND26; GFX900-NEXT:    global_store_dwordx2 v1, v[0:1], 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_v4i16_v2i16__0_u_u_u:31; GFX90A:       ; %bb.0:32; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)33; GFX90A-NEXT:    v_mov_b32_e32 v1, 034; GFX90A-NEXT:    ;;#ASMSTART35; GFX90A-NEXT:    ; def v036; GFX90A-NEXT:    ;;#ASMEND37; GFX90A-NEXT:    global_store_dwordx2 v1, v[0:1], 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_v4i16_v2i16__0_u_u_u:42; GFX942:       ; %bb.0:43; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)44; GFX942-NEXT:    v_mov_b32_e32 v1, 045; GFX942-NEXT:    ;;#ASMSTART46; GFX942-NEXT:    ; def v047; GFX942-NEXT:    ;;#ASMEND48; GFX942-NEXT:    global_store_dwordx2 v1, v[0:1], s[0:1]49; GFX942-NEXT:    s_waitcnt vmcnt(0)50; GFX942-NEXT:    s_setpc_b64 s[30:31]51  %vec0 = call <2 x i16> asm "; def $0", "=v"()52  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>53  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 854  ret void55}56 57define void @v_shuffle_v4i16_v2i16__1_u_u_u(ptr addrspace(1) inreg %ptr) {58; GFX900-LABEL: v_shuffle_v4i16_v2i16__1_u_u_u:59; GFX900:       ; %bb.0:60; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)61; GFX900-NEXT:    ;;#ASMSTART62; GFX900-NEXT:    ; def v063; GFX900-NEXT:    ;;#ASMEND64; GFX900-NEXT:    v_mov_b32_e32 v1, 065; GFX900-NEXT:    v_alignbit_b32 v0, s4, v0, 1666; GFX900-NEXT:    global_store_dwordx2 v1, v[0:1], 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_v4i16_v2i16__1_u_u_u:71; GFX90A:       ; %bb.0:72; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)73; GFX90A-NEXT:    ;;#ASMSTART74; GFX90A-NEXT:    ; def v075; GFX90A-NEXT:    ;;#ASMEND76; GFX90A-NEXT:    v_mov_b32_e32 v1, 077; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v0, 1678; GFX90A-NEXT:    global_store_dwordx2 v1, v[0:1], 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_v4i16_v2i16__1_u_u_u:83; GFX942:       ; %bb.0:84; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)85; GFX942-NEXT:    ;;#ASMSTART86; GFX942-NEXT:    ; def v087; GFX942-NEXT:    ;;#ASMEND88; GFX942-NEXT:    v_mov_b32_e32 v1, 089; GFX942-NEXT:    v_alignbit_b32 v0, s0, v0, 1690; GFX942-NEXT:    global_store_dwordx2 v1, v[0:1], s[0:1]91; GFX942-NEXT:    s_waitcnt vmcnt(0)92; GFX942-NEXT:    s_setpc_b64 s[30:31]93  %vec0 = call <2 x i16> asm "; def $0", "=v"()94  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>95  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 896  ret void97}98 99define void @v_shuffle_v4i16_v2i16__2_u_u_u(ptr addrspace(1) inreg %ptr) {100; GFX9-LABEL: v_shuffle_v4i16_v2i16__2_u_u_u:101; GFX9:       ; %bb.0:102; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)103; GFX9-NEXT:    s_setpc_b64 s[30:31]104  %vec0 = call <2 x i16> asm "; def $0", "=v"()105  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison>106  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8107  ret void108}109 110define void @v_shuffle_v4i16_v2i16__3_u_u_u(ptr addrspace(1) inreg %ptr) {111; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_u_u_u:112; GFX900:       ; %bb.0:113; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)114; GFX900-NEXT:    ;;#ASMSTART115; GFX900-NEXT:    ; def v0116; GFX900-NEXT:    ;;#ASMEND117; GFX900-NEXT:    v_mov_b32_e32 v1, 0118; GFX900-NEXT:    v_alignbit_b32 v0, s4, v0, 16119; GFX900-NEXT:    global_store_dwordx2 v1, v[0:1], s[16:17]120; GFX900-NEXT:    s_waitcnt vmcnt(0)121; GFX900-NEXT:    s_setpc_b64 s[30:31]122;123; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_u_u_u:124; GFX90A:       ; %bb.0:125; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)126; GFX90A-NEXT:    ;;#ASMSTART127; GFX90A-NEXT:    ; def v0128; GFX90A-NEXT:    ;;#ASMEND129; GFX90A-NEXT:    v_mov_b32_e32 v1, 0130; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v0, 16131; GFX90A-NEXT:    global_store_dwordx2 v1, v[0:1], s[16:17]132; GFX90A-NEXT:    s_waitcnt vmcnt(0)133; GFX90A-NEXT:    s_setpc_b64 s[30:31]134;135; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_u_u_u:136; GFX942:       ; %bb.0:137; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)138; GFX942-NEXT:    ;;#ASMSTART139; GFX942-NEXT:    ; def v0140; GFX942-NEXT:    ;;#ASMEND141; GFX942-NEXT:    v_mov_b32_e32 v1, 0142; GFX942-NEXT:    v_alignbit_b32 v0, s0, v0, 16143; GFX942-NEXT:    global_store_dwordx2 v1, v[0:1], s[0:1]144; GFX942-NEXT:    s_waitcnt vmcnt(0)145; GFX942-NEXT:    s_setpc_b64 s[30:31]146  %vec0 = call <2 x i16> asm "; def $0", "=v"()147  %vec1 = call <2 x i16> asm "; def $0", "=v"()148  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison>149  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8150  ret void151}152 153define void @v_shuffle_v4i16_v2i16__3_0_u_u(ptr addrspace(1) inreg %ptr) {154; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_0_u_u:155; GFX900:       ; %bb.0:156; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)157; GFX900-NEXT:    ;;#ASMSTART158; GFX900-NEXT:    ; def v0159; GFX900-NEXT:    ;;#ASMEND160; GFX900-NEXT:    v_mov_b32_e32 v1, 0161; GFX900-NEXT:    ;;#ASMSTART162; GFX900-NEXT:    ; def v2163; GFX900-NEXT:    ;;#ASMEND164; GFX900-NEXT:    v_alignbit_b32 v0, v0, v2, 16165; GFX900-NEXT:    global_store_dwordx2 v1, v[0:1], s[16:17]166; GFX900-NEXT:    s_waitcnt vmcnt(0)167; GFX900-NEXT:    s_setpc_b64 s[30:31]168;169; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_0_u_u:170; GFX90A:       ; %bb.0:171; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)172; GFX90A-NEXT:    ;;#ASMSTART173; GFX90A-NEXT:    ; def v0174; GFX90A-NEXT:    ;;#ASMEND175; GFX90A-NEXT:    v_mov_b32_e32 v1, 0176; GFX90A-NEXT:    ;;#ASMSTART177; GFX90A-NEXT:    ; def v2178; GFX90A-NEXT:    ;;#ASMEND179; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v2, 16180; GFX90A-NEXT:    global_store_dwordx2 v1, v[0:1], s[16:17]181; GFX90A-NEXT:    s_waitcnt vmcnt(0)182; GFX90A-NEXT:    s_setpc_b64 s[30:31]183;184; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_0_u_u:185; GFX942:       ; %bb.0:186; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)187; GFX942-NEXT:    ;;#ASMSTART188; GFX942-NEXT:    ; def v0189; GFX942-NEXT:    ;;#ASMEND190; GFX942-NEXT:    v_mov_b32_e32 v1, 0191; GFX942-NEXT:    ;;#ASMSTART192; GFX942-NEXT:    ; def v2193; GFX942-NEXT:    ;;#ASMEND194; GFX942-NEXT:    s_nop 0195; GFX942-NEXT:    v_alignbit_b32 v0, v0, v2, 16196; GFX942-NEXT:    global_store_dwordx2 v1, v[0:1], s[0:1]197; GFX942-NEXT:    s_waitcnt vmcnt(0)198; GFX942-NEXT:    s_setpc_b64 s[30:31]199  %vec0 = call <2 x i16> asm "; def $0", "=v"()200  %vec1 = call <2 x i16> asm "; def $0", "=v"()201  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 0, i32 poison, i32 poison>202  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8203  ret void204}205 206define void @v_shuffle_v4i16_v2i16__3_1_u_u(ptr addrspace(1) inreg %ptr) {207; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_1_u_u:208; GFX900:       ; %bb.0:209; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)210; GFX900-NEXT:    ;;#ASMSTART211; GFX900-NEXT:    ; def v0212; GFX900-NEXT:    ;;#ASMEND213; GFX900-NEXT:    s_mov_b32 s4, 0x7060302214; GFX900-NEXT:    v_mov_b32_e32 v1, 0215; GFX900-NEXT:    ;;#ASMSTART216; GFX900-NEXT:    ; def v2217; GFX900-NEXT:    ;;#ASMEND218; GFX900-NEXT:    v_perm_b32 v0, v0, v2, s4219; GFX900-NEXT:    global_store_dwordx2 v1, v[0:1], s[16:17]220; GFX900-NEXT:    s_waitcnt vmcnt(0)221; GFX900-NEXT:    s_setpc_b64 s[30:31]222;223; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_1_u_u:224; GFX90A:       ; %bb.0:225; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)226; GFX90A-NEXT:    ;;#ASMSTART227; GFX90A-NEXT:    ; def v0228; GFX90A-NEXT:    ;;#ASMEND229; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302230; GFX90A-NEXT:    v_mov_b32_e32 v1, 0231; GFX90A-NEXT:    ;;#ASMSTART232; GFX90A-NEXT:    ; def v2233; GFX90A-NEXT:    ;;#ASMEND234; GFX90A-NEXT:    v_perm_b32 v0, v0, v2, s4235; GFX90A-NEXT:    global_store_dwordx2 v1, v[0:1], s[16:17]236; GFX90A-NEXT:    s_waitcnt vmcnt(0)237; GFX90A-NEXT:    s_setpc_b64 s[30:31]238;239; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_1_u_u:240; GFX942:       ; %bb.0:241; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)242; GFX942-NEXT:    ;;#ASMSTART243; GFX942-NEXT:    ; def v0244; GFX942-NEXT:    ;;#ASMEND245; GFX942-NEXT:    s_mov_b32 s2, 0x7060302246; GFX942-NEXT:    v_mov_b32_e32 v1, 0247; GFX942-NEXT:    ;;#ASMSTART248; GFX942-NEXT:    ; def v2249; GFX942-NEXT:    ;;#ASMEND250; GFX942-NEXT:    s_nop 0251; GFX942-NEXT:    v_perm_b32 v0, v0, v2, s2252; GFX942-NEXT:    global_store_dwordx2 v1, v[0:1], s[0:1]253; GFX942-NEXT:    s_waitcnt vmcnt(0)254; GFX942-NEXT:    s_setpc_b64 s[30:31]255  %vec0 = call <2 x i16> asm "; def $0", "=v"()256  %vec1 = call <2 x i16> asm "; def $0", "=v"()257  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 1, i32 poison, i32 poison>258  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8259  ret void260}261 262define void @v_shuffle_v4i16_v2i16__3_2_u_u(ptr addrspace(1) inreg %ptr) {263; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_2_u_u:264; GFX900:       ; %bb.0:265; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)266; GFX900-NEXT:    ;;#ASMSTART267; GFX900-NEXT:    ; def v0268; GFX900-NEXT:    ;;#ASMEND269; GFX900-NEXT:    v_mov_b32_e32 v1, 0270; GFX900-NEXT:    v_alignbit_b32 v0, v0, v0, 16271; GFX900-NEXT:    global_store_dwordx2 v1, v[0:1], s[16:17]272; GFX900-NEXT:    s_waitcnt vmcnt(0)273; GFX900-NEXT:    s_setpc_b64 s[30:31]274;275; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_2_u_u:276; GFX90A:       ; %bb.0:277; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)278; GFX90A-NEXT:    ;;#ASMSTART279; GFX90A-NEXT:    ; def v0280; GFX90A-NEXT:    ;;#ASMEND281; GFX90A-NEXT:    v_mov_b32_e32 v1, 0282; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v0, 16283; GFX90A-NEXT:    global_store_dwordx2 v1, v[0:1], s[16:17]284; GFX90A-NEXT:    s_waitcnt vmcnt(0)285; GFX90A-NEXT:    s_setpc_b64 s[30:31]286;287; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_2_u_u:288; GFX942:       ; %bb.0:289; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)290; GFX942-NEXT:    ;;#ASMSTART291; GFX942-NEXT:    ; def v0292; GFX942-NEXT:    ;;#ASMEND293; GFX942-NEXT:    v_mov_b32_e32 v1, 0294; GFX942-NEXT:    v_alignbit_b32 v0, v0, v0, 16295; GFX942-NEXT:    global_store_dwordx2 v1, v[0:1], s[0:1]296; GFX942-NEXT:    s_waitcnt vmcnt(0)297; GFX942-NEXT:    s_setpc_b64 s[30:31]298  %vec0 = call <2 x i16> asm "; def $0", "=v"()299  %vec1 = call <2 x i16> asm "; def $0", "=v"()300  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 2, i32 poison, i32 poison>301  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8302  ret void303}304 305define void @v_shuffle_v4i16_v2i16__3_3_u_u(ptr addrspace(1) inreg %ptr) {306; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_u_u:307; GFX900:       ; %bb.0:308; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)309; GFX900-NEXT:    ;;#ASMSTART310; GFX900-NEXT:    ; def v0311; GFX900-NEXT:    ;;#ASMEND312; GFX900-NEXT:    s_mov_b32 s4, 0x7060302313; GFX900-NEXT:    v_mov_b32_e32 v1, 0314; GFX900-NEXT:    v_perm_b32 v0, v0, v0, s4315; GFX900-NEXT:    global_store_dwordx2 v1, v[0:1], s[16:17]316; GFX900-NEXT:    s_waitcnt vmcnt(0)317; GFX900-NEXT:    s_setpc_b64 s[30:31]318;319; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_u_u:320; GFX90A:       ; %bb.0:321; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)322; GFX90A-NEXT:    ;;#ASMSTART323; GFX90A-NEXT:    ; def v0324; GFX90A-NEXT:    ;;#ASMEND325; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302326; GFX90A-NEXT:    v_mov_b32_e32 v1, 0327; GFX90A-NEXT:    v_perm_b32 v0, v0, v0, s4328; GFX90A-NEXT:    global_store_dwordx2 v1, v[0:1], s[16:17]329; GFX90A-NEXT:    s_waitcnt vmcnt(0)330; GFX90A-NEXT:    s_setpc_b64 s[30:31]331;332; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_3_u_u:333; GFX942:       ; %bb.0:334; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)335; GFX942-NEXT:    ;;#ASMSTART336; GFX942-NEXT:    ; def v0337; GFX942-NEXT:    ;;#ASMEND338; GFX942-NEXT:    s_mov_b32 s2, 0x7060302339; GFX942-NEXT:    v_mov_b32_e32 v1, 0340; GFX942-NEXT:    v_perm_b32 v0, v0, v0, s2341; GFX942-NEXT:    global_store_dwordx2 v1, v[0:1], s[0:1]342; GFX942-NEXT:    s_waitcnt vmcnt(0)343; GFX942-NEXT:    s_setpc_b64 s[30:31]344  %vec0 = call <2 x i16> asm "; def $0", "=v"()345  %vec1 = call <2 x i16> asm "; def $0", "=v"()346  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 poison>347  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8348  ret void349}350 351define void @v_shuffle_v4i16_v2i16__3_3_0_u(ptr addrspace(1) inreg %ptr) {352; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_0_u:353; GFX900:       ; %bb.0:354; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)355; GFX900-NEXT:    ;;#ASMSTART356; GFX900-NEXT:    ; def v0357; GFX900-NEXT:    ;;#ASMEND358; GFX900-NEXT:    s_mov_b32 s4, 0x7060302359; GFX900-NEXT:    v_mov_b32_e32 v2, 0360; GFX900-NEXT:    v_perm_b32 v0, v0, v0, s4361; GFX900-NEXT:    ;;#ASMSTART362; GFX900-NEXT:    ; def v1363; GFX900-NEXT:    ;;#ASMEND364; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]365; GFX900-NEXT:    s_waitcnt vmcnt(0)366; GFX900-NEXT:    s_setpc_b64 s[30:31]367;368; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_0_u:369; GFX90A:       ; %bb.0:370; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)371; GFX90A-NEXT:    ;;#ASMSTART372; GFX90A-NEXT:    ; def v0373; GFX90A-NEXT:    ;;#ASMEND374; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302375; GFX90A-NEXT:    v_mov_b32_e32 v2, 0376; GFX90A-NEXT:    v_perm_b32 v0, v0, v0, s4377; GFX90A-NEXT:    ;;#ASMSTART378; GFX90A-NEXT:    ; def v1379; GFX90A-NEXT:    ;;#ASMEND380; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]381; GFX90A-NEXT:    s_waitcnt vmcnt(0)382; GFX90A-NEXT:    s_setpc_b64 s[30:31]383;384; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_3_0_u:385; GFX942:       ; %bb.0:386; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)387; GFX942-NEXT:    ;;#ASMSTART388; GFX942-NEXT:    ; def v0389; GFX942-NEXT:    ;;#ASMEND390; GFX942-NEXT:    s_mov_b32 s2, 0x7060302391; GFX942-NEXT:    v_mov_b32_e32 v2, 0392; GFX942-NEXT:    v_perm_b32 v0, v0, v0, s2393; GFX942-NEXT:    ;;#ASMSTART394; GFX942-NEXT:    ; def v1395; GFX942-NEXT:    ;;#ASMEND396; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]397; GFX942-NEXT:    s_waitcnt vmcnt(0)398; GFX942-NEXT:    s_setpc_b64 s[30:31]399  %vec0 = call <2 x i16> asm "; def $0", "=v"()400  %vec1 = call <2 x i16> asm "; def $0", "=v"()401  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 poison>402  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8403  ret void404}405 406define void @v_shuffle_v4i16_v2i16__3_3_1_u(ptr addrspace(1) inreg %ptr) {407; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_1_u:408; GFX900:       ; %bb.0:409; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)410; GFX900-NEXT:    ;;#ASMSTART411; GFX900-NEXT:    ; def v0412; GFX900-NEXT:    ;;#ASMEND413; GFX900-NEXT:    v_alignbit_b32 v1, s4, v0, 16414; GFX900-NEXT:    s_mov_b32 s4, 0x7060302415; GFX900-NEXT:    v_mov_b32_e32 v2, 0416; GFX900-NEXT:    ;;#ASMSTART417; GFX900-NEXT:    ; def v3418; GFX900-NEXT:    ;;#ASMEND419; GFX900-NEXT:    v_perm_b32 v0, v3, v3, s4420; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]421; GFX900-NEXT:    s_waitcnt vmcnt(0)422; GFX900-NEXT:    s_setpc_b64 s[30:31]423;424; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_1_u:425; GFX90A:       ; %bb.0:426; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)427; GFX90A-NEXT:    ;;#ASMSTART428; GFX90A-NEXT:    ; def v0429; GFX90A-NEXT:    ;;#ASMEND430; GFX90A-NEXT:    v_alignbit_b32 v1, s4, v0, 16431; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302432; GFX90A-NEXT:    v_mov_b32_e32 v2, 0433; GFX90A-NEXT:    ;;#ASMSTART434; GFX90A-NEXT:    ; def v3435; GFX90A-NEXT:    ;;#ASMEND436; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s4437; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]438; GFX90A-NEXT:    s_waitcnt vmcnt(0)439; GFX90A-NEXT:    s_setpc_b64 s[30:31]440;441; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_3_1_u:442; GFX942:       ; %bb.0:443; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)444; GFX942-NEXT:    ;;#ASMSTART445; GFX942-NEXT:    ; def v0446; GFX942-NEXT:    ;;#ASMEND447; GFX942-NEXT:    s_mov_b32 s2, 0x7060302448; GFX942-NEXT:    v_mov_b32_e32 v2, 0449; GFX942-NEXT:    ;;#ASMSTART450; GFX942-NEXT:    ; def v3451; GFX942-NEXT:    ;;#ASMEND452; GFX942-NEXT:    v_alignbit_b32 v1, s0, v0, 16453; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s2454; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]455; GFX942-NEXT:    s_waitcnt vmcnt(0)456; GFX942-NEXT:    s_setpc_b64 s[30:31]457  %vec0 = call <2 x i16> asm "; def $0", "=v"()458  %vec1 = call <2 x i16> asm "; def $0", "=v"()459  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 poison>460  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8461  ret void462}463 464define void @v_shuffle_v4i16_v2i16__3_3_2_u(ptr addrspace(1) inreg %ptr) {465; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_2_u:466; GFX900:       ; %bb.0:467; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)468; GFX900-NEXT:    s_mov_b32 s4, 0x7060302469; GFX900-NEXT:    v_mov_b32_e32 v2, 0470; GFX900-NEXT:    ;;#ASMSTART471; GFX900-NEXT:    ; def v1472; GFX900-NEXT:    ;;#ASMEND473; GFX900-NEXT:    v_perm_b32 v0, v1, v1, s4474; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]475; GFX900-NEXT:    s_waitcnt vmcnt(0)476; GFX900-NEXT:    s_setpc_b64 s[30:31]477;478; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_2_u:479; GFX90A:       ; %bb.0:480; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)481; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302482; GFX90A-NEXT:    v_mov_b32_e32 v2, 0483; GFX90A-NEXT:    ;;#ASMSTART484; GFX90A-NEXT:    ; def v1485; GFX90A-NEXT:    ;;#ASMEND486; GFX90A-NEXT:    v_perm_b32 v0, v1, v1, s4487; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]488; GFX90A-NEXT:    s_waitcnt vmcnt(0)489; GFX90A-NEXT:    s_setpc_b64 s[30:31]490;491; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_3_2_u:492; GFX942:       ; %bb.0:493; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)494; GFX942-NEXT:    s_mov_b32 s2, 0x7060302495; GFX942-NEXT:    v_mov_b32_e32 v2, 0496; GFX942-NEXT:    ;;#ASMSTART497; GFX942-NEXT:    ; def v1498; GFX942-NEXT:    ;;#ASMEND499; GFX942-NEXT:    s_nop 0500; GFX942-NEXT:    v_perm_b32 v0, v1, v1, s2501; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]502; GFX942-NEXT:    s_waitcnt vmcnt(0)503; GFX942-NEXT:    s_setpc_b64 s[30:31]504  %vec0 = call <2 x i16> asm "; def $0", "=v"()505  %vec1 = call <2 x i16> asm "; def $0", "=v"()506  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 poison>507  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8508  ret void509}510 511define void @v_shuffle_v4i16_v2i16__3_3_3_u(ptr addrspace(1) inreg %ptr) {512; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_3_u:513; GFX900:       ; %bb.0:514; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)515; GFX900-NEXT:    ;;#ASMSTART516; GFX900-NEXT:    ; def v0517; GFX900-NEXT:    ;;#ASMEND518; GFX900-NEXT:    v_alignbit_b32 v1, s4, v0, 16519; GFX900-NEXT:    s_mov_b32 s4, 0x7060302520; GFX900-NEXT:    v_mov_b32_e32 v2, 0521; GFX900-NEXT:    v_perm_b32 v0, v0, v0, s4522; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]523; GFX900-NEXT:    s_waitcnt vmcnt(0)524; GFX900-NEXT:    s_setpc_b64 s[30:31]525;526; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_3_u:527; GFX90A:       ; %bb.0:528; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)529; GFX90A-NEXT:    ;;#ASMSTART530; GFX90A-NEXT:    ; def v0531; GFX90A-NEXT:    ;;#ASMEND532; GFX90A-NEXT:    v_alignbit_b32 v1, s4, v0, 16533; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302534; GFX90A-NEXT:    v_mov_b32_e32 v2, 0535; GFX90A-NEXT:    v_perm_b32 v0, v0, v0, s4536; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]537; GFX90A-NEXT:    s_waitcnt vmcnt(0)538; GFX90A-NEXT:    s_setpc_b64 s[30:31]539;540; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_3_3_u:541; GFX942:       ; %bb.0:542; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)543; GFX942-NEXT:    ;;#ASMSTART544; GFX942-NEXT:    ; def v0545; GFX942-NEXT:    ;;#ASMEND546; GFX942-NEXT:    s_mov_b32 s2, 0x7060302547; GFX942-NEXT:    v_mov_b32_e32 v2, 0548; GFX942-NEXT:    v_alignbit_b32 v1, s0, v0, 16549; GFX942-NEXT:    v_perm_b32 v0, v0, v0, s2550; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]551; GFX942-NEXT:    s_waitcnt vmcnt(0)552; GFX942-NEXT:    s_setpc_b64 s[30:31]553  %vec0 = call <2 x i16> asm "; def $0", "=v"()554  %vec1 = call <2 x i16> asm "; def $0", "=v"()555  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 poison>556  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8557  ret void558}559 560define void @v_shuffle_v4i16_v2i16__3_3_3_0(ptr addrspace(1) inreg %ptr) {561; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_3_0:562; GFX900:       ; %bb.0:563; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)564; GFX900-NEXT:    ;;#ASMSTART565; GFX900-NEXT:    ; def v1566; GFX900-NEXT:    ;;#ASMEND567; GFX900-NEXT:    s_mov_b32 s4, 0x7060302568; GFX900-NEXT:    v_mov_b32_e32 v2, 0569; GFX900-NEXT:    ;;#ASMSTART570; GFX900-NEXT:    ; def v3571; GFX900-NEXT:    ;;#ASMEND572; GFX900-NEXT:    v_perm_b32 v0, v3, v3, s4573; GFX900-NEXT:    v_alignbit_b32 v1, v1, v3, 16574; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]575; GFX900-NEXT:    s_waitcnt vmcnt(0)576; GFX900-NEXT:    s_setpc_b64 s[30:31]577;578; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_3_0:579; GFX90A:       ; %bb.0:580; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)581; GFX90A-NEXT:    ;;#ASMSTART582; GFX90A-NEXT:    ; def v1583; GFX90A-NEXT:    ;;#ASMEND584; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302585; GFX90A-NEXT:    v_mov_b32_e32 v2, 0586; GFX90A-NEXT:    ;;#ASMSTART587; GFX90A-NEXT:    ; def v3588; GFX90A-NEXT:    ;;#ASMEND589; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s4590; GFX90A-NEXT:    v_alignbit_b32 v1, v1, v3, 16591; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]592; GFX90A-NEXT:    s_waitcnt vmcnt(0)593; GFX90A-NEXT:    s_setpc_b64 s[30:31]594;595; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_3_3_0:596; GFX942:       ; %bb.0:597; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)598; GFX942-NEXT:    ;;#ASMSTART599; GFX942-NEXT:    ; def v1600; GFX942-NEXT:    ;;#ASMEND601; GFX942-NEXT:    s_mov_b32 s2, 0x7060302602; GFX942-NEXT:    v_mov_b32_e32 v2, 0603; GFX942-NEXT:    ;;#ASMSTART604; GFX942-NEXT:    ; def v3605; GFX942-NEXT:    ;;#ASMEND606; GFX942-NEXT:    s_nop 0607; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s2608; GFX942-NEXT:    v_alignbit_b32 v1, v1, v3, 16609; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]610; GFX942-NEXT:    s_waitcnt vmcnt(0)611; GFX942-NEXT:    s_setpc_b64 s[30:31]612  %vec0 = call <2 x i16> asm "; def $0", "=v"()613  %vec1 = call <2 x i16> asm "; def $0", "=v"()614  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 0>615  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8616  ret void617}618 619define void @v_shuffle_v4i16_v2i16__3_3_3_1(ptr addrspace(1) inreg %ptr) {620; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_3_1:621; GFX900:       ; %bb.0:622; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)623; GFX900-NEXT:    ;;#ASMSTART624; GFX900-NEXT:    ; def v0625; GFX900-NEXT:    ;;#ASMEND626; GFX900-NEXT:    s_mov_b32 s4, 0x7060302627; GFX900-NEXT:    v_mov_b32_e32 v2, 0628; GFX900-NEXT:    ;;#ASMSTART629; GFX900-NEXT:    ; def v3630; GFX900-NEXT:    ;;#ASMEND631; GFX900-NEXT:    v_perm_b32 v1, v0, v3, s4632; GFX900-NEXT:    v_perm_b32 v0, v3, v3, s4633; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], 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_v4i16_v2i16__3_3_3_1:638; GFX90A:       ; %bb.0:639; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)640; GFX90A-NEXT:    ;;#ASMSTART641; GFX90A-NEXT:    ; def v0642; GFX90A-NEXT:    ;;#ASMEND643; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302644; GFX90A-NEXT:    v_mov_b32_e32 v2, 0645; GFX90A-NEXT:    ;;#ASMSTART646; GFX90A-NEXT:    ; def v3647; GFX90A-NEXT:    ;;#ASMEND648; GFX90A-NEXT:    v_perm_b32 v1, v0, v3, s4649; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s4650; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]651; GFX90A-NEXT:    s_waitcnt vmcnt(0)652; GFX90A-NEXT:    s_setpc_b64 s[30:31]653;654; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_3_3_1:655; GFX942:       ; %bb.0:656; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)657; GFX942-NEXT:    ;;#ASMSTART658; GFX942-NEXT:    ; def v0659; GFX942-NEXT:    ;;#ASMEND660; GFX942-NEXT:    s_mov_b32 s2, 0x7060302661; GFX942-NEXT:    v_mov_b32_e32 v2, 0662; GFX942-NEXT:    ;;#ASMSTART663; GFX942-NEXT:    ; def v3664; GFX942-NEXT:    ;;#ASMEND665; GFX942-NEXT:    s_nop 0666; GFX942-NEXT:    v_perm_b32 v1, v0, v3, s2667; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s2668; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]669; GFX942-NEXT:    s_waitcnt vmcnt(0)670; GFX942-NEXT:    s_setpc_b64 s[30:31]671  %vec0 = call <2 x i16> asm "; def $0", "=v"()672  %vec1 = call <2 x i16> asm "; def $0", "=v"()673  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 1>674  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8675  ret void676}677 678define void @v_shuffle_v4i16_v2i16__3_3_3_2(ptr addrspace(1) inreg %ptr) {679; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_3_2:680; GFX900:       ; %bb.0:681; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)682; GFX900-NEXT:    ;;#ASMSTART683; GFX900-NEXT:    ; def v1684; GFX900-NEXT:    ;;#ASMEND685; GFX900-NEXT:    s_mov_b32 s4, 0x7060302686; GFX900-NEXT:    v_mov_b32_e32 v2, 0687; GFX900-NEXT:    v_perm_b32 v0, v1, v1, s4688; GFX900-NEXT:    v_alignbit_b32 v1, v1, v1, 16689; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]690; GFX900-NEXT:    s_waitcnt vmcnt(0)691; GFX900-NEXT:    s_setpc_b64 s[30:31]692;693; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_3_2:694; GFX90A:       ; %bb.0:695; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)696; GFX90A-NEXT:    ;;#ASMSTART697; GFX90A-NEXT:    ; def v1698; GFX90A-NEXT:    ;;#ASMEND699; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302700; GFX90A-NEXT:    v_mov_b32_e32 v2, 0701; GFX90A-NEXT:    v_perm_b32 v0, v1, v1, s4702; GFX90A-NEXT:    v_alignbit_b32 v1, v1, v1, 16703; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]704; GFX90A-NEXT:    s_waitcnt vmcnt(0)705; GFX90A-NEXT:    s_setpc_b64 s[30:31]706;707; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_3_3_2:708; GFX942:       ; %bb.0:709; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)710; GFX942-NEXT:    ;;#ASMSTART711; GFX942-NEXT:    ; def v1712; GFX942-NEXT:    ;;#ASMEND713; GFX942-NEXT:    s_mov_b32 s2, 0x7060302714; GFX942-NEXT:    v_mov_b32_e32 v2, 0715; GFX942-NEXT:    v_perm_b32 v0, v1, v1, s2716; GFX942-NEXT:    v_alignbit_b32 v1, v1, v1, 16717; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]718; GFX942-NEXT:    s_waitcnt vmcnt(0)719; GFX942-NEXT:    s_setpc_b64 s[30:31]720  %vec0 = call <2 x i16> asm "; def $0", "=v"()721  %vec1 = call <2 x i16> asm "; def $0", "=v"()722  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 2>723  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8724  ret void725}726 727define void @v_shuffle_v4i16_v2i16__3_3_3_3(ptr addrspace(1) inreg %ptr) {728; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_3_3:729; GFX900:       ; %bb.0:730; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)731; GFX900-NEXT:    ;;#ASMSTART732; GFX900-NEXT:    ; def v0733; GFX900-NEXT:    ;;#ASMEND734; GFX900-NEXT:    s_mov_b32 s4, 0x7060302735; GFX900-NEXT:    v_perm_b32 v0, v0, v0, s4736; GFX900-NEXT:    v_mov_b32_e32 v2, 0737; GFX900-NEXT:    v_mov_b32_e32 v1, v0738; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]739; GFX900-NEXT:    s_waitcnt vmcnt(0)740; GFX900-NEXT:    s_setpc_b64 s[30:31]741;742; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_3_3:743; GFX90A:       ; %bb.0:744; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)745; GFX90A-NEXT:    ;;#ASMSTART746; GFX90A-NEXT:    ; def v0747; GFX90A-NEXT:    ;;#ASMEND748; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302749; GFX90A-NEXT:    v_perm_b32 v0, v0, v0, s4750; GFX90A-NEXT:    v_mov_b32_e32 v2, 0751; GFX90A-NEXT:    v_mov_b32_e32 v1, v0752; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]753; GFX90A-NEXT:    s_waitcnt vmcnt(0)754; GFX90A-NEXT:    s_setpc_b64 s[30:31]755;756; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_3_3_3:757; GFX942:       ; %bb.0:758; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)759; GFX942-NEXT:    ;;#ASMSTART760; GFX942-NEXT:    ; def v0761; GFX942-NEXT:    ;;#ASMEND762; GFX942-NEXT:    s_mov_b32 s2, 0x7060302763; GFX942-NEXT:    v_perm_b32 v0, v0, v0, s2764; GFX942-NEXT:    v_mov_b32_e32 v2, 0765; GFX942-NEXT:    v_mov_b32_e32 v1, v0766; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]767; GFX942-NEXT:    s_waitcnt vmcnt(0)768; GFX942-NEXT:    s_setpc_b64 s[30:31]769  %vec0 = call <2 x i16> asm "; def $0", "=v"()770  %vec1 = call <2 x i16> asm "; def $0", "=v"()771  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 3>772  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8773  ret void774}775 776define void @v_shuffle_v4i16_v2i16__u_0_0_0(ptr addrspace(1) inreg %ptr) {777; GFX900-LABEL: v_shuffle_v4i16_v2i16__u_0_0_0:778; GFX900:       ; %bb.0:779; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)780; GFX900-NEXT:    ;;#ASMSTART781; GFX900-NEXT:    ; def v0782; GFX900-NEXT:    ;;#ASMEND783; GFX900-NEXT:    s_mov_b32 s4, 0x5040100784; GFX900-NEXT:    v_perm_b32 v0, v0, v0, s4785; GFX900-NEXT:    v_mov_b32_e32 v2, 0786; GFX900-NEXT:    v_mov_b32_e32 v1, v0787; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]788; GFX900-NEXT:    s_waitcnt vmcnt(0)789; GFX900-NEXT:    s_setpc_b64 s[30:31]790;791; GFX90A-LABEL: v_shuffle_v4i16_v2i16__u_0_0_0:792; GFX90A:       ; %bb.0:793; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)794; GFX90A-NEXT:    ;;#ASMSTART795; GFX90A-NEXT:    ; def v0796; GFX90A-NEXT:    ;;#ASMEND797; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100798; GFX90A-NEXT:    v_perm_b32 v0, v0, v0, s4799; GFX90A-NEXT:    v_mov_b32_e32 v2, 0800; GFX90A-NEXT:    v_mov_b32_e32 v1, v0801; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]802; GFX90A-NEXT:    s_waitcnt vmcnt(0)803; GFX90A-NEXT:    s_setpc_b64 s[30:31]804;805; GFX942-LABEL: v_shuffle_v4i16_v2i16__u_0_0_0:806; GFX942:       ; %bb.0:807; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)808; GFX942-NEXT:    ;;#ASMSTART809; GFX942-NEXT:    ; def v0810; GFX942-NEXT:    ;;#ASMEND811; GFX942-NEXT:    s_mov_b32 s2, 0x5040100812; GFX942-NEXT:    v_perm_b32 v0, v0, v0, s2813; GFX942-NEXT:    v_mov_b32_e32 v2, 0814; GFX942-NEXT:    v_mov_b32_e32 v1, v0815; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]816; GFX942-NEXT:    s_waitcnt vmcnt(0)817; GFX942-NEXT:    s_setpc_b64 s[30:31]818  %vec0 = call <2 x i16> asm "; def $0", "=v"()819  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0>820  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8821  ret void822}823 824define void @v_shuffle_v4i16_v2i16__0_0_0_0(ptr addrspace(1) inreg %ptr) {825; GFX900-LABEL: v_shuffle_v4i16_v2i16__0_0_0_0:826; GFX900:       ; %bb.0:827; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)828; GFX900-NEXT:    ;;#ASMSTART829; GFX900-NEXT:    ; def v0830; GFX900-NEXT:    ;;#ASMEND831; GFX900-NEXT:    s_mov_b32 s4, 0x5040100832; GFX900-NEXT:    v_perm_b32 v0, v0, v0, s4833; GFX900-NEXT:    v_mov_b32_e32 v2, 0834; GFX900-NEXT:    v_mov_b32_e32 v1, v0835; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]836; GFX900-NEXT:    s_waitcnt vmcnt(0)837; GFX900-NEXT:    s_setpc_b64 s[30:31]838;839; GFX90A-LABEL: v_shuffle_v4i16_v2i16__0_0_0_0:840; GFX90A:       ; %bb.0:841; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)842; GFX90A-NEXT:    ;;#ASMSTART843; GFX90A-NEXT:    ; def v0844; GFX90A-NEXT:    ;;#ASMEND845; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100846; GFX90A-NEXT:    v_perm_b32 v0, v0, v0, s4847; GFX90A-NEXT:    v_mov_b32_e32 v2, 0848; GFX90A-NEXT:    v_mov_b32_e32 v1, v0849; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]850; GFX90A-NEXT:    s_waitcnt vmcnt(0)851; GFX90A-NEXT:    s_setpc_b64 s[30:31]852;853; GFX942-LABEL: v_shuffle_v4i16_v2i16__0_0_0_0:854; GFX942:       ; %bb.0:855; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)856; GFX942-NEXT:    ;;#ASMSTART857; GFX942-NEXT:    ; def v0858; GFX942-NEXT:    ;;#ASMEND859; GFX942-NEXT:    s_mov_b32 s2, 0x5040100860; GFX942-NEXT:    v_perm_b32 v0, v0, v0, s2861; GFX942-NEXT:    v_mov_b32_e32 v2, 0862; GFX942-NEXT:    v_mov_b32_e32 v1, v0863; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]864; GFX942-NEXT:    s_waitcnt vmcnt(0)865; GFX942-NEXT:    s_setpc_b64 s[30:31]866  %vec0 = call <2 x i16> asm "; def $0", "=v"()867  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> zeroinitializer868  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8869  ret void870}871 872define void @v_shuffle_v4i16_v2i16__1_0_0_0(ptr addrspace(1) inreg %ptr) {873; GFX900-LABEL: v_shuffle_v4i16_v2i16__1_0_0_0:874; GFX900:       ; %bb.0:875; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)876; GFX900-NEXT:    ;;#ASMSTART877; GFX900-NEXT:    ; def v0878; GFX900-NEXT:    ;;#ASMEND879; GFX900-NEXT:    s_mov_b32 s4, 0x5040100880; GFX900-NEXT:    v_mov_b32_e32 v2, 0881; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s4882; GFX900-NEXT:    v_alignbit_b32 v0, v0, v0, 16883; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]884; GFX900-NEXT:    s_waitcnt vmcnt(0)885; GFX900-NEXT:    s_setpc_b64 s[30:31]886;887; GFX90A-LABEL: v_shuffle_v4i16_v2i16__1_0_0_0:888; GFX90A:       ; %bb.0:889; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)890; GFX90A-NEXT:    ;;#ASMSTART891; GFX90A-NEXT:    ; def v0892; GFX90A-NEXT:    ;;#ASMEND893; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100894; GFX90A-NEXT:    v_mov_b32_e32 v2, 0895; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s4896; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v0, 16897; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]898; GFX90A-NEXT:    s_waitcnt vmcnt(0)899; GFX90A-NEXT:    s_setpc_b64 s[30:31]900;901; GFX942-LABEL: v_shuffle_v4i16_v2i16__1_0_0_0:902; GFX942:       ; %bb.0:903; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)904; GFX942-NEXT:    ;;#ASMSTART905; GFX942-NEXT:    ; def v0906; GFX942-NEXT:    ;;#ASMEND907; GFX942-NEXT:    s_mov_b32 s2, 0x5040100908; GFX942-NEXT:    v_mov_b32_e32 v2, 0909; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s2910; GFX942-NEXT:    v_alignbit_b32 v0, v0, v0, 16911; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]912; GFX942-NEXT:    s_waitcnt vmcnt(0)913; GFX942-NEXT:    s_setpc_b64 s[30:31]914  %vec0 = call <2 x i16> asm "; def $0", "=v"()915  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>916  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8917  ret void918}919 920define void @v_shuffle_v4i16_v2i16__2_0_0_0(ptr addrspace(1) inreg %ptr) {921; GFX900-LABEL: v_shuffle_v4i16_v2i16__2_0_0_0:922; GFX900:       ; %bb.0:923; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)924; GFX900-NEXT:    ;;#ASMSTART925; GFX900-NEXT:    ; def v0926; GFX900-NEXT:    ;;#ASMEND927; GFX900-NEXT:    s_mov_b32 s4, 0x5040100928; GFX900-NEXT:    v_perm_b32 v0, v0, v0, s4929; GFX900-NEXT:    v_mov_b32_e32 v2, 0930; GFX900-NEXT:    v_mov_b32_e32 v1, v0931; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]932; GFX900-NEXT:    s_waitcnt vmcnt(0)933; GFX900-NEXT:    s_setpc_b64 s[30:31]934;935; GFX90A-LABEL: v_shuffle_v4i16_v2i16__2_0_0_0:936; GFX90A:       ; %bb.0:937; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)938; GFX90A-NEXT:    ;;#ASMSTART939; GFX90A-NEXT:    ; def v0940; GFX90A-NEXT:    ;;#ASMEND941; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100942; GFX90A-NEXT:    v_perm_b32 v0, v0, v0, s4943; GFX90A-NEXT:    v_mov_b32_e32 v2, 0944; GFX90A-NEXT:    v_mov_b32_e32 v1, v0945; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]946; GFX90A-NEXT:    s_waitcnt vmcnt(0)947; GFX90A-NEXT:    s_setpc_b64 s[30:31]948;949; GFX942-LABEL: v_shuffle_v4i16_v2i16__2_0_0_0:950; GFX942:       ; %bb.0:951; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)952; GFX942-NEXT:    ;;#ASMSTART953; GFX942-NEXT:    ; def v0954; GFX942-NEXT:    ;;#ASMEND955; GFX942-NEXT:    s_mov_b32 s2, 0x5040100956; GFX942-NEXT:    v_perm_b32 v0, v0, v0, s2957; GFX942-NEXT:    v_mov_b32_e32 v2, 0958; GFX942-NEXT:    v_mov_b32_e32 v1, v0959; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]960; GFX942-NEXT:    s_waitcnt vmcnt(0)961; GFX942-NEXT:    s_setpc_b64 s[30:31]962  %vec0 = call <2 x i16> asm "; def $0", "=v"()963  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0>964  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 8965  ret void966}967 968define void @v_shuffle_v4i16_v2i16__3_0_0_0(ptr addrspace(1) inreg %ptr) {969; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_0_0_0:970; GFX900:       ; %bb.0:971; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)972; GFX900-NEXT:    ;;#ASMSTART973; GFX900-NEXT:    ; def v0974; GFX900-NEXT:    ;;#ASMEND975; GFX900-NEXT:    s_mov_b32 s4, 0x5040100976; GFX900-NEXT:    v_mov_b32_e32 v2, 0977; GFX900-NEXT:    ;;#ASMSTART978; GFX900-NEXT:    ; def v3979; GFX900-NEXT:    ;;#ASMEND980; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s4981; GFX900-NEXT:    v_alignbit_b32 v0, v0, v3, 16982; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]983; GFX900-NEXT:    s_waitcnt vmcnt(0)984; GFX900-NEXT:    s_setpc_b64 s[30:31]985;986; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_0_0_0:987; GFX90A:       ; %bb.0:988; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)989; GFX90A-NEXT:    ;;#ASMSTART990; GFX90A-NEXT:    ; def v0991; GFX90A-NEXT:    ;;#ASMEND992; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100993; GFX90A-NEXT:    v_mov_b32_e32 v2, 0994; GFX90A-NEXT:    ;;#ASMSTART995; GFX90A-NEXT:    ; def v3996; GFX90A-NEXT:    ;;#ASMEND997; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s4998; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v3, 16999; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1000; GFX90A-NEXT:    s_waitcnt vmcnt(0)1001; GFX90A-NEXT:    s_setpc_b64 s[30:31]1002;1003; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_0_0_0:1004; GFX942:       ; %bb.0:1005; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1006; GFX942-NEXT:    ;;#ASMSTART1007; GFX942-NEXT:    ; def v01008; GFX942-NEXT:    ;;#ASMEND1009; GFX942-NEXT:    s_mov_b32 s2, 0x50401001010; GFX942-NEXT:    v_mov_b32_e32 v2, 01011; GFX942-NEXT:    ;;#ASMSTART1012; GFX942-NEXT:    ; def v31013; GFX942-NEXT:    ;;#ASMEND1014; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s21015; GFX942-NEXT:    v_alignbit_b32 v0, v0, v3, 161016; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1017; GFX942-NEXT:    s_waitcnt vmcnt(0)1018; GFX942-NEXT:    s_setpc_b64 s[30:31]1019  %vec0 = call <2 x i16> asm "; def $0", "=v"()1020  %vec1 = call <2 x i16> asm "; def $0", "=v"()1021  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 0, i32 0, i32 0>1022  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81023  ret void1024}1025 1026define void @v_shuffle_v4i16_v2i16__3_u_0_0(ptr addrspace(1) inreg %ptr) {1027; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_u_0_0:1028; GFX900:       ; %bb.0:1029; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1030; GFX900-NEXT:    ;;#ASMSTART1031; GFX900-NEXT:    ; def v01032; GFX900-NEXT:    ;;#ASMEND1033; GFX900-NEXT:    ;;#ASMSTART1034; GFX900-NEXT:    ; def v11035; GFX900-NEXT:    ;;#ASMEND1036; GFX900-NEXT:    v_alignbit_b32 v0, s4, v0, 161037; GFX900-NEXT:    s_mov_b32 s4, 0x50401001038; GFX900-NEXT:    v_mov_b32_e32 v2, 01039; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s41040; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1041; GFX900-NEXT:    s_waitcnt vmcnt(0)1042; GFX900-NEXT:    s_setpc_b64 s[30:31]1043;1044; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_u_0_0:1045; GFX90A:       ; %bb.0:1046; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1047; GFX90A-NEXT:    ;;#ASMSTART1048; GFX90A-NEXT:    ; def v01049; GFX90A-NEXT:    ;;#ASMEND1050; GFX90A-NEXT:    ;;#ASMSTART1051; GFX90A-NEXT:    ; def v11052; GFX90A-NEXT:    ;;#ASMEND1053; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v0, 161054; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001055; GFX90A-NEXT:    v_mov_b32_e32 v2, 01056; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s41057; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1058; GFX90A-NEXT:    s_waitcnt vmcnt(0)1059; GFX90A-NEXT:    s_setpc_b64 s[30:31]1060;1061; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_u_0_0:1062; GFX942:       ; %bb.0:1063; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1064; GFX942-NEXT:    ;;#ASMSTART1065; GFX942-NEXT:    ; def v11066; GFX942-NEXT:    ;;#ASMEND1067; GFX942-NEXT:    ;;#ASMSTART1068; GFX942-NEXT:    ; def v01069; GFX942-NEXT:    ;;#ASMEND1070; GFX942-NEXT:    s_mov_b32 s2, 0x50401001071; GFX942-NEXT:    v_mov_b32_e32 v2, 01072; GFX942-NEXT:    v_alignbit_b32 v0, s0, v0, 161073; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s21074; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1075; GFX942-NEXT:    s_waitcnt vmcnt(0)1076; GFX942-NEXT:    s_setpc_b64 s[30:31]1077  %vec0 = call <2 x i16> asm "; def $0", "=v"()1078  %vec1 = call <2 x i16> asm "; def $0", "=v"()1079  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 poison, i32 0, i32 0>1080  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81081  ret void1082}1083 1084define void @v_shuffle_v4i16_v2i16__3_1_0_0(ptr addrspace(1) inreg %ptr) {1085; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_1_0_0:1086; GFX900:       ; %bb.0:1087; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1088; GFX900-NEXT:    ;;#ASMSTART1089; GFX900-NEXT:    ; def v01090; GFX900-NEXT:    ;;#ASMEND1091; GFX900-NEXT:    s_mov_b32 s4, 0x70603021092; GFX900-NEXT:    ;;#ASMSTART1093; GFX900-NEXT:    ; def v11094; GFX900-NEXT:    ;;#ASMEND1095; GFX900-NEXT:    v_perm_b32 v0, v1, v0, s41096; GFX900-NEXT:    s_mov_b32 s4, 0x50401001097; GFX900-NEXT:    v_mov_b32_e32 v2, 01098; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s41099; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1100; GFX900-NEXT:    s_waitcnt vmcnt(0)1101; GFX900-NEXT:    s_setpc_b64 s[30:31]1102;1103; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_1_0_0:1104; GFX90A:       ; %bb.0:1105; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1106; GFX90A-NEXT:    ;;#ASMSTART1107; GFX90A-NEXT:    ; def v01108; GFX90A-NEXT:    ;;#ASMEND1109; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021110; GFX90A-NEXT:    ;;#ASMSTART1111; GFX90A-NEXT:    ; def v11112; GFX90A-NEXT:    ;;#ASMEND1113; GFX90A-NEXT:    v_perm_b32 v0, v1, v0, s41114; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001115; GFX90A-NEXT:    v_mov_b32_e32 v2, 01116; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s41117; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1118; GFX90A-NEXT:    s_waitcnt vmcnt(0)1119; GFX90A-NEXT:    s_setpc_b64 s[30:31]1120;1121; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_1_0_0:1122; GFX942:       ; %bb.0:1123; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1124; GFX942-NEXT:    ;;#ASMSTART1125; GFX942-NEXT:    ; def v01126; GFX942-NEXT:    ;;#ASMEND1127; GFX942-NEXT:    s_mov_b32 s2, 0x70603021128; GFX942-NEXT:    ;;#ASMSTART1129; GFX942-NEXT:    ; def v11130; GFX942-NEXT:    ;;#ASMEND1131; GFX942-NEXT:    v_mov_b32_e32 v2, 01132; GFX942-NEXT:    v_perm_b32 v0, v1, v0, s21133; GFX942-NEXT:    s_mov_b32 s2, 0x50401001134; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s21135; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1136; GFX942-NEXT:    s_waitcnt vmcnt(0)1137; GFX942-NEXT:    s_setpc_b64 s[30:31]1138  %vec0 = call <2 x i16> asm "; def $0", "=v"()1139  %vec1 = call <2 x i16> asm "; def $0", "=v"()1140  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 1, i32 0, i32 0>1141  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81142  ret void1143}1144 1145define void @v_shuffle_v4i16_v2i16__3_2_0_0(ptr addrspace(1) inreg %ptr) {1146; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_2_0_0:1147; GFX900:       ; %bb.0:1148; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1149; GFX900-NEXT:    ;;#ASMSTART1150; GFX900-NEXT:    ; def v01151; GFX900-NEXT:    ;;#ASMEND1152; GFX900-NEXT:    s_mov_b32 s4, 0x50401001153; GFX900-NEXT:    v_mov_b32_e32 v2, 01154; GFX900-NEXT:    ;;#ASMSTART1155; GFX900-NEXT:    ; def v31156; GFX900-NEXT:    ;;#ASMEND1157; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s41158; GFX900-NEXT:    v_alignbit_b32 v0, v3, v3, 161159; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1160; GFX900-NEXT:    s_waitcnt vmcnt(0)1161; GFX900-NEXT:    s_setpc_b64 s[30:31]1162;1163; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_2_0_0:1164; GFX90A:       ; %bb.0:1165; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1166; GFX90A-NEXT:    ;;#ASMSTART1167; GFX90A-NEXT:    ; def v01168; GFX90A-NEXT:    ;;#ASMEND1169; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001170; GFX90A-NEXT:    v_mov_b32_e32 v2, 01171; GFX90A-NEXT:    ;;#ASMSTART1172; GFX90A-NEXT:    ; def v31173; GFX90A-NEXT:    ;;#ASMEND1174; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s41175; GFX90A-NEXT:    v_alignbit_b32 v0, v3, v3, 161176; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1177; GFX90A-NEXT:    s_waitcnt vmcnt(0)1178; GFX90A-NEXT:    s_setpc_b64 s[30:31]1179;1180; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_2_0_0:1181; GFX942:       ; %bb.0:1182; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1183; GFX942-NEXT:    ;;#ASMSTART1184; GFX942-NEXT:    ; def v01185; GFX942-NEXT:    ;;#ASMEND1186; GFX942-NEXT:    s_mov_b32 s2, 0x50401001187; GFX942-NEXT:    v_mov_b32_e32 v2, 01188; GFX942-NEXT:    ;;#ASMSTART1189; GFX942-NEXT:    ; def v31190; GFX942-NEXT:    ;;#ASMEND1191; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s21192; GFX942-NEXT:    v_alignbit_b32 v0, v3, v3, 161193; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1194; GFX942-NEXT:    s_waitcnt vmcnt(0)1195; GFX942-NEXT:    s_setpc_b64 s[30:31]1196  %vec0 = call <2 x i16> asm "; def $0", "=v"()1197  %vec1 = call <2 x i16> asm "; def $0", "=v"()1198  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 2, i32 0, i32 0>1199  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81200  ret void1201}1202 1203define void @v_shuffle_v4i16_v2i16__3_3_0_0(ptr addrspace(1) inreg %ptr) {1204; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_0_0:1205; GFX900:       ; %bb.0:1206; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1207; GFX900-NEXT:    ;;#ASMSTART1208; GFX900-NEXT:    ; def v01209; GFX900-NEXT:    ;;#ASMEND1210; GFX900-NEXT:    s_mov_b32 s4, 0x70603021211; GFX900-NEXT:    ;;#ASMSTART1212; GFX900-NEXT:    ; def v11213; GFX900-NEXT:    ;;#ASMEND1214; GFX900-NEXT:    v_perm_b32 v0, v0, v0, s41215; GFX900-NEXT:    s_mov_b32 s4, 0x50401001216; GFX900-NEXT:    v_mov_b32_e32 v2, 01217; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s41218; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1219; GFX900-NEXT:    s_waitcnt vmcnt(0)1220; GFX900-NEXT:    s_setpc_b64 s[30:31]1221;1222; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_0_0:1223; GFX90A:       ; %bb.0:1224; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1225; GFX90A-NEXT:    ;;#ASMSTART1226; GFX90A-NEXT:    ; def v01227; GFX90A-NEXT:    ;;#ASMEND1228; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021229; GFX90A-NEXT:    ;;#ASMSTART1230; GFX90A-NEXT:    ; def v11231; GFX90A-NEXT:    ;;#ASMEND1232; GFX90A-NEXT:    v_perm_b32 v0, v0, v0, s41233; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001234; GFX90A-NEXT:    v_mov_b32_e32 v2, 01235; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s41236; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1237; GFX90A-NEXT:    s_waitcnt vmcnt(0)1238; GFX90A-NEXT:    s_setpc_b64 s[30:31]1239;1240; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_3_0_0:1241; GFX942:       ; %bb.0:1242; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1243; GFX942-NEXT:    ;;#ASMSTART1244; GFX942-NEXT:    ; def v01245; GFX942-NEXT:    ;;#ASMEND1246; GFX942-NEXT:    s_mov_b32 s2, 0x70603021247; GFX942-NEXT:    ;;#ASMSTART1248; GFX942-NEXT:    ; def v11249; GFX942-NEXT:    ;;#ASMEND1250; GFX942-NEXT:    v_perm_b32 v0, v0, v0, s21251; GFX942-NEXT:    s_mov_b32 s2, 0x50401001252; GFX942-NEXT:    v_mov_b32_e32 v2, 01253; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s21254; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1255; GFX942-NEXT:    s_waitcnt vmcnt(0)1256; GFX942-NEXT:    s_setpc_b64 s[30:31]1257  %vec0 = call <2 x i16> asm "; def $0", "=v"()1258  %vec1 = call <2 x i16> asm "; def $0", "=v"()1259  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 0>1260  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81261  ret void1262}1263 1264define void @v_shuffle_v4i16_v2i16__3_3_u_0(ptr addrspace(1) inreg %ptr) {1265; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_u_0:1266; GFX900:       ; %bb.0:1267; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1268; GFX900-NEXT:    ;;#ASMSTART1269; GFX900-NEXT:    ; def v11270; GFX900-NEXT:    ;;#ASMEND1271; GFX900-NEXT:    ;;#ASMSTART1272; GFX900-NEXT:    ; def v01273; GFX900-NEXT:    ;;#ASMEND1274; GFX900-NEXT:    s_mov_b32 s4, 0x70603021275; GFX900-NEXT:    v_mov_b32_e32 v2, 01276; GFX900-NEXT:    v_perm_b32 v0, v0, v0, s41277; GFX900-NEXT:    v_lshlrev_b32_e32 v1, 16, v11278; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1279; GFX900-NEXT:    s_waitcnt vmcnt(0)1280; GFX900-NEXT:    s_setpc_b64 s[30:31]1281;1282; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_u_0:1283; GFX90A:       ; %bb.0:1284; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1285; GFX90A-NEXT:    ;;#ASMSTART1286; GFX90A-NEXT:    ; def v11287; GFX90A-NEXT:    ;;#ASMEND1288; GFX90A-NEXT:    ;;#ASMSTART1289; GFX90A-NEXT:    ; def v01290; GFX90A-NEXT:    ;;#ASMEND1291; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021292; GFX90A-NEXT:    v_mov_b32_e32 v2, 01293; GFX90A-NEXT:    v_perm_b32 v0, v0, v0, s41294; GFX90A-NEXT:    v_lshlrev_b32_e32 v1, 16, v11295; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1296; GFX90A-NEXT:    s_waitcnt vmcnt(0)1297; GFX90A-NEXT:    s_setpc_b64 s[30:31]1298;1299; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_3_u_0:1300; GFX942:       ; %bb.0:1301; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1302; GFX942-NEXT:    ;;#ASMSTART1303; GFX942-NEXT:    ; def v11304; GFX942-NEXT:    ;;#ASMEND1305; GFX942-NEXT:    ;;#ASMSTART1306; GFX942-NEXT:    ; def v01307; GFX942-NEXT:    ;;#ASMEND1308; GFX942-NEXT:    s_mov_b32 s2, 0x70603021309; GFX942-NEXT:    v_mov_b32_e32 v2, 01310; GFX942-NEXT:    v_perm_b32 v0, v0, v0, s21311; GFX942-NEXT:    v_lshlrev_b32_e32 v1, 16, v11312; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1313; GFX942-NEXT:    s_waitcnt vmcnt(0)1314; GFX942-NEXT:    s_setpc_b64 s[30:31]1315  %vec0 = call <2 x i16> asm "; def $0", "=v"()1316  %vec1 = call <2 x i16> asm "; def $0", "=v"()1317  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 0>1318  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81319  ret void1320}1321 1322define void @v_shuffle_v4i16_v2i16__3_3_1_0(ptr addrspace(1) inreg %ptr) {1323; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_1_0:1324; GFX900:       ; %bb.0:1325; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1326; GFX900-NEXT:    ;;#ASMSTART1327; GFX900-NEXT:    ; def v11328; GFX900-NEXT:    ;;#ASMEND1329; GFX900-NEXT:    ;;#ASMSTART1330; GFX900-NEXT:    ; def v01331; GFX900-NEXT:    ;;#ASMEND1332; GFX900-NEXT:    s_mov_b32 s4, 0x70603021333; GFX900-NEXT:    v_mov_b32_e32 v2, 01334; GFX900-NEXT:    v_perm_b32 v0, v0, v0, s41335; GFX900-NEXT:    v_alignbit_b32 v1, v1, v1, 161336; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1337; GFX900-NEXT:    s_waitcnt vmcnt(0)1338; GFX900-NEXT:    s_setpc_b64 s[30:31]1339;1340; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_1_0:1341; GFX90A:       ; %bb.0:1342; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1343; GFX90A-NEXT:    ;;#ASMSTART1344; GFX90A-NEXT:    ; def v11345; GFX90A-NEXT:    ;;#ASMEND1346; GFX90A-NEXT:    ;;#ASMSTART1347; GFX90A-NEXT:    ; def v01348; GFX90A-NEXT:    ;;#ASMEND1349; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021350; GFX90A-NEXT:    v_mov_b32_e32 v2, 01351; GFX90A-NEXT:    v_perm_b32 v0, v0, v0, s41352; GFX90A-NEXT:    v_alignbit_b32 v1, v1, v1, 161353; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1354; GFX90A-NEXT:    s_waitcnt vmcnt(0)1355; GFX90A-NEXT:    s_setpc_b64 s[30:31]1356;1357; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_3_1_0:1358; GFX942:       ; %bb.0:1359; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1360; GFX942-NEXT:    ;;#ASMSTART1361; GFX942-NEXT:    ; def v11362; GFX942-NEXT:    ;;#ASMEND1363; GFX942-NEXT:    ;;#ASMSTART1364; GFX942-NEXT:    ; def v01365; GFX942-NEXT:    ;;#ASMEND1366; GFX942-NEXT:    s_mov_b32 s2, 0x70603021367; GFX942-NEXT:    v_mov_b32_e32 v2, 01368; GFX942-NEXT:    v_perm_b32 v0, v0, v0, s21369; GFX942-NEXT:    v_alignbit_b32 v1, v1, v1, 161370; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1371; GFX942-NEXT:    s_waitcnt vmcnt(0)1372; GFX942-NEXT:    s_setpc_b64 s[30:31]1373  %vec0 = call <2 x i16> asm "; def $0", "=v"()1374  %vec1 = call <2 x i16> asm "; def $0", "=v"()1375  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 0>1376  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81377  ret void1378}1379 1380define void @v_shuffle_v4i16_v2i16__3_3_2_0(ptr addrspace(1) inreg %ptr) {1381; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_2_0:1382; GFX900:       ; %bb.0:1383; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1384; GFX900-NEXT:    s_mov_b32 s4, 0x50401001385; GFX900-NEXT:    ;;#ASMSTART1386; GFX900-NEXT:    ; def v01387; GFX900-NEXT:    ;;#ASMEND1388; GFX900-NEXT:    ;;#ASMSTART1389; GFX900-NEXT:    ; def v31390; GFX900-NEXT:    ;;#ASMEND1391; GFX900-NEXT:    v_perm_b32 v1, v0, v3, s41392; GFX900-NEXT:    s_mov_b32 s4, 0x70603021393; GFX900-NEXT:    v_mov_b32_e32 v2, 01394; GFX900-NEXT:    v_perm_b32 v0, v3, v3, s41395; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1396; GFX900-NEXT:    s_waitcnt vmcnt(0)1397; GFX900-NEXT:    s_setpc_b64 s[30:31]1398;1399; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_2_0:1400; GFX90A:       ; %bb.0:1401; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1402; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001403; GFX90A-NEXT:    ;;#ASMSTART1404; GFX90A-NEXT:    ; def v01405; GFX90A-NEXT:    ;;#ASMEND1406; GFX90A-NEXT:    ;;#ASMSTART1407; GFX90A-NEXT:    ; def v31408; GFX90A-NEXT:    ;;#ASMEND1409; GFX90A-NEXT:    v_perm_b32 v1, v0, v3, s41410; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021411; GFX90A-NEXT:    v_mov_b32_e32 v2, 01412; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s41413; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1414; GFX90A-NEXT:    s_waitcnt vmcnt(0)1415; GFX90A-NEXT:    s_setpc_b64 s[30:31]1416;1417; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_3_2_0:1418; GFX942:       ; %bb.0:1419; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1420; GFX942-NEXT:    s_mov_b32 s2, 0x50401001421; GFX942-NEXT:    ;;#ASMSTART1422; GFX942-NEXT:    ; def v01423; GFX942-NEXT:    ;;#ASMEND1424; GFX942-NEXT:    ;;#ASMSTART1425; GFX942-NEXT:    ; def v31426; GFX942-NEXT:    ;;#ASMEND1427; GFX942-NEXT:    v_mov_b32_e32 v2, 01428; GFX942-NEXT:    v_perm_b32 v1, v0, v3, s21429; GFX942-NEXT:    s_mov_b32 s2, 0x70603021430; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s21431; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1432; GFX942-NEXT:    s_waitcnt vmcnt(0)1433; GFX942-NEXT:    s_setpc_b64 s[30:31]1434  %vec0 = call <2 x i16> asm "; def $0", "=v"()1435  %vec1 = call <2 x i16> asm "; def $0", "=v"()1436  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 0>1437  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81438  ret void1439}1440 1441define void @v_shuffle_v4i16_v2i16__u_1_1_1(ptr addrspace(1) inreg %ptr) {1442; GFX900-LABEL: v_shuffle_v4i16_v2i16__u_1_1_1:1443; GFX900:       ; %bb.0:1444; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1445; GFX900-NEXT:    s_mov_b32 s4, 0x70603021446; GFX900-NEXT:    v_mov_b32_e32 v2, 01447; GFX900-NEXT:    ;;#ASMSTART1448; GFX900-NEXT:    ; def v01449; GFX900-NEXT:    ;;#ASMEND1450; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s41451; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1452; GFX900-NEXT:    s_waitcnt vmcnt(0)1453; GFX900-NEXT:    s_setpc_b64 s[30:31]1454;1455; GFX90A-LABEL: v_shuffle_v4i16_v2i16__u_1_1_1:1456; GFX90A:       ; %bb.0:1457; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1458; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021459; GFX90A-NEXT:    v_mov_b32_e32 v2, 01460; GFX90A-NEXT:    ;;#ASMSTART1461; GFX90A-NEXT:    ; def v01462; GFX90A-NEXT:    ;;#ASMEND1463; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s41464; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1465; GFX90A-NEXT:    s_waitcnt vmcnt(0)1466; GFX90A-NEXT:    s_setpc_b64 s[30:31]1467;1468; GFX942-LABEL: v_shuffle_v4i16_v2i16__u_1_1_1:1469; GFX942:       ; %bb.0:1470; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1471; GFX942-NEXT:    s_mov_b32 s2, 0x70603021472; GFX942-NEXT:    v_mov_b32_e32 v2, 01473; GFX942-NEXT:    ;;#ASMSTART1474; GFX942-NEXT:    ; def v01475; GFX942-NEXT:    ;;#ASMEND1476; GFX942-NEXT:    s_nop 01477; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s21478; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1479; GFX942-NEXT:    s_waitcnt vmcnt(0)1480; GFX942-NEXT:    s_setpc_b64 s[30:31]1481  %vec0 = call <2 x i16> asm "; def $0", "=v"()1482  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1>1483  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81484  ret void1485}1486 1487define void @v_shuffle_v4i16_v2i16__0_1_1_1(ptr addrspace(1) inreg %ptr) {1488; GFX900-LABEL: v_shuffle_v4i16_v2i16__0_1_1_1:1489; GFX900:       ; %bb.0:1490; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1491; GFX900-NEXT:    s_mov_b32 s4, 0x70603021492; GFX900-NEXT:    v_mov_b32_e32 v2, 01493; GFX900-NEXT:    ;;#ASMSTART1494; GFX900-NEXT:    ; def v01495; GFX900-NEXT:    ;;#ASMEND1496; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s41497; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1498; GFX900-NEXT:    s_waitcnt vmcnt(0)1499; GFX900-NEXT:    s_setpc_b64 s[30:31]1500;1501; GFX90A-LABEL: v_shuffle_v4i16_v2i16__0_1_1_1:1502; GFX90A:       ; %bb.0:1503; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1504; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021505; GFX90A-NEXT:    v_mov_b32_e32 v2, 01506; GFX90A-NEXT:    ;;#ASMSTART1507; GFX90A-NEXT:    ; def v01508; GFX90A-NEXT:    ;;#ASMEND1509; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s41510; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1511; GFX90A-NEXT:    s_waitcnt vmcnt(0)1512; GFX90A-NEXT:    s_setpc_b64 s[30:31]1513;1514; GFX942-LABEL: v_shuffle_v4i16_v2i16__0_1_1_1:1515; GFX942:       ; %bb.0:1516; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1517; GFX942-NEXT:    s_mov_b32 s2, 0x70603021518; GFX942-NEXT:    v_mov_b32_e32 v2, 01519; GFX942-NEXT:    ;;#ASMSTART1520; GFX942-NEXT:    ; def v01521; GFX942-NEXT:    ;;#ASMEND1522; GFX942-NEXT:    s_nop 01523; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s21524; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1525; GFX942-NEXT:    s_waitcnt vmcnt(0)1526; GFX942-NEXT:    s_setpc_b64 s[30:31]1527  %vec0 = call <2 x i16> asm "; def $0", "=v"()1528  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1>1529  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81530  ret void1531}1532 1533define void @v_shuffle_v4i16_v2i16__1_1_1_1(ptr addrspace(1) inreg %ptr) {1534; GFX900-LABEL: v_shuffle_v4i16_v2i16__1_1_1_1:1535; GFX900:       ; %bb.0:1536; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1537; GFX900-NEXT:    ;;#ASMSTART1538; GFX900-NEXT:    ; def v01539; GFX900-NEXT:    ;;#ASMEND1540; GFX900-NEXT:    s_mov_b32 s4, 0x70603021541; GFX900-NEXT:    v_perm_b32 v0, v0, v0, s41542; GFX900-NEXT:    v_mov_b32_e32 v2, 01543; GFX900-NEXT:    v_mov_b32_e32 v1, v01544; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1545; GFX900-NEXT:    s_waitcnt vmcnt(0)1546; GFX900-NEXT:    s_setpc_b64 s[30:31]1547;1548; GFX90A-LABEL: v_shuffle_v4i16_v2i16__1_1_1_1:1549; GFX90A:       ; %bb.0:1550; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1551; GFX90A-NEXT:    ;;#ASMSTART1552; GFX90A-NEXT:    ; def v01553; GFX90A-NEXT:    ;;#ASMEND1554; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021555; GFX90A-NEXT:    v_perm_b32 v0, v0, v0, s41556; GFX90A-NEXT:    v_mov_b32_e32 v2, 01557; GFX90A-NEXT:    v_mov_b32_e32 v1, v01558; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1559; GFX90A-NEXT:    s_waitcnt vmcnt(0)1560; GFX90A-NEXT:    s_setpc_b64 s[30:31]1561;1562; GFX942-LABEL: v_shuffle_v4i16_v2i16__1_1_1_1:1563; GFX942:       ; %bb.0:1564; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1565; GFX942-NEXT:    ;;#ASMSTART1566; GFX942-NEXT:    ; def v01567; GFX942-NEXT:    ;;#ASMEND1568; GFX942-NEXT:    s_mov_b32 s2, 0x70603021569; GFX942-NEXT:    v_perm_b32 v0, v0, v0, s21570; GFX942-NEXT:    v_mov_b32_e32 v2, 01571; GFX942-NEXT:    v_mov_b32_e32 v1, v01572; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1573; GFX942-NEXT:    s_waitcnt vmcnt(0)1574; GFX942-NEXT:    s_setpc_b64 s[30:31]1575  %vec0 = call <2 x i16> asm "; def $0", "=v"()1576  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>1577  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81578  ret void1579}1580 1581define void @v_shuffle_v4i16_v2i16__2_1_1_1(ptr addrspace(1) inreg %ptr) {1582; GFX900-LABEL: v_shuffle_v4i16_v2i16__2_1_1_1:1583; GFX900:       ; %bb.0:1584; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1585; GFX900-NEXT:    s_mov_b32 s4, 0x70603021586; GFX900-NEXT:    v_mov_b32_e32 v2, 01587; GFX900-NEXT:    ;;#ASMSTART1588; GFX900-NEXT:    ; def v01589; GFX900-NEXT:    ;;#ASMEND1590; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s41591; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1592; GFX900-NEXT:    s_waitcnt vmcnt(0)1593; GFX900-NEXT:    s_setpc_b64 s[30:31]1594;1595; GFX90A-LABEL: v_shuffle_v4i16_v2i16__2_1_1_1:1596; GFX90A:       ; %bb.0:1597; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1598; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021599; GFX90A-NEXT:    v_mov_b32_e32 v2, 01600; GFX90A-NEXT:    ;;#ASMSTART1601; GFX90A-NEXT:    ; def v01602; GFX90A-NEXT:    ;;#ASMEND1603; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s41604; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1605; GFX90A-NEXT:    s_waitcnt vmcnt(0)1606; GFX90A-NEXT:    s_setpc_b64 s[30:31]1607;1608; GFX942-LABEL: v_shuffle_v4i16_v2i16__2_1_1_1:1609; GFX942:       ; %bb.0:1610; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1611; GFX942-NEXT:    s_mov_b32 s2, 0x70603021612; GFX942-NEXT:    v_mov_b32_e32 v2, 01613; GFX942-NEXT:    ;;#ASMSTART1614; GFX942-NEXT:    ; def v01615; GFX942-NEXT:    ;;#ASMEND1616; GFX942-NEXT:    s_nop 01617; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s21618; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1619; GFX942-NEXT:    s_waitcnt vmcnt(0)1620; GFX942-NEXT:    s_setpc_b64 s[30:31]1621  %vec0 = call <2 x i16> asm "; def $0", "=v"()1622  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1>1623  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81624  ret void1625}1626 1627define void @v_shuffle_v4i16_v2i16__3_1_1_1(ptr addrspace(1) inreg %ptr) {1628; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_1_1_1:1629; GFX900:       ; %bb.0:1630; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1631; GFX900-NEXT:    ;;#ASMSTART1632; GFX900-NEXT:    ; def v11633; GFX900-NEXT:    ;;#ASMEND1634; GFX900-NEXT:    ;;#ASMSTART1635; GFX900-NEXT:    ; def v01636; GFX900-NEXT:    ;;#ASMEND1637; GFX900-NEXT:    s_mov_b32 s4, 0x70603021638; GFX900-NEXT:    v_mov_b32_e32 v2, 01639; GFX900-NEXT:    v_perm_b32 v0, v1, v0, s41640; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s41641; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1642; GFX900-NEXT:    s_waitcnt vmcnt(0)1643; GFX900-NEXT:    s_setpc_b64 s[30:31]1644;1645; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_1_1_1:1646; GFX90A:       ; %bb.0:1647; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1648; GFX90A-NEXT:    ;;#ASMSTART1649; GFX90A-NEXT:    ; def v11650; GFX90A-NEXT:    ;;#ASMEND1651; GFX90A-NEXT:    ;;#ASMSTART1652; GFX90A-NEXT:    ; def v01653; GFX90A-NEXT:    ;;#ASMEND1654; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021655; GFX90A-NEXT:    v_mov_b32_e32 v2, 01656; GFX90A-NEXT:    v_perm_b32 v0, v1, v0, s41657; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s41658; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1659; GFX90A-NEXT:    s_waitcnt vmcnt(0)1660; GFX90A-NEXT:    s_setpc_b64 s[30:31]1661;1662; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_1_1_1:1663; GFX942:       ; %bb.0:1664; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1665; GFX942-NEXT:    ;;#ASMSTART1666; GFX942-NEXT:    ; def v11667; GFX942-NEXT:    ;;#ASMEND1668; GFX942-NEXT:    ;;#ASMSTART1669; GFX942-NEXT:    ; def v01670; GFX942-NEXT:    ;;#ASMEND1671; GFX942-NEXT:    s_mov_b32 s2, 0x70603021672; GFX942-NEXT:    v_mov_b32_e32 v2, 01673; GFX942-NEXT:    v_perm_b32 v0, v1, v0, s21674; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s21675; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1676; GFX942-NEXT:    s_waitcnt vmcnt(0)1677; GFX942-NEXT:    s_setpc_b64 s[30:31]1678  %vec0 = call <2 x i16> asm "; def $0", "=v"()1679  %vec1 = call <2 x i16> asm "; def $0", "=v"()1680  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 1, i32 1, i32 1>1681  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81682  ret void1683}1684 1685define void @v_shuffle_v4i16_v2i16__3_u_1_1(ptr addrspace(1) inreg %ptr) {1686; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_u_1_1:1687; GFX900:       ; %bb.0:1688; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1689; GFX900-NEXT:    ;;#ASMSTART1690; GFX900-NEXT:    ; def v01691; GFX900-NEXT:    ;;#ASMEND1692; GFX900-NEXT:    s_mov_b32 s4, 0x70603021693; GFX900-NEXT:    v_mov_b32_e32 v2, 01694; GFX900-NEXT:    ;;#ASMSTART1695; GFX900-NEXT:    ; def v31696; GFX900-NEXT:    ;;#ASMEND1697; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s41698; GFX900-NEXT:    v_alignbit_b32 v0, s4, v3, 161699; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1700; GFX900-NEXT:    s_waitcnt vmcnt(0)1701; GFX900-NEXT:    s_setpc_b64 s[30:31]1702;1703; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_u_1_1:1704; GFX90A:       ; %bb.0:1705; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1706; GFX90A-NEXT:    ;;#ASMSTART1707; GFX90A-NEXT:    ; def v01708; GFX90A-NEXT:    ;;#ASMEND1709; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021710; GFX90A-NEXT:    v_mov_b32_e32 v2, 01711; GFX90A-NEXT:    ;;#ASMSTART1712; GFX90A-NEXT:    ; def v31713; GFX90A-NEXT:    ;;#ASMEND1714; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s41715; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v3, 161716; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1717; GFX90A-NEXT:    s_waitcnt vmcnt(0)1718; GFX90A-NEXT:    s_setpc_b64 s[30:31]1719;1720; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_u_1_1:1721; GFX942:       ; %bb.0:1722; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1723; GFX942-NEXT:    ;;#ASMSTART1724; GFX942-NEXT:    ; def v01725; GFX942-NEXT:    ;;#ASMEND1726; GFX942-NEXT:    s_mov_b32 s2, 0x70603021727; GFX942-NEXT:    v_mov_b32_e32 v2, 01728; GFX942-NEXT:    ;;#ASMSTART1729; GFX942-NEXT:    ; def v31730; GFX942-NEXT:    ;;#ASMEND1731; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s21732; GFX942-NEXT:    v_alignbit_b32 v0, s0, v3, 161733; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1734; GFX942-NEXT:    s_waitcnt vmcnt(0)1735; GFX942-NEXT:    s_setpc_b64 s[30:31]1736  %vec0 = call <2 x i16> asm "; def $0", "=v"()1737  %vec1 = call <2 x i16> asm "; def $0", "=v"()1738  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 poison, i32 1, i32 1>1739  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81740  ret void1741}1742 1743define void @v_shuffle_v4i16_v2i16__3_0_1_1(ptr addrspace(1) inreg %ptr) {1744; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_0_1_1:1745; GFX900:       ; %bb.0:1746; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1747; GFX900-NEXT:    ;;#ASMSTART1748; GFX900-NEXT:    ; def v01749; GFX900-NEXT:    ;;#ASMEND1750; GFX900-NEXT:    s_mov_b32 s4, 0x70603021751; GFX900-NEXT:    v_mov_b32_e32 v2, 01752; GFX900-NEXT:    ;;#ASMSTART1753; GFX900-NEXT:    ; def v31754; GFX900-NEXT:    ;;#ASMEND1755; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s41756; GFX900-NEXT:    v_alignbit_b32 v0, v0, v3, 161757; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1758; GFX900-NEXT:    s_waitcnt vmcnt(0)1759; GFX900-NEXT:    s_setpc_b64 s[30:31]1760;1761; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_0_1_1:1762; GFX90A:       ; %bb.0:1763; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1764; GFX90A-NEXT:    ;;#ASMSTART1765; GFX90A-NEXT:    ; def v01766; GFX90A-NEXT:    ;;#ASMEND1767; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021768; GFX90A-NEXT:    v_mov_b32_e32 v2, 01769; GFX90A-NEXT:    ;;#ASMSTART1770; GFX90A-NEXT:    ; def v31771; GFX90A-NEXT:    ;;#ASMEND1772; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s41773; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v3, 161774; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1775; GFX90A-NEXT:    s_waitcnt vmcnt(0)1776; GFX90A-NEXT:    s_setpc_b64 s[30:31]1777;1778; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_0_1_1:1779; GFX942:       ; %bb.0:1780; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1781; GFX942-NEXT:    ;;#ASMSTART1782; GFX942-NEXT:    ; def v01783; GFX942-NEXT:    ;;#ASMEND1784; GFX942-NEXT:    s_mov_b32 s2, 0x70603021785; GFX942-NEXT:    v_mov_b32_e32 v2, 01786; GFX942-NEXT:    ;;#ASMSTART1787; GFX942-NEXT:    ; def v31788; GFX942-NEXT:    ;;#ASMEND1789; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s21790; GFX942-NEXT:    v_alignbit_b32 v0, v0, v3, 161791; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1792; GFX942-NEXT:    s_waitcnt vmcnt(0)1793; GFX942-NEXT:    s_setpc_b64 s[30:31]1794  %vec0 = call <2 x i16> asm "; def $0", "=v"()1795  %vec1 = call <2 x i16> asm "; def $0", "=v"()1796  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 0, i32 1, i32 1>1797  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81798  ret void1799}1800 1801define void @v_shuffle_v4i16_v2i16__3_2_1_1(ptr addrspace(1) inreg %ptr) {1802; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_2_1_1:1803; GFX900:       ; %bb.0:1804; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1805; GFX900-NEXT:    ;;#ASMSTART1806; GFX900-NEXT:    ; def v01807; GFX900-NEXT:    ;;#ASMEND1808; GFX900-NEXT:    s_mov_b32 s4, 0x70603021809; GFX900-NEXT:    v_mov_b32_e32 v2, 01810; GFX900-NEXT:    ;;#ASMSTART1811; GFX900-NEXT:    ; def v31812; GFX900-NEXT:    ;;#ASMEND1813; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s41814; GFX900-NEXT:    v_alignbit_b32 v0, v3, v3, 161815; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1816; GFX900-NEXT:    s_waitcnt vmcnt(0)1817; GFX900-NEXT:    s_setpc_b64 s[30:31]1818;1819; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_2_1_1:1820; GFX90A:       ; %bb.0:1821; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1822; GFX90A-NEXT:    ;;#ASMSTART1823; GFX90A-NEXT:    ; def v01824; GFX90A-NEXT:    ;;#ASMEND1825; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021826; GFX90A-NEXT:    v_mov_b32_e32 v2, 01827; GFX90A-NEXT:    ;;#ASMSTART1828; GFX90A-NEXT:    ; def v31829; GFX90A-NEXT:    ;;#ASMEND1830; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s41831; GFX90A-NEXT:    v_alignbit_b32 v0, v3, v3, 161832; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1833; GFX90A-NEXT:    s_waitcnt vmcnt(0)1834; GFX90A-NEXT:    s_setpc_b64 s[30:31]1835;1836; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_2_1_1:1837; GFX942:       ; %bb.0:1838; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1839; GFX942-NEXT:    ;;#ASMSTART1840; GFX942-NEXT:    ; def v01841; GFX942-NEXT:    ;;#ASMEND1842; GFX942-NEXT:    s_mov_b32 s2, 0x70603021843; GFX942-NEXT:    v_mov_b32_e32 v2, 01844; GFX942-NEXT:    ;;#ASMSTART1845; GFX942-NEXT:    ; def v31846; GFX942-NEXT:    ;;#ASMEND1847; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s21848; GFX942-NEXT:    v_alignbit_b32 v0, v3, v3, 161849; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1850; GFX942-NEXT:    s_waitcnt vmcnt(0)1851; GFX942-NEXT:    s_setpc_b64 s[30:31]1852  %vec0 = call <2 x i16> asm "; def $0", "=v"()1853  %vec1 = call <2 x i16> asm "; def $0", "=v"()1854  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 2, i32 1, i32 1>1855  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81856  ret void1857}1858 1859define void @v_shuffle_v4i16_v2i16__3_3_1_1(ptr addrspace(1) inreg %ptr) {1860; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_1_1:1861; GFX900:       ; %bb.0:1862; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1863; GFX900-NEXT:    ;;#ASMSTART1864; GFX900-NEXT:    ; def v01865; GFX900-NEXT:    ;;#ASMEND1866; GFX900-NEXT:    s_mov_b32 s4, 0x70603021867; GFX900-NEXT:    v_mov_b32_e32 v2, 01868; GFX900-NEXT:    ;;#ASMSTART1869; GFX900-NEXT:    ; def v31870; GFX900-NEXT:    ;;#ASMEND1871; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s41872; GFX900-NEXT:    v_perm_b32 v0, v3, v3, s41873; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1874; GFX900-NEXT:    s_waitcnt vmcnt(0)1875; GFX900-NEXT:    s_setpc_b64 s[30:31]1876;1877; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_1_1:1878; GFX90A:       ; %bb.0:1879; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1880; GFX90A-NEXT:    ;;#ASMSTART1881; GFX90A-NEXT:    ; def v01882; GFX90A-NEXT:    ;;#ASMEND1883; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021884; GFX90A-NEXT:    v_mov_b32_e32 v2, 01885; GFX90A-NEXT:    ;;#ASMSTART1886; GFX90A-NEXT:    ; def v31887; GFX90A-NEXT:    ;;#ASMEND1888; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s41889; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s41890; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1891; GFX90A-NEXT:    s_waitcnt vmcnt(0)1892; GFX90A-NEXT:    s_setpc_b64 s[30:31]1893;1894; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_3_1_1:1895; GFX942:       ; %bb.0:1896; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1897; GFX942-NEXT:    ;;#ASMSTART1898; GFX942-NEXT:    ; def v01899; GFX942-NEXT:    ;;#ASMEND1900; GFX942-NEXT:    s_mov_b32 s2, 0x70603021901; GFX942-NEXT:    v_mov_b32_e32 v2, 01902; GFX942-NEXT:    ;;#ASMSTART1903; GFX942-NEXT:    ; def v31904; GFX942-NEXT:    ;;#ASMEND1905; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s21906; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s21907; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1908; GFX942-NEXT:    s_waitcnt vmcnt(0)1909; GFX942-NEXT:    s_setpc_b64 s[30:31]1910  %vec0 = call <2 x i16> asm "; def $0", "=v"()1911  %vec1 = call <2 x i16> asm "; def $0", "=v"()1912  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 1>1913  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81914  ret void1915}1916 1917define void @v_shuffle_v4i16_v2i16__3_3_u_1(ptr addrspace(1) inreg %ptr) {1918; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_u_1:1919; GFX900:       ; %bb.0:1920; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1921; GFX900-NEXT:    ;;#ASMSTART1922; GFX900-NEXT:    ; def v01923; GFX900-NEXT:    ;;#ASMEND1924; GFX900-NEXT:    s_mov_b32 s4, 0x70603021925; GFX900-NEXT:    v_mov_b32_e32 v2, 01926; GFX900-NEXT:    v_perm_b32 v0, v0, v0, s41927; GFX900-NEXT:    ;;#ASMSTART1928; GFX900-NEXT:    ; def v11929; GFX900-NEXT:    ;;#ASMEND1930; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1931; GFX900-NEXT:    s_waitcnt vmcnt(0)1932; GFX900-NEXT:    s_setpc_b64 s[30:31]1933;1934; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_u_1:1935; GFX90A:       ; %bb.0:1936; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1937; GFX90A-NEXT:    ;;#ASMSTART1938; GFX90A-NEXT:    ; def v01939; GFX90A-NEXT:    ;;#ASMEND1940; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021941; GFX90A-NEXT:    v_mov_b32_e32 v2, 01942; GFX90A-NEXT:    v_perm_b32 v0, v0, v0, s41943; GFX90A-NEXT:    ;;#ASMSTART1944; GFX90A-NEXT:    ; def v11945; GFX90A-NEXT:    ;;#ASMEND1946; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1947; GFX90A-NEXT:    s_waitcnt vmcnt(0)1948; GFX90A-NEXT:    s_setpc_b64 s[30:31]1949;1950; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_3_u_1:1951; GFX942:       ; %bb.0:1952; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1953; GFX942-NEXT:    ;;#ASMSTART1954; GFX942-NEXT:    ; def v01955; GFX942-NEXT:    ;;#ASMEND1956; GFX942-NEXT:    s_mov_b32 s2, 0x70603021957; GFX942-NEXT:    v_mov_b32_e32 v2, 01958; GFX942-NEXT:    v_perm_b32 v0, v0, v0, s21959; GFX942-NEXT:    ;;#ASMSTART1960; GFX942-NEXT:    ; def v11961; GFX942-NEXT:    ;;#ASMEND1962; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]1963; GFX942-NEXT:    s_waitcnt vmcnt(0)1964; GFX942-NEXT:    s_setpc_b64 s[30:31]1965  %vec0 = call <2 x i16> asm "; def $0", "=v"()1966  %vec1 = call <2 x i16> asm "; def $0", "=v"()1967  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 1>1968  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 81969  ret void1970}1971 1972define void @v_shuffle_v4i16_v2i16__3_3_0_1(ptr addrspace(1) inreg %ptr) {1973; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_0_1:1974; GFX900:       ; %bb.0:1975; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1976; GFX900-NEXT:    ;;#ASMSTART1977; GFX900-NEXT:    ; def v01978; GFX900-NEXT:    ;;#ASMEND1979; GFX900-NEXT:    s_mov_b32 s4, 0x70603021980; GFX900-NEXT:    v_mov_b32_e32 v2, 01981; GFX900-NEXT:    v_perm_b32 v0, v0, v0, s41982; GFX900-NEXT:    ;;#ASMSTART1983; GFX900-NEXT:    ; def v11984; GFX900-NEXT:    ;;#ASMEND1985; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]1986; GFX900-NEXT:    s_waitcnt vmcnt(0)1987; GFX900-NEXT:    s_setpc_b64 s[30:31]1988;1989; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_0_1:1990; GFX90A:       ; %bb.0:1991; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1992; GFX90A-NEXT:    ;;#ASMSTART1993; GFX90A-NEXT:    ; def v01994; GFX90A-NEXT:    ;;#ASMEND1995; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021996; GFX90A-NEXT:    v_mov_b32_e32 v2, 01997; GFX90A-NEXT:    v_perm_b32 v0, v0, v0, s41998; GFX90A-NEXT:    ;;#ASMSTART1999; GFX90A-NEXT:    ; def v12000; GFX90A-NEXT:    ;;#ASMEND2001; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2002; GFX90A-NEXT:    s_waitcnt vmcnt(0)2003; GFX90A-NEXT:    s_setpc_b64 s[30:31]2004;2005; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_3_0_1:2006; GFX942:       ; %bb.0:2007; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2008; GFX942-NEXT:    ;;#ASMSTART2009; GFX942-NEXT:    ; def v02010; GFX942-NEXT:    ;;#ASMEND2011; GFX942-NEXT:    s_mov_b32 s2, 0x70603022012; GFX942-NEXT:    v_mov_b32_e32 v2, 02013; GFX942-NEXT:    v_perm_b32 v0, v0, v0, s22014; GFX942-NEXT:    ;;#ASMSTART2015; GFX942-NEXT:    ; def v12016; GFX942-NEXT:    ;;#ASMEND2017; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]2018; GFX942-NEXT:    s_waitcnt vmcnt(0)2019; GFX942-NEXT:    s_setpc_b64 s[30:31]2020  %vec0 = call <2 x i16> asm "; def $0", "=v"()2021  %vec1 = call <2 x i16> asm "; def $0", "=v"()2022  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 1>2023  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82024  ret void2025}2026 2027define void @v_shuffle_v4i16_v2i16__3_3_2_1(ptr addrspace(1) inreg %ptr) {2028; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_2_1:2029; GFX900:       ; %bb.0:2030; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2031; GFX900-NEXT:    s_mov_b32 s4, 0xffff2032; GFX900-NEXT:    ;;#ASMSTART2033; GFX900-NEXT:    ; def v02034; GFX900-NEXT:    ;;#ASMEND2035; GFX900-NEXT:    ;;#ASMSTART2036; GFX900-NEXT:    ; def v32037; GFX900-NEXT:    ;;#ASMEND2038; GFX900-NEXT:    v_bfi_b32 v1, s4, v3, v02039; GFX900-NEXT:    s_mov_b32 s4, 0x70603022040; GFX900-NEXT:    v_mov_b32_e32 v2, 02041; GFX900-NEXT:    v_perm_b32 v0, v3, v3, s42042; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2043; GFX900-NEXT:    s_waitcnt vmcnt(0)2044; GFX900-NEXT:    s_setpc_b64 s[30:31]2045;2046; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_2_1:2047; GFX90A:       ; %bb.0:2048; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2049; GFX90A-NEXT:    s_mov_b32 s4, 0xffff2050; GFX90A-NEXT:    ;;#ASMSTART2051; GFX90A-NEXT:    ; def v02052; GFX90A-NEXT:    ;;#ASMEND2053; GFX90A-NEXT:    ;;#ASMSTART2054; GFX90A-NEXT:    ; def v32055; GFX90A-NEXT:    ;;#ASMEND2056; GFX90A-NEXT:    v_bfi_b32 v1, s4, v3, v02057; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022058; GFX90A-NEXT:    v_mov_b32_e32 v2, 02059; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s42060; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2061; GFX90A-NEXT:    s_waitcnt vmcnt(0)2062; GFX90A-NEXT:    s_setpc_b64 s[30:31]2063;2064; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_3_2_1:2065; GFX942:       ; %bb.0:2066; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2067; GFX942-NEXT:    s_mov_b32 s2, 0xffff2068; GFX942-NEXT:    ;;#ASMSTART2069; GFX942-NEXT:    ; def v02070; GFX942-NEXT:    ;;#ASMEND2071; GFX942-NEXT:    ;;#ASMSTART2072; GFX942-NEXT:    ; def v32073; GFX942-NEXT:    ;;#ASMEND2074; GFX942-NEXT:    v_mov_b32_e32 v2, 02075; GFX942-NEXT:    v_bfi_b32 v1, s2, v3, v02076; GFX942-NEXT:    s_mov_b32 s2, 0x70603022077; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s22078; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]2079; GFX942-NEXT:    s_waitcnt vmcnt(0)2080; GFX942-NEXT:    s_setpc_b64 s[30:31]2081  %vec0 = call <2 x i16> asm "; def $0", "=v"()2082  %vec1 = call <2 x i16> asm "; def $0", "=v"()2083  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 1>2084  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82085  ret void2086}2087 2088define void @v_shuffle_v4i16_v2i16__u_2_2_2(ptr addrspace(1) inreg %ptr) {2089; GFX9-LABEL: v_shuffle_v4i16_v2i16__u_2_2_2:2090; GFX9:       ; %bb.0:2091; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2092; GFX9-NEXT:    s_setpc_b64 s[30:31]2093  %vec0 = call <2 x i16> asm "; def $0", "=v"()2094  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2>2095  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82096  ret void2097}2098 2099define void @v_shuffle_v4i16_v2i16__0_2_2_2(ptr addrspace(1) inreg %ptr) {2100; GFX900-LABEL: v_shuffle_v4i16_v2i16__0_2_2_2:2101; GFX900:       ; %bb.0:2102; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2103; GFX900-NEXT:    v_mov_b32_e32 v1, 02104; GFX900-NEXT:    ;;#ASMSTART2105; GFX900-NEXT:    ; def v02106; GFX900-NEXT:    ;;#ASMEND2107; GFX900-NEXT:    global_store_dwordx2 v1, v[0:1], s[16:17]2108; GFX900-NEXT:    s_waitcnt vmcnt(0)2109; GFX900-NEXT:    s_setpc_b64 s[30:31]2110;2111; GFX90A-LABEL: v_shuffle_v4i16_v2i16__0_2_2_2:2112; GFX90A:       ; %bb.0:2113; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2114; GFX90A-NEXT:    v_mov_b32_e32 v1, 02115; GFX90A-NEXT:    ;;#ASMSTART2116; GFX90A-NEXT:    ; def v02117; GFX90A-NEXT:    ;;#ASMEND2118; GFX90A-NEXT:    global_store_dwordx2 v1, v[0:1], s[16:17]2119; GFX90A-NEXT:    s_waitcnt vmcnt(0)2120; GFX90A-NEXT:    s_setpc_b64 s[30:31]2121;2122; GFX942-LABEL: v_shuffle_v4i16_v2i16__0_2_2_2:2123; GFX942:       ; %bb.0:2124; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2125; GFX942-NEXT:    v_mov_b32_e32 v1, 02126; GFX942-NEXT:    ;;#ASMSTART2127; GFX942-NEXT:    ; def v02128; GFX942-NEXT:    ;;#ASMEND2129; GFX942-NEXT:    global_store_dwordx2 v1, v[0:1], s[0:1]2130; GFX942-NEXT:    s_waitcnt vmcnt(0)2131; GFX942-NEXT:    s_setpc_b64 s[30:31]2132  %vec0 = call <2 x i16> asm "; def $0", "=v"()2133  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2>2134  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82135  ret void2136}2137 2138define void @v_shuffle_v4i16_v2i16__1_2_2_2(ptr addrspace(1) inreg %ptr) {2139; GFX900-LABEL: v_shuffle_v4i16_v2i16__1_2_2_2:2140; GFX900:       ; %bb.0:2141; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2142; GFX900-NEXT:    ;;#ASMSTART2143; GFX900-NEXT:    ; def v02144; GFX900-NEXT:    ;;#ASMEND2145; GFX900-NEXT:    v_mov_b32_e32 v1, 02146; GFX900-NEXT:    v_alignbit_b32 v0, s4, v0, 162147; GFX900-NEXT:    global_store_dwordx2 v1, v[0:1], s[16:17]2148; GFX900-NEXT:    s_waitcnt vmcnt(0)2149; GFX900-NEXT:    s_setpc_b64 s[30:31]2150;2151; GFX90A-LABEL: v_shuffle_v4i16_v2i16__1_2_2_2:2152; GFX90A:       ; %bb.0:2153; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2154; GFX90A-NEXT:    ;;#ASMSTART2155; GFX90A-NEXT:    ; def v02156; GFX90A-NEXT:    ;;#ASMEND2157; GFX90A-NEXT:    v_mov_b32_e32 v1, 02158; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v0, 162159; GFX90A-NEXT:    global_store_dwordx2 v1, v[0:1], s[16:17]2160; GFX90A-NEXT:    s_waitcnt vmcnt(0)2161; GFX90A-NEXT:    s_setpc_b64 s[30:31]2162;2163; GFX942-LABEL: v_shuffle_v4i16_v2i16__1_2_2_2:2164; GFX942:       ; %bb.0:2165; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2166; GFX942-NEXT:    ;;#ASMSTART2167; GFX942-NEXT:    ; def v02168; GFX942-NEXT:    ;;#ASMEND2169; GFX942-NEXT:    v_mov_b32_e32 v1, 02170; GFX942-NEXT:    v_alignbit_b32 v0, s0, v0, 162171; GFX942-NEXT:    global_store_dwordx2 v1, v[0:1], s[0:1]2172; GFX942-NEXT:    s_waitcnt vmcnt(0)2173; GFX942-NEXT:    s_setpc_b64 s[30:31]2174  %vec0 = call <2 x i16> asm "; def $0", "=v"()2175  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2>2176  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82177  ret void2178}2179 2180define void @v_shuffle_v4i16_v2i16__2_2_2_2(ptr addrspace(1) inreg %ptr) {2181; GFX9-LABEL: v_shuffle_v4i16_v2i16__2_2_2_2:2182; GFX9:       ; %bb.0:2183; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2184; GFX9-NEXT:    s_setpc_b64 s[30:31]2185  %vec0 = call <2 x i16> asm "; def $0", "=v"()2186  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2>2187  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82188  ret void2189}2190 2191define void @v_shuffle_v4i16_v2i16__3_2_2_2(ptr addrspace(1) inreg %ptr) {2192; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_2_2_2:2193; GFX900:       ; %bb.0:2194; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2195; GFX900-NEXT:    ;;#ASMSTART2196; GFX900-NEXT:    ; def v02197; GFX900-NEXT:    ;;#ASMEND2198; GFX900-NEXT:    s_mov_b32 s4, 0x50401002199; GFX900-NEXT:    v_mov_b32_e32 v2, 02200; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s42201; GFX900-NEXT:    v_alignbit_b32 v0, v0, v0, 162202; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2203; GFX900-NEXT:    s_waitcnt vmcnt(0)2204; GFX900-NEXT:    s_setpc_b64 s[30:31]2205;2206; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_2_2_2:2207; GFX90A:       ; %bb.0:2208; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2209; GFX90A-NEXT:    ;;#ASMSTART2210; GFX90A-NEXT:    ; def v02211; GFX90A-NEXT:    ;;#ASMEND2212; GFX90A-NEXT:    s_mov_b32 s4, 0x50401002213; GFX90A-NEXT:    v_mov_b32_e32 v2, 02214; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s42215; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v0, 162216; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2217; GFX90A-NEXT:    s_waitcnt vmcnt(0)2218; GFX90A-NEXT:    s_setpc_b64 s[30:31]2219;2220; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_2_2_2:2221; GFX942:       ; %bb.0:2222; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2223; GFX942-NEXT:    ;;#ASMSTART2224; GFX942-NEXT:    ; def v02225; GFX942-NEXT:    ;;#ASMEND2226; GFX942-NEXT:    s_mov_b32 s2, 0x50401002227; GFX942-NEXT:    v_mov_b32_e32 v2, 02228; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s22229; GFX942-NEXT:    v_alignbit_b32 v0, v0, v0, 162230; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]2231; GFX942-NEXT:    s_waitcnt vmcnt(0)2232; GFX942-NEXT:    s_setpc_b64 s[30:31]2233  %vec0 = call <2 x i16> asm "; def $0", "=v"()2234  %vec1 = call <2 x i16> asm "; def $0", "=v"()2235  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 2, i32 2, i32 2>2236  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82237  ret void2238}2239 2240define void @v_shuffle_v4i16_v2i16__3_u_2_2(ptr addrspace(1) inreg %ptr) {2241; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_u_2_2:2242; GFX900:       ; %bb.0:2243; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2244; GFX900-NEXT:    ;;#ASMSTART2245; GFX900-NEXT:    ; def v12246; GFX900-NEXT:    ;;#ASMEND2247; GFX900-NEXT:    v_alignbit_b32 v0, s4, v1, 162248; GFX900-NEXT:    s_mov_b32 s4, 0x50401002249; GFX900-NEXT:    v_mov_b32_e32 v2, 02250; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s42251; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2252; GFX900-NEXT:    s_waitcnt vmcnt(0)2253; GFX900-NEXT:    s_setpc_b64 s[30:31]2254;2255; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_u_2_2:2256; GFX90A:       ; %bb.0:2257; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2258; GFX90A-NEXT:    ;;#ASMSTART2259; GFX90A-NEXT:    ; def v12260; GFX90A-NEXT:    ;;#ASMEND2261; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v1, 162262; GFX90A-NEXT:    s_mov_b32 s4, 0x50401002263; GFX90A-NEXT:    v_mov_b32_e32 v2, 02264; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s42265; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2266; GFX90A-NEXT:    s_waitcnt vmcnt(0)2267; GFX90A-NEXT:    s_setpc_b64 s[30:31]2268;2269; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_u_2_2:2270; GFX942:       ; %bb.0:2271; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2272; GFX942-NEXT:    ;;#ASMSTART2273; GFX942-NEXT:    ; def v12274; GFX942-NEXT:    ;;#ASMEND2275; GFX942-NEXT:    s_mov_b32 s2, 0x50401002276; GFX942-NEXT:    v_mov_b32_e32 v2, 02277; GFX942-NEXT:    v_alignbit_b32 v0, s0, v1, 162278; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s22279; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]2280; GFX942-NEXT:    s_waitcnt vmcnt(0)2281; GFX942-NEXT:    s_setpc_b64 s[30:31]2282  %vec0 = call <2 x i16> asm "; def $0", "=v"()2283  %vec1 = call <2 x i16> asm "; def $0", "=v"()2284  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 poison, i32 2, i32 2>2285  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82286  ret void2287}2288 2289define void @v_shuffle_v4i16_v2i16__3_0_2_2(ptr addrspace(1) inreg %ptr) {2290; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_0_2_2:2291; GFX900:       ; %bb.0:2292; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2293; GFX900-NEXT:    ;;#ASMSTART2294; GFX900-NEXT:    ; def v02295; GFX900-NEXT:    ;;#ASMEND2296; GFX900-NEXT:    s_mov_b32 s4, 0x50401002297; GFX900-NEXT:    v_mov_b32_e32 v2, 02298; GFX900-NEXT:    ;;#ASMSTART2299; GFX900-NEXT:    ; def v32300; GFX900-NEXT:    ;;#ASMEND2301; GFX900-NEXT:    v_perm_b32 v1, v3, v3, s42302; GFX900-NEXT:    v_alignbit_b32 v0, v0, v3, 162303; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2304; GFX900-NEXT:    s_waitcnt vmcnt(0)2305; GFX900-NEXT:    s_setpc_b64 s[30:31]2306;2307; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_0_2_2:2308; GFX90A:       ; %bb.0:2309; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2310; GFX90A-NEXT:    ;;#ASMSTART2311; GFX90A-NEXT:    ; def v02312; GFX90A-NEXT:    ;;#ASMEND2313; GFX90A-NEXT:    s_mov_b32 s4, 0x50401002314; GFX90A-NEXT:    v_mov_b32_e32 v2, 02315; GFX90A-NEXT:    ;;#ASMSTART2316; GFX90A-NEXT:    ; def v32317; GFX90A-NEXT:    ;;#ASMEND2318; GFX90A-NEXT:    v_perm_b32 v1, v3, v3, s42319; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v3, 162320; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2321; GFX90A-NEXT:    s_waitcnt vmcnt(0)2322; GFX90A-NEXT:    s_setpc_b64 s[30:31]2323;2324; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_0_2_2:2325; GFX942:       ; %bb.0:2326; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2327; GFX942-NEXT:    ;;#ASMSTART2328; GFX942-NEXT:    ; def v02329; GFX942-NEXT:    ;;#ASMEND2330; GFX942-NEXT:    s_mov_b32 s2, 0x50401002331; GFX942-NEXT:    v_mov_b32_e32 v2, 02332; GFX942-NEXT:    ;;#ASMSTART2333; GFX942-NEXT:    ; def v32334; GFX942-NEXT:    ;;#ASMEND2335; GFX942-NEXT:    s_nop 02336; GFX942-NEXT:    v_perm_b32 v1, v3, v3, s22337; GFX942-NEXT:    v_alignbit_b32 v0, v0, v3, 162338; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]2339; GFX942-NEXT:    s_waitcnt vmcnt(0)2340; GFX942-NEXT:    s_setpc_b64 s[30:31]2341  %vec0 = call <2 x i16> asm "; def $0", "=v"()2342  %vec1 = call <2 x i16> asm "; def $0", "=v"()2343  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 0, i32 2, i32 2>2344  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82345  ret void2346}2347 2348define void @v_shuffle_v4i16_v2i16__3_1_2_2(ptr addrspace(1) inreg %ptr) {2349; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_1_2_2:2350; GFX900:       ; %bb.0:2351; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2352; GFX900-NEXT:    ;;#ASMSTART2353; GFX900-NEXT:    ; def v02354; GFX900-NEXT:    ;;#ASMEND2355; GFX900-NEXT:    s_mov_b32 s4, 0x70603022356; GFX900-NEXT:    ;;#ASMSTART2357; GFX900-NEXT:    ; def v12358; GFX900-NEXT:    ;;#ASMEND2359; GFX900-NEXT:    v_perm_b32 v0, v0, v1, s42360; GFX900-NEXT:    s_mov_b32 s4, 0x50401002361; GFX900-NEXT:    v_mov_b32_e32 v2, 02362; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s42363; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2364; GFX900-NEXT:    s_waitcnt vmcnt(0)2365; GFX900-NEXT:    s_setpc_b64 s[30:31]2366;2367; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_1_2_2:2368; GFX90A:       ; %bb.0:2369; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2370; GFX90A-NEXT:    ;;#ASMSTART2371; GFX90A-NEXT:    ; def v02372; GFX90A-NEXT:    ;;#ASMEND2373; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022374; GFX90A-NEXT:    ;;#ASMSTART2375; GFX90A-NEXT:    ; def v12376; GFX90A-NEXT:    ;;#ASMEND2377; GFX90A-NEXT:    v_perm_b32 v0, v0, v1, s42378; GFX90A-NEXT:    s_mov_b32 s4, 0x50401002379; GFX90A-NEXT:    v_mov_b32_e32 v2, 02380; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s42381; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2382; GFX90A-NEXT:    s_waitcnt vmcnt(0)2383; GFX90A-NEXT:    s_setpc_b64 s[30:31]2384;2385; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_1_2_2:2386; GFX942:       ; %bb.0:2387; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2388; GFX942-NEXT:    ;;#ASMSTART2389; GFX942-NEXT:    ; def v02390; GFX942-NEXT:    ;;#ASMEND2391; GFX942-NEXT:    s_mov_b32 s2, 0x70603022392; GFX942-NEXT:    ;;#ASMSTART2393; GFX942-NEXT:    ; def v12394; GFX942-NEXT:    ;;#ASMEND2395; GFX942-NEXT:    v_mov_b32_e32 v2, 02396; GFX942-NEXT:    v_perm_b32 v0, v0, v1, s22397; GFX942-NEXT:    s_mov_b32 s2, 0x50401002398; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s22399; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]2400; GFX942-NEXT:    s_waitcnt vmcnt(0)2401; GFX942-NEXT:    s_setpc_b64 s[30:31]2402  %vec0 = call <2 x i16> asm "; def $0", "=v"()2403  %vec1 = call <2 x i16> asm "; def $0", "=v"()2404  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 1, i32 2, i32 2>2405  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82406  ret void2407}2408 2409define void @v_shuffle_v4i16_v2i16__3_3_2_2(ptr addrspace(1) inreg %ptr) {2410; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_2_2:2411; GFX900:       ; %bb.0:2412; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2413; GFX900-NEXT:    s_mov_b32 s4, 0x70603022414; GFX900-NEXT:    ;;#ASMSTART2415; GFX900-NEXT:    ; def v12416; GFX900-NEXT:    ;;#ASMEND2417; GFX900-NEXT:    v_perm_b32 v0, v1, v1, s42418; GFX900-NEXT:    s_mov_b32 s4, 0x50401002419; GFX900-NEXT:    v_mov_b32_e32 v2, 02420; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s42421; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2422; GFX900-NEXT:    s_waitcnt vmcnt(0)2423; GFX900-NEXT:    s_setpc_b64 s[30:31]2424;2425; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_2_2:2426; GFX90A:       ; %bb.0:2427; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2428; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022429; GFX90A-NEXT:    ;;#ASMSTART2430; GFX90A-NEXT:    ; def v12431; GFX90A-NEXT:    ;;#ASMEND2432; GFX90A-NEXT:    v_perm_b32 v0, v1, v1, s42433; GFX90A-NEXT:    s_mov_b32 s4, 0x50401002434; GFX90A-NEXT:    v_mov_b32_e32 v2, 02435; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s42436; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2437; GFX90A-NEXT:    s_waitcnt vmcnt(0)2438; GFX90A-NEXT:    s_setpc_b64 s[30:31]2439;2440; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_3_2_2:2441; GFX942:       ; %bb.0:2442; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2443; GFX942-NEXT:    s_mov_b32 s2, 0x70603022444; GFX942-NEXT:    ;;#ASMSTART2445; GFX942-NEXT:    ; def v12446; GFX942-NEXT:    ;;#ASMEND2447; GFX942-NEXT:    v_mov_b32_e32 v2, 02448; GFX942-NEXT:    v_perm_b32 v0, v1, v1, s22449; GFX942-NEXT:    s_mov_b32 s2, 0x50401002450; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s22451; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]2452; GFX942-NEXT:    s_waitcnt vmcnt(0)2453; GFX942-NEXT:    s_setpc_b64 s[30:31]2454  %vec0 = call <2 x i16> asm "; def $0", "=v"()2455  %vec1 = call <2 x i16> asm "; def $0", "=v"()2456  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 2>2457  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82458  ret void2459}2460 2461define void @v_shuffle_v4i16_v2i16__3_3_u_2(ptr addrspace(1) inreg %ptr) {2462; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_u_2:2463; GFX900:       ; %bb.0:2464; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2465; GFX900-NEXT:    ;;#ASMSTART2466; GFX900-NEXT:    ; def v12467; GFX900-NEXT:    ;;#ASMEND2468; GFX900-NEXT:    s_mov_b32 s4, 0x70603022469; GFX900-NEXT:    v_mov_b32_e32 v2, 02470; GFX900-NEXT:    v_perm_b32 v0, v1, v1, s42471; GFX900-NEXT:    v_lshlrev_b32_e32 v1, 16, v12472; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2473; GFX900-NEXT:    s_waitcnt vmcnt(0)2474; GFX900-NEXT:    s_setpc_b64 s[30:31]2475;2476; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_u_2:2477; GFX90A:       ; %bb.0:2478; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2479; GFX90A-NEXT:    ;;#ASMSTART2480; GFX90A-NEXT:    ; def v12481; GFX90A-NEXT:    ;;#ASMEND2482; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022483; GFX90A-NEXT:    v_mov_b32_e32 v2, 02484; GFX90A-NEXT:    v_perm_b32 v0, v1, v1, s42485; GFX90A-NEXT:    v_lshlrev_b32_e32 v1, 16, v12486; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2487; GFX90A-NEXT:    s_waitcnt vmcnt(0)2488; GFX90A-NEXT:    s_setpc_b64 s[30:31]2489;2490; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_3_u_2:2491; GFX942:       ; %bb.0:2492; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2493; GFX942-NEXT:    ;;#ASMSTART2494; GFX942-NEXT:    ; def v12495; GFX942-NEXT:    ;;#ASMEND2496; GFX942-NEXT:    s_mov_b32 s2, 0x70603022497; GFX942-NEXT:    v_mov_b32_e32 v2, 02498; GFX942-NEXT:    v_perm_b32 v0, v1, v1, s22499; GFX942-NEXT:    v_lshlrev_b32_e32 v1, 16, v12500; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]2501; GFX942-NEXT:    s_waitcnt vmcnt(0)2502; GFX942-NEXT:    s_setpc_b64 s[30:31]2503  %vec0 = call <2 x i16> asm "; def $0", "=v"()2504  %vec1 = call <2 x i16> asm "; def $0", "=v"()2505  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 2>2506  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82507  ret void2508}2509 2510define void @v_shuffle_v4i16_v2i16__3_3_0_2(ptr addrspace(1) inreg %ptr) {2511; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_0_2:2512; GFX900:       ; %bb.0:2513; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2514; GFX900-NEXT:    s_mov_b32 s4, 0x50401002515; GFX900-NEXT:    ;;#ASMSTART2516; GFX900-NEXT:    ; def v02517; GFX900-NEXT:    ;;#ASMEND2518; GFX900-NEXT:    ;;#ASMSTART2519; GFX900-NEXT:    ; def v32520; GFX900-NEXT:    ;;#ASMEND2521; GFX900-NEXT:    v_perm_b32 v1, v3, v0, s42522; GFX900-NEXT:    s_mov_b32 s4, 0x70603022523; GFX900-NEXT:    v_mov_b32_e32 v2, 02524; GFX900-NEXT:    v_perm_b32 v0, v3, v3, s42525; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2526; GFX900-NEXT:    s_waitcnt vmcnt(0)2527; GFX900-NEXT:    s_setpc_b64 s[30:31]2528;2529; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_0_2:2530; GFX90A:       ; %bb.0:2531; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2532; GFX90A-NEXT:    s_mov_b32 s4, 0x50401002533; GFX90A-NEXT:    ;;#ASMSTART2534; GFX90A-NEXT:    ; def v02535; GFX90A-NEXT:    ;;#ASMEND2536; GFX90A-NEXT:    ;;#ASMSTART2537; GFX90A-NEXT:    ; def v32538; GFX90A-NEXT:    ;;#ASMEND2539; GFX90A-NEXT:    v_perm_b32 v1, v3, v0, s42540; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022541; GFX90A-NEXT:    v_mov_b32_e32 v2, 02542; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s42543; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2544; GFX90A-NEXT:    s_waitcnt vmcnt(0)2545; GFX90A-NEXT:    s_setpc_b64 s[30:31]2546;2547; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_3_0_2:2548; GFX942:       ; %bb.0:2549; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2550; GFX942-NEXT:    s_mov_b32 s2, 0x50401002551; GFX942-NEXT:    ;;#ASMSTART2552; GFX942-NEXT:    ; def v02553; GFX942-NEXT:    ;;#ASMEND2554; GFX942-NEXT:    ;;#ASMSTART2555; GFX942-NEXT:    ; def v32556; GFX942-NEXT:    ;;#ASMEND2557; GFX942-NEXT:    v_mov_b32_e32 v2, 02558; GFX942-NEXT:    v_perm_b32 v1, v3, v0, s22559; GFX942-NEXT:    s_mov_b32 s2, 0x70603022560; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s22561; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]2562; GFX942-NEXT:    s_waitcnt vmcnt(0)2563; GFX942-NEXT:    s_setpc_b64 s[30:31]2564  %vec0 = call <2 x i16> asm "; def $0", "=v"()2565  %vec1 = call <2 x i16> asm "; def $0", "=v"()2566  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 2>2567  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82568  ret void2569}2570 2571define void @v_shuffle_v4i16_v2i16__3_3_1_2(ptr addrspace(1) inreg %ptr) {2572; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_1_2:2573; GFX900:       ; %bb.0:2574; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2575; GFX900-NEXT:    ;;#ASMSTART2576; GFX900-NEXT:    ; def v12577; GFX900-NEXT:    ;;#ASMEND2578; GFX900-NEXT:    s_mov_b32 s4, 0x70603022579; GFX900-NEXT:    v_mov_b32_e32 v2, 02580; GFX900-NEXT:    ;;#ASMSTART2581; GFX900-NEXT:    ; def v32582; GFX900-NEXT:    ;;#ASMEND2583; GFX900-NEXT:    v_perm_b32 v0, v3, v3, s42584; GFX900-NEXT:    v_alignbit_b32 v1, v3, v1, 162585; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2586; GFX900-NEXT:    s_waitcnt vmcnt(0)2587; GFX900-NEXT:    s_setpc_b64 s[30:31]2588;2589; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_1_2:2590; GFX90A:       ; %bb.0:2591; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2592; GFX90A-NEXT:    ;;#ASMSTART2593; GFX90A-NEXT:    ; def v12594; GFX90A-NEXT:    ;;#ASMEND2595; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022596; GFX90A-NEXT:    v_mov_b32_e32 v2, 02597; GFX90A-NEXT:    ;;#ASMSTART2598; GFX90A-NEXT:    ; def v32599; GFX90A-NEXT:    ;;#ASMEND2600; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s42601; GFX90A-NEXT:    v_alignbit_b32 v1, v3, v1, 162602; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2603; GFX90A-NEXT:    s_waitcnt vmcnt(0)2604; GFX90A-NEXT:    s_setpc_b64 s[30:31]2605;2606; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_3_1_2:2607; GFX942:       ; %bb.0:2608; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2609; GFX942-NEXT:    ;;#ASMSTART2610; GFX942-NEXT:    ; def v12611; GFX942-NEXT:    ;;#ASMEND2612; GFX942-NEXT:    s_mov_b32 s2, 0x70603022613; GFX942-NEXT:    v_mov_b32_e32 v2, 02614; GFX942-NEXT:    ;;#ASMSTART2615; GFX942-NEXT:    ; def v32616; GFX942-NEXT:    ;;#ASMEND2617; GFX942-NEXT:    s_nop 02618; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s22619; GFX942-NEXT:    v_alignbit_b32 v1, v3, v1, 162620; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]2621; GFX942-NEXT:    s_waitcnt vmcnt(0)2622; GFX942-NEXT:    s_setpc_b64 s[30:31]2623  %vec0 = call <2 x i16> asm "; def $0", "=v"()2624  %vec1 = call <2 x i16> asm "; def $0", "=v"()2625  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 2>2626  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82627  ret void2628}2629 2630define void @v_shuffle_v4i16_v2i16__u_3_3_3(ptr addrspace(1) inreg %ptr) {2631; GFX900-LABEL: v_shuffle_v4i16_v2i16__u_3_3_3:2632; GFX900:       ; %bb.0:2633; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2634; GFX900-NEXT:    s_mov_b32 s4, 0x70603022635; GFX900-NEXT:    v_mov_b32_e32 v2, 02636; GFX900-NEXT:    ;;#ASMSTART2637; GFX900-NEXT:    ; def v02638; GFX900-NEXT:    ;;#ASMEND2639; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s42640; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2641; GFX900-NEXT:    s_waitcnt vmcnt(0)2642; GFX900-NEXT:    s_setpc_b64 s[30:31]2643;2644; GFX90A-LABEL: v_shuffle_v4i16_v2i16__u_3_3_3:2645; GFX90A:       ; %bb.0:2646; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2647; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022648; GFX90A-NEXT:    v_mov_b32_e32 v2, 02649; GFX90A-NEXT:    ;;#ASMSTART2650; GFX90A-NEXT:    ; def v02651; GFX90A-NEXT:    ;;#ASMEND2652; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s42653; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2654; GFX90A-NEXT:    s_waitcnt vmcnt(0)2655; GFX90A-NEXT:    s_setpc_b64 s[30:31]2656;2657; GFX942-LABEL: v_shuffle_v4i16_v2i16__u_3_3_3:2658; GFX942:       ; %bb.0:2659; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2660; GFX942-NEXT:    s_mov_b32 s2, 0x70603022661; GFX942-NEXT:    v_mov_b32_e32 v2, 02662; GFX942-NEXT:    ;;#ASMSTART2663; GFX942-NEXT:    ; def v02664; GFX942-NEXT:    ;;#ASMEND2665; GFX942-NEXT:    s_nop 02666; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s22667; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]2668; GFX942-NEXT:    s_waitcnt vmcnt(0)2669; GFX942-NEXT:    s_setpc_b64 s[30:31]2670  %vec0 = call <2 x i16> asm "; def $0", "=v"()2671  %vec1 = call <2 x i16> asm "; def $0", "=v"()2672  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 poison, i32 3, i32 3, i32 3>2673  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82674  ret void2675}2676 2677define void @v_shuffle_v4i16_v2i16__0_3_3_3(ptr addrspace(1) inreg %ptr) {2678; GFX900-LABEL: v_shuffle_v4i16_v2i16__0_3_3_3:2679; GFX900:       ; %bb.0:2680; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2681; GFX900-NEXT:    ;;#ASMSTART2682; GFX900-NEXT:    ; def v02683; GFX900-NEXT:    ;;#ASMEND2684; GFX900-NEXT:    s_mov_b32 s4, 0xffff2685; GFX900-NEXT:    ;;#ASMSTART2686; GFX900-NEXT:    ; def v12687; GFX900-NEXT:    ;;#ASMEND2688; GFX900-NEXT:    v_bfi_b32 v0, s4, v0, v12689; GFX900-NEXT:    s_mov_b32 s4, 0x70603022690; GFX900-NEXT:    v_mov_b32_e32 v2, 02691; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s42692; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2693; GFX900-NEXT:    s_waitcnt vmcnt(0)2694; GFX900-NEXT:    s_setpc_b64 s[30:31]2695;2696; GFX90A-LABEL: v_shuffle_v4i16_v2i16__0_3_3_3:2697; GFX90A:       ; %bb.0:2698; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2699; GFX90A-NEXT:    ;;#ASMSTART2700; GFX90A-NEXT:    ; def v02701; GFX90A-NEXT:    ;;#ASMEND2702; GFX90A-NEXT:    s_mov_b32 s4, 0xffff2703; GFX90A-NEXT:    ;;#ASMSTART2704; GFX90A-NEXT:    ; def v12705; GFX90A-NEXT:    ;;#ASMEND2706; GFX90A-NEXT:    v_bfi_b32 v0, s4, v0, v12707; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022708; GFX90A-NEXT:    v_mov_b32_e32 v2, 02709; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s42710; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2711; GFX90A-NEXT:    s_waitcnt vmcnt(0)2712; GFX90A-NEXT:    s_setpc_b64 s[30:31]2713;2714; GFX942-LABEL: v_shuffle_v4i16_v2i16__0_3_3_3:2715; GFX942:       ; %bb.0:2716; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2717; GFX942-NEXT:    ;;#ASMSTART2718; GFX942-NEXT:    ; def v02719; GFX942-NEXT:    ;;#ASMEND2720; GFX942-NEXT:    s_mov_b32 s2, 0xffff2721; GFX942-NEXT:    ;;#ASMSTART2722; GFX942-NEXT:    ; def v12723; GFX942-NEXT:    ;;#ASMEND2724; GFX942-NEXT:    v_mov_b32_e32 v2, 02725; GFX942-NEXT:    v_bfi_b32 v0, s2, v0, v12726; GFX942-NEXT:    s_mov_b32 s2, 0x70603022727; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s22728; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]2729; GFX942-NEXT:    s_waitcnt vmcnt(0)2730; GFX942-NEXT:    s_setpc_b64 s[30:31]2731  %vec0 = call <2 x i16> asm "; def $0", "=v"()2732  %vec1 = call <2 x i16> asm "; def $0", "=v"()2733  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 0, i32 3, i32 3, i32 3>2734  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82735  ret void2736}2737 2738define void @v_shuffle_v4i16_v2i16__1_3_3_3(ptr addrspace(1) inreg %ptr) {2739; GFX900-LABEL: v_shuffle_v4i16_v2i16__1_3_3_3:2740; GFX900:       ; %bb.0:2741; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2742; GFX900-NEXT:    ;;#ASMSTART2743; GFX900-NEXT:    ; def v02744; GFX900-NEXT:    ;;#ASMEND2745; GFX900-NEXT:    ;;#ASMSTART2746; GFX900-NEXT:    ; def v12747; GFX900-NEXT:    ;;#ASMEND2748; GFX900-NEXT:    s_mov_b32 s4, 0x70603022749; GFX900-NEXT:    v_mov_b32_e32 v2, 02750; GFX900-NEXT:    v_perm_b32 v0, v1, v0, s42751; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s42752; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2753; GFX900-NEXT:    s_waitcnt vmcnt(0)2754; GFX900-NEXT:    s_setpc_b64 s[30:31]2755;2756; GFX90A-LABEL: v_shuffle_v4i16_v2i16__1_3_3_3:2757; GFX90A:       ; %bb.0:2758; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2759; GFX90A-NEXT:    ;;#ASMSTART2760; GFX90A-NEXT:    ; def v02761; GFX90A-NEXT:    ;;#ASMEND2762; GFX90A-NEXT:    ;;#ASMSTART2763; GFX90A-NEXT:    ; def v12764; GFX90A-NEXT:    ;;#ASMEND2765; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022766; GFX90A-NEXT:    v_mov_b32_e32 v2, 02767; GFX90A-NEXT:    v_perm_b32 v0, v1, v0, s42768; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s42769; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2770; GFX90A-NEXT:    s_waitcnt vmcnt(0)2771; GFX90A-NEXT:    s_setpc_b64 s[30:31]2772;2773; GFX942-LABEL: v_shuffle_v4i16_v2i16__1_3_3_3:2774; GFX942:       ; %bb.0:2775; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2776; GFX942-NEXT:    ;;#ASMSTART2777; GFX942-NEXT:    ; def v02778; GFX942-NEXT:    ;;#ASMEND2779; GFX942-NEXT:    ;;#ASMSTART2780; GFX942-NEXT:    ; def v12781; GFX942-NEXT:    ;;#ASMEND2782; GFX942-NEXT:    s_mov_b32 s2, 0x70603022783; GFX942-NEXT:    v_mov_b32_e32 v2, 02784; GFX942-NEXT:    v_perm_b32 v0, v1, v0, s22785; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s22786; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]2787; GFX942-NEXT:    s_waitcnt vmcnt(0)2788; GFX942-NEXT:    s_setpc_b64 s[30:31]2789  %vec0 = call <2 x i16> asm "; def $0", "=v"()2790  %vec1 = call <2 x i16> asm "; def $0", "=v"()2791  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 1, i32 3, i32 3, i32 3>2792  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82793  ret void2794}2795 2796define void @v_shuffle_v4i16_v2i16__2_3_3_3(ptr addrspace(1) inreg %ptr) {2797; GFX900-LABEL: v_shuffle_v4i16_v2i16__2_3_3_3:2798; GFX900:       ; %bb.0:2799; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2800; GFX900-NEXT:    s_mov_b32 s4, 0x70603022801; GFX900-NEXT:    v_mov_b32_e32 v2, 02802; GFX900-NEXT:    ;;#ASMSTART2803; GFX900-NEXT:    ; def v02804; GFX900-NEXT:    ;;#ASMEND2805; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s42806; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2807; GFX900-NEXT:    s_waitcnt vmcnt(0)2808; GFX900-NEXT:    s_setpc_b64 s[30:31]2809;2810; GFX90A-LABEL: v_shuffle_v4i16_v2i16__2_3_3_3:2811; GFX90A:       ; %bb.0:2812; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2813; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022814; GFX90A-NEXT:    v_mov_b32_e32 v2, 02815; GFX90A-NEXT:    ;;#ASMSTART2816; GFX90A-NEXT:    ; def v02817; GFX90A-NEXT:    ;;#ASMEND2818; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s42819; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2820; GFX90A-NEXT:    s_waitcnt vmcnt(0)2821; GFX90A-NEXT:    s_setpc_b64 s[30:31]2822;2823; GFX942-LABEL: v_shuffle_v4i16_v2i16__2_3_3_3:2824; GFX942:       ; %bb.0:2825; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2826; GFX942-NEXT:    s_mov_b32 s2, 0x70603022827; GFX942-NEXT:    v_mov_b32_e32 v2, 02828; GFX942-NEXT:    ;;#ASMSTART2829; GFX942-NEXT:    ; def v02830; GFX942-NEXT:    ;;#ASMEND2831; GFX942-NEXT:    s_nop 02832; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s22833; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]2834; GFX942-NEXT:    s_waitcnt vmcnt(0)2835; GFX942-NEXT:    s_setpc_b64 s[30:31]2836  %vec0 = call <2 x i16> asm "; def $0", "=v"()2837  %vec1 = call <2 x i16> asm "; def $0", "=v"()2838  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 2, i32 3, i32 3, i32 3>2839  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82840  ret void2841}2842 2843define void @v_shuffle_v4i16_v2i16__3_u_3_3(ptr addrspace(1) inreg %ptr) {2844; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_u_3_3:2845; GFX900:       ; %bb.0:2846; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2847; GFX900-NEXT:    ;;#ASMSTART2848; GFX900-NEXT:    ; def v02849; GFX900-NEXT:    ;;#ASMEND2850; GFX900-NEXT:    s_mov_b32 s4, 0x70603022851; GFX900-NEXT:    v_mov_b32_e32 v2, 02852; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s42853; GFX900-NEXT:    v_alignbit_b32 v0, s4, v0, 162854; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2855; GFX900-NEXT:    s_waitcnt vmcnt(0)2856; GFX900-NEXT:    s_setpc_b64 s[30:31]2857;2858; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_u_3_3:2859; GFX90A:       ; %bb.0:2860; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2861; GFX90A-NEXT:    ;;#ASMSTART2862; GFX90A-NEXT:    ; def v02863; GFX90A-NEXT:    ;;#ASMEND2864; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022865; GFX90A-NEXT:    v_mov_b32_e32 v2, 02866; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s42867; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v0, 162868; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2869; GFX90A-NEXT:    s_waitcnt vmcnt(0)2870; GFX90A-NEXT:    s_setpc_b64 s[30:31]2871;2872; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_u_3_3:2873; GFX942:       ; %bb.0:2874; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2875; GFX942-NEXT:    ;;#ASMSTART2876; GFX942-NEXT:    ; def v02877; GFX942-NEXT:    ;;#ASMEND2878; GFX942-NEXT:    s_mov_b32 s2, 0x70603022879; GFX942-NEXT:    v_mov_b32_e32 v2, 02880; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s22881; GFX942-NEXT:    v_alignbit_b32 v0, s0, v0, 162882; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]2883; GFX942-NEXT:    s_waitcnt vmcnt(0)2884; GFX942-NEXT:    s_setpc_b64 s[30:31]2885  %vec0 = call <2 x i16> asm "; def $0", "=v"()2886  %vec1 = call <2 x i16> asm "; def $0", "=v"()2887  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 poison, i32 3, i32 3>2888  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82889  ret void2890}2891 2892define void @v_shuffle_v4i16_v2i16__3_0_3_3(ptr addrspace(1) inreg %ptr) {2893; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_0_3_3:2894; GFX900:       ; %bb.0:2895; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2896; GFX900-NEXT:    ;;#ASMSTART2897; GFX900-NEXT:    ; def v02898; GFX900-NEXT:    ;;#ASMEND2899; GFX900-NEXT:    s_mov_b32 s4, 0x70603022900; GFX900-NEXT:    v_mov_b32_e32 v2, 02901; GFX900-NEXT:    ;;#ASMSTART2902; GFX900-NEXT:    ; def v32903; GFX900-NEXT:    ;;#ASMEND2904; GFX900-NEXT:    v_perm_b32 v1, v3, v3, s42905; GFX900-NEXT:    v_alignbit_b32 v0, v0, v3, 162906; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2907; GFX900-NEXT:    s_waitcnt vmcnt(0)2908; GFX900-NEXT:    s_setpc_b64 s[30:31]2909;2910; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_0_3_3:2911; GFX90A:       ; %bb.0:2912; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2913; GFX90A-NEXT:    ;;#ASMSTART2914; GFX90A-NEXT:    ; def v02915; GFX90A-NEXT:    ;;#ASMEND2916; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022917; GFX90A-NEXT:    v_mov_b32_e32 v2, 02918; GFX90A-NEXT:    ;;#ASMSTART2919; GFX90A-NEXT:    ; def v32920; GFX90A-NEXT:    ;;#ASMEND2921; GFX90A-NEXT:    v_perm_b32 v1, v3, v3, s42922; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v3, 162923; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2924; GFX90A-NEXT:    s_waitcnt vmcnt(0)2925; GFX90A-NEXT:    s_setpc_b64 s[30:31]2926;2927; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_0_3_3:2928; GFX942:       ; %bb.0:2929; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2930; GFX942-NEXT:    ;;#ASMSTART2931; GFX942-NEXT:    ; def v02932; GFX942-NEXT:    ;;#ASMEND2933; GFX942-NEXT:    s_mov_b32 s2, 0x70603022934; GFX942-NEXT:    v_mov_b32_e32 v2, 02935; GFX942-NEXT:    ;;#ASMSTART2936; GFX942-NEXT:    ; def v32937; GFX942-NEXT:    ;;#ASMEND2938; GFX942-NEXT:    s_nop 02939; GFX942-NEXT:    v_perm_b32 v1, v3, v3, s22940; GFX942-NEXT:    v_alignbit_b32 v0, v0, v3, 162941; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]2942; GFX942-NEXT:    s_waitcnt vmcnt(0)2943; GFX942-NEXT:    s_setpc_b64 s[30:31]2944  %vec0 = call <2 x i16> asm "; def $0", "=v"()2945  %vec1 = call <2 x i16> asm "; def $0", "=v"()2946  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 0, i32 3, i32 3>2947  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 82948  ret void2949}2950 2951define void @v_shuffle_v4i16_v2i16__3_1_3_3(ptr addrspace(1) inreg %ptr) {2952; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_1_3_3:2953; GFX900:       ; %bb.0:2954; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2955; GFX900-NEXT:    ;;#ASMSTART2956; GFX900-NEXT:    ; def v02957; GFX900-NEXT:    ;;#ASMEND2958; GFX900-NEXT:    ;;#ASMSTART2959; GFX900-NEXT:    ; def v12960; GFX900-NEXT:    ;;#ASMEND2961; GFX900-NEXT:    s_mov_b32 s4, 0x70603022962; GFX900-NEXT:    v_mov_b32_e32 v2, 02963; GFX900-NEXT:    v_perm_b32 v0, v0, v1, s42964; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s42965; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2966; GFX900-NEXT:    s_waitcnt vmcnt(0)2967; GFX900-NEXT:    s_setpc_b64 s[30:31]2968;2969; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_1_3_3:2970; GFX90A:       ; %bb.0:2971; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2972; GFX90A-NEXT:    ;;#ASMSTART2973; GFX90A-NEXT:    ; def v02974; GFX90A-NEXT:    ;;#ASMEND2975; GFX90A-NEXT:    ;;#ASMSTART2976; GFX90A-NEXT:    ; def v12977; GFX90A-NEXT:    ;;#ASMEND2978; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022979; GFX90A-NEXT:    v_mov_b32_e32 v2, 02980; GFX90A-NEXT:    v_perm_b32 v0, v0, v1, s42981; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s42982; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]2983; GFX90A-NEXT:    s_waitcnt vmcnt(0)2984; GFX90A-NEXT:    s_setpc_b64 s[30:31]2985;2986; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_1_3_3:2987; GFX942:       ; %bb.0:2988; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2989; GFX942-NEXT:    ;;#ASMSTART2990; GFX942-NEXT:    ; def v02991; GFX942-NEXT:    ;;#ASMEND2992; GFX942-NEXT:    ;;#ASMSTART2993; GFX942-NEXT:    ; def v12994; GFX942-NEXT:    ;;#ASMEND2995; GFX942-NEXT:    s_mov_b32 s2, 0x70603022996; GFX942-NEXT:    v_mov_b32_e32 v2, 02997; GFX942-NEXT:    v_perm_b32 v0, v0, v1, s22998; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s22999; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]3000; GFX942-NEXT:    s_waitcnt vmcnt(0)3001; GFX942-NEXT:    s_setpc_b64 s[30:31]3002  %vec0 = call <2 x i16> asm "; def $0", "=v"()3003  %vec1 = call <2 x i16> asm "; def $0", "=v"()3004  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 1, i32 3, i32 3>3005  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 83006  ret void3007}3008 3009define void @v_shuffle_v4i16_v2i16__3_2_3_3(ptr addrspace(1) inreg %ptr) {3010; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_2_3_3:3011; GFX900:       ; %bb.0:3012; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3013; GFX900-NEXT:    ;;#ASMSTART3014; GFX900-NEXT:    ; def v03015; GFX900-NEXT:    ;;#ASMEND3016; GFX900-NEXT:    s_mov_b32 s4, 0x70603023017; GFX900-NEXT:    v_mov_b32_e32 v2, 03018; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s43019; GFX900-NEXT:    v_alignbit_b32 v0, v0, v0, 163020; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]3021; GFX900-NEXT:    s_waitcnt vmcnt(0)3022; GFX900-NEXT:    s_setpc_b64 s[30:31]3023;3024; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_2_3_3:3025; GFX90A:       ; %bb.0:3026; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3027; GFX90A-NEXT:    ;;#ASMSTART3028; GFX90A-NEXT:    ; def v03029; GFX90A-NEXT:    ;;#ASMEND3030; GFX90A-NEXT:    s_mov_b32 s4, 0x70603023031; GFX90A-NEXT:    v_mov_b32_e32 v2, 03032; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s43033; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v0, 163034; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]3035; GFX90A-NEXT:    s_waitcnt vmcnt(0)3036; GFX90A-NEXT:    s_setpc_b64 s[30:31]3037;3038; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_2_3_3:3039; GFX942:       ; %bb.0:3040; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3041; GFX942-NEXT:    ;;#ASMSTART3042; GFX942-NEXT:    ; def v03043; GFX942-NEXT:    ;;#ASMEND3044; GFX942-NEXT:    s_mov_b32 s2, 0x70603023045; GFX942-NEXT:    v_mov_b32_e32 v2, 03046; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s23047; GFX942-NEXT:    v_alignbit_b32 v0, v0, v0, 163048; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]3049; GFX942-NEXT:    s_waitcnt vmcnt(0)3050; GFX942-NEXT:    s_setpc_b64 s[30:31]3051  %vec0 = call <2 x i16> asm "; def $0", "=v"()3052  %vec1 = call <2 x i16> asm "; def $0", "=v"()3053  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 2, i32 3, i32 3>3054  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 83055  ret void3056}3057 3058define void @v_shuffle_v4i16_v2i16__3_3_u_3(ptr addrspace(1) inreg %ptr) {3059; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_u_3:3060; GFX900:       ; %bb.0:3061; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3062; GFX900-NEXT:    s_mov_b32 s4, 0x70603023063; GFX900-NEXT:    v_mov_b32_e32 v2, 03064; GFX900-NEXT:    ;;#ASMSTART3065; GFX900-NEXT:    ; def v13066; GFX900-NEXT:    ;;#ASMEND3067; GFX900-NEXT:    v_perm_b32 v0, v1, v1, s43068; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]3069; GFX900-NEXT:    s_waitcnt vmcnt(0)3070; GFX900-NEXT:    s_setpc_b64 s[30:31]3071;3072; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_u_3:3073; GFX90A:       ; %bb.0:3074; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3075; GFX90A-NEXT:    s_mov_b32 s4, 0x70603023076; GFX90A-NEXT:    v_mov_b32_e32 v2, 03077; GFX90A-NEXT:    ;;#ASMSTART3078; GFX90A-NEXT:    ; def v13079; GFX90A-NEXT:    ;;#ASMEND3080; GFX90A-NEXT:    v_perm_b32 v0, v1, v1, s43081; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]3082; GFX90A-NEXT:    s_waitcnt vmcnt(0)3083; GFX90A-NEXT:    s_setpc_b64 s[30:31]3084;3085; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_3_u_3:3086; GFX942:       ; %bb.0:3087; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3088; GFX942-NEXT:    s_mov_b32 s2, 0x70603023089; GFX942-NEXT:    v_mov_b32_e32 v2, 03090; GFX942-NEXT:    ;;#ASMSTART3091; GFX942-NEXT:    ; def v13092; GFX942-NEXT:    ;;#ASMEND3093; GFX942-NEXT:    s_nop 03094; GFX942-NEXT:    v_perm_b32 v0, v1, v1, s23095; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]3096; GFX942-NEXT:    s_waitcnt vmcnt(0)3097; GFX942-NEXT:    s_setpc_b64 s[30:31]3098  %vec0 = call <2 x i16> asm "; def $0", "=v"()3099  %vec1 = call <2 x i16> asm "; def $0", "=v"()3100  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 3>3101  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 83102  ret void3103}3104 3105define void @v_shuffle_v4i16_v2i16__3_3_0_3(ptr addrspace(1) inreg %ptr) {3106; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_0_3:3107; GFX900:       ; %bb.0:3108; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3109; GFX900-NEXT:    s_mov_b32 s4, 0xffff3110; GFX900-NEXT:    ;;#ASMSTART3111; GFX900-NEXT:    ; def v03112; GFX900-NEXT:    ;;#ASMEND3113; GFX900-NEXT:    ;;#ASMSTART3114; GFX900-NEXT:    ; def v33115; GFX900-NEXT:    ;;#ASMEND3116; GFX900-NEXT:    v_bfi_b32 v1, s4, v0, v33117; GFX900-NEXT:    s_mov_b32 s4, 0x70603023118; GFX900-NEXT:    v_mov_b32_e32 v2, 03119; GFX900-NEXT:    v_perm_b32 v0, v3, v3, s43120; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]3121; GFX900-NEXT:    s_waitcnt vmcnt(0)3122; GFX900-NEXT:    s_setpc_b64 s[30:31]3123;3124; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_0_3:3125; GFX90A:       ; %bb.0:3126; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3127; GFX90A-NEXT:    s_mov_b32 s4, 0xffff3128; GFX90A-NEXT:    ;;#ASMSTART3129; GFX90A-NEXT:    ; def v03130; GFX90A-NEXT:    ;;#ASMEND3131; GFX90A-NEXT:    ;;#ASMSTART3132; GFX90A-NEXT:    ; def v33133; GFX90A-NEXT:    ;;#ASMEND3134; GFX90A-NEXT:    v_bfi_b32 v1, s4, v0, v33135; GFX90A-NEXT:    s_mov_b32 s4, 0x70603023136; GFX90A-NEXT:    v_mov_b32_e32 v2, 03137; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s43138; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]3139; GFX90A-NEXT:    s_waitcnt vmcnt(0)3140; GFX90A-NEXT:    s_setpc_b64 s[30:31]3141;3142; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_3_0_3:3143; GFX942:       ; %bb.0:3144; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3145; GFX942-NEXT:    s_mov_b32 s2, 0xffff3146; GFX942-NEXT:    ;;#ASMSTART3147; GFX942-NEXT:    ; def v03148; GFX942-NEXT:    ;;#ASMEND3149; GFX942-NEXT:    ;;#ASMSTART3150; GFX942-NEXT:    ; def v33151; GFX942-NEXT:    ;;#ASMEND3152; GFX942-NEXT:    v_mov_b32_e32 v2, 03153; GFX942-NEXT:    v_bfi_b32 v1, s2, v0, v33154; GFX942-NEXT:    s_mov_b32 s2, 0x70603023155; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s23156; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]3157; GFX942-NEXT:    s_waitcnt vmcnt(0)3158; GFX942-NEXT:    s_setpc_b64 s[30:31]3159  %vec0 = call <2 x i16> asm "; def $0", "=v"()3160  %vec1 = call <2 x i16> asm "; def $0", "=v"()3161  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 3>3162  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 83163  ret void3164}3165 3166define void @v_shuffle_v4i16_v2i16__3_3_1_3(ptr addrspace(1) inreg %ptr) {3167; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_1_3:3168; GFX900:       ; %bb.0:3169; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3170; GFX900-NEXT:    ;;#ASMSTART3171; GFX900-NEXT:    ; def v03172; GFX900-NEXT:    ;;#ASMEND3173; GFX900-NEXT:    s_mov_b32 s4, 0x70603023174; GFX900-NEXT:    v_mov_b32_e32 v2, 03175; GFX900-NEXT:    ;;#ASMSTART3176; GFX900-NEXT:    ; def v33177; GFX900-NEXT:    ;;#ASMEND3178; GFX900-NEXT:    v_perm_b32 v1, v3, v0, s43179; GFX900-NEXT:    v_perm_b32 v0, v3, v3, s43180; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]3181; GFX900-NEXT:    s_waitcnt vmcnt(0)3182; GFX900-NEXT:    s_setpc_b64 s[30:31]3183;3184; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_1_3:3185; GFX90A:       ; %bb.0:3186; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3187; GFX90A-NEXT:    ;;#ASMSTART3188; GFX90A-NEXT:    ; def v03189; GFX90A-NEXT:    ;;#ASMEND3190; GFX90A-NEXT:    s_mov_b32 s4, 0x70603023191; GFX90A-NEXT:    v_mov_b32_e32 v2, 03192; GFX90A-NEXT:    ;;#ASMSTART3193; GFX90A-NEXT:    ; def v33194; GFX90A-NEXT:    ;;#ASMEND3195; GFX90A-NEXT:    v_perm_b32 v1, v3, v0, s43196; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s43197; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]3198; GFX90A-NEXT:    s_waitcnt vmcnt(0)3199; GFX90A-NEXT:    s_setpc_b64 s[30:31]3200;3201; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_3_1_3:3202; GFX942:       ; %bb.0:3203; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3204; GFX942-NEXT:    ;;#ASMSTART3205; GFX942-NEXT:    ; def v03206; GFX942-NEXT:    ;;#ASMEND3207; GFX942-NEXT:    s_mov_b32 s2, 0x70603023208; GFX942-NEXT:    v_mov_b32_e32 v2, 03209; GFX942-NEXT:    ;;#ASMSTART3210; GFX942-NEXT:    ; def v33211; GFX942-NEXT:    ;;#ASMEND3212; GFX942-NEXT:    s_nop 03213; GFX942-NEXT:    v_perm_b32 v1, v3, v0, s23214; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s23215; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]3216; GFX942-NEXT:    s_waitcnt vmcnt(0)3217; GFX942-NEXT:    s_setpc_b64 s[30:31]3218  %vec0 = call <2 x i16> asm "; def $0", "=v"()3219  %vec1 = call <2 x i16> asm "; def $0", "=v"()3220  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 3>3221  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 83222  ret void3223}3224 3225define void @v_shuffle_v4i16_v2i16__3_3_2_3(ptr addrspace(1) inreg %ptr) {3226; GFX900-LABEL: v_shuffle_v4i16_v2i16__3_3_2_3:3227; GFX900:       ; %bb.0:3228; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3229; GFX900-NEXT:    s_mov_b32 s4, 0x70603023230; GFX900-NEXT:    v_mov_b32_e32 v2, 03231; GFX900-NEXT:    ;;#ASMSTART3232; GFX900-NEXT:    ; def v13233; GFX900-NEXT:    ;;#ASMEND3234; GFX900-NEXT:    v_perm_b32 v0, v1, v1, s43235; GFX900-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]3236; GFX900-NEXT:    s_waitcnt vmcnt(0)3237; GFX900-NEXT:    s_setpc_b64 s[30:31]3238;3239; GFX90A-LABEL: v_shuffle_v4i16_v2i16__3_3_2_3:3240; GFX90A:       ; %bb.0:3241; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3242; GFX90A-NEXT:    s_mov_b32 s4, 0x70603023243; GFX90A-NEXT:    v_mov_b32_e32 v2, 03244; GFX90A-NEXT:    ;;#ASMSTART3245; GFX90A-NEXT:    ; def v13246; GFX90A-NEXT:    ;;#ASMEND3247; GFX90A-NEXT:    v_perm_b32 v0, v1, v1, s43248; GFX90A-NEXT:    global_store_dwordx2 v2, v[0:1], s[16:17]3249; GFX90A-NEXT:    s_waitcnt vmcnt(0)3250; GFX90A-NEXT:    s_setpc_b64 s[30:31]3251;3252; GFX942-LABEL: v_shuffle_v4i16_v2i16__3_3_2_3:3253; GFX942:       ; %bb.0:3254; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3255; GFX942-NEXT:    s_mov_b32 s2, 0x70603023256; GFX942-NEXT:    v_mov_b32_e32 v2, 03257; GFX942-NEXT:    ;;#ASMSTART3258; GFX942-NEXT:    ; def v13259; GFX942-NEXT:    ;;#ASMEND3260; GFX942-NEXT:    s_nop 03261; GFX942-NEXT:    v_perm_b32 v0, v1, v1, s23262; GFX942-NEXT:    global_store_dwordx2 v2, v[0:1], s[0:1]3263; GFX942-NEXT:    s_waitcnt vmcnt(0)3264; GFX942-NEXT:    s_setpc_b64 s[30:31]3265  %vec0 = call <2 x i16> asm "; def $0", "=v"()3266  %vec1 = call <2 x i16> asm "; def $0", "=v"()3267  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 3>3268  store <4 x i16> %shuf, ptr addrspace(1) %ptr, align 83269  ret void3270}3271 3272define void @s_shuffle_v4i16_v2i16__u_u_u_u() {3273; GFX9-LABEL: s_shuffle_v4i16_v2i16__u_u_u_u:3274; GFX9:       ; %bb.0:3275; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3276; GFX9-NEXT:    ;;#ASMSTART3277; GFX9-NEXT:    ; use s[8:9]3278; GFX9-NEXT:    ;;#ASMEND3279; GFX9-NEXT:    s_setpc_b64 s[30:31]3280  %vec0 = call <2 x i16> asm "; def $0", "=s"()3281  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> poison3282  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)3283  ret void3284}3285 3286define void @s_shuffle_v4i16_v2i16__0_u_u_u() {3287; GFX900-LABEL: s_shuffle_v4i16_v2i16__0_u_u_u:3288; GFX900:       ; %bb.0:3289; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3290; GFX900-NEXT:    ;;#ASMSTART3291; GFX900-NEXT:    ; def s83292; GFX900-NEXT:    ;;#ASMEND3293; GFX900-NEXT:    ;;#ASMSTART3294; GFX900-NEXT:    ; use s[8:9]3295; GFX900-NEXT:    ;;#ASMEND3296; GFX900-NEXT:    s_setpc_b64 s[30:31]3297;3298; GFX90A-LABEL: s_shuffle_v4i16_v2i16__0_u_u_u:3299; GFX90A:       ; %bb.0:3300; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3301; GFX90A-NEXT:    ;;#ASMSTART3302; GFX90A-NEXT:    ; def s83303; GFX90A-NEXT:    ;;#ASMEND3304; GFX90A-NEXT:    ;;#ASMSTART3305; GFX90A-NEXT:    ; use s[8:9]3306; GFX90A-NEXT:    ;;#ASMEND3307; GFX90A-NEXT:    s_setpc_b64 s[30:31]3308;3309; GFX942-LABEL: s_shuffle_v4i16_v2i16__0_u_u_u:3310; GFX942:       ; %bb.0:3311; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3312; GFX942-NEXT:    ;;#ASMSTART3313; GFX942-NEXT:    ; def s83314; GFX942-NEXT:    ;;#ASMEND3315; GFX942-NEXT:    s_nop 03316; GFX942-NEXT:    ;;#ASMSTART3317; GFX942-NEXT:    ; use s[8:9]3318; GFX942-NEXT:    ;;#ASMEND3319; GFX942-NEXT:    s_setpc_b64 s[30:31]3320  %vec0 = call <2 x i16> asm "; def $0", "=s"()3321  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>3322  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)3323  ret void3324}3325 3326define void @s_shuffle_v4i16_v2i16__1_u_u_u() {3327; GFX900-LABEL: s_shuffle_v4i16_v2i16__1_u_u_u:3328; GFX900:       ; %bb.0:3329; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3330; GFX900-NEXT:    ;;#ASMSTART3331; GFX900-NEXT:    ; def s43332; GFX900-NEXT:    ;;#ASMEND3333; GFX900-NEXT:    s_lshr_b32 s8, s4, 163334; GFX900-NEXT:    ;;#ASMSTART3335; GFX900-NEXT:    ; use s[8:9]3336; GFX900-NEXT:    ;;#ASMEND3337; GFX900-NEXT:    s_setpc_b64 s[30:31]3338;3339; GFX90A-LABEL: s_shuffle_v4i16_v2i16__1_u_u_u:3340; GFX90A:       ; %bb.0:3341; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3342; GFX90A-NEXT:    ;;#ASMSTART3343; GFX90A-NEXT:    ; def s43344; GFX90A-NEXT:    ;;#ASMEND3345; GFX90A-NEXT:    s_lshr_b32 s8, s4, 163346; GFX90A-NEXT:    ;;#ASMSTART3347; GFX90A-NEXT:    ; use s[8:9]3348; GFX90A-NEXT:    ;;#ASMEND3349; GFX90A-NEXT:    s_setpc_b64 s[30:31]3350;3351; GFX942-LABEL: s_shuffle_v4i16_v2i16__1_u_u_u:3352; GFX942:       ; %bb.0:3353; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3354; GFX942-NEXT:    ;;#ASMSTART3355; GFX942-NEXT:    ; def s03356; GFX942-NEXT:    ;;#ASMEND3357; GFX942-NEXT:    s_lshr_b32 s8, s0, 163358; GFX942-NEXT:    ;;#ASMSTART3359; GFX942-NEXT:    ; use s[8:9]3360; GFX942-NEXT:    ;;#ASMEND3361; GFX942-NEXT:    s_setpc_b64 s[30:31]3362  %vec0 = call <2 x i16> asm "; def $0", "=s"()3363  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>3364  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)3365  ret void3366}3367 3368define void @s_shuffle_v4i16_v2i16__2_u_u_u() {3369; GFX9-LABEL: s_shuffle_v4i16_v2i16__2_u_u_u:3370; GFX9:       ; %bb.0:3371; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3372; GFX9-NEXT:    ;;#ASMSTART3373; GFX9-NEXT:    ; use s[8:9]3374; GFX9-NEXT:    ;;#ASMEND3375; GFX9-NEXT:    s_setpc_b64 s[30:31]3376  %vec0 = call <2 x i16> asm "; def $0", "=s"()3377  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison>3378  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)3379  ret void3380}3381 3382define void @s_shuffle_v4i16_v2i16__3_u_u_u() {3383; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_u_u_u:3384; GFX900:       ; %bb.0:3385; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3386; GFX900-NEXT:    ;;#ASMSTART3387; GFX900-NEXT:    ; def s43388; GFX900-NEXT:    ;;#ASMEND3389; GFX900-NEXT:    s_lshr_b32 s8, s4, 163390; GFX900-NEXT:    ;;#ASMSTART3391; GFX900-NEXT:    ; use s[8:9]3392; GFX900-NEXT:    ;;#ASMEND3393; GFX900-NEXT:    s_setpc_b64 s[30:31]3394;3395; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_u_u_u:3396; GFX90A:       ; %bb.0:3397; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3398; GFX90A-NEXT:    ;;#ASMSTART3399; GFX90A-NEXT:    ; def s43400; GFX90A-NEXT:    ;;#ASMEND3401; GFX90A-NEXT:    s_lshr_b32 s8, s4, 163402; GFX90A-NEXT:    ;;#ASMSTART3403; GFX90A-NEXT:    ; use s[8:9]3404; GFX90A-NEXT:    ;;#ASMEND3405; GFX90A-NEXT:    s_setpc_b64 s[30:31]3406;3407; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_u_u_u:3408; GFX942:       ; %bb.0:3409; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3410; GFX942-NEXT:    ;;#ASMSTART3411; GFX942-NEXT:    ; def s03412; GFX942-NEXT:    ;;#ASMEND3413; GFX942-NEXT:    s_lshr_b32 s8, s0, 163414; GFX942-NEXT:    ;;#ASMSTART3415; GFX942-NEXT:    ; use s[8:9]3416; GFX942-NEXT:    ;;#ASMEND3417; GFX942-NEXT:    s_setpc_b64 s[30:31]3418  %vec0 = call <2 x i16> asm "; def $0", "=s"()3419  %vec1 = call <2 x i16> asm "; def $0", "=s"()3420  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison>3421  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)3422  ret void3423}3424 3425define void @s_shuffle_v4i16_v2i16__3_0_u_u() {3426; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_0_u_u:3427; GFX900:       ; %bb.0:3428; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3429; GFX900-NEXT:    ;;#ASMSTART3430; GFX900-NEXT:    ; def s53431; GFX900-NEXT:    ;;#ASMEND3432; GFX900-NEXT:    s_lshr_b32 s5, s5, 163433; GFX900-NEXT:    ;;#ASMSTART3434; GFX900-NEXT:    ; def s43435; GFX900-NEXT:    ;;#ASMEND3436; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s43437; GFX900-NEXT:    ;;#ASMSTART3438; GFX900-NEXT:    ; use s[8:9]3439; GFX900-NEXT:    ;;#ASMEND3440; GFX900-NEXT:    s_setpc_b64 s[30:31]3441;3442; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_0_u_u:3443; GFX90A:       ; %bb.0:3444; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3445; GFX90A-NEXT:    ;;#ASMSTART3446; GFX90A-NEXT:    ; def s53447; GFX90A-NEXT:    ;;#ASMEND3448; GFX90A-NEXT:    s_lshr_b32 s5, s5, 163449; GFX90A-NEXT:    ;;#ASMSTART3450; GFX90A-NEXT:    ; def s43451; GFX90A-NEXT:    ;;#ASMEND3452; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s43453; GFX90A-NEXT:    ;;#ASMSTART3454; GFX90A-NEXT:    ; use s[8:9]3455; GFX90A-NEXT:    ;;#ASMEND3456; GFX90A-NEXT:    s_setpc_b64 s[30:31]3457;3458; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_0_u_u:3459; GFX942:       ; %bb.0:3460; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3461; GFX942-NEXT:    ;;#ASMSTART3462; GFX942-NEXT:    ; def s13463; GFX942-NEXT:    ;;#ASMEND3464; GFX942-NEXT:    s_lshr_b32 s1, s1, 163465; GFX942-NEXT:    ;;#ASMSTART3466; GFX942-NEXT:    ; def s03467; GFX942-NEXT:    ;;#ASMEND3468; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s03469; GFX942-NEXT:    ;;#ASMSTART3470; GFX942-NEXT:    ; use s[8:9]3471; GFX942-NEXT:    ;;#ASMEND3472; GFX942-NEXT:    s_setpc_b64 s[30:31]3473  %vec0 = call <2 x i16> asm "; def $0", "=s"()3474  %vec1 = call <2 x i16> asm "; def $0", "=s"()3475  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 0, i32 poison, i32 poison>3476  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)3477  ret void3478}3479 3480define void @s_shuffle_v4i16_v2i16__3_1_u_u() {3481; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_1_u_u:3482; GFX900:       ; %bb.0:3483; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3484; GFX900-NEXT:    ;;#ASMSTART3485; GFX900-NEXT:    ; def s43486; GFX900-NEXT:    ;;#ASMEND3487; GFX900-NEXT:    ;;#ASMSTART3488; GFX900-NEXT:    ; def s53489; GFX900-NEXT:    ;;#ASMEND3490; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s43491; GFX900-NEXT:    ;;#ASMSTART3492; GFX900-NEXT:    ; use s[8:9]3493; GFX900-NEXT:    ;;#ASMEND3494; GFX900-NEXT:    s_setpc_b64 s[30:31]3495;3496; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_1_u_u:3497; GFX90A:       ; %bb.0:3498; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3499; GFX90A-NEXT:    ;;#ASMSTART3500; GFX90A-NEXT:    ; def s43501; GFX90A-NEXT:    ;;#ASMEND3502; GFX90A-NEXT:    ;;#ASMSTART3503; GFX90A-NEXT:    ; def s53504; GFX90A-NEXT:    ;;#ASMEND3505; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s43506; GFX90A-NEXT:    ;;#ASMSTART3507; GFX90A-NEXT:    ; use s[8:9]3508; GFX90A-NEXT:    ;;#ASMEND3509; GFX90A-NEXT:    s_setpc_b64 s[30:31]3510;3511; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_1_u_u:3512; GFX942:       ; %bb.0:3513; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3514; GFX942-NEXT:    ;;#ASMSTART3515; GFX942-NEXT:    ; def s03516; GFX942-NEXT:    ;;#ASMEND3517; GFX942-NEXT:    ;;#ASMSTART3518; GFX942-NEXT:    ; def s13519; GFX942-NEXT:    ;;#ASMEND3520; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s03521; GFX942-NEXT:    ;;#ASMSTART3522; GFX942-NEXT:    ; use s[8:9]3523; GFX942-NEXT:    ;;#ASMEND3524; GFX942-NEXT:    s_setpc_b64 s[30:31]3525  %vec0 = call <2 x i16> asm "; def $0", "=s"()3526  %vec1 = call <2 x i16> asm "; def $0", "=s"()3527  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 1, i32 poison, i32 poison>3528  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)3529  ret void3530}3531 3532define void @s_shuffle_v4i16_v2i16__3_2_u_u() {3533; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_2_u_u:3534; GFX900:       ; %bb.0:3535; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3536; GFX900-NEXT:    ;;#ASMSTART3537; GFX900-NEXT:    ; def s43538; GFX900-NEXT:    ;;#ASMEND3539; GFX900-NEXT:    s_lshr_b32 s5, s4, 163540; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s43541; GFX900-NEXT:    ;;#ASMSTART3542; GFX900-NEXT:    ; use s[8:9]3543; GFX900-NEXT:    ;;#ASMEND3544; GFX900-NEXT:    s_setpc_b64 s[30:31]3545;3546; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_2_u_u:3547; GFX90A:       ; %bb.0:3548; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3549; GFX90A-NEXT:    ;;#ASMSTART3550; GFX90A-NEXT:    ; def s43551; GFX90A-NEXT:    ;;#ASMEND3552; GFX90A-NEXT:    s_lshr_b32 s5, s4, 163553; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s43554; GFX90A-NEXT:    ;;#ASMSTART3555; GFX90A-NEXT:    ; use s[8:9]3556; GFX90A-NEXT:    ;;#ASMEND3557; GFX90A-NEXT:    s_setpc_b64 s[30:31]3558;3559; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_2_u_u:3560; GFX942:       ; %bb.0:3561; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3562; GFX942-NEXT:    ;;#ASMSTART3563; GFX942-NEXT:    ; def s03564; GFX942-NEXT:    ;;#ASMEND3565; GFX942-NEXT:    s_lshr_b32 s1, s0, 163566; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s03567; GFX942-NEXT:    ;;#ASMSTART3568; GFX942-NEXT:    ; use s[8:9]3569; GFX942-NEXT:    ;;#ASMEND3570; GFX942-NEXT:    s_setpc_b64 s[30:31]3571  %vec0 = call <2 x i16> asm "; def $0", "=s"()3572  %vec1 = call <2 x i16> asm "; def $0", "=s"()3573  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 2, i32 poison, i32 poison>3574  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)3575  ret void3576}3577 3578define void @s_shuffle_v4i16_v2i16__3_3_u_u() {3579; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_u_u:3580; GFX900:       ; %bb.0:3581; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3582; GFX900-NEXT:    ;;#ASMSTART3583; GFX900-NEXT:    ; def s43584; GFX900-NEXT:    ;;#ASMEND3585; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s43586; GFX900-NEXT:    ;;#ASMSTART3587; GFX900-NEXT:    ; use s[8:9]3588; GFX900-NEXT:    ;;#ASMEND3589; GFX900-NEXT:    s_setpc_b64 s[30:31]3590;3591; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_u_u:3592; GFX90A:       ; %bb.0:3593; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3594; GFX90A-NEXT:    ;;#ASMSTART3595; GFX90A-NEXT:    ; def s43596; GFX90A-NEXT:    ;;#ASMEND3597; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s43598; GFX90A-NEXT:    ;;#ASMSTART3599; GFX90A-NEXT:    ; use s[8:9]3600; GFX90A-NEXT:    ;;#ASMEND3601; GFX90A-NEXT:    s_setpc_b64 s[30:31]3602;3603; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_3_u_u:3604; GFX942:       ; %bb.0:3605; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3606; GFX942-NEXT:    ;;#ASMSTART3607; GFX942-NEXT:    ; def s03608; GFX942-NEXT:    ;;#ASMEND3609; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s03610; GFX942-NEXT:    ;;#ASMSTART3611; GFX942-NEXT:    ; use s[8:9]3612; GFX942-NEXT:    ;;#ASMEND3613; GFX942-NEXT:    s_setpc_b64 s[30:31]3614  %vec0 = call <2 x i16> asm "; def $0", "=s"()3615  %vec1 = call <2 x i16> asm "; def $0", "=s"()3616  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 poison>3617  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)3618  ret void3619}3620 3621define void @s_shuffle_v4i16_v2i16__3_3_0_u() {3622; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_0_u:3623; GFX900:       ; %bb.0:3624; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3625; GFX900-NEXT:    ;;#ASMSTART3626; GFX900-NEXT:    ; def s93627; GFX900-NEXT:    ;;#ASMEND3628; GFX900-NEXT:    ;;#ASMSTART3629; GFX900-NEXT:    ; def s43630; GFX900-NEXT:    ;;#ASMEND3631; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s43632; GFX900-NEXT:    ;;#ASMSTART3633; GFX900-NEXT:    ; use s[8:9]3634; GFX900-NEXT:    ;;#ASMEND3635; GFX900-NEXT:    s_setpc_b64 s[30:31]3636;3637; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_0_u:3638; GFX90A:       ; %bb.0:3639; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3640; GFX90A-NEXT:    ;;#ASMSTART3641; GFX90A-NEXT:    ; def s93642; GFX90A-NEXT:    ;;#ASMEND3643; GFX90A-NEXT:    ;;#ASMSTART3644; GFX90A-NEXT:    ; def s43645; GFX90A-NEXT:    ;;#ASMEND3646; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s43647; GFX90A-NEXT:    ;;#ASMSTART3648; GFX90A-NEXT:    ; use s[8:9]3649; GFX90A-NEXT:    ;;#ASMEND3650; GFX90A-NEXT:    s_setpc_b64 s[30:31]3651;3652; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_3_0_u:3653; GFX942:       ; %bb.0:3654; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3655; GFX942-NEXT:    ;;#ASMSTART3656; GFX942-NEXT:    ; def s93657; GFX942-NEXT:    ;;#ASMEND3658; GFX942-NEXT:    ;;#ASMSTART3659; GFX942-NEXT:    ; def s03660; GFX942-NEXT:    ;;#ASMEND3661; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s03662; GFX942-NEXT:    ;;#ASMSTART3663; GFX942-NEXT:    ; use s[8:9]3664; GFX942-NEXT:    ;;#ASMEND3665; GFX942-NEXT:    s_setpc_b64 s[30:31]3666  %vec0 = call <2 x i16> asm "; def $0", "=s"()3667  %vec1 = call <2 x i16> asm "; def $0", "=s"()3668  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 poison>3669  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)3670  ret void3671}3672 3673define void @s_shuffle_v4i16_v2i16__3_3_1_u() {3674; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_1_u:3675; GFX900:       ; %bb.0:3676; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3677; GFX900-NEXT:    ;;#ASMSTART3678; GFX900-NEXT:    ; def s43679; GFX900-NEXT:    ;;#ASMEND3680; GFX900-NEXT:    ;;#ASMSTART3681; GFX900-NEXT:    ; def s53682; GFX900-NEXT:    ;;#ASMEND3683; GFX900-NEXT:    s_lshr_b32 s9, s4, 163684; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s53685; GFX900-NEXT:    ;;#ASMSTART3686; GFX900-NEXT:    ; use s[8:9]3687; GFX900-NEXT:    ;;#ASMEND3688; GFX900-NEXT:    s_setpc_b64 s[30:31]3689;3690; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_1_u:3691; GFX90A:       ; %bb.0:3692; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3693; GFX90A-NEXT:    ;;#ASMSTART3694; GFX90A-NEXT:    ; def s43695; GFX90A-NEXT:    ;;#ASMEND3696; GFX90A-NEXT:    ;;#ASMSTART3697; GFX90A-NEXT:    ; def s53698; GFX90A-NEXT:    ;;#ASMEND3699; GFX90A-NEXT:    s_lshr_b32 s9, s4, 163700; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s53701; GFX90A-NEXT:    ;;#ASMSTART3702; GFX90A-NEXT:    ; use s[8:9]3703; GFX90A-NEXT:    ;;#ASMEND3704; GFX90A-NEXT:    s_setpc_b64 s[30:31]3705;3706; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_3_1_u:3707; GFX942:       ; %bb.0:3708; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3709; GFX942-NEXT:    ;;#ASMSTART3710; GFX942-NEXT:    ; def s03711; GFX942-NEXT:    ;;#ASMEND3712; GFX942-NEXT:    ;;#ASMSTART3713; GFX942-NEXT:    ; def s13714; GFX942-NEXT:    ;;#ASMEND3715; GFX942-NEXT:    s_lshr_b32 s9, s0, 163716; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s13717; GFX942-NEXT:    ;;#ASMSTART3718; GFX942-NEXT:    ; use s[8:9]3719; GFX942-NEXT:    ;;#ASMEND3720; GFX942-NEXT:    s_setpc_b64 s[30:31]3721  %vec0 = call <2 x i16> asm "; def $0", "=s"()3722  %vec1 = call <2 x i16> asm "; def $0", "=s"()3723  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 poison>3724  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)3725  ret void3726}3727 3728define void @s_shuffle_v4i16_v2i16__3_3_2_u() {3729; GFX9-LABEL: s_shuffle_v4i16_v2i16__3_3_2_u:3730; GFX9:       ; %bb.0:3731; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3732; GFX9-NEXT:    ;;#ASMSTART3733; GFX9-NEXT:    ; def s93734; GFX9-NEXT:    ;;#ASMEND3735; GFX9-NEXT:    s_pack_hh_b32_b16 s8, s9, s93736; GFX9-NEXT:    ;;#ASMSTART3737; GFX9-NEXT:    ; use s[8:9]3738; GFX9-NEXT:    ;;#ASMEND3739; GFX9-NEXT:    s_setpc_b64 s[30:31]3740  %vec0 = call <2 x i16> asm "; def $0", "=s"()3741  %vec1 = call <2 x i16> asm "; def $0", "=s"()3742  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 poison>3743  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)3744  ret void3745}3746 3747define void @s_shuffle_v4i16_v2i16__3_3_3_u() {3748; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_3_u:3749; GFX900:       ; %bb.0:3750; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3751; GFX900-NEXT:    ;;#ASMSTART3752; GFX900-NEXT:    ; def s43753; GFX900-NEXT:    ;;#ASMEND3754; GFX900-NEXT:    s_lshr_b32 s9, s4, 163755; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s43756; GFX900-NEXT:    ;;#ASMSTART3757; GFX900-NEXT:    ; use s[8:9]3758; GFX900-NEXT:    ;;#ASMEND3759; GFX900-NEXT:    s_setpc_b64 s[30:31]3760;3761; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_3_u:3762; GFX90A:       ; %bb.0:3763; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3764; GFX90A-NEXT:    ;;#ASMSTART3765; GFX90A-NEXT:    ; def s43766; GFX90A-NEXT:    ;;#ASMEND3767; GFX90A-NEXT:    s_lshr_b32 s9, s4, 163768; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s43769; GFX90A-NEXT:    ;;#ASMSTART3770; GFX90A-NEXT:    ; use s[8:9]3771; GFX90A-NEXT:    ;;#ASMEND3772; GFX90A-NEXT:    s_setpc_b64 s[30:31]3773;3774; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_3_3_u:3775; GFX942:       ; %bb.0:3776; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3777; GFX942-NEXT:    ;;#ASMSTART3778; GFX942-NEXT:    ; def s03779; GFX942-NEXT:    ;;#ASMEND3780; GFX942-NEXT:    s_lshr_b32 s9, s0, 163781; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s03782; GFX942-NEXT:    ;;#ASMSTART3783; GFX942-NEXT:    ; use s[8:9]3784; GFX942-NEXT:    ;;#ASMEND3785; GFX942-NEXT:    s_setpc_b64 s[30:31]3786  %vec0 = call <2 x i16> asm "; def $0", "=s"()3787  %vec1 = call <2 x i16> asm "; def $0", "=s"()3788  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 poison>3789  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)3790  ret void3791}3792 3793define void @s_shuffle_v4i16_v2i16__3_3_3_0() {3794; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_3_0:3795; GFX900:       ; %bb.0:3796; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3797; GFX900-NEXT:    ;;#ASMSTART3798; GFX900-NEXT:    ; def s53799; GFX900-NEXT:    ;;#ASMEND3800; GFX900-NEXT:    s_lshr_b32 s6, s5, 163801; GFX900-NEXT:    ;;#ASMSTART3802; GFX900-NEXT:    ; def s43803; GFX900-NEXT:    ;;#ASMEND3804; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s6, s43805; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s53806; GFX900-NEXT:    ;;#ASMSTART3807; GFX900-NEXT:    ; use s[8:9]3808; GFX900-NEXT:    ;;#ASMEND3809; GFX900-NEXT:    s_setpc_b64 s[30:31]3810;3811; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_3_0:3812; GFX90A:       ; %bb.0:3813; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3814; GFX90A-NEXT:    ;;#ASMSTART3815; GFX90A-NEXT:    ; def s53816; GFX90A-NEXT:    ;;#ASMEND3817; GFX90A-NEXT:    s_lshr_b32 s6, s5, 163818; GFX90A-NEXT:    ;;#ASMSTART3819; GFX90A-NEXT:    ; def s43820; GFX90A-NEXT:    ;;#ASMEND3821; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s6, s43822; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s53823; GFX90A-NEXT:    ;;#ASMSTART3824; GFX90A-NEXT:    ; use s[8:9]3825; GFX90A-NEXT:    ;;#ASMEND3826; GFX90A-NEXT:    s_setpc_b64 s[30:31]3827;3828; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_3_3_0:3829; GFX942:       ; %bb.0:3830; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3831; GFX942-NEXT:    ;;#ASMSTART3832; GFX942-NEXT:    ; def s13833; GFX942-NEXT:    ;;#ASMEND3834; GFX942-NEXT:    s_lshr_b32 s2, s1, 163835; GFX942-NEXT:    ;;#ASMSTART3836; GFX942-NEXT:    ; def s03837; GFX942-NEXT:    ;;#ASMEND3838; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s2, s03839; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s13840; GFX942-NEXT:    ;;#ASMSTART3841; GFX942-NEXT:    ; use s[8:9]3842; GFX942-NEXT:    ;;#ASMEND3843; GFX942-NEXT:    s_setpc_b64 s[30:31]3844  %vec0 = call <2 x i16> asm "; def $0", "=s"()3845  %vec1 = call <2 x i16> asm "; def $0", "=s"()3846  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 0>3847  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)3848  ret void3849}3850 3851define void @s_shuffle_v4i16_v2i16__3_3_3_1() {3852; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_3_1:3853; GFX900:       ; %bb.0:3854; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3855; GFX900-NEXT:    ;;#ASMSTART3856; GFX900-NEXT:    ; def s43857; GFX900-NEXT:    ;;#ASMEND3858; GFX900-NEXT:    ;;#ASMSTART3859; GFX900-NEXT:    ; def s53860; GFX900-NEXT:    ;;#ASMEND3861; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s5, s43862; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s53863; GFX900-NEXT:    ;;#ASMSTART3864; GFX900-NEXT:    ; use s[8:9]3865; GFX900-NEXT:    ;;#ASMEND3866; GFX900-NEXT:    s_setpc_b64 s[30:31]3867;3868; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_3_1:3869; GFX90A:       ; %bb.0:3870; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3871; GFX90A-NEXT:    ;;#ASMSTART3872; GFX90A-NEXT:    ; def s43873; GFX90A-NEXT:    ;;#ASMEND3874; GFX90A-NEXT:    ;;#ASMSTART3875; GFX90A-NEXT:    ; def s53876; GFX90A-NEXT:    ;;#ASMEND3877; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s5, s43878; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s53879; GFX90A-NEXT:    ;;#ASMSTART3880; GFX90A-NEXT:    ; use s[8:9]3881; GFX90A-NEXT:    ;;#ASMEND3882; GFX90A-NEXT:    s_setpc_b64 s[30:31]3883;3884; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_3_3_1:3885; GFX942:       ; %bb.0:3886; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3887; GFX942-NEXT:    ;;#ASMSTART3888; GFX942-NEXT:    ; def s03889; GFX942-NEXT:    ;;#ASMEND3890; GFX942-NEXT:    ;;#ASMSTART3891; GFX942-NEXT:    ; def s13892; GFX942-NEXT:    ;;#ASMEND3893; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s1, s03894; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s13895; GFX942-NEXT:    ;;#ASMSTART3896; GFX942-NEXT:    ; use s[8:9]3897; GFX942-NEXT:    ;;#ASMEND3898; GFX942-NEXT:    s_setpc_b64 s[30:31]3899  %vec0 = call <2 x i16> asm "; def $0", "=s"()3900  %vec1 = call <2 x i16> asm "; def $0", "=s"()3901  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 1>3902  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)3903  ret void3904}3905 3906define void @s_shuffle_v4i16_v2i16__3_3_3_2() {3907; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_3_2:3908; GFX900:       ; %bb.0:3909; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3910; GFX900-NEXT:    ;;#ASMSTART3911; GFX900-NEXT:    ; def s43912; GFX900-NEXT:    ;;#ASMEND3913; GFX900-NEXT:    s_lshr_b32 s5, s4, 163914; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s5, s43915; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s43916; GFX900-NEXT:    ;;#ASMSTART3917; GFX900-NEXT:    ; use s[8:9]3918; GFX900-NEXT:    ;;#ASMEND3919; GFX900-NEXT:    s_setpc_b64 s[30:31]3920;3921; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_3_2:3922; GFX90A:       ; %bb.0:3923; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3924; GFX90A-NEXT:    ;;#ASMSTART3925; GFX90A-NEXT:    ; def s43926; GFX90A-NEXT:    ;;#ASMEND3927; GFX90A-NEXT:    s_lshr_b32 s5, s4, 163928; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s5, s43929; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s43930; GFX90A-NEXT:    ;;#ASMSTART3931; GFX90A-NEXT:    ; use s[8:9]3932; GFX90A-NEXT:    ;;#ASMEND3933; GFX90A-NEXT:    s_setpc_b64 s[30:31]3934;3935; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_3_3_2:3936; GFX942:       ; %bb.0:3937; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3938; GFX942-NEXT:    ;;#ASMSTART3939; GFX942-NEXT:    ; def s03940; GFX942-NEXT:    ;;#ASMEND3941; GFX942-NEXT:    s_lshr_b32 s1, s0, 163942; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s1, s03943; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s03944; GFX942-NEXT:    ;;#ASMSTART3945; GFX942-NEXT:    ; use s[8:9]3946; GFX942-NEXT:    ;;#ASMEND3947; GFX942-NEXT:    s_setpc_b64 s[30:31]3948  %vec0 = call <2 x i16> asm "; def $0", "=s"()3949  %vec1 = call <2 x i16> asm "; def $0", "=s"()3950  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 2>3951  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)3952  ret void3953}3954 3955define void @s_shuffle_v4i16_v2i16__3_3_3_3() {3956; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_3_3:3957; GFX900:       ; %bb.0:3958; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3959; GFX900-NEXT:    ;;#ASMSTART3960; GFX900-NEXT:    ; def s43961; GFX900-NEXT:    ;;#ASMEND3962; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s43963; GFX900-NEXT:    s_mov_b32 s9, s83964; GFX900-NEXT:    ;;#ASMSTART3965; GFX900-NEXT:    ; use s[8:9]3966; GFX900-NEXT:    ;;#ASMEND3967; GFX900-NEXT:    s_setpc_b64 s[30:31]3968;3969; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_3_3:3970; GFX90A:       ; %bb.0:3971; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3972; GFX90A-NEXT:    ;;#ASMSTART3973; GFX90A-NEXT:    ; def s43974; GFX90A-NEXT:    ;;#ASMEND3975; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s43976; GFX90A-NEXT:    s_mov_b32 s9, s83977; GFX90A-NEXT:    ;;#ASMSTART3978; GFX90A-NEXT:    ; use s[8:9]3979; GFX90A-NEXT:    ;;#ASMEND3980; GFX90A-NEXT:    s_setpc_b64 s[30:31]3981;3982; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_3_3_3:3983; GFX942:       ; %bb.0:3984; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3985; GFX942-NEXT:    ;;#ASMSTART3986; GFX942-NEXT:    ; def s03987; GFX942-NEXT:    ;;#ASMEND3988; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s03989; GFX942-NEXT:    s_mov_b32 s9, s83990; GFX942-NEXT:    ;;#ASMSTART3991; GFX942-NEXT:    ; use s[8:9]3992; GFX942-NEXT:    ;;#ASMEND3993; GFX942-NEXT:    s_setpc_b64 s[30:31]3994  %vec0 = call <2 x i16> asm "; def $0", "=s"()3995  %vec1 = call <2 x i16> asm "; def $0", "=s"()3996  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 3>3997  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)3998  ret void3999}4000 4001define void @s_shuffle_v4i16_v2i16__u_0_0_0() {4002; GFX900-LABEL: s_shuffle_v4i16_v2i16__u_0_0_0:4003; GFX900:       ; %bb.0:4004; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4005; GFX900-NEXT:    ;;#ASMSTART4006; GFX900-NEXT:    ; def s44007; GFX900-NEXT:    ;;#ASMEND4008; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s44009; GFX900-NEXT:    s_mov_b32 s9, s84010; GFX900-NEXT:    ;;#ASMSTART4011; GFX900-NEXT:    ; use s[8:9]4012; GFX900-NEXT:    ;;#ASMEND4013; GFX900-NEXT:    s_setpc_b64 s[30:31]4014;4015; GFX90A-LABEL: s_shuffle_v4i16_v2i16__u_0_0_0:4016; GFX90A:       ; %bb.0:4017; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4018; GFX90A-NEXT:    ;;#ASMSTART4019; GFX90A-NEXT:    ; def s44020; GFX90A-NEXT:    ;;#ASMEND4021; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s44022; GFX90A-NEXT:    s_mov_b32 s9, s84023; GFX90A-NEXT:    ;;#ASMSTART4024; GFX90A-NEXT:    ; use s[8:9]4025; GFX90A-NEXT:    ;;#ASMEND4026; GFX90A-NEXT:    s_setpc_b64 s[30:31]4027;4028; GFX942-LABEL: s_shuffle_v4i16_v2i16__u_0_0_0:4029; GFX942:       ; %bb.0:4030; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4031; GFX942-NEXT:    ;;#ASMSTART4032; GFX942-NEXT:    ; def s04033; GFX942-NEXT:    ;;#ASMEND4034; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s04035; GFX942-NEXT:    s_mov_b32 s9, s84036; GFX942-NEXT:    ;;#ASMSTART4037; GFX942-NEXT:    ; use s[8:9]4038; GFX942-NEXT:    ;;#ASMEND4039; GFX942-NEXT:    s_setpc_b64 s[30:31]4040  %vec0 = call <2 x i16> asm "; def $0", "=s"()4041  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0>4042  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)4043  ret void4044}4045 4046define void @s_shuffle_v4i16_v2i16__0_0_0_0() {4047; GFX900-LABEL: s_shuffle_v4i16_v2i16__0_0_0_0:4048; GFX900:       ; %bb.0:4049; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4050; GFX900-NEXT:    ;;#ASMSTART4051; GFX900-NEXT:    ; def s44052; GFX900-NEXT:    ;;#ASMEND4053; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s44054; GFX900-NEXT:    s_mov_b32 s9, s84055; GFX900-NEXT:    ;;#ASMSTART4056; GFX900-NEXT:    ; use s[8:9]4057; GFX900-NEXT:    ;;#ASMEND4058; GFX900-NEXT:    s_setpc_b64 s[30:31]4059;4060; GFX90A-LABEL: s_shuffle_v4i16_v2i16__0_0_0_0:4061; GFX90A:       ; %bb.0:4062; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4063; GFX90A-NEXT:    ;;#ASMSTART4064; GFX90A-NEXT:    ; def s44065; GFX90A-NEXT:    ;;#ASMEND4066; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s44067; GFX90A-NEXT:    s_mov_b32 s9, s84068; GFX90A-NEXT:    ;;#ASMSTART4069; GFX90A-NEXT:    ; use s[8:9]4070; GFX90A-NEXT:    ;;#ASMEND4071; GFX90A-NEXT:    s_setpc_b64 s[30:31]4072;4073; GFX942-LABEL: s_shuffle_v4i16_v2i16__0_0_0_0:4074; GFX942:       ; %bb.0:4075; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4076; GFX942-NEXT:    ;;#ASMSTART4077; GFX942-NEXT:    ; def s04078; GFX942-NEXT:    ;;#ASMEND4079; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s04080; GFX942-NEXT:    s_mov_b32 s9, s84081; GFX942-NEXT:    ;;#ASMSTART4082; GFX942-NEXT:    ; use s[8:9]4083; GFX942-NEXT:    ;;#ASMEND4084; GFX942-NEXT:    s_setpc_b64 s[30:31]4085  %vec0 = call <2 x i16> asm "; def $0", "=s"()4086  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> zeroinitializer4087  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)4088  ret void4089}4090 4091define void @s_shuffle_v4i16_v2i16__1_0_0_0() {4092; GFX900-LABEL: s_shuffle_v4i16_v2i16__1_0_0_0:4093; GFX900:       ; %bb.0:4094; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4095; GFX900-NEXT:    ;;#ASMSTART4096; GFX900-NEXT:    ; def s44097; GFX900-NEXT:    ;;#ASMEND4098; GFX900-NEXT:    s_lshr_b32 s5, s4, 164099; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s44100; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s44101; GFX900-NEXT:    ;;#ASMSTART4102; GFX900-NEXT:    ; use s[8:9]4103; GFX900-NEXT:    ;;#ASMEND4104; GFX900-NEXT:    s_setpc_b64 s[30:31]4105;4106; GFX90A-LABEL: s_shuffle_v4i16_v2i16__1_0_0_0:4107; GFX90A:       ; %bb.0:4108; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4109; GFX90A-NEXT:    ;;#ASMSTART4110; GFX90A-NEXT:    ; def s44111; GFX90A-NEXT:    ;;#ASMEND4112; GFX90A-NEXT:    s_lshr_b32 s5, s4, 164113; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s44114; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s44115; GFX90A-NEXT:    ;;#ASMSTART4116; GFX90A-NEXT:    ; use s[8:9]4117; GFX90A-NEXT:    ;;#ASMEND4118; GFX90A-NEXT:    s_setpc_b64 s[30:31]4119;4120; GFX942-LABEL: s_shuffle_v4i16_v2i16__1_0_0_0:4121; GFX942:       ; %bb.0:4122; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4123; GFX942-NEXT:    ;;#ASMSTART4124; GFX942-NEXT:    ; def s04125; GFX942-NEXT:    ;;#ASMEND4126; GFX942-NEXT:    s_lshr_b32 s1, s0, 164127; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s04128; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s04129; GFX942-NEXT:    ;;#ASMSTART4130; GFX942-NEXT:    ; use s[8:9]4131; GFX942-NEXT:    ;;#ASMEND4132; GFX942-NEXT:    s_setpc_b64 s[30:31]4133  %vec0 = call <2 x i16> asm "; def $0", "=s"()4134  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>4135  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)4136  ret void4137}4138 4139define void @s_shuffle_v4i16_v2i16__2_0_0_0() {4140; GFX900-LABEL: s_shuffle_v4i16_v2i16__2_0_0_0:4141; GFX900:       ; %bb.0:4142; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4143; GFX900-NEXT:    ;;#ASMSTART4144; GFX900-NEXT:    ; def s44145; GFX900-NEXT:    ;;#ASMEND4146; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s44147; GFX900-NEXT:    s_mov_b32 s9, s84148; GFX900-NEXT:    ;;#ASMSTART4149; GFX900-NEXT:    ; use s[8:9]4150; GFX900-NEXT:    ;;#ASMEND4151; GFX900-NEXT:    s_setpc_b64 s[30:31]4152;4153; GFX90A-LABEL: s_shuffle_v4i16_v2i16__2_0_0_0:4154; GFX90A:       ; %bb.0:4155; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4156; GFX90A-NEXT:    ;;#ASMSTART4157; GFX90A-NEXT:    ; def s44158; GFX90A-NEXT:    ;;#ASMEND4159; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s44160; GFX90A-NEXT:    s_mov_b32 s9, s84161; GFX90A-NEXT:    ;;#ASMSTART4162; GFX90A-NEXT:    ; use s[8:9]4163; GFX90A-NEXT:    ;;#ASMEND4164; GFX90A-NEXT:    s_setpc_b64 s[30:31]4165;4166; GFX942-LABEL: s_shuffle_v4i16_v2i16__2_0_0_0:4167; GFX942:       ; %bb.0:4168; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4169; GFX942-NEXT:    ;;#ASMSTART4170; GFX942-NEXT:    ; def s04171; GFX942-NEXT:    ;;#ASMEND4172; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s04173; GFX942-NEXT:    s_mov_b32 s9, s84174; GFX942-NEXT:    ;;#ASMSTART4175; GFX942-NEXT:    ; use s[8:9]4176; GFX942-NEXT:    ;;#ASMEND4177; GFX942-NEXT:    s_setpc_b64 s[30:31]4178  %vec0 = call <2 x i16> asm "; def $0", "=s"()4179  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0>4180  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)4181  ret void4182}4183 4184define void @s_shuffle_v4i16_v2i16__3_0_0_0() {4185; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_0_0_0:4186; GFX900:       ; %bb.0:4187; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4188; GFX900-NEXT:    ;;#ASMSTART4189; GFX900-NEXT:    ; def s54190; GFX900-NEXT:    ;;#ASMEND4191; GFX900-NEXT:    s_lshr_b32 s5, s5, 164192; GFX900-NEXT:    ;;#ASMSTART4193; GFX900-NEXT:    ; def s44194; GFX900-NEXT:    ;;#ASMEND4195; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s44196; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s44197; GFX900-NEXT:    ;;#ASMSTART4198; GFX900-NEXT:    ; use s[8:9]4199; GFX900-NEXT:    ;;#ASMEND4200; GFX900-NEXT:    s_setpc_b64 s[30:31]4201;4202; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_0_0_0:4203; GFX90A:       ; %bb.0:4204; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4205; GFX90A-NEXT:    ;;#ASMSTART4206; GFX90A-NEXT:    ; def s54207; GFX90A-NEXT:    ;;#ASMEND4208; GFX90A-NEXT:    s_lshr_b32 s5, s5, 164209; GFX90A-NEXT:    ;;#ASMSTART4210; GFX90A-NEXT:    ; def s44211; GFX90A-NEXT:    ;;#ASMEND4212; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s44213; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s44214; GFX90A-NEXT:    ;;#ASMSTART4215; GFX90A-NEXT:    ; use s[8:9]4216; GFX90A-NEXT:    ;;#ASMEND4217; GFX90A-NEXT:    s_setpc_b64 s[30:31]4218;4219; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_0_0_0:4220; GFX942:       ; %bb.0:4221; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4222; GFX942-NEXT:    ;;#ASMSTART4223; GFX942-NEXT:    ; def s14224; GFX942-NEXT:    ;;#ASMEND4225; GFX942-NEXT:    s_lshr_b32 s1, s1, 164226; GFX942-NEXT:    ;;#ASMSTART4227; GFX942-NEXT:    ; def s04228; GFX942-NEXT:    ;;#ASMEND4229; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s04230; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s04231; GFX942-NEXT:    ;;#ASMSTART4232; GFX942-NEXT:    ; use s[8:9]4233; GFX942-NEXT:    ;;#ASMEND4234; GFX942-NEXT:    s_setpc_b64 s[30:31]4235  %vec0 = call <2 x i16> asm "; def $0", "=s"()4236  %vec1 = call <2 x i16> asm "; def $0", "=s"()4237  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 0, i32 0, i32 0>4238  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)4239  ret void4240}4241 4242define void @s_shuffle_v4i16_v2i16__3_u_0_0() {4243; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_u_0_0:4244; GFX900:       ; %bb.0:4245; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4246; GFX900-NEXT:    ;;#ASMSTART4247; GFX900-NEXT:    ; def s44248; GFX900-NEXT:    ;;#ASMEND4249; GFX900-NEXT:    ;;#ASMSTART4250; GFX900-NEXT:    ; def s54251; GFX900-NEXT:    ;;#ASMEND4252; GFX900-NEXT:    s_lshr_b32 s8, s5, 164253; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s44254; GFX900-NEXT:    ;;#ASMSTART4255; GFX900-NEXT:    ; use s[8:9]4256; GFX900-NEXT:    ;;#ASMEND4257; GFX900-NEXT:    s_setpc_b64 s[30:31]4258;4259; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_u_0_0:4260; GFX90A:       ; %bb.0:4261; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4262; GFX90A-NEXT:    ;;#ASMSTART4263; GFX90A-NEXT:    ; def s44264; GFX90A-NEXT:    ;;#ASMEND4265; GFX90A-NEXT:    ;;#ASMSTART4266; GFX90A-NEXT:    ; def s54267; GFX90A-NEXT:    ;;#ASMEND4268; GFX90A-NEXT:    s_lshr_b32 s8, s5, 164269; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s44270; GFX90A-NEXT:    ;;#ASMSTART4271; GFX90A-NEXT:    ; use s[8:9]4272; GFX90A-NEXT:    ;;#ASMEND4273; GFX90A-NEXT:    s_setpc_b64 s[30:31]4274;4275; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_u_0_0:4276; GFX942:       ; %bb.0:4277; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4278; GFX942-NEXT:    ;;#ASMSTART4279; GFX942-NEXT:    ; def s04280; GFX942-NEXT:    ;;#ASMEND4281; GFX942-NEXT:    ;;#ASMSTART4282; GFX942-NEXT:    ; def s14283; GFX942-NEXT:    ;;#ASMEND4284; GFX942-NEXT:    s_lshr_b32 s8, s1, 164285; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s04286; GFX942-NEXT:    ;;#ASMSTART4287; GFX942-NEXT:    ; use s[8:9]4288; GFX942-NEXT:    ;;#ASMEND4289; GFX942-NEXT:    s_setpc_b64 s[30:31]4290  %vec0 = call <2 x i16> asm "; def $0", "=s"()4291  %vec1 = call <2 x i16> asm "; def $0", "=s"()4292  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 poison, i32 0, i32 0>4293  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)4294  ret void4295}4296 4297define void @s_shuffle_v4i16_v2i16__3_1_0_0() {4298; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_1_0_0:4299; GFX900:       ; %bb.0:4300; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4301; GFX900-NEXT:    ;;#ASMSTART4302; GFX900-NEXT:    ; def s44303; GFX900-NEXT:    ;;#ASMEND4304; GFX900-NEXT:    ;;#ASMSTART4305; GFX900-NEXT:    ; def s54306; GFX900-NEXT:    ;;#ASMEND4307; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s44308; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s44309; GFX900-NEXT:    ;;#ASMSTART4310; GFX900-NEXT:    ; use s[8:9]4311; GFX900-NEXT:    ;;#ASMEND4312; GFX900-NEXT:    s_setpc_b64 s[30:31]4313;4314; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_1_0_0:4315; GFX90A:       ; %bb.0:4316; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4317; GFX90A-NEXT:    ;;#ASMSTART4318; GFX90A-NEXT:    ; def s44319; GFX90A-NEXT:    ;;#ASMEND4320; GFX90A-NEXT:    ;;#ASMSTART4321; GFX90A-NEXT:    ; def s54322; GFX90A-NEXT:    ;;#ASMEND4323; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s44324; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s44325; GFX90A-NEXT:    ;;#ASMSTART4326; GFX90A-NEXT:    ; use s[8:9]4327; GFX90A-NEXT:    ;;#ASMEND4328; GFX90A-NEXT:    s_setpc_b64 s[30:31]4329;4330; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_1_0_0:4331; GFX942:       ; %bb.0:4332; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4333; GFX942-NEXT:    ;;#ASMSTART4334; GFX942-NEXT:    ; def s04335; GFX942-NEXT:    ;;#ASMEND4336; GFX942-NEXT:    ;;#ASMSTART4337; GFX942-NEXT:    ; def s14338; GFX942-NEXT:    ;;#ASMEND4339; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s04340; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s04341; GFX942-NEXT:    ;;#ASMSTART4342; GFX942-NEXT:    ; use s[8:9]4343; GFX942-NEXT:    ;;#ASMEND4344; GFX942-NEXT:    s_setpc_b64 s[30:31]4345  %vec0 = call <2 x i16> asm "; def $0", "=s"()4346  %vec1 = call <2 x i16> asm "; def $0", "=s"()4347  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 1, i32 0, i32 0>4348  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)4349  ret void4350}4351 4352define void @s_shuffle_v4i16_v2i16__3_2_0_0() {4353; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_2_0_0:4354; GFX900:       ; %bb.0:4355; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4356; GFX900-NEXT:    ;;#ASMSTART4357; GFX900-NEXT:    ; def s54358; GFX900-NEXT:    ;;#ASMEND4359; GFX900-NEXT:    s_lshr_b32 s6, s5, 164360; GFX900-NEXT:    ;;#ASMSTART4361; GFX900-NEXT:    ; def s44362; GFX900-NEXT:    ;;#ASMEND4363; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s6, s54364; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s44365; GFX900-NEXT:    ;;#ASMSTART4366; GFX900-NEXT:    ; use s[8:9]4367; GFX900-NEXT:    ;;#ASMEND4368; GFX900-NEXT:    s_setpc_b64 s[30:31]4369;4370; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_2_0_0:4371; GFX90A:       ; %bb.0:4372; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4373; GFX90A-NEXT:    ;;#ASMSTART4374; GFX90A-NEXT:    ; def s54375; GFX90A-NEXT:    ;;#ASMEND4376; GFX90A-NEXT:    s_lshr_b32 s6, s5, 164377; GFX90A-NEXT:    ;;#ASMSTART4378; GFX90A-NEXT:    ; def s44379; GFX90A-NEXT:    ;;#ASMEND4380; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s6, s54381; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s44382; GFX90A-NEXT:    ;;#ASMSTART4383; GFX90A-NEXT:    ; use s[8:9]4384; GFX90A-NEXT:    ;;#ASMEND4385; GFX90A-NEXT:    s_setpc_b64 s[30:31]4386;4387; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_2_0_0:4388; GFX942:       ; %bb.0:4389; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4390; GFX942-NEXT:    ;;#ASMSTART4391; GFX942-NEXT:    ; def s14392; GFX942-NEXT:    ;;#ASMEND4393; GFX942-NEXT:    s_lshr_b32 s2, s1, 164394; GFX942-NEXT:    ;;#ASMSTART4395; GFX942-NEXT:    ; def s04396; GFX942-NEXT:    ;;#ASMEND4397; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s2, s14398; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s04399; GFX942-NEXT:    ;;#ASMSTART4400; GFX942-NEXT:    ; use s[8:9]4401; GFX942-NEXT:    ;;#ASMEND4402; GFX942-NEXT:    s_setpc_b64 s[30:31]4403  %vec0 = call <2 x i16> asm "; def $0", "=s"()4404  %vec1 = call <2 x i16> asm "; def $0", "=s"()4405  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 2, i32 0, i32 0>4406  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)4407  ret void4408}4409 4410define void @s_shuffle_v4i16_v2i16__3_3_0_0() {4411; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_0_0:4412; GFX900:       ; %bb.0:4413; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4414; GFX900-NEXT:    ;;#ASMSTART4415; GFX900-NEXT:    ; def s44416; GFX900-NEXT:    ;;#ASMEND4417; GFX900-NEXT:    ;;#ASMSTART4418; GFX900-NEXT:    ; def s54419; GFX900-NEXT:    ;;#ASMEND4420; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s54421; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s44422; GFX900-NEXT:    ;;#ASMSTART4423; GFX900-NEXT:    ; use s[8:9]4424; GFX900-NEXT:    ;;#ASMEND4425; GFX900-NEXT:    s_setpc_b64 s[30:31]4426;4427; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_0_0:4428; GFX90A:       ; %bb.0:4429; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4430; GFX90A-NEXT:    ;;#ASMSTART4431; GFX90A-NEXT:    ; def s44432; GFX90A-NEXT:    ;;#ASMEND4433; GFX90A-NEXT:    ;;#ASMSTART4434; GFX90A-NEXT:    ; def s54435; GFX90A-NEXT:    ;;#ASMEND4436; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s54437; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s44438; GFX90A-NEXT:    ;;#ASMSTART4439; GFX90A-NEXT:    ; use s[8:9]4440; GFX90A-NEXT:    ;;#ASMEND4441; GFX90A-NEXT:    s_setpc_b64 s[30:31]4442;4443; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_3_0_0:4444; GFX942:       ; %bb.0:4445; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4446; GFX942-NEXT:    ;;#ASMSTART4447; GFX942-NEXT:    ; def s04448; GFX942-NEXT:    ;;#ASMEND4449; GFX942-NEXT:    ;;#ASMSTART4450; GFX942-NEXT:    ; def s14451; GFX942-NEXT:    ;;#ASMEND4452; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s14453; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s04454; GFX942-NEXT:    ;;#ASMSTART4455; GFX942-NEXT:    ; use s[8:9]4456; GFX942-NEXT:    ;;#ASMEND4457; GFX942-NEXT:    s_setpc_b64 s[30:31]4458  %vec0 = call <2 x i16> asm "; def $0", "=s"()4459  %vec1 = call <2 x i16> asm "; def $0", "=s"()4460  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 0>4461  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)4462  ret void4463}4464 4465define void @s_shuffle_v4i16_v2i16__3_3_u_0() {4466; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_u_0:4467; GFX900:       ; %bb.0:4468; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4469; GFX900-NEXT:    ;;#ASMSTART4470; GFX900-NEXT:    ; def s44471; GFX900-NEXT:    ;;#ASMEND4472; GFX900-NEXT:    ;;#ASMSTART4473; GFX900-NEXT:    ; def s54474; GFX900-NEXT:    ;;#ASMEND4475; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s54476; GFX900-NEXT:    s_lshl_b32 s9, s4, 164477; GFX900-NEXT:    ;;#ASMSTART4478; GFX900-NEXT:    ; use s[8:9]4479; GFX900-NEXT:    ;;#ASMEND4480; GFX900-NEXT:    s_setpc_b64 s[30:31]4481;4482; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_u_0:4483; GFX90A:       ; %bb.0:4484; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4485; GFX90A-NEXT:    ;;#ASMSTART4486; GFX90A-NEXT:    ; def s44487; GFX90A-NEXT:    ;;#ASMEND4488; GFX90A-NEXT:    ;;#ASMSTART4489; GFX90A-NEXT:    ; def s54490; GFX90A-NEXT:    ;;#ASMEND4491; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s54492; GFX90A-NEXT:    s_lshl_b32 s9, s4, 164493; GFX90A-NEXT:    ;;#ASMSTART4494; GFX90A-NEXT:    ; use s[8:9]4495; GFX90A-NEXT:    ;;#ASMEND4496; GFX90A-NEXT:    s_setpc_b64 s[30:31]4497;4498; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_3_u_0:4499; GFX942:       ; %bb.0:4500; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4501; GFX942-NEXT:    ;;#ASMSTART4502; GFX942-NEXT:    ; def s04503; GFX942-NEXT:    ;;#ASMEND4504; GFX942-NEXT:    ;;#ASMSTART4505; GFX942-NEXT:    ; def s14506; GFX942-NEXT:    ;;#ASMEND4507; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s14508; GFX942-NEXT:    s_lshl_b32 s9, s0, 164509; GFX942-NEXT:    ;;#ASMSTART4510; GFX942-NEXT:    ; use s[8:9]4511; GFX942-NEXT:    ;;#ASMEND4512; GFX942-NEXT:    s_setpc_b64 s[30:31]4513  %vec0 = call <2 x i16> asm "; def $0", "=s"()4514  %vec1 = call <2 x i16> asm "; def $0", "=s"()4515  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 0>4516  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)4517  ret void4518}4519 4520define void @s_shuffle_v4i16_v2i16__3_3_1_0() {4521; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_1_0:4522; GFX900:       ; %bb.0:4523; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4524; GFX900-NEXT:    ;;#ASMSTART4525; GFX900-NEXT:    ; def s44526; GFX900-NEXT:    ;;#ASMEND4527; GFX900-NEXT:    s_lshr_b32 s6, s4, 164528; GFX900-NEXT:    ;;#ASMSTART4529; GFX900-NEXT:    ; def s54530; GFX900-NEXT:    ;;#ASMEND4531; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s6, s44532; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s54533; GFX900-NEXT:    ;;#ASMSTART4534; GFX900-NEXT:    ; use s[8:9]4535; GFX900-NEXT:    ;;#ASMEND4536; GFX900-NEXT:    s_setpc_b64 s[30:31]4537;4538; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_1_0:4539; GFX90A:       ; %bb.0:4540; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4541; GFX90A-NEXT:    ;;#ASMSTART4542; GFX90A-NEXT:    ; def s44543; GFX90A-NEXT:    ;;#ASMEND4544; GFX90A-NEXT:    s_lshr_b32 s6, s4, 164545; GFX90A-NEXT:    ;;#ASMSTART4546; GFX90A-NEXT:    ; def s54547; GFX90A-NEXT:    ;;#ASMEND4548; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s6, s44549; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s54550; GFX90A-NEXT:    ;;#ASMSTART4551; GFX90A-NEXT:    ; use s[8:9]4552; GFX90A-NEXT:    ;;#ASMEND4553; GFX90A-NEXT:    s_setpc_b64 s[30:31]4554;4555; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_3_1_0:4556; GFX942:       ; %bb.0:4557; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4558; GFX942-NEXT:    ;;#ASMSTART4559; GFX942-NEXT:    ; def s04560; GFX942-NEXT:    ;;#ASMEND4561; GFX942-NEXT:    s_lshr_b32 s2, s0, 164562; GFX942-NEXT:    ;;#ASMSTART4563; GFX942-NEXT:    ; def s14564; GFX942-NEXT:    ;;#ASMEND4565; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s2, s04566; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s14567; GFX942-NEXT:    ;;#ASMSTART4568; GFX942-NEXT:    ; use s[8:9]4569; GFX942-NEXT:    ;;#ASMEND4570; GFX942-NEXT:    s_setpc_b64 s[30:31]4571  %vec0 = call <2 x i16> asm "; def $0", "=s"()4572  %vec1 = call <2 x i16> asm "; def $0", "=s"()4573  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 0>4574  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)4575  ret void4576}4577 4578define void @s_shuffle_v4i16_v2i16__3_3_2_0() {4579; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_2_0:4580; GFX900:       ; %bb.0:4581; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4582; GFX900-NEXT:    ;;#ASMSTART4583; GFX900-NEXT:    ; def s44584; GFX900-NEXT:    ;;#ASMEND4585; GFX900-NEXT:    ;;#ASMSTART4586; GFX900-NEXT:    ; def s54587; GFX900-NEXT:    ;;#ASMEND4588; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s5, s44589; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s54590; GFX900-NEXT:    ;;#ASMSTART4591; GFX900-NEXT:    ; use s[8:9]4592; GFX900-NEXT:    ;;#ASMEND4593; GFX900-NEXT:    s_setpc_b64 s[30:31]4594;4595; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_2_0:4596; GFX90A:       ; %bb.0:4597; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4598; GFX90A-NEXT:    ;;#ASMSTART4599; GFX90A-NEXT:    ; def s44600; GFX90A-NEXT:    ;;#ASMEND4601; GFX90A-NEXT:    ;;#ASMSTART4602; GFX90A-NEXT:    ; def s54603; GFX90A-NEXT:    ;;#ASMEND4604; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s5, s44605; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s54606; GFX90A-NEXT:    ;;#ASMSTART4607; GFX90A-NEXT:    ; use s[8:9]4608; GFX90A-NEXT:    ;;#ASMEND4609; GFX90A-NEXT:    s_setpc_b64 s[30:31]4610;4611; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_3_2_0:4612; GFX942:       ; %bb.0:4613; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4614; GFX942-NEXT:    ;;#ASMSTART4615; GFX942-NEXT:    ; def s04616; GFX942-NEXT:    ;;#ASMEND4617; GFX942-NEXT:    ;;#ASMSTART4618; GFX942-NEXT:    ; def s14619; GFX942-NEXT:    ;;#ASMEND4620; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s1, s04621; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s14622; GFX942-NEXT:    ;;#ASMSTART4623; GFX942-NEXT:    ; use s[8:9]4624; GFX942-NEXT:    ;;#ASMEND4625; GFX942-NEXT:    s_setpc_b64 s[30:31]4626  %vec0 = call <2 x i16> asm "; def $0", "=s"()4627  %vec1 = call <2 x i16> asm "; def $0", "=s"()4628  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 0>4629  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)4630  ret void4631}4632 4633define void @s_shuffle_v4i16_v2i16__u_1_1_1() {4634; GFX9-LABEL: s_shuffle_v4i16_v2i16__u_1_1_1:4635; GFX9:       ; %bb.0:4636; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4637; GFX9-NEXT:    ;;#ASMSTART4638; GFX9-NEXT:    ; def s84639; GFX9-NEXT:    ;;#ASMEND4640; GFX9-NEXT:    s_pack_hh_b32_b16 s9, s8, s84641; GFX9-NEXT:    ;;#ASMSTART4642; GFX9-NEXT:    ; use s[8:9]4643; GFX9-NEXT:    ;;#ASMEND4644; GFX9-NEXT:    s_setpc_b64 s[30:31]4645  %vec0 = call <2 x i16> asm "; def $0", "=s"()4646  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1>4647  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)4648  ret void4649}4650 4651define void @s_shuffle_v4i16_v2i16__0_1_1_1() {4652; GFX9-LABEL: s_shuffle_v4i16_v2i16__0_1_1_1:4653; GFX9:       ; %bb.0:4654; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4655; GFX9-NEXT:    ;;#ASMSTART4656; GFX9-NEXT:    ; def s84657; GFX9-NEXT:    ;;#ASMEND4658; GFX9-NEXT:    s_pack_hh_b32_b16 s9, s8, s84659; GFX9-NEXT:    ;;#ASMSTART4660; GFX9-NEXT:    ; use s[8:9]4661; GFX9-NEXT:    ;;#ASMEND4662; GFX9-NEXT:    s_setpc_b64 s[30:31]4663  %vec0 = call <2 x i16> asm "; def $0", "=s"()4664  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1>4665  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)4666  ret void4667}4668 4669define void @s_shuffle_v4i16_v2i16__1_1_1_1() {4670; GFX900-LABEL: s_shuffle_v4i16_v2i16__1_1_1_1:4671; GFX900:       ; %bb.0:4672; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4673; GFX900-NEXT:    ;;#ASMSTART4674; GFX900-NEXT:    ; def s44675; GFX900-NEXT:    ;;#ASMEND4676; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s44677; GFX900-NEXT:    s_mov_b32 s9, s84678; GFX900-NEXT:    ;;#ASMSTART4679; GFX900-NEXT:    ; use s[8:9]4680; GFX900-NEXT:    ;;#ASMEND4681; GFX900-NEXT:    s_setpc_b64 s[30:31]4682;4683; GFX90A-LABEL: s_shuffle_v4i16_v2i16__1_1_1_1:4684; GFX90A:       ; %bb.0:4685; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4686; GFX90A-NEXT:    ;;#ASMSTART4687; GFX90A-NEXT:    ; def s44688; GFX90A-NEXT:    ;;#ASMEND4689; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s44690; GFX90A-NEXT:    s_mov_b32 s9, s84691; GFX90A-NEXT:    ;;#ASMSTART4692; GFX90A-NEXT:    ; use s[8:9]4693; GFX90A-NEXT:    ;;#ASMEND4694; GFX90A-NEXT:    s_setpc_b64 s[30:31]4695;4696; GFX942-LABEL: s_shuffle_v4i16_v2i16__1_1_1_1:4697; GFX942:       ; %bb.0:4698; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4699; GFX942-NEXT:    ;;#ASMSTART4700; GFX942-NEXT:    ; def s04701; GFX942-NEXT:    ;;#ASMEND4702; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s04703; GFX942-NEXT:    s_mov_b32 s9, s84704; GFX942-NEXT:    ;;#ASMSTART4705; GFX942-NEXT:    ; use s[8:9]4706; GFX942-NEXT:    ;;#ASMEND4707; GFX942-NEXT:    s_setpc_b64 s[30:31]4708  %vec0 = call <2 x i16> asm "; def $0", "=s"()4709  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>4710  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)4711  ret void4712}4713 4714define void @s_shuffle_v4i16_v2i16__2_1_1_1() {4715; GFX9-LABEL: s_shuffle_v4i16_v2i16__2_1_1_1:4716; GFX9:       ; %bb.0:4717; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4718; GFX9-NEXT:    ;;#ASMSTART4719; GFX9-NEXT:    ; def s84720; GFX9-NEXT:    ;;#ASMEND4721; GFX9-NEXT:    s_pack_hh_b32_b16 s9, s8, s84722; GFX9-NEXT:    ;;#ASMSTART4723; GFX9-NEXT:    ; use s[8:9]4724; GFX9-NEXT:    ;;#ASMEND4725; GFX9-NEXT:    s_setpc_b64 s[30:31]4726  %vec0 = call <2 x i16> asm "; def $0", "=s"()4727  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1>4728  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)4729  ret void4730}4731 4732define void @s_shuffle_v4i16_v2i16__3_1_1_1() {4733; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_1_1_1:4734; GFX900:       ; %bb.0:4735; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4736; GFX900-NEXT:    ;;#ASMSTART4737; GFX900-NEXT:    ; def s44738; GFX900-NEXT:    ;;#ASMEND4739; GFX900-NEXT:    ;;#ASMSTART4740; GFX900-NEXT:    ; def s54741; GFX900-NEXT:    ;;#ASMEND4742; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s44743; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s4, s44744; GFX900-NEXT:    ;;#ASMSTART4745; GFX900-NEXT:    ; use s[8:9]4746; GFX900-NEXT:    ;;#ASMEND4747; GFX900-NEXT:    s_setpc_b64 s[30:31]4748;4749; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_1_1_1:4750; GFX90A:       ; %bb.0:4751; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4752; GFX90A-NEXT:    ;;#ASMSTART4753; GFX90A-NEXT:    ; def s44754; GFX90A-NEXT:    ;;#ASMEND4755; GFX90A-NEXT:    ;;#ASMSTART4756; GFX90A-NEXT:    ; def s54757; GFX90A-NEXT:    ;;#ASMEND4758; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s44759; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s4, s44760; GFX90A-NEXT:    ;;#ASMSTART4761; GFX90A-NEXT:    ; use s[8:9]4762; GFX90A-NEXT:    ;;#ASMEND4763; GFX90A-NEXT:    s_setpc_b64 s[30:31]4764;4765; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_1_1_1:4766; GFX942:       ; %bb.0:4767; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4768; GFX942-NEXT:    ;;#ASMSTART4769; GFX942-NEXT:    ; def s04770; GFX942-NEXT:    ;;#ASMEND4771; GFX942-NEXT:    ;;#ASMSTART4772; GFX942-NEXT:    ; def s14773; GFX942-NEXT:    ;;#ASMEND4774; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s04775; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s0, s04776; GFX942-NEXT:    ;;#ASMSTART4777; GFX942-NEXT:    ; use s[8:9]4778; GFX942-NEXT:    ;;#ASMEND4779; GFX942-NEXT:    s_setpc_b64 s[30:31]4780  %vec0 = call <2 x i16> asm "; def $0", "=s"()4781  %vec1 = call <2 x i16> asm "; def $0", "=s"()4782  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 1, i32 1, i32 1>4783  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)4784  ret void4785}4786 4787define void @s_shuffle_v4i16_v2i16__3_u_1_1() {4788; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_u_1_1:4789; GFX900:       ; %bb.0:4790; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4791; GFX900-NEXT:    ;;#ASMSTART4792; GFX900-NEXT:    ; def s44793; GFX900-NEXT:    ;;#ASMEND4794; GFX900-NEXT:    ;;#ASMSTART4795; GFX900-NEXT:    ; def s54796; GFX900-NEXT:    ;;#ASMEND4797; GFX900-NEXT:    s_lshr_b32 s8, s5, 164798; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s4, s44799; GFX900-NEXT:    ;;#ASMSTART4800; GFX900-NEXT:    ; use s[8:9]4801; GFX900-NEXT:    ;;#ASMEND4802; GFX900-NEXT:    s_setpc_b64 s[30:31]4803;4804; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_u_1_1:4805; GFX90A:       ; %bb.0:4806; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4807; GFX90A-NEXT:    ;;#ASMSTART4808; GFX90A-NEXT:    ; def s44809; GFX90A-NEXT:    ;;#ASMEND4810; GFX90A-NEXT:    ;;#ASMSTART4811; GFX90A-NEXT:    ; def s54812; GFX90A-NEXT:    ;;#ASMEND4813; GFX90A-NEXT:    s_lshr_b32 s8, s5, 164814; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s4, s44815; GFX90A-NEXT:    ;;#ASMSTART4816; GFX90A-NEXT:    ; use s[8:9]4817; GFX90A-NEXT:    ;;#ASMEND4818; GFX90A-NEXT:    s_setpc_b64 s[30:31]4819;4820; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_u_1_1:4821; GFX942:       ; %bb.0:4822; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4823; GFX942-NEXT:    ;;#ASMSTART4824; GFX942-NEXT:    ; def s04825; GFX942-NEXT:    ;;#ASMEND4826; GFX942-NEXT:    ;;#ASMSTART4827; GFX942-NEXT:    ; def s14828; GFX942-NEXT:    ;;#ASMEND4829; GFX942-NEXT:    s_lshr_b32 s8, s1, 164830; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s0, s04831; GFX942-NEXT:    ;;#ASMSTART4832; GFX942-NEXT:    ; use s[8:9]4833; GFX942-NEXT:    ;;#ASMEND4834; GFX942-NEXT:    s_setpc_b64 s[30:31]4835  %vec0 = call <2 x i16> asm "; def $0", "=s"()4836  %vec1 = call <2 x i16> asm "; def $0", "=s"()4837  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 poison, i32 1, i32 1>4838  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)4839  ret void4840}4841 4842define void @s_shuffle_v4i16_v2i16__3_0_1_1() {4843; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_0_1_1:4844; GFX900:       ; %bb.0:4845; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4846; GFX900-NEXT:    ;;#ASMSTART4847; GFX900-NEXT:    ; def s54848; GFX900-NEXT:    ;;#ASMEND4849; GFX900-NEXT:    s_lshr_b32 s5, s5, 164850; GFX900-NEXT:    ;;#ASMSTART4851; GFX900-NEXT:    ; def s44852; GFX900-NEXT:    ;;#ASMEND4853; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s44854; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s4, s44855; GFX900-NEXT:    ;;#ASMSTART4856; GFX900-NEXT:    ; use s[8:9]4857; GFX900-NEXT:    ;;#ASMEND4858; GFX900-NEXT:    s_setpc_b64 s[30:31]4859;4860; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_0_1_1:4861; GFX90A:       ; %bb.0:4862; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4863; GFX90A-NEXT:    ;;#ASMSTART4864; GFX90A-NEXT:    ; def s54865; GFX90A-NEXT:    ;;#ASMEND4866; GFX90A-NEXT:    s_lshr_b32 s5, s5, 164867; GFX90A-NEXT:    ;;#ASMSTART4868; GFX90A-NEXT:    ; def s44869; GFX90A-NEXT:    ;;#ASMEND4870; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s44871; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s4, s44872; GFX90A-NEXT:    ;;#ASMSTART4873; GFX90A-NEXT:    ; use s[8:9]4874; GFX90A-NEXT:    ;;#ASMEND4875; GFX90A-NEXT:    s_setpc_b64 s[30:31]4876;4877; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_0_1_1:4878; GFX942:       ; %bb.0:4879; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4880; GFX942-NEXT:    ;;#ASMSTART4881; GFX942-NEXT:    ; def s14882; GFX942-NEXT:    ;;#ASMEND4883; GFX942-NEXT:    s_lshr_b32 s1, s1, 164884; GFX942-NEXT:    ;;#ASMSTART4885; GFX942-NEXT:    ; def s04886; GFX942-NEXT:    ;;#ASMEND4887; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s04888; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s0, s04889; GFX942-NEXT:    ;;#ASMSTART4890; GFX942-NEXT:    ; use s[8:9]4891; GFX942-NEXT:    ;;#ASMEND4892; GFX942-NEXT:    s_setpc_b64 s[30:31]4893  %vec0 = call <2 x i16> asm "; def $0", "=s"()4894  %vec1 = call <2 x i16> asm "; def $0", "=s"()4895  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 0, i32 1, i32 1>4896  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)4897  ret void4898}4899 4900define void @s_shuffle_v4i16_v2i16__3_2_1_1() {4901; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_2_1_1:4902; GFX900:       ; %bb.0:4903; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4904; GFX900-NEXT:    ;;#ASMSTART4905; GFX900-NEXT:    ; def s54906; GFX900-NEXT:    ;;#ASMEND4907; GFX900-NEXT:    s_lshr_b32 s6, s5, 164908; GFX900-NEXT:    ;;#ASMSTART4909; GFX900-NEXT:    ; def s44910; GFX900-NEXT:    ;;#ASMEND4911; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s6, s54912; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s4, s44913; GFX900-NEXT:    ;;#ASMSTART4914; GFX900-NEXT:    ; use s[8:9]4915; GFX900-NEXT:    ;;#ASMEND4916; GFX900-NEXT:    s_setpc_b64 s[30:31]4917;4918; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_2_1_1:4919; GFX90A:       ; %bb.0:4920; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4921; GFX90A-NEXT:    ;;#ASMSTART4922; GFX90A-NEXT:    ; def s54923; GFX90A-NEXT:    ;;#ASMEND4924; GFX90A-NEXT:    s_lshr_b32 s6, s5, 164925; GFX90A-NEXT:    ;;#ASMSTART4926; GFX90A-NEXT:    ; def s44927; GFX90A-NEXT:    ;;#ASMEND4928; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s6, s54929; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s4, s44930; GFX90A-NEXT:    ;;#ASMSTART4931; GFX90A-NEXT:    ; use s[8:9]4932; GFX90A-NEXT:    ;;#ASMEND4933; GFX90A-NEXT:    s_setpc_b64 s[30:31]4934;4935; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_2_1_1:4936; GFX942:       ; %bb.0:4937; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4938; GFX942-NEXT:    ;;#ASMSTART4939; GFX942-NEXT:    ; def s14940; GFX942-NEXT:    ;;#ASMEND4941; GFX942-NEXT:    s_lshr_b32 s2, s1, 164942; GFX942-NEXT:    ;;#ASMSTART4943; GFX942-NEXT:    ; def s04944; GFX942-NEXT:    ;;#ASMEND4945; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s2, s14946; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s0, s04947; GFX942-NEXT:    ;;#ASMSTART4948; GFX942-NEXT:    ; use s[8:9]4949; GFX942-NEXT:    ;;#ASMEND4950; GFX942-NEXT:    s_setpc_b64 s[30:31]4951  %vec0 = call <2 x i16> asm "; def $0", "=s"()4952  %vec1 = call <2 x i16> asm "; def $0", "=s"()4953  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 2, i32 1, i32 1>4954  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)4955  ret void4956}4957 4958define void @s_shuffle_v4i16_v2i16__3_3_1_1() {4959; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_1_1:4960; GFX900:       ; %bb.0:4961; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4962; GFX900-NEXT:    ;;#ASMSTART4963; GFX900-NEXT:    ; def s44964; GFX900-NEXT:    ;;#ASMEND4965; GFX900-NEXT:    ;;#ASMSTART4966; GFX900-NEXT:    ; def s54967; GFX900-NEXT:    ;;#ASMEND4968; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s4, s44969; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s54970; GFX900-NEXT:    ;;#ASMSTART4971; GFX900-NEXT:    ; use s[8:9]4972; GFX900-NEXT:    ;;#ASMEND4973; GFX900-NEXT:    s_setpc_b64 s[30:31]4974;4975; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_1_1:4976; GFX90A:       ; %bb.0:4977; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4978; GFX90A-NEXT:    ;;#ASMSTART4979; GFX90A-NEXT:    ; def s44980; GFX90A-NEXT:    ;;#ASMEND4981; GFX90A-NEXT:    ;;#ASMSTART4982; GFX90A-NEXT:    ; def s54983; GFX90A-NEXT:    ;;#ASMEND4984; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s4, s44985; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s54986; GFX90A-NEXT:    ;;#ASMSTART4987; GFX90A-NEXT:    ; use s[8:9]4988; GFX90A-NEXT:    ;;#ASMEND4989; GFX90A-NEXT:    s_setpc_b64 s[30:31]4990;4991; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_3_1_1:4992; GFX942:       ; %bb.0:4993; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4994; GFX942-NEXT:    ;;#ASMSTART4995; GFX942-NEXT:    ; def s04996; GFX942-NEXT:    ;;#ASMEND4997; GFX942-NEXT:    ;;#ASMSTART4998; GFX942-NEXT:    ; def s14999; GFX942-NEXT:    ;;#ASMEND5000; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s0, s05001; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s15002; GFX942-NEXT:    ;;#ASMSTART5003; GFX942-NEXT:    ; use s[8:9]5004; GFX942-NEXT:    ;;#ASMEND5005; GFX942-NEXT:    s_setpc_b64 s[30:31]5006  %vec0 = call <2 x i16> asm "; def $0", "=s"()5007  %vec1 = call <2 x i16> asm "; def $0", "=s"()5008  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 1>5009  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)5010  ret void5011}5012 5013define void @s_shuffle_v4i16_v2i16__3_3_u_1() {5014; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_u_1:5015; GFX900:       ; %bb.0:5016; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5017; GFX900-NEXT:    ;;#ASMSTART5018; GFX900-NEXT:    ; def s95019; GFX900-NEXT:    ;;#ASMEND5020; GFX900-NEXT:    ;;#ASMSTART5021; GFX900-NEXT:    ; def s45022; GFX900-NEXT:    ;;#ASMEND5023; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s45024; GFX900-NEXT:    ;;#ASMSTART5025; GFX900-NEXT:    ; use s[8:9]5026; GFX900-NEXT:    ;;#ASMEND5027; GFX900-NEXT:    s_setpc_b64 s[30:31]5028;5029; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_u_1:5030; GFX90A:       ; %bb.0:5031; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5032; GFX90A-NEXT:    ;;#ASMSTART5033; GFX90A-NEXT:    ; def s95034; GFX90A-NEXT:    ;;#ASMEND5035; GFX90A-NEXT:    ;;#ASMSTART5036; GFX90A-NEXT:    ; def s45037; GFX90A-NEXT:    ;;#ASMEND5038; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s45039; GFX90A-NEXT:    ;;#ASMSTART5040; GFX90A-NEXT:    ; use s[8:9]5041; GFX90A-NEXT:    ;;#ASMEND5042; GFX90A-NEXT:    s_setpc_b64 s[30:31]5043;5044; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_3_u_1:5045; GFX942:       ; %bb.0:5046; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5047; GFX942-NEXT:    ;;#ASMSTART5048; GFX942-NEXT:    ; def s95049; GFX942-NEXT:    ;;#ASMEND5050; GFX942-NEXT:    ;;#ASMSTART5051; GFX942-NEXT:    ; def s05052; GFX942-NEXT:    ;;#ASMEND5053; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s05054; GFX942-NEXT:    ;;#ASMSTART5055; GFX942-NEXT:    ; use s[8:9]5056; GFX942-NEXT:    ;;#ASMEND5057; GFX942-NEXT:    s_setpc_b64 s[30:31]5058  %vec0 = call <2 x i16> asm "; def $0", "=s"()5059  %vec1 = call <2 x i16> asm "; def $0", "=s"()5060  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 1>5061  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)5062  ret void5063}5064 5065define void @s_shuffle_v4i16_v2i16__3_3_0_1() {5066; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_0_1:5067; GFX900:       ; %bb.0:5068; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5069; GFX900-NEXT:    ;;#ASMSTART5070; GFX900-NEXT:    ; def s95071; GFX900-NEXT:    ;;#ASMEND5072; GFX900-NEXT:    ;;#ASMSTART5073; GFX900-NEXT:    ; def s45074; GFX900-NEXT:    ;;#ASMEND5075; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s45076; GFX900-NEXT:    ;;#ASMSTART5077; GFX900-NEXT:    ; use s[8:9]5078; GFX900-NEXT:    ;;#ASMEND5079; GFX900-NEXT:    s_setpc_b64 s[30:31]5080;5081; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_0_1:5082; GFX90A:       ; %bb.0:5083; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5084; GFX90A-NEXT:    ;;#ASMSTART5085; GFX90A-NEXT:    ; def s95086; GFX90A-NEXT:    ;;#ASMEND5087; GFX90A-NEXT:    ;;#ASMSTART5088; GFX90A-NEXT:    ; def s45089; GFX90A-NEXT:    ;;#ASMEND5090; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s45091; GFX90A-NEXT:    ;;#ASMSTART5092; GFX90A-NEXT:    ; use s[8:9]5093; GFX90A-NEXT:    ;;#ASMEND5094; GFX90A-NEXT:    s_setpc_b64 s[30:31]5095;5096; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_3_0_1:5097; GFX942:       ; %bb.0:5098; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5099; GFX942-NEXT:    ;;#ASMSTART5100; GFX942-NEXT:    ; def s95101; GFX942-NEXT:    ;;#ASMEND5102; GFX942-NEXT:    ;;#ASMSTART5103; GFX942-NEXT:    ; def s05104; GFX942-NEXT:    ;;#ASMEND5105; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s05106; GFX942-NEXT:    ;;#ASMSTART5107; GFX942-NEXT:    ; use s[8:9]5108; GFX942-NEXT:    ;;#ASMEND5109; GFX942-NEXT:    s_setpc_b64 s[30:31]5110  %vec0 = call <2 x i16> asm "; def $0", "=s"()5111  %vec1 = call <2 x i16> asm "; def $0", "=s"()5112  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 1>5113  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)5114  ret void5115}5116 5117define void @s_shuffle_v4i16_v2i16__3_3_2_1() {5118; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_2_1:5119; GFX900:       ; %bb.0:5120; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5121; GFX900-NEXT:    ;;#ASMSTART5122; GFX900-NEXT:    ; def s45123; GFX900-NEXT:    ;;#ASMEND5124; GFX900-NEXT:    ;;#ASMSTART5125; GFX900-NEXT:    ; def s55126; GFX900-NEXT:    ;;#ASMEND5127; GFX900-NEXT:    s_pack_lh_b32_b16 s9, s5, s45128; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s55129; GFX900-NEXT:    ;;#ASMSTART5130; GFX900-NEXT:    ; use s[8:9]5131; GFX900-NEXT:    ;;#ASMEND5132; GFX900-NEXT:    s_setpc_b64 s[30:31]5133;5134; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_2_1:5135; GFX90A:       ; %bb.0:5136; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5137; GFX90A-NEXT:    ;;#ASMSTART5138; GFX90A-NEXT:    ; def s45139; GFX90A-NEXT:    ;;#ASMEND5140; GFX90A-NEXT:    ;;#ASMSTART5141; GFX90A-NEXT:    ; def s55142; GFX90A-NEXT:    ;;#ASMEND5143; GFX90A-NEXT:    s_pack_lh_b32_b16 s9, s5, s45144; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s55145; GFX90A-NEXT:    ;;#ASMSTART5146; GFX90A-NEXT:    ; use s[8:9]5147; GFX90A-NEXT:    ;;#ASMEND5148; GFX90A-NEXT:    s_setpc_b64 s[30:31]5149;5150; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_3_2_1:5151; GFX942:       ; %bb.0:5152; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5153; GFX942-NEXT:    ;;#ASMSTART5154; GFX942-NEXT:    ; def s05155; GFX942-NEXT:    ;;#ASMEND5156; GFX942-NEXT:    ;;#ASMSTART5157; GFX942-NEXT:    ; def s15158; GFX942-NEXT:    ;;#ASMEND5159; GFX942-NEXT:    s_pack_lh_b32_b16 s9, s1, s05160; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s15161; GFX942-NEXT:    ;;#ASMSTART5162; GFX942-NEXT:    ; use s[8:9]5163; GFX942-NEXT:    ;;#ASMEND5164; GFX942-NEXT:    s_setpc_b64 s[30:31]5165  %vec0 = call <2 x i16> asm "; def $0", "=s"()5166  %vec1 = call <2 x i16> asm "; def $0", "=s"()5167  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 1>5168  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)5169  ret void5170}5171 5172define void @s_shuffle_v4i16_v2i16__u_2_2_2() {5173; GFX9-LABEL: s_shuffle_v4i16_v2i16__u_2_2_2:5174; GFX9:       ; %bb.0:5175; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5176; GFX9-NEXT:    ;;#ASMSTART5177; GFX9-NEXT:    ; use s[8:9]5178; GFX9-NEXT:    ;;#ASMEND5179; GFX9-NEXT:    s_setpc_b64 s[30:31]5180  %vec0 = call <2 x i16> asm "; def $0", "=s"()5181  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2>5182  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)5183  ret void5184}5185 5186define void @s_shuffle_v4i16_v2i16__0_2_2_2() {5187; GFX900-LABEL: s_shuffle_v4i16_v2i16__0_2_2_2:5188; GFX900:       ; %bb.0:5189; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5190; GFX900-NEXT:    ;;#ASMSTART5191; GFX900-NEXT:    ; def s85192; GFX900-NEXT:    ;;#ASMEND5193; GFX900-NEXT:    ;;#ASMSTART5194; GFX900-NEXT:    ; use s[8:9]5195; GFX900-NEXT:    ;;#ASMEND5196; GFX900-NEXT:    s_setpc_b64 s[30:31]5197;5198; GFX90A-LABEL: s_shuffle_v4i16_v2i16__0_2_2_2:5199; GFX90A:       ; %bb.0:5200; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5201; GFX90A-NEXT:    ;;#ASMSTART5202; GFX90A-NEXT:    ; def s85203; GFX90A-NEXT:    ;;#ASMEND5204; GFX90A-NEXT:    ;;#ASMSTART5205; GFX90A-NEXT:    ; use s[8:9]5206; GFX90A-NEXT:    ;;#ASMEND5207; GFX90A-NEXT:    s_setpc_b64 s[30:31]5208;5209; GFX942-LABEL: s_shuffle_v4i16_v2i16__0_2_2_2:5210; GFX942:       ; %bb.0:5211; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5212; GFX942-NEXT:    ;;#ASMSTART5213; GFX942-NEXT:    ; def s85214; GFX942-NEXT:    ;;#ASMEND5215; GFX942-NEXT:    s_nop 05216; GFX942-NEXT:    ;;#ASMSTART5217; GFX942-NEXT:    ; use s[8:9]5218; GFX942-NEXT:    ;;#ASMEND5219; GFX942-NEXT:    s_setpc_b64 s[30:31]5220  %vec0 = call <2 x i16> asm "; def $0", "=s"()5221  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2>5222  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)5223  ret void5224}5225 5226define void @s_shuffle_v4i16_v2i16__1_2_2_2() {5227; GFX900-LABEL: s_shuffle_v4i16_v2i16__1_2_2_2:5228; GFX900:       ; %bb.0:5229; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5230; GFX900-NEXT:    ;;#ASMSTART5231; GFX900-NEXT:    ; def s45232; GFX900-NEXT:    ;;#ASMEND5233; GFX900-NEXT:    s_lshr_b32 s8, s4, 165234; GFX900-NEXT:    ;;#ASMSTART5235; GFX900-NEXT:    ; use s[8:9]5236; GFX900-NEXT:    ;;#ASMEND5237; GFX900-NEXT:    s_setpc_b64 s[30:31]5238;5239; GFX90A-LABEL: s_shuffle_v4i16_v2i16__1_2_2_2:5240; GFX90A:       ; %bb.0:5241; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5242; GFX90A-NEXT:    ;;#ASMSTART5243; GFX90A-NEXT:    ; def s45244; GFX90A-NEXT:    ;;#ASMEND5245; GFX90A-NEXT:    s_lshr_b32 s8, s4, 165246; GFX90A-NEXT:    ;;#ASMSTART5247; GFX90A-NEXT:    ; use s[8:9]5248; GFX90A-NEXT:    ;;#ASMEND5249; GFX90A-NEXT:    s_setpc_b64 s[30:31]5250;5251; GFX942-LABEL: s_shuffle_v4i16_v2i16__1_2_2_2:5252; GFX942:       ; %bb.0:5253; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5254; GFX942-NEXT:    ;;#ASMSTART5255; GFX942-NEXT:    ; def s05256; GFX942-NEXT:    ;;#ASMEND5257; GFX942-NEXT:    s_lshr_b32 s8, s0, 165258; GFX942-NEXT:    ;;#ASMSTART5259; GFX942-NEXT:    ; use s[8:9]5260; GFX942-NEXT:    ;;#ASMEND5261; GFX942-NEXT:    s_setpc_b64 s[30:31]5262  %vec0 = call <2 x i16> asm "; def $0", "=s"()5263  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2>5264  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)5265  ret void5266}5267 5268define void @s_shuffle_v4i16_v2i16__2_2_2_2() {5269; GFX9-LABEL: s_shuffle_v4i16_v2i16__2_2_2_2:5270; GFX9:       ; %bb.0:5271; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5272; GFX9-NEXT:    ;;#ASMSTART5273; GFX9-NEXT:    ; use s[8:9]5274; GFX9-NEXT:    ;;#ASMEND5275; GFX9-NEXT:    s_setpc_b64 s[30:31]5276  %vec0 = call <2 x i16> asm "; def $0", "=s"()5277  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2>5278  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)5279  ret void5280}5281 5282define void @s_shuffle_v4i16_v2i16__3_2_2_2() {5283; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_2_2_2:5284; GFX900:       ; %bb.0:5285; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5286; GFX900-NEXT:    ;;#ASMSTART5287; GFX900-NEXT:    ; def s45288; GFX900-NEXT:    ;;#ASMEND5289; GFX900-NEXT:    s_lshr_b32 s5, s4, 165290; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s45291; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s45292; GFX900-NEXT:    ;;#ASMSTART5293; GFX900-NEXT:    ; use s[8:9]5294; GFX900-NEXT:    ;;#ASMEND5295; GFX900-NEXT:    s_setpc_b64 s[30:31]5296;5297; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_2_2_2:5298; GFX90A:       ; %bb.0:5299; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5300; GFX90A-NEXT:    ;;#ASMSTART5301; GFX90A-NEXT:    ; def s45302; GFX90A-NEXT:    ;;#ASMEND5303; GFX90A-NEXT:    s_lshr_b32 s5, s4, 165304; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s45305; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s45306; GFX90A-NEXT:    ;;#ASMSTART5307; GFX90A-NEXT:    ; use s[8:9]5308; GFX90A-NEXT:    ;;#ASMEND5309; GFX90A-NEXT:    s_setpc_b64 s[30:31]5310;5311; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_2_2_2:5312; GFX942:       ; %bb.0:5313; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5314; GFX942-NEXT:    ;;#ASMSTART5315; GFX942-NEXT:    ; def s05316; GFX942-NEXT:    ;;#ASMEND5317; GFX942-NEXT:    s_lshr_b32 s1, s0, 165318; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s05319; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s05320; GFX942-NEXT:    ;;#ASMSTART5321; GFX942-NEXT:    ; use s[8:9]5322; GFX942-NEXT:    ;;#ASMEND5323; GFX942-NEXT:    s_setpc_b64 s[30:31]5324  %vec0 = call <2 x i16> asm "; def $0", "=s"()5325  %vec1 = call <2 x i16> asm "; def $0", "=s"()5326  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 2, i32 2, i32 2>5327  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)5328  ret void5329}5330 5331define void @s_shuffle_v4i16_v2i16__3_u_2_2() {5332; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_u_2_2:5333; GFX900:       ; %bb.0:5334; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5335; GFX900-NEXT:    ;;#ASMSTART5336; GFX900-NEXT:    ; def s45337; GFX900-NEXT:    ;;#ASMEND5338; GFX900-NEXT:    s_lshr_b32 s8, s4, 165339; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s45340; GFX900-NEXT:    ;;#ASMSTART5341; GFX900-NEXT:    ; use s[8:9]5342; GFX900-NEXT:    ;;#ASMEND5343; GFX900-NEXT:    s_setpc_b64 s[30:31]5344;5345; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_u_2_2:5346; GFX90A:       ; %bb.0:5347; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5348; GFX90A-NEXT:    ;;#ASMSTART5349; GFX90A-NEXT:    ; def s45350; GFX90A-NEXT:    ;;#ASMEND5351; GFX90A-NEXT:    s_lshr_b32 s8, s4, 165352; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s45353; GFX90A-NEXT:    ;;#ASMSTART5354; GFX90A-NEXT:    ; use s[8:9]5355; GFX90A-NEXT:    ;;#ASMEND5356; GFX90A-NEXT:    s_setpc_b64 s[30:31]5357;5358; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_u_2_2:5359; GFX942:       ; %bb.0:5360; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5361; GFX942-NEXT:    ;;#ASMSTART5362; GFX942-NEXT:    ; def s05363; GFX942-NEXT:    ;;#ASMEND5364; GFX942-NEXT:    s_lshr_b32 s8, s0, 165365; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s05366; GFX942-NEXT:    ;;#ASMSTART5367; GFX942-NEXT:    ; use s[8:9]5368; GFX942-NEXT:    ;;#ASMEND5369; GFX942-NEXT:    s_setpc_b64 s[30:31]5370  %vec0 = call <2 x i16> asm "; def $0", "=s"()5371  %vec1 = call <2 x i16> asm "; def $0", "=s"()5372  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 poison, i32 2, i32 2>5373  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)5374  ret void5375}5376 5377define void @s_shuffle_v4i16_v2i16__3_0_2_2() {5378; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_0_2_2:5379; GFX900:       ; %bb.0:5380; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5381; GFX900-NEXT:    ;;#ASMSTART5382; GFX900-NEXT:    ; def s55383; GFX900-NEXT:    ;;#ASMEND5384; GFX900-NEXT:    s_lshr_b32 s6, s5, 165385; GFX900-NEXT:    ;;#ASMSTART5386; GFX900-NEXT:    ; def s45387; GFX900-NEXT:    ;;#ASMEND5388; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s6, s45389; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s5, s55390; GFX900-NEXT:    ;;#ASMSTART5391; GFX900-NEXT:    ; use s[8:9]5392; GFX900-NEXT:    ;;#ASMEND5393; GFX900-NEXT:    s_setpc_b64 s[30:31]5394;5395; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_0_2_2:5396; GFX90A:       ; %bb.0:5397; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5398; GFX90A-NEXT:    ;;#ASMSTART5399; GFX90A-NEXT:    ; def s55400; GFX90A-NEXT:    ;;#ASMEND5401; GFX90A-NEXT:    s_lshr_b32 s6, s5, 165402; GFX90A-NEXT:    ;;#ASMSTART5403; GFX90A-NEXT:    ; def s45404; GFX90A-NEXT:    ;;#ASMEND5405; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s6, s45406; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s5, s55407; GFX90A-NEXT:    ;;#ASMSTART5408; GFX90A-NEXT:    ; use s[8:9]5409; GFX90A-NEXT:    ;;#ASMEND5410; GFX90A-NEXT:    s_setpc_b64 s[30:31]5411;5412; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_0_2_2:5413; GFX942:       ; %bb.0:5414; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5415; GFX942-NEXT:    ;;#ASMSTART5416; GFX942-NEXT:    ; def s15417; GFX942-NEXT:    ;;#ASMEND5418; GFX942-NEXT:    s_lshr_b32 s2, s1, 165419; GFX942-NEXT:    ;;#ASMSTART5420; GFX942-NEXT:    ; def s05421; GFX942-NEXT:    ;;#ASMEND5422; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s2, s05423; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s1, s15424; GFX942-NEXT:    ;;#ASMSTART5425; GFX942-NEXT:    ; use s[8:9]5426; GFX942-NEXT:    ;;#ASMEND5427; GFX942-NEXT:    s_setpc_b64 s[30:31]5428  %vec0 = call <2 x i16> asm "; def $0", "=s"()5429  %vec1 = call <2 x i16> asm "; def $0", "=s"()5430  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 0, i32 2, i32 2>5431  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)5432  ret void5433}5434 5435define void @s_shuffle_v4i16_v2i16__3_1_2_2() {5436; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_1_2_2:5437; GFX900:       ; %bb.0:5438; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5439; GFX900-NEXT:    ;;#ASMSTART5440; GFX900-NEXT:    ; def s45441; GFX900-NEXT:    ;;#ASMEND5442; GFX900-NEXT:    ;;#ASMSTART5443; GFX900-NEXT:    ; def s55444; GFX900-NEXT:    ;;#ASMEND5445; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s45446; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s5, s55447; GFX900-NEXT:    ;;#ASMSTART5448; GFX900-NEXT:    ; use s[8:9]5449; GFX900-NEXT:    ;;#ASMEND5450; GFX900-NEXT:    s_setpc_b64 s[30:31]5451;5452; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_1_2_2:5453; GFX90A:       ; %bb.0:5454; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5455; GFX90A-NEXT:    ;;#ASMSTART5456; GFX90A-NEXT:    ; def s45457; GFX90A-NEXT:    ;;#ASMEND5458; GFX90A-NEXT:    ;;#ASMSTART5459; GFX90A-NEXT:    ; def s55460; GFX90A-NEXT:    ;;#ASMEND5461; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s45462; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s5, s55463; GFX90A-NEXT:    ;;#ASMSTART5464; GFX90A-NEXT:    ; use s[8:9]5465; GFX90A-NEXT:    ;;#ASMEND5466; GFX90A-NEXT:    s_setpc_b64 s[30:31]5467;5468; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_1_2_2:5469; GFX942:       ; %bb.0:5470; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5471; GFX942-NEXT:    ;;#ASMSTART5472; GFX942-NEXT:    ; def s05473; GFX942-NEXT:    ;;#ASMEND5474; GFX942-NEXT:    ;;#ASMSTART5475; GFX942-NEXT:    ; def s15476; GFX942-NEXT:    ;;#ASMEND5477; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s05478; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s1, s15479; GFX942-NEXT:    ;;#ASMSTART5480; GFX942-NEXT:    ; use s[8:9]5481; GFX942-NEXT:    ;;#ASMEND5482; GFX942-NEXT:    s_setpc_b64 s[30:31]5483  %vec0 = call <2 x i16> asm "; def $0", "=s"()5484  %vec1 = call <2 x i16> asm "; def $0", "=s"()5485  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 1, i32 2, i32 2>5486  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)5487  ret void5488}5489 5490define void @s_shuffle_v4i16_v2i16__3_3_2_2() {5491; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_2_2:5492; GFX900:       ; %bb.0:5493; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5494; GFX900-NEXT:    ;;#ASMSTART5495; GFX900-NEXT:    ; def s45496; GFX900-NEXT:    ;;#ASMEND5497; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s45498; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s45499; GFX900-NEXT:    ;;#ASMSTART5500; GFX900-NEXT:    ; use s[8:9]5501; GFX900-NEXT:    ;;#ASMEND5502; GFX900-NEXT:    s_setpc_b64 s[30:31]5503;5504; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_2_2:5505; GFX90A:       ; %bb.0:5506; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5507; GFX90A-NEXT:    ;;#ASMSTART5508; GFX90A-NEXT:    ; def s45509; GFX90A-NEXT:    ;;#ASMEND5510; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s45511; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s45512; GFX90A-NEXT:    ;;#ASMSTART5513; GFX90A-NEXT:    ; use s[8:9]5514; GFX90A-NEXT:    ;;#ASMEND5515; GFX90A-NEXT:    s_setpc_b64 s[30:31]5516;5517; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_3_2_2:5518; GFX942:       ; %bb.0:5519; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5520; GFX942-NEXT:    ;;#ASMSTART5521; GFX942-NEXT:    ; def s05522; GFX942-NEXT:    ;;#ASMEND5523; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s05524; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s05525; GFX942-NEXT:    ;;#ASMSTART5526; GFX942-NEXT:    ; use s[8:9]5527; GFX942-NEXT:    ;;#ASMEND5528; GFX942-NEXT:    s_setpc_b64 s[30:31]5529  %vec0 = call <2 x i16> asm "; def $0", "=s"()5530  %vec1 = call <2 x i16> asm "; def $0", "=s"()5531  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 2>5532  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)5533  ret void5534}5535 5536define void @s_shuffle_v4i16_v2i16__3_3_u_2() {5537; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_u_2:5538; GFX900:       ; %bb.0:5539; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5540; GFX900-NEXT:    ;;#ASMSTART5541; GFX900-NEXT:    ; def s45542; GFX900-NEXT:    ;;#ASMEND5543; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s45544; GFX900-NEXT:    s_lshl_b32 s9, s4, 165545; GFX900-NEXT:    ;;#ASMSTART5546; GFX900-NEXT:    ; use s[8:9]5547; GFX900-NEXT:    ;;#ASMEND5548; GFX900-NEXT:    s_setpc_b64 s[30:31]5549;5550; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_u_2:5551; GFX90A:       ; %bb.0:5552; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5553; GFX90A-NEXT:    ;;#ASMSTART5554; GFX90A-NEXT:    ; def s45555; GFX90A-NEXT:    ;;#ASMEND5556; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s45557; GFX90A-NEXT:    s_lshl_b32 s9, s4, 165558; GFX90A-NEXT:    ;;#ASMSTART5559; GFX90A-NEXT:    ; use s[8:9]5560; GFX90A-NEXT:    ;;#ASMEND5561; GFX90A-NEXT:    s_setpc_b64 s[30:31]5562;5563; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_3_u_2:5564; GFX942:       ; %bb.0:5565; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5566; GFX942-NEXT:    ;;#ASMSTART5567; GFX942-NEXT:    ; def s05568; GFX942-NEXT:    ;;#ASMEND5569; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s05570; GFX942-NEXT:    s_lshl_b32 s9, s0, 165571; GFX942-NEXT:    ;;#ASMSTART5572; GFX942-NEXT:    ; use s[8:9]5573; GFX942-NEXT:    ;;#ASMEND5574; GFX942-NEXT:    s_setpc_b64 s[30:31]5575  %vec0 = call <2 x i16> asm "; def $0", "=s"()5576  %vec1 = call <2 x i16> asm "; def $0", "=s"()5577  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 2>5578  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)5579  ret void5580}5581 5582define void @s_shuffle_v4i16_v2i16__3_3_0_2() {5583; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_0_2:5584; GFX900:       ; %bb.0:5585; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5586; GFX900-NEXT:    ;;#ASMSTART5587; GFX900-NEXT:    ; def s45588; GFX900-NEXT:    ;;#ASMEND5589; GFX900-NEXT:    ;;#ASMSTART5590; GFX900-NEXT:    ; def s55591; GFX900-NEXT:    ;;#ASMEND5592; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s55593; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s55594; GFX900-NEXT:    ;;#ASMSTART5595; GFX900-NEXT:    ; use s[8:9]5596; GFX900-NEXT:    ;;#ASMEND5597; GFX900-NEXT:    s_setpc_b64 s[30:31]5598;5599; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_0_2:5600; GFX90A:       ; %bb.0:5601; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5602; GFX90A-NEXT:    ;;#ASMSTART5603; GFX90A-NEXT:    ; def s45604; GFX90A-NEXT:    ;;#ASMEND5605; GFX90A-NEXT:    ;;#ASMSTART5606; GFX90A-NEXT:    ; def s55607; GFX90A-NEXT:    ;;#ASMEND5608; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s55609; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s55610; GFX90A-NEXT:    ;;#ASMSTART5611; GFX90A-NEXT:    ; use s[8:9]5612; GFX90A-NEXT:    ;;#ASMEND5613; GFX90A-NEXT:    s_setpc_b64 s[30:31]5614;5615; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_3_0_2:5616; GFX942:       ; %bb.0:5617; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5618; GFX942-NEXT:    ;;#ASMSTART5619; GFX942-NEXT:    ; def s05620; GFX942-NEXT:    ;;#ASMEND5621; GFX942-NEXT:    ;;#ASMSTART5622; GFX942-NEXT:    ; def s15623; GFX942-NEXT:    ;;#ASMEND5624; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s15625; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s15626; GFX942-NEXT:    ;;#ASMSTART5627; GFX942-NEXT:    ; use s[8:9]5628; GFX942-NEXT:    ;;#ASMEND5629; GFX942-NEXT:    s_setpc_b64 s[30:31]5630  %vec0 = call <2 x i16> asm "; def $0", "=s"()5631  %vec1 = call <2 x i16> asm "; def $0", "=s"()5632  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 2>5633  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)5634  ret void5635}5636 5637define void @s_shuffle_v4i16_v2i16__3_3_1_2() {5638; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_1_2:5639; GFX900:       ; %bb.0:5640; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5641; GFX900-NEXT:    ;;#ASMSTART5642; GFX900-NEXT:    ; def s45643; GFX900-NEXT:    ;;#ASMEND5644; GFX900-NEXT:    s_lshr_b32 s4, s4, 165645; GFX900-NEXT:    ;;#ASMSTART5646; GFX900-NEXT:    ; def s55647; GFX900-NEXT:    ;;#ASMEND5648; GFX900-NEXT:    s_pack_ll_b32_b16 s9, s4, s55649; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s55650; GFX900-NEXT:    ;;#ASMSTART5651; GFX900-NEXT:    ; use s[8:9]5652; GFX900-NEXT:    ;;#ASMEND5653; GFX900-NEXT:    s_setpc_b64 s[30:31]5654;5655; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_1_2:5656; GFX90A:       ; %bb.0:5657; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5658; GFX90A-NEXT:    ;;#ASMSTART5659; GFX90A-NEXT:    ; def s45660; GFX90A-NEXT:    ;;#ASMEND5661; GFX90A-NEXT:    s_lshr_b32 s4, s4, 165662; GFX90A-NEXT:    ;;#ASMSTART5663; GFX90A-NEXT:    ; def s55664; GFX90A-NEXT:    ;;#ASMEND5665; GFX90A-NEXT:    s_pack_ll_b32_b16 s9, s4, s55666; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s55667; GFX90A-NEXT:    ;;#ASMSTART5668; GFX90A-NEXT:    ; use s[8:9]5669; GFX90A-NEXT:    ;;#ASMEND5670; GFX90A-NEXT:    s_setpc_b64 s[30:31]5671;5672; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_3_1_2:5673; GFX942:       ; %bb.0:5674; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5675; GFX942-NEXT:    ;;#ASMSTART5676; GFX942-NEXT:    ; def s05677; GFX942-NEXT:    ;;#ASMEND5678; GFX942-NEXT:    s_lshr_b32 s0, s0, 165679; GFX942-NEXT:    ;;#ASMSTART5680; GFX942-NEXT:    ; def s15681; GFX942-NEXT:    ;;#ASMEND5682; GFX942-NEXT:    s_pack_ll_b32_b16 s9, s0, s15683; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s15684; GFX942-NEXT:    ;;#ASMSTART5685; GFX942-NEXT:    ; use s[8:9]5686; GFX942-NEXT:    ;;#ASMEND5687; GFX942-NEXT:    s_setpc_b64 s[30:31]5688  %vec0 = call <2 x i16> asm "; def $0", "=s"()5689  %vec1 = call <2 x i16> asm "; def $0", "=s"()5690  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 2>5691  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)5692  ret void5693}5694 5695define void @s_shuffle_v4i16_v2i16__u_3_3_3() {5696; GFX9-LABEL: s_shuffle_v4i16_v2i16__u_3_3_3:5697; GFX9:       ; %bb.0:5698; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5699; GFX9-NEXT:    ;;#ASMSTART5700; GFX9-NEXT:    ; def s85701; GFX9-NEXT:    ;;#ASMEND5702; GFX9-NEXT:    s_pack_hh_b32_b16 s9, s8, s85703; GFX9-NEXT:    ;;#ASMSTART5704; GFX9-NEXT:    ; use s[8:9]5705; GFX9-NEXT:    ;;#ASMEND5706; GFX9-NEXT:    s_setpc_b64 s[30:31]5707  %vec0 = call <2 x i16> asm "; def $0", "=s"()5708  %vec1 = call <2 x i16> asm "; def $0", "=s"()5709  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 poison, i32 3, i32 3, i32 3>5710  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)5711  ret void5712}5713 5714define void @s_shuffle_v4i16_v2i16__0_3_3_3() {5715; GFX900-LABEL: s_shuffle_v4i16_v2i16__0_3_3_3:5716; GFX900:       ; %bb.0:5717; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5718; GFX900-NEXT:    ;;#ASMSTART5719; GFX900-NEXT:    ; def s45720; GFX900-NEXT:    ;;#ASMEND5721; GFX900-NEXT:    ;;#ASMSTART5722; GFX900-NEXT:    ; def s55723; GFX900-NEXT:    ;;#ASMEND5724; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s4, s55725; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s5, s55726; GFX900-NEXT:    ;;#ASMSTART5727; GFX900-NEXT:    ; use s[8:9]5728; GFX900-NEXT:    ;;#ASMEND5729; GFX900-NEXT:    s_setpc_b64 s[30:31]5730;5731; GFX90A-LABEL: s_shuffle_v4i16_v2i16__0_3_3_3:5732; GFX90A:       ; %bb.0:5733; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5734; GFX90A-NEXT:    ;;#ASMSTART5735; GFX90A-NEXT:    ; def s45736; GFX90A-NEXT:    ;;#ASMEND5737; GFX90A-NEXT:    ;;#ASMSTART5738; GFX90A-NEXT:    ; def s55739; GFX90A-NEXT:    ;;#ASMEND5740; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s4, s55741; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s5, s55742; GFX90A-NEXT:    ;;#ASMSTART5743; GFX90A-NEXT:    ; use s[8:9]5744; GFX90A-NEXT:    ;;#ASMEND5745; GFX90A-NEXT:    s_setpc_b64 s[30:31]5746;5747; GFX942-LABEL: s_shuffle_v4i16_v2i16__0_3_3_3:5748; GFX942:       ; %bb.0:5749; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5750; GFX942-NEXT:    ;;#ASMSTART5751; GFX942-NEXT:    ; def s05752; GFX942-NEXT:    ;;#ASMEND5753; GFX942-NEXT:    ;;#ASMSTART5754; GFX942-NEXT:    ; def s15755; GFX942-NEXT:    ;;#ASMEND5756; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s0, s15757; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s1, s15758; GFX942-NEXT:    ;;#ASMSTART5759; GFX942-NEXT:    ; use s[8:9]5760; GFX942-NEXT:    ;;#ASMEND5761; GFX942-NEXT:    s_setpc_b64 s[30:31]5762  %vec0 = call <2 x i16> asm "; def $0", "=s"()5763  %vec1 = call <2 x i16> asm "; def $0", "=s"()5764  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 0, i32 3, i32 3, i32 3>5765  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)5766  ret void5767}5768 5769define void @s_shuffle_v4i16_v2i16__1_3_3_3() {5770; GFX900-LABEL: s_shuffle_v4i16_v2i16__1_3_3_3:5771; GFX900:       ; %bb.0:5772; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5773; GFX900-NEXT:    ;;#ASMSTART5774; GFX900-NEXT:    ; def s45775; GFX900-NEXT:    ;;#ASMEND5776; GFX900-NEXT:    ;;#ASMSTART5777; GFX900-NEXT:    ; def s55778; GFX900-NEXT:    ;;#ASMEND5779; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s55780; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s5, s55781; GFX900-NEXT:    ;;#ASMSTART5782; GFX900-NEXT:    ; use s[8:9]5783; GFX900-NEXT:    ;;#ASMEND5784; GFX900-NEXT:    s_setpc_b64 s[30:31]5785;5786; GFX90A-LABEL: s_shuffle_v4i16_v2i16__1_3_3_3:5787; GFX90A:       ; %bb.0:5788; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5789; GFX90A-NEXT:    ;;#ASMSTART5790; GFX90A-NEXT:    ; def s45791; GFX90A-NEXT:    ;;#ASMEND5792; GFX90A-NEXT:    ;;#ASMSTART5793; GFX90A-NEXT:    ; def s55794; GFX90A-NEXT:    ;;#ASMEND5795; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s55796; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s5, s55797; GFX90A-NEXT:    ;;#ASMSTART5798; GFX90A-NEXT:    ; use s[8:9]5799; GFX90A-NEXT:    ;;#ASMEND5800; GFX90A-NEXT:    s_setpc_b64 s[30:31]5801;5802; GFX942-LABEL: s_shuffle_v4i16_v2i16__1_3_3_3:5803; GFX942:       ; %bb.0:5804; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5805; GFX942-NEXT:    ;;#ASMSTART5806; GFX942-NEXT:    ; def s05807; GFX942-NEXT:    ;;#ASMEND5808; GFX942-NEXT:    ;;#ASMSTART5809; GFX942-NEXT:    ; def s15810; GFX942-NEXT:    ;;#ASMEND5811; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s15812; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s1, s15813; GFX942-NEXT:    ;;#ASMSTART5814; GFX942-NEXT:    ; use s[8:9]5815; GFX942-NEXT:    ;;#ASMEND5816; GFX942-NEXT:    s_setpc_b64 s[30:31]5817  %vec0 = call <2 x i16> asm "; def $0", "=s"()5818  %vec1 = call <2 x i16> asm "; def $0", "=s"()5819  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 1, i32 3, i32 3, i32 3>5820  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)5821  ret void5822}5823 5824define void @s_shuffle_v4i16_v2i16__2_3_3_3() {5825; GFX9-LABEL: s_shuffle_v4i16_v2i16__2_3_3_3:5826; GFX9:       ; %bb.0:5827; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5828; GFX9-NEXT:    ;;#ASMSTART5829; GFX9-NEXT:    ; def s85830; GFX9-NEXT:    ;;#ASMEND5831; GFX9-NEXT:    s_pack_hh_b32_b16 s9, s8, s85832; GFX9-NEXT:    ;;#ASMSTART5833; GFX9-NEXT:    ; use s[8:9]5834; GFX9-NEXT:    ;;#ASMEND5835; GFX9-NEXT:    s_setpc_b64 s[30:31]5836  %vec0 = call <2 x i16> asm "; def $0", "=s"()5837  %vec1 = call <2 x i16> asm "; def $0", "=s"()5838  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 2, i32 3, i32 3, i32 3>5839  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)5840  ret void5841}5842 5843define void @s_shuffle_v4i16_v2i16__3_u_3_3() {5844; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_u_3_3:5845; GFX900:       ; %bb.0:5846; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5847; GFX900-NEXT:    ;;#ASMSTART5848; GFX900-NEXT:    ; def s45849; GFX900-NEXT:    ;;#ASMEND5850; GFX900-NEXT:    s_lshr_b32 s8, s4, 165851; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s4, s45852; GFX900-NEXT:    ;;#ASMSTART5853; GFX900-NEXT:    ; use s[8:9]5854; GFX900-NEXT:    ;;#ASMEND5855; GFX900-NEXT:    s_setpc_b64 s[30:31]5856;5857; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_u_3_3:5858; GFX90A:       ; %bb.0:5859; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5860; GFX90A-NEXT:    ;;#ASMSTART5861; GFX90A-NEXT:    ; def s45862; GFX90A-NEXT:    ;;#ASMEND5863; GFX90A-NEXT:    s_lshr_b32 s8, s4, 165864; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s4, s45865; GFX90A-NEXT:    ;;#ASMSTART5866; GFX90A-NEXT:    ; use s[8:9]5867; GFX90A-NEXT:    ;;#ASMEND5868; GFX90A-NEXT:    s_setpc_b64 s[30:31]5869;5870; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_u_3_3:5871; GFX942:       ; %bb.0:5872; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5873; GFX942-NEXT:    ;;#ASMSTART5874; GFX942-NEXT:    ; def s05875; GFX942-NEXT:    ;;#ASMEND5876; GFX942-NEXT:    s_lshr_b32 s8, s0, 165877; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s0, s05878; GFX942-NEXT:    ;;#ASMSTART5879; GFX942-NEXT:    ; use s[8:9]5880; GFX942-NEXT:    ;;#ASMEND5881; GFX942-NEXT:    s_setpc_b64 s[30:31]5882  %vec0 = call <2 x i16> asm "; def $0", "=s"()5883  %vec1 = call <2 x i16> asm "; def $0", "=s"()5884  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 poison, i32 3, i32 3>5885  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)5886  ret void5887}5888 5889define void @s_shuffle_v4i16_v2i16__3_0_3_3() {5890; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_0_3_3:5891; GFX900:       ; %bb.0:5892; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5893; GFX900-NEXT:    ;;#ASMSTART5894; GFX900-NEXT:    ; def s55895; GFX900-NEXT:    ;;#ASMEND5896; GFX900-NEXT:    s_lshr_b32 s6, s5, 165897; GFX900-NEXT:    ;;#ASMSTART5898; GFX900-NEXT:    ; def s45899; GFX900-NEXT:    ;;#ASMEND5900; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s6, s45901; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s5, s55902; GFX900-NEXT:    ;;#ASMSTART5903; GFX900-NEXT:    ; use s[8:9]5904; GFX900-NEXT:    ;;#ASMEND5905; GFX900-NEXT:    s_setpc_b64 s[30:31]5906;5907; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_0_3_3:5908; GFX90A:       ; %bb.0:5909; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5910; GFX90A-NEXT:    ;;#ASMSTART5911; GFX90A-NEXT:    ; def s55912; GFX90A-NEXT:    ;;#ASMEND5913; GFX90A-NEXT:    s_lshr_b32 s6, s5, 165914; GFX90A-NEXT:    ;;#ASMSTART5915; GFX90A-NEXT:    ; def s45916; GFX90A-NEXT:    ;;#ASMEND5917; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s6, s45918; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s5, s55919; GFX90A-NEXT:    ;;#ASMSTART5920; GFX90A-NEXT:    ; use s[8:9]5921; GFX90A-NEXT:    ;;#ASMEND5922; GFX90A-NEXT:    s_setpc_b64 s[30:31]5923;5924; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_0_3_3:5925; GFX942:       ; %bb.0:5926; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5927; GFX942-NEXT:    ;;#ASMSTART5928; GFX942-NEXT:    ; def s15929; GFX942-NEXT:    ;;#ASMEND5930; GFX942-NEXT:    s_lshr_b32 s2, s1, 165931; GFX942-NEXT:    ;;#ASMSTART5932; GFX942-NEXT:    ; def s05933; GFX942-NEXT:    ;;#ASMEND5934; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s2, s05935; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s1, s15936; GFX942-NEXT:    ;;#ASMSTART5937; GFX942-NEXT:    ; use s[8:9]5938; GFX942-NEXT:    ;;#ASMEND5939; GFX942-NEXT:    s_setpc_b64 s[30:31]5940  %vec0 = call <2 x i16> asm "; def $0", "=s"()5941  %vec1 = call <2 x i16> asm "; def $0", "=s"()5942  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 0, i32 3, i32 3>5943  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)5944  ret void5945}5946 5947define void @s_shuffle_v4i16_v2i16__3_1_3_3() {5948; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_1_3_3:5949; GFX900:       ; %bb.0:5950; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5951; GFX900-NEXT:    ;;#ASMSTART5952; GFX900-NEXT:    ; def s45953; GFX900-NEXT:    ;;#ASMEND5954; GFX900-NEXT:    ;;#ASMSTART5955; GFX900-NEXT:    ; def s55956; GFX900-NEXT:    ;;#ASMEND5957; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s45958; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s5, s55959; GFX900-NEXT:    ;;#ASMSTART5960; GFX900-NEXT:    ; use s[8:9]5961; GFX900-NEXT:    ;;#ASMEND5962; GFX900-NEXT:    s_setpc_b64 s[30:31]5963;5964; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_1_3_3:5965; GFX90A:       ; %bb.0:5966; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5967; GFX90A-NEXT:    ;;#ASMSTART5968; GFX90A-NEXT:    ; def s45969; GFX90A-NEXT:    ;;#ASMEND5970; GFX90A-NEXT:    ;;#ASMSTART5971; GFX90A-NEXT:    ; def s55972; GFX90A-NEXT:    ;;#ASMEND5973; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s45974; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s5, s55975; GFX90A-NEXT:    ;;#ASMSTART5976; GFX90A-NEXT:    ; use s[8:9]5977; GFX90A-NEXT:    ;;#ASMEND5978; GFX90A-NEXT:    s_setpc_b64 s[30:31]5979;5980; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_1_3_3:5981; GFX942:       ; %bb.0:5982; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5983; GFX942-NEXT:    ;;#ASMSTART5984; GFX942-NEXT:    ; def s05985; GFX942-NEXT:    ;;#ASMEND5986; GFX942-NEXT:    ;;#ASMSTART5987; GFX942-NEXT:    ; def s15988; GFX942-NEXT:    ;;#ASMEND5989; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s05990; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s1, s15991; GFX942-NEXT:    ;;#ASMSTART5992; GFX942-NEXT:    ; use s[8:9]5993; GFX942-NEXT:    ;;#ASMEND5994; GFX942-NEXT:    s_setpc_b64 s[30:31]5995  %vec0 = call <2 x i16> asm "; def $0", "=s"()5996  %vec1 = call <2 x i16> asm "; def $0", "=s"()5997  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 1, i32 3, i32 3>5998  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)5999  ret void6000}6001 6002define void @s_shuffle_v4i16_v2i16__3_2_3_3() {6003; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_2_3_3:6004; GFX900:       ; %bb.0:6005; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6006; GFX900-NEXT:    ;;#ASMSTART6007; GFX900-NEXT:    ; def s46008; GFX900-NEXT:    ;;#ASMEND6009; GFX900-NEXT:    s_lshr_b32 s5, s4, 166010; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s46011; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s4, s46012; GFX900-NEXT:    ;;#ASMSTART6013; GFX900-NEXT:    ; use s[8:9]6014; GFX900-NEXT:    ;;#ASMEND6015; GFX900-NEXT:    s_setpc_b64 s[30:31]6016;6017; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_2_3_3:6018; GFX90A:       ; %bb.0:6019; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6020; GFX90A-NEXT:    ;;#ASMSTART6021; GFX90A-NEXT:    ; def s46022; GFX90A-NEXT:    ;;#ASMEND6023; GFX90A-NEXT:    s_lshr_b32 s5, s4, 166024; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s46025; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s4, s46026; GFX90A-NEXT:    ;;#ASMSTART6027; GFX90A-NEXT:    ; use s[8:9]6028; GFX90A-NEXT:    ;;#ASMEND6029; GFX90A-NEXT:    s_setpc_b64 s[30:31]6030;6031; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_2_3_3:6032; GFX942:       ; %bb.0:6033; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6034; GFX942-NEXT:    ;;#ASMSTART6035; GFX942-NEXT:    ; def s06036; GFX942-NEXT:    ;;#ASMEND6037; GFX942-NEXT:    s_lshr_b32 s1, s0, 166038; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s06039; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s0, s06040; GFX942-NEXT:    ;;#ASMSTART6041; GFX942-NEXT:    ; use s[8:9]6042; GFX942-NEXT:    ;;#ASMEND6043; GFX942-NEXT:    s_setpc_b64 s[30:31]6044  %vec0 = call <2 x i16> asm "; def $0", "=s"()6045  %vec1 = call <2 x i16> asm "; def $0", "=s"()6046  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 2, i32 3, i32 3>6047  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)6048  ret void6049}6050 6051define void @s_shuffle_v4i16_v2i16__3_3_u_3() {6052; GFX9-LABEL: s_shuffle_v4i16_v2i16__3_3_u_3:6053; GFX9:       ; %bb.0:6054; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6055; GFX9-NEXT:    ;;#ASMSTART6056; GFX9-NEXT:    ; def s96057; GFX9-NEXT:    ;;#ASMEND6058; GFX9-NEXT:    s_pack_hh_b32_b16 s8, s9, s96059; GFX9-NEXT:    ;;#ASMSTART6060; GFX9-NEXT:    ; use s[8:9]6061; GFX9-NEXT:    ;;#ASMEND6062; GFX9-NEXT:    s_setpc_b64 s[30:31]6063  %vec0 = call <2 x i16> asm "; def $0", "=s"()6064  %vec1 = call <2 x i16> asm "; def $0", "=s"()6065  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 3>6066  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)6067  ret void6068}6069 6070define void @s_shuffle_v4i16_v2i16__3_3_0_3() {6071; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_0_3:6072; GFX900:       ; %bb.0:6073; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6074; GFX900-NEXT:    ;;#ASMSTART6075; GFX900-NEXT:    ; def s46076; GFX900-NEXT:    ;;#ASMEND6077; GFX900-NEXT:    ;;#ASMSTART6078; GFX900-NEXT:    ; def s56079; GFX900-NEXT:    ;;#ASMEND6080; GFX900-NEXT:    s_pack_lh_b32_b16 s9, s4, s56081; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s56082; GFX900-NEXT:    ;;#ASMSTART6083; GFX900-NEXT:    ; use s[8:9]6084; GFX900-NEXT:    ;;#ASMEND6085; GFX900-NEXT:    s_setpc_b64 s[30:31]6086;6087; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_0_3:6088; GFX90A:       ; %bb.0:6089; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6090; GFX90A-NEXT:    ;;#ASMSTART6091; GFX90A-NEXT:    ; def s46092; GFX90A-NEXT:    ;;#ASMEND6093; GFX90A-NEXT:    ;;#ASMSTART6094; GFX90A-NEXT:    ; def s56095; GFX90A-NEXT:    ;;#ASMEND6096; GFX90A-NEXT:    s_pack_lh_b32_b16 s9, s4, s56097; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s56098; GFX90A-NEXT:    ;;#ASMSTART6099; GFX90A-NEXT:    ; use s[8:9]6100; GFX90A-NEXT:    ;;#ASMEND6101; GFX90A-NEXT:    s_setpc_b64 s[30:31]6102;6103; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_3_0_3:6104; GFX942:       ; %bb.0:6105; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6106; GFX942-NEXT:    ;;#ASMSTART6107; GFX942-NEXT:    ; def s06108; GFX942-NEXT:    ;;#ASMEND6109; GFX942-NEXT:    ;;#ASMSTART6110; GFX942-NEXT:    ; def s16111; GFX942-NEXT:    ;;#ASMEND6112; GFX942-NEXT:    s_pack_lh_b32_b16 s9, s0, s16113; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s16114; GFX942-NEXT:    ;;#ASMSTART6115; GFX942-NEXT:    ; use s[8:9]6116; GFX942-NEXT:    ;;#ASMEND6117; GFX942-NEXT:    s_setpc_b64 s[30:31]6118  %vec0 = call <2 x i16> asm "; def $0", "=s"()6119  %vec1 = call <2 x i16> asm "; def $0", "=s"()6120  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 3>6121  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)6122  ret void6123}6124 6125define void @s_shuffle_v4i16_v2i16__3_3_1_3() {6126; GFX900-LABEL: s_shuffle_v4i16_v2i16__3_3_1_3:6127; GFX900:       ; %bb.0:6128; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6129; GFX900-NEXT:    ;;#ASMSTART6130; GFX900-NEXT:    ; def s46131; GFX900-NEXT:    ;;#ASMEND6132; GFX900-NEXT:    ;;#ASMSTART6133; GFX900-NEXT:    ; def s56134; GFX900-NEXT:    ;;#ASMEND6135; GFX900-NEXT:    s_pack_hh_b32_b16 s9, s4, s56136; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s56137; GFX900-NEXT:    ;;#ASMSTART6138; GFX900-NEXT:    ; use s[8:9]6139; GFX900-NEXT:    ;;#ASMEND6140; GFX900-NEXT:    s_setpc_b64 s[30:31]6141;6142; GFX90A-LABEL: s_shuffle_v4i16_v2i16__3_3_1_3:6143; GFX90A:       ; %bb.0:6144; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6145; GFX90A-NEXT:    ;;#ASMSTART6146; GFX90A-NEXT:    ; def s46147; GFX90A-NEXT:    ;;#ASMEND6148; GFX90A-NEXT:    ;;#ASMSTART6149; GFX90A-NEXT:    ; def s56150; GFX90A-NEXT:    ;;#ASMEND6151; GFX90A-NEXT:    s_pack_hh_b32_b16 s9, s4, s56152; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s56153; GFX90A-NEXT:    ;;#ASMSTART6154; GFX90A-NEXT:    ; use s[8:9]6155; GFX90A-NEXT:    ;;#ASMEND6156; GFX90A-NEXT:    s_setpc_b64 s[30:31]6157;6158; GFX942-LABEL: s_shuffle_v4i16_v2i16__3_3_1_3:6159; GFX942:       ; %bb.0:6160; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6161; GFX942-NEXT:    ;;#ASMSTART6162; GFX942-NEXT:    ; def s06163; GFX942-NEXT:    ;;#ASMEND6164; GFX942-NEXT:    ;;#ASMSTART6165; GFX942-NEXT:    ; def s16166; GFX942-NEXT:    ;;#ASMEND6167; GFX942-NEXT:    s_pack_hh_b32_b16 s9, s0, s16168; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s16169; GFX942-NEXT:    ;;#ASMSTART6170; GFX942-NEXT:    ; use s[8:9]6171; GFX942-NEXT:    ;;#ASMEND6172; GFX942-NEXT:    s_setpc_b64 s[30:31]6173  %vec0 = call <2 x i16> asm "; def $0", "=s"()6174  %vec1 = call <2 x i16> asm "; def $0", "=s"()6175  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 3>6176  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)6177  ret void6178}6179 6180define void @s_shuffle_v4i16_v2i16__3_3_2_3() {6181; GFX9-LABEL: s_shuffle_v4i16_v2i16__3_3_2_3:6182; GFX9:       ; %bb.0:6183; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6184; GFX9-NEXT:    ;;#ASMSTART6185; GFX9-NEXT:    ; def s96186; GFX9-NEXT:    ;;#ASMEND6187; GFX9-NEXT:    s_pack_hh_b32_b16 s8, s9, s96188; GFX9-NEXT:    ;;#ASMSTART6189; GFX9-NEXT:    ; use s[8:9]6190; GFX9-NEXT:    ;;#ASMEND6191; GFX9-NEXT:    s_setpc_b64 s[30:31]6192  %vec0 = call <2 x i16> asm "; def $0", "=s"()6193  %vec1 = call <2 x i16> asm "; def $0", "=s"()6194  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 3>6195  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %shuf)6196  ret void6197}6198;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:6199; GFX90APLUS: {{.*}}6200