brintos

brintos / llvm-project-archived public Read only

0
0
Text · 67.0 KiB · 027a9e3 Raw
1958 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9,GFX900 %s3; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX90A %s4; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx942 < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX942 %s5 6 7define void @v_shuffle_v2i16_v2i16__u_u(ptr addrspace(1) inreg %ptr) {8; GFX9-LABEL: v_shuffle_v2i16_v2i16__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, <2 x i32> poison14  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 415  ret void16}17 18define void @v_shuffle_v2i16_v2i16__0_u(ptr addrspace(1) inreg %ptr) {19; GFX900-LABEL: v_shuffle_v2i16_v2i16__0_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_v2i16_v2i16__0_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_v2i16_v2i16__0_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, <2 x i32> <i32 0, i32 poison>53  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 454  ret void55}56 57define void @v_shuffle_v2i16_v2i16__1_u(ptr addrspace(1) inreg %ptr) {58; GFX900-LABEL: v_shuffle_v2i16_v2i16__1_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_v2i16_v2i16__1_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_v2i16_v2i16__1_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, <2 x i32> <i32 1, i32 poison>95  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 496  ret void97}98 99define void @v_shuffle_v2i16_v2i16__2_u(ptr addrspace(1) inreg %ptr) {100; GFX9-LABEL: v_shuffle_v2i16_v2i16__2_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, <2 x i32> <i32 2, i32 poison>106  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4107  ret void108}109 110define void @v_shuffle_v2i16_v2i16__3_u(ptr addrspace(1) inreg %ptr) {111; GFX900-LABEL: v_shuffle_v2i16_v2i16__3_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_v2i16_v2i16__3_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_v2i16_v2i16__3_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, <2 x i32> <i32 3, i32 poison>149  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4150  ret void151}152 153define void @v_shuffle_v2i16_v2i16__3_0(ptr addrspace(1) inreg %ptr) {154; GFX900-LABEL: v_shuffle_v2i16_v2i16__3_0: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_v2i16_v2i16__3_0: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_v2i16_v2i16__3_0: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, <2 x i32> <i32 3, i32 0>202  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4203  ret void204}205 206define void @v_shuffle_v2i16_v2i16__3_1(ptr addrspace(1) inreg %ptr) {207; GFX900-LABEL: v_shuffle_v2i16_v2i16__3_1: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_v2i16_v2i16__3_1: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_v2i16_v2i16__3_1: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, <2 x i32> <i32 3, i32 1>258  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4259  ret void260}261 262define void @v_shuffle_v2i16_v2i16__3_2(ptr addrspace(1) inreg %ptr) {263; GFX900-LABEL: v_shuffle_v2i16_v2i16__3_2: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_v2i16_v2i16__3_2: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_v2i16_v2i16__3_2: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, <2 x i32> <i32 3, i32 2>301  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4302  ret void303}304 305define void @v_shuffle_v2i16_v2i16__3_3(ptr addrspace(1) inreg %ptr) {306; GFX900-LABEL: v_shuffle_v2i16_v2i16__3_3: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_v2i16_v2i16__3_3: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_v2i16_v2i16__3_3: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, <2 x i32> <i32 3, i32 3>347  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4348  ret void349}350 351define void @v_shuffle_v2i16_v2i16__u_0(ptr addrspace(1) inreg %ptr) {352; GFX900-LABEL: v_shuffle_v2i16_v2i16__u_0:353; GFX900:       ; %bb.0:354; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)355; GFX900-NEXT:    ;;#ASMSTART356; GFX900-NEXT:    ; def v1357; GFX900-NEXT:    ;;#ASMEND358; GFX900-NEXT:    v_mov_b32_e32 v0, 0359; GFX900-NEXT:    v_lshlrev_b32_e32 v1, 16, v1360; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]361; GFX900-NEXT:    s_waitcnt vmcnt(0)362; GFX900-NEXT:    s_setpc_b64 s[30:31]363;364; GFX90A-LABEL: v_shuffle_v2i16_v2i16__u_0:365; GFX90A:       ; %bb.0:366; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)367; GFX90A-NEXT:    ;;#ASMSTART368; GFX90A-NEXT:    ; def v1369; GFX90A-NEXT:    ;;#ASMEND370; GFX90A-NEXT:    v_mov_b32_e32 v0, 0371; GFX90A-NEXT:    v_lshlrev_b32_e32 v1, 16, v1372; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]373; GFX90A-NEXT:    s_waitcnt vmcnt(0)374; GFX90A-NEXT:    s_setpc_b64 s[30:31]375;376; GFX942-LABEL: v_shuffle_v2i16_v2i16__u_0:377; GFX942:       ; %bb.0:378; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)379; GFX942-NEXT:    ;;#ASMSTART380; GFX942-NEXT:    ; def v1381; GFX942-NEXT:    ;;#ASMEND382; GFX942-NEXT:    v_mov_b32_e32 v0, 0383; GFX942-NEXT:    v_lshlrev_b32_e32 v1, 16, v1384; GFX942-NEXT:    global_store_dword v0, v1, s[0:1]385; GFX942-NEXT:    s_waitcnt vmcnt(0)386; GFX942-NEXT:    s_setpc_b64 s[30:31]387  %vec0 = call <2 x i16> asm "; def $0", "=v"()388  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 poison, i32 0>389  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4390  ret void391}392 393define void @v_shuffle_v2i16_v2i16__0_0(ptr addrspace(1) inreg %ptr) {394; GFX900-LABEL: v_shuffle_v2i16_v2i16__0_0:395; GFX900:       ; %bb.0:396; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)397; GFX900-NEXT:    ;;#ASMSTART398; GFX900-NEXT:    ; def v1399; GFX900-NEXT:    ;;#ASMEND400; GFX900-NEXT:    s_mov_b32 s4, 0x5040100401; GFX900-NEXT:    v_mov_b32_e32 v0, 0402; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s4403; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]404; GFX900-NEXT:    s_waitcnt vmcnt(0)405; GFX900-NEXT:    s_setpc_b64 s[30:31]406;407; GFX90A-LABEL: v_shuffle_v2i16_v2i16__0_0:408; GFX90A:       ; %bb.0:409; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)410; GFX90A-NEXT:    ;;#ASMSTART411; GFX90A-NEXT:    ; def v1412; GFX90A-NEXT:    ;;#ASMEND413; GFX90A-NEXT:    s_mov_b32 s4, 0x5040100414; GFX90A-NEXT:    v_mov_b32_e32 v0, 0415; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s4416; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]417; GFX90A-NEXT:    s_waitcnt vmcnt(0)418; GFX90A-NEXT:    s_setpc_b64 s[30:31]419;420; GFX942-LABEL: v_shuffle_v2i16_v2i16__0_0:421; GFX942:       ; %bb.0:422; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)423; GFX942-NEXT:    ;;#ASMSTART424; GFX942-NEXT:    ; def v1425; GFX942-NEXT:    ;;#ASMEND426; GFX942-NEXT:    s_mov_b32 s2, 0x5040100427; GFX942-NEXT:    v_mov_b32_e32 v0, 0428; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s2429; GFX942-NEXT:    global_store_dword v0, v1, s[0:1]430; GFX942-NEXT:    s_waitcnt vmcnt(0)431; GFX942-NEXT:    s_setpc_b64 s[30:31]432  %vec0 = call <2 x i16> asm "; def $0", "=v"()433  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> zeroinitializer434  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4435  ret void436}437 438define void @v_shuffle_v2i16_v2i16__1_0(ptr addrspace(1) inreg %ptr) {439; GFX900-LABEL: v_shuffle_v2i16_v2i16__1_0:440; GFX900:       ; %bb.0:441; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)442; GFX900-NEXT:    ;;#ASMSTART443; GFX900-NEXT:    ; def v1444; GFX900-NEXT:    ;;#ASMEND445; GFX900-NEXT:    v_mov_b32_e32 v0, 0446; GFX900-NEXT:    v_alignbit_b32 v1, v1, v1, 16447; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]448; GFX900-NEXT:    s_waitcnt vmcnt(0)449; GFX900-NEXT:    s_setpc_b64 s[30:31]450;451; GFX90A-LABEL: v_shuffle_v2i16_v2i16__1_0:452; GFX90A:       ; %bb.0:453; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)454; GFX90A-NEXT:    ;;#ASMSTART455; GFX90A-NEXT:    ; def v1456; GFX90A-NEXT:    ;;#ASMEND457; GFX90A-NEXT:    v_mov_b32_e32 v0, 0458; GFX90A-NEXT:    v_alignbit_b32 v1, v1, v1, 16459; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]460; GFX90A-NEXT:    s_waitcnt vmcnt(0)461; GFX90A-NEXT:    s_setpc_b64 s[30:31]462;463; GFX942-LABEL: v_shuffle_v2i16_v2i16__1_0:464; GFX942:       ; %bb.0:465; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)466; GFX942-NEXT:    ;;#ASMSTART467; GFX942-NEXT:    ; def v1468; GFX942-NEXT:    ;;#ASMEND469; GFX942-NEXT:    v_mov_b32_e32 v0, 0470; GFX942-NEXT:    v_alignbit_b32 v1, v1, v1, 16471; GFX942-NEXT:    global_store_dword v0, v1, s[0:1]472; GFX942-NEXT:    s_waitcnt vmcnt(0)473; GFX942-NEXT:    s_setpc_b64 s[30:31]474  %vec0 = call <2 x i16> asm "; def $0", "=v"()475  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 1, i32 0>476  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4477  ret void478}479 480define void @v_shuffle_v2i16_v2i16__2_0(ptr addrspace(1) inreg %ptr) {481; GFX900-LABEL: v_shuffle_v2i16_v2i16__2_0:482; GFX900:       ; %bb.0:483; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)484; GFX900-NEXT:    ;;#ASMSTART485; GFX900-NEXT:    ; def v1486; GFX900-NEXT:    ;;#ASMEND487; GFX900-NEXT:    v_mov_b32_e32 v0, 0488; GFX900-NEXT:    v_lshlrev_b32_e32 v1, 16, v1489; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]490; GFX900-NEXT:    s_waitcnt vmcnt(0)491; GFX900-NEXT:    s_setpc_b64 s[30:31]492;493; GFX90A-LABEL: v_shuffle_v2i16_v2i16__2_0:494; GFX90A:       ; %bb.0:495; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)496; GFX90A-NEXT:    ;;#ASMSTART497; GFX90A-NEXT:    ; def v1498; GFX90A-NEXT:    ;;#ASMEND499; GFX90A-NEXT:    v_mov_b32_e32 v0, 0500; GFX90A-NEXT:    v_lshlrev_b32_e32 v1, 16, v1501; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]502; GFX90A-NEXT:    s_waitcnt vmcnt(0)503; GFX90A-NEXT:    s_setpc_b64 s[30:31]504;505; GFX942-LABEL: v_shuffle_v2i16_v2i16__2_0:506; GFX942:       ; %bb.0:507; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)508; GFX942-NEXT:    ;;#ASMSTART509; GFX942-NEXT:    ; def v1510; GFX942-NEXT:    ;;#ASMEND511; GFX942-NEXT:    v_mov_b32_e32 v0, 0512; GFX942-NEXT:    v_lshlrev_b32_e32 v1, 16, v1513; GFX942-NEXT:    global_store_dword v0, v1, s[0:1]514; GFX942-NEXT:    s_waitcnt vmcnt(0)515; GFX942-NEXT:    s_setpc_b64 s[30:31]516  %vec0 = call <2 x i16> asm "; def $0", "=v"()517  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 2, i32 0>518  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4519  ret void520}521 522define void @v_shuffle_v2i16_v2i16__u_1(ptr addrspace(1) inreg %ptr) {523; GFX900-LABEL: v_shuffle_v2i16_v2i16__u_1:524; GFX900:       ; %bb.0:525; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)526; GFX900-NEXT:    v_mov_b32_e32 v0, 0527; GFX900-NEXT:    ;;#ASMSTART528; GFX900-NEXT:    ; def v1529; GFX900-NEXT:    ;;#ASMEND530; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]531; GFX900-NEXT:    s_waitcnt vmcnt(0)532; GFX900-NEXT:    s_setpc_b64 s[30:31]533;534; GFX90A-LABEL: v_shuffle_v2i16_v2i16__u_1:535; GFX90A:       ; %bb.0:536; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)537; GFX90A-NEXT:    v_mov_b32_e32 v0, 0538; GFX90A-NEXT:    ;;#ASMSTART539; GFX90A-NEXT:    ; def v1540; GFX90A-NEXT:    ;;#ASMEND541; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]542; GFX90A-NEXT:    s_waitcnt vmcnt(0)543; GFX90A-NEXT:    s_setpc_b64 s[30:31]544;545; GFX942-LABEL: v_shuffle_v2i16_v2i16__u_1:546; GFX942:       ; %bb.0:547; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)548; GFX942-NEXT:    v_mov_b32_e32 v0, 0549; GFX942-NEXT:    ;;#ASMSTART550; GFX942-NEXT:    ; def v1551; GFX942-NEXT:    ;;#ASMEND552; GFX942-NEXT:    global_store_dword v0, v1, s[0:1]553; GFX942-NEXT:    s_waitcnt vmcnt(0)554; GFX942-NEXT:    s_setpc_b64 s[30:31]555  %vec0 = call <2 x i16> asm "; def $0", "=v"()556  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 poison, i32 1>557  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4558  ret void559}560 561define void @v_shuffle_v2i16_v2i16__0_1(ptr addrspace(1) inreg %ptr) {562; GFX900-LABEL: v_shuffle_v2i16_v2i16__0_1:563; GFX900:       ; %bb.0:564; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)565; GFX900-NEXT:    v_mov_b32_e32 v0, 0566; GFX900-NEXT:    ;;#ASMSTART567; GFX900-NEXT:    ; def v1568; GFX900-NEXT:    ;;#ASMEND569; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]570; GFX900-NEXT:    s_waitcnt vmcnt(0)571; GFX900-NEXT:    s_setpc_b64 s[30:31]572;573; GFX90A-LABEL: v_shuffle_v2i16_v2i16__0_1:574; GFX90A:       ; %bb.0:575; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)576; GFX90A-NEXT:    v_mov_b32_e32 v0, 0577; GFX90A-NEXT:    ;;#ASMSTART578; GFX90A-NEXT:    ; def v1579; GFX90A-NEXT:    ;;#ASMEND580; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]581; GFX90A-NEXT:    s_waitcnt vmcnt(0)582; GFX90A-NEXT:    s_setpc_b64 s[30:31]583;584; GFX942-LABEL: v_shuffle_v2i16_v2i16__0_1:585; GFX942:       ; %bb.0:586; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)587; GFX942-NEXT:    v_mov_b32_e32 v0, 0588; GFX942-NEXT:    ;;#ASMSTART589; GFX942-NEXT:    ; def v1590; GFX942-NEXT:    ;;#ASMEND591; GFX942-NEXT:    global_store_dword v0, v1, s[0:1]592; GFX942-NEXT:    s_waitcnt vmcnt(0)593; GFX942-NEXT:    s_setpc_b64 s[30:31]594  %vec0 = call <2 x i16> asm "; def $0", "=v"()595  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 0, i32 1>596  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4597  ret void598}599 600define void @v_shuffle_v2i16_v2i16__1_1(ptr addrspace(1) inreg %ptr) {601; GFX900-LABEL: v_shuffle_v2i16_v2i16__1_1:602; GFX900:       ; %bb.0:603; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)604; GFX900-NEXT:    ;;#ASMSTART605; GFX900-NEXT:    ; def v1606; GFX900-NEXT:    ;;#ASMEND607; GFX900-NEXT:    s_mov_b32 s4, 0x7060302608; GFX900-NEXT:    v_mov_b32_e32 v0, 0609; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s4610; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]611; GFX900-NEXT:    s_waitcnt vmcnt(0)612; GFX900-NEXT:    s_setpc_b64 s[30:31]613;614; GFX90A-LABEL: v_shuffle_v2i16_v2i16__1_1:615; GFX90A:       ; %bb.0:616; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)617; GFX90A-NEXT:    ;;#ASMSTART618; GFX90A-NEXT:    ; def v1619; GFX90A-NEXT:    ;;#ASMEND620; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302621; GFX90A-NEXT:    v_mov_b32_e32 v0, 0622; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s4623; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]624; GFX90A-NEXT:    s_waitcnt vmcnt(0)625; GFX90A-NEXT:    s_setpc_b64 s[30:31]626;627; GFX942-LABEL: v_shuffle_v2i16_v2i16__1_1:628; GFX942:       ; %bb.0:629; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)630; GFX942-NEXT:    ;;#ASMSTART631; GFX942-NEXT:    ; def v1632; GFX942-NEXT:    ;;#ASMEND633; GFX942-NEXT:    s_mov_b32 s2, 0x7060302634; GFX942-NEXT:    v_mov_b32_e32 v0, 0635; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s2636; GFX942-NEXT:    global_store_dword v0, v1, s[0:1]637; GFX942-NEXT:    s_waitcnt vmcnt(0)638; GFX942-NEXT:    s_setpc_b64 s[30:31]639  %vec0 = call <2 x i16> asm "; def $0", "=v"()640  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 1, i32 1>641  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4642  ret void643}644 645define void @v_shuffle_v2i16_v2i16__2_1(ptr addrspace(1) inreg %ptr) {646; GFX900-LABEL: v_shuffle_v2i16_v2i16__2_1:647; GFX900:       ; %bb.0:648; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)649; GFX900-NEXT:    v_mov_b32_e32 v0, 0650; GFX900-NEXT:    ;;#ASMSTART651; GFX900-NEXT:    ; def v1652; GFX900-NEXT:    ;;#ASMEND653; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]654; GFX900-NEXT:    s_waitcnt vmcnt(0)655; GFX900-NEXT:    s_setpc_b64 s[30:31]656;657; GFX90A-LABEL: v_shuffle_v2i16_v2i16__2_1:658; GFX90A:       ; %bb.0:659; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)660; GFX90A-NEXT:    v_mov_b32_e32 v0, 0661; GFX90A-NEXT:    ;;#ASMSTART662; GFX90A-NEXT:    ; def v1663; GFX90A-NEXT:    ;;#ASMEND664; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]665; GFX90A-NEXT:    s_waitcnt vmcnt(0)666; GFX90A-NEXT:    s_setpc_b64 s[30:31]667;668; GFX942-LABEL: v_shuffle_v2i16_v2i16__2_1:669; GFX942:       ; %bb.0:670; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)671; GFX942-NEXT:    v_mov_b32_e32 v0, 0672; GFX942-NEXT:    ;;#ASMSTART673; GFX942-NEXT:    ; def v1674; GFX942-NEXT:    ;;#ASMEND675; GFX942-NEXT:    global_store_dword v0, v1, s[0:1]676; GFX942-NEXT:    s_waitcnt vmcnt(0)677; GFX942-NEXT:    s_setpc_b64 s[30:31]678  %vec0 = call <2 x i16> asm "; def $0", "=v"()679  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 2, i32 1>680  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4681  ret void682}683 684define void @v_shuffle_v2i16_v2i16__u_2(ptr addrspace(1) inreg %ptr) {685; GFX9-LABEL: v_shuffle_v2i16_v2i16__u_2:686; GFX9:       ; %bb.0:687; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)688; GFX9-NEXT:    s_setpc_b64 s[30:31]689  %vec0 = call <2 x i16> asm "; def $0", "=v"()690  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 poison, i32 2>691  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4692  ret void693}694 695define void @v_shuffle_v2i16_v2i16__0_2(ptr addrspace(1) inreg %ptr) {696; GFX900-LABEL: v_shuffle_v2i16_v2i16__0_2:697; GFX900:       ; %bb.0:698; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)699; GFX900-NEXT:    v_mov_b32_e32 v0, 0700; GFX900-NEXT:    ;;#ASMSTART701; GFX900-NEXT:    ; def v1702; GFX900-NEXT:    ;;#ASMEND703; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]704; GFX900-NEXT:    s_waitcnt vmcnt(0)705; GFX900-NEXT:    s_setpc_b64 s[30:31]706;707; GFX90A-LABEL: v_shuffle_v2i16_v2i16__0_2:708; GFX90A:       ; %bb.0:709; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)710; GFX90A-NEXT:    v_mov_b32_e32 v0, 0711; GFX90A-NEXT:    ;;#ASMSTART712; GFX90A-NEXT:    ; def v1713; GFX90A-NEXT:    ;;#ASMEND714; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]715; GFX90A-NEXT:    s_waitcnt vmcnt(0)716; GFX90A-NEXT:    s_setpc_b64 s[30:31]717;718; GFX942-LABEL: v_shuffle_v2i16_v2i16__0_2:719; GFX942:       ; %bb.0:720; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)721; GFX942-NEXT:    v_mov_b32_e32 v0, 0722; GFX942-NEXT:    ;;#ASMSTART723; GFX942-NEXT:    ; def v1724; GFX942-NEXT:    ;;#ASMEND725; GFX942-NEXT:    global_store_dword v0, v1, s[0:1]726; GFX942-NEXT:    s_waitcnt vmcnt(0)727; GFX942-NEXT:    s_setpc_b64 s[30:31]728  %vec0 = call <2 x i16> asm "; def $0", "=v"()729  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 0, i32 2>730  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4731  ret void732}733 734define void @v_shuffle_v2i16_v2i16__1_2(ptr addrspace(1) inreg %ptr) {735; GFX900-LABEL: v_shuffle_v2i16_v2i16__1_2:736; GFX900:       ; %bb.0:737; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)738; GFX900-NEXT:    ;;#ASMSTART739; GFX900-NEXT:    ; def v1740; GFX900-NEXT:    ;;#ASMEND741; GFX900-NEXT:    v_mov_b32_e32 v0, 0742; GFX900-NEXT:    v_alignbit_b32 v1, s4, v1, 16743; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]744; GFX900-NEXT:    s_waitcnt vmcnt(0)745; GFX900-NEXT:    s_setpc_b64 s[30:31]746;747; GFX90A-LABEL: v_shuffle_v2i16_v2i16__1_2:748; GFX90A:       ; %bb.0:749; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)750; GFX90A-NEXT:    ;;#ASMSTART751; GFX90A-NEXT:    ; def v1752; GFX90A-NEXT:    ;;#ASMEND753; GFX90A-NEXT:    v_mov_b32_e32 v0, 0754; GFX90A-NEXT:    v_alignbit_b32 v1, s4, v1, 16755; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]756; GFX90A-NEXT:    s_waitcnt vmcnt(0)757; GFX90A-NEXT:    s_setpc_b64 s[30:31]758;759; GFX942-LABEL: v_shuffle_v2i16_v2i16__1_2:760; GFX942:       ; %bb.0:761; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)762; GFX942-NEXT:    ;;#ASMSTART763; GFX942-NEXT:    ; def v1764; GFX942-NEXT:    ;;#ASMEND765; GFX942-NEXT:    v_mov_b32_e32 v0, 0766; GFX942-NEXT:    v_alignbit_b32 v1, s0, v1, 16767; GFX942-NEXT:    global_store_dword v0, v1, s[0:1]768; GFX942-NEXT:    s_waitcnt vmcnt(0)769; GFX942-NEXT:    s_setpc_b64 s[30:31]770  %vec0 = call <2 x i16> asm "; def $0", "=v"()771  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 1, i32 2>772  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4773  ret void774}775 776define void @v_shuffle_v2i16_v2i16__2_2(ptr addrspace(1) inreg %ptr) {777; GFX9-LABEL: v_shuffle_v2i16_v2i16__2_2:778; GFX9:       ; %bb.0:779; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)780; GFX9-NEXT:    s_setpc_b64 s[30:31]781  %vec0 = call <2 x i16> asm "; def $0", "=v"()782  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 2, i32 2>783  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4784  ret void785}786 787define void @v_shuffle_v2i16_v2i16__u_3(ptr addrspace(1) inreg %ptr) {788; GFX900-LABEL: v_shuffle_v2i16_v2i16__u_3:789; GFX900:       ; %bb.0:790; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)791; GFX900-NEXT:    v_mov_b32_e32 v0, 0792; GFX900-NEXT:    ;;#ASMSTART793; GFX900-NEXT:    ; def v1794; GFX900-NEXT:    ;;#ASMEND795; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]796; GFX900-NEXT:    s_waitcnt vmcnt(0)797; GFX900-NEXT:    s_setpc_b64 s[30:31]798;799; GFX90A-LABEL: v_shuffle_v2i16_v2i16__u_3:800; GFX90A:       ; %bb.0:801; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)802; GFX90A-NEXT:    v_mov_b32_e32 v0, 0803; GFX90A-NEXT:    ;;#ASMSTART804; GFX90A-NEXT:    ; def v1805; GFX90A-NEXT:    ;;#ASMEND806; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]807; GFX90A-NEXT:    s_waitcnt vmcnt(0)808; GFX90A-NEXT:    s_setpc_b64 s[30:31]809;810; GFX942-LABEL: v_shuffle_v2i16_v2i16__u_3:811; GFX942:       ; %bb.0:812; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)813; GFX942-NEXT:    v_mov_b32_e32 v0, 0814; GFX942-NEXT:    ;;#ASMSTART815; GFX942-NEXT:    ; def v1816; GFX942-NEXT:    ;;#ASMEND817; GFX942-NEXT:    global_store_dword v0, v1, s[0:1]818; GFX942-NEXT:    s_waitcnt vmcnt(0)819; GFX942-NEXT:    s_setpc_b64 s[30:31]820  %vec0 = call <2 x i16> asm "; def $0", "=v"()821  %vec1 = call <2 x i16> asm "; def $0", "=v"()822  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 poison, i32 3>823  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4824  ret void825}826 827define void @v_shuffle_v2i16_v2i16__0_3(ptr addrspace(1) inreg %ptr) {828; GFX900-LABEL: v_shuffle_v2i16_v2i16__0_3:829; GFX900:       ; %bb.0:830; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)831; GFX900-NEXT:    ;;#ASMSTART832; GFX900-NEXT:    ; def v1833; GFX900-NEXT:    ;;#ASMEND834; GFX900-NEXT:    s_mov_b32 s4, 0xffff835; GFX900-NEXT:    v_mov_b32_e32 v0, 0836; GFX900-NEXT:    ;;#ASMSTART837; GFX900-NEXT:    ; def v2838; GFX900-NEXT:    ;;#ASMEND839; GFX900-NEXT:    v_bfi_b32 v1, s4, v1, v2840; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]841; GFX900-NEXT:    s_waitcnt vmcnt(0)842; GFX900-NEXT:    s_setpc_b64 s[30:31]843;844; GFX90A-LABEL: v_shuffle_v2i16_v2i16__0_3:845; GFX90A:       ; %bb.0:846; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)847; GFX90A-NEXT:    ;;#ASMSTART848; GFX90A-NEXT:    ; def v1849; GFX90A-NEXT:    ;;#ASMEND850; GFX90A-NEXT:    s_mov_b32 s4, 0xffff851; GFX90A-NEXT:    v_mov_b32_e32 v0, 0852; GFX90A-NEXT:    ;;#ASMSTART853; GFX90A-NEXT:    ; def v2854; GFX90A-NEXT:    ;;#ASMEND855; GFX90A-NEXT:    v_bfi_b32 v1, s4, v1, v2856; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]857; GFX90A-NEXT:    s_waitcnt vmcnt(0)858; GFX90A-NEXT:    s_setpc_b64 s[30:31]859;860; GFX942-LABEL: v_shuffle_v2i16_v2i16__0_3:861; GFX942:       ; %bb.0:862; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)863; GFX942-NEXT:    ;;#ASMSTART864; GFX942-NEXT:    ; def v1865; GFX942-NEXT:    ;;#ASMEND866; GFX942-NEXT:    s_mov_b32 s2, 0xffff867; GFX942-NEXT:    v_mov_b32_e32 v0, 0868; GFX942-NEXT:    ;;#ASMSTART869; GFX942-NEXT:    ; def v2870; GFX942-NEXT:    ;;#ASMEND871; GFX942-NEXT:    s_nop 0872; GFX942-NEXT:    v_bfi_b32 v1, s2, v1, v2873; GFX942-NEXT:    global_store_dword v0, v1, s[0:1]874; GFX942-NEXT:    s_waitcnt vmcnt(0)875; GFX942-NEXT:    s_setpc_b64 s[30:31]876  %vec0 = call <2 x i16> asm "; def $0", "=v"()877  %vec1 = call <2 x i16> asm "; def $0", "=v"()878  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 0, i32 3>879  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4880  ret void881}882 883define void @v_shuffle_v2i16_v2i16__1_3(ptr addrspace(1) inreg %ptr) {884; GFX900-LABEL: v_shuffle_v2i16_v2i16__1_3:885; GFX900:       ; %bb.0:886; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)887; GFX900-NEXT:    ;;#ASMSTART888; GFX900-NEXT:    ; def v1889; GFX900-NEXT:    ;;#ASMEND890; GFX900-NEXT:    s_mov_b32 s4, 0x7060302891; GFX900-NEXT:    v_mov_b32_e32 v0, 0892; GFX900-NEXT:    ;;#ASMSTART893; GFX900-NEXT:    ; def v2894; GFX900-NEXT:    ;;#ASMEND895; GFX900-NEXT:    v_perm_b32 v1, v2, v1, s4896; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]897; GFX900-NEXT:    s_waitcnt vmcnt(0)898; GFX900-NEXT:    s_setpc_b64 s[30:31]899;900; GFX90A-LABEL: v_shuffle_v2i16_v2i16__1_3:901; GFX90A:       ; %bb.0:902; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)903; GFX90A-NEXT:    ;;#ASMSTART904; GFX90A-NEXT:    ; def v1905; GFX90A-NEXT:    ;;#ASMEND906; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302907; GFX90A-NEXT:    v_mov_b32_e32 v0, 0908; GFX90A-NEXT:    ;;#ASMSTART909; GFX90A-NEXT:    ; def v2910; GFX90A-NEXT:    ;;#ASMEND911; GFX90A-NEXT:    v_perm_b32 v1, v2, v1, s4912; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]913; GFX90A-NEXT:    s_waitcnt vmcnt(0)914; GFX90A-NEXT:    s_setpc_b64 s[30:31]915;916; GFX942-LABEL: v_shuffle_v2i16_v2i16__1_3:917; GFX942:       ; %bb.0:918; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)919; GFX942-NEXT:    ;;#ASMSTART920; GFX942-NEXT:    ; def v1921; GFX942-NEXT:    ;;#ASMEND922; GFX942-NEXT:    s_mov_b32 s2, 0x7060302923; GFX942-NEXT:    v_mov_b32_e32 v0, 0924; GFX942-NEXT:    ;;#ASMSTART925; GFX942-NEXT:    ; def v2926; GFX942-NEXT:    ;;#ASMEND927; GFX942-NEXT:    s_nop 0928; GFX942-NEXT:    v_perm_b32 v1, v2, v1, s2929; GFX942-NEXT:    global_store_dword v0, v1, s[0:1]930; GFX942-NEXT:    s_waitcnt vmcnt(0)931; GFX942-NEXT:    s_setpc_b64 s[30:31]932  %vec0 = call <2 x i16> asm "; def $0", "=v"()933  %vec1 = call <2 x i16> asm "; def $0", "=v"()934  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 1, i32 3>935  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4936  ret void937}938 939define void @v_shuffle_v2i16_v2i16__2_3(ptr addrspace(1) inreg %ptr) {940; GFX900-LABEL: v_shuffle_v2i16_v2i16__2_3:941; GFX900:       ; %bb.0:942; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)943; GFX900-NEXT:    v_mov_b32_e32 v0, 0944; GFX900-NEXT:    ;;#ASMSTART945; GFX900-NEXT:    ; def v1946; GFX900-NEXT:    ;;#ASMEND947; GFX900-NEXT:    global_store_dword v0, v1, s[16:17]948; GFX900-NEXT:    s_waitcnt vmcnt(0)949; GFX900-NEXT:    s_setpc_b64 s[30:31]950;951; GFX90A-LABEL: v_shuffle_v2i16_v2i16__2_3:952; GFX90A:       ; %bb.0:953; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)954; GFX90A-NEXT:    v_mov_b32_e32 v0, 0955; GFX90A-NEXT:    ;;#ASMSTART956; GFX90A-NEXT:    ; def v1957; GFX90A-NEXT:    ;;#ASMEND958; GFX90A-NEXT:    global_store_dword v0, v1, s[16:17]959; GFX90A-NEXT:    s_waitcnt vmcnt(0)960; GFX90A-NEXT:    s_setpc_b64 s[30:31]961;962; GFX942-LABEL: v_shuffle_v2i16_v2i16__2_3:963; GFX942:       ; %bb.0:964; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)965; GFX942-NEXT:    v_mov_b32_e32 v0, 0966; GFX942-NEXT:    ;;#ASMSTART967; GFX942-NEXT:    ; def v1968; GFX942-NEXT:    ;;#ASMEND969; GFX942-NEXT:    global_store_dword v0, v1, s[0:1]970; GFX942-NEXT:    s_waitcnt vmcnt(0)971; GFX942-NEXT:    s_setpc_b64 s[30:31]972  %vec0 = call <2 x i16> asm "; def $0", "=v"()973  %vec1 = call <2 x i16> asm "; def $0", "=v"()974  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 2, i32 3>975  store <2 x i16> %shuf, ptr addrspace(1) %ptr, align 4976  ret void977}978 979define void @s_shuffle_v2i16_v2i16__u_u() {980; GFX9-LABEL: s_shuffle_v2i16_v2i16__u_u:981; GFX9:       ; %bb.0:982; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)983; GFX9-NEXT:    ;;#ASMSTART984; GFX9-NEXT:    ; use s8985; GFX9-NEXT:    ;;#ASMEND986; GFX9-NEXT:    s_setpc_b64 s[30:31]987  %vec0 = call <2 x i16> asm "; def $0", "=s"()988  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> poison989  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)990  ret void991}992 993define void @s_shuffle_v2i16_v2i16__0_u() {994; GFX900-LABEL: s_shuffle_v2i16_v2i16__0_u:995; GFX900:       ; %bb.0:996; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)997; GFX900-NEXT:    ;;#ASMSTART998; GFX900-NEXT:    ; def s8999; GFX900-NEXT:    ;;#ASMEND1000; GFX900-NEXT:    ;;#ASMSTART1001; GFX900-NEXT:    ; use s81002; GFX900-NEXT:    ;;#ASMEND1003; GFX900-NEXT:    s_setpc_b64 s[30:31]1004;1005; GFX90A-LABEL: s_shuffle_v2i16_v2i16__0_u:1006; GFX90A:       ; %bb.0:1007; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1008; GFX90A-NEXT:    ;;#ASMSTART1009; GFX90A-NEXT:    ; def s81010; GFX90A-NEXT:    ;;#ASMEND1011; GFX90A-NEXT:    ;;#ASMSTART1012; GFX90A-NEXT:    ; use s81013; GFX90A-NEXT:    ;;#ASMEND1014; GFX90A-NEXT:    s_setpc_b64 s[30:31]1015;1016; GFX942-LABEL: s_shuffle_v2i16_v2i16__0_u:1017; GFX942:       ; %bb.0:1018; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1019; GFX942-NEXT:    ;;#ASMSTART1020; GFX942-NEXT:    ; def s81021; GFX942-NEXT:    ;;#ASMEND1022; GFX942-NEXT:    s_nop 01023; GFX942-NEXT:    ;;#ASMSTART1024; GFX942-NEXT:    ; use s81025; GFX942-NEXT:    ;;#ASMEND1026; GFX942-NEXT:    s_setpc_b64 s[30:31]1027  %vec0 = call <2 x i16> asm "; def $0", "=s"()1028  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 0, i32 poison>1029  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)1030  ret void1031}1032 1033define void @s_shuffle_v2i16_v2i16__1_u() {1034; GFX900-LABEL: s_shuffle_v2i16_v2i16__1_u:1035; GFX900:       ; %bb.0:1036; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1037; GFX900-NEXT:    ;;#ASMSTART1038; GFX900-NEXT:    ; def s41039; GFX900-NEXT:    ;;#ASMEND1040; GFX900-NEXT:    s_lshr_b32 s8, s4, 161041; GFX900-NEXT:    ;;#ASMSTART1042; GFX900-NEXT:    ; use s81043; GFX900-NEXT:    ;;#ASMEND1044; GFX900-NEXT:    s_setpc_b64 s[30:31]1045;1046; GFX90A-LABEL: s_shuffle_v2i16_v2i16__1_u:1047; GFX90A:       ; %bb.0:1048; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1049; GFX90A-NEXT:    ;;#ASMSTART1050; GFX90A-NEXT:    ; def s41051; GFX90A-NEXT:    ;;#ASMEND1052; GFX90A-NEXT:    s_lshr_b32 s8, s4, 161053; GFX90A-NEXT:    ;;#ASMSTART1054; GFX90A-NEXT:    ; use s81055; GFX90A-NEXT:    ;;#ASMEND1056; GFX90A-NEXT:    s_setpc_b64 s[30:31]1057;1058; GFX942-LABEL: s_shuffle_v2i16_v2i16__1_u:1059; GFX942:       ; %bb.0:1060; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1061; GFX942-NEXT:    ;;#ASMSTART1062; GFX942-NEXT:    ; def s01063; GFX942-NEXT:    ;;#ASMEND1064; GFX942-NEXT:    s_lshr_b32 s8, s0, 161065; GFX942-NEXT:    ;;#ASMSTART1066; GFX942-NEXT:    ; use s81067; GFX942-NEXT:    ;;#ASMEND1068; GFX942-NEXT:    s_setpc_b64 s[30:31]1069  %vec0 = call <2 x i16> asm "; def $0", "=s"()1070  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 1, i32 poison>1071  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)1072  ret void1073}1074 1075define void @s_shuffle_v2i16_v2i16__2_u() {1076; GFX9-LABEL: s_shuffle_v2i16_v2i16__2_u:1077; GFX9:       ; %bb.0:1078; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1079; GFX9-NEXT:    ;;#ASMSTART1080; GFX9-NEXT:    ; use s81081; GFX9-NEXT:    ;;#ASMEND1082; GFX9-NEXT:    s_setpc_b64 s[30:31]1083  %vec0 = call <2 x i16> asm "; def $0", "=s"()1084  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 2, i32 poison>1085  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)1086  ret void1087}1088 1089define void @s_shuffle_v2i16_v2i16__3_u() {1090; GFX900-LABEL: s_shuffle_v2i16_v2i16__3_u:1091; GFX900:       ; %bb.0:1092; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1093; GFX900-NEXT:    ;;#ASMSTART1094; GFX900-NEXT:    ; def s41095; GFX900-NEXT:    ;;#ASMEND1096; GFX900-NEXT:    s_lshr_b32 s8, s4, 161097; GFX900-NEXT:    ;;#ASMSTART1098; GFX900-NEXT:    ; use s81099; GFX900-NEXT:    ;;#ASMEND1100; GFX900-NEXT:    s_setpc_b64 s[30:31]1101;1102; GFX90A-LABEL: s_shuffle_v2i16_v2i16__3_u:1103; GFX90A:       ; %bb.0:1104; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1105; GFX90A-NEXT:    ;;#ASMSTART1106; GFX90A-NEXT:    ; def s41107; GFX90A-NEXT:    ;;#ASMEND1108; GFX90A-NEXT:    s_lshr_b32 s8, s4, 161109; GFX90A-NEXT:    ;;#ASMSTART1110; GFX90A-NEXT:    ; use s81111; GFX90A-NEXT:    ;;#ASMEND1112; GFX90A-NEXT:    s_setpc_b64 s[30:31]1113;1114; GFX942-LABEL: s_shuffle_v2i16_v2i16__3_u:1115; GFX942:       ; %bb.0:1116; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1117; GFX942-NEXT:    ;;#ASMSTART1118; GFX942-NEXT:    ; def s01119; GFX942-NEXT:    ;;#ASMEND1120; GFX942-NEXT:    s_lshr_b32 s8, s0, 161121; GFX942-NEXT:    ;;#ASMSTART1122; GFX942-NEXT:    ; use s81123; GFX942-NEXT:    ;;#ASMEND1124; GFX942-NEXT:    s_setpc_b64 s[30:31]1125  %vec0 = call <2 x i16> asm "; def $0", "=s"()1126  %vec1 = call <2 x i16> asm "; def $0", "=s"()1127  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 3, i32 poison>1128  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)1129  ret void1130}1131 1132define void @s_shuffle_v2i16_v2i16__3_0() {1133; GFX900-LABEL: s_shuffle_v2i16_v2i16__3_0:1134; GFX900:       ; %bb.0:1135; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1136; GFX900-NEXT:    ;;#ASMSTART1137; GFX900-NEXT:    ; def s51138; GFX900-NEXT:    ;;#ASMEND1139; GFX900-NEXT:    s_lshr_b32 s5, s5, 161140; GFX900-NEXT:    ;;#ASMSTART1141; GFX900-NEXT:    ; def s41142; GFX900-NEXT:    ;;#ASMEND1143; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s41144; GFX900-NEXT:    ;;#ASMSTART1145; GFX900-NEXT:    ; use s81146; GFX900-NEXT:    ;;#ASMEND1147; GFX900-NEXT:    s_setpc_b64 s[30:31]1148;1149; GFX90A-LABEL: s_shuffle_v2i16_v2i16__3_0:1150; GFX90A:       ; %bb.0:1151; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1152; GFX90A-NEXT:    ;;#ASMSTART1153; GFX90A-NEXT:    ; def s51154; GFX90A-NEXT:    ;;#ASMEND1155; GFX90A-NEXT:    s_lshr_b32 s5, s5, 161156; GFX90A-NEXT:    ;;#ASMSTART1157; GFX90A-NEXT:    ; def s41158; GFX90A-NEXT:    ;;#ASMEND1159; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s41160; GFX90A-NEXT:    ;;#ASMSTART1161; GFX90A-NEXT:    ; use s81162; GFX90A-NEXT:    ;;#ASMEND1163; GFX90A-NEXT:    s_setpc_b64 s[30:31]1164;1165; GFX942-LABEL: s_shuffle_v2i16_v2i16__3_0:1166; GFX942:       ; %bb.0:1167; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1168; GFX942-NEXT:    ;;#ASMSTART1169; GFX942-NEXT:    ; def s11170; GFX942-NEXT:    ;;#ASMEND1171; GFX942-NEXT:    s_lshr_b32 s1, s1, 161172; GFX942-NEXT:    ;;#ASMSTART1173; GFX942-NEXT:    ; def s01174; GFX942-NEXT:    ;;#ASMEND1175; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s01176; GFX942-NEXT:    ;;#ASMSTART1177; GFX942-NEXT:    ; use s81178; GFX942-NEXT:    ;;#ASMEND1179; GFX942-NEXT:    s_setpc_b64 s[30:31]1180  %vec0 = call <2 x i16> asm "; def $0", "=s"()1181  %vec1 = call <2 x i16> asm "; def $0", "=s"()1182  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 3, i32 0>1183  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)1184  ret void1185}1186 1187define void @s_shuffle_v2i16_v2i16__3_1() {1188; GFX900-LABEL: s_shuffle_v2i16_v2i16__3_1:1189; GFX900:       ; %bb.0:1190; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1191; GFX900-NEXT:    ;;#ASMSTART1192; GFX900-NEXT:    ; def s41193; GFX900-NEXT:    ;;#ASMEND1194; GFX900-NEXT:    ;;#ASMSTART1195; GFX900-NEXT:    ; def s51196; GFX900-NEXT:    ;;#ASMEND1197; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s5, s41198; GFX900-NEXT:    ;;#ASMSTART1199; GFX900-NEXT:    ; use s81200; GFX900-NEXT:    ;;#ASMEND1201; GFX900-NEXT:    s_setpc_b64 s[30:31]1202;1203; GFX90A-LABEL: s_shuffle_v2i16_v2i16__3_1:1204; GFX90A:       ; %bb.0:1205; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1206; GFX90A-NEXT:    ;;#ASMSTART1207; GFX90A-NEXT:    ; def s41208; GFX90A-NEXT:    ;;#ASMEND1209; GFX90A-NEXT:    ;;#ASMSTART1210; GFX90A-NEXT:    ; def s51211; GFX90A-NEXT:    ;;#ASMEND1212; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s5, s41213; GFX90A-NEXT:    ;;#ASMSTART1214; GFX90A-NEXT:    ; use s81215; GFX90A-NEXT:    ;;#ASMEND1216; GFX90A-NEXT:    s_setpc_b64 s[30:31]1217;1218; GFX942-LABEL: s_shuffle_v2i16_v2i16__3_1:1219; GFX942:       ; %bb.0:1220; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1221; GFX942-NEXT:    ;;#ASMSTART1222; GFX942-NEXT:    ; def s01223; GFX942-NEXT:    ;;#ASMEND1224; GFX942-NEXT:    ;;#ASMSTART1225; GFX942-NEXT:    ; def s11226; GFX942-NEXT:    ;;#ASMEND1227; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s1, s01228; GFX942-NEXT:    ;;#ASMSTART1229; GFX942-NEXT:    ; use s81230; GFX942-NEXT:    ;;#ASMEND1231; GFX942-NEXT:    s_setpc_b64 s[30:31]1232  %vec0 = call <2 x i16> asm "; def $0", "=s"()1233  %vec1 = call <2 x i16> asm "; def $0", "=s"()1234  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 3, i32 1>1235  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)1236  ret void1237}1238 1239define void @s_shuffle_v2i16_v2i16__3_2() {1240; GFX900-LABEL: s_shuffle_v2i16_v2i16__3_2:1241; GFX900:       ; %bb.0:1242; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1243; GFX900-NEXT:    ;;#ASMSTART1244; GFX900-NEXT:    ; def s41245; GFX900-NEXT:    ;;#ASMEND1246; GFX900-NEXT:    s_lshr_b32 s5, s4, 161247; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s41248; GFX900-NEXT:    ;;#ASMSTART1249; GFX900-NEXT:    ; use s81250; GFX900-NEXT:    ;;#ASMEND1251; GFX900-NEXT:    s_setpc_b64 s[30:31]1252;1253; GFX90A-LABEL: s_shuffle_v2i16_v2i16__3_2:1254; GFX90A:       ; %bb.0:1255; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1256; GFX90A-NEXT:    ;;#ASMSTART1257; GFX90A-NEXT:    ; def s41258; GFX90A-NEXT:    ;;#ASMEND1259; GFX90A-NEXT:    s_lshr_b32 s5, s4, 161260; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s41261; GFX90A-NEXT:    ;;#ASMSTART1262; GFX90A-NEXT:    ; use s81263; GFX90A-NEXT:    ;;#ASMEND1264; GFX90A-NEXT:    s_setpc_b64 s[30:31]1265;1266; GFX942-LABEL: s_shuffle_v2i16_v2i16__3_2:1267; GFX942:       ; %bb.0:1268; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1269; GFX942-NEXT:    ;;#ASMSTART1270; GFX942-NEXT:    ; def s01271; GFX942-NEXT:    ;;#ASMEND1272; GFX942-NEXT:    s_lshr_b32 s1, s0, 161273; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s01274; GFX942-NEXT:    ;;#ASMSTART1275; GFX942-NEXT:    ; use s81276; GFX942-NEXT:    ;;#ASMEND1277; GFX942-NEXT:    s_setpc_b64 s[30:31]1278  %vec0 = call <2 x i16> asm "; def $0", "=s"()1279  %vec1 = call <2 x i16> asm "; def $0", "=s"()1280  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 3, i32 2>1281  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)1282  ret void1283}1284 1285define void @s_shuffle_v2i16_v2i16__3_3() {1286; GFX900-LABEL: s_shuffle_v2i16_v2i16__3_3:1287; GFX900:       ; %bb.0:1288; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1289; GFX900-NEXT:    ;;#ASMSTART1290; GFX900-NEXT:    ; def s41291; GFX900-NEXT:    ;;#ASMEND1292; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s41293; GFX900-NEXT:    ;;#ASMSTART1294; GFX900-NEXT:    ; use s81295; GFX900-NEXT:    ;;#ASMEND1296; GFX900-NEXT:    s_setpc_b64 s[30:31]1297;1298; GFX90A-LABEL: s_shuffle_v2i16_v2i16__3_3:1299; GFX90A:       ; %bb.0:1300; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1301; GFX90A-NEXT:    ;;#ASMSTART1302; GFX90A-NEXT:    ; def s41303; GFX90A-NEXT:    ;;#ASMEND1304; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s41305; GFX90A-NEXT:    ;;#ASMSTART1306; GFX90A-NEXT:    ; use s81307; GFX90A-NEXT:    ;;#ASMEND1308; GFX90A-NEXT:    s_setpc_b64 s[30:31]1309;1310; GFX942-LABEL: s_shuffle_v2i16_v2i16__3_3:1311; GFX942:       ; %bb.0:1312; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1313; GFX942-NEXT:    ;;#ASMSTART1314; GFX942-NEXT:    ; def s01315; GFX942-NEXT:    ;;#ASMEND1316; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s01317; GFX942-NEXT:    ;;#ASMSTART1318; GFX942-NEXT:    ; use s81319; GFX942-NEXT:    ;;#ASMEND1320; GFX942-NEXT:    s_setpc_b64 s[30:31]1321  %vec0 = call <2 x i16> asm "; def $0", "=s"()1322  %vec1 = call <2 x i16> asm "; def $0", "=s"()1323  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 3, i32 3>1324  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)1325  ret void1326}1327 1328define void @s_shuffle_v2i16_v2i16__u_0() {1329; GFX900-LABEL: s_shuffle_v2i16_v2i16__u_0:1330; GFX900:       ; %bb.0:1331; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1332; GFX900-NEXT:    ;;#ASMSTART1333; GFX900-NEXT:    ; def s41334; GFX900-NEXT:    ;;#ASMEND1335; GFX900-NEXT:    s_lshl_b32 s8, s4, 161336; GFX900-NEXT:    ;;#ASMSTART1337; GFX900-NEXT:    ; use s81338; GFX900-NEXT:    ;;#ASMEND1339; GFX900-NEXT:    s_setpc_b64 s[30:31]1340;1341; GFX90A-LABEL: s_shuffle_v2i16_v2i16__u_0:1342; GFX90A:       ; %bb.0:1343; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1344; GFX90A-NEXT:    ;;#ASMSTART1345; GFX90A-NEXT:    ; def s41346; GFX90A-NEXT:    ;;#ASMEND1347; GFX90A-NEXT:    s_lshl_b32 s8, s4, 161348; GFX90A-NEXT:    ;;#ASMSTART1349; GFX90A-NEXT:    ; use s81350; GFX90A-NEXT:    ;;#ASMEND1351; GFX90A-NEXT:    s_setpc_b64 s[30:31]1352;1353; GFX942-LABEL: s_shuffle_v2i16_v2i16__u_0:1354; GFX942:       ; %bb.0:1355; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1356; GFX942-NEXT:    ;;#ASMSTART1357; GFX942-NEXT:    ; def s01358; GFX942-NEXT:    ;;#ASMEND1359; GFX942-NEXT:    s_lshl_b32 s8, s0, 161360; GFX942-NEXT:    ;;#ASMSTART1361; GFX942-NEXT:    ; use s81362; GFX942-NEXT:    ;;#ASMEND1363; GFX942-NEXT:    s_setpc_b64 s[30:31]1364  %vec0 = call <2 x i16> asm "; def $0", "=s"()1365  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 poison, i32 0>1366  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)1367  ret void1368}1369 1370define void @s_shuffle_v2i16_v2i16__0_0() {1371; GFX900-LABEL: s_shuffle_v2i16_v2i16__0_0:1372; GFX900:       ; %bb.0:1373; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1374; GFX900-NEXT:    ;;#ASMSTART1375; GFX900-NEXT:    ; def s41376; GFX900-NEXT:    ;;#ASMEND1377; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s41378; GFX900-NEXT:    ;;#ASMSTART1379; GFX900-NEXT:    ; use s81380; GFX900-NEXT:    ;;#ASMEND1381; GFX900-NEXT:    s_setpc_b64 s[30:31]1382;1383; GFX90A-LABEL: s_shuffle_v2i16_v2i16__0_0:1384; GFX90A:       ; %bb.0:1385; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1386; GFX90A-NEXT:    ;;#ASMSTART1387; GFX90A-NEXT:    ; def s41388; GFX90A-NEXT:    ;;#ASMEND1389; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s41390; GFX90A-NEXT:    ;;#ASMSTART1391; GFX90A-NEXT:    ; use s81392; GFX90A-NEXT:    ;;#ASMEND1393; GFX90A-NEXT:    s_setpc_b64 s[30:31]1394;1395; GFX942-LABEL: s_shuffle_v2i16_v2i16__0_0:1396; GFX942:       ; %bb.0:1397; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1398; GFX942-NEXT:    ;;#ASMSTART1399; GFX942-NEXT:    ; def s01400; GFX942-NEXT:    ;;#ASMEND1401; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s01402; GFX942-NEXT:    ;;#ASMSTART1403; GFX942-NEXT:    ; use s81404; GFX942-NEXT:    ;;#ASMEND1405; GFX942-NEXT:    s_setpc_b64 s[30:31]1406  %vec0 = call <2 x i16> asm "; def $0", "=s"()1407  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> zeroinitializer1408  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)1409  ret void1410}1411 1412define void @s_shuffle_v2i16_v2i16__1_0() {1413; GFX900-LABEL: s_shuffle_v2i16_v2i16__1_0:1414; GFX900:       ; %bb.0:1415; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1416; GFX900-NEXT:    ;;#ASMSTART1417; GFX900-NEXT:    ; def s41418; GFX900-NEXT:    ;;#ASMEND1419; GFX900-NEXT:    s_lshr_b32 s5, s4, 161420; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s41421; GFX900-NEXT:    ;;#ASMSTART1422; GFX900-NEXT:    ; use s81423; GFX900-NEXT:    ;;#ASMEND1424; GFX900-NEXT:    s_setpc_b64 s[30:31]1425;1426; GFX90A-LABEL: s_shuffle_v2i16_v2i16__1_0:1427; GFX90A:       ; %bb.0:1428; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1429; GFX90A-NEXT:    ;;#ASMSTART1430; GFX90A-NEXT:    ; def s41431; GFX90A-NEXT:    ;;#ASMEND1432; GFX90A-NEXT:    s_lshr_b32 s5, s4, 161433; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s41434; GFX90A-NEXT:    ;;#ASMSTART1435; GFX90A-NEXT:    ; use s81436; GFX90A-NEXT:    ;;#ASMEND1437; GFX90A-NEXT:    s_setpc_b64 s[30:31]1438;1439; GFX942-LABEL: s_shuffle_v2i16_v2i16__1_0:1440; GFX942:       ; %bb.0:1441; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1442; GFX942-NEXT:    ;;#ASMSTART1443; GFX942-NEXT:    ; def s01444; GFX942-NEXT:    ;;#ASMEND1445; GFX942-NEXT:    s_lshr_b32 s1, s0, 161446; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s01447; GFX942-NEXT:    ;;#ASMSTART1448; GFX942-NEXT:    ; use s81449; GFX942-NEXT:    ;;#ASMEND1450; GFX942-NEXT:    s_setpc_b64 s[30:31]1451  %vec0 = call <2 x i16> asm "; def $0", "=s"()1452  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 1, i32 0>1453  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)1454  ret void1455}1456 1457define void @s_shuffle_v2i16_v2i16__2_0() {1458; GFX900-LABEL: s_shuffle_v2i16_v2i16__2_0:1459; GFX900:       ; %bb.0:1460; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1461; GFX900-NEXT:    ;;#ASMSTART1462; GFX900-NEXT:    ; def s41463; GFX900-NEXT:    ;;#ASMEND1464; GFX900-NEXT:    s_lshl_b32 s8, s4, 161465; GFX900-NEXT:    ;;#ASMSTART1466; GFX900-NEXT:    ; use s81467; GFX900-NEXT:    ;;#ASMEND1468; GFX900-NEXT:    s_setpc_b64 s[30:31]1469;1470; GFX90A-LABEL: s_shuffle_v2i16_v2i16__2_0:1471; GFX90A:       ; %bb.0:1472; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1473; GFX90A-NEXT:    ;;#ASMSTART1474; GFX90A-NEXT:    ; def s41475; GFX90A-NEXT:    ;;#ASMEND1476; GFX90A-NEXT:    s_lshl_b32 s8, s4, 161477; GFX90A-NEXT:    ;;#ASMSTART1478; GFX90A-NEXT:    ; use s81479; GFX90A-NEXT:    ;;#ASMEND1480; GFX90A-NEXT:    s_setpc_b64 s[30:31]1481;1482; GFX942-LABEL: s_shuffle_v2i16_v2i16__2_0:1483; GFX942:       ; %bb.0:1484; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1485; GFX942-NEXT:    ;;#ASMSTART1486; GFX942-NEXT:    ; def s01487; GFX942-NEXT:    ;;#ASMEND1488; GFX942-NEXT:    s_lshl_b32 s8, s0, 161489; GFX942-NEXT:    ;;#ASMSTART1490; GFX942-NEXT:    ; use s81491; GFX942-NEXT:    ;;#ASMEND1492; GFX942-NEXT:    s_setpc_b64 s[30:31]1493  %vec0 = call <2 x i16> asm "; def $0", "=s"()1494  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 2, i32 0>1495  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)1496  ret void1497}1498 1499define void @s_shuffle_v2i16_v2i16__u_1() {1500; GFX900-LABEL: s_shuffle_v2i16_v2i16__u_1:1501; GFX900:       ; %bb.0:1502; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1503; GFX900-NEXT:    ;;#ASMSTART1504; GFX900-NEXT:    ; def s81505; GFX900-NEXT:    ;;#ASMEND1506; GFX900-NEXT:    ;;#ASMSTART1507; GFX900-NEXT:    ; use s81508; GFX900-NEXT:    ;;#ASMEND1509; GFX900-NEXT:    s_setpc_b64 s[30:31]1510;1511; GFX90A-LABEL: s_shuffle_v2i16_v2i16__u_1:1512; GFX90A:       ; %bb.0:1513; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1514; GFX90A-NEXT:    ;;#ASMSTART1515; GFX90A-NEXT:    ; def s81516; GFX90A-NEXT:    ;;#ASMEND1517; GFX90A-NEXT:    ;;#ASMSTART1518; GFX90A-NEXT:    ; use s81519; GFX90A-NEXT:    ;;#ASMEND1520; GFX90A-NEXT:    s_setpc_b64 s[30:31]1521;1522; GFX942-LABEL: s_shuffle_v2i16_v2i16__u_1:1523; GFX942:       ; %bb.0:1524; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1525; GFX942-NEXT:    ;;#ASMSTART1526; GFX942-NEXT:    ; def s81527; GFX942-NEXT:    ;;#ASMEND1528; GFX942-NEXT:    s_nop 01529; GFX942-NEXT:    ;;#ASMSTART1530; GFX942-NEXT:    ; use s81531; GFX942-NEXT:    ;;#ASMEND1532; GFX942-NEXT:    s_setpc_b64 s[30:31]1533  %vec0 = call <2 x i16> asm "; def $0", "=s"()1534  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 poison, i32 1>1535  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)1536  ret void1537}1538 1539define void @s_shuffle_v2i16_v2i16__0_1() {1540; GFX900-LABEL: s_shuffle_v2i16_v2i16__0_1:1541; GFX900:       ; %bb.0:1542; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1543; GFX900-NEXT:    ;;#ASMSTART1544; GFX900-NEXT:    ; def s81545; GFX900-NEXT:    ;;#ASMEND1546; GFX900-NEXT:    ;;#ASMSTART1547; GFX900-NEXT:    ; use s81548; GFX900-NEXT:    ;;#ASMEND1549; GFX900-NEXT:    s_setpc_b64 s[30:31]1550;1551; GFX90A-LABEL: s_shuffle_v2i16_v2i16__0_1:1552; GFX90A:       ; %bb.0:1553; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1554; GFX90A-NEXT:    ;;#ASMSTART1555; GFX90A-NEXT:    ; def s81556; GFX90A-NEXT:    ;;#ASMEND1557; GFX90A-NEXT:    ;;#ASMSTART1558; GFX90A-NEXT:    ; use s81559; GFX90A-NEXT:    ;;#ASMEND1560; GFX90A-NEXT:    s_setpc_b64 s[30:31]1561;1562; GFX942-LABEL: s_shuffle_v2i16_v2i16__0_1:1563; GFX942:       ; %bb.0:1564; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1565; GFX942-NEXT:    ;;#ASMSTART1566; GFX942-NEXT:    ; def s81567; GFX942-NEXT:    ;;#ASMEND1568; GFX942-NEXT:    s_nop 01569; GFX942-NEXT:    ;;#ASMSTART1570; GFX942-NEXT:    ; use s81571; GFX942-NEXT:    ;;#ASMEND1572; GFX942-NEXT:    s_setpc_b64 s[30:31]1573  %vec0 = call <2 x i16> asm "; def $0", "=s"()1574  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 0, i32 1>1575  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)1576  ret void1577}1578 1579define void @s_shuffle_v2i16_v2i16__1_1() {1580; GFX900-LABEL: s_shuffle_v2i16_v2i16__1_1:1581; GFX900:       ; %bb.0:1582; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1583; GFX900-NEXT:    ;;#ASMSTART1584; GFX900-NEXT:    ; def s41585; GFX900-NEXT:    ;;#ASMEND1586; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s41587; GFX900-NEXT:    ;;#ASMSTART1588; GFX900-NEXT:    ; use s81589; GFX900-NEXT:    ;;#ASMEND1590; GFX900-NEXT:    s_setpc_b64 s[30:31]1591;1592; GFX90A-LABEL: s_shuffle_v2i16_v2i16__1_1:1593; GFX90A:       ; %bb.0:1594; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1595; GFX90A-NEXT:    ;;#ASMSTART1596; GFX90A-NEXT:    ; def s41597; GFX90A-NEXT:    ;;#ASMEND1598; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s41599; GFX90A-NEXT:    ;;#ASMSTART1600; GFX90A-NEXT:    ; use s81601; GFX90A-NEXT:    ;;#ASMEND1602; GFX90A-NEXT:    s_setpc_b64 s[30:31]1603;1604; GFX942-LABEL: s_shuffle_v2i16_v2i16__1_1:1605; GFX942:       ; %bb.0:1606; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1607; GFX942-NEXT:    ;;#ASMSTART1608; GFX942-NEXT:    ; def s01609; GFX942-NEXT:    ;;#ASMEND1610; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s01611; GFX942-NEXT:    ;;#ASMSTART1612; GFX942-NEXT:    ; use s81613; GFX942-NEXT:    ;;#ASMEND1614; GFX942-NEXT:    s_setpc_b64 s[30:31]1615  %vec0 = call <2 x i16> asm "; def $0", "=s"()1616  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 1, i32 1>1617  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)1618  ret void1619}1620 1621define void @s_shuffle_v2i16_v2i16__2_1() {1622; GFX900-LABEL: s_shuffle_v2i16_v2i16__2_1:1623; GFX900:       ; %bb.0:1624; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1625; GFX900-NEXT:    ;;#ASMSTART1626; GFX900-NEXT:    ; def s81627; GFX900-NEXT:    ;;#ASMEND1628; GFX900-NEXT:    ;;#ASMSTART1629; GFX900-NEXT:    ; use s81630; GFX900-NEXT:    ;;#ASMEND1631; GFX900-NEXT:    s_setpc_b64 s[30:31]1632;1633; GFX90A-LABEL: s_shuffle_v2i16_v2i16__2_1:1634; GFX90A:       ; %bb.0:1635; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1636; GFX90A-NEXT:    ;;#ASMSTART1637; GFX90A-NEXT:    ; def s81638; GFX90A-NEXT:    ;;#ASMEND1639; GFX90A-NEXT:    ;;#ASMSTART1640; GFX90A-NEXT:    ; use s81641; GFX90A-NEXT:    ;;#ASMEND1642; GFX90A-NEXT:    s_setpc_b64 s[30:31]1643;1644; GFX942-LABEL: s_shuffle_v2i16_v2i16__2_1:1645; GFX942:       ; %bb.0:1646; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1647; GFX942-NEXT:    ;;#ASMSTART1648; GFX942-NEXT:    ; def s81649; GFX942-NEXT:    ;;#ASMEND1650; GFX942-NEXT:    s_nop 01651; GFX942-NEXT:    ;;#ASMSTART1652; GFX942-NEXT:    ; use s81653; GFX942-NEXT:    ;;#ASMEND1654; GFX942-NEXT:    s_setpc_b64 s[30:31]1655  %vec0 = call <2 x i16> asm "; def $0", "=s"()1656  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 2, i32 1>1657  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)1658  ret void1659}1660 1661define void @s_shuffle_v2i16_v2i16__u_2() {1662; GFX9-LABEL: s_shuffle_v2i16_v2i16__u_2:1663; GFX9:       ; %bb.0:1664; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1665; GFX9-NEXT:    ;;#ASMSTART1666; GFX9-NEXT:    ; use s81667; GFX9-NEXT:    ;;#ASMEND1668; GFX9-NEXT:    s_setpc_b64 s[30:31]1669  %vec0 = call <2 x i16> asm "; def $0", "=s"()1670  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 poison, i32 2>1671  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)1672  ret void1673}1674 1675define void @s_shuffle_v2i16_v2i16__0_2() {1676; GFX900-LABEL: s_shuffle_v2i16_v2i16__0_2:1677; GFX900:       ; %bb.0:1678; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1679; GFX900-NEXT:    ;;#ASMSTART1680; GFX900-NEXT:    ; def s81681; GFX900-NEXT:    ;;#ASMEND1682; GFX900-NEXT:    ;;#ASMSTART1683; GFX900-NEXT:    ; use s81684; GFX900-NEXT:    ;;#ASMEND1685; GFX900-NEXT:    s_setpc_b64 s[30:31]1686;1687; GFX90A-LABEL: s_shuffle_v2i16_v2i16__0_2:1688; GFX90A:       ; %bb.0:1689; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1690; GFX90A-NEXT:    ;;#ASMSTART1691; GFX90A-NEXT:    ; def s81692; GFX90A-NEXT:    ;;#ASMEND1693; GFX90A-NEXT:    ;;#ASMSTART1694; GFX90A-NEXT:    ; use s81695; GFX90A-NEXT:    ;;#ASMEND1696; GFX90A-NEXT:    s_setpc_b64 s[30:31]1697;1698; GFX942-LABEL: s_shuffle_v2i16_v2i16__0_2:1699; GFX942:       ; %bb.0:1700; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1701; GFX942-NEXT:    ;;#ASMSTART1702; GFX942-NEXT:    ; def s81703; GFX942-NEXT:    ;;#ASMEND1704; GFX942-NEXT:    s_nop 01705; GFX942-NEXT:    ;;#ASMSTART1706; GFX942-NEXT:    ; use s81707; GFX942-NEXT:    ;;#ASMEND1708; GFX942-NEXT:    s_setpc_b64 s[30:31]1709  %vec0 = call <2 x i16> asm "; def $0", "=s"()1710  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 0, i32 2>1711  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)1712  ret void1713}1714 1715define void @s_shuffle_v2i16_v2i16__1_2() {1716; GFX900-LABEL: s_shuffle_v2i16_v2i16__1_2:1717; GFX900:       ; %bb.0:1718; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1719; GFX900-NEXT:    ;;#ASMSTART1720; GFX900-NEXT:    ; def s41721; GFX900-NEXT:    ;;#ASMEND1722; GFX900-NEXT:    s_lshr_b32 s8, s4, 161723; GFX900-NEXT:    ;;#ASMSTART1724; GFX900-NEXT:    ; use s81725; GFX900-NEXT:    ;;#ASMEND1726; GFX900-NEXT:    s_setpc_b64 s[30:31]1727;1728; GFX90A-LABEL: s_shuffle_v2i16_v2i16__1_2:1729; GFX90A:       ; %bb.0:1730; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1731; GFX90A-NEXT:    ;;#ASMSTART1732; GFX90A-NEXT:    ; def s41733; GFX90A-NEXT:    ;;#ASMEND1734; GFX90A-NEXT:    s_lshr_b32 s8, s4, 161735; GFX90A-NEXT:    ;;#ASMSTART1736; GFX90A-NEXT:    ; use s81737; GFX90A-NEXT:    ;;#ASMEND1738; GFX90A-NEXT:    s_setpc_b64 s[30:31]1739;1740; GFX942-LABEL: s_shuffle_v2i16_v2i16__1_2:1741; GFX942:       ; %bb.0:1742; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1743; GFX942-NEXT:    ;;#ASMSTART1744; GFX942-NEXT:    ; def s01745; GFX942-NEXT:    ;;#ASMEND1746; GFX942-NEXT:    s_lshr_b32 s8, s0, 161747; GFX942-NEXT:    ;;#ASMSTART1748; GFX942-NEXT:    ; use s81749; GFX942-NEXT:    ;;#ASMEND1750; GFX942-NEXT:    s_setpc_b64 s[30:31]1751  %vec0 = call <2 x i16> asm "; def $0", "=s"()1752  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 1, i32 2>1753  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)1754  ret void1755}1756 1757define void @s_shuffle_v2i16_v2i16__2_2() {1758; GFX9-LABEL: s_shuffle_v2i16_v2i16__2_2:1759; GFX9:       ; %bb.0:1760; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1761; GFX9-NEXT:    ;;#ASMSTART1762; GFX9-NEXT:    ; use s81763; GFX9-NEXT:    ;;#ASMEND1764; GFX9-NEXT:    s_setpc_b64 s[30:31]1765  %vec0 = call <2 x i16> asm "; def $0", "=s"()1766  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> poison, <2 x i32> <i32 2, i32 2>1767  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)1768  ret void1769}1770 1771define void @s_shuffle_v2i16_v2i16__u_3() {1772; GFX900-LABEL: s_shuffle_v2i16_v2i16__u_3:1773; GFX900:       ; %bb.0:1774; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1775; GFX900-NEXT:    ;;#ASMSTART1776; GFX900-NEXT:    ; def s81777; GFX900-NEXT:    ;;#ASMEND1778; GFX900-NEXT:    ;;#ASMSTART1779; GFX900-NEXT:    ; use s81780; GFX900-NEXT:    ;;#ASMEND1781; GFX900-NEXT:    s_setpc_b64 s[30:31]1782;1783; GFX90A-LABEL: s_shuffle_v2i16_v2i16__u_3:1784; GFX90A:       ; %bb.0:1785; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1786; GFX90A-NEXT:    ;;#ASMSTART1787; GFX90A-NEXT:    ; def s81788; GFX90A-NEXT:    ;;#ASMEND1789; GFX90A-NEXT:    ;;#ASMSTART1790; GFX90A-NEXT:    ; use s81791; GFX90A-NEXT:    ;;#ASMEND1792; GFX90A-NEXT:    s_setpc_b64 s[30:31]1793;1794; GFX942-LABEL: s_shuffle_v2i16_v2i16__u_3:1795; GFX942:       ; %bb.0:1796; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1797; GFX942-NEXT:    ;;#ASMSTART1798; GFX942-NEXT:    ; def s81799; GFX942-NEXT:    ;;#ASMEND1800; GFX942-NEXT:    s_nop 01801; GFX942-NEXT:    ;;#ASMSTART1802; GFX942-NEXT:    ; use s81803; GFX942-NEXT:    ;;#ASMEND1804; GFX942-NEXT:    s_setpc_b64 s[30:31]1805  %vec0 = call <2 x i16> asm "; def $0", "=s"()1806  %vec1 = call <2 x i16> asm "; def $0", "=s"()1807  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 poison, i32 3>1808  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)1809  ret void1810}1811 1812define void @s_shuffle_v2i16_v2i16__0_3() {1813; GFX900-LABEL: s_shuffle_v2i16_v2i16__0_3:1814; GFX900:       ; %bb.0:1815; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1816; GFX900-NEXT:    ;;#ASMSTART1817; GFX900-NEXT:    ; def s41818; GFX900-NEXT:    ;;#ASMEND1819; GFX900-NEXT:    ;;#ASMSTART1820; GFX900-NEXT:    ; def s51821; GFX900-NEXT:    ;;#ASMEND1822; GFX900-NEXT:    s_pack_lh_b32_b16 s8, s4, s51823; GFX900-NEXT:    ;;#ASMSTART1824; GFX900-NEXT:    ; use s81825; GFX900-NEXT:    ;;#ASMEND1826; GFX900-NEXT:    s_setpc_b64 s[30:31]1827;1828; GFX90A-LABEL: s_shuffle_v2i16_v2i16__0_3:1829; GFX90A:       ; %bb.0:1830; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1831; GFX90A-NEXT:    ;;#ASMSTART1832; GFX90A-NEXT:    ; def s41833; GFX90A-NEXT:    ;;#ASMEND1834; GFX90A-NEXT:    ;;#ASMSTART1835; GFX90A-NEXT:    ; def s51836; GFX90A-NEXT:    ;;#ASMEND1837; GFX90A-NEXT:    s_pack_lh_b32_b16 s8, s4, s51838; GFX90A-NEXT:    ;;#ASMSTART1839; GFX90A-NEXT:    ; use s81840; GFX90A-NEXT:    ;;#ASMEND1841; GFX90A-NEXT:    s_setpc_b64 s[30:31]1842;1843; GFX942-LABEL: s_shuffle_v2i16_v2i16__0_3:1844; GFX942:       ; %bb.0:1845; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1846; GFX942-NEXT:    ;;#ASMSTART1847; GFX942-NEXT:    ; def s01848; GFX942-NEXT:    ;;#ASMEND1849; GFX942-NEXT:    ;;#ASMSTART1850; GFX942-NEXT:    ; def s11851; GFX942-NEXT:    ;;#ASMEND1852; GFX942-NEXT:    s_pack_lh_b32_b16 s8, s0, s11853; GFX942-NEXT:    ;;#ASMSTART1854; GFX942-NEXT:    ; use s81855; GFX942-NEXT:    ;;#ASMEND1856; GFX942-NEXT:    s_setpc_b64 s[30:31]1857  %vec0 = call <2 x i16> asm "; def $0", "=s"()1858  %vec1 = call <2 x i16> asm "; def $0", "=s"()1859  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 0, i32 3>1860  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)1861  ret void1862}1863 1864define void @s_shuffle_v2i16_v2i16__1_3() {1865; GFX900-LABEL: s_shuffle_v2i16_v2i16__1_3:1866; GFX900:       ; %bb.0:1867; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1868; GFX900-NEXT:    ;;#ASMSTART1869; GFX900-NEXT:    ; def s41870; GFX900-NEXT:    ;;#ASMEND1871; GFX900-NEXT:    ;;#ASMSTART1872; GFX900-NEXT:    ; def s51873; GFX900-NEXT:    ;;#ASMEND1874; GFX900-NEXT:    s_pack_hh_b32_b16 s8, s4, s51875; GFX900-NEXT:    ;;#ASMSTART1876; GFX900-NEXT:    ; use s81877; GFX900-NEXT:    ;;#ASMEND1878; GFX900-NEXT:    s_setpc_b64 s[30:31]1879;1880; GFX90A-LABEL: s_shuffle_v2i16_v2i16__1_3:1881; GFX90A:       ; %bb.0:1882; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1883; GFX90A-NEXT:    ;;#ASMSTART1884; GFX90A-NEXT:    ; def s41885; GFX90A-NEXT:    ;;#ASMEND1886; GFX90A-NEXT:    ;;#ASMSTART1887; GFX90A-NEXT:    ; def s51888; GFX90A-NEXT:    ;;#ASMEND1889; GFX90A-NEXT:    s_pack_hh_b32_b16 s8, s4, s51890; GFX90A-NEXT:    ;;#ASMSTART1891; GFX90A-NEXT:    ; use s81892; GFX90A-NEXT:    ;;#ASMEND1893; GFX90A-NEXT:    s_setpc_b64 s[30:31]1894;1895; GFX942-LABEL: s_shuffle_v2i16_v2i16__1_3:1896; GFX942:       ; %bb.0:1897; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1898; GFX942-NEXT:    ;;#ASMSTART1899; GFX942-NEXT:    ; def s01900; GFX942-NEXT:    ;;#ASMEND1901; GFX942-NEXT:    ;;#ASMSTART1902; GFX942-NEXT:    ; def s11903; GFX942-NEXT:    ;;#ASMEND1904; GFX942-NEXT:    s_pack_hh_b32_b16 s8, s0, s11905; GFX942-NEXT:    ;;#ASMSTART1906; GFX942-NEXT:    ; use s81907; GFX942-NEXT:    ;;#ASMEND1908; GFX942-NEXT:    s_setpc_b64 s[30:31]1909  %vec0 = call <2 x i16> asm "; def $0", "=s"()1910  %vec1 = call <2 x i16> asm "; def $0", "=s"()1911  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 1, i32 3>1912  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)1913  ret void1914}1915 1916define void @s_shuffle_v2i16_v2i16__2_3() {1917; GFX900-LABEL: s_shuffle_v2i16_v2i16__2_3:1918; GFX900:       ; %bb.0:1919; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1920; GFX900-NEXT:    ;;#ASMSTART1921; GFX900-NEXT:    ; def s81922; GFX900-NEXT:    ;;#ASMEND1923; GFX900-NEXT:    ;;#ASMSTART1924; GFX900-NEXT:    ; use s81925; GFX900-NEXT:    ;;#ASMEND1926; GFX900-NEXT:    s_setpc_b64 s[30:31]1927;1928; GFX90A-LABEL: s_shuffle_v2i16_v2i16__2_3:1929; GFX90A:       ; %bb.0:1930; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1931; GFX90A-NEXT:    ;;#ASMSTART1932; GFX90A-NEXT:    ; def s81933; GFX90A-NEXT:    ;;#ASMEND1934; GFX90A-NEXT:    ;;#ASMSTART1935; GFX90A-NEXT:    ; use s81936; GFX90A-NEXT:    ;;#ASMEND1937; GFX90A-NEXT:    s_setpc_b64 s[30:31]1938;1939; GFX942-LABEL: s_shuffle_v2i16_v2i16__2_3:1940; GFX942:       ; %bb.0:1941; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1942; GFX942-NEXT:    ;;#ASMSTART1943; GFX942-NEXT:    ; def s81944; GFX942-NEXT:    ;;#ASMEND1945; GFX942-NEXT:    s_nop 01946; GFX942-NEXT:    ;;#ASMSTART1947; GFX942-NEXT:    ; use s81948; GFX942-NEXT:    ;;#ASMEND1949; GFX942-NEXT:    s_setpc_b64 s[30:31]1950  %vec0 = call <2 x i16> asm "; def $0", "=s"()1951  %vec1 = call <2 x i16> asm "; def $0", "=s"()1952  %shuf = shufflevector <2 x i16> %vec0, <2 x i16> %vec1, <2 x i32> <i32 2, i32 3>1953  call void asm sideeffect "; use $0", "{s8}"(<2 x i16> %shuf)1954  ret void1955}1956;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:1957; GFX90APLUS: {{.*}}1958