brintos

brintos / llvm-project-archived public Read only

0
0
Text · 144.1 KiB · 7d5ba7c Raw
3965 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9,GFX900 %s3; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX90A %s4; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx942 < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX942 %s5 6 7define void @v_shuffle_v3i16_v2i16__u_u_u(ptr addrspace(1) inreg %ptr) {8; GFX9-LABEL: v_shuffle_v3i16_v2i16__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, <3 x i32> poison14  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 815  ret void16}17 18define void @v_shuffle_v3i16_v2i16__0_u_u(ptr addrspace(1) inreg %ptr) {19; GFX900-LABEL: v_shuffle_v3i16_v2i16__0_u_u:20; GFX900:       ; %bb.0:21; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22; GFX900-NEXT:    v_mov_b32_e32 v0, 023; GFX900-NEXT:    ;;#ASMSTART24; GFX900-NEXT:    ; def v125; GFX900-NEXT:    ;;#ASMEND26; GFX900-NEXT:    global_store_dword v0, v1, 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_v3i16_v2i16__0_u_u:31; GFX90A:       ; %bb.0:32; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)33; GFX90A-NEXT:    v_mov_b32_e32 v0, 034; GFX90A-NEXT:    ;;#ASMSTART35; GFX90A-NEXT:    ; def v136; GFX90A-NEXT:    ;;#ASMEND37; GFX90A-NEXT:    global_store_dword v0, v1, 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_v3i16_v2i16__0_u_u:42; GFX942:       ; %bb.0:43; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)44; GFX942-NEXT:    v_mov_b32_e32 v0, 045; GFX942-NEXT:    ;;#ASMSTART46; GFX942-NEXT:    ; def v147; GFX942-NEXT:    ;;#ASMEND48; GFX942-NEXT:    global_store_dword v0, v1, 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, <3 x i32> <i32 0, i32 poison, i32 poison>53  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 854  ret void55}56 57define void @v_shuffle_v3i16_v2i16__1_u_u(ptr addrspace(1) inreg %ptr) {58; GFX900-LABEL: v_shuffle_v3i16_v2i16__1_u_u:59; GFX900:       ; %bb.0:60; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)61; GFX900-NEXT:    ;;#ASMSTART62; GFX900-NEXT:    ; def v163; GFX900-NEXT:    ;;#ASMEND64; GFX900-NEXT:    v_mov_b32_e32 v0, 065; GFX900-NEXT:    v_alignbit_b32 v1, s4, v1, 1666; GFX900-NEXT:    global_store_dword v0, v1, 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_v3i16_v2i16__1_u_u:71; GFX90A:       ; %bb.0:72; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)73; GFX90A-NEXT:    ;;#ASMSTART74; GFX90A-NEXT:    ; def v175; GFX90A-NEXT:    ;;#ASMEND76; GFX90A-NEXT:    v_mov_b32_e32 v0, 077; GFX90A-NEXT:    v_alignbit_b32 v1, s4, v1, 1678; GFX90A-NEXT:    global_store_dword v0, v1, 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_v3i16_v2i16__1_u_u:83; GFX942:       ; %bb.0:84; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)85; GFX942-NEXT:    ;;#ASMSTART86; GFX942-NEXT:    ; def v187; GFX942-NEXT:    ;;#ASMEND88; GFX942-NEXT:    v_mov_b32_e32 v0, 089; GFX942-NEXT:    v_alignbit_b32 v1, s0, v1, 1690; GFX942-NEXT:    global_store_dword v0, v1, 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, <3 x i32> <i32 1, i32 poison, i32 poison>95  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 896  ret void97}98 99define void @v_shuffle_v3i16_v2i16__2_u_u(ptr addrspace(1) inreg %ptr) {100; GFX9-LABEL: v_shuffle_v3i16_v2i16__2_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, <3 x i32> <i32 2, i32 poison, i32 poison>106  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8107  ret void108}109 110define void @v_shuffle_v3i16_v2i16__3_u_u(ptr addrspace(1) inreg %ptr) {111; GFX900-LABEL: v_shuffle_v3i16_v2i16__3_u_u:112; GFX900:       ; %bb.0:113; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)114; GFX900-NEXT:    ;;#ASMSTART115; GFX900-NEXT:    ; def v1116; GFX900-NEXT:    ;;#ASMEND117; GFX900-NEXT:    v_mov_b32_e32 v0, 0118; GFX900-NEXT:    v_alignbit_b32 v1, s4, v1, 16119; GFX900-NEXT:    global_store_dword v0, v1, 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_v3i16_v2i16__3_u_u:124; GFX90A:       ; %bb.0:125; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)126; GFX90A-NEXT:    ;;#ASMSTART127; GFX90A-NEXT:    ; def v1128; GFX90A-NEXT:    ;;#ASMEND129; GFX90A-NEXT:    v_mov_b32_e32 v0, 0130; GFX90A-NEXT:    v_alignbit_b32 v1, s4, v1, 16131; GFX90A-NEXT:    global_store_dword v0, v1, 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_v3i16_v2i16__3_u_u:136; GFX942:       ; %bb.0:137; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)138; GFX942-NEXT:    ;;#ASMSTART139; GFX942-NEXT:    ; def v1140; GFX942-NEXT:    ;;#ASMEND141; GFX942-NEXT:    v_mov_b32_e32 v0, 0142; GFX942-NEXT:    v_alignbit_b32 v1, s0, v1, 16143; GFX942-NEXT:    global_store_dword v0, v1, 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, <3 x i32> <i32 3, i32 poison, i32 poison>149  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8150  ret void151}152 153define void @v_shuffle_v3i16_v2i16__3_0_u(ptr addrspace(1) inreg %ptr) {154; GFX900-LABEL: v_shuffle_v3i16_v2i16__3_0_u:155; GFX900:       ; %bb.0:156; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)157; GFX900-NEXT:    ;;#ASMSTART158; GFX900-NEXT:    ; def v1159; GFX900-NEXT:    ;;#ASMEND160; GFX900-NEXT:    v_mov_b32_e32 v0, 0161; GFX900-NEXT:    ;;#ASMSTART162; GFX900-NEXT:    ; def v2163; GFX900-NEXT:    ;;#ASMEND164; GFX900-NEXT:    v_alignbit_b32 v1, v1, v2, 16165; GFX900-NEXT:    global_store_dword v0, v1, 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_v3i16_v2i16__3_0_u:170; GFX90A:       ; %bb.0:171; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)172; GFX90A-NEXT:    ;;#ASMSTART173; GFX90A-NEXT:    ; def v1174; GFX90A-NEXT:    ;;#ASMEND175; GFX90A-NEXT:    v_mov_b32_e32 v0, 0176; GFX90A-NEXT:    ;;#ASMSTART177; GFX90A-NEXT:    ; def v2178; GFX90A-NEXT:    ;;#ASMEND179; GFX90A-NEXT:    v_alignbit_b32 v1, v1, v2, 16180; GFX90A-NEXT:    global_store_dword v0, v1, 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_v3i16_v2i16__3_0_u:185; GFX942:       ; %bb.0:186; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)187; GFX942-NEXT:    ;;#ASMSTART188; GFX942-NEXT:    ; def v1189; GFX942-NEXT:    ;;#ASMEND190; GFX942-NEXT:    v_mov_b32_e32 v0, 0191; GFX942-NEXT:    ;;#ASMSTART192; GFX942-NEXT:    ; def v2193; GFX942-NEXT:    ;;#ASMEND194; GFX942-NEXT:    s_nop 0195; GFX942-NEXT:    v_alignbit_b32 v1, v1, v2, 16196; GFX942-NEXT:    global_store_dword v0, v1, 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, <3 x i32> <i32 3, i32 0, i32 poison>202  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8203  ret void204}205 206define void @v_shuffle_v3i16_v2i16__3_1_u(ptr addrspace(1) inreg %ptr) {207; GFX900-LABEL: v_shuffle_v3i16_v2i16__3_1_u:208; GFX900:       ; %bb.0:209; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)210; GFX900-NEXT:    ;;#ASMSTART211; GFX900-NEXT:    ; def v1212; GFX900-NEXT:    ;;#ASMEND213; GFX900-NEXT:    s_mov_b32 s4, 0x7060302214; GFX900-NEXT:    v_mov_b32_e32 v0, 0215; GFX900-NEXT:    ;;#ASMSTART216; GFX900-NEXT:    ; def v2217; GFX900-NEXT:    ;;#ASMEND218; GFX900-NEXT:    v_perm_b32 v1, v1, v2, s4219; GFX900-NEXT:    global_store_dword v0, v1, 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_v3i16_v2i16__3_1_u:224; GFX90A:       ; %bb.0:225; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)226; GFX90A-NEXT:    ;;#ASMSTART227; GFX90A-NEXT:    ; def v1228; GFX90A-NEXT:    ;;#ASMEND229; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302230; GFX90A-NEXT:    v_mov_b32_e32 v0, 0231; GFX90A-NEXT:    ;;#ASMSTART232; GFX90A-NEXT:    ; def v2233; GFX90A-NEXT:    ;;#ASMEND234; GFX90A-NEXT:    v_perm_b32 v1, v1, v2, s4235; GFX90A-NEXT:    global_store_dword v0, v1, 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_v3i16_v2i16__3_1_u:240; GFX942:       ; %bb.0:241; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)242; GFX942-NEXT:    ;;#ASMSTART243; GFX942-NEXT:    ; def v1244; GFX942-NEXT:    ;;#ASMEND245; GFX942-NEXT:    s_mov_b32 s2, 0x7060302246; GFX942-NEXT:    v_mov_b32_e32 v0, 0247; GFX942-NEXT:    ;;#ASMSTART248; GFX942-NEXT:    ; def v2249; GFX942-NEXT:    ;;#ASMEND250; GFX942-NEXT:    s_nop 0251; GFX942-NEXT:    v_perm_b32 v1, v1, v2, s2252; GFX942-NEXT:    global_store_dword v0, v1, 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, <3 x i32> <i32 3, i32 1, i32 poison>258  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8259  ret void260}261 262define void @v_shuffle_v3i16_v2i16__3_2_u(ptr addrspace(1) inreg %ptr) {263; GFX900-LABEL: v_shuffle_v3i16_v2i16__3_2_u:264; GFX900:       ; %bb.0:265; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)266; GFX900-NEXT:    ;;#ASMSTART267; GFX900-NEXT:    ; def v1268; GFX900-NEXT:    ;;#ASMEND269; GFX900-NEXT:    v_mov_b32_e32 v0, 0270; GFX900-NEXT:    v_alignbit_b32 v1, v1, v1, 16271; GFX900-NEXT:    global_store_dword v0, v1, 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_v3i16_v2i16__3_2_u:276; GFX90A:       ; %bb.0:277; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)278; GFX90A-NEXT:    ;;#ASMSTART279; GFX90A-NEXT:    ; def v1280; GFX90A-NEXT:    ;;#ASMEND281; GFX90A-NEXT:    v_mov_b32_e32 v0, 0282; GFX90A-NEXT:    v_alignbit_b32 v1, v1, v1, 16283; GFX90A-NEXT:    global_store_dword v0, v1, 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_v3i16_v2i16__3_2_u:288; GFX942:       ; %bb.0:289; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)290; GFX942-NEXT:    ;;#ASMSTART291; GFX942-NEXT:    ; def v1292; GFX942-NEXT:    ;;#ASMEND293; GFX942-NEXT:    v_mov_b32_e32 v0, 0294; GFX942-NEXT:    v_alignbit_b32 v1, v1, v1, 16295; GFX942-NEXT:    global_store_dword v0, v1, 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, <3 x i32> <i32 3, i32 2, i32 poison>301  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8302  ret void303}304 305define void @v_shuffle_v3i16_v2i16__3_3_u(ptr addrspace(1) inreg %ptr) {306; GFX900-LABEL: v_shuffle_v3i16_v2i16__3_3_u:307; GFX900:       ; %bb.0:308; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)309; GFX900-NEXT:    ;;#ASMSTART310; GFX900-NEXT:    ; def v1311; GFX900-NEXT:    ;;#ASMEND312; GFX900-NEXT:    s_mov_b32 s4, 0x7060302313; GFX900-NEXT:    v_mov_b32_e32 v0, 0314; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s4315; GFX900-NEXT:    global_store_dword v0, v1, 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_v3i16_v2i16__3_3_u:320; GFX90A:       ; %bb.0:321; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)322; GFX90A-NEXT:    ;;#ASMSTART323; GFX90A-NEXT:    ; def v1324; GFX90A-NEXT:    ;;#ASMEND325; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302326; GFX90A-NEXT:    v_mov_b32_e32 v0, 0327; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s4328; GFX90A-NEXT:    global_store_dword v0, v1, 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_v3i16_v2i16__3_3_u:333; GFX942:       ; %bb.0:334; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)335; GFX942-NEXT:    ;;#ASMSTART336; GFX942-NEXT:    ; def v1337; GFX942-NEXT:    ;;#ASMEND338; GFX942-NEXT:    s_mov_b32 s2, 0x7060302339; GFX942-NEXT:    v_mov_b32_e32 v0, 0340; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s2341; GFX942-NEXT:    global_store_dword v0, v1, 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, <3 x i32> <i32 3, i32 3, i32 poison>347  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8348  ret void349}350 351define void @v_shuffle_v3i16_v2i16__3_3_0(ptr addrspace(1) inreg %ptr) {352; GFX900-LABEL: v_shuffle_v3i16_v2i16__3_3_0:353; GFX900:       ; %bb.0:354; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)355; GFX900-NEXT:    v_mov_b32_e32 v0, 0356; GFX900-NEXT:    ;;#ASMSTART357; GFX900-NEXT:    ; def v1358; GFX900-NEXT:    ;;#ASMEND359; GFX900-NEXT:    ;;#ASMSTART360; GFX900-NEXT:    ; def v2361; GFX900-NEXT:    ;;#ASMEND362; GFX900-NEXT:    s_mov_b32 s4, 0x7060302363; GFX900-NEXT:    v_perm_b32 v2, v2, v2, s4364; GFX900-NEXT:    global_store_short v0, v1, s[16:17] offset:4365; GFX900-NEXT:    global_store_dword v0, v2, s[16:17]366; GFX900-NEXT:    s_waitcnt vmcnt(0)367; GFX900-NEXT:    s_setpc_b64 s[30:31]368;369; GFX90A-LABEL: v_shuffle_v3i16_v2i16__3_3_0:370; GFX90A:       ; %bb.0:371; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)372; GFX90A-NEXT:    v_mov_b32_e32 v0, 0373; GFX90A-NEXT:    ;;#ASMSTART374; GFX90A-NEXT:    ; def v1375; GFX90A-NEXT:    ;;#ASMEND376; GFX90A-NEXT:    ;;#ASMSTART377; GFX90A-NEXT:    ; def v2378; GFX90A-NEXT:    ;;#ASMEND379; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302380; GFX90A-NEXT:    v_perm_b32 v2, v2, v2, s4381; GFX90A-NEXT:    global_store_short v0, v1, s[16:17] offset:4382; GFX90A-NEXT:    global_store_dword v0, v2, s[16:17]383; GFX90A-NEXT:    s_waitcnt vmcnt(0)384; GFX90A-NEXT:    s_setpc_b64 s[30:31]385;386; GFX942-LABEL: v_shuffle_v3i16_v2i16__3_3_0:387; GFX942:       ; %bb.0:388; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)389; GFX942-NEXT:    v_mov_b32_e32 v0, 0390; GFX942-NEXT:    ;;#ASMSTART391; GFX942-NEXT:    ; def v1392; GFX942-NEXT:    ;;#ASMEND393; GFX942-NEXT:    ;;#ASMSTART394; GFX942-NEXT:    ; def v2395; GFX942-NEXT:    ;;#ASMEND396; GFX942-NEXT:    s_mov_b32 s2, 0x7060302397; GFX942-NEXT:    v_perm_b32 v2, v2, v2, s2398; GFX942-NEXT:    global_store_short v0, v1, s[0:1] offset:4399; GFX942-NEXT:    global_store_dword v0, v2, s[0:1]400; GFX942-NEXT:    s_waitcnt vmcnt(0)401; GFX942-NEXT:    s_setpc_b64 s[30:31]402  %vec0 = call <2 x i16> asm "; def $0", "=v"()403  %vec1 = call <2 x i16> asm "; def $0", "=v"()404  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 3, i32 0>405  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8406  ret void407}408 409define void @v_shuffle_v3i16_v2i16__3_3_1(ptr addrspace(1) inreg %ptr) {410; GFX900-LABEL: v_shuffle_v3i16_v2i16__3_3_1:411; GFX900:       ; %bb.0:412; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)413; GFX900-NEXT:    v_mov_b32_e32 v0, 0414; GFX900-NEXT:    ;;#ASMSTART415; GFX900-NEXT:    ; def v1416; GFX900-NEXT:    ;;#ASMEND417; GFX900-NEXT:    ;;#ASMSTART418; GFX900-NEXT:    ; def v2419; GFX900-NEXT:    ;;#ASMEND420; GFX900-NEXT:    s_mov_b32 s4, 0x7060302421; GFX900-NEXT:    v_perm_b32 v2, v2, v2, s4422; GFX900-NEXT:    global_store_short_d16_hi v0, v1, s[16:17] offset:4423; GFX900-NEXT:    global_store_dword v0, v2, s[16:17]424; GFX900-NEXT:    s_waitcnt vmcnt(0)425; GFX900-NEXT:    s_setpc_b64 s[30:31]426;427; GFX90A-LABEL: v_shuffle_v3i16_v2i16__3_3_1:428; GFX90A:       ; %bb.0:429; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)430; GFX90A-NEXT:    v_mov_b32_e32 v0, 0431; GFX90A-NEXT:    ;;#ASMSTART432; GFX90A-NEXT:    ; def v1433; GFX90A-NEXT:    ;;#ASMEND434; GFX90A-NEXT:    ;;#ASMSTART435; GFX90A-NEXT:    ; def v2436; GFX90A-NEXT:    ;;#ASMEND437; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302438; GFX90A-NEXT:    v_perm_b32 v2, v2, v2, s4439; GFX90A-NEXT:    global_store_short_d16_hi v0, v1, s[16:17] offset:4440; GFX90A-NEXT:    global_store_dword v0, v2, s[16:17]441; GFX90A-NEXT:    s_waitcnt vmcnt(0)442; GFX90A-NEXT:    s_setpc_b64 s[30:31]443;444; GFX942-LABEL: v_shuffle_v3i16_v2i16__3_3_1:445; GFX942:       ; %bb.0:446; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)447; GFX942-NEXT:    v_mov_b32_e32 v0, 0448; GFX942-NEXT:    ;;#ASMSTART449; GFX942-NEXT:    ; def v1450; GFX942-NEXT:    ;;#ASMEND451; GFX942-NEXT:    ;;#ASMSTART452; GFX942-NEXT:    ; def v2453; GFX942-NEXT:    ;;#ASMEND454; GFX942-NEXT:    s_mov_b32 s2, 0x7060302455; GFX942-NEXT:    v_perm_b32 v2, v2, v2, s2456; GFX942-NEXT:    global_store_short_d16_hi v0, v1, s[0:1] offset:4457; GFX942-NEXT:    global_store_dword v0, v2, s[0:1]458; GFX942-NEXT:    s_waitcnt vmcnt(0)459; GFX942-NEXT:    s_setpc_b64 s[30:31]460  %vec0 = call <2 x i16> asm "; def $0", "=v"()461  %vec1 = call <2 x i16> asm "; def $0", "=v"()462  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 3, i32 1>463  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8464  ret void465}466 467define void @v_shuffle_v3i16_v2i16__3_3_2(ptr addrspace(1) inreg %ptr) {468; GFX900-LABEL: v_shuffle_v3i16_v2i16__3_3_2:469; GFX900:       ; %bb.0:470; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)471; GFX900-NEXT:    v_mov_b32_e32 v0, 0472; GFX900-NEXT:    ;;#ASMSTART473; GFX900-NEXT:    ; def v1474; GFX900-NEXT:    ;;#ASMEND475; GFX900-NEXT:    s_mov_b32 s4, 0x7060302476; GFX900-NEXT:    v_perm_b32 v2, v1, v1, s4477; GFX900-NEXT:    global_store_short v0, v1, s[16:17] offset:4478; GFX900-NEXT:    global_store_dword v0, v2, s[16:17]479; GFX900-NEXT:    s_waitcnt vmcnt(0)480; GFX900-NEXT:    s_setpc_b64 s[30:31]481;482; GFX90A-LABEL: v_shuffle_v3i16_v2i16__3_3_2:483; GFX90A:       ; %bb.0:484; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)485; GFX90A-NEXT:    v_mov_b32_e32 v0, 0486; GFX90A-NEXT:    ;;#ASMSTART487; GFX90A-NEXT:    ; def v1488; GFX90A-NEXT:    ;;#ASMEND489; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302490; GFX90A-NEXT:    v_perm_b32 v2, v1, v1, s4491; GFX90A-NEXT:    global_store_short v0, v1, s[16:17] offset:4492; GFX90A-NEXT:    global_store_dword v0, v2, s[16:17]493; GFX90A-NEXT:    s_waitcnt vmcnt(0)494; GFX90A-NEXT:    s_setpc_b64 s[30:31]495;496; GFX942-LABEL: v_shuffle_v3i16_v2i16__3_3_2:497; GFX942:       ; %bb.0:498; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)499; GFX942-NEXT:    v_mov_b32_e32 v0, 0500; GFX942-NEXT:    ;;#ASMSTART501; GFX942-NEXT:    ; def v1502; GFX942-NEXT:    ;;#ASMEND503; GFX942-NEXT:    s_mov_b32 s2, 0x7060302504; GFX942-NEXT:    v_perm_b32 v2, v1, v1, s2505; GFX942-NEXT:    global_store_short v0, v1, s[0:1] offset:4506; GFX942-NEXT:    global_store_dword v0, v2, s[0:1]507; GFX942-NEXT:    s_waitcnt vmcnt(0)508; GFX942-NEXT:    s_setpc_b64 s[30:31]509  %vec0 = call <2 x i16> asm "; def $0", "=v"()510  %vec1 = call <2 x i16> asm "; def $0", "=v"()511  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 3, i32 2>512  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8513  ret void514}515 516define void @v_shuffle_v3i16_v2i16__3_3_3(ptr addrspace(1) inreg %ptr) {517; GFX900-LABEL: v_shuffle_v3i16_v2i16__3_3_3:518; GFX900:       ; %bb.0:519; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)520; GFX900-NEXT:    ;;#ASMSTART521; GFX900-NEXT:    ; def v1522; GFX900-NEXT:    ;;#ASMEND523; GFX900-NEXT:    s_mov_b32 s4, 0x7060302524; GFX900-NEXT:    v_mov_b32_e32 v0, 0525; GFX900-NEXT:    v_perm_b32 v2, v1, v1, s4526; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v1527; GFX900-NEXT:    global_store_dword v0, v2, s[16:17]528; GFX900-NEXT:    global_store_short v0, v1, s[16:17] offset:4529; GFX900-NEXT:    s_waitcnt vmcnt(0)530; GFX900-NEXT:    s_setpc_b64 s[30:31]531;532; GFX90A-LABEL: v_shuffle_v3i16_v2i16__3_3_3:533; GFX90A:       ; %bb.0:534; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)535; GFX90A-NEXT:    ;;#ASMSTART536; GFX90A-NEXT:    ; def v1537; GFX90A-NEXT:    ;;#ASMEND538; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302539; GFX90A-NEXT:    v_mov_b32_e32 v0, 0540; GFX90A-NEXT:    v_perm_b32 v2, v1, v1, s4541; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v1542; GFX90A-NEXT:    global_store_dword v0, v2, s[16:17]543; GFX90A-NEXT:    global_store_short v0, v1, s[16:17] offset:4544; GFX90A-NEXT:    s_waitcnt vmcnt(0)545; GFX90A-NEXT:    s_setpc_b64 s[30:31]546;547; GFX942-LABEL: v_shuffle_v3i16_v2i16__3_3_3:548; GFX942:       ; %bb.0:549; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)550; GFX942-NEXT:    ;;#ASMSTART551; GFX942-NEXT:    ; def v1552; GFX942-NEXT:    ;;#ASMEND553; GFX942-NEXT:    s_mov_b32 s2, 0x7060302554; GFX942-NEXT:    v_mov_b32_e32 v0, 0555; GFX942-NEXT:    v_perm_b32 v2, v1, v1, s2556; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v1557; GFX942-NEXT:    global_store_dword v0, v2, s[0:1]558; GFX942-NEXT:    global_store_short v0, v1, s[0:1] offset:4559; GFX942-NEXT:    s_waitcnt vmcnt(0)560; GFX942-NEXT:    s_setpc_b64 s[30:31]561  %vec0 = call <2 x i16> asm "; def $0", "=v"()562  %vec1 = call <2 x i16> asm "; def $0", "=v"()563  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 3, i32 3>564  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8565  ret void566}567 568define void @v_shuffle_v3i16_v2i16__u_0_0(ptr addrspace(1) inreg %ptr) {569; GFX900-LABEL: v_shuffle_v3i16_v2i16__u_0_0:570; GFX900:       ; %bb.0:571; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)572; GFX900-NEXT:    v_mov_b32_e32 v0, 0573; GFX900-NEXT:    ;;#ASMSTART574; GFX900-NEXT:    ; def v1575; GFX900-NEXT:    ;;#ASMEND576; GFX900-NEXT:    s_mov_b32 s4, 0x5040100577; GFX900-NEXT:    v_perm_b32 v2, v1, v1, s4578; GFX900-NEXT:    global_store_short v0, v1, s[16:17] offset:4579; GFX900-NEXT:    global_store_dword v0, v2, s[16:17]580; GFX900-NEXT:    s_waitcnt vmcnt(0)581; GFX900-NEXT:    s_setpc_b64 s[30:31]582;583; GFX90A-LABEL: v_shuffle_v3i16_v2i16__u_0_0:584; GFX90A:       ; %bb.0:585; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)586; GFX90A-NEXT:    v_mov_b32_e32 v0, 0587; GFX90A-NEXT:    ;;#ASMSTART588; GFX90A-NEXT:    ; def v1589; GFX90A-NEXT:    ;;#ASMEND590; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100591; GFX90A-NEXT:    v_perm_b32 v2, v1, v1, s4592; GFX90A-NEXT:    global_store_short v0, v1, s[16:17] offset:4593; GFX90A-NEXT:    global_store_dword v0, v2, s[16:17]594; GFX90A-NEXT:    s_waitcnt vmcnt(0)595; GFX90A-NEXT:    s_setpc_b64 s[30:31]596;597; GFX942-LABEL: v_shuffle_v3i16_v2i16__u_0_0:598; GFX942:       ; %bb.0:599; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)600; GFX942-NEXT:    v_mov_b32_e32 v0, 0601; GFX942-NEXT:    ;;#ASMSTART602; GFX942-NEXT:    ; def v1603; GFX942-NEXT:    ;;#ASMEND604; GFX942-NEXT:    s_mov_b32 s2, 0x5040100605; GFX942-NEXT:    v_perm_b32 v2, v1, v1, s2606; GFX942-NEXT:    global_store_short v0, v1, s[0:1] offset:4607; GFX942-NEXT:    global_store_dword v0, v2, s[0:1]608; GFX942-NEXT:    s_waitcnt vmcnt(0)609; GFX942-NEXT:    s_setpc_b64 s[30:31]610  %vec0 = call <2 x i16> asm "; def $0", "=v"()611  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <3 x i32> <i32 poison, i32 0, i32 0>612  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8613  ret void614}615 616define void @v_shuffle_v3i16_v2i16__0_0_0(ptr addrspace(1) inreg %ptr) {617; GFX900-LABEL: v_shuffle_v3i16_v2i16__0_0_0:618; GFX900:       ; %bb.0:619; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)620; GFX900-NEXT:    v_mov_b32_e32 v0, 0621; GFX900-NEXT:    ;;#ASMSTART622; GFX900-NEXT:    ; def v1623; GFX900-NEXT:    ;;#ASMEND624; GFX900-NEXT:    s_mov_b32 s4, 0x5040100625; GFX900-NEXT:    v_perm_b32 v2, v1, v1, s4626; GFX900-NEXT:    global_store_short v0, v1, s[16:17] offset:4627; GFX900-NEXT:    global_store_dword v0, v2, s[16:17]628; GFX900-NEXT:    s_waitcnt vmcnt(0)629; GFX900-NEXT:    s_setpc_b64 s[30:31]630;631; GFX90A-LABEL: v_shuffle_v3i16_v2i16__0_0_0:632; GFX90A:       ; %bb.0:633; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)634; GFX90A-NEXT:    v_mov_b32_e32 v0, 0635; GFX90A-NEXT:    ;;#ASMSTART636; GFX90A-NEXT:    ; def v1637; GFX90A-NEXT:    ;;#ASMEND638; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100639; GFX90A-NEXT:    v_perm_b32 v2, v1, v1, s4640; GFX90A-NEXT:    global_store_short v0, v1, s[16:17] offset:4641; GFX90A-NEXT:    global_store_dword v0, v2, s[16:17]642; GFX90A-NEXT:    s_waitcnt vmcnt(0)643; GFX90A-NEXT:    s_setpc_b64 s[30:31]644;645; GFX942-LABEL: v_shuffle_v3i16_v2i16__0_0_0:646; GFX942:       ; %bb.0:647; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)648; GFX942-NEXT:    v_mov_b32_e32 v0, 0649; GFX942-NEXT:    ;;#ASMSTART650; GFX942-NEXT:    ; def v1651; GFX942-NEXT:    ;;#ASMEND652; GFX942-NEXT:    s_mov_b32 s2, 0x5040100653; GFX942-NEXT:    v_perm_b32 v2, v1, v1, s2654; GFX942-NEXT:    global_store_short v0, v1, s[0:1] offset:4655; GFX942-NEXT:    global_store_dword v0, v2, s[0:1]656; GFX942-NEXT:    s_waitcnt vmcnt(0)657; GFX942-NEXT:    s_setpc_b64 s[30:31]658  %vec0 = call <2 x i16> asm "; def $0", "=v"()659  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <3 x i32> zeroinitializer660  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8661  ret void662}663 664define void @v_shuffle_v3i16_v2i16__1_0_0(ptr addrspace(1) inreg %ptr) {665; GFX900-LABEL: v_shuffle_v3i16_v2i16__1_0_0:666; GFX900:       ; %bb.0:667; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)668; GFX900-NEXT:    v_mov_b32_e32 v0, 0669; GFX900-NEXT:    ;;#ASMSTART670; GFX900-NEXT:    ; def v1671; GFX900-NEXT:    ;;#ASMEND672; GFX900-NEXT:    v_alignbit_b32 v2, v1, v1, 16673; GFX900-NEXT:    global_store_short v0, v1, s[16:17] offset:4674; GFX900-NEXT:    global_store_dword v0, v2, s[16:17]675; GFX900-NEXT:    s_waitcnt vmcnt(0)676; GFX900-NEXT:    s_setpc_b64 s[30:31]677;678; GFX90A-LABEL: v_shuffle_v3i16_v2i16__1_0_0:679; GFX90A:       ; %bb.0:680; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)681; GFX90A-NEXT:    v_mov_b32_e32 v0, 0682; GFX90A-NEXT:    ;;#ASMSTART683; GFX90A-NEXT:    ; def v1684; GFX90A-NEXT:    ;;#ASMEND685; GFX90A-NEXT:    v_alignbit_b32 v2, v1, v1, 16686; GFX90A-NEXT:    global_store_short v0, v1, s[16:17] offset:4687; GFX90A-NEXT:    global_store_dword v0, v2, s[16:17]688; GFX90A-NEXT:    s_waitcnt vmcnt(0)689; GFX90A-NEXT:    s_setpc_b64 s[30:31]690;691; GFX942-LABEL: v_shuffle_v3i16_v2i16__1_0_0:692; GFX942:       ; %bb.0:693; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)694; GFX942-NEXT:    v_mov_b32_e32 v0, 0695; GFX942-NEXT:    ;;#ASMSTART696; GFX942-NEXT:    ; def v1697; GFX942-NEXT:    ;;#ASMEND698; GFX942-NEXT:    s_nop 0699; GFX942-NEXT:    v_alignbit_b32 v2, v1, v1, 16700; GFX942-NEXT:    global_store_short v0, v1, s[0:1] offset:4701; GFX942-NEXT:    global_store_dword v0, v2, s[0:1]702; GFX942-NEXT:    s_waitcnt vmcnt(0)703; GFX942-NEXT:    s_setpc_b64 s[30:31]704  %vec0 = call <2 x i16> asm "; def $0", "=v"()705  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <3 x i32> <i32 1, i32 0, i32 0>706  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8707  ret void708}709 710define void @v_shuffle_v3i16_v2i16__2_0_0(ptr addrspace(1) inreg %ptr) {711; GFX900-LABEL: v_shuffle_v3i16_v2i16__2_0_0:712; GFX900:       ; %bb.0:713; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)714; GFX900-NEXT:    v_mov_b32_e32 v0, 0715; GFX900-NEXT:    ;;#ASMSTART716; GFX900-NEXT:    ; def v1717; GFX900-NEXT:    ;;#ASMEND718; GFX900-NEXT:    s_mov_b32 s4, 0x5040100719; GFX900-NEXT:    v_perm_b32 v2, v1, v1, s4720; GFX900-NEXT:    global_store_short v0, v1, s[16:17] offset:4721; GFX900-NEXT:    global_store_dword v0, v2, s[16:17]722; GFX900-NEXT:    s_waitcnt vmcnt(0)723; GFX900-NEXT:    s_setpc_b64 s[30:31]724;725; GFX90A-LABEL: v_shuffle_v3i16_v2i16__2_0_0:726; GFX90A:       ; %bb.0:727; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)728; GFX90A-NEXT:    v_mov_b32_e32 v0, 0729; GFX90A-NEXT:    ;;#ASMSTART730; GFX90A-NEXT:    ; def v1731; GFX90A-NEXT:    ;;#ASMEND732; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100733; GFX90A-NEXT:    v_perm_b32 v2, v1, v1, s4734; GFX90A-NEXT:    global_store_short v0, v1, s[16:17] offset:4735; GFX90A-NEXT:    global_store_dword v0, v2, s[16:17]736; GFX90A-NEXT:    s_waitcnt vmcnt(0)737; GFX90A-NEXT:    s_setpc_b64 s[30:31]738;739; GFX942-LABEL: v_shuffle_v3i16_v2i16__2_0_0:740; GFX942:       ; %bb.0:741; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)742; GFX942-NEXT:    v_mov_b32_e32 v0, 0743; GFX942-NEXT:    ;;#ASMSTART744; GFX942-NEXT:    ; def v1745; GFX942-NEXT:    ;;#ASMEND746; GFX942-NEXT:    s_mov_b32 s2, 0x5040100747; GFX942-NEXT:    v_perm_b32 v2, v1, v1, s2748; GFX942-NEXT:    global_store_short v0, v1, s[0:1] offset:4749; GFX942-NEXT:    global_store_dword v0, v2, s[0:1]750; GFX942-NEXT:    s_waitcnt vmcnt(0)751; GFX942-NEXT:    s_setpc_b64 s[30:31]752  %vec0 = call <2 x i16> asm "; def $0", "=v"()753  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <3 x i32> <i32 2, i32 0, i32 0>754  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8755  ret void756}757 758define void @v_shuffle_v3i16_v2i16__3_0_0(ptr addrspace(1) inreg %ptr) {759; GFX900-LABEL: v_shuffle_v3i16_v2i16__3_0_0:760; GFX900:       ; %bb.0:761; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)762; GFX900-NEXT:    v_mov_b32_e32 v0, 0763; GFX900-NEXT:    ;;#ASMSTART764; GFX900-NEXT:    ; def v1765; GFX900-NEXT:    ;;#ASMEND766; GFX900-NEXT:    ;;#ASMSTART767; GFX900-NEXT:    ; def v2768; GFX900-NEXT:    ;;#ASMEND769; GFX900-NEXT:    v_alignbit_b32 v2, v1, v2, 16770; GFX900-NEXT:    global_store_short v0, v1, s[16:17] offset:4771; GFX900-NEXT:    global_store_dword v0, v2, s[16:17]772; GFX900-NEXT:    s_waitcnt vmcnt(0)773; GFX900-NEXT:    s_setpc_b64 s[30:31]774;775; GFX90A-LABEL: v_shuffle_v3i16_v2i16__3_0_0:776; GFX90A:       ; %bb.0:777; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)778; GFX90A-NEXT:    v_mov_b32_e32 v0, 0779; GFX90A-NEXT:    ;;#ASMSTART780; GFX90A-NEXT:    ; def v1781; GFX90A-NEXT:    ;;#ASMEND782; GFX90A-NEXT:    ;;#ASMSTART783; GFX90A-NEXT:    ; def v2784; GFX90A-NEXT:    ;;#ASMEND785; GFX90A-NEXT:    v_alignbit_b32 v2, v1, v2, 16786; GFX90A-NEXT:    global_store_short v0, v1, s[16:17] offset:4787; GFX90A-NEXT:    global_store_dword v0, v2, s[16:17]788; GFX90A-NEXT:    s_waitcnt vmcnt(0)789; GFX90A-NEXT:    s_setpc_b64 s[30:31]790;791; GFX942-LABEL: v_shuffle_v3i16_v2i16__3_0_0:792; GFX942:       ; %bb.0:793; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)794; GFX942-NEXT:    v_mov_b32_e32 v0, 0795; GFX942-NEXT:    ;;#ASMSTART796; GFX942-NEXT:    ; def v1797; GFX942-NEXT:    ;;#ASMEND798; GFX942-NEXT:    ;;#ASMSTART799; GFX942-NEXT:    ; def v2800; GFX942-NEXT:    ;;#ASMEND801; GFX942-NEXT:    s_nop 0802; GFX942-NEXT:    v_alignbit_b32 v2, v1, v2, 16803; GFX942-NEXT:    global_store_short v0, v1, s[0:1] offset:4804; GFX942-NEXT:    global_store_dword v0, v2, s[0:1]805; GFX942-NEXT:    s_waitcnt vmcnt(0)806; GFX942-NEXT:    s_setpc_b64 s[30:31]807  %vec0 = call <2 x i16> asm "; def $0", "=v"()808  %vec1 = call <2 x i16> asm "; def $0", "=v"()809  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 0, i32 0>810  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8811  ret void812}813 814define void @v_shuffle_v3i16_v2i16__3_u_0(ptr addrspace(1) inreg %ptr) {815; GFX900-LABEL: v_shuffle_v3i16_v2i16__3_u_0:816; GFX900:       ; %bb.0:817; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)818; GFX900-NEXT:    v_mov_b32_e32 v0, 0819; GFX900-NEXT:    ;;#ASMSTART820; GFX900-NEXT:    ; def v1821; GFX900-NEXT:    ;;#ASMEND822; GFX900-NEXT:    ;;#ASMSTART823; GFX900-NEXT:    ; def v2824; GFX900-NEXT:    ;;#ASMEND825; GFX900-NEXT:    v_alignbit_b32 v2, s4, v2, 16826; GFX900-NEXT:    global_store_short v0, v1, s[16:17] offset:4827; GFX900-NEXT:    global_store_dword v0, v2, s[16:17]828; GFX900-NEXT:    s_waitcnt vmcnt(0)829; GFX900-NEXT:    s_setpc_b64 s[30:31]830;831; GFX90A-LABEL: v_shuffle_v3i16_v2i16__3_u_0:832; GFX90A:       ; %bb.0:833; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)834; GFX90A-NEXT:    v_mov_b32_e32 v0, 0835; GFX90A-NEXT:    ;;#ASMSTART836; GFX90A-NEXT:    ; def v1837; GFX90A-NEXT:    ;;#ASMEND838; GFX90A-NEXT:    ;;#ASMSTART839; GFX90A-NEXT:    ; def v2840; GFX90A-NEXT:    ;;#ASMEND841; GFX90A-NEXT:    v_alignbit_b32 v2, s4, v2, 16842; GFX90A-NEXT:    global_store_short v0, v1, s[16:17] offset:4843; GFX90A-NEXT:    global_store_dword v0, v2, s[16:17]844; GFX90A-NEXT:    s_waitcnt vmcnt(0)845; GFX90A-NEXT:    s_setpc_b64 s[30:31]846;847; GFX942-LABEL: v_shuffle_v3i16_v2i16__3_u_0:848; GFX942:       ; %bb.0:849; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)850; GFX942-NEXT:    v_mov_b32_e32 v0, 0851; GFX942-NEXT:    ;;#ASMSTART852; GFX942-NEXT:    ; def v1853; GFX942-NEXT:    ;;#ASMEND854; GFX942-NEXT:    ;;#ASMSTART855; GFX942-NEXT:    ; def v2856; GFX942-NEXT:    ;;#ASMEND857; GFX942-NEXT:    s_nop 0858; GFX942-NEXT:    v_alignbit_b32 v2, s0, v2, 16859; GFX942-NEXT:    global_store_short v0, v1, s[0:1] offset:4860; GFX942-NEXT:    global_store_dword v0, v2, s[0:1]861; GFX942-NEXT:    s_waitcnt vmcnt(0)862; GFX942-NEXT:    s_setpc_b64 s[30:31]863  %vec0 = call <2 x i16> asm "; def $0", "=v"()864  %vec1 = call <2 x i16> asm "; def $0", "=v"()865  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 poison, i32 0>866  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8867  ret void868}869 870define void @v_shuffle_v3i16_v2i16__3_1_0(ptr addrspace(1) inreg %ptr) {871; GFX900-LABEL: v_shuffle_v3i16_v2i16__3_1_0:872; GFX900:       ; %bb.0:873; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)874; GFX900-NEXT:    v_mov_b32_e32 v0, 0875; GFX900-NEXT:    ;;#ASMSTART876; GFX900-NEXT:    ; def v1877; GFX900-NEXT:    ;;#ASMEND878; GFX900-NEXT:    ;;#ASMSTART879; GFX900-NEXT:    ; def v2880; GFX900-NEXT:    ;;#ASMEND881; GFX900-NEXT:    s_mov_b32 s4, 0x7060302882; GFX900-NEXT:    v_perm_b32 v2, v1, v2, s4883; GFX900-NEXT:    global_store_short v0, v1, s[16:17] offset:4884; GFX900-NEXT:    global_store_dword v0, v2, s[16:17]885; GFX900-NEXT:    s_waitcnt vmcnt(0)886; GFX900-NEXT:    s_setpc_b64 s[30:31]887;888; GFX90A-LABEL: v_shuffle_v3i16_v2i16__3_1_0:889; GFX90A:       ; %bb.0:890; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)891; GFX90A-NEXT:    v_mov_b32_e32 v0, 0892; GFX90A-NEXT:    ;;#ASMSTART893; GFX90A-NEXT:    ; def v1894; GFX90A-NEXT:    ;;#ASMEND895; GFX90A-NEXT:    ;;#ASMSTART896; GFX90A-NEXT:    ; def v2897; GFX90A-NEXT:    ;;#ASMEND898; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302899; GFX90A-NEXT:    v_perm_b32 v2, v1, v2, s4900; GFX90A-NEXT:    global_store_short v0, v1, s[16:17] offset:4901; GFX90A-NEXT:    global_store_dword v0, v2, s[16:17]902; GFX90A-NEXT:    s_waitcnt vmcnt(0)903; GFX90A-NEXT:    s_setpc_b64 s[30:31]904;905; GFX942-LABEL: v_shuffle_v3i16_v2i16__3_1_0:906; GFX942:       ; %bb.0:907; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)908; GFX942-NEXT:    v_mov_b32_e32 v0, 0909; GFX942-NEXT:    ;;#ASMSTART910; GFX942-NEXT:    ; def v1911; GFX942-NEXT:    ;;#ASMEND912; GFX942-NEXT:    ;;#ASMSTART913; GFX942-NEXT:    ; def v2914; GFX942-NEXT:    ;;#ASMEND915; GFX942-NEXT:    s_mov_b32 s2, 0x7060302916; GFX942-NEXT:    v_perm_b32 v2, v1, v2, s2917; GFX942-NEXT:    global_store_short v0, v1, s[0:1] offset:4918; GFX942-NEXT:    global_store_dword v0, v2, s[0:1]919; GFX942-NEXT:    s_waitcnt vmcnt(0)920; GFX942-NEXT:    s_setpc_b64 s[30:31]921  %vec0 = call <2 x i16> asm "; def $0", "=v"()922  %vec1 = call <2 x i16> asm "; def $0", "=v"()923  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 1, i32 0>924  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8925  ret void926}927 928define void @v_shuffle_v3i16_v2i16__3_2_0(ptr addrspace(1) inreg %ptr) {929; GFX900-LABEL: v_shuffle_v3i16_v2i16__3_2_0:930; GFX900:       ; %bb.0:931; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)932; GFX900-NEXT:    v_mov_b32_e32 v0, 0933; GFX900-NEXT:    ;;#ASMSTART934; GFX900-NEXT:    ; def v1935; GFX900-NEXT:    ;;#ASMEND936; GFX900-NEXT:    ;;#ASMSTART937; GFX900-NEXT:    ; def v2938; GFX900-NEXT:    ;;#ASMEND939; GFX900-NEXT:    v_alignbit_b32 v2, v2, v2, 16940; GFX900-NEXT:    global_store_short v0, v1, s[16:17] offset:4941; GFX900-NEXT:    global_store_dword v0, v2, s[16:17]942; GFX900-NEXT:    s_waitcnt vmcnt(0)943; GFX900-NEXT:    s_setpc_b64 s[30:31]944;945; GFX90A-LABEL: v_shuffle_v3i16_v2i16__3_2_0:946; GFX90A:       ; %bb.0:947; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)948; GFX90A-NEXT:    v_mov_b32_e32 v0, 0949; GFX90A-NEXT:    ;;#ASMSTART950; GFX90A-NEXT:    ; def v1951; GFX90A-NEXT:    ;;#ASMEND952; GFX90A-NEXT:    ;;#ASMSTART953; GFX90A-NEXT:    ; def v2954; GFX90A-NEXT:    ;;#ASMEND955; GFX90A-NEXT:    v_alignbit_b32 v2, v2, v2, 16956; GFX90A-NEXT:    global_store_short v0, v1, s[16:17] offset:4957; GFX90A-NEXT:    global_store_dword v0, v2, s[16:17]958; GFX90A-NEXT:    s_waitcnt vmcnt(0)959; GFX90A-NEXT:    s_setpc_b64 s[30:31]960;961; GFX942-LABEL: v_shuffle_v3i16_v2i16__3_2_0:962; GFX942:       ; %bb.0:963; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)964; GFX942-NEXT:    v_mov_b32_e32 v0, 0965; GFX942-NEXT:    ;;#ASMSTART966; GFX942-NEXT:    ; def v1967; GFX942-NEXT:    ;;#ASMEND968; GFX942-NEXT:    ;;#ASMSTART969; GFX942-NEXT:    ; def v2970; GFX942-NEXT:    ;;#ASMEND971; GFX942-NEXT:    s_nop 0972; GFX942-NEXT:    v_alignbit_b32 v2, v2, v2, 16973; GFX942-NEXT:    global_store_short v0, v1, s[0:1] offset:4974; GFX942-NEXT:    global_store_dword v0, v2, s[0:1]975; GFX942-NEXT:    s_waitcnt vmcnt(0)976; GFX942-NEXT:    s_setpc_b64 s[30:31]977  %vec0 = call <2 x i16> asm "; def $0", "=v"()978  %vec1 = call <2 x i16> asm "; def $0", "=v"()979  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 2, i32 0>980  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 8981  ret void982}983 984define void @v_shuffle_v3i16_v2i16__u_1_1(ptr addrspace(1) inreg %ptr) {985; GFX900-LABEL: v_shuffle_v3i16_v2i16__u_1_1:986; GFX900:       ; %bb.0:987; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)988; GFX900-NEXT:    v_mov_b32_e32 v0, 0989; GFX900-NEXT:    ;;#ASMSTART990; GFX900-NEXT:    ; def v1991; GFX900-NEXT:    ;;#ASMEND992; GFX900-NEXT:    global_store_short_d16_hi v0, v1, s[16:17] offset:4993; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]994; GFX900-NEXT:    s_waitcnt vmcnt(0)995; GFX900-NEXT:    s_setpc_b64 s[30:31]996;997; GFX90A-LABEL: v_shuffle_v3i16_v2i16__u_1_1:998; GFX90A:       ; %bb.0:999; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1000; GFX90A-NEXT:    v_mov_b32_e32 v0, 01001; GFX90A-NEXT:    ;;#ASMSTART1002; GFX90A-NEXT:    ; def v11003; GFX90A-NEXT:    ;;#ASMEND1004; GFX90A-NEXT:    global_store_short_d16_hi v0, v1, s[16:17] offset:41005; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]1006; GFX90A-NEXT:    s_waitcnt vmcnt(0)1007; GFX90A-NEXT:    s_setpc_b64 s[30:31]1008;1009; GFX942-LABEL: v_shuffle_v3i16_v2i16__u_1_1:1010; GFX942:       ; %bb.0:1011; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1012; GFX942-NEXT:    v_mov_b32_e32 v0, 01013; GFX942-NEXT:    ;;#ASMSTART1014; GFX942-NEXT:    ; def v11015; GFX942-NEXT:    ;;#ASMEND1016; GFX942-NEXT:    global_store_short_d16_hi v0, v1, s[0:1] offset:41017; GFX942-NEXT:    global_store_dword v0, v1, s[0:1]1018; GFX942-NEXT:    s_waitcnt vmcnt(0)1019; GFX942-NEXT:    s_setpc_b64 s[30:31]1020  %vec0 = call <2 x i16> asm "; def $0", "=v"()1021  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <3 x i32> <i32 poison, i32 1, i32 1>1022  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81023  ret void1024}1025 1026define void @v_shuffle_v3i16_v2i16__0_1_1(ptr addrspace(1) inreg %ptr) {1027; GFX900-LABEL: v_shuffle_v3i16_v2i16__0_1_1:1028; GFX900:       ; %bb.0:1029; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1030; GFX900-NEXT:    v_mov_b32_e32 v0, 01031; GFX900-NEXT:    ;;#ASMSTART1032; GFX900-NEXT:    ; def v11033; GFX900-NEXT:    ;;#ASMEND1034; GFX900-NEXT:    global_store_short_d16_hi v0, v1, s[16:17] offset:41035; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]1036; GFX900-NEXT:    s_waitcnt vmcnt(0)1037; GFX900-NEXT:    s_setpc_b64 s[30:31]1038;1039; GFX90A-LABEL: v_shuffle_v3i16_v2i16__0_1_1:1040; GFX90A:       ; %bb.0:1041; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1042; GFX90A-NEXT:    v_mov_b32_e32 v0, 01043; GFX90A-NEXT:    ;;#ASMSTART1044; GFX90A-NEXT:    ; def v11045; GFX90A-NEXT:    ;;#ASMEND1046; GFX90A-NEXT:    global_store_short_d16_hi v0, v1, s[16:17] offset:41047; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]1048; GFX90A-NEXT:    s_waitcnt vmcnt(0)1049; GFX90A-NEXT:    s_setpc_b64 s[30:31]1050;1051; GFX942-LABEL: v_shuffle_v3i16_v2i16__0_1_1:1052; GFX942:       ; %bb.0:1053; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1054; GFX942-NEXT:    v_mov_b32_e32 v0, 01055; GFX942-NEXT:    ;;#ASMSTART1056; GFX942-NEXT:    ; def v11057; GFX942-NEXT:    ;;#ASMEND1058; GFX942-NEXT:    global_store_short_d16_hi v0, v1, s[0:1] offset:41059; GFX942-NEXT:    global_store_dword v0, v1, s[0:1]1060; GFX942-NEXT:    s_waitcnt vmcnt(0)1061; GFX942-NEXT:    s_setpc_b64 s[30:31]1062  %vec0 = call <2 x i16> asm "; def $0", "=v"()1063  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <3 x i32> <i32 0, i32 1, i32 1>1064  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81065  ret void1066}1067 1068define void @v_shuffle_v3i16_v2i16__1_1_1(ptr addrspace(1) inreg %ptr) {1069; GFX900-LABEL: v_shuffle_v3i16_v2i16__1_1_1:1070; GFX900:       ; %bb.0:1071; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1072; GFX900-NEXT:    ;;#ASMSTART1073; GFX900-NEXT:    ; def v11074; GFX900-NEXT:    ;;#ASMEND1075; GFX900-NEXT:    s_mov_b32 s4, 0x70603021076; GFX900-NEXT:    v_mov_b32_e32 v0, 01077; GFX900-NEXT:    v_perm_b32 v2, v1, v1, s41078; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v11079; GFX900-NEXT:    global_store_dword v0, v2, s[16:17]1080; GFX900-NEXT:    global_store_short v0, v1, s[16:17] offset:41081; GFX900-NEXT:    s_waitcnt vmcnt(0)1082; GFX900-NEXT:    s_setpc_b64 s[30:31]1083;1084; GFX90A-LABEL: v_shuffle_v3i16_v2i16__1_1_1:1085; GFX90A:       ; %bb.0:1086; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1087; GFX90A-NEXT:    ;;#ASMSTART1088; GFX90A-NEXT:    ; def v11089; GFX90A-NEXT:    ;;#ASMEND1090; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021091; GFX90A-NEXT:    v_mov_b32_e32 v0, 01092; GFX90A-NEXT:    v_perm_b32 v2, v1, v1, s41093; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v11094; GFX90A-NEXT:    global_store_dword v0, v2, s[16:17]1095; GFX90A-NEXT:    global_store_short v0, v1, s[16:17] offset:41096; GFX90A-NEXT:    s_waitcnt vmcnt(0)1097; GFX90A-NEXT:    s_setpc_b64 s[30:31]1098;1099; GFX942-LABEL: v_shuffle_v3i16_v2i16__1_1_1:1100; GFX942:       ; %bb.0:1101; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1102; GFX942-NEXT:    ;;#ASMSTART1103; GFX942-NEXT:    ; def v11104; GFX942-NEXT:    ;;#ASMEND1105; GFX942-NEXT:    s_mov_b32 s2, 0x70603021106; GFX942-NEXT:    v_mov_b32_e32 v0, 01107; GFX942-NEXT:    v_perm_b32 v2, v1, v1, s21108; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v11109; GFX942-NEXT:    global_store_dword v0, v2, s[0:1]1110; GFX942-NEXT:    global_store_short v0, v1, s[0:1] offset:41111; GFX942-NEXT:    s_waitcnt vmcnt(0)1112; GFX942-NEXT:    s_setpc_b64 s[30:31]1113  %vec0 = call <2 x i16> asm "; def $0", "=v"()1114  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <3 x i32> <i32 1, i32 1, i32 1>1115  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81116  ret void1117}1118 1119define void @v_shuffle_v3i16_v2i16__2_1_1(ptr addrspace(1) inreg %ptr) {1120; GFX900-LABEL: v_shuffle_v3i16_v2i16__2_1_1:1121; GFX900:       ; %bb.0:1122; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1123; GFX900-NEXT:    v_mov_b32_e32 v0, 01124; GFX900-NEXT:    ;;#ASMSTART1125; GFX900-NEXT:    ; def v11126; GFX900-NEXT:    ;;#ASMEND1127; GFX900-NEXT:    global_store_short_d16_hi v0, v1, s[16:17] offset:41128; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]1129; GFX900-NEXT:    s_waitcnt vmcnt(0)1130; GFX900-NEXT:    s_setpc_b64 s[30:31]1131;1132; GFX90A-LABEL: v_shuffle_v3i16_v2i16__2_1_1:1133; GFX90A:       ; %bb.0:1134; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1135; GFX90A-NEXT:    v_mov_b32_e32 v0, 01136; GFX90A-NEXT:    ;;#ASMSTART1137; GFX90A-NEXT:    ; def v11138; GFX90A-NEXT:    ;;#ASMEND1139; GFX90A-NEXT:    global_store_short_d16_hi v0, v1, s[16:17] offset:41140; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]1141; GFX90A-NEXT:    s_waitcnt vmcnt(0)1142; GFX90A-NEXT:    s_setpc_b64 s[30:31]1143;1144; GFX942-LABEL: v_shuffle_v3i16_v2i16__2_1_1:1145; GFX942:       ; %bb.0:1146; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1147; GFX942-NEXT:    v_mov_b32_e32 v0, 01148; GFX942-NEXT:    ;;#ASMSTART1149; GFX942-NEXT:    ; def v11150; GFX942-NEXT:    ;;#ASMEND1151; GFX942-NEXT:    global_store_short_d16_hi v0, v1, s[0:1] offset:41152; GFX942-NEXT:    global_store_dword v0, v1, s[0:1]1153; GFX942-NEXT:    s_waitcnt vmcnt(0)1154; GFX942-NEXT:    s_setpc_b64 s[30:31]1155  %vec0 = call <2 x i16> asm "; def $0", "=v"()1156  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <3 x i32> <i32 2, i32 1, i32 1>1157  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81158  ret void1159}1160 1161define void @v_shuffle_v3i16_v2i16__3_1_1(ptr addrspace(1) inreg %ptr) {1162; GFX900-LABEL: v_shuffle_v3i16_v2i16__3_1_1:1163; GFX900:       ; %bb.0:1164; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1165; GFX900-NEXT:    ;;#ASMSTART1166; GFX900-NEXT:    ; def v11167; GFX900-NEXT:    ;;#ASMEND1168; GFX900-NEXT:    ;;#ASMSTART1169; GFX900-NEXT:    ; def v21170; GFX900-NEXT:    ;;#ASMEND1171; GFX900-NEXT:    s_mov_b32 s4, 0x70603021172; GFX900-NEXT:    v_mov_b32_e32 v0, 01173; GFX900-NEXT:    v_perm_b32 v2, v1, v2, s41174; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v11175; GFX900-NEXT:    global_store_dword v0, v2, s[16:17]1176; GFX900-NEXT:    global_store_short v0, v1, s[16:17] offset:41177; GFX900-NEXT:    s_waitcnt vmcnt(0)1178; GFX900-NEXT:    s_setpc_b64 s[30:31]1179;1180; GFX90A-LABEL: v_shuffle_v3i16_v2i16__3_1_1:1181; GFX90A:       ; %bb.0:1182; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1183; GFX90A-NEXT:    ;;#ASMSTART1184; GFX90A-NEXT:    ; def v11185; GFX90A-NEXT:    ;;#ASMEND1186; GFX90A-NEXT:    ;;#ASMSTART1187; GFX90A-NEXT:    ; def v21188; GFX90A-NEXT:    ;;#ASMEND1189; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021190; GFX90A-NEXT:    v_mov_b32_e32 v0, 01191; GFX90A-NEXT:    v_perm_b32 v2, v1, v2, s41192; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v11193; GFX90A-NEXT:    global_store_dword v0, v2, s[16:17]1194; GFX90A-NEXT:    global_store_short v0, v1, s[16:17] offset:41195; GFX90A-NEXT:    s_waitcnt vmcnt(0)1196; GFX90A-NEXT:    s_setpc_b64 s[30:31]1197;1198; GFX942-LABEL: v_shuffle_v3i16_v2i16__3_1_1:1199; GFX942:       ; %bb.0:1200; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1201; GFX942-NEXT:    ;;#ASMSTART1202; GFX942-NEXT:    ; def v11203; GFX942-NEXT:    ;;#ASMEND1204; GFX942-NEXT:    ;;#ASMSTART1205; GFX942-NEXT:    ; def v21206; GFX942-NEXT:    ;;#ASMEND1207; GFX942-NEXT:    s_mov_b32 s2, 0x70603021208; GFX942-NEXT:    v_mov_b32_e32 v0, 01209; GFX942-NEXT:    v_perm_b32 v2, v1, v2, s21210; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v11211; GFX942-NEXT:    global_store_dword v0, v2, s[0:1]1212; GFX942-NEXT:    global_store_short v0, v1, s[0:1] offset:41213; GFX942-NEXT:    s_waitcnt vmcnt(0)1214; GFX942-NEXT:    s_setpc_b64 s[30:31]1215  %vec0 = call <2 x i16> asm "; def $0", "=v"()1216  %vec1 = call <2 x i16> asm "; def $0", "=v"()1217  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 1, i32 1>1218  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81219  ret void1220}1221 1222define void @v_shuffle_v3i16_v2i16__3_u_1(ptr addrspace(1) inreg %ptr) {1223; GFX900-LABEL: v_shuffle_v3i16_v2i16__3_u_1:1224; GFX900:       ; %bb.0:1225; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1226; GFX900-NEXT:    v_mov_b32_e32 v0, 01227; GFX900-NEXT:    ;;#ASMSTART1228; GFX900-NEXT:    ; def v11229; GFX900-NEXT:    ;;#ASMEND1230; GFX900-NEXT:    ;;#ASMSTART1231; GFX900-NEXT:    ; def v21232; GFX900-NEXT:    ;;#ASMEND1233; GFX900-NEXT:    v_alignbit_b32 v2, s4, v2, 161234; GFX900-NEXT:    global_store_short_d16_hi v0, v1, s[16:17] offset:41235; GFX900-NEXT:    global_store_dword v0, v2, s[16:17]1236; GFX900-NEXT:    s_waitcnt vmcnt(0)1237; GFX900-NEXT:    s_setpc_b64 s[30:31]1238;1239; GFX90A-LABEL: v_shuffle_v3i16_v2i16__3_u_1:1240; GFX90A:       ; %bb.0:1241; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1242; GFX90A-NEXT:    v_mov_b32_e32 v0, 01243; GFX90A-NEXT:    ;;#ASMSTART1244; GFX90A-NEXT:    ; def v11245; GFX90A-NEXT:    ;;#ASMEND1246; GFX90A-NEXT:    ;;#ASMSTART1247; GFX90A-NEXT:    ; def v21248; GFX90A-NEXT:    ;;#ASMEND1249; GFX90A-NEXT:    v_alignbit_b32 v2, s4, v2, 161250; GFX90A-NEXT:    global_store_short_d16_hi v0, v1, s[16:17] offset:41251; GFX90A-NEXT:    global_store_dword v0, v2, s[16:17]1252; GFX90A-NEXT:    s_waitcnt vmcnt(0)1253; GFX90A-NEXT:    s_setpc_b64 s[30:31]1254;1255; GFX942-LABEL: v_shuffle_v3i16_v2i16__3_u_1:1256; GFX942:       ; %bb.0:1257; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1258; GFX942-NEXT:    v_mov_b32_e32 v0, 01259; GFX942-NEXT:    ;;#ASMSTART1260; GFX942-NEXT:    ; def v11261; GFX942-NEXT:    ;;#ASMEND1262; GFX942-NEXT:    ;;#ASMSTART1263; GFX942-NEXT:    ; def v21264; GFX942-NEXT:    ;;#ASMEND1265; GFX942-NEXT:    s_nop 01266; GFX942-NEXT:    v_alignbit_b32 v2, s0, v2, 161267; GFX942-NEXT:    global_store_short_d16_hi v0, v1, s[0:1] offset:41268; GFX942-NEXT:    global_store_dword v0, v2, s[0:1]1269; GFX942-NEXT:    s_waitcnt vmcnt(0)1270; GFX942-NEXT:    s_setpc_b64 s[30:31]1271  %vec0 = call <2 x i16> asm "; def $0", "=v"()1272  %vec1 = call <2 x i16> asm "; def $0", "=v"()1273  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 poison, i32 1>1274  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81275  ret void1276}1277 1278define void @v_shuffle_v3i16_v2i16__3_0_1(ptr addrspace(1) inreg %ptr) {1279; GFX900-LABEL: v_shuffle_v3i16_v2i16__3_0_1:1280; GFX900:       ; %bb.0:1281; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1282; GFX900-NEXT:    v_mov_b32_e32 v0, 01283; GFX900-NEXT:    ;;#ASMSTART1284; GFX900-NEXT:    ; def v11285; GFX900-NEXT:    ;;#ASMEND1286; GFX900-NEXT:    ;;#ASMSTART1287; GFX900-NEXT:    ; def v21288; GFX900-NEXT:    ;;#ASMEND1289; GFX900-NEXT:    v_alignbit_b32 v2, v1, v2, 161290; GFX900-NEXT:    global_store_short_d16_hi v0, v1, s[16:17] offset:41291; GFX900-NEXT:    global_store_dword v0, v2, s[16:17]1292; GFX900-NEXT:    s_waitcnt vmcnt(0)1293; GFX900-NEXT:    s_setpc_b64 s[30:31]1294;1295; GFX90A-LABEL: v_shuffle_v3i16_v2i16__3_0_1:1296; GFX90A:       ; %bb.0:1297; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1298; GFX90A-NEXT:    v_mov_b32_e32 v0, 01299; GFX90A-NEXT:    ;;#ASMSTART1300; GFX90A-NEXT:    ; def v11301; GFX90A-NEXT:    ;;#ASMEND1302; GFX90A-NEXT:    ;;#ASMSTART1303; GFX90A-NEXT:    ; def v21304; GFX90A-NEXT:    ;;#ASMEND1305; GFX90A-NEXT:    v_alignbit_b32 v2, v1, v2, 161306; GFX90A-NEXT:    global_store_short_d16_hi v0, v1, s[16:17] offset:41307; GFX90A-NEXT:    global_store_dword v0, v2, s[16:17]1308; GFX90A-NEXT:    s_waitcnt vmcnt(0)1309; GFX90A-NEXT:    s_setpc_b64 s[30:31]1310;1311; GFX942-LABEL: v_shuffle_v3i16_v2i16__3_0_1:1312; GFX942:       ; %bb.0:1313; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1314; GFX942-NEXT:    v_mov_b32_e32 v0, 01315; GFX942-NEXT:    ;;#ASMSTART1316; GFX942-NEXT:    ; def v11317; GFX942-NEXT:    ;;#ASMEND1318; GFX942-NEXT:    ;;#ASMSTART1319; GFX942-NEXT:    ; def v21320; GFX942-NEXT:    ;;#ASMEND1321; GFX942-NEXT:    s_nop 01322; GFX942-NEXT:    v_alignbit_b32 v2, v1, v2, 161323; GFX942-NEXT:    global_store_short_d16_hi v0, v1, s[0:1] offset:41324; GFX942-NEXT:    global_store_dword v0, v2, s[0:1]1325; GFX942-NEXT:    s_waitcnt vmcnt(0)1326; GFX942-NEXT:    s_setpc_b64 s[30:31]1327  %vec0 = call <2 x i16> asm "; def $0", "=v"()1328  %vec1 = call <2 x i16> asm "; def $0", "=v"()1329  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 0, i32 1>1330  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81331  ret void1332}1333 1334define void @v_shuffle_v3i16_v2i16__3_2_1(ptr addrspace(1) inreg %ptr) {1335; GFX900-LABEL: v_shuffle_v3i16_v2i16__3_2_1:1336; GFX900:       ; %bb.0:1337; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1338; GFX900-NEXT:    v_mov_b32_e32 v0, 01339; GFX900-NEXT:    ;;#ASMSTART1340; GFX900-NEXT:    ; def v11341; GFX900-NEXT:    ;;#ASMEND1342; GFX900-NEXT:    ;;#ASMSTART1343; GFX900-NEXT:    ; def v21344; GFX900-NEXT:    ;;#ASMEND1345; GFX900-NEXT:    v_alignbit_b32 v2, v2, v2, 161346; GFX900-NEXT:    global_store_short_d16_hi v0, v1, s[16:17] offset:41347; GFX900-NEXT:    global_store_dword v0, v2, s[16:17]1348; GFX900-NEXT:    s_waitcnt vmcnt(0)1349; GFX900-NEXT:    s_setpc_b64 s[30:31]1350;1351; GFX90A-LABEL: v_shuffle_v3i16_v2i16__3_2_1:1352; GFX90A:       ; %bb.0:1353; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1354; GFX90A-NEXT:    v_mov_b32_e32 v0, 01355; GFX90A-NEXT:    ;;#ASMSTART1356; GFX90A-NEXT:    ; def v11357; GFX90A-NEXT:    ;;#ASMEND1358; GFX90A-NEXT:    ;;#ASMSTART1359; GFX90A-NEXT:    ; def v21360; GFX90A-NEXT:    ;;#ASMEND1361; GFX90A-NEXT:    v_alignbit_b32 v2, v2, v2, 161362; GFX90A-NEXT:    global_store_short_d16_hi v0, v1, s[16:17] offset:41363; GFX90A-NEXT:    global_store_dword v0, v2, s[16:17]1364; GFX90A-NEXT:    s_waitcnt vmcnt(0)1365; GFX90A-NEXT:    s_setpc_b64 s[30:31]1366;1367; GFX942-LABEL: v_shuffle_v3i16_v2i16__3_2_1:1368; GFX942:       ; %bb.0:1369; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1370; GFX942-NEXT:    v_mov_b32_e32 v0, 01371; GFX942-NEXT:    ;;#ASMSTART1372; GFX942-NEXT:    ; def v11373; GFX942-NEXT:    ;;#ASMEND1374; GFX942-NEXT:    ;;#ASMSTART1375; GFX942-NEXT:    ; def v21376; GFX942-NEXT:    ;;#ASMEND1377; GFX942-NEXT:    s_nop 01378; GFX942-NEXT:    v_alignbit_b32 v2, v2, v2, 161379; GFX942-NEXT:    global_store_short_d16_hi v0, v1, s[0:1] offset:41380; GFX942-NEXT:    global_store_dword v0, v2, s[0:1]1381; GFX942-NEXT:    s_waitcnt vmcnt(0)1382; GFX942-NEXT:    s_setpc_b64 s[30:31]1383  %vec0 = call <2 x i16> asm "; def $0", "=v"()1384  %vec1 = call <2 x i16> asm "; def $0", "=v"()1385  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 2, i32 1>1386  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81387  ret void1388}1389 1390define void @v_shuffle_v3i16_v2i16__u_2_2(ptr addrspace(1) inreg %ptr) {1391; GFX9-LABEL: v_shuffle_v3i16_v2i16__u_2_2:1392; GFX9:       ; %bb.0:1393; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1394; GFX9-NEXT:    s_setpc_b64 s[30:31]1395  %vec0 = call <2 x i16> asm "; def $0", "=v"()1396  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <3 x i32> <i32 poison, i32 2, i32 2>1397  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81398  ret void1399}1400 1401define void @v_shuffle_v3i16_v2i16__0_2_2(ptr addrspace(1) inreg %ptr) {1402; GFX900-LABEL: v_shuffle_v3i16_v2i16__0_2_2:1403; GFX900:       ; %bb.0:1404; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1405; GFX900-NEXT:    v_mov_b32_e32 v0, 01406; GFX900-NEXT:    ;;#ASMSTART1407; GFX900-NEXT:    ; def v11408; GFX900-NEXT:    ;;#ASMEND1409; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]1410; GFX900-NEXT:    s_waitcnt vmcnt(0)1411; GFX900-NEXT:    s_setpc_b64 s[30:31]1412;1413; GFX90A-LABEL: v_shuffle_v3i16_v2i16__0_2_2:1414; GFX90A:       ; %bb.0:1415; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1416; GFX90A-NEXT:    v_mov_b32_e32 v0, 01417; GFX90A-NEXT:    ;;#ASMSTART1418; GFX90A-NEXT:    ; def v11419; GFX90A-NEXT:    ;;#ASMEND1420; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]1421; GFX90A-NEXT:    s_waitcnt vmcnt(0)1422; GFX90A-NEXT:    s_setpc_b64 s[30:31]1423;1424; GFX942-LABEL: v_shuffle_v3i16_v2i16__0_2_2:1425; GFX942:       ; %bb.0:1426; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1427; GFX942-NEXT:    v_mov_b32_e32 v0, 01428; GFX942-NEXT:    ;;#ASMSTART1429; GFX942-NEXT:    ; def v11430; GFX942-NEXT:    ;;#ASMEND1431; GFX942-NEXT:    global_store_dword v0, v1, 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  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <3 x i32> <i32 0, i32 2, i32 2>1436  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81437  ret void1438}1439 1440define void @v_shuffle_v3i16_v2i16__1_2_2(ptr addrspace(1) inreg %ptr) {1441; GFX900-LABEL: v_shuffle_v3i16_v2i16__1_2_2:1442; GFX900:       ; %bb.0:1443; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1444; GFX900-NEXT:    ;;#ASMSTART1445; GFX900-NEXT:    ; def v11446; GFX900-NEXT:    ;;#ASMEND1447; GFX900-NEXT:    v_mov_b32_e32 v0, 01448; GFX900-NEXT:    v_alignbit_b32 v1, s4, v1, 161449; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]1450; GFX900-NEXT:    s_waitcnt vmcnt(0)1451; GFX900-NEXT:    s_setpc_b64 s[30:31]1452;1453; GFX90A-LABEL: v_shuffle_v3i16_v2i16__1_2_2:1454; GFX90A:       ; %bb.0:1455; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1456; GFX90A-NEXT:    ;;#ASMSTART1457; GFX90A-NEXT:    ; def v11458; GFX90A-NEXT:    ;;#ASMEND1459; GFX90A-NEXT:    v_mov_b32_e32 v0, 01460; GFX90A-NEXT:    v_alignbit_b32 v1, s4, v1, 161461; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]1462; GFX90A-NEXT:    s_waitcnt vmcnt(0)1463; GFX90A-NEXT:    s_setpc_b64 s[30:31]1464;1465; GFX942-LABEL: v_shuffle_v3i16_v2i16__1_2_2:1466; GFX942:       ; %bb.0:1467; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1468; GFX942-NEXT:    ;;#ASMSTART1469; GFX942-NEXT:    ; def v11470; GFX942-NEXT:    ;;#ASMEND1471; GFX942-NEXT:    v_mov_b32_e32 v0, 01472; GFX942-NEXT:    v_alignbit_b32 v1, s0, v1, 161473; GFX942-NEXT:    global_store_dword v0, v1, s[0:1]1474; GFX942-NEXT:    s_waitcnt vmcnt(0)1475; GFX942-NEXT:    s_setpc_b64 s[30:31]1476  %vec0 = call <2 x i16> asm "; def $0", "=v"()1477  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <3 x i32> <i32 1, i32 2, i32 2>1478  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81479  ret void1480}1481 1482define void @v_shuffle_v3i16_v2i16__2_2_2(ptr addrspace(1) inreg %ptr) {1483; GFX9-LABEL: v_shuffle_v3i16_v2i16__2_2_2:1484; GFX9:       ; %bb.0:1485; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1486; GFX9-NEXT:    s_setpc_b64 s[30:31]1487  %vec0 = call <2 x i16> asm "; def $0", "=v"()1488  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <3 x i32> <i32 2, i32 2, i32 2>1489  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81490  ret void1491}1492 1493define void @v_shuffle_v3i16_v2i16__3_2_2(ptr addrspace(1) inreg %ptr) {1494; GFX900-LABEL: v_shuffle_v3i16_v2i16__3_2_2:1495; GFX900:       ; %bb.0:1496; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1497; GFX900-NEXT:    v_mov_b32_e32 v0, 01498; GFX900-NEXT:    ;;#ASMSTART1499; GFX900-NEXT:    ; def v11500; GFX900-NEXT:    ;;#ASMEND1501; GFX900-NEXT:    v_alignbit_b32 v2, v1, v1, 161502; GFX900-NEXT:    global_store_short v0, v1, s[16:17] offset:41503; GFX900-NEXT:    global_store_dword v0, v2, s[16:17]1504; GFX900-NEXT:    s_waitcnt vmcnt(0)1505; GFX900-NEXT:    s_setpc_b64 s[30:31]1506;1507; GFX90A-LABEL: v_shuffle_v3i16_v2i16__3_2_2:1508; GFX90A:       ; %bb.0:1509; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1510; GFX90A-NEXT:    v_mov_b32_e32 v0, 01511; GFX90A-NEXT:    ;;#ASMSTART1512; GFX90A-NEXT:    ; def v11513; GFX90A-NEXT:    ;;#ASMEND1514; GFX90A-NEXT:    v_alignbit_b32 v2, v1, v1, 161515; GFX90A-NEXT:    global_store_short v0, v1, s[16:17] offset:41516; GFX90A-NEXT:    global_store_dword v0, v2, s[16:17]1517; GFX90A-NEXT:    s_waitcnt vmcnt(0)1518; GFX90A-NEXT:    s_setpc_b64 s[30:31]1519;1520; GFX942-LABEL: v_shuffle_v3i16_v2i16__3_2_2:1521; GFX942:       ; %bb.0:1522; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1523; GFX942-NEXT:    v_mov_b32_e32 v0, 01524; GFX942-NEXT:    ;;#ASMSTART1525; GFX942-NEXT:    ; def v11526; GFX942-NEXT:    ;;#ASMEND1527; GFX942-NEXT:    s_nop 01528; GFX942-NEXT:    v_alignbit_b32 v2, v1, v1, 161529; GFX942-NEXT:    global_store_short v0, v1, s[0:1] offset:41530; GFX942-NEXT:    global_store_dword v0, v2, s[0:1]1531; GFX942-NEXT:    s_waitcnt vmcnt(0)1532; GFX942-NEXT:    s_setpc_b64 s[30:31]1533  %vec0 = call <2 x i16> asm "; def $0", "=v"()1534  %vec1 = call <2 x i16> asm "; def $0", "=v"()1535  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 2, i32 2>1536  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81537  ret void1538}1539 1540define void @v_shuffle_v3i16_v2i16__3_u_2(ptr addrspace(1) inreg %ptr) {1541; GFX900-LABEL: v_shuffle_v3i16_v2i16__3_u_2:1542; GFX900:       ; %bb.0:1543; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1544; GFX900-NEXT:    v_mov_b32_e32 v0, 01545; GFX900-NEXT:    ;;#ASMSTART1546; GFX900-NEXT:    ; def v11547; GFX900-NEXT:    ;;#ASMEND1548; GFX900-NEXT:    v_alignbit_b32 v2, s4, v1, 161549; GFX900-NEXT:    global_store_short v0, v1, s[16:17] offset:41550; GFX900-NEXT:    global_store_dword v0, v2, s[16:17]1551; GFX900-NEXT:    s_waitcnt vmcnt(0)1552; GFX900-NEXT:    s_setpc_b64 s[30:31]1553;1554; GFX90A-LABEL: v_shuffle_v3i16_v2i16__3_u_2:1555; GFX90A:       ; %bb.0:1556; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1557; GFX90A-NEXT:    v_mov_b32_e32 v0, 01558; GFX90A-NEXT:    ;;#ASMSTART1559; GFX90A-NEXT:    ; def v11560; GFX90A-NEXT:    ;;#ASMEND1561; GFX90A-NEXT:    v_alignbit_b32 v2, s4, v1, 161562; GFX90A-NEXT:    global_store_short v0, v1, s[16:17] offset:41563; GFX90A-NEXT:    global_store_dword v0, v2, s[16:17]1564; GFX90A-NEXT:    s_waitcnt vmcnt(0)1565; GFX90A-NEXT:    s_setpc_b64 s[30:31]1566;1567; GFX942-LABEL: v_shuffle_v3i16_v2i16__3_u_2:1568; GFX942:       ; %bb.0:1569; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1570; GFX942-NEXT:    v_mov_b32_e32 v0, 01571; GFX942-NEXT:    ;;#ASMSTART1572; GFX942-NEXT:    ; def v11573; GFX942-NEXT:    ;;#ASMEND1574; GFX942-NEXT:    s_nop 01575; GFX942-NEXT:    v_alignbit_b32 v2, s0, v1, 161576; GFX942-NEXT:    global_store_short v0, v1, s[0:1] offset:41577; GFX942-NEXT:    global_store_dword v0, v2, s[0:1]1578; GFX942-NEXT:    s_waitcnt vmcnt(0)1579; GFX942-NEXT:    s_setpc_b64 s[30:31]1580  %vec0 = call <2 x i16> asm "; def $0", "=v"()1581  %vec1 = call <2 x i16> asm "; def $0", "=v"()1582  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 poison, i32 2>1583  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81584  ret void1585}1586 1587define void @v_shuffle_v3i16_v2i16__3_0_2(ptr addrspace(1) inreg %ptr) {1588; GFX900-LABEL: v_shuffle_v3i16_v2i16__3_0_2:1589; GFX900:       ; %bb.0:1590; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1591; GFX900-NEXT:    v_mov_b32_e32 v0, 01592; GFX900-NEXT:    ;;#ASMSTART1593; GFX900-NEXT:    ; def v11594; GFX900-NEXT:    ;;#ASMEND1595; GFX900-NEXT:    ;;#ASMSTART1596; GFX900-NEXT:    ; def v21597; GFX900-NEXT:    ;;#ASMEND1598; GFX900-NEXT:    v_alignbit_b32 v1, v1, v2, 161599; GFX900-NEXT:    global_store_short v0, v2, s[16:17] offset:41600; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]1601; GFX900-NEXT:    s_waitcnt vmcnt(0)1602; GFX900-NEXT:    s_setpc_b64 s[30:31]1603;1604; GFX90A-LABEL: v_shuffle_v3i16_v2i16__3_0_2:1605; GFX90A:       ; %bb.0:1606; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1607; GFX90A-NEXT:    v_mov_b32_e32 v0, 01608; GFX90A-NEXT:    ;;#ASMSTART1609; GFX90A-NEXT:    ; def v11610; GFX90A-NEXT:    ;;#ASMEND1611; GFX90A-NEXT:    ;;#ASMSTART1612; GFX90A-NEXT:    ; def v21613; GFX90A-NEXT:    ;;#ASMEND1614; GFX90A-NEXT:    v_alignbit_b32 v1, v1, v2, 161615; GFX90A-NEXT:    global_store_short v0, v2, s[16:17] offset:41616; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]1617; GFX90A-NEXT:    s_waitcnt vmcnt(0)1618; GFX90A-NEXT:    s_setpc_b64 s[30:31]1619;1620; GFX942-LABEL: v_shuffle_v3i16_v2i16__3_0_2:1621; GFX942:       ; %bb.0:1622; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1623; GFX942-NEXT:    v_mov_b32_e32 v0, 01624; GFX942-NEXT:    ;;#ASMSTART1625; GFX942-NEXT:    ; def v11626; GFX942-NEXT:    ;;#ASMEND1627; GFX942-NEXT:    ;;#ASMSTART1628; GFX942-NEXT:    ; def v21629; GFX942-NEXT:    ;;#ASMEND1630; GFX942-NEXT:    s_nop 01631; GFX942-NEXT:    v_alignbit_b32 v1, v1, v2, 161632; GFX942-NEXT:    global_store_short v0, v2, s[0:1] offset:41633; GFX942-NEXT:    global_store_dword v0, v1, s[0:1]1634; GFX942-NEXT:    s_waitcnt vmcnt(0)1635; GFX942-NEXT:    s_setpc_b64 s[30:31]1636  %vec0 = call <2 x i16> asm "; def $0", "=v"()1637  %vec1 = call <2 x i16> asm "; def $0", "=v"()1638  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 0, i32 2>1639  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81640  ret void1641}1642 1643define void @v_shuffle_v3i16_v2i16__3_1_2(ptr addrspace(1) inreg %ptr) {1644; GFX900-LABEL: v_shuffle_v3i16_v2i16__3_1_2:1645; GFX900:       ; %bb.0:1646; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1647; GFX900-NEXT:    v_mov_b32_e32 v0, 01648; GFX900-NEXT:    ;;#ASMSTART1649; GFX900-NEXT:    ; def v11650; GFX900-NEXT:    ;;#ASMEND1651; GFX900-NEXT:    ;;#ASMSTART1652; GFX900-NEXT:    ; def v21653; GFX900-NEXT:    ;;#ASMEND1654; GFX900-NEXT:    s_mov_b32 s4, 0x70603021655; GFX900-NEXT:    v_perm_b32 v1, v1, v2, s41656; GFX900-NEXT:    global_store_short v0, v2, s[16:17] offset:41657; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]1658; GFX900-NEXT:    s_waitcnt vmcnt(0)1659; GFX900-NEXT:    s_setpc_b64 s[30:31]1660;1661; GFX90A-LABEL: v_shuffle_v3i16_v2i16__3_1_2:1662; GFX90A:       ; %bb.0:1663; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1664; GFX90A-NEXT:    v_mov_b32_e32 v0, 01665; GFX90A-NEXT:    ;;#ASMSTART1666; GFX90A-NEXT:    ; def v11667; GFX90A-NEXT:    ;;#ASMEND1668; GFX90A-NEXT:    ;;#ASMSTART1669; GFX90A-NEXT:    ; def v21670; GFX90A-NEXT:    ;;#ASMEND1671; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021672; GFX90A-NEXT:    v_perm_b32 v1, v1, v2, s41673; GFX90A-NEXT:    global_store_short v0, v2, s[16:17] offset:41674; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]1675; GFX90A-NEXT:    s_waitcnt vmcnt(0)1676; GFX90A-NEXT:    s_setpc_b64 s[30:31]1677;1678; GFX942-LABEL: v_shuffle_v3i16_v2i16__3_1_2:1679; GFX942:       ; %bb.0:1680; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1681; GFX942-NEXT:    v_mov_b32_e32 v0, 01682; GFX942-NEXT:    ;;#ASMSTART1683; GFX942-NEXT:    ; def v11684; GFX942-NEXT:    ;;#ASMEND1685; GFX942-NEXT:    ;;#ASMSTART1686; GFX942-NEXT:    ; def v21687; GFX942-NEXT:    ;;#ASMEND1688; GFX942-NEXT:    s_mov_b32 s2, 0x70603021689; GFX942-NEXT:    v_perm_b32 v1, v1, v2, s21690; GFX942-NEXT:    global_store_short v0, v2, s[0:1] offset:41691; GFX942-NEXT:    global_store_dword v0, v1, s[0:1]1692; GFX942-NEXT:    s_waitcnt vmcnt(0)1693; GFX942-NEXT:    s_setpc_b64 s[30:31]1694  %vec0 = call <2 x i16> asm "; def $0", "=v"()1695  %vec1 = call <2 x i16> asm "; def $0", "=v"()1696  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 1, i32 2>1697  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81698  ret void1699}1700 1701define void @v_shuffle_v3i16_v2i16__u_3_3(ptr addrspace(1) inreg %ptr) {1702; GFX900-LABEL: v_shuffle_v3i16_v2i16__u_3_3:1703; GFX900:       ; %bb.0:1704; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1705; GFX900-NEXT:    v_mov_b32_e32 v0, 01706; GFX900-NEXT:    ;;#ASMSTART1707; GFX900-NEXT:    ; def v11708; GFX900-NEXT:    ;;#ASMEND1709; GFX900-NEXT:    global_store_short_d16_hi v0, v1, s[16:17] offset:41710; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]1711; GFX900-NEXT:    s_waitcnt vmcnt(0)1712; GFX900-NEXT:    s_setpc_b64 s[30:31]1713;1714; GFX90A-LABEL: v_shuffle_v3i16_v2i16__u_3_3:1715; GFX90A:       ; %bb.0:1716; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1717; GFX90A-NEXT:    v_mov_b32_e32 v0, 01718; GFX90A-NEXT:    ;;#ASMSTART1719; GFX90A-NEXT:    ; def v11720; GFX90A-NEXT:    ;;#ASMEND1721; GFX90A-NEXT:    global_store_short_d16_hi v0, v1, s[16:17] offset:41722; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]1723; GFX90A-NEXT:    s_waitcnt vmcnt(0)1724; GFX90A-NEXT:    s_setpc_b64 s[30:31]1725;1726; GFX942-LABEL: v_shuffle_v3i16_v2i16__u_3_3:1727; GFX942:       ; %bb.0:1728; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1729; GFX942-NEXT:    v_mov_b32_e32 v0, 01730; GFX942-NEXT:    ;;#ASMSTART1731; GFX942-NEXT:    ; def v11732; GFX942-NEXT:    ;;#ASMEND1733; GFX942-NEXT:    global_store_short_d16_hi v0, v1, s[0:1] offset:41734; GFX942-NEXT:    global_store_dword v0, v1, s[0:1]1735; GFX942-NEXT:    s_waitcnt vmcnt(0)1736; GFX942-NEXT:    s_setpc_b64 s[30:31]1737  %vec0 = call <2 x i16> asm "; def $0", "=v"()1738  %vec1 = call <2 x i16> asm "; def $0", "=v"()1739  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 poison, i32 3, i32 3>1740  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81741  ret void1742}1743 1744define void @v_shuffle_v3i16_v2i16__0_3_3(ptr addrspace(1) inreg %ptr) {1745; GFX900-LABEL: v_shuffle_v3i16_v2i16__0_3_3:1746; GFX900:       ; %bb.0:1747; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1748; GFX900-NEXT:    ;;#ASMSTART1749; GFX900-NEXT:    ; def v11750; GFX900-NEXT:    ;;#ASMEND1751; GFX900-NEXT:    ;;#ASMSTART1752; GFX900-NEXT:    ; def v21753; GFX900-NEXT:    ;;#ASMEND1754; GFX900-NEXT:    s_mov_b32 s4, 0xffff1755; GFX900-NEXT:    v_mov_b32_e32 v0, 01756; GFX900-NEXT:    v_bfi_b32 v1, s4, v1, v21757; GFX900-NEXT:    v_lshrrev_b32_e32 v2, 16, v21758; GFX900-NEXT:    global_store_short v0, v2, s[16:17] offset:41759; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]1760; GFX900-NEXT:    s_waitcnt vmcnt(0)1761; GFX900-NEXT:    s_setpc_b64 s[30:31]1762;1763; GFX90A-LABEL: v_shuffle_v3i16_v2i16__0_3_3:1764; GFX90A:       ; %bb.0:1765; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1766; GFX90A-NEXT:    ;;#ASMSTART1767; GFX90A-NEXT:    ; def v11768; GFX90A-NEXT:    ;;#ASMEND1769; GFX90A-NEXT:    ;;#ASMSTART1770; GFX90A-NEXT:    ; def v21771; GFX90A-NEXT:    ;;#ASMEND1772; GFX90A-NEXT:    s_mov_b32 s4, 0xffff1773; GFX90A-NEXT:    v_mov_b32_e32 v0, 01774; GFX90A-NEXT:    v_bfi_b32 v1, s4, v1, v21775; GFX90A-NEXT:    v_lshrrev_b32_e32 v2, 16, v21776; GFX90A-NEXT:    global_store_short v0, v2, s[16:17] offset:41777; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]1778; GFX90A-NEXT:    s_waitcnt vmcnt(0)1779; GFX90A-NEXT:    s_setpc_b64 s[30:31]1780;1781; GFX942-LABEL: v_shuffle_v3i16_v2i16__0_3_3:1782; GFX942:       ; %bb.0:1783; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1784; GFX942-NEXT:    ;;#ASMSTART1785; GFX942-NEXT:    ; def v11786; GFX942-NEXT:    ;;#ASMEND1787; GFX942-NEXT:    ;;#ASMSTART1788; GFX942-NEXT:    ; def v21789; GFX942-NEXT:    ;;#ASMEND1790; GFX942-NEXT:    s_mov_b32 s2, 0xffff1791; GFX942-NEXT:    v_mov_b32_e32 v0, 01792; GFX942-NEXT:    v_bfi_b32 v1, s2, v1, v21793; GFX942-NEXT:    v_lshrrev_b32_e32 v2, 16, v21794; GFX942-NEXT:    global_store_short v0, v2, s[0:1] offset:41795; GFX942-NEXT:    global_store_dword v0, v1, s[0:1]1796; GFX942-NEXT:    s_waitcnt vmcnt(0)1797; GFX942-NEXT:    s_setpc_b64 s[30:31]1798  %vec0 = call <2 x i16> asm "; def $0", "=v"()1799  %vec1 = call <2 x i16> asm "; def $0", "=v"()1800  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 0, i32 3, i32 3>1801  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81802  ret void1803}1804 1805define void @v_shuffle_v3i16_v2i16__1_3_3(ptr addrspace(1) inreg %ptr) {1806; GFX900-LABEL: v_shuffle_v3i16_v2i16__1_3_3:1807; GFX900:       ; %bb.0:1808; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1809; GFX900-NEXT:    ;;#ASMSTART1810; GFX900-NEXT:    ; def v11811; GFX900-NEXT:    ;;#ASMEND1812; GFX900-NEXT:    s_mov_b32 s4, 0x70603021813; GFX900-NEXT:    v_mov_b32_e32 v0, 01814; GFX900-NEXT:    ;;#ASMSTART1815; GFX900-NEXT:    ; def v21816; GFX900-NEXT:    ;;#ASMEND1817; GFX900-NEXT:    v_perm_b32 v1, v2, v1, s41818; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]1819; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v21820; GFX900-NEXT:    global_store_short v0, v1, s[16:17] offset:41821; GFX900-NEXT:    s_waitcnt vmcnt(0)1822; GFX900-NEXT:    s_setpc_b64 s[30:31]1823;1824; GFX90A-LABEL: v_shuffle_v3i16_v2i16__1_3_3:1825; GFX90A:       ; %bb.0:1826; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1827; GFX90A-NEXT:    ;;#ASMSTART1828; GFX90A-NEXT:    ; def v11829; GFX90A-NEXT:    ;;#ASMEND1830; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021831; GFX90A-NEXT:    v_mov_b32_e32 v0, 01832; GFX90A-NEXT:    ;;#ASMSTART1833; GFX90A-NEXT:    ; def v21834; GFX90A-NEXT:    ;;#ASMEND1835; GFX90A-NEXT:    v_perm_b32 v1, v2, v1, s41836; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]1837; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v21838; GFX90A-NEXT:    global_store_short v0, v1, s[16:17] offset:41839; GFX90A-NEXT:    s_waitcnt vmcnt(0)1840; GFX90A-NEXT:    s_setpc_b64 s[30:31]1841;1842; GFX942-LABEL: v_shuffle_v3i16_v2i16__1_3_3:1843; GFX942:       ; %bb.0:1844; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1845; GFX942-NEXT:    ;;#ASMSTART1846; GFX942-NEXT:    ; def v11847; GFX942-NEXT:    ;;#ASMEND1848; GFX942-NEXT:    s_mov_b32 s2, 0x70603021849; GFX942-NEXT:    v_mov_b32_e32 v0, 01850; GFX942-NEXT:    ;;#ASMSTART1851; GFX942-NEXT:    ; def v21852; GFX942-NEXT:    ;;#ASMEND1853; GFX942-NEXT:    s_nop 01854; GFX942-NEXT:    v_perm_b32 v1, v2, v1, s21855; GFX942-NEXT:    global_store_dword v0, v1, s[0:1]1856; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v21857; GFX942-NEXT:    global_store_short v0, v1, s[0:1] offset:41858; GFX942-NEXT:    s_waitcnt vmcnt(0)1859; GFX942-NEXT:    s_setpc_b64 s[30:31]1860  %vec0 = call <2 x i16> asm "; def $0", "=v"()1861  %vec1 = call <2 x i16> asm "; def $0", "=v"()1862  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 1, i32 3, i32 3>1863  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81864  ret void1865}1866 1867define void @v_shuffle_v3i16_v2i16__2_3_3(ptr addrspace(1) inreg %ptr) {1868; GFX900-LABEL: v_shuffle_v3i16_v2i16__2_3_3:1869; GFX900:       ; %bb.0:1870; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1871; GFX900-NEXT:    v_mov_b32_e32 v0, 01872; GFX900-NEXT:    ;;#ASMSTART1873; GFX900-NEXT:    ; def v11874; GFX900-NEXT:    ;;#ASMEND1875; GFX900-NEXT:    global_store_short_d16_hi v0, v1, s[16:17] offset:41876; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]1877; GFX900-NEXT:    s_waitcnt vmcnt(0)1878; GFX900-NEXT:    s_setpc_b64 s[30:31]1879;1880; GFX90A-LABEL: v_shuffle_v3i16_v2i16__2_3_3:1881; GFX90A:       ; %bb.0:1882; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1883; GFX90A-NEXT:    v_mov_b32_e32 v0, 01884; GFX90A-NEXT:    ;;#ASMSTART1885; GFX90A-NEXT:    ; def v11886; GFX90A-NEXT:    ;;#ASMEND1887; GFX90A-NEXT:    global_store_short_d16_hi v0, v1, s[16:17] offset:41888; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]1889; GFX90A-NEXT:    s_waitcnt vmcnt(0)1890; GFX90A-NEXT:    s_setpc_b64 s[30:31]1891;1892; GFX942-LABEL: v_shuffle_v3i16_v2i16__2_3_3:1893; GFX942:       ; %bb.0:1894; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1895; GFX942-NEXT:    v_mov_b32_e32 v0, 01896; GFX942-NEXT:    ;;#ASMSTART1897; GFX942-NEXT:    ; def v11898; GFX942-NEXT:    ;;#ASMEND1899; GFX942-NEXT:    global_store_short_d16_hi v0, v1, s[0:1] offset:41900; GFX942-NEXT:    global_store_dword v0, v1, s[0:1]1901; GFX942-NEXT:    s_waitcnt vmcnt(0)1902; GFX942-NEXT:    s_setpc_b64 s[30:31]1903  %vec0 = call <2 x i16> asm "; def $0", "=v"()1904  %vec1 = call <2 x i16> asm "; def $0", "=v"()1905  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 2, i32 3, i32 3>1906  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81907  ret void1908}1909 1910define void @v_shuffle_v3i16_v2i16__3_u_3(ptr addrspace(1) inreg %ptr) {1911; GFX900-LABEL: v_shuffle_v3i16_v2i16__3_u_3:1912; GFX900:       ; %bb.0:1913; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1914; GFX900-NEXT:    ;;#ASMSTART1915; GFX900-NEXT:    ; def v11916; GFX900-NEXT:    ;;#ASMEND1917; GFX900-NEXT:    v_mov_b32_e32 v0, 01918; GFX900-NEXT:    v_alignbit_b32 v2, s4, v1, 161919; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v11920; GFX900-NEXT:    global_store_dword v0, v2, s[16:17]1921; GFX900-NEXT:    global_store_short v0, v1, s[16:17] offset:41922; GFX900-NEXT:    s_waitcnt vmcnt(0)1923; GFX900-NEXT:    s_setpc_b64 s[30:31]1924;1925; GFX90A-LABEL: v_shuffle_v3i16_v2i16__3_u_3:1926; GFX90A:       ; %bb.0:1927; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1928; GFX90A-NEXT:    ;;#ASMSTART1929; GFX90A-NEXT:    ; def v11930; GFX90A-NEXT:    ;;#ASMEND1931; GFX90A-NEXT:    v_mov_b32_e32 v0, 01932; GFX90A-NEXT:    v_alignbit_b32 v2, s4, v1, 161933; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v11934; GFX90A-NEXT:    global_store_dword v0, v2, s[16:17]1935; GFX90A-NEXT:    global_store_short v0, v1, s[16:17] offset:41936; GFX90A-NEXT:    s_waitcnt vmcnt(0)1937; GFX90A-NEXT:    s_setpc_b64 s[30:31]1938;1939; GFX942-LABEL: v_shuffle_v3i16_v2i16__3_u_3:1940; GFX942:       ; %bb.0:1941; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1942; GFX942-NEXT:    ;;#ASMSTART1943; GFX942-NEXT:    ; def v11944; GFX942-NEXT:    ;;#ASMEND1945; GFX942-NEXT:    v_mov_b32_e32 v0, 01946; GFX942-NEXT:    v_alignbit_b32 v2, s0, v1, 161947; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v11948; GFX942-NEXT:    global_store_dword v0, v2, s[0:1]1949; GFX942-NEXT:    global_store_short v0, v1, s[0:1] offset:41950; GFX942-NEXT:    s_waitcnt vmcnt(0)1951; GFX942-NEXT:    s_setpc_b64 s[30:31]1952  %vec0 = call <2 x i16> asm "; def $0", "=v"()1953  %vec1 = call <2 x i16> asm "; def $0", "=v"()1954  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 poison, i32 3>1955  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 81956  ret void1957}1958 1959define void @v_shuffle_v3i16_v2i16__3_0_3(ptr addrspace(1) inreg %ptr) {1960; GFX900-LABEL: v_shuffle_v3i16_v2i16__3_0_3:1961; GFX900:       ; %bb.0:1962; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1963; GFX900-NEXT:    ;;#ASMSTART1964; GFX900-NEXT:    ; def v11965; GFX900-NEXT:    ;;#ASMEND1966; GFX900-NEXT:    ;;#ASMSTART1967; GFX900-NEXT:    ; def v21968; GFX900-NEXT:    ;;#ASMEND1969; GFX900-NEXT:    v_mov_b32_e32 v0, 01970; GFX900-NEXT:    v_alignbit_b32 v1, v1, v2, 161971; GFX900-NEXT:    v_lshrrev_b32_e32 v2, 16, v21972; GFX900-NEXT:    global_store_short v0, v2, s[16:17] offset:41973; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]1974; GFX900-NEXT:    s_waitcnt vmcnt(0)1975; GFX900-NEXT:    s_setpc_b64 s[30:31]1976;1977; GFX90A-LABEL: v_shuffle_v3i16_v2i16__3_0_3:1978; GFX90A:       ; %bb.0:1979; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1980; GFX90A-NEXT:    ;;#ASMSTART1981; GFX90A-NEXT:    ; def v11982; GFX90A-NEXT:    ;;#ASMEND1983; GFX90A-NEXT:    ;;#ASMSTART1984; GFX90A-NEXT:    ; def v21985; GFX90A-NEXT:    ;;#ASMEND1986; GFX90A-NEXT:    v_mov_b32_e32 v0, 01987; GFX90A-NEXT:    v_alignbit_b32 v1, v1, v2, 161988; GFX90A-NEXT:    v_lshrrev_b32_e32 v2, 16, v21989; GFX90A-NEXT:    global_store_short v0, v2, s[16:17] offset:41990; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]1991; GFX90A-NEXT:    s_waitcnt vmcnt(0)1992; GFX90A-NEXT:    s_setpc_b64 s[30:31]1993;1994; GFX942-LABEL: v_shuffle_v3i16_v2i16__3_0_3:1995; GFX942:       ; %bb.0:1996; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1997; GFX942-NEXT:    ;;#ASMSTART1998; GFX942-NEXT:    ; def v11999; GFX942-NEXT:    ;;#ASMEND2000; GFX942-NEXT:    ;;#ASMSTART2001; GFX942-NEXT:    ; def v22002; GFX942-NEXT:    ;;#ASMEND2003; GFX942-NEXT:    v_mov_b32_e32 v0, 02004; GFX942-NEXT:    v_alignbit_b32 v1, v1, v2, 162005; GFX942-NEXT:    v_lshrrev_b32_e32 v2, 16, v22006; GFX942-NEXT:    global_store_short v0, v2, s[0:1] offset:42007; GFX942-NEXT:    global_store_dword v0, v1, s[0:1]2008; GFX942-NEXT:    s_waitcnt vmcnt(0)2009; GFX942-NEXT:    s_setpc_b64 s[30:31]2010  %vec0 = call <2 x i16> asm "; def $0", "=v"()2011  %vec1 = call <2 x i16> asm "; def $0", "=v"()2012  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 0, i32 3>2013  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 82014  ret void2015}2016 2017define void @v_shuffle_v3i16_v2i16__3_1_3(ptr addrspace(1) inreg %ptr) {2018; GFX900-LABEL: v_shuffle_v3i16_v2i16__3_1_3:2019; GFX900:       ; %bb.0:2020; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2021; GFX900-NEXT:    ;;#ASMSTART2022; GFX900-NEXT:    ; def v12023; GFX900-NEXT:    ;;#ASMEND2024; GFX900-NEXT:    s_mov_b32 s4, 0x70603022025; GFX900-NEXT:    v_mov_b32_e32 v0, 02026; GFX900-NEXT:    ;;#ASMSTART2027; GFX900-NEXT:    ; def v22028; GFX900-NEXT:    ;;#ASMEND2029; GFX900-NEXT:    v_perm_b32 v1, v1, v2, s42030; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]2031; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v22032; GFX900-NEXT:    global_store_short v0, v1, s[16:17] offset:42033; GFX900-NEXT:    s_waitcnt vmcnt(0)2034; GFX900-NEXT:    s_setpc_b64 s[30:31]2035;2036; GFX90A-LABEL: v_shuffle_v3i16_v2i16__3_1_3:2037; GFX90A:       ; %bb.0:2038; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2039; GFX90A-NEXT:    ;;#ASMSTART2040; GFX90A-NEXT:    ; def v12041; GFX90A-NEXT:    ;;#ASMEND2042; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022043; GFX90A-NEXT:    v_mov_b32_e32 v0, 02044; GFX90A-NEXT:    ;;#ASMSTART2045; GFX90A-NEXT:    ; def v22046; GFX90A-NEXT:    ;;#ASMEND2047; GFX90A-NEXT:    v_perm_b32 v1, v1, v2, s42048; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]2049; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v22050; GFX90A-NEXT:    global_store_short v0, v1, s[16:17] offset:42051; GFX90A-NEXT:    s_waitcnt vmcnt(0)2052; GFX90A-NEXT:    s_setpc_b64 s[30:31]2053;2054; GFX942-LABEL: v_shuffle_v3i16_v2i16__3_1_3:2055; GFX942:       ; %bb.0:2056; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2057; GFX942-NEXT:    ;;#ASMSTART2058; GFX942-NEXT:    ; def v12059; GFX942-NEXT:    ;;#ASMEND2060; GFX942-NEXT:    s_mov_b32 s2, 0x70603022061; GFX942-NEXT:    v_mov_b32_e32 v0, 02062; GFX942-NEXT:    ;;#ASMSTART2063; GFX942-NEXT:    ; def v22064; GFX942-NEXT:    ;;#ASMEND2065; GFX942-NEXT:    s_nop 02066; GFX942-NEXT:    v_perm_b32 v1, v1, v2, s22067; GFX942-NEXT:    global_store_dword v0, v1, s[0:1]2068; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v22069; GFX942-NEXT:    global_store_short v0, v1, s[0:1] offset:42070; GFX942-NEXT:    s_waitcnt vmcnt(0)2071; GFX942-NEXT:    s_setpc_b64 s[30:31]2072  %vec0 = call <2 x i16> asm "; def $0", "=v"()2073  %vec1 = call <2 x i16> asm "; def $0", "=v"()2074  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 1, i32 3>2075  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 82076  ret void2077}2078 2079define void @v_shuffle_v3i16_v2i16__3_2_3(ptr addrspace(1) inreg %ptr) {2080; GFX900-LABEL: v_shuffle_v3i16_v2i16__3_2_3:2081; GFX900:       ; %bb.0:2082; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2083; GFX900-NEXT:    ;;#ASMSTART2084; GFX900-NEXT:    ; def v12085; GFX900-NEXT:    ;;#ASMEND2086; GFX900-NEXT:    v_mov_b32_e32 v0, 02087; GFX900-NEXT:    v_alignbit_b32 v2, v1, v1, 162088; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v12089; GFX900-NEXT:    global_store_short v0, v1, s[16:17] offset:42090; GFX900-NEXT:    global_store_dword v0, v2, s[16:17]2091; GFX900-NEXT:    s_waitcnt vmcnt(0)2092; GFX900-NEXT:    s_setpc_b64 s[30:31]2093;2094; GFX90A-LABEL: v_shuffle_v3i16_v2i16__3_2_3:2095; GFX90A:       ; %bb.0:2096; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2097; GFX90A-NEXT:    ;;#ASMSTART2098; GFX90A-NEXT:    ; def v12099; GFX90A-NEXT:    ;;#ASMEND2100; GFX90A-NEXT:    v_mov_b32_e32 v0, 02101; GFX90A-NEXT:    v_alignbit_b32 v2, v1, v1, 162102; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v12103; GFX90A-NEXT:    global_store_short v0, v1, s[16:17] offset:42104; GFX90A-NEXT:    global_store_dword v0, v2, s[16:17]2105; GFX90A-NEXT:    s_waitcnt vmcnt(0)2106; GFX90A-NEXT:    s_setpc_b64 s[30:31]2107;2108; GFX942-LABEL: v_shuffle_v3i16_v2i16__3_2_3:2109; GFX942:       ; %bb.0:2110; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2111; GFX942-NEXT:    ;;#ASMSTART2112; GFX942-NEXT:    ; def v12113; GFX942-NEXT:    ;;#ASMEND2114; GFX942-NEXT:    v_mov_b32_e32 v0, 02115; GFX942-NEXT:    v_alignbit_b32 v2, v1, v1, 162116; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v12117; GFX942-NEXT:    global_store_short v0, v1, s[0:1] offset:42118; GFX942-NEXT:    global_store_dword v0, v2, s[0:1]2119; GFX942-NEXT:    s_waitcnt vmcnt(0)2120; GFX942-NEXT:    s_setpc_b64 s[30:31]2121  %vec0 = call <2 x i16> asm "; def $0", "=v"()2122  %vec1 = call <2 x i16> asm "; def $0", "=v"()2123  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 2, i32 3>2124  store <3 x i16> %shuf, ptr addrspace(1) %ptr, align 82125  ret void2126}2127 2128define void @s_shuffle_v3i16_v2i16__u_u_u() {2129; GFX9-LABEL: s_shuffle_v3i16_v2i16__u_u_u:2130; GFX9:       ; %bb.0:2131; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2132; GFX9-NEXT:    ;;#ASMSTART2133; GFX9-NEXT:    ; use s[8:9]2134; GFX9-NEXT:    ;;#ASMEND2135; GFX9-NEXT:    s_setpc_b64 s[30:31]2136  %vec0 = call <2 x i16> asm "; def $0", "=s"()2137  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <3 x i32> poison2138  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>2139  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)2140  ret void2141}2142 2143define void @s_shuffle_v3i16_v2i16__0_u_u() {2144; GFX900-LABEL: s_shuffle_v3i16_v2i16__0_u_u:2145; GFX900:       ; %bb.0:2146; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2147; GFX900-NEXT:    ;;#ASMSTART2148; GFX900-NEXT:    ; def s82149; GFX900-NEXT:    ;;#ASMEND2150; GFX900-NEXT:    ;;#ASMSTART2151; GFX900-NEXT:    ; use s[8:9]2152; GFX900-NEXT:    ;;#ASMEND2153; GFX900-NEXT:    s_setpc_b64 s[30:31]2154;2155; GFX90A-LABEL: s_shuffle_v3i16_v2i16__0_u_u:2156; GFX90A:       ; %bb.0:2157; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2158; GFX90A-NEXT:    ;;#ASMSTART2159; GFX90A-NEXT:    ; def s82160; GFX90A-NEXT:    ;;#ASMEND2161; GFX90A-NEXT:    ;;#ASMSTART2162; GFX90A-NEXT:    ; use s[8:9]2163; GFX90A-NEXT:    ;;#ASMEND2164; GFX90A-NEXT:    s_setpc_b64 s[30:31]2165;2166; GFX942-LABEL: s_shuffle_v3i16_v2i16__0_u_u:2167; GFX942:       ; %bb.0:2168; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2169; GFX942-NEXT:    ;;#ASMSTART2170; GFX942-NEXT:    ; def s82171; GFX942-NEXT:    ;;#ASMEND2172; GFX942-NEXT:    s_nop 02173; GFX942-NEXT:    ;;#ASMSTART2174; GFX942-NEXT:    ; use s[8:9]2175; GFX942-NEXT:    ;;#ASMEND2176; GFX942-NEXT:    s_setpc_b64 s[30:31]2177  %vec0 = call <2 x i16> asm "; def $0", "=s"()2178  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <3 x i32> <i32 0, i32 poison, i32 poison>2179  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>2180  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)2181  ret void2182}2183 2184define void @s_shuffle_v3i16_v2i16__1_u_u() {2185; GFX900-LABEL: s_shuffle_v3i16_v2i16__1_u_u:2186; GFX900:       ; %bb.0:2187; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2188; GFX900-NEXT:    ;;#ASMSTART2189; GFX900-NEXT:    ; def s42190; GFX900-NEXT:    ;;#ASMEND2191; GFX900-NEXT:    s_lshr_b32 s8, s4, 162192; GFX900-NEXT:    ;;#ASMSTART2193; GFX900-NEXT:    ; use s[8:9]2194; GFX900-NEXT:    ;;#ASMEND2195; GFX900-NEXT:    s_setpc_b64 s[30:31]2196;2197; GFX90A-LABEL: s_shuffle_v3i16_v2i16__1_u_u:2198; GFX90A:       ; %bb.0:2199; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2200; GFX90A-NEXT:    ;;#ASMSTART2201; GFX90A-NEXT:    ; def s42202; GFX90A-NEXT:    ;;#ASMEND2203; GFX90A-NEXT:    s_lshr_b32 s8, s4, 162204; GFX90A-NEXT:    ;;#ASMSTART2205; GFX90A-NEXT:    ; use s[8:9]2206; GFX90A-NEXT:    ;;#ASMEND2207; GFX90A-NEXT:    s_setpc_b64 s[30:31]2208;2209; GFX942-LABEL: s_shuffle_v3i16_v2i16__1_u_u:2210; GFX942:       ; %bb.0:2211; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2212; GFX942-NEXT:    ;;#ASMSTART2213; GFX942-NEXT:    ; def s02214; GFX942-NEXT:    ;;#ASMEND2215; GFX942-NEXT:    s_lshr_b32 s8, s0, 162216; GFX942-NEXT:    ;;#ASMSTART2217; GFX942-NEXT:    ; use s[8:9]2218; GFX942-NEXT:    ;;#ASMEND2219; GFX942-NEXT:    s_setpc_b64 s[30:31]2220  %vec0 = call <2 x i16> asm "; def $0", "=s"()2221  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <3 x i32> <i32 1, i32 poison, i32 poison>2222  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>2223  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)2224  ret void2225}2226 2227define void @s_shuffle_v3i16_v2i16__2_u_u() {2228; GFX9-LABEL: s_shuffle_v3i16_v2i16__2_u_u:2229; GFX9:       ; %bb.0:2230; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2231; GFX9-NEXT:    ;;#ASMSTART2232; GFX9-NEXT:    ; use s[8:9]2233; GFX9-NEXT:    ;;#ASMEND2234; GFX9-NEXT:    s_setpc_b64 s[30:31]2235  %vec0 = call <2 x i16> asm "; def $0", "=s"()2236  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <3 x i32> <i32 2, i32 poison, i32 poison>2237  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>2238  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)2239  ret void2240}2241 2242define void @s_shuffle_v3i16_v2i16__3_u_u() {2243; GFX900-LABEL: s_shuffle_v3i16_v2i16__3_u_u:2244; GFX900:       ; %bb.0:2245; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2246; GFX900-NEXT:    ;;#ASMSTART2247; GFX900-NEXT:    ; def s42248; GFX900-NEXT:    ;;#ASMEND2249; GFX900-NEXT:    s_lshr_b32 s8, s4, 162250; GFX900-NEXT:    ;;#ASMSTART2251; GFX900-NEXT:    ; use s[8:9]2252; GFX900-NEXT:    ;;#ASMEND2253; GFX900-NEXT:    s_setpc_b64 s[30:31]2254;2255; GFX90A-LABEL: s_shuffle_v3i16_v2i16__3_u_u:2256; GFX90A:       ; %bb.0:2257; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2258; GFX90A-NEXT:    ;;#ASMSTART2259; GFX90A-NEXT:    ; def s42260; GFX90A-NEXT:    ;;#ASMEND2261; GFX90A-NEXT:    s_lshr_b32 s8, s4, 162262; GFX90A-NEXT:    ;;#ASMSTART2263; GFX90A-NEXT:    ; use s[8:9]2264; GFX90A-NEXT:    ;;#ASMEND2265; GFX90A-NEXT:    s_setpc_b64 s[30:31]2266;2267; GFX942-LABEL: s_shuffle_v3i16_v2i16__3_u_u:2268; GFX942:       ; %bb.0:2269; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2270; GFX942-NEXT:    ;;#ASMSTART2271; GFX942-NEXT:    ; def s02272; GFX942-NEXT:    ;;#ASMEND2273; GFX942-NEXT:    s_lshr_b32 s8, s0, 162274; GFX942-NEXT:    ;;#ASMSTART2275; GFX942-NEXT:    ; use s[8:9]2276; GFX942-NEXT:    ;;#ASMEND2277; GFX942-NEXT:    s_setpc_b64 s[30:31]2278  %vec0 = call <2 x i16> asm "; def $0", "=s"()2279  %vec1 = call <2 x i16> asm "; def $0", "=s"()2280  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 poison, i32 poison>2281  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>2282  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)2283  ret void2284}2285 2286define void @s_shuffle_v3i16_v2i16__3_0_u() {2287; GFX900-LABEL: s_shuffle_v3i16_v2i16__3_0_u:2288; GFX900:       ; %bb.0:2289; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2290; GFX900-NEXT:    ;;#ASMSTART2291; GFX900-NEXT:    ; def s52292; GFX900-NEXT:    ;;#ASMEND2293; GFX900-NEXT:    s_lshr_b32 s5, s5, 162294; GFX900-NEXT:    ;;#ASMSTART2295; GFX900-NEXT:    ; def s42296; GFX900-NEXT:    ;;#ASMEND2297; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s42298; GFX900-NEXT:    ;;#ASMSTART2299; GFX900-NEXT:    ; use s[8:9]2300; GFX900-NEXT:    ;;#ASMEND2301; GFX900-NEXT:    s_setpc_b64 s[30:31]2302;2303; GFX90A-LABEL: s_shuffle_v3i16_v2i16__3_0_u:2304; GFX90A:       ; %bb.0:2305; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2306; GFX90A-NEXT:    ;;#ASMSTART2307; GFX90A-NEXT:    ; def s52308; GFX90A-NEXT:    ;;#ASMEND2309; GFX90A-NEXT:    s_lshr_b32 s5, s5, 162310; GFX90A-NEXT:    ;;#ASMSTART2311; GFX90A-NEXT:    ; def s42312; GFX90A-NEXT:    ;;#ASMEND2313; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s42314; GFX90A-NEXT:    ;;#ASMSTART2315; GFX90A-NEXT:    ; use s[8:9]2316; GFX90A-NEXT:    ;;#ASMEND2317; GFX90A-NEXT:    s_setpc_b64 s[30:31]2318;2319; GFX942-LABEL: s_shuffle_v3i16_v2i16__3_0_u:2320; GFX942:       ; %bb.0:2321; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2322; GFX942-NEXT:    ;;#ASMSTART2323; GFX942-NEXT:    ; def s12324; GFX942-NEXT:    ;;#ASMEND2325; GFX942-NEXT:    s_lshr_b32 s1, s1, 162326; GFX942-NEXT:    ;;#ASMSTART2327; GFX942-NEXT:    ; def s02328; GFX942-NEXT:    ;;#ASMEND2329; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s02330; GFX942-NEXT:    ;;#ASMSTART2331; GFX942-NEXT:    ; use s[8:9]2332; GFX942-NEXT:    ;;#ASMEND2333; GFX942-NEXT:    s_setpc_b64 s[30:31]2334  %vec0 = call <2 x i16> asm "; def $0", "=s"()2335  %vec1 = call <2 x i16> asm "; def $0", "=s"()2336  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 0, i32 poison>2337  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>2338  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)2339  ret void2340}2341 2342define void @s_shuffle_v3i16_v2i16__3_1_u() {2343; GFX900-LABEL: s_shuffle_v3i16_v2i16__3_1_u:2344; GFX900:       ; %bb.0:2345; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2346; GFX900-NEXT:    ;;#ASMSTART2347; GFX900-NEXT:    ; def s42348; GFX900-NEXT:    ;;#ASMEND2349; GFX900-NEXT:    ;;#ASMSTART2350; GFX900-NEXT:    ; def s52351; GFX900-NEXT:    ;;#ASMEND2352; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s42353; GFX900-NEXT:    ;;#ASMSTART2354; GFX900-NEXT:    ; use s[8:9]2355; GFX900-NEXT:    ;;#ASMEND2356; GFX900-NEXT:    s_setpc_b64 s[30:31]2357;2358; GFX90A-LABEL: s_shuffle_v3i16_v2i16__3_1_u:2359; GFX90A:       ; %bb.0:2360; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2361; GFX90A-NEXT:    ;;#ASMSTART2362; GFX90A-NEXT:    ; def s42363; GFX90A-NEXT:    ;;#ASMEND2364; GFX90A-NEXT:    ;;#ASMSTART2365; GFX90A-NEXT:    ; def s52366; GFX90A-NEXT:    ;;#ASMEND2367; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s42368; GFX90A-NEXT:    ;;#ASMSTART2369; GFX90A-NEXT:    ; use s[8:9]2370; GFX90A-NEXT:    ;;#ASMEND2371; GFX90A-NEXT:    s_setpc_b64 s[30:31]2372;2373; GFX942-LABEL: s_shuffle_v3i16_v2i16__3_1_u:2374; GFX942:       ; %bb.0:2375; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2376; GFX942-NEXT:    ;;#ASMSTART2377; GFX942-NEXT:    ; def s02378; GFX942-NEXT:    ;;#ASMEND2379; GFX942-NEXT:    ;;#ASMSTART2380; GFX942-NEXT:    ; def s12381; GFX942-NEXT:    ;;#ASMEND2382; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s02383; GFX942-NEXT:    ;;#ASMSTART2384; GFX942-NEXT:    ; use s[8:9]2385; GFX942-NEXT:    ;;#ASMEND2386; GFX942-NEXT:    s_setpc_b64 s[30:31]2387  %vec0 = call <2 x i16> asm "; def $0", "=s"()2388  %vec1 = call <2 x i16> asm "; def $0", "=s"()2389  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 1, i32 poison>2390  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>2391  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)2392  ret void2393}2394 2395define void @s_shuffle_v3i16_v2i16__3_2_u() {2396; GFX900-LABEL: s_shuffle_v3i16_v2i16__3_2_u:2397; GFX900:       ; %bb.0:2398; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2399; GFX900-NEXT:    ;;#ASMSTART2400; GFX900-NEXT:    ; def s42401; GFX900-NEXT:    ;;#ASMEND2402; GFX900-NEXT:    s_lshr_b32 s5, s4, 162403; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s42404; GFX900-NEXT:    ;;#ASMSTART2405; GFX900-NEXT:    ; use s[8:9]2406; GFX900-NEXT:    ;;#ASMEND2407; GFX900-NEXT:    s_setpc_b64 s[30:31]2408;2409; GFX90A-LABEL: s_shuffle_v3i16_v2i16__3_2_u:2410; GFX90A:       ; %bb.0:2411; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2412; GFX90A-NEXT:    ;;#ASMSTART2413; GFX90A-NEXT:    ; def s42414; GFX90A-NEXT:    ;;#ASMEND2415; GFX90A-NEXT:    s_lshr_b32 s5, s4, 162416; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s42417; GFX90A-NEXT:    ;;#ASMSTART2418; GFX90A-NEXT:    ; use s[8:9]2419; GFX90A-NEXT:    ;;#ASMEND2420; GFX90A-NEXT:    s_setpc_b64 s[30:31]2421;2422; GFX942-LABEL: s_shuffle_v3i16_v2i16__3_2_u:2423; GFX942:       ; %bb.0:2424; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2425; GFX942-NEXT:    ;;#ASMSTART2426; GFX942-NEXT:    ; def s02427; GFX942-NEXT:    ;;#ASMEND2428; GFX942-NEXT:    s_lshr_b32 s1, s0, 162429; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s02430; GFX942-NEXT:    ;;#ASMSTART2431; GFX942-NEXT:    ; use s[8:9]2432; GFX942-NEXT:    ;;#ASMEND2433; GFX942-NEXT:    s_setpc_b64 s[30:31]2434  %vec0 = call <2 x i16> asm "; def $0", "=s"()2435  %vec1 = call <2 x i16> asm "; def $0", "=s"()2436  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 2, i32 poison>2437  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>2438  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)2439  ret void2440}2441 2442define void @s_shuffle_v3i16_v2i16__3_3_u() {2443; GFX900-LABEL: s_shuffle_v3i16_v2i16__3_3_u:2444; GFX900:       ; %bb.0:2445; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2446; GFX900-NEXT:    ;;#ASMSTART2447; GFX900-NEXT:    ; def s42448; GFX900-NEXT:    ;;#ASMEND2449; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s42450; GFX900-NEXT:    ;;#ASMSTART2451; GFX900-NEXT:    ; use s[8:9]2452; GFX900-NEXT:    ;;#ASMEND2453; GFX900-NEXT:    s_setpc_b64 s[30:31]2454;2455; GFX90A-LABEL: s_shuffle_v3i16_v2i16__3_3_u:2456; GFX90A:       ; %bb.0:2457; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2458; GFX90A-NEXT:    ;;#ASMSTART2459; GFX90A-NEXT:    ; def s42460; GFX90A-NEXT:    ;;#ASMEND2461; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s42462; GFX90A-NEXT:    ;;#ASMSTART2463; GFX90A-NEXT:    ; use s[8:9]2464; GFX90A-NEXT:    ;;#ASMEND2465; GFX90A-NEXT:    s_setpc_b64 s[30:31]2466;2467; GFX942-LABEL: s_shuffle_v3i16_v2i16__3_3_u:2468; GFX942:       ; %bb.0:2469; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2470; GFX942-NEXT:    ;;#ASMSTART2471; GFX942-NEXT:    ; def s02472; GFX942-NEXT:    ;;#ASMEND2473; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s02474; GFX942-NEXT:    ;;#ASMSTART2475; GFX942-NEXT:    ; use s[8:9]2476; GFX942-NEXT:    ;;#ASMEND2477; GFX942-NEXT:    s_setpc_b64 s[30:31]2478  %vec0 = call <2 x i16> asm "; def $0", "=s"()2479  %vec1 = call <2 x i16> asm "; def $0", "=s"()2480  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 3, i32 poison>2481  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>2482  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)2483  ret void2484}2485 2486define void @s_shuffle_v3i16_v2i16__3_3_0() {2487; GFX900-LABEL: s_shuffle_v3i16_v2i16__3_3_0:2488; GFX900:       ; %bb.0:2489; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2490; GFX900-NEXT:    ;;#ASMSTART2491; GFX900-NEXT:    ; def s92492; GFX900-NEXT:    ;;#ASMEND2493; GFX900-NEXT:    ;;#ASMSTART2494; GFX900-NEXT:    ; def s42495; GFX900-NEXT:    ;;#ASMEND2496; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s42497; GFX900-NEXT:    ;;#ASMSTART2498; GFX900-NEXT:    ; use s[8:9]2499; GFX900-NEXT:    ;;#ASMEND2500; GFX900-NEXT:    s_setpc_b64 s[30:31]2501;2502; GFX90A-LABEL: s_shuffle_v3i16_v2i16__3_3_0:2503; GFX90A:       ; %bb.0:2504; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2505; GFX90A-NEXT:    ;;#ASMSTART2506; GFX90A-NEXT:    ; def s92507; GFX90A-NEXT:    ;;#ASMEND2508; GFX90A-NEXT:    ;;#ASMSTART2509; GFX90A-NEXT:    ; def s42510; GFX90A-NEXT:    ;;#ASMEND2511; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s42512; GFX90A-NEXT:    ;;#ASMSTART2513; GFX90A-NEXT:    ; use s[8:9]2514; GFX90A-NEXT:    ;;#ASMEND2515; GFX90A-NEXT:    s_setpc_b64 s[30:31]2516;2517; GFX942-LABEL: s_shuffle_v3i16_v2i16__3_3_0:2518; GFX942:       ; %bb.0:2519; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2520; GFX942-NEXT:    ;;#ASMSTART2521; GFX942-NEXT:    ; def s92522; GFX942-NEXT:    ;;#ASMEND2523; GFX942-NEXT:    ;;#ASMSTART2524; GFX942-NEXT:    ; def s02525; GFX942-NEXT:    ;;#ASMEND2526; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s02527; GFX942-NEXT:    ;;#ASMSTART2528; GFX942-NEXT:    ; use s[8:9]2529; GFX942-NEXT:    ;;#ASMEND2530; GFX942-NEXT:    s_setpc_b64 s[30:31]2531  %vec0 = call <2 x i16> asm "; def $0", "=s"()2532  %vec1 = call <2 x i16> asm "; def $0", "=s"()2533  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 3, i32 0>2534  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>2535  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)2536  ret void2537}2538 2539define void @s_shuffle_v3i16_v2i16__3_3_1() {2540; GFX900-LABEL: s_shuffle_v3i16_v2i16__3_3_1:2541; GFX900:       ; %bb.0:2542; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2543; GFX900-NEXT:    ;;#ASMSTART2544; GFX900-NEXT:    ; def s42545; GFX900-NEXT:    ;;#ASMEND2546; GFX900-NEXT:    ;;#ASMSTART2547; GFX900-NEXT:    ; def s52548; GFX900-NEXT:    ;;#ASMEND2549; GFX900-NEXT:    s_lshr_b32 s9, s4, 162550; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s52551; GFX900-NEXT:    ;;#ASMSTART2552; GFX900-NEXT:    ; use s[8:9]2553; GFX900-NEXT:    ;;#ASMEND2554; GFX900-NEXT:    s_setpc_b64 s[30:31]2555;2556; GFX90A-LABEL: s_shuffle_v3i16_v2i16__3_3_1:2557; GFX90A:       ; %bb.0:2558; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2559; GFX90A-NEXT:    ;;#ASMSTART2560; GFX90A-NEXT:    ; def s42561; GFX90A-NEXT:    ;;#ASMEND2562; GFX90A-NEXT:    ;;#ASMSTART2563; GFX90A-NEXT:    ; def s52564; GFX90A-NEXT:    ;;#ASMEND2565; GFX90A-NEXT:    s_lshr_b32 s9, s4, 162566; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s52567; GFX90A-NEXT:    ;;#ASMSTART2568; GFX90A-NEXT:    ; use s[8:9]2569; GFX90A-NEXT:    ;;#ASMEND2570; GFX90A-NEXT:    s_setpc_b64 s[30:31]2571;2572; GFX942-LABEL: s_shuffle_v3i16_v2i16__3_3_1:2573; GFX942:       ; %bb.0:2574; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2575; GFX942-NEXT:    ;;#ASMSTART2576; GFX942-NEXT:    ; def s02577; GFX942-NEXT:    ;;#ASMEND2578; GFX942-NEXT:    ;;#ASMSTART2579; GFX942-NEXT:    ; def s12580; GFX942-NEXT:    ;;#ASMEND2581; GFX942-NEXT:    s_lshr_b32 s9, s0, 162582; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s12583; GFX942-NEXT:    ;;#ASMSTART2584; GFX942-NEXT:    ; use s[8:9]2585; GFX942-NEXT:    ;;#ASMEND2586; GFX942-NEXT:    s_setpc_b64 s[30:31]2587  %vec0 = call <2 x i16> asm "; def $0", "=s"()2588  %vec1 = call <2 x i16> asm "; def $0", "=s"()2589  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 3, i32 1>2590  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>2591  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)2592  ret void2593}2594 2595define void @s_shuffle_v3i16_v2i16__3_3_2() {2596; GFX9-LABEL: s_shuffle_v3i16_v2i16__3_3_2:2597; GFX9:       ; %bb.0:2598; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2599; GFX9-NEXT:    ;;#ASMSTART2600; GFX9-NEXT:    ; def s92601; GFX9-NEXT:    ;;#ASMEND2602; GFX9-NEXT:    s_pack_hh_b32_b16 s8, s9, s92603; GFX9-NEXT:    ;;#ASMSTART2604; GFX9-NEXT:    ; use s[8:9]2605; GFX9-NEXT:    ;;#ASMEND2606; GFX9-NEXT:    s_setpc_b64 s[30:31]2607  %vec0 = call <2 x i16> asm "; def $0", "=s"()2608  %vec1 = call <2 x i16> asm "; def $0", "=s"()2609  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 3, i32 2>2610  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>2611  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)2612  ret void2613}2614 2615define void @s_shuffle_v3i16_v2i16__3_3_3() {2616; GFX900-LABEL: s_shuffle_v3i16_v2i16__3_3_3:2617; GFX900:       ; %bb.0:2618; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2619; GFX900-NEXT:    ;;#ASMSTART2620; GFX900-NEXT:    ; def s42621; GFX900-NEXT:    ;;#ASMEND2622; GFX900-NEXT:    s_lshr_b32 s9, s4, 162623; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s42624; GFX900-NEXT:    ;;#ASMSTART2625; GFX900-NEXT:    ; use s[8:9]2626; GFX900-NEXT:    ;;#ASMEND2627; GFX900-NEXT:    s_setpc_b64 s[30:31]2628;2629; GFX90A-LABEL: s_shuffle_v3i16_v2i16__3_3_3:2630; GFX90A:       ; %bb.0:2631; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2632; GFX90A-NEXT:    ;;#ASMSTART2633; GFX90A-NEXT:    ; def s42634; GFX90A-NEXT:    ;;#ASMEND2635; GFX90A-NEXT:    s_lshr_b32 s9, s4, 162636; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s42637; GFX90A-NEXT:    ;;#ASMSTART2638; GFX90A-NEXT:    ; use s[8:9]2639; GFX90A-NEXT:    ;;#ASMEND2640; GFX90A-NEXT:    s_setpc_b64 s[30:31]2641;2642; GFX942-LABEL: s_shuffle_v3i16_v2i16__3_3_3:2643; GFX942:       ; %bb.0:2644; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2645; GFX942-NEXT:    ;;#ASMSTART2646; GFX942-NEXT:    ; def s02647; GFX942-NEXT:    ;;#ASMEND2648; GFX942-NEXT:    s_lshr_b32 s9, s0, 162649; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s02650; GFX942-NEXT:    ;;#ASMSTART2651; GFX942-NEXT:    ; use s[8:9]2652; GFX942-NEXT:    ;;#ASMEND2653; GFX942-NEXT:    s_setpc_b64 s[30:31]2654  %vec0 = call <2 x i16> asm "; def $0", "=s"()2655  %vec1 = call <2 x i16> asm "; def $0", "=s"()2656  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 3, i32 3>2657  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>2658  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)2659  ret void2660}2661 2662define void @s_shuffle_v3i16_v2i16__u_0_0() {2663; GFX9-LABEL: s_shuffle_v3i16_v2i16__u_0_0:2664; GFX9:       ; %bb.0:2665; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2666; GFX9-NEXT:    ;;#ASMSTART2667; GFX9-NEXT:    ; def s92668; GFX9-NEXT:    ;;#ASMEND2669; GFX9-NEXT:    s_pack_ll_b32_b16 s8, s9, s92670; GFX9-NEXT:    ;;#ASMSTART2671; GFX9-NEXT:    ; use s[8:9]2672; GFX9-NEXT:    ;;#ASMEND2673; GFX9-NEXT:    s_setpc_b64 s[30:31]2674  %vec0 = call <2 x i16> asm "; def $0", "=s"()2675  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <3 x i32> <i32 poison, i32 0, i32 0>2676  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>2677  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)2678  ret void2679}2680 2681define void @s_shuffle_v3i16_v2i16__0_0_0() {2682; GFX9-LABEL: s_shuffle_v3i16_v2i16__0_0_0:2683; GFX9:       ; %bb.0:2684; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2685; GFX9-NEXT:    ;;#ASMSTART2686; GFX9-NEXT:    ; def s92687; GFX9-NEXT:    ;;#ASMEND2688; GFX9-NEXT:    s_pack_ll_b32_b16 s8, s9, s92689; GFX9-NEXT:    ;;#ASMSTART2690; GFX9-NEXT:    ; use s[8:9]2691; GFX9-NEXT:    ;;#ASMEND2692; GFX9-NEXT:    s_setpc_b64 s[30:31]2693  %vec0 = call <2 x i16> asm "; def $0", "=s"()2694  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <3 x i32> zeroinitializer2695  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>2696  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)2697  ret void2698}2699 2700define void @s_shuffle_v3i16_v2i16__1_0_0() {2701; GFX900-LABEL: s_shuffle_v3i16_v2i16__1_0_0:2702; GFX900:       ; %bb.0:2703; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2704; GFX900-NEXT:    ;;#ASMSTART2705; GFX900-NEXT:    ; def s92706; GFX900-NEXT:    ;;#ASMEND2707; GFX900-NEXT:    s_lshr_b32 s4, s9, 162708; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s92709; GFX900-NEXT:    ;;#ASMSTART2710; GFX900-NEXT:    ; use s[8:9]2711; GFX900-NEXT:    ;;#ASMEND2712; GFX900-NEXT:    s_setpc_b64 s[30:31]2713;2714; GFX90A-LABEL: s_shuffle_v3i16_v2i16__1_0_0:2715; GFX90A:       ; %bb.0:2716; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2717; GFX90A-NEXT:    ;;#ASMSTART2718; GFX90A-NEXT:    ; def s92719; GFX90A-NEXT:    ;;#ASMEND2720; GFX90A-NEXT:    s_lshr_b32 s4, s9, 162721; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s92722; GFX90A-NEXT:    ;;#ASMSTART2723; GFX90A-NEXT:    ; use s[8:9]2724; GFX90A-NEXT:    ;;#ASMEND2725; GFX90A-NEXT:    s_setpc_b64 s[30:31]2726;2727; GFX942-LABEL: s_shuffle_v3i16_v2i16__1_0_0:2728; GFX942:       ; %bb.0:2729; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2730; GFX942-NEXT:    ;;#ASMSTART2731; GFX942-NEXT:    ; def s92732; GFX942-NEXT:    ;;#ASMEND2733; GFX942-NEXT:    s_lshr_b32 s0, s9, 162734; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s92735; GFX942-NEXT:    ;;#ASMSTART2736; GFX942-NEXT:    ; use s[8:9]2737; GFX942-NEXT:    ;;#ASMEND2738; GFX942-NEXT:    s_setpc_b64 s[30:31]2739  %vec0 = call <2 x i16> asm "; def $0", "=s"()2740  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <3 x i32> <i32 1, i32 0, i32 0>2741  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>2742  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)2743  ret void2744}2745 2746define void @s_shuffle_v3i16_v2i16__2_0_0() {2747; GFX9-LABEL: s_shuffle_v3i16_v2i16__2_0_0:2748; GFX9:       ; %bb.0:2749; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2750; GFX9-NEXT:    ;;#ASMSTART2751; GFX9-NEXT:    ; def s92752; GFX9-NEXT:    ;;#ASMEND2753; GFX9-NEXT:    s_pack_ll_b32_b16 s8, s9, s92754; GFX9-NEXT:    ;;#ASMSTART2755; GFX9-NEXT:    ; use s[8:9]2756; GFX9-NEXT:    ;;#ASMEND2757; GFX9-NEXT:    s_setpc_b64 s[30:31]2758  %vec0 = call <2 x i16> asm "; def $0", "=s"()2759  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <3 x i32> <i32 2, i32 0, i32 0>2760  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>2761  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)2762  ret void2763}2764 2765define void @s_shuffle_v3i16_v2i16__3_0_0() {2766; GFX900-LABEL: s_shuffle_v3i16_v2i16__3_0_0:2767; GFX900:       ; %bb.0:2768; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2769; GFX900-NEXT:    ;;#ASMSTART2770; GFX900-NEXT:    ; def s42771; GFX900-NEXT:    ;;#ASMEND2772; GFX900-NEXT:    s_lshr_b32 s4, s4, 162773; GFX900-NEXT:    ;;#ASMSTART2774; GFX900-NEXT:    ; def s92775; GFX900-NEXT:    ;;#ASMEND2776; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s92777; GFX900-NEXT:    ;;#ASMSTART2778; GFX900-NEXT:    ; use s[8:9]2779; GFX900-NEXT:    ;;#ASMEND2780; GFX900-NEXT:    s_setpc_b64 s[30:31]2781;2782; GFX90A-LABEL: s_shuffle_v3i16_v2i16__3_0_0:2783; GFX90A:       ; %bb.0:2784; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2785; GFX90A-NEXT:    ;;#ASMSTART2786; GFX90A-NEXT:    ; def s42787; GFX90A-NEXT:    ;;#ASMEND2788; GFX90A-NEXT:    s_lshr_b32 s4, s4, 162789; GFX90A-NEXT:    ;;#ASMSTART2790; GFX90A-NEXT:    ; def s92791; GFX90A-NEXT:    ;;#ASMEND2792; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s92793; GFX90A-NEXT:    ;;#ASMSTART2794; GFX90A-NEXT:    ; use s[8:9]2795; GFX90A-NEXT:    ;;#ASMEND2796; GFX90A-NEXT:    s_setpc_b64 s[30:31]2797;2798; GFX942-LABEL: s_shuffle_v3i16_v2i16__3_0_0:2799; GFX942:       ; %bb.0:2800; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2801; GFX942-NEXT:    ;;#ASMSTART2802; GFX942-NEXT:    ; def s02803; GFX942-NEXT:    ;;#ASMEND2804; GFX942-NEXT:    s_lshr_b32 s0, s0, 162805; GFX942-NEXT:    ;;#ASMSTART2806; GFX942-NEXT:    ; def s92807; GFX942-NEXT:    ;;#ASMEND2808; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s92809; GFX942-NEXT:    ;;#ASMSTART2810; GFX942-NEXT:    ; use s[8:9]2811; GFX942-NEXT:    ;;#ASMEND2812; GFX942-NEXT:    s_setpc_b64 s[30:31]2813  %vec0 = call <2 x i16> asm "; def $0", "=s"()2814  %vec1 = call <2 x i16> asm "; def $0", "=s"()2815  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 0, i32 0>2816  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>2817  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)2818  ret void2819}2820 2821define void @s_shuffle_v3i16_v2i16__3_u_0() {2822; GFX900-LABEL: s_shuffle_v3i16_v2i16__3_u_0:2823; GFX900:       ; %bb.0:2824; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2825; GFX900-NEXT:    ;;#ASMSTART2826; GFX900-NEXT:    ; def s92827; GFX900-NEXT:    ;;#ASMEND2828; GFX900-NEXT:    ;;#ASMSTART2829; GFX900-NEXT:    ; def s42830; GFX900-NEXT:    ;;#ASMEND2831; GFX900-NEXT:    s_lshr_b32 s8, s4, 162832; GFX900-NEXT:    ;;#ASMSTART2833; GFX900-NEXT:    ; use s[8:9]2834; GFX900-NEXT:    ;;#ASMEND2835; GFX900-NEXT:    s_setpc_b64 s[30:31]2836;2837; GFX90A-LABEL: s_shuffle_v3i16_v2i16__3_u_0:2838; GFX90A:       ; %bb.0:2839; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2840; GFX90A-NEXT:    ;;#ASMSTART2841; GFX90A-NEXT:    ; def s92842; GFX90A-NEXT:    ;;#ASMEND2843; GFX90A-NEXT:    ;;#ASMSTART2844; GFX90A-NEXT:    ; def s42845; GFX90A-NEXT:    ;;#ASMEND2846; GFX90A-NEXT:    s_lshr_b32 s8, s4, 162847; GFX90A-NEXT:    ;;#ASMSTART2848; GFX90A-NEXT:    ; use s[8:9]2849; GFX90A-NEXT:    ;;#ASMEND2850; GFX90A-NEXT:    s_setpc_b64 s[30:31]2851;2852; GFX942-LABEL: s_shuffle_v3i16_v2i16__3_u_0:2853; GFX942:       ; %bb.0:2854; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2855; GFX942-NEXT:    ;;#ASMSTART2856; GFX942-NEXT:    ; def s92857; GFX942-NEXT:    ;;#ASMEND2858; GFX942-NEXT:    ;;#ASMSTART2859; GFX942-NEXT:    ; def s02860; GFX942-NEXT:    ;;#ASMEND2861; GFX942-NEXT:    s_lshr_b32 s8, s0, 162862; GFX942-NEXT:    ;;#ASMSTART2863; GFX942-NEXT:    ; use s[8:9]2864; GFX942-NEXT:    ;;#ASMEND2865; GFX942-NEXT:    s_setpc_b64 s[30:31]2866  %vec0 = call <2 x i16> asm "; def $0", "=s"()2867  %vec1 = call <2 x i16> asm "; def $0", "=s"()2868  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 poison, i32 0>2869  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>2870  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)2871  ret void2872}2873 2874define void @s_shuffle_v3i16_v2i16__3_1_0() {2875; GFX900-LABEL: s_shuffle_v3i16_v2i16__3_1_0:2876; GFX900:       ; %bb.0:2877; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2878; GFX900-NEXT:    ;;#ASMSTART2879; GFX900-NEXT:    ; def s92880; GFX900-NEXT:    ;;#ASMEND2881; GFX900-NEXT:    ;;#ASMSTART2882; GFX900-NEXT:    ; def s42883; GFX900-NEXT:    ;;#ASMEND2884; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s92885; GFX900-NEXT:    ;;#ASMSTART2886; GFX900-NEXT:    ; use s[8:9]2887; GFX900-NEXT:    ;;#ASMEND2888; GFX900-NEXT:    s_setpc_b64 s[30:31]2889;2890; GFX90A-LABEL: s_shuffle_v3i16_v2i16__3_1_0:2891; GFX90A:       ; %bb.0:2892; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2893; GFX90A-NEXT:    ;;#ASMSTART2894; GFX90A-NEXT:    ; def s92895; GFX90A-NEXT:    ;;#ASMEND2896; GFX90A-NEXT:    ;;#ASMSTART2897; GFX90A-NEXT:    ; def s42898; GFX90A-NEXT:    ;;#ASMEND2899; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s92900; GFX90A-NEXT:    ;;#ASMSTART2901; GFX90A-NEXT:    ; use s[8:9]2902; GFX90A-NEXT:    ;;#ASMEND2903; GFX90A-NEXT:    s_setpc_b64 s[30:31]2904;2905; GFX942-LABEL: s_shuffle_v3i16_v2i16__3_1_0:2906; GFX942:       ; %bb.0:2907; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2908; GFX942-NEXT:    ;;#ASMSTART2909; GFX942-NEXT:    ; def s92910; GFX942-NEXT:    ;;#ASMEND2911; GFX942-NEXT:    ;;#ASMSTART2912; GFX942-NEXT:    ; def s02913; GFX942-NEXT:    ;;#ASMEND2914; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s92915; GFX942-NEXT:    ;;#ASMSTART2916; GFX942-NEXT:    ; use s[8:9]2917; GFX942-NEXT:    ;;#ASMEND2918; GFX942-NEXT:    s_setpc_b64 s[30:31]2919  %vec0 = call <2 x i16> asm "; def $0", "=s"()2920  %vec1 = call <2 x i16> asm "; def $0", "=s"()2921  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 1, i32 0>2922  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>2923  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)2924  ret void2925}2926 2927define void @s_shuffle_v3i16_v2i16__3_2_0() {2928; GFX900-LABEL: s_shuffle_v3i16_v2i16__3_2_0:2929; GFX900:       ; %bb.0:2930; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2931; GFX900-NEXT:    ;;#ASMSTART2932; GFX900-NEXT:    ; def s42933; GFX900-NEXT:    ;;#ASMEND2934; GFX900-NEXT:    s_lshr_b32 s5, s4, 162935; GFX900-NEXT:    ;;#ASMSTART2936; GFX900-NEXT:    ; def s92937; GFX900-NEXT:    ;;#ASMEND2938; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s42939; GFX900-NEXT:    ;;#ASMSTART2940; GFX900-NEXT:    ; use s[8:9]2941; GFX900-NEXT:    ;;#ASMEND2942; GFX900-NEXT:    s_setpc_b64 s[30:31]2943;2944; GFX90A-LABEL: s_shuffle_v3i16_v2i16__3_2_0:2945; GFX90A:       ; %bb.0:2946; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2947; GFX90A-NEXT:    ;;#ASMSTART2948; GFX90A-NEXT:    ; def s42949; GFX90A-NEXT:    ;;#ASMEND2950; GFX90A-NEXT:    s_lshr_b32 s5, s4, 162951; GFX90A-NEXT:    ;;#ASMSTART2952; GFX90A-NEXT:    ; def s92953; GFX90A-NEXT:    ;;#ASMEND2954; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s42955; GFX90A-NEXT:    ;;#ASMSTART2956; GFX90A-NEXT:    ; use s[8:9]2957; GFX90A-NEXT:    ;;#ASMEND2958; GFX90A-NEXT:    s_setpc_b64 s[30:31]2959;2960; GFX942-LABEL: s_shuffle_v3i16_v2i16__3_2_0:2961; GFX942:       ; %bb.0:2962; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2963; GFX942-NEXT:    ;;#ASMSTART2964; GFX942-NEXT:    ; def s02965; GFX942-NEXT:    ;;#ASMEND2966; GFX942-NEXT:    s_lshr_b32 s1, s0, 162967; GFX942-NEXT:    ;;#ASMSTART2968; GFX942-NEXT:    ; def s92969; GFX942-NEXT:    ;;#ASMEND2970; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s02971; GFX942-NEXT:    ;;#ASMSTART2972; GFX942-NEXT:    ; use s[8:9]2973; GFX942-NEXT:    ;;#ASMEND2974; GFX942-NEXT:    s_setpc_b64 s[30:31]2975  %vec0 = call <2 x i16> asm "; def $0", "=s"()2976  %vec1 = call <2 x i16> asm "; def $0", "=s"()2977  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 2, i32 0>2978  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>2979  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)2980  ret void2981}2982 2983define void @s_shuffle_v3i16_v2i16__u_1_1() {2984; GFX9-LABEL: s_shuffle_v3i16_v2i16__u_1_1:2985; GFX9:       ; %bb.0:2986; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2987; GFX9-NEXT:    ;;#ASMSTART2988; GFX9-NEXT:    ; def s82989; GFX9-NEXT:    ;;#ASMEND2990; GFX9-NEXT:    s_lshr_b32 s9, s8, 162991; GFX9-NEXT:    ;;#ASMSTART2992; GFX9-NEXT:    ; use s[8:9]2993; GFX9-NEXT:    ;;#ASMEND2994; GFX9-NEXT:    s_setpc_b64 s[30:31]2995  %vec0 = call <2 x i16> asm "; def $0", "=s"()2996  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <3 x i32> <i32 poison, i32 1, i32 1>2997  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>2998  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)2999  ret void3000}3001 3002define void @s_shuffle_v3i16_v2i16__0_1_1() {3003; GFX9-LABEL: s_shuffle_v3i16_v2i16__0_1_1:3004; GFX9:       ; %bb.0:3005; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3006; GFX9-NEXT:    ;;#ASMSTART3007; GFX9-NEXT:    ; def s83008; GFX9-NEXT:    ;;#ASMEND3009; GFX9-NEXT:    s_lshr_b32 s9, s8, 163010; GFX9-NEXT:    ;;#ASMSTART3011; GFX9-NEXT:    ; use s[8:9]3012; GFX9-NEXT:    ;;#ASMEND3013; GFX9-NEXT:    s_setpc_b64 s[30:31]3014  %vec0 = call <2 x i16> asm "; def $0", "=s"()3015  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <3 x i32> <i32 0, i32 1, i32 1>3016  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>3017  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)3018  ret void3019}3020 3021define void @s_shuffle_v3i16_v2i16__1_1_1() {3022; GFX900-LABEL: s_shuffle_v3i16_v2i16__1_1_1:3023; GFX900:       ; %bb.0:3024; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3025; GFX900-NEXT:    ;;#ASMSTART3026; GFX900-NEXT:    ; def s43027; GFX900-NEXT:    ;;#ASMEND3028; GFX900-NEXT:    s_lshr_b32 s9, s4, 163029; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s43030; GFX900-NEXT:    ;;#ASMSTART3031; GFX900-NEXT:    ; use s[8:9]3032; GFX900-NEXT:    ;;#ASMEND3033; GFX900-NEXT:    s_setpc_b64 s[30:31]3034;3035; GFX90A-LABEL: s_shuffle_v3i16_v2i16__1_1_1:3036; GFX90A:       ; %bb.0:3037; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3038; GFX90A-NEXT:    ;;#ASMSTART3039; GFX90A-NEXT:    ; def s43040; GFX90A-NEXT:    ;;#ASMEND3041; GFX90A-NEXT:    s_lshr_b32 s9, s4, 163042; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s43043; GFX90A-NEXT:    ;;#ASMSTART3044; GFX90A-NEXT:    ; use s[8:9]3045; GFX90A-NEXT:    ;;#ASMEND3046; GFX90A-NEXT:    s_setpc_b64 s[30:31]3047;3048; GFX942-LABEL: s_shuffle_v3i16_v2i16__1_1_1:3049; GFX942:       ; %bb.0:3050; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3051; GFX942-NEXT:    ;;#ASMSTART3052; GFX942-NEXT:    ; def s03053; GFX942-NEXT:    ;;#ASMEND3054; GFX942-NEXT:    s_lshr_b32 s9, s0, 163055; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s03056; GFX942-NEXT:    ;;#ASMSTART3057; GFX942-NEXT:    ; use s[8:9]3058; GFX942-NEXT:    ;;#ASMEND3059; GFX942-NEXT:    s_setpc_b64 s[30:31]3060  %vec0 = call <2 x i16> asm "; def $0", "=s"()3061  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <3 x i32> <i32 1, i32 1, i32 1>3062  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>3063  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)3064  ret void3065}3066 3067define void @s_shuffle_v3i16_v2i16__2_1_1() {3068; GFX9-LABEL: s_shuffle_v3i16_v2i16__2_1_1:3069; GFX9:       ; %bb.0:3070; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3071; GFX9-NEXT:    ;;#ASMSTART3072; GFX9-NEXT:    ; def s83073; GFX9-NEXT:    ;;#ASMEND3074; GFX9-NEXT:    s_lshr_b32 s9, s8, 163075; GFX9-NEXT:    ;;#ASMSTART3076; GFX9-NEXT:    ; use s[8:9]3077; GFX9-NEXT:    ;;#ASMEND3078; GFX9-NEXT:    s_setpc_b64 s[30:31]3079  %vec0 = call <2 x i16> asm "; def $0", "=s"()3080  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <3 x i32> <i32 2, i32 1, i32 1>3081  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>3082  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)3083  ret void3084}3085 3086define void @s_shuffle_v3i16_v2i16__3_1_1() {3087; GFX900-LABEL: s_shuffle_v3i16_v2i16__3_1_1:3088; GFX900:       ; %bb.0:3089; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3090; GFX900-NEXT:    ;;#ASMSTART3091; GFX900-NEXT:    ; def s43092; GFX900-NEXT:    ;;#ASMEND3093; GFX900-NEXT:    ;;#ASMSTART3094; GFX900-NEXT:    ; def s53095; GFX900-NEXT:    ;;#ASMEND3096; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s43097; GFX900-NEXT:    s_lshr_b32 s9, s4, 163098; GFX900-NEXT:    ;;#ASMSTART3099; GFX900-NEXT:    ; use s[8:9]3100; GFX900-NEXT:    ;;#ASMEND3101; GFX900-NEXT:    s_setpc_b64 s[30:31]3102;3103; GFX90A-LABEL: s_shuffle_v3i16_v2i16__3_1_1:3104; GFX90A:       ; %bb.0:3105; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3106; GFX90A-NEXT:    ;;#ASMSTART3107; GFX90A-NEXT:    ; def s43108; GFX90A-NEXT:    ;;#ASMEND3109; GFX90A-NEXT:    ;;#ASMSTART3110; GFX90A-NEXT:    ; def s53111; GFX90A-NEXT:    ;;#ASMEND3112; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s43113; GFX90A-NEXT:    s_lshr_b32 s9, s4, 163114; GFX90A-NEXT:    ;;#ASMSTART3115; GFX90A-NEXT:    ; use s[8:9]3116; GFX90A-NEXT:    ;;#ASMEND3117; GFX90A-NEXT:    s_setpc_b64 s[30:31]3118;3119; GFX942-LABEL: s_shuffle_v3i16_v2i16__3_1_1:3120; GFX942:       ; %bb.0:3121; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3122; GFX942-NEXT:    ;;#ASMSTART3123; GFX942-NEXT:    ; def s03124; GFX942-NEXT:    ;;#ASMEND3125; GFX942-NEXT:    ;;#ASMSTART3126; GFX942-NEXT:    ; def s13127; GFX942-NEXT:    ;;#ASMEND3128; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s03129; GFX942-NEXT:    s_lshr_b32 s9, s0, 163130; GFX942-NEXT:    ;;#ASMSTART3131; GFX942-NEXT:    ; use s[8:9]3132; GFX942-NEXT:    ;;#ASMEND3133; GFX942-NEXT:    s_setpc_b64 s[30:31]3134  %vec0 = call <2 x i16> asm "; def $0", "=s"()3135  %vec1 = call <2 x i16> asm "; def $0", "=s"()3136  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 1, i32 1>3137  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>3138  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)3139  ret void3140}3141 3142define void @s_shuffle_v3i16_v2i16__3_u_1() {3143; GFX900-LABEL: s_shuffle_v3i16_v2i16__3_u_1:3144; GFX900:       ; %bb.0:3145; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3146; GFX900-NEXT:    ;;#ASMSTART3147; GFX900-NEXT:    ; def s43148; GFX900-NEXT:    ;;#ASMEND3149; GFX900-NEXT:    ;;#ASMSTART3150; GFX900-NEXT:    ; def s53151; GFX900-NEXT:    ;;#ASMEND3152; GFX900-NEXT:    s_lshr_b32 s9, s4, 163153; GFX900-NEXT:    s_lshr_b32 s8, s5, 163154; GFX900-NEXT:    ;;#ASMSTART3155; GFX900-NEXT:    ; use s[8:9]3156; GFX900-NEXT:    ;;#ASMEND3157; GFX900-NEXT:    s_setpc_b64 s[30:31]3158;3159; GFX90A-LABEL: s_shuffle_v3i16_v2i16__3_u_1:3160; GFX90A:       ; %bb.0:3161; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3162; GFX90A-NEXT:    ;;#ASMSTART3163; GFX90A-NEXT:    ; def s43164; GFX90A-NEXT:    ;;#ASMEND3165; GFX90A-NEXT:    ;;#ASMSTART3166; GFX90A-NEXT:    ; def s53167; GFX90A-NEXT:    ;;#ASMEND3168; GFX90A-NEXT:    s_lshr_b32 s9, s4, 163169; GFX90A-NEXT:    s_lshr_b32 s8, s5, 163170; GFX90A-NEXT:    ;;#ASMSTART3171; GFX90A-NEXT:    ; use s[8:9]3172; GFX90A-NEXT:    ;;#ASMEND3173; GFX90A-NEXT:    s_setpc_b64 s[30:31]3174;3175; GFX942-LABEL: s_shuffle_v3i16_v2i16__3_u_1:3176; GFX942:       ; %bb.0:3177; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3178; GFX942-NEXT:    ;;#ASMSTART3179; GFX942-NEXT:    ; def s03180; GFX942-NEXT:    ;;#ASMEND3181; GFX942-NEXT:    ;;#ASMSTART3182; GFX942-NEXT:    ; def s13183; GFX942-NEXT:    ;;#ASMEND3184; GFX942-NEXT:    s_lshr_b32 s9, s0, 163185; GFX942-NEXT:    s_lshr_b32 s8, s1, 163186; GFX942-NEXT:    ;;#ASMSTART3187; GFX942-NEXT:    ; use s[8:9]3188; GFX942-NEXT:    ;;#ASMEND3189; GFX942-NEXT:    s_setpc_b64 s[30:31]3190  %vec0 = call <2 x i16> asm "; def $0", "=s"()3191  %vec1 = call <2 x i16> asm "; def $0", "=s"()3192  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 poison, i32 1>3193  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>3194  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)3195  ret void3196}3197 3198define void @s_shuffle_v3i16_v2i16__3_0_1() {3199; GFX900-LABEL: s_shuffle_v3i16_v2i16__3_0_1:3200; GFX900:       ; %bb.0:3201; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3202; GFX900-NEXT:    ;;#ASMSTART3203; GFX900-NEXT:    ; def s53204; GFX900-NEXT:    ;;#ASMEND3205; GFX900-NEXT:    s_lshr_b32 s5, s5, 163206; GFX900-NEXT:    ;;#ASMSTART3207; GFX900-NEXT:    ; def s43208; GFX900-NEXT:    ;;#ASMEND3209; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s43210; GFX900-NEXT:    s_lshr_b32 s9, s4, 163211; GFX900-NEXT:    ;;#ASMSTART3212; GFX900-NEXT:    ; use s[8:9]3213; GFX900-NEXT:    ;;#ASMEND3214; GFX900-NEXT:    s_setpc_b64 s[30:31]3215;3216; GFX90A-LABEL: s_shuffle_v3i16_v2i16__3_0_1:3217; GFX90A:       ; %bb.0:3218; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3219; GFX90A-NEXT:    ;;#ASMSTART3220; GFX90A-NEXT:    ; def s53221; GFX90A-NEXT:    ;;#ASMEND3222; GFX90A-NEXT:    s_lshr_b32 s5, s5, 163223; GFX90A-NEXT:    ;;#ASMSTART3224; GFX90A-NEXT:    ; def s43225; GFX90A-NEXT:    ;;#ASMEND3226; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s43227; GFX90A-NEXT:    s_lshr_b32 s9, s4, 163228; GFX90A-NEXT:    ;;#ASMSTART3229; GFX90A-NEXT:    ; use s[8:9]3230; GFX90A-NEXT:    ;;#ASMEND3231; GFX90A-NEXT:    s_setpc_b64 s[30:31]3232;3233; GFX942-LABEL: s_shuffle_v3i16_v2i16__3_0_1:3234; GFX942:       ; %bb.0:3235; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3236; GFX942-NEXT:    ;;#ASMSTART3237; GFX942-NEXT:    ; def s13238; GFX942-NEXT:    ;;#ASMEND3239; GFX942-NEXT:    s_lshr_b32 s1, s1, 163240; GFX942-NEXT:    ;;#ASMSTART3241; GFX942-NEXT:    ; def s03242; GFX942-NEXT:    ;;#ASMEND3243; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s03244; GFX942-NEXT:    s_lshr_b32 s9, s0, 163245; GFX942-NEXT:    ;;#ASMSTART3246; GFX942-NEXT:    ; use s[8:9]3247; GFX942-NEXT:    ;;#ASMEND3248; GFX942-NEXT:    s_setpc_b64 s[30:31]3249  %vec0 = call <2 x i16> asm "; def $0", "=s"()3250  %vec1 = call <2 x i16> asm "; def $0", "=s"()3251  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 0, i32 1>3252  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>3253  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)3254  ret void3255}3256 3257define void @s_shuffle_v3i16_v2i16__3_2_1() {3258; GFX900-LABEL: s_shuffle_v3i16_v2i16__3_2_1:3259; GFX900:       ; %bb.0:3260; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3261; GFX900-NEXT:    ;;#ASMSTART3262; GFX900-NEXT:    ; def s53263; GFX900-NEXT:    ;;#ASMEND3264; GFX900-NEXT:    s_lshr_b32 s6, s5, 163265; GFX900-NEXT:    ;;#ASMSTART3266; GFX900-NEXT:    ; def s43267; GFX900-NEXT:    ;;#ASMEND3268; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s6, s53269; GFX900-NEXT:    s_lshr_b32 s9, s4, 163270; GFX900-NEXT:    ;;#ASMSTART3271; GFX900-NEXT:    ; use s[8:9]3272; GFX900-NEXT:    ;;#ASMEND3273; GFX900-NEXT:    s_setpc_b64 s[30:31]3274;3275; GFX90A-LABEL: s_shuffle_v3i16_v2i16__3_2_1:3276; GFX90A:       ; %bb.0:3277; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3278; GFX90A-NEXT:    ;;#ASMSTART3279; GFX90A-NEXT:    ; def s53280; GFX90A-NEXT:    ;;#ASMEND3281; GFX90A-NEXT:    s_lshr_b32 s6, s5, 163282; GFX90A-NEXT:    ;;#ASMSTART3283; GFX90A-NEXT:    ; def s43284; GFX90A-NEXT:    ;;#ASMEND3285; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s6, s53286; GFX90A-NEXT:    s_lshr_b32 s9, s4, 163287; GFX90A-NEXT:    ;;#ASMSTART3288; GFX90A-NEXT:    ; use s[8:9]3289; GFX90A-NEXT:    ;;#ASMEND3290; GFX90A-NEXT:    s_setpc_b64 s[30:31]3291;3292; GFX942-LABEL: s_shuffle_v3i16_v2i16__3_2_1:3293; GFX942:       ; %bb.0:3294; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3295; GFX942-NEXT:    ;;#ASMSTART3296; GFX942-NEXT:    ; def s13297; GFX942-NEXT:    ;;#ASMEND3298; GFX942-NEXT:    s_lshr_b32 s2, s1, 163299; GFX942-NEXT:    ;;#ASMSTART3300; GFX942-NEXT:    ; def s03301; GFX942-NEXT:    ;;#ASMEND3302; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s2, s13303; GFX942-NEXT:    s_lshr_b32 s9, s0, 163304; GFX942-NEXT:    ;;#ASMSTART3305; GFX942-NEXT:    ; use s[8:9]3306; GFX942-NEXT:    ;;#ASMEND3307; GFX942-NEXT:    s_setpc_b64 s[30:31]3308  %vec0 = call <2 x i16> asm "; def $0", "=s"()3309  %vec1 = call <2 x i16> asm "; def $0", "=s"()3310  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 2, i32 1>3311  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>3312  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)3313  ret void3314}3315 3316define void @s_shuffle_v3i16_v2i16__u_2_2() {3317; GFX9-LABEL: s_shuffle_v3i16_v2i16__u_2_2:3318; GFX9:       ; %bb.0:3319; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3320; GFX9-NEXT:    ;;#ASMSTART3321; GFX9-NEXT:    ; use s[8:9]3322; GFX9-NEXT:    ;;#ASMEND3323; GFX9-NEXT:    s_setpc_b64 s[30:31]3324  %vec0 = call <2 x i16> asm "; def $0", "=s"()3325  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <3 x i32> <i32 poison, i32 2, i32 2>3326  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>3327  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)3328  ret void3329}3330 3331define void @s_shuffle_v3i16_v2i16__0_2_2() {3332; GFX900-LABEL: s_shuffle_v3i16_v2i16__0_2_2:3333; GFX900:       ; %bb.0:3334; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3335; GFX900-NEXT:    ;;#ASMSTART3336; GFX900-NEXT:    ; def s83337; GFX900-NEXT:    ;;#ASMEND3338; GFX900-NEXT:    ;;#ASMSTART3339; GFX900-NEXT:    ; use s[8:9]3340; GFX900-NEXT:    ;;#ASMEND3341; GFX900-NEXT:    s_setpc_b64 s[30:31]3342;3343; GFX90A-LABEL: s_shuffle_v3i16_v2i16__0_2_2:3344; GFX90A:       ; %bb.0:3345; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3346; GFX90A-NEXT:    ;;#ASMSTART3347; GFX90A-NEXT:    ; def s83348; GFX90A-NEXT:    ;;#ASMEND3349; GFX90A-NEXT:    ;;#ASMSTART3350; GFX90A-NEXT:    ; use s[8:9]3351; GFX90A-NEXT:    ;;#ASMEND3352; GFX90A-NEXT:    s_setpc_b64 s[30:31]3353;3354; GFX942-LABEL: s_shuffle_v3i16_v2i16__0_2_2:3355; GFX942:       ; %bb.0:3356; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3357; GFX942-NEXT:    ;;#ASMSTART3358; GFX942-NEXT:    ; def s83359; GFX942-NEXT:    ;;#ASMEND3360; GFX942-NEXT:    s_nop 03361; GFX942-NEXT:    ;;#ASMSTART3362; GFX942-NEXT:    ; use s[8:9]3363; GFX942-NEXT:    ;;#ASMEND3364; GFX942-NEXT:    s_setpc_b64 s[30:31]3365  %vec0 = call <2 x i16> asm "; def $0", "=s"()3366  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <3 x i32> <i32 0, i32 2, i32 2>3367  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>3368  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)3369  ret void3370}3371 3372define void @s_shuffle_v3i16_v2i16__1_2_2() {3373; GFX900-LABEL: s_shuffle_v3i16_v2i16__1_2_2:3374; GFX900:       ; %bb.0:3375; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3376; GFX900-NEXT:    ;;#ASMSTART3377; GFX900-NEXT:    ; def s43378; GFX900-NEXT:    ;;#ASMEND3379; GFX900-NEXT:    s_lshr_b32 s8, s4, 163380; GFX900-NEXT:    ;;#ASMSTART3381; GFX900-NEXT:    ; use s[8:9]3382; GFX900-NEXT:    ;;#ASMEND3383; GFX900-NEXT:    s_setpc_b64 s[30:31]3384;3385; GFX90A-LABEL: s_shuffle_v3i16_v2i16__1_2_2:3386; GFX90A:       ; %bb.0:3387; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3388; GFX90A-NEXT:    ;;#ASMSTART3389; GFX90A-NEXT:    ; def s43390; GFX90A-NEXT:    ;;#ASMEND3391; GFX90A-NEXT:    s_lshr_b32 s8, s4, 163392; GFX90A-NEXT:    ;;#ASMSTART3393; GFX90A-NEXT:    ; use s[8:9]3394; GFX90A-NEXT:    ;;#ASMEND3395; GFX90A-NEXT:    s_setpc_b64 s[30:31]3396;3397; GFX942-LABEL: s_shuffle_v3i16_v2i16__1_2_2:3398; GFX942:       ; %bb.0:3399; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3400; GFX942-NEXT:    ;;#ASMSTART3401; GFX942-NEXT:    ; def s03402; GFX942-NEXT:    ;;#ASMEND3403; GFX942-NEXT:    s_lshr_b32 s8, s0, 163404; GFX942-NEXT:    ;;#ASMSTART3405; GFX942-NEXT:    ; use s[8:9]3406; GFX942-NEXT:    ;;#ASMEND3407; GFX942-NEXT:    s_setpc_b64 s[30:31]3408  %vec0 = call <2 x i16> asm "; def $0", "=s"()3409  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <3 x i32> <i32 1, i32 2, i32 2>3410  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>3411  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)3412  ret void3413}3414 3415define void @s_shuffle_v3i16_v2i16__2_2_2() {3416; GFX9-LABEL: s_shuffle_v3i16_v2i16__2_2_2:3417; GFX9:       ; %bb.0:3418; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3419; GFX9-NEXT:    ;;#ASMSTART3420; GFX9-NEXT:    ; use s[8:9]3421; GFX9-NEXT:    ;;#ASMEND3422; GFX9-NEXT:    s_setpc_b64 s[30:31]3423  %vec0 = call <2 x i16> asm "; def $0", "=s"()3424  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <3 x i32> <i32 2, i32 2, i32 2>3425  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>3426  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)3427  ret void3428}3429 3430define void @s_shuffle_v3i16_v2i16__3_2_2() {3431; GFX900-LABEL: s_shuffle_v3i16_v2i16__3_2_2:3432; GFX900:       ; %bb.0:3433; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3434; GFX900-NEXT:    ;;#ASMSTART3435; GFX900-NEXT:    ; def s93436; GFX900-NEXT:    ;;#ASMEND3437; GFX900-NEXT:    s_lshr_b32 s4, s9, 163438; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s93439; GFX900-NEXT:    ;;#ASMSTART3440; GFX900-NEXT:    ; use s[8:9]3441; GFX900-NEXT:    ;;#ASMEND3442; GFX900-NEXT:    s_setpc_b64 s[30:31]3443;3444; GFX90A-LABEL: s_shuffle_v3i16_v2i16__3_2_2:3445; GFX90A:       ; %bb.0:3446; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3447; GFX90A-NEXT:    ;;#ASMSTART3448; GFX90A-NEXT:    ; def s93449; GFX90A-NEXT:    ;;#ASMEND3450; GFX90A-NEXT:    s_lshr_b32 s4, s9, 163451; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s93452; GFX90A-NEXT:    ;;#ASMSTART3453; GFX90A-NEXT:    ; use s[8:9]3454; GFX90A-NEXT:    ;;#ASMEND3455; GFX90A-NEXT:    s_setpc_b64 s[30:31]3456;3457; GFX942-LABEL: s_shuffle_v3i16_v2i16__3_2_2:3458; GFX942:       ; %bb.0:3459; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3460; GFX942-NEXT:    ;;#ASMSTART3461; GFX942-NEXT:    ; def s93462; GFX942-NEXT:    ;;#ASMEND3463; GFX942-NEXT:    s_lshr_b32 s0, s9, 163464; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s93465; GFX942-NEXT:    ;;#ASMSTART3466; GFX942-NEXT:    ; use s[8:9]3467; GFX942-NEXT:    ;;#ASMEND3468; GFX942-NEXT:    s_setpc_b64 s[30:31]3469  %vec0 = call <2 x i16> asm "; def $0", "=s"()3470  %vec1 = call <2 x i16> asm "; def $0", "=s"()3471  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 2, i32 2>3472  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>3473  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)3474  ret void3475}3476 3477define void @s_shuffle_v3i16_v2i16__3_u_2() {3478; GFX9-LABEL: s_shuffle_v3i16_v2i16__3_u_2:3479; GFX9:       ; %bb.0:3480; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3481; GFX9-NEXT:    ;;#ASMSTART3482; GFX9-NEXT:    ; def s93483; GFX9-NEXT:    ;;#ASMEND3484; GFX9-NEXT:    s_lshr_b32 s8, s9, 163485; GFX9-NEXT:    ;;#ASMSTART3486; GFX9-NEXT:    ; use s[8:9]3487; GFX9-NEXT:    ;;#ASMEND3488; GFX9-NEXT:    s_setpc_b64 s[30:31]3489  %vec0 = call <2 x i16> asm "; def $0", "=s"()3490  %vec1 = call <2 x i16> asm "; def $0", "=s"()3491  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 poison, i32 2>3492  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>3493  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)3494  ret void3495}3496 3497define void @s_shuffle_v3i16_v2i16__3_0_2() {3498; GFX900-LABEL: s_shuffle_v3i16_v2i16__3_0_2:3499; GFX900:       ; %bb.0:3500; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3501; GFX900-NEXT:    ;;#ASMSTART3502; GFX900-NEXT:    ; def s93503; GFX900-NEXT:    ;;#ASMEND3504; GFX900-NEXT:    s_lshr_b32 s5, s9, 163505; GFX900-NEXT:    ;;#ASMSTART3506; GFX900-NEXT:    ; def s43507; GFX900-NEXT:    ;;#ASMEND3508; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s43509; GFX900-NEXT:    ;;#ASMSTART3510; GFX900-NEXT:    ; use s[8:9]3511; GFX900-NEXT:    ;;#ASMEND3512; GFX900-NEXT:    s_setpc_b64 s[30:31]3513;3514; GFX90A-LABEL: s_shuffle_v3i16_v2i16__3_0_2:3515; GFX90A:       ; %bb.0:3516; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3517; GFX90A-NEXT:    ;;#ASMSTART3518; GFX90A-NEXT:    ; def s93519; GFX90A-NEXT:    ;;#ASMEND3520; GFX90A-NEXT:    s_lshr_b32 s5, s9, 163521; GFX90A-NEXT:    ;;#ASMSTART3522; GFX90A-NEXT:    ; def s43523; GFX90A-NEXT:    ;;#ASMEND3524; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s43525; GFX90A-NEXT:    ;;#ASMSTART3526; GFX90A-NEXT:    ; use s[8:9]3527; GFX90A-NEXT:    ;;#ASMEND3528; GFX90A-NEXT:    s_setpc_b64 s[30:31]3529;3530; GFX942-LABEL: s_shuffle_v3i16_v2i16__3_0_2:3531; GFX942:       ; %bb.0:3532; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3533; GFX942-NEXT:    ;;#ASMSTART3534; GFX942-NEXT:    ; def s93535; GFX942-NEXT:    ;;#ASMEND3536; GFX942-NEXT:    s_lshr_b32 s1, s9, 163537; GFX942-NEXT:    ;;#ASMSTART3538; GFX942-NEXT:    ; def s03539; GFX942-NEXT:    ;;#ASMEND3540; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s03541; GFX942-NEXT:    ;;#ASMSTART3542; GFX942-NEXT:    ; use s[8:9]3543; GFX942-NEXT:    ;;#ASMEND3544; GFX942-NEXT:    s_setpc_b64 s[30:31]3545  %vec0 = call <2 x i16> asm "; def $0", "=s"()3546  %vec1 = call <2 x i16> asm "; def $0", "=s"()3547  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 0, i32 2>3548  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>3549  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)3550  ret void3551}3552 3553define void @s_shuffle_v3i16_v2i16__3_1_2() {3554; GFX900-LABEL: s_shuffle_v3i16_v2i16__3_1_2:3555; GFX900:       ; %bb.0:3556; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3557; GFX900-NEXT:    ;;#ASMSTART3558; GFX900-NEXT:    ; def s43559; GFX900-NEXT:    ;;#ASMEND3560; GFX900-NEXT:    ;;#ASMSTART3561; GFX900-NEXT:    ; def s93562; GFX900-NEXT:    ;;#ASMEND3563; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s9, s43564; GFX900-NEXT:    ;;#ASMSTART3565; GFX900-NEXT:    ; use s[8:9]3566; GFX900-NEXT:    ;;#ASMEND3567; GFX900-NEXT:    s_setpc_b64 s[30:31]3568;3569; GFX90A-LABEL: s_shuffle_v3i16_v2i16__3_1_2:3570; GFX90A:       ; %bb.0:3571; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3572; GFX90A-NEXT:    ;;#ASMSTART3573; GFX90A-NEXT:    ; def s43574; GFX90A-NEXT:    ;;#ASMEND3575; GFX90A-NEXT:    ;;#ASMSTART3576; GFX90A-NEXT:    ; def s93577; GFX90A-NEXT:    ;;#ASMEND3578; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s9, s43579; GFX90A-NEXT:    ;;#ASMSTART3580; GFX90A-NEXT:    ; use s[8:9]3581; GFX90A-NEXT:    ;;#ASMEND3582; GFX90A-NEXT:    s_setpc_b64 s[30:31]3583;3584; GFX942-LABEL: s_shuffle_v3i16_v2i16__3_1_2:3585; GFX942:       ; %bb.0:3586; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3587; GFX942-NEXT:    ;;#ASMSTART3588; GFX942-NEXT:    ; def s03589; GFX942-NEXT:    ;;#ASMEND3590; GFX942-NEXT:    ;;#ASMSTART3591; GFX942-NEXT:    ; def s93592; GFX942-NEXT:    ;;#ASMEND3593; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s9, s03594; GFX942-NEXT:    ;;#ASMSTART3595; GFX942-NEXT:    ; use s[8:9]3596; GFX942-NEXT:    ;;#ASMEND3597; GFX942-NEXT:    s_setpc_b64 s[30:31]3598  %vec0 = call <2 x i16> asm "; def $0", "=s"()3599  %vec1 = call <2 x i16> asm "; def $0", "=s"()3600  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 1, i32 2>3601  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>3602  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)3603  ret void3604}3605 3606define void @s_shuffle_v3i16_v2i16__u_3_3() {3607; GFX9-LABEL: s_shuffle_v3i16_v2i16__u_3_3:3608; GFX9:       ; %bb.0:3609; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3610; GFX9-NEXT:    ;;#ASMSTART3611; GFX9-NEXT:    ; def s83612; GFX9-NEXT:    ;;#ASMEND3613; GFX9-NEXT:    s_lshr_b32 s9, s8, 163614; GFX9-NEXT:    ;;#ASMSTART3615; GFX9-NEXT:    ; use s[8:9]3616; GFX9-NEXT:    ;;#ASMEND3617; GFX9-NEXT:    s_setpc_b64 s[30:31]3618  %vec0 = call <2 x i16> asm "; def $0", "=s"()3619  %vec1 = call <2 x i16> asm "; def $0", "=s"()3620  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 poison, i32 3, i32 3>3621  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>3622  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)3623  ret void3624}3625 3626define void @s_shuffle_v3i16_v2i16__0_3_3() {3627; GFX900-LABEL: s_shuffle_v3i16_v2i16__0_3_3:3628; GFX900:       ; %bb.0:3629; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3630; GFX900-NEXT:    ;;#ASMSTART3631; GFX900-NEXT:    ; def s43632; GFX900-NEXT:    ;;#ASMEND3633; GFX900-NEXT:    ;;#ASMSTART3634; GFX900-NEXT:    ; def s53635; GFX900-NEXT:    ;;#ASMEND3636; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s4, s53637; GFX900-NEXT:    s_lshr_b32 s9, s5, 163638; GFX900-NEXT:    ;;#ASMSTART3639; GFX900-NEXT:    ; use s[8:9]3640; GFX900-NEXT:    ;;#ASMEND3641; GFX900-NEXT:    s_setpc_b64 s[30:31]3642;3643; GFX90A-LABEL: s_shuffle_v3i16_v2i16__0_3_3:3644; GFX90A:       ; %bb.0:3645; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3646; GFX90A-NEXT:    ;;#ASMSTART3647; GFX90A-NEXT:    ; def s43648; GFX90A-NEXT:    ;;#ASMEND3649; GFX90A-NEXT:    ;;#ASMSTART3650; GFX90A-NEXT:    ; def s53651; GFX90A-NEXT:    ;;#ASMEND3652; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s4, s53653; GFX90A-NEXT:    s_lshr_b32 s9, s5, 163654; GFX90A-NEXT:    ;;#ASMSTART3655; GFX90A-NEXT:    ; use s[8:9]3656; GFX90A-NEXT:    ;;#ASMEND3657; GFX90A-NEXT:    s_setpc_b64 s[30:31]3658;3659; GFX942-LABEL: s_shuffle_v3i16_v2i16__0_3_3:3660; GFX942:       ; %bb.0:3661; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3662; GFX942-NEXT:    ;;#ASMSTART3663; GFX942-NEXT:    ; def s03664; GFX942-NEXT:    ;;#ASMEND3665; GFX942-NEXT:    ;;#ASMSTART3666; GFX942-NEXT:    ; def s13667; GFX942-NEXT:    ;;#ASMEND3668; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s0, s13669; GFX942-NEXT:    s_lshr_b32 s9, s1, 163670; GFX942-NEXT:    ;;#ASMSTART3671; GFX942-NEXT:    ; use s[8:9]3672; GFX942-NEXT:    ;;#ASMEND3673; GFX942-NEXT:    s_setpc_b64 s[30:31]3674  %vec0 = call <2 x i16> asm "; def $0", "=s"()3675  %vec1 = call <2 x i16> asm "; def $0", "=s"()3676  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 0, i32 3, i32 3>3677  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>3678  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)3679  ret void3680}3681 3682define void @s_shuffle_v3i16_v2i16__1_3_3() {3683; GFX900-LABEL: s_shuffle_v3i16_v2i16__1_3_3:3684; GFX900:       ; %bb.0:3685; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3686; GFX900-NEXT:    ;;#ASMSTART3687; GFX900-NEXT:    ; def s43688; GFX900-NEXT:    ;;#ASMEND3689; GFX900-NEXT:    ;;#ASMSTART3690; GFX900-NEXT:    ; def s53691; GFX900-NEXT:    ;;#ASMEND3692; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s53693; GFX900-NEXT:    s_lshr_b32 s9, s5, 163694; GFX900-NEXT:    ;;#ASMSTART3695; GFX900-NEXT:    ; use s[8:9]3696; GFX900-NEXT:    ;;#ASMEND3697; GFX900-NEXT:    s_setpc_b64 s[30:31]3698;3699; GFX90A-LABEL: s_shuffle_v3i16_v2i16__1_3_3:3700; GFX90A:       ; %bb.0:3701; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3702; GFX90A-NEXT:    ;;#ASMSTART3703; GFX90A-NEXT:    ; def s43704; GFX90A-NEXT:    ;;#ASMEND3705; GFX90A-NEXT:    ;;#ASMSTART3706; GFX90A-NEXT:    ; def s53707; GFX90A-NEXT:    ;;#ASMEND3708; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s53709; GFX90A-NEXT:    s_lshr_b32 s9, s5, 163710; GFX90A-NEXT:    ;;#ASMSTART3711; GFX90A-NEXT:    ; use s[8:9]3712; GFX90A-NEXT:    ;;#ASMEND3713; GFX90A-NEXT:    s_setpc_b64 s[30:31]3714;3715; GFX942-LABEL: s_shuffle_v3i16_v2i16__1_3_3:3716; GFX942:       ; %bb.0:3717; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3718; GFX942-NEXT:    ;;#ASMSTART3719; GFX942-NEXT:    ; def s03720; GFX942-NEXT:    ;;#ASMEND3721; GFX942-NEXT:    ;;#ASMSTART3722; GFX942-NEXT:    ; def s13723; GFX942-NEXT:    ;;#ASMEND3724; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s13725; GFX942-NEXT:    s_lshr_b32 s9, s1, 163726; GFX942-NEXT:    ;;#ASMSTART3727; GFX942-NEXT:    ; use s[8:9]3728; GFX942-NEXT:    ;;#ASMEND3729; GFX942-NEXT:    s_setpc_b64 s[30:31]3730  %vec0 = call <2 x i16> asm "; def $0", "=s"()3731  %vec1 = call <2 x i16> asm "; def $0", "=s"()3732  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 1, i32 3, i32 3>3733  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>3734  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)3735  ret void3736}3737 3738define void @s_shuffle_v3i16_v2i16__2_3_3() {3739; GFX9-LABEL: s_shuffle_v3i16_v2i16__2_3_3:3740; GFX9:       ; %bb.0:3741; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3742; GFX9-NEXT:    ;;#ASMSTART3743; GFX9-NEXT:    ; def s83744; GFX9-NEXT:    ;;#ASMEND3745; GFX9-NEXT:    s_lshr_b32 s9, s8, 163746; GFX9-NEXT:    ;;#ASMSTART3747; GFX9-NEXT:    ; use s[8:9]3748; GFX9-NEXT:    ;;#ASMEND3749; GFX9-NEXT:    s_setpc_b64 s[30:31]3750  %vec0 = call <2 x i16> asm "; def $0", "=s"()3751  %vec1 = call <2 x i16> asm "; def $0", "=s"()3752  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 2, i32 3, i32 3>3753  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>3754  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)3755  ret void3756}3757 3758define void @s_shuffle_v3i16_v2i16__3_u_3() {3759; GFX900-LABEL: s_shuffle_v3i16_v2i16__3_u_3:3760; GFX900:       ; %bb.0:3761; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3762; GFX900-NEXT:    ;;#ASMSTART3763; GFX900-NEXT:    ; def s43764; GFX900-NEXT:    ;;#ASMEND3765; GFX900-NEXT:    s_lshr_b32 s8, s4, 163766; GFX900-NEXT:    s_mov_b32 s9, s83767; GFX900-NEXT:    ;;#ASMSTART3768; GFX900-NEXT:    ; use s[8:9]3769; GFX900-NEXT:    ;;#ASMEND3770; GFX900-NEXT:    s_setpc_b64 s[30:31]3771;3772; GFX90A-LABEL: s_shuffle_v3i16_v2i16__3_u_3:3773; GFX90A:       ; %bb.0:3774; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3775; GFX90A-NEXT:    ;;#ASMSTART3776; GFX90A-NEXT:    ; def s43777; GFX90A-NEXT:    ;;#ASMEND3778; GFX90A-NEXT:    s_lshr_b32 s8, s4, 163779; GFX90A-NEXT:    s_mov_b32 s9, s83780; GFX90A-NEXT:    ;;#ASMSTART3781; GFX90A-NEXT:    ; use s[8:9]3782; GFX90A-NEXT:    ;;#ASMEND3783; GFX90A-NEXT:    s_setpc_b64 s[30:31]3784;3785; GFX942-LABEL: s_shuffle_v3i16_v2i16__3_u_3:3786; GFX942:       ; %bb.0:3787; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3788; GFX942-NEXT:    ;;#ASMSTART3789; GFX942-NEXT:    ; def s03790; GFX942-NEXT:    ;;#ASMEND3791; GFX942-NEXT:    s_lshr_b32 s8, s0, 163792; GFX942-NEXT:    s_mov_b32 s9, s83793; GFX942-NEXT:    ;;#ASMSTART3794; GFX942-NEXT:    ; use s[8:9]3795; GFX942-NEXT:    ;;#ASMEND3796; GFX942-NEXT:    s_setpc_b64 s[30:31]3797  %vec0 = call <2 x i16> asm "; def $0", "=s"()3798  %vec1 = call <2 x i16> asm "; def $0", "=s"()3799  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 poison, i32 3>3800  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>3801  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)3802  ret void3803}3804 3805define void @s_shuffle_v3i16_v2i16__3_0_3() {3806; GFX900-LABEL: s_shuffle_v3i16_v2i16__3_0_3:3807; GFX900:       ; %bb.0:3808; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3809; GFX900-NEXT:    ;;#ASMSTART3810; GFX900-NEXT:    ; def s53811; GFX900-NEXT:    ;;#ASMEND3812; GFX900-NEXT:    s_lshr_b32 s9, s5, 163813; GFX900-NEXT:    ;;#ASMSTART3814; GFX900-NEXT:    ; def s43815; GFX900-NEXT:    ;;#ASMEND3816; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s9, s43817; GFX900-NEXT:    ;;#ASMSTART3818; GFX900-NEXT:    ; use s[8:9]3819; GFX900-NEXT:    ;;#ASMEND3820; GFX900-NEXT:    s_setpc_b64 s[30:31]3821;3822; GFX90A-LABEL: s_shuffle_v3i16_v2i16__3_0_3:3823; GFX90A:       ; %bb.0:3824; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3825; GFX90A-NEXT:    ;;#ASMSTART3826; GFX90A-NEXT:    ; def s53827; GFX90A-NEXT:    ;;#ASMEND3828; GFX90A-NEXT:    s_lshr_b32 s9, s5, 163829; GFX90A-NEXT:    ;;#ASMSTART3830; GFX90A-NEXT:    ; def s43831; GFX90A-NEXT:    ;;#ASMEND3832; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s9, s43833; GFX90A-NEXT:    ;;#ASMSTART3834; GFX90A-NEXT:    ; use s[8:9]3835; GFX90A-NEXT:    ;;#ASMEND3836; GFX90A-NEXT:    s_setpc_b64 s[30:31]3837;3838; GFX942-LABEL: s_shuffle_v3i16_v2i16__3_0_3:3839; GFX942:       ; %bb.0:3840; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3841; GFX942-NEXT:    ;;#ASMSTART3842; GFX942-NEXT:    ; def s13843; GFX942-NEXT:    ;;#ASMEND3844; GFX942-NEXT:    s_lshr_b32 s9, s1, 163845; GFX942-NEXT:    ;;#ASMSTART3846; GFX942-NEXT:    ; def s03847; GFX942-NEXT:    ;;#ASMEND3848; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s9, s03849; GFX942-NEXT:    ;;#ASMSTART3850; GFX942-NEXT:    ; use s[8:9]3851; GFX942-NEXT:    ;;#ASMEND3852; GFX942-NEXT:    s_setpc_b64 s[30:31]3853  %vec0 = call <2 x i16> asm "; def $0", "=s"()3854  %vec1 = call <2 x i16> asm "; def $0", "=s"()3855  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 0, i32 3>3856  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>3857  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)3858  ret void3859}3860 3861define void @s_shuffle_v3i16_v2i16__3_1_3() {3862; GFX900-LABEL: s_shuffle_v3i16_v2i16__3_1_3:3863; GFX900:       ; %bb.0:3864; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3865; GFX900-NEXT:    ;;#ASMSTART3866; GFX900-NEXT:    ; def s43867; GFX900-NEXT:    ;;#ASMEND3868; GFX900-NEXT:    ;;#ASMSTART3869; GFX900-NEXT:    ; def s53870; GFX900-NEXT:    ;;#ASMEND3871; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s43872; GFX900-NEXT:    s_lshr_b32 s9, s5, 163873; GFX900-NEXT:    ;;#ASMSTART3874; GFX900-NEXT:    ; use s[8:9]3875; GFX900-NEXT:    ;;#ASMEND3876; GFX900-NEXT:    s_setpc_b64 s[30:31]3877;3878; GFX90A-LABEL: s_shuffle_v3i16_v2i16__3_1_3:3879; GFX90A:       ; %bb.0:3880; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3881; GFX90A-NEXT:    ;;#ASMSTART3882; GFX90A-NEXT:    ; def s43883; GFX90A-NEXT:    ;;#ASMEND3884; GFX90A-NEXT:    ;;#ASMSTART3885; GFX90A-NEXT:    ; def s53886; GFX90A-NEXT:    ;;#ASMEND3887; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s43888; GFX90A-NEXT:    s_lshr_b32 s9, s5, 163889; GFX90A-NEXT:    ;;#ASMSTART3890; GFX90A-NEXT:    ; use s[8:9]3891; GFX90A-NEXT:    ;;#ASMEND3892; GFX90A-NEXT:    s_setpc_b64 s[30:31]3893;3894; GFX942-LABEL: s_shuffle_v3i16_v2i16__3_1_3:3895; GFX942:       ; %bb.0:3896; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3897; GFX942-NEXT:    ;;#ASMSTART3898; GFX942-NEXT:    ; def s03899; GFX942-NEXT:    ;;#ASMEND3900; GFX942-NEXT:    ;;#ASMSTART3901; GFX942-NEXT:    ; def s13902; GFX942-NEXT:    ;;#ASMEND3903; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s03904; GFX942-NEXT:    s_lshr_b32 s9, s1, 163905; GFX942-NEXT:    ;;#ASMSTART3906; GFX942-NEXT:    ; use s[8:9]3907; GFX942-NEXT:    ;;#ASMEND3908; GFX942-NEXT:    s_setpc_b64 s[30:31]3909  %vec0 = call <2 x i16> asm "; def $0", "=s"()3910  %vec1 = call <2 x i16> asm "; def $0", "=s"()3911  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 1, i32 3>3912  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>3913  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)3914  ret void3915}3916 3917define void @s_shuffle_v3i16_v2i16__3_2_3() {3918; GFX900-LABEL: s_shuffle_v3i16_v2i16__3_2_3:3919; GFX900:       ; %bb.0:3920; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3921; GFX900-NEXT:    ;;#ASMSTART3922; GFX900-NEXT:    ; def s43923; GFX900-NEXT:    ;;#ASMEND3924; GFX900-NEXT:    s_lshr_b32 s9, s4, 163925; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s9, s43926; GFX900-NEXT:    ;;#ASMSTART3927; GFX900-NEXT:    ; use s[8:9]3928; GFX900-NEXT:    ;;#ASMEND3929; GFX900-NEXT:    s_setpc_b64 s[30:31]3930;3931; GFX90A-LABEL: s_shuffle_v3i16_v2i16__3_2_3:3932; GFX90A:       ; %bb.0:3933; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3934; GFX90A-NEXT:    ;;#ASMSTART3935; GFX90A-NEXT:    ; def s43936; GFX90A-NEXT:    ;;#ASMEND3937; GFX90A-NEXT:    s_lshr_b32 s9, s4, 163938; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s9, s43939; GFX90A-NEXT:    ;;#ASMSTART3940; GFX90A-NEXT:    ; use s[8:9]3941; GFX90A-NEXT:    ;;#ASMEND3942; GFX90A-NEXT:    s_setpc_b64 s[30:31]3943;3944; GFX942-LABEL: s_shuffle_v3i16_v2i16__3_2_3:3945; GFX942:       ; %bb.0:3946; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3947; GFX942-NEXT:    ;;#ASMSTART3948; GFX942-NEXT:    ; def s03949; GFX942-NEXT:    ;;#ASMEND3950; GFX942-NEXT:    s_lshr_b32 s9, s0, 163951; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s9, s03952; GFX942-NEXT:    ;;#ASMSTART3953; GFX942-NEXT:    ; use s[8:9]3954; GFX942-NEXT:    ;;#ASMEND3955; GFX942-NEXT:    s_setpc_b64 s[30:31]3956  %vec0 = call <2 x i16> asm "; def $0", "=s"()3957  %vec1 = call <2 x i16> asm "; def $0", "=s"()3958  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <3 x i32> <i32 3, i32 2, i32 3>3959  %extend3 = shufflevector <3 x i16> %shuf, <3 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>3960  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x i16> %extend3)3961  ret void3962}3963;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:3964; GFX90APLUS: {{.*}}3965