brintos

brintos / llvm-project-archived public Read only

0
0
Text · 565.0 KiB · ecc7ff6 Raw
15447 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_v3f16_v4f16__u_u_u(ptr addrspace(1) inreg %ptr) {8; GFX9-LABEL: v_shuffle_v3f16_v4f16__u_u_u:9; GFX9:       ; %bb.0:10; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11; GFX9-NEXT:    s_setpc_b64 s[30:31]12  %vec0 = call <4 x half> asm "; def $0", "=v"()13  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> poison14  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 815  ret void16}17 18define void @v_shuffle_v3f16_v4f16__0_u_u(ptr addrspace(1) inreg %ptr) {19; GFX900-LABEL: v_shuffle_v3f16_v4f16__0_u_u:20; GFX900:       ; %bb.0:21; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22; GFX900-NEXT:    v_mov_b32_e32 v2, 023; GFX900-NEXT:    ;;#ASMSTART24; GFX900-NEXT:    ; def v[0:1]25; GFX900-NEXT:    ;;#ASMEND26; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:427; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]28; GFX900-NEXT:    s_waitcnt vmcnt(0)29; GFX900-NEXT:    s_setpc_b64 s[30:31]30;31; GFX90A-LABEL: v_shuffle_v3f16_v4f16__0_u_u:32; GFX90A:       ; %bb.0:33; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)34; GFX90A-NEXT:    v_mov_b32_e32 v2, 035; GFX90A-NEXT:    ;;#ASMSTART36; GFX90A-NEXT:    ; def v[0:1]37; GFX90A-NEXT:    ;;#ASMEND38; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:439; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]40; GFX90A-NEXT:    s_waitcnt vmcnt(0)41; GFX90A-NEXT:    s_setpc_b64 s[30:31]42;43; GFX942-LABEL: v_shuffle_v3f16_v4f16__0_u_u:44; GFX942:       ; %bb.0:45; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)46; GFX942-NEXT:    v_mov_b32_e32 v2, 047; GFX942-NEXT:    ;;#ASMSTART48; GFX942-NEXT:    ; def v[0:1]49; GFX942-NEXT:    ;;#ASMEND50; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:451; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]52; GFX942-NEXT:    s_waitcnt vmcnt(0)53; GFX942-NEXT:    s_setpc_b64 s[30:31]54  %vec0 = call <4 x half> asm "; def $0", "=v"()55  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 0, i32 poison, i32 poison>56  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 857  ret void58}59 60define void @v_shuffle_v3f16_v4f16__1_u_u(ptr addrspace(1) inreg %ptr) {61; GFX900-LABEL: v_shuffle_v3f16_v4f16__1_u_u:62; GFX900:       ; %bb.0:63; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)64; GFX900-NEXT:    ;;#ASMSTART65; GFX900-NEXT:    ; def v[0:1]66; GFX900-NEXT:    ;;#ASMEND67; GFX900-NEXT:    v_mov_b32_e32 v2, 068; GFX900-NEXT:    v_alignbit_b32 v0, s4, v0, 1669; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]70; GFX900-NEXT:    s_waitcnt vmcnt(0)71; GFX900-NEXT:    s_setpc_b64 s[30:31]72;73; GFX90A-LABEL: v_shuffle_v3f16_v4f16__1_u_u:74; GFX90A:       ; %bb.0:75; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)76; GFX90A-NEXT:    ;;#ASMSTART77; GFX90A-NEXT:    ; def v[0:1]78; GFX90A-NEXT:    ;;#ASMEND79; GFX90A-NEXT:    v_mov_b32_e32 v2, 080; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v0, 1681; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]82; GFX90A-NEXT:    s_waitcnt vmcnt(0)83; GFX90A-NEXT:    s_setpc_b64 s[30:31]84;85; GFX942-LABEL: v_shuffle_v3f16_v4f16__1_u_u:86; GFX942:       ; %bb.0:87; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)88; GFX942-NEXT:    ;;#ASMSTART89; GFX942-NEXT:    ; def v[0:1]90; GFX942-NEXT:    ;;#ASMEND91; GFX942-NEXT:    v_mov_b32_e32 v2, 092; GFX942-NEXT:    v_alignbit_b32 v0, s0, v0, 1693; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]94; GFX942-NEXT:    s_waitcnt vmcnt(0)95; GFX942-NEXT:    s_setpc_b64 s[30:31]96  %vec0 = call <4 x half> asm "; def $0", "=v"()97  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 1, i32 poison, i32 poison>98  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 899  ret void100}101 102define void @v_shuffle_v3f16_v4f16__2_u_u(ptr addrspace(1) inreg %ptr) {103; GFX900-LABEL: v_shuffle_v3f16_v4f16__2_u_u:104; GFX900:       ; %bb.0:105; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)106; GFX900-NEXT:    v_mov_b32_e32 v2, 0107; GFX900-NEXT:    ;;#ASMSTART108; GFX900-NEXT:    ; def v[0:1]109; GFX900-NEXT:    ;;#ASMEND110; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]111; GFX900-NEXT:    s_waitcnt vmcnt(0)112; GFX900-NEXT:    s_setpc_b64 s[30:31]113;114; GFX90A-LABEL: v_shuffle_v3f16_v4f16__2_u_u:115; GFX90A:       ; %bb.0:116; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)117; GFX90A-NEXT:    v_mov_b32_e32 v2, 0118; GFX90A-NEXT:    ;;#ASMSTART119; GFX90A-NEXT:    ; def v[0:1]120; GFX90A-NEXT:    ;;#ASMEND121; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]122; GFX90A-NEXT:    s_waitcnt vmcnt(0)123; GFX90A-NEXT:    s_setpc_b64 s[30:31]124;125; GFX942-LABEL: v_shuffle_v3f16_v4f16__2_u_u:126; GFX942:       ; %bb.0:127; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)128; GFX942-NEXT:    v_mov_b32_e32 v2, 0129; GFX942-NEXT:    ;;#ASMSTART130; GFX942-NEXT:    ; def v[0:1]131; GFX942-NEXT:    ;;#ASMEND132; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]133; GFX942-NEXT:    s_waitcnt vmcnt(0)134; GFX942-NEXT:    s_setpc_b64 s[30:31]135  %vec0 = call <4 x half> asm "; def $0", "=v"()136  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 2, i32 poison, i32 poison>137  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 8138  ret void139}140 141define void @v_shuffle_v3f16_v4f16__3_u_u(ptr addrspace(1) inreg %ptr) {142; GFX900-LABEL: v_shuffle_v3f16_v4f16__3_u_u:143; GFX900:       ; %bb.0:144; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)145; GFX900-NEXT:    ;;#ASMSTART146; GFX900-NEXT:    ; def v[0:1]147; GFX900-NEXT:    ;;#ASMEND148; GFX900-NEXT:    v_mov_b32_e32 v2, 0149; GFX900-NEXT:    v_alignbit_b32 v0, s4, v1, 16150; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]151; GFX900-NEXT:    s_waitcnt vmcnt(0)152; GFX900-NEXT:    s_setpc_b64 s[30:31]153;154; GFX90A-LABEL: v_shuffle_v3f16_v4f16__3_u_u:155; GFX90A:       ; %bb.0:156; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)157; GFX90A-NEXT:    ;;#ASMSTART158; GFX90A-NEXT:    ; def v[0:1]159; GFX90A-NEXT:    ;;#ASMEND160; GFX90A-NEXT:    v_mov_b32_e32 v2, 0161; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v1, 16162; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]163; GFX90A-NEXT:    s_waitcnt vmcnt(0)164; GFX90A-NEXT:    s_setpc_b64 s[30:31]165;166; GFX942-LABEL: v_shuffle_v3f16_v4f16__3_u_u:167; GFX942:       ; %bb.0:168; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)169; GFX942-NEXT:    ;;#ASMSTART170; GFX942-NEXT:    ; def v[0:1]171; GFX942-NEXT:    ;;#ASMEND172; GFX942-NEXT:    v_mov_b32_e32 v2, 0173; GFX942-NEXT:    v_alignbit_b32 v0, s0, v1, 16174; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]175; GFX942-NEXT:    s_waitcnt vmcnt(0)176; GFX942-NEXT:    s_setpc_b64 s[30:31]177  %vec0 = call <4 x half> asm "; def $0", "=v"()178  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 3, i32 poison, i32 poison>179  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 8180  ret void181}182 183define void @v_shuffle_v3f16_v4f16__4_u_u(ptr addrspace(1) inreg %ptr) {184; GFX9-LABEL: v_shuffle_v3f16_v4f16__4_u_u:185; GFX9:       ; %bb.0:186; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)187; GFX9-NEXT:    s_setpc_b64 s[30:31]188  %vec0 = call <4 x half> asm "; def $0", "=v"()189  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 4, i32 poison, i32 poison>190  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 8191  ret void192}193 194define void @v_shuffle_v3f16_v4f16__5_u_u(ptr addrspace(1) inreg %ptr) {195; GFX900-LABEL: v_shuffle_v3f16_v4f16__5_u_u:196; GFX900:       ; %bb.0:197; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)198; GFX900-NEXT:    ;;#ASMSTART199; GFX900-NEXT:    ; def v[0:1]200; GFX900-NEXT:    ;;#ASMEND201; GFX900-NEXT:    v_mov_b32_e32 v2, 0202; GFX900-NEXT:    v_alignbit_b32 v0, s4, v0, 16203; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]204; GFX900-NEXT:    s_waitcnt vmcnt(0)205; GFX900-NEXT:    s_setpc_b64 s[30:31]206;207; GFX90A-LABEL: v_shuffle_v3f16_v4f16__5_u_u:208; GFX90A:       ; %bb.0:209; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)210; GFX90A-NEXT:    ;;#ASMSTART211; GFX90A-NEXT:    ; def v[0:1]212; GFX90A-NEXT:    ;;#ASMEND213; GFX90A-NEXT:    v_mov_b32_e32 v2, 0214; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v0, 16215; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]216; GFX90A-NEXT:    s_waitcnt vmcnt(0)217; GFX90A-NEXT:    s_setpc_b64 s[30:31]218;219; GFX942-LABEL: v_shuffle_v3f16_v4f16__5_u_u:220; GFX942:       ; %bb.0:221; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)222; GFX942-NEXT:    ;;#ASMSTART223; GFX942-NEXT:    ; def v[0:1]224; GFX942-NEXT:    ;;#ASMEND225; GFX942-NEXT:    v_mov_b32_e32 v2, 0226; GFX942-NEXT:    v_alignbit_b32 v0, s0, v0, 16227; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]228; GFX942-NEXT:    s_waitcnt vmcnt(0)229; GFX942-NEXT:    s_setpc_b64 s[30:31]230  %vec0 = call <4 x half> asm "; def $0", "=v"()231  %vec1 = call <4 x half> asm "; def $0", "=v"()232  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 5, i32 poison, i32 poison>233  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 8234  ret void235}236 237define void @v_shuffle_v3f16_v4f16__6_u_u(ptr addrspace(1) inreg %ptr) {238; GFX900-LABEL: v_shuffle_v3f16_v4f16__6_u_u:239; GFX900:       ; %bb.0:240; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)241; GFX900-NEXT:    v_mov_b32_e32 v2, 0242; GFX900-NEXT:    ;;#ASMSTART243; GFX900-NEXT:    ; def v[0:1]244; GFX900-NEXT:    ;;#ASMEND245; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]246; GFX900-NEXT:    s_waitcnt vmcnt(0)247; GFX900-NEXT:    s_setpc_b64 s[30:31]248;249; GFX90A-LABEL: v_shuffle_v3f16_v4f16__6_u_u:250; GFX90A:       ; %bb.0:251; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)252; GFX90A-NEXT:    v_mov_b32_e32 v2, 0253; GFX90A-NEXT:    ;;#ASMSTART254; GFX90A-NEXT:    ; def v[0:1]255; GFX90A-NEXT:    ;;#ASMEND256; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]257; GFX90A-NEXT:    s_waitcnt vmcnt(0)258; GFX90A-NEXT:    s_setpc_b64 s[30:31]259;260; GFX942-LABEL: v_shuffle_v3f16_v4f16__6_u_u:261; GFX942:       ; %bb.0:262; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)263; GFX942-NEXT:    v_mov_b32_e32 v2, 0264; GFX942-NEXT:    ;;#ASMSTART265; GFX942-NEXT:    ; def v[0:1]266; GFX942-NEXT:    ;;#ASMEND267; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]268; GFX942-NEXT:    s_waitcnt vmcnt(0)269; GFX942-NEXT:    s_setpc_b64 s[30:31]270  %vec0 = call <4 x half> asm "; def $0", "=v"()271  %vec1 = call <4 x half> asm "; def $0", "=v"()272  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 6, i32 poison, i32 poison>273  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 8274  ret void275}276 277define void @v_shuffle_v3f16_v4f16__7_u_u(ptr addrspace(1) inreg %ptr) {278; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_u_u:279; GFX900:       ; %bb.0:280; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)281; GFX900-NEXT:    ;;#ASMSTART282; GFX900-NEXT:    ; def v[0:1]283; GFX900-NEXT:    ;;#ASMEND284; GFX900-NEXT:    v_mov_b32_e32 v2, 0285; GFX900-NEXT:    v_alignbit_b32 v0, s4, v1, 16286; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]287; GFX900-NEXT:    s_waitcnt vmcnt(0)288; GFX900-NEXT:    s_setpc_b64 s[30:31]289;290; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_u_u:291; GFX90A:       ; %bb.0:292; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)293; GFX90A-NEXT:    ;;#ASMSTART294; GFX90A-NEXT:    ; def v[0:1]295; GFX90A-NEXT:    ;;#ASMEND296; GFX90A-NEXT:    v_mov_b32_e32 v2, 0297; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v1, 16298; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]299; GFX90A-NEXT:    s_waitcnt vmcnt(0)300; GFX90A-NEXT:    s_setpc_b64 s[30:31]301;302; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_u_u:303; GFX942:       ; %bb.0:304; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)305; GFX942-NEXT:    ;;#ASMSTART306; GFX942-NEXT:    ; def v[0:1]307; GFX942-NEXT:    ;;#ASMEND308; GFX942-NEXT:    v_mov_b32_e32 v2, 0309; GFX942-NEXT:    v_alignbit_b32 v0, s0, v1, 16310; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]311; GFX942-NEXT:    s_waitcnt vmcnt(0)312; GFX942-NEXT:    s_setpc_b64 s[30:31]313  %vec0 = call <4 x half> asm "; def $0", "=v"()314  %vec1 = call <4 x half> asm "; def $0", "=v"()315  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 poison, i32 poison>316  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 8317  ret void318}319 320define void @v_shuffle_v3f16_v4f16__7_0_u(ptr addrspace(1) inreg %ptr) {321; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_0_u:322; GFX900:       ; %bb.0:323; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)324; GFX900-NEXT:    ;;#ASMSTART325; GFX900-NEXT:    ; def v[0:1]326; GFX900-NEXT:    ;;#ASMEND327; GFX900-NEXT:    v_mov_b32_e32 v3, 0328; GFX900-NEXT:    ;;#ASMSTART329; GFX900-NEXT:    ; def v[1:2]330; GFX900-NEXT:    ;;#ASMEND331; GFX900-NEXT:    v_alignbit_b32 v0, v0, v2, 16332; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]333; GFX900-NEXT:    s_waitcnt vmcnt(0)334; GFX900-NEXT:    s_setpc_b64 s[30:31]335;336; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_0_u:337; GFX90A:       ; %bb.0:338; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)339; GFX90A-NEXT:    ;;#ASMSTART340; GFX90A-NEXT:    ; def v[0:1]341; GFX90A-NEXT:    ;;#ASMEND342; GFX90A-NEXT:    v_mov_b32_e32 v4, 0343; GFX90A-NEXT:    ;;#ASMSTART344; GFX90A-NEXT:    ; def v[2:3]345; GFX90A-NEXT:    ;;#ASMEND346; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v3, 16347; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]348; GFX90A-NEXT:    s_waitcnt vmcnt(0)349; GFX90A-NEXT:    s_setpc_b64 s[30:31]350;351; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_0_u:352; GFX942:       ; %bb.0:353; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)354; GFX942-NEXT:    ;;#ASMSTART355; GFX942-NEXT:    ; def v[0:1]356; GFX942-NEXT:    ;;#ASMEND357; GFX942-NEXT:    v_mov_b32_e32 v4, 0358; GFX942-NEXT:    ;;#ASMSTART359; GFX942-NEXT:    ; def v[2:3]360; GFX942-NEXT:    ;;#ASMEND361; GFX942-NEXT:    s_nop 0362; GFX942-NEXT:    v_alignbit_b32 v0, v0, v3, 16363; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]364; GFX942-NEXT:    s_waitcnt vmcnt(0)365; GFX942-NEXT:    s_setpc_b64 s[30:31]366  %vec0 = call <4 x half> asm "; def $0", "=v"()367  %vec1 = call <4 x half> asm "; def $0", "=v"()368  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 0, i32 poison>369  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 8370  ret void371}372 373define void @v_shuffle_v3f16_v4f16__7_1_u(ptr addrspace(1) inreg %ptr) {374; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_1_u:375; GFX900:       ; %bb.0:376; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)377; GFX900-NEXT:    ;;#ASMSTART378; GFX900-NEXT:    ; def v[0:1]379; GFX900-NEXT:    ;;#ASMEND380; GFX900-NEXT:    s_mov_b32 s4, 0x7060302381; GFX900-NEXT:    v_mov_b32_e32 v3, 0382; GFX900-NEXT:    ;;#ASMSTART383; GFX900-NEXT:    ; def v[1:2]384; GFX900-NEXT:    ;;#ASMEND385; GFX900-NEXT:    v_perm_b32 v0, v0, v2, s4386; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]387; GFX900-NEXT:    s_waitcnt vmcnt(0)388; GFX900-NEXT:    s_setpc_b64 s[30:31]389;390; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_1_u:391; GFX90A:       ; %bb.0:392; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)393; GFX90A-NEXT:    ;;#ASMSTART394; GFX90A-NEXT:    ; def v[0:1]395; GFX90A-NEXT:    ;;#ASMEND396; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302397; GFX90A-NEXT:    v_mov_b32_e32 v4, 0398; GFX90A-NEXT:    ;;#ASMSTART399; GFX90A-NEXT:    ; def v[2:3]400; GFX90A-NEXT:    ;;#ASMEND401; GFX90A-NEXT:    v_perm_b32 v0, v0, v3, s4402; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]403; GFX90A-NEXT:    s_waitcnt vmcnt(0)404; GFX90A-NEXT:    s_setpc_b64 s[30:31]405;406; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_1_u:407; GFX942:       ; %bb.0:408; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)409; GFX942-NEXT:    ;;#ASMSTART410; GFX942-NEXT:    ; def v[0:1]411; GFX942-NEXT:    ;;#ASMEND412; GFX942-NEXT:    s_mov_b32 s2, 0x7060302413; GFX942-NEXT:    v_mov_b32_e32 v4, 0414; GFX942-NEXT:    ;;#ASMSTART415; GFX942-NEXT:    ; def v[2:3]416; GFX942-NEXT:    ;;#ASMEND417; GFX942-NEXT:    s_nop 0418; GFX942-NEXT:    v_perm_b32 v0, v0, v3, s2419; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]420; GFX942-NEXT:    s_waitcnt vmcnt(0)421; GFX942-NEXT:    s_setpc_b64 s[30:31]422  %vec0 = call <4 x half> asm "; def $0", "=v"()423  %vec1 = call <4 x half> asm "; def $0", "=v"()424  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 1, i32 poison>425  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 8426  ret void427}428 429define void @v_shuffle_v3f16_v4f16__7_2_u(ptr addrspace(1) inreg %ptr) {430; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_2_u:431; GFX900:       ; %bb.0:432; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)433; GFX900-NEXT:    ;;#ASMSTART434; GFX900-NEXT:    ; def v[0:1]435; GFX900-NEXT:    ;;#ASMEND436; GFX900-NEXT:    v_mov_b32_e32 v4, 0437; GFX900-NEXT:    ;;#ASMSTART438; GFX900-NEXT:    ; def v[2:3]439; GFX900-NEXT:    ;;#ASMEND440; GFX900-NEXT:    v_alignbit_b32 v0, v1, v3, 16441; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]442; GFX900-NEXT:    s_waitcnt vmcnt(0)443; GFX900-NEXT:    s_setpc_b64 s[30:31]444;445; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_2_u:446; GFX90A:       ; %bb.0:447; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)448; GFX90A-NEXT:    ;;#ASMSTART449; GFX90A-NEXT:    ; def v[0:1]450; GFX90A-NEXT:    ;;#ASMEND451; GFX90A-NEXT:    v_mov_b32_e32 v4, 0452; GFX90A-NEXT:    ;;#ASMSTART453; GFX90A-NEXT:    ; def v[2:3]454; GFX90A-NEXT:    ;;#ASMEND455; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v3, 16456; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]457; GFX90A-NEXT:    s_waitcnt vmcnt(0)458; GFX90A-NEXT:    s_setpc_b64 s[30:31]459;460; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_2_u:461; GFX942:       ; %bb.0:462; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)463; GFX942-NEXT:    ;;#ASMSTART464; GFX942-NEXT:    ; def v[0:1]465; GFX942-NEXT:    ;;#ASMEND466; GFX942-NEXT:    v_mov_b32_e32 v4, 0467; GFX942-NEXT:    ;;#ASMSTART468; GFX942-NEXT:    ; def v[2:3]469; GFX942-NEXT:    ;;#ASMEND470; GFX942-NEXT:    s_nop 0471; GFX942-NEXT:    v_alignbit_b32 v0, v1, v3, 16472; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]473; GFX942-NEXT:    s_waitcnt vmcnt(0)474; GFX942-NEXT:    s_setpc_b64 s[30:31]475  %vec0 = call <4 x half> asm "; def $0", "=v"()476  %vec1 = call <4 x half> asm "; def $0", "=v"()477  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 2, i32 poison>478  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 8479  ret void480}481 482define void @v_shuffle_v3f16_v4f16__7_3_u(ptr addrspace(1) inreg %ptr) {483; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_3_u:484; GFX900:       ; %bb.0:485; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)486; GFX900-NEXT:    ;;#ASMSTART487; GFX900-NEXT:    ; def v[0:1]488; GFX900-NEXT:    ;;#ASMEND489; GFX900-NEXT:    s_mov_b32 s4, 0x7060302490; GFX900-NEXT:    v_mov_b32_e32 v4, 0491; GFX900-NEXT:    ;;#ASMSTART492; GFX900-NEXT:    ; def v[2:3]493; GFX900-NEXT:    ;;#ASMEND494; GFX900-NEXT:    v_perm_b32 v0, v1, v3, s4495; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]496; GFX900-NEXT:    s_waitcnt vmcnt(0)497; GFX900-NEXT:    s_setpc_b64 s[30:31]498;499; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_3_u:500; GFX90A:       ; %bb.0:501; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)502; GFX90A-NEXT:    ;;#ASMSTART503; GFX90A-NEXT:    ; def v[0:1]504; GFX90A-NEXT:    ;;#ASMEND505; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302506; GFX90A-NEXT:    v_mov_b32_e32 v4, 0507; GFX90A-NEXT:    ;;#ASMSTART508; GFX90A-NEXT:    ; def v[2:3]509; GFX90A-NEXT:    ;;#ASMEND510; GFX90A-NEXT:    v_perm_b32 v0, v1, v3, s4511; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]512; GFX90A-NEXT:    s_waitcnt vmcnt(0)513; GFX90A-NEXT:    s_setpc_b64 s[30:31]514;515; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_3_u:516; GFX942:       ; %bb.0:517; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)518; GFX942-NEXT:    ;;#ASMSTART519; GFX942-NEXT:    ; def v[0:1]520; GFX942-NEXT:    ;;#ASMEND521; GFX942-NEXT:    s_mov_b32 s2, 0x7060302522; GFX942-NEXT:    v_mov_b32_e32 v4, 0523; GFX942-NEXT:    ;;#ASMSTART524; GFX942-NEXT:    ; def v[2:3]525; GFX942-NEXT:    ;;#ASMEND526; GFX942-NEXT:    s_nop 0527; GFX942-NEXT:    v_perm_b32 v0, v1, v3, s2528; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]529; GFX942-NEXT:    s_waitcnt vmcnt(0)530; GFX942-NEXT:    s_setpc_b64 s[30:31]531  %vec0 = call <4 x half> asm "; def $0", "=v"()532  %vec1 = call <4 x half> asm "; def $0", "=v"()533  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 3, i32 poison>534  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 8535  ret void536}537 538define void @v_shuffle_v3f16_v4f16__7_4_u(ptr addrspace(1) inreg %ptr) {539; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_4_u:540; GFX900:       ; %bb.0:541; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)542; GFX900-NEXT:    ;;#ASMSTART543; GFX900-NEXT:    ; def v[0:1]544; GFX900-NEXT:    ;;#ASMEND545; GFX900-NEXT:    v_mov_b32_e32 v2, 0546; GFX900-NEXT:    v_alignbit_b32 v0, v0, v1, 16547; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]548; GFX900-NEXT:    s_waitcnt vmcnt(0)549; GFX900-NEXT:    s_setpc_b64 s[30:31]550;551; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_4_u:552; GFX90A:       ; %bb.0:553; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)554; GFX90A-NEXT:    ;;#ASMSTART555; GFX90A-NEXT:    ; def v[0:1]556; GFX90A-NEXT:    ;;#ASMEND557; GFX90A-NEXT:    v_mov_b32_e32 v2, 0558; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v1, 16559; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]560; GFX90A-NEXT:    s_waitcnt vmcnt(0)561; GFX90A-NEXT:    s_setpc_b64 s[30:31]562;563; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_4_u:564; GFX942:       ; %bb.0:565; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)566; GFX942-NEXT:    ;;#ASMSTART567; GFX942-NEXT:    ; def v[0:1]568; GFX942-NEXT:    ;;#ASMEND569; GFX942-NEXT:    v_mov_b32_e32 v2, 0570; GFX942-NEXT:    v_alignbit_b32 v0, v0, v1, 16571; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]572; GFX942-NEXT:    s_waitcnt vmcnt(0)573; GFX942-NEXT:    s_setpc_b64 s[30:31]574  %vec0 = call <4 x half> asm "; def $0", "=v"()575  %vec1 = call <4 x half> asm "; def $0", "=v"()576  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 4, i32 poison>577  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 8578  ret void579}580 581define void @v_shuffle_v3f16_v4f16__7_5_u(ptr addrspace(1) inreg %ptr) {582; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_5_u:583; GFX900:       ; %bb.0:584; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)585; GFX900-NEXT:    ;;#ASMSTART586; GFX900-NEXT:    ; def v[0:1]587; GFX900-NEXT:    ;;#ASMEND588; GFX900-NEXT:    s_mov_b32 s4, 0x7060302589; GFX900-NEXT:    v_mov_b32_e32 v2, 0590; GFX900-NEXT:    v_perm_b32 v0, v0, v1, s4591; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]592; GFX900-NEXT:    s_waitcnt vmcnt(0)593; GFX900-NEXT:    s_setpc_b64 s[30:31]594;595; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_5_u:596; GFX90A:       ; %bb.0:597; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)598; GFX90A-NEXT:    ;;#ASMSTART599; GFX90A-NEXT:    ; def v[0:1]600; GFX90A-NEXT:    ;;#ASMEND601; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302602; GFX90A-NEXT:    v_mov_b32_e32 v2, 0603; GFX90A-NEXT:    v_perm_b32 v0, v0, v1, s4604; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]605; GFX90A-NEXT:    s_waitcnt vmcnt(0)606; GFX90A-NEXT:    s_setpc_b64 s[30:31]607;608; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_5_u:609; GFX942:       ; %bb.0:610; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)611; GFX942-NEXT:    ;;#ASMSTART612; GFX942-NEXT:    ; def v[0:1]613; GFX942-NEXT:    ;;#ASMEND614; GFX942-NEXT:    s_mov_b32 s2, 0x7060302615; GFX942-NEXT:    v_mov_b32_e32 v2, 0616; GFX942-NEXT:    v_perm_b32 v0, v0, v1, s2617; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]618; GFX942-NEXT:    s_waitcnt vmcnt(0)619; GFX942-NEXT:    s_setpc_b64 s[30:31]620  %vec0 = call <4 x half> asm "; def $0", "=v"()621  %vec1 = call <4 x half> asm "; def $0", "=v"()622  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 5, i32 poison>623  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 8624  ret void625}626 627define void @v_shuffle_v3f16_v4f16__7_6_u(ptr addrspace(1) inreg %ptr) {628; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_6_u:629; GFX900:       ; %bb.0:630; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)631; GFX900-NEXT:    ;;#ASMSTART632; GFX900-NEXT:    ; def v[0:1]633; GFX900-NEXT:    ;;#ASMEND634; GFX900-NEXT:    v_mov_b32_e32 v2, 0635; GFX900-NEXT:    v_alignbit_b32 v0, v1, v1, 16636; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]637; GFX900-NEXT:    s_waitcnt vmcnt(0)638; GFX900-NEXT:    s_setpc_b64 s[30:31]639;640; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_6_u:641; GFX90A:       ; %bb.0:642; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)643; GFX90A-NEXT:    ;;#ASMSTART644; GFX90A-NEXT:    ; def v[0:1]645; GFX90A-NEXT:    ;;#ASMEND646; GFX90A-NEXT:    v_mov_b32_e32 v2, 0647; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v1, 16648; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]649; GFX90A-NEXT:    s_waitcnt vmcnt(0)650; GFX90A-NEXT:    s_setpc_b64 s[30:31]651;652; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_6_u:653; GFX942:       ; %bb.0:654; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)655; GFX942-NEXT:    ;;#ASMSTART656; GFX942-NEXT:    ; def v[0:1]657; GFX942-NEXT:    ;;#ASMEND658; GFX942-NEXT:    v_mov_b32_e32 v2, 0659; GFX942-NEXT:    v_alignbit_b32 v0, v1, v1, 16660; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]661; GFX942-NEXT:    s_waitcnt vmcnt(0)662; GFX942-NEXT:    s_setpc_b64 s[30:31]663  %vec0 = call <4 x half> asm "; def $0", "=v"()664  %vec1 = call <4 x half> asm "; def $0", "=v"()665  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 6, i32 poison>666  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 8667  ret void668}669 670define void @v_shuffle_v3f16_v4f16__7_7_u(ptr addrspace(1) inreg %ptr) {671; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_7_u:672; GFX900:       ; %bb.0:673; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)674; GFX900-NEXT:    ;;#ASMSTART675; GFX900-NEXT:    ; def v[0:1]676; GFX900-NEXT:    ;;#ASMEND677; GFX900-NEXT:    s_mov_b32 s4, 0x7060302678; GFX900-NEXT:    v_mov_b32_e32 v2, 0679; GFX900-NEXT:    v_perm_b32 v0, v1, v1, s4680; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]681; GFX900-NEXT:    s_waitcnt vmcnt(0)682; GFX900-NEXT:    s_setpc_b64 s[30:31]683;684; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_7_u:685; GFX90A:       ; %bb.0:686; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)687; GFX90A-NEXT:    ;;#ASMSTART688; GFX90A-NEXT:    ; def v[0:1]689; GFX90A-NEXT:    ;;#ASMEND690; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302691; GFX90A-NEXT:    v_mov_b32_e32 v2, 0692; GFX90A-NEXT:    v_perm_b32 v0, v1, v1, s4693; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]694; GFX90A-NEXT:    s_waitcnt vmcnt(0)695; GFX90A-NEXT:    s_setpc_b64 s[30:31]696;697; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_7_u:698; GFX942:       ; %bb.0:699; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)700; GFX942-NEXT:    ;;#ASMSTART701; GFX942-NEXT:    ; def v[0:1]702; GFX942-NEXT:    ;;#ASMEND703; GFX942-NEXT:    s_mov_b32 s2, 0x7060302704; GFX942-NEXT:    v_mov_b32_e32 v2, 0705; GFX942-NEXT:    v_perm_b32 v0, v1, v1, s2706; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]707; GFX942-NEXT:    s_waitcnt vmcnt(0)708; GFX942-NEXT:    s_setpc_b64 s[30:31]709  %vec0 = call <4 x half> asm "; def $0", "=v"()710  %vec1 = call <4 x half> asm "; def $0", "=v"()711  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 7, i32 poison>712  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 8713  ret void714}715 716define void @v_shuffle_v3f16_v4f16__7_7_0(ptr addrspace(1) inreg %ptr) {717; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_7_0:718; GFX900:       ; %bb.0:719; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)720; GFX900-NEXT:    ;;#ASMSTART721; GFX900-NEXT:    ; def v[0:1]722; GFX900-NEXT:    ;;#ASMEND723; GFX900-NEXT:    v_mov_b32_e32 v3, 0724; GFX900-NEXT:    ;;#ASMSTART725; GFX900-NEXT:    ; def v[1:2]726; GFX900-NEXT:    ;;#ASMEND727; GFX900-NEXT:    s_mov_b32 s4, 0x7060302728; GFX900-NEXT:    v_perm_b32 v1, v2, v2, s4729; GFX900-NEXT:    global_store_short v3, v0, s[16:17] offset:4730; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]731; GFX900-NEXT:    s_waitcnt vmcnt(0)732; GFX900-NEXT:    s_setpc_b64 s[30:31]733;734; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_7_0:735; GFX90A:       ; %bb.0:736; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)737; GFX90A-NEXT:    v_mov_b32_e32 v4, 0738; GFX90A-NEXT:    ;;#ASMSTART739; GFX90A-NEXT:    ; def v[0:1]740; GFX90A-NEXT:    ;;#ASMEND741; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302742; GFX90A-NEXT:    ;;#ASMSTART743; GFX90A-NEXT:    ; def v[2:3]744; GFX90A-NEXT:    ;;#ASMEND745; GFX90A-NEXT:    v_perm_b32 v1, v3, v3, s4746; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:4747; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]748; GFX90A-NEXT:    s_waitcnt vmcnt(0)749; GFX90A-NEXT:    s_setpc_b64 s[30:31]750;751; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_7_0:752; GFX942:       ; %bb.0:753; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)754; GFX942-NEXT:    v_mov_b32_e32 v4, 0755; GFX942-NEXT:    ;;#ASMSTART756; GFX942-NEXT:    ; def v[0:1]757; GFX942-NEXT:    ;;#ASMEND758; GFX942-NEXT:    s_mov_b32 s2, 0x7060302759; GFX942-NEXT:    ;;#ASMSTART760; GFX942-NEXT:    ; def v[2:3]761; GFX942-NEXT:    ;;#ASMEND762; GFX942-NEXT:    s_nop 0763; GFX942-NEXT:    v_perm_b32 v1, v3, v3, s2764; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:4765; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]766; GFX942-NEXT:    s_waitcnt vmcnt(0)767; GFX942-NEXT:    s_setpc_b64 s[30:31]768  %vec0 = call <4 x half> asm "; def $0", "=v"()769  %vec1 = call <4 x half> asm "; def $0", "=v"()770  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 7, i32 0>771  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 8772  ret void773}774 775define void @v_shuffle_v3f16_v4f16__7_7_1(ptr addrspace(1) inreg %ptr) {776; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_7_1:777; GFX900:       ; %bb.0:778; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)779; GFX900-NEXT:    ;;#ASMSTART780; GFX900-NEXT:    ; def v[0:1]781; GFX900-NEXT:    ;;#ASMEND782; GFX900-NEXT:    v_mov_b32_e32 v3, 0783; GFX900-NEXT:    ;;#ASMSTART784; GFX900-NEXT:    ; def v[1:2]785; GFX900-NEXT:    ;;#ASMEND786; GFX900-NEXT:    s_mov_b32 s4, 0x7060302787; GFX900-NEXT:    v_perm_b32 v1, v2, v2, s4788; GFX900-NEXT:    global_store_short_d16_hi v3, v0, s[16:17] offset:4789; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]790; GFX900-NEXT:    s_waitcnt vmcnt(0)791; GFX900-NEXT:    s_setpc_b64 s[30:31]792;793; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_7_1:794; GFX90A:       ; %bb.0:795; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)796; GFX90A-NEXT:    v_mov_b32_e32 v4, 0797; GFX90A-NEXT:    ;;#ASMSTART798; GFX90A-NEXT:    ; def v[0:1]799; GFX90A-NEXT:    ;;#ASMEND800; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302801; GFX90A-NEXT:    ;;#ASMSTART802; GFX90A-NEXT:    ; def v[2:3]803; GFX90A-NEXT:    ;;#ASMEND804; GFX90A-NEXT:    v_perm_b32 v1, v3, v3, s4805; GFX90A-NEXT:    global_store_short_d16_hi v4, v0, s[16:17] offset:4806; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]807; GFX90A-NEXT:    s_waitcnt vmcnt(0)808; GFX90A-NEXT:    s_setpc_b64 s[30:31]809;810; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_7_1:811; GFX942:       ; %bb.0:812; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)813; GFX942-NEXT:    v_mov_b32_e32 v4, 0814; GFX942-NEXT:    ;;#ASMSTART815; GFX942-NEXT:    ; def v[0:1]816; GFX942-NEXT:    ;;#ASMEND817; GFX942-NEXT:    s_mov_b32 s2, 0x7060302818; GFX942-NEXT:    ;;#ASMSTART819; GFX942-NEXT:    ; def v[2:3]820; GFX942-NEXT:    ;;#ASMEND821; GFX942-NEXT:    s_nop 0822; GFX942-NEXT:    v_perm_b32 v1, v3, v3, s2823; GFX942-NEXT:    global_store_short_d16_hi v4, v0, s[0:1] offset:4824; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]825; GFX942-NEXT:    s_waitcnt vmcnt(0)826; GFX942-NEXT:    s_setpc_b64 s[30:31]827  %vec0 = call <4 x half> asm "; def $0", "=v"()828  %vec1 = call <4 x half> asm "; def $0", "=v"()829  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 7, i32 1>830  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 8831  ret void832}833 834define void @v_shuffle_v3f16_v4f16__7_7_2(ptr addrspace(1) inreg %ptr) {835; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_7_2:836; GFX900:       ; %bb.0:837; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)838; GFX900-NEXT:    v_mov_b32_e32 v4, 0839; GFX900-NEXT:    ;;#ASMSTART840; GFX900-NEXT:    ; def v[0:1]841; GFX900-NEXT:    ;;#ASMEND842; GFX900-NEXT:    s_mov_b32 s4, 0x7060302843; GFX900-NEXT:    ;;#ASMSTART844; GFX900-NEXT:    ; def v[2:3]845; GFX900-NEXT:    ;;#ASMEND846; GFX900-NEXT:    v_perm_b32 v0, v3, v3, s4847; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:4848; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]849; GFX900-NEXT:    s_waitcnt vmcnt(0)850; GFX900-NEXT:    s_setpc_b64 s[30:31]851;852; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_7_2:853; GFX90A:       ; %bb.0:854; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)855; GFX90A-NEXT:    v_mov_b32_e32 v4, 0856; GFX90A-NEXT:    ;;#ASMSTART857; GFX90A-NEXT:    ; def v[0:1]858; GFX90A-NEXT:    ;;#ASMEND859; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302860; GFX90A-NEXT:    ;;#ASMSTART861; GFX90A-NEXT:    ; def v[2:3]862; GFX90A-NEXT:    ;;#ASMEND863; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s4864; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:4865; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]866; GFX90A-NEXT:    s_waitcnt vmcnt(0)867; GFX90A-NEXT:    s_setpc_b64 s[30:31]868;869; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_7_2:870; GFX942:       ; %bb.0:871; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)872; GFX942-NEXT:    v_mov_b32_e32 v4, 0873; GFX942-NEXT:    ;;#ASMSTART874; GFX942-NEXT:    ; def v[0:1]875; GFX942-NEXT:    ;;#ASMEND876; GFX942-NEXT:    s_mov_b32 s2, 0x7060302877; GFX942-NEXT:    ;;#ASMSTART878; GFX942-NEXT:    ; def v[2:3]879; GFX942-NEXT:    ;;#ASMEND880; GFX942-NEXT:    s_nop 0881; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s2882; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:4883; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]884; GFX942-NEXT:    s_waitcnt vmcnt(0)885; GFX942-NEXT:    s_setpc_b64 s[30:31]886  %vec0 = call <4 x half> asm "; def $0", "=v"()887  %vec1 = call <4 x half> asm "; def $0", "=v"()888  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 7, i32 2>889  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 8890  ret void891}892 893define void @v_shuffle_v3f16_v4f16__7_7_3(ptr addrspace(1) inreg %ptr) {894; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_7_3:895; GFX900:       ; %bb.0:896; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)897; GFX900-NEXT:    v_mov_b32_e32 v4, 0898; GFX900-NEXT:    ;;#ASMSTART899; GFX900-NEXT:    ; def v[0:1]900; GFX900-NEXT:    ;;#ASMEND901; GFX900-NEXT:    s_mov_b32 s4, 0x7060302902; GFX900-NEXT:    ;;#ASMSTART903; GFX900-NEXT:    ; def v[2:3]904; GFX900-NEXT:    ;;#ASMEND905; GFX900-NEXT:    v_perm_b32 v0, v3, v3, s4906; GFX900-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:4907; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]908; GFX900-NEXT:    s_waitcnt vmcnt(0)909; GFX900-NEXT:    s_setpc_b64 s[30:31]910;911; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_7_3:912; GFX90A:       ; %bb.0:913; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)914; GFX90A-NEXT:    v_mov_b32_e32 v4, 0915; GFX90A-NEXT:    ;;#ASMSTART916; GFX90A-NEXT:    ; def v[0:1]917; GFX90A-NEXT:    ;;#ASMEND918; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302919; GFX90A-NEXT:    ;;#ASMSTART920; GFX90A-NEXT:    ; def v[2:3]921; GFX90A-NEXT:    ;;#ASMEND922; GFX90A-NEXT:    v_perm_b32 v0, v3, v3, s4923; GFX90A-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:4924; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]925; GFX90A-NEXT:    s_waitcnt vmcnt(0)926; GFX90A-NEXT:    s_setpc_b64 s[30:31]927;928; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_7_3:929; GFX942:       ; %bb.0:930; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)931; GFX942-NEXT:    v_mov_b32_e32 v4, 0932; GFX942-NEXT:    ;;#ASMSTART933; GFX942-NEXT:    ; def v[0:1]934; GFX942-NEXT:    ;;#ASMEND935; GFX942-NEXT:    s_mov_b32 s2, 0x7060302936; GFX942-NEXT:    ;;#ASMSTART937; GFX942-NEXT:    ; def v[2:3]938; GFX942-NEXT:    ;;#ASMEND939; GFX942-NEXT:    s_nop 0940; GFX942-NEXT:    v_perm_b32 v0, v3, v3, s2941; GFX942-NEXT:    global_store_short_d16_hi v4, v1, s[0:1] offset:4942; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]943; GFX942-NEXT:    s_waitcnt vmcnt(0)944; GFX942-NEXT:    s_setpc_b64 s[30:31]945  %vec0 = call <4 x half> asm "; def $0", "=v"()946  %vec1 = call <4 x half> asm "; def $0", "=v"()947  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 7, i32 3>948  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 8949  ret void950}951 952define void @v_shuffle_v3f16_v4f16__7_7_4(ptr addrspace(1) inreg %ptr) {953; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_7_4:954; GFX900:       ; %bb.0:955; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)956; GFX900-NEXT:    v_mov_b32_e32 v2, 0957; GFX900-NEXT:    ;;#ASMSTART958; GFX900-NEXT:    ; def v[0:1]959; GFX900-NEXT:    ;;#ASMEND960; GFX900-NEXT:    s_mov_b32 s4, 0x7060302961; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s4962; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:4963; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]964; GFX900-NEXT:    s_waitcnt vmcnt(0)965; GFX900-NEXT:    s_setpc_b64 s[30:31]966;967; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_7_4:968; GFX90A:       ; %bb.0:969; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)970; GFX90A-NEXT:    v_mov_b32_e32 v2, 0971; GFX90A-NEXT:    ;;#ASMSTART972; GFX90A-NEXT:    ; def v[0:1]973; GFX90A-NEXT:    ;;#ASMEND974; GFX90A-NEXT:    s_mov_b32 s4, 0x7060302975; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s4976; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:4977; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]978; GFX90A-NEXT:    s_waitcnt vmcnt(0)979; GFX90A-NEXT:    s_setpc_b64 s[30:31]980;981; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_7_4:982; GFX942:       ; %bb.0:983; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)984; GFX942-NEXT:    v_mov_b32_e32 v2, 0985; GFX942-NEXT:    ;;#ASMSTART986; GFX942-NEXT:    ; def v[0:1]987; GFX942-NEXT:    ;;#ASMEND988; GFX942-NEXT:    s_mov_b32 s2, 0x7060302989; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s2990; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:4991; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]992; GFX942-NEXT:    s_waitcnt vmcnt(0)993; GFX942-NEXT:    s_setpc_b64 s[30:31]994  %vec0 = call <4 x half> asm "; def $0", "=v"()995  %vec1 = call <4 x half> asm "; def $0", "=v"()996  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 7, i32 4>997  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 8998  ret void999}1000 1001define void @v_shuffle_v3f16_v4f16__7_7_5(ptr addrspace(1) inreg %ptr) {1002; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_7_5:1003; GFX900:       ; %bb.0:1004; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1005; GFX900-NEXT:    v_mov_b32_e32 v2, 01006; GFX900-NEXT:    ;;#ASMSTART1007; GFX900-NEXT:    ; def v[0:1]1008; GFX900-NEXT:    ;;#ASMEND1009; GFX900-NEXT:    s_mov_b32 s4, 0x70603021010; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s41011; GFX900-NEXT:    global_store_short_d16_hi v2, v0, s[16:17] offset:41012; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]1013; GFX900-NEXT:    s_waitcnt vmcnt(0)1014; GFX900-NEXT:    s_setpc_b64 s[30:31]1015;1016; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_7_5:1017; GFX90A:       ; %bb.0:1018; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1019; GFX90A-NEXT:    v_mov_b32_e32 v2, 01020; GFX90A-NEXT:    ;;#ASMSTART1021; GFX90A-NEXT:    ; def v[0:1]1022; GFX90A-NEXT:    ;;#ASMEND1023; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021024; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s41025; GFX90A-NEXT:    global_store_short_d16_hi v2, v0, s[16:17] offset:41026; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]1027; GFX90A-NEXT:    s_waitcnt vmcnt(0)1028; GFX90A-NEXT:    s_setpc_b64 s[30:31]1029;1030; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_7_5:1031; GFX942:       ; %bb.0:1032; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1033; GFX942-NEXT:    v_mov_b32_e32 v2, 01034; GFX942-NEXT:    ;;#ASMSTART1035; GFX942-NEXT:    ; def v[0:1]1036; GFX942-NEXT:    ;;#ASMEND1037; GFX942-NEXT:    s_mov_b32 s2, 0x70603021038; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s21039; GFX942-NEXT:    global_store_short_d16_hi v2, v0, s[0:1] offset:41040; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]1041; GFX942-NEXT:    s_waitcnt vmcnt(0)1042; GFX942-NEXT:    s_setpc_b64 s[30:31]1043  %vec0 = call <4 x half> asm "; def $0", "=v"()1044  %vec1 = call <4 x half> asm "; def $0", "=v"()1045  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 7, i32 5>1046  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 81047  ret void1048}1049 1050define void @v_shuffle_v3f16_v4f16__7_7_6(ptr addrspace(1) inreg %ptr) {1051; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_7_6:1052; GFX900:       ; %bb.0:1053; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1054; GFX900-NEXT:    v_mov_b32_e32 v2, 01055; GFX900-NEXT:    ;;#ASMSTART1056; GFX900-NEXT:    ; def v[0:1]1057; GFX900-NEXT:    ;;#ASMEND1058; GFX900-NEXT:    s_mov_b32 s4, 0x70603021059; GFX900-NEXT:    v_perm_b32 v0, v1, v1, s41060; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:41061; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]1062; GFX900-NEXT:    s_waitcnt vmcnt(0)1063; GFX900-NEXT:    s_setpc_b64 s[30:31]1064;1065; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_7_6:1066; GFX90A:       ; %bb.0:1067; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1068; GFX90A-NEXT:    v_mov_b32_e32 v2, 01069; GFX90A-NEXT:    ;;#ASMSTART1070; GFX90A-NEXT:    ; def v[0:1]1071; GFX90A-NEXT:    ;;#ASMEND1072; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021073; GFX90A-NEXT:    v_perm_b32 v0, v1, v1, s41074; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:41075; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]1076; GFX90A-NEXT:    s_waitcnt vmcnt(0)1077; GFX90A-NEXT:    s_setpc_b64 s[30:31]1078;1079; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_7_6:1080; GFX942:       ; %bb.0:1081; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1082; GFX942-NEXT:    v_mov_b32_e32 v2, 01083; GFX942-NEXT:    ;;#ASMSTART1084; GFX942-NEXT:    ; def v[0:1]1085; GFX942-NEXT:    ;;#ASMEND1086; GFX942-NEXT:    s_mov_b32 s2, 0x70603021087; GFX942-NEXT:    v_perm_b32 v0, v1, v1, s21088; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:41089; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]1090; GFX942-NEXT:    s_waitcnt vmcnt(0)1091; GFX942-NEXT:    s_setpc_b64 s[30:31]1092  %vec0 = call <4 x half> asm "; def $0", "=v"()1093  %vec1 = call <4 x half> asm "; def $0", "=v"()1094  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 7, i32 6>1095  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 81096  ret void1097}1098 1099define void @v_shuffle_v3f16_v4f16__7_7_7(ptr addrspace(1) inreg %ptr) {1100; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_7_7:1101; GFX900:       ; %bb.0:1102; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1103; GFX900-NEXT:    ;;#ASMSTART1104; GFX900-NEXT:    ; def v[0:1]1105; GFX900-NEXT:    ;;#ASMEND1106; GFX900-NEXT:    s_mov_b32 s4, 0x70603021107; GFX900-NEXT:    v_mov_b32_e32 v2, 01108; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v11109; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s41110; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]1111; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:41112; GFX900-NEXT:    s_waitcnt vmcnt(0)1113; GFX900-NEXT:    s_setpc_b64 s[30:31]1114;1115; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_7_7:1116; GFX90A:       ; %bb.0:1117; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1118; GFX90A-NEXT:    ;;#ASMSTART1119; GFX90A-NEXT:    ; def v[0:1]1120; GFX90A-NEXT:    ;;#ASMEND1121; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021122; GFX90A-NEXT:    v_mov_b32_e32 v2, 01123; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v11124; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s41125; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]1126; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:41127; GFX90A-NEXT:    s_waitcnt vmcnt(0)1128; GFX90A-NEXT:    s_setpc_b64 s[30:31]1129;1130; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_7_7:1131; GFX942:       ; %bb.0:1132; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1133; GFX942-NEXT:    ;;#ASMSTART1134; GFX942-NEXT:    ; def v[0:1]1135; GFX942-NEXT:    ;;#ASMEND1136; GFX942-NEXT:    s_mov_b32 s2, 0x70603021137; GFX942-NEXT:    v_mov_b32_e32 v2, 01138; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v11139; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s21140; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]1141; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:41142; GFX942-NEXT:    s_waitcnt vmcnt(0)1143; GFX942-NEXT:    s_setpc_b64 s[30:31]1144  %vec0 = call <4 x half> asm "; def $0", "=v"()1145  %vec1 = call <4 x half> asm "; def $0", "=v"()1146  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 7, i32 7>1147  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 81148  ret void1149}1150 1151define void @v_shuffle_v3f16_v4f16__u_0_0(ptr addrspace(1) inreg %ptr) {1152; GFX900-LABEL: v_shuffle_v3f16_v4f16__u_0_0:1153; GFX900:       ; %bb.0:1154; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1155; GFX900-NEXT:    v_mov_b32_e32 v2, 01156; GFX900-NEXT:    ;;#ASMSTART1157; GFX900-NEXT:    ; def v[0:1]1158; GFX900-NEXT:    ;;#ASMEND1159; GFX900-NEXT:    v_lshlrev_b32_e32 v1, 16, v01160; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:41161; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]1162; GFX900-NEXT:    s_waitcnt vmcnt(0)1163; GFX900-NEXT:    s_setpc_b64 s[30:31]1164;1165; GFX90A-LABEL: v_shuffle_v3f16_v4f16__u_0_0:1166; GFX90A:       ; %bb.0:1167; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1168; GFX90A-NEXT:    v_mov_b32_e32 v2, 01169; GFX90A-NEXT:    ;;#ASMSTART1170; GFX90A-NEXT:    ; def v[0:1]1171; GFX90A-NEXT:    ;;#ASMEND1172; GFX90A-NEXT:    v_lshlrev_b32_e32 v1, 16, v01173; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:41174; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]1175; GFX90A-NEXT:    s_waitcnt vmcnt(0)1176; GFX90A-NEXT:    s_setpc_b64 s[30:31]1177;1178; GFX942-LABEL: v_shuffle_v3f16_v4f16__u_0_0:1179; GFX942:       ; %bb.0:1180; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1181; GFX942-NEXT:    v_mov_b32_e32 v2, 01182; GFX942-NEXT:    ;;#ASMSTART1183; GFX942-NEXT:    ; def v[0:1]1184; GFX942-NEXT:    ;;#ASMEND1185; GFX942-NEXT:    s_nop 01186; GFX942-NEXT:    v_lshlrev_b32_e32 v1, 16, v01187; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:41188; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]1189; GFX942-NEXT:    s_waitcnt vmcnt(0)1190; GFX942-NEXT:    s_setpc_b64 s[30:31]1191  %vec0 = call <4 x half> asm "; def $0", "=v"()1192  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 poison, i32 0, i32 0>1193  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 81194  ret void1195}1196 1197define void @v_shuffle_v3f16_v4f16__0_0_0(ptr addrspace(1) inreg %ptr) {1198; GFX900-LABEL: v_shuffle_v3f16_v4f16__0_0_0:1199; GFX900:       ; %bb.0:1200; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1201; GFX900-NEXT:    v_mov_b32_e32 v2, 01202; GFX900-NEXT:    ;;#ASMSTART1203; GFX900-NEXT:    ; def v[0:1]1204; GFX900-NEXT:    ;;#ASMEND1205; GFX900-NEXT:    s_mov_b32 s4, 0x50401001206; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s41207; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:41208; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]1209; GFX900-NEXT:    s_waitcnt vmcnt(0)1210; GFX900-NEXT:    s_setpc_b64 s[30:31]1211;1212; GFX90A-LABEL: v_shuffle_v3f16_v4f16__0_0_0:1213; GFX90A:       ; %bb.0:1214; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1215; GFX90A-NEXT:    v_mov_b32_e32 v2, 01216; GFX90A-NEXT:    ;;#ASMSTART1217; GFX90A-NEXT:    ; def v[0:1]1218; GFX90A-NEXT:    ;;#ASMEND1219; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001220; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s41221; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:41222; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]1223; GFX90A-NEXT:    s_waitcnt vmcnt(0)1224; GFX90A-NEXT:    s_setpc_b64 s[30:31]1225;1226; GFX942-LABEL: v_shuffle_v3f16_v4f16__0_0_0:1227; GFX942:       ; %bb.0:1228; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1229; GFX942-NEXT:    v_mov_b32_e32 v2, 01230; GFX942-NEXT:    ;;#ASMSTART1231; GFX942-NEXT:    ; def v[0:1]1232; GFX942-NEXT:    ;;#ASMEND1233; GFX942-NEXT:    s_mov_b32 s2, 0x50401001234; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s21235; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:41236; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]1237; GFX942-NEXT:    s_waitcnt vmcnt(0)1238; GFX942-NEXT:    s_setpc_b64 s[30:31]1239  %vec0 = call <4 x half> asm "; def $0", "=v"()1240  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> zeroinitializer1241  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 81242  ret void1243}1244 1245define void @v_shuffle_v3f16_v4f16__1_0_0(ptr addrspace(1) inreg %ptr) {1246; GFX900-LABEL: v_shuffle_v3f16_v4f16__1_0_0:1247; GFX900:       ; %bb.0:1248; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1249; GFX900-NEXT:    v_mov_b32_e32 v2, 01250; GFX900-NEXT:    ;;#ASMSTART1251; GFX900-NEXT:    ; def v[0:1]1252; GFX900-NEXT:    ;;#ASMEND1253; GFX900-NEXT:    v_alignbit_b32 v1, v0, v0, 161254; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:41255; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]1256; GFX900-NEXT:    s_waitcnt vmcnt(0)1257; GFX900-NEXT:    s_setpc_b64 s[30:31]1258;1259; GFX90A-LABEL: v_shuffle_v3f16_v4f16__1_0_0:1260; GFX90A:       ; %bb.0:1261; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1262; GFX90A-NEXT:    v_mov_b32_e32 v2, 01263; GFX90A-NEXT:    ;;#ASMSTART1264; GFX90A-NEXT:    ; def v[0:1]1265; GFX90A-NEXT:    ;;#ASMEND1266; GFX90A-NEXT:    v_alignbit_b32 v1, v0, v0, 161267; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:41268; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]1269; GFX90A-NEXT:    s_waitcnt vmcnt(0)1270; GFX90A-NEXT:    s_setpc_b64 s[30:31]1271;1272; GFX942-LABEL: v_shuffle_v3f16_v4f16__1_0_0:1273; GFX942:       ; %bb.0:1274; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1275; GFX942-NEXT:    v_mov_b32_e32 v2, 01276; GFX942-NEXT:    ;;#ASMSTART1277; GFX942-NEXT:    ; def v[0:1]1278; GFX942-NEXT:    ;;#ASMEND1279; GFX942-NEXT:    s_nop 01280; GFX942-NEXT:    v_alignbit_b32 v1, v0, v0, 161281; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:41282; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]1283; GFX942-NEXT:    s_waitcnt vmcnt(0)1284; GFX942-NEXT:    s_setpc_b64 s[30:31]1285  %vec0 = call <4 x half> asm "; def $0", "=v"()1286  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 1, i32 0, i32 0>1287  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 81288  ret void1289}1290 1291define void @v_shuffle_v3f16_v4f16__2_0_0(ptr addrspace(1) inreg %ptr) {1292; GFX900-LABEL: v_shuffle_v3f16_v4f16__2_0_0:1293; GFX900:       ; %bb.0:1294; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1295; GFX900-NEXT:    v_mov_b32_e32 v2, 01296; GFX900-NEXT:    ;;#ASMSTART1297; GFX900-NEXT:    ; def v[0:1]1298; GFX900-NEXT:    ;;#ASMEND1299; GFX900-NEXT:    s_mov_b32 s4, 0x50401001300; GFX900-NEXT:    v_perm_b32 v1, v0, v1, s41301; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:41302; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]1303; GFX900-NEXT:    s_waitcnt vmcnt(0)1304; GFX900-NEXT:    s_setpc_b64 s[30:31]1305;1306; GFX90A-LABEL: v_shuffle_v3f16_v4f16__2_0_0:1307; GFX90A:       ; %bb.0:1308; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1309; GFX90A-NEXT:    v_mov_b32_e32 v2, 01310; GFX90A-NEXT:    ;;#ASMSTART1311; GFX90A-NEXT:    ; def v[0:1]1312; GFX90A-NEXT:    ;;#ASMEND1313; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001314; GFX90A-NEXT:    v_perm_b32 v1, v0, v1, s41315; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:41316; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]1317; GFX90A-NEXT:    s_waitcnt vmcnt(0)1318; GFX90A-NEXT:    s_setpc_b64 s[30:31]1319;1320; GFX942-LABEL: v_shuffle_v3f16_v4f16__2_0_0:1321; GFX942:       ; %bb.0:1322; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1323; GFX942-NEXT:    v_mov_b32_e32 v2, 01324; GFX942-NEXT:    ;;#ASMSTART1325; GFX942-NEXT:    ; def v[0:1]1326; GFX942-NEXT:    ;;#ASMEND1327; GFX942-NEXT:    s_mov_b32 s2, 0x50401001328; GFX942-NEXT:    v_perm_b32 v1, v0, v1, s21329; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:41330; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]1331; GFX942-NEXT:    s_waitcnt vmcnt(0)1332; GFX942-NEXT:    s_setpc_b64 s[30:31]1333  %vec0 = call <4 x half> asm "; def $0", "=v"()1334  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 2, i32 0, i32 0>1335  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 81336  ret void1337}1338 1339define void @v_shuffle_v3f16_v4f16__3_0_0(ptr addrspace(1) inreg %ptr) {1340; GFX900-LABEL: v_shuffle_v3f16_v4f16__3_0_0:1341; GFX900:       ; %bb.0:1342; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1343; GFX900-NEXT:    v_mov_b32_e32 v2, 01344; GFX900-NEXT:    ;;#ASMSTART1345; GFX900-NEXT:    ; def v[0:1]1346; GFX900-NEXT:    ;;#ASMEND1347; GFX900-NEXT:    v_alignbit_b32 v1, v0, v1, 161348; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:41349; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]1350; GFX900-NEXT:    s_waitcnt vmcnt(0)1351; GFX900-NEXT:    s_setpc_b64 s[30:31]1352;1353; GFX90A-LABEL: v_shuffle_v3f16_v4f16__3_0_0:1354; GFX90A:       ; %bb.0:1355; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1356; GFX90A-NEXT:    v_mov_b32_e32 v2, 01357; GFX90A-NEXT:    ;;#ASMSTART1358; GFX90A-NEXT:    ; def v[0:1]1359; GFX90A-NEXT:    ;;#ASMEND1360; GFX90A-NEXT:    v_alignbit_b32 v1, v0, v1, 161361; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:41362; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]1363; GFX90A-NEXT:    s_waitcnt vmcnt(0)1364; GFX90A-NEXT:    s_setpc_b64 s[30:31]1365;1366; GFX942-LABEL: v_shuffle_v3f16_v4f16__3_0_0:1367; GFX942:       ; %bb.0:1368; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1369; GFX942-NEXT:    v_mov_b32_e32 v2, 01370; GFX942-NEXT:    ;;#ASMSTART1371; GFX942-NEXT:    ; def v[0:1]1372; GFX942-NEXT:    ;;#ASMEND1373; GFX942-NEXT:    s_nop 01374; GFX942-NEXT:    v_alignbit_b32 v1, v0, v1, 161375; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:41376; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]1377; GFX942-NEXT:    s_waitcnt vmcnt(0)1378; GFX942-NEXT:    s_setpc_b64 s[30:31]1379  %vec0 = call <4 x half> asm "; def $0", "=v"()1380  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 3, i32 0, i32 0>1381  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 81382  ret void1383}1384 1385define void @v_shuffle_v3f16_v4f16__4_0_0(ptr addrspace(1) inreg %ptr) {1386; GFX900-LABEL: v_shuffle_v3f16_v4f16__4_0_0:1387; GFX900:       ; %bb.0:1388; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1389; GFX900-NEXT:    v_mov_b32_e32 v2, 01390; GFX900-NEXT:    ;;#ASMSTART1391; GFX900-NEXT:    ; def v[0:1]1392; GFX900-NEXT:    ;;#ASMEND1393; GFX900-NEXT:    v_lshlrev_b32_e32 v1, 16, v01394; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:41395; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]1396; GFX900-NEXT:    s_waitcnt vmcnt(0)1397; GFX900-NEXT:    s_setpc_b64 s[30:31]1398;1399; GFX90A-LABEL: v_shuffle_v3f16_v4f16__4_0_0:1400; GFX90A:       ; %bb.0:1401; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1402; GFX90A-NEXT:    v_mov_b32_e32 v2, 01403; GFX90A-NEXT:    ;;#ASMSTART1404; GFX90A-NEXT:    ; def v[0:1]1405; GFX90A-NEXT:    ;;#ASMEND1406; GFX90A-NEXT:    v_lshlrev_b32_e32 v1, 16, v01407; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:41408; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]1409; GFX90A-NEXT:    s_waitcnt vmcnt(0)1410; GFX90A-NEXT:    s_setpc_b64 s[30:31]1411;1412; GFX942-LABEL: v_shuffle_v3f16_v4f16__4_0_0:1413; GFX942:       ; %bb.0:1414; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1415; GFX942-NEXT:    v_mov_b32_e32 v2, 01416; GFX942-NEXT:    ;;#ASMSTART1417; GFX942-NEXT:    ; def v[0:1]1418; GFX942-NEXT:    ;;#ASMEND1419; GFX942-NEXT:    s_nop 01420; GFX942-NEXT:    v_lshlrev_b32_e32 v1, 16, v01421; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:41422; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]1423; GFX942-NEXT:    s_waitcnt vmcnt(0)1424; GFX942-NEXT:    s_setpc_b64 s[30:31]1425  %vec0 = call <4 x half> asm "; def $0", "=v"()1426  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 4, i32 0, i32 0>1427  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 81428  ret void1429}1430 1431define void @v_shuffle_v3f16_v4f16__5_0_0(ptr addrspace(1) inreg %ptr) {1432; GFX900-LABEL: v_shuffle_v3f16_v4f16__5_0_0:1433; GFX900:       ; %bb.0:1434; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1435; GFX900-NEXT:    ;;#ASMSTART1436; GFX900-NEXT:    ; def v[0:1]1437; GFX900-NEXT:    ;;#ASMEND1438; GFX900-NEXT:    v_mov_b32_e32 v3, 01439; GFX900-NEXT:    ;;#ASMSTART1440; GFX900-NEXT:    ; def v[1:2]1441; GFX900-NEXT:    ;;#ASMEND1442; GFX900-NEXT:    v_alignbit_b32 v1, v0, v1, 161443; GFX900-NEXT:    global_store_short v3, v0, s[16:17] offset:41444; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]1445; GFX900-NEXT:    s_waitcnt vmcnt(0)1446; GFX900-NEXT:    s_setpc_b64 s[30:31]1447;1448; GFX90A-LABEL: v_shuffle_v3f16_v4f16__5_0_0:1449; GFX90A:       ; %bb.0:1450; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1451; GFX90A-NEXT:    v_mov_b32_e32 v4, 01452; GFX90A-NEXT:    ;;#ASMSTART1453; GFX90A-NEXT:    ; def v[0:1]1454; GFX90A-NEXT:    ;;#ASMEND1455; GFX90A-NEXT:    ;;#ASMSTART1456; GFX90A-NEXT:    ; def v[2:3]1457; GFX90A-NEXT:    ;;#ASMEND1458; GFX90A-NEXT:    v_alignbit_b32 v1, v0, v2, 161459; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:41460; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]1461; GFX90A-NEXT:    s_waitcnt vmcnt(0)1462; GFX90A-NEXT:    s_setpc_b64 s[30:31]1463;1464; GFX942-LABEL: v_shuffle_v3f16_v4f16__5_0_0:1465; GFX942:       ; %bb.0:1466; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1467; GFX942-NEXT:    v_mov_b32_e32 v4, 01468; GFX942-NEXT:    ;;#ASMSTART1469; GFX942-NEXT:    ; def v[0:1]1470; GFX942-NEXT:    ;;#ASMEND1471; GFX942-NEXT:    ;;#ASMSTART1472; GFX942-NEXT:    ; def v[2:3]1473; GFX942-NEXT:    ;;#ASMEND1474; GFX942-NEXT:    s_nop 01475; GFX942-NEXT:    v_alignbit_b32 v1, v0, v2, 161476; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:41477; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]1478; GFX942-NEXT:    s_waitcnt vmcnt(0)1479; GFX942-NEXT:    s_setpc_b64 s[30:31]1480  %vec0 = call <4 x half> asm "; def $0", "=v"()1481  %vec1 = call <4 x half> asm "; def $0", "=v"()1482  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 5, i32 0, i32 0>1483  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 81484  ret void1485}1486 1487define void @v_shuffle_v3f16_v4f16__6_0_0(ptr addrspace(1) inreg %ptr) {1488; GFX900-LABEL: v_shuffle_v3f16_v4f16__6_0_0:1489; GFX900:       ; %bb.0:1490; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1491; GFX900-NEXT:    ;;#ASMSTART1492; GFX900-NEXT:    ; def v[0:1]1493; GFX900-NEXT:    ;;#ASMEND1494; GFX900-NEXT:    v_mov_b32_e32 v3, 01495; GFX900-NEXT:    ;;#ASMSTART1496; GFX900-NEXT:    ; def v[1:2]1497; GFX900-NEXT:    ;;#ASMEND1498; GFX900-NEXT:    s_mov_b32 s4, 0x50401001499; GFX900-NEXT:    v_perm_b32 v1, v0, v2, s41500; GFX900-NEXT:    global_store_short v3, v0, s[16:17] offset:41501; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]1502; GFX900-NEXT:    s_waitcnt vmcnt(0)1503; GFX900-NEXT:    s_setpc_b64 s[30:31]1504;1505; GFX90A-LABEL: v_shuffle_v3f16_v4f16__6_0_0:1506; GFX90A:       ; %bb.0:1507; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1508; GFX90A-NEXT:    v_mov_b32_e32 v4, 01509; GFX90A-NEXT:    ;;#ASMSTART1510; GFX90A-NEXT:    ; def v[0:1]1511; GFX90A-NEXT:    ;;#ASMEND1512; GFX90A-NEXT:    s_mov_b32 s4, 0x50401001513; GFX90A-NEXT:    ;;#ASMSTART1514; GFX90A-NEXT:    ; def v[2:3]1515; GFX90A-NEXT:    ;;#ASMEND1516; GFX90A-NEXT:    v_perm_b32 v1, v0, v3, s41517; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:41518; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]1519; GFX90A-NEXT:    s_waitcnt vmcnt(0)1520; GFX90A-NEXT:    s_setpc_b64 s[30:31]1521;1522; GFX942-LABEL: v_shuffle_v3f16_v4f16__6_0_0:1523; GFX942:       ; %bb.0:1524; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1525; GFX942-NEXT:    v_mov_b32_e32 v4, 01526; GFX942-NEXT:    ;;#ASMSTART1527; GFX942-NEXT:    ; def v[0:1]1528; GFX942-NEXT:    ;;#ASMEND1529; GFX942-NEXT:    s_mov_b32 s2, 0x50401001530; GFX942-NEXT:    ;;#ASMSTART1531; GFX942-NEXT:    ; def v[2:3]1532; GFX942-NEXT:    ;;#ASMEND1533; GFX942-NEXT:    s_nop 01534; GFX942-NEXT:    v_perm_b32 v1, v0, v3, s21535; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:41536; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]1537; GFX942-NEXT:    s_waitcnt vmcnt(0)1538; GFX942-NEXT:    s_setpc_b64 s[30:31]1539  %vec0 = call <4 x half> asm "; def $0", "=v"()1540  %vec1 = call <4 x half> asm "; def $0", "=v"()1541  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 6, i32 0, i32 0>1542  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 81543  ret void1544}1545 1546define void @v_shuffle_v3f16_v4f16__7_0_0(ptr addrspace(1) inreg %ptr) {1547; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_0_0:1548; GFX900:       ; %bb.0:1549; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1550; GFX900-NEXT:    ;;#ASMSTART1551; GFX900-NEXT:    ; def v[0:1]1552; GFX900-NEXT:    ;;#ASMEND1553; GFX900-NEXT:    v_mov_b32_e32 v3, 01554; GFX900-NEXT:    ;;#ASMSTART1555; GFX900-NEXT:    ; def v[1:2]1556; GFX900-NEXT:    ;;#ASMEND1557; GFX900-NEXT:    v_alignbit_b32 v1, v0, v2, 161558; GFX900-NEXT:    global_store_short v3, v0, s[16:17] offset:41559; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]1560; GFX900-NEXT:    s_waitcnt vmcnt(0)1561; GFX900-NEXT:    s_setpc_b64 s[30:31]1562;1563; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_0_0:1564; GFX90A:       ; %bb.0:1565; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1566; GFX90A-NEXT:    v_mov_b32_e32 v4, 01567; GFX90A-NEXT:    ;;#ASMSTART1568; GFX90A-NEXT:    ; def v[0:1]1569; GFX90A-NEXT:    ;;#ASMEND1570; GFX90A-NEXT:    ;;#ASMSTART1571; GFX90A-NEXT:    ; def v[2:3]1572; GFX90A-NEXT:    ;;#ASMEND1573; GFX90A-NEXT:    v_alignbit_b32 v1, v0, v3, 161574; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:41575; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]1576; GFX90A-NEXT:    s_waitcnt vmcnt(0)1577; GFX90A-NEXT:    s_setpc_b64 s[30:31]1578;1579; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_0_0:1580; GFX942:       ; %bb.0:1581; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1582; GFX942-NEXT:    v_mov_b32_e32 v4, 01583; GFX942-NEXT:    ;;#ASMSTART1584; GFX942-NEXT:    ; def v[0:1]1585; GFX942-NEXT:    ;;#ASMEND1586; GFX942-NEXT:    ;;#ASMSTART1587; GFX942-NEXT:    ; def v[2:3]1588; GFX942-NEXT:    ;;#ASMEND1589; GFX942-NEXT:    s_nop 01590; GFX942-NEXT:    v_alignbit_b32 v1, v0, v3, 161591; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:41592; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]1593; GFX942-NEXT:    s_waitcnt vmcnt(0)1594; GFX942-NEXT:    s_setpc_b64 s[30:31]1595  %vec0 = call <4 x half> asm "; def $0", "=v"()1596  %vec1 = call <4 x half> asm "; def $0", "=v"()1597  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 0, i32 0>1598  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 81599  ret void1600}1601 1602define void @v_shuffle_v3f16_v4f16__7_u_0(ptr addrspace(1) inreg %ptr) {1603; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_u_0:1604; GFX900:       ; %bb.0:1605; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1606; GFX900-NEXT:    ;;#ASMSTART1607; GFX900-NEXT:    ; def v[0:1]1608; GFX900-NEXT:    ;;#ASMEND1609; GFX900-NEXT:    v_mov_b32_e32 v3, 01610; GFX900-NEXT:    ;;#ASMSTART1611; GFX900-NEXT:    ; def v[1:2]1612; GFX900-NEXT:    ;;#ASMEND1613; GFX900-NEXT:    v_alignbit_b32 v1, s4, v2, 161614; GFX900-NEXT:    global_store_short v3, v0, s[16:17] offset:41615; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]1616; GFX900-NEXT:    s_waitcnt vmcnt(0)1617; GFX900-NEXT:    s_setpc_b64 s[30:31]1618;1619; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_u_0:1620; GFX90A:       ; %bb.0:1621; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1622; GFX90A-NEXT:    v_mov_b32_e32 v4, 01623; GFX90A-NEXT:    ;;#ASMSTART1624; GFX90A-NEXT:    ; def v[0:1]1625; GFX90A-NEXT:    ;;#ASMEND1626; GFX90A-NEXT:    ;;#ASMSTART1627; GFX90A-NEXT:    ; def v[2:3]1628; GFX90A-NEXT:    ;;#ASMEND1629; GFX90A-NEXT:    v_alignbit_b32 v1, s4, v3, 161630; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:41631; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]1632; GFX90A-NEXT:    s_waitcnt vmcnt(0)1633; GFX90A-NEXT:    s_setpc_b64 s[30:31]1634;1635; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_u_0:1636; GFX942:       ; %bb.0:1637; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1638; GFX942-NEXT:    v_mov_b32_e32 v4, 01639; GFX942-NEXT:    ;;#ASMSTART1640; GFX942-NEXT:    ; def v[0:1]1641; GFX942-NEXT:    ;;#ASMEND1642; GFX942-NEXT:    ;;#ASMSTART1643; GFX942-NEXT:    ; def v[2:3]1644; GFX942-NEXT:    ;;#ASMEND1645; GFX942-NEXT:    s_nop 01646; GFX942-NEXT:    v_alignbit_b32 v1, s0, v3, 161647; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:41648; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]1649; GFX942-NEXT:    s_waitcnt vmcnt(0)1650; GFX942-NEXT:    s_setpc_b64 s[30:31]1651  %vec0 = call <4 x half> asm "; def $0", "=v"()1652  %vec1 = call <4 x half> asm "; def $0", "=v"()1653  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 poison, i32 0>1654  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 81655  ret void1656}1657 1658define void @v_shuffle_v3f16_v4f16__7_1_0(ptr addrspace(1) inreg %ptr) {1659; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_1_0:1660; GFX900:       ; %bb.0:1661; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1662; GFX900-NEXT:    ;;#ASMSTART1663; GFX900-NEXT:    ; def v[0:1]1664; GFX900-NEXT:    ;;#ASMEND1665; GFX900-NEXT:    v_mov_b32_e32 v3, 01666; GFX900-NEXT:    ;;#ASMSTART1667; GFX900-NEXT:    ; def v[1:2]1668; GFX900-NEXT:    ;;#ASMEND1669; GFX900-NEXT:    s_mov_b32 s4, 0x70603021670; GFX900-NEXT:    v_perm_b32 v1, v0, v2, s41671; GFX900-NEXT:    global_store_short v3, v0, s[16:17] offset:41672; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]1673; GFX900-NEXT:    s_waitcnt vmcnt(0)1674; GFX900-NEXT:    s_setpc_b64 s[30:31]1675;1676; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_1_0:1677; GFX90A:       ; %bb.0:1678; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1679; GFX90A-NEXT:    v_mov_b32_e32 v4, 01680; GFX90A-NEXT:    ;;#ASMSTART1681; GFX90A-NEXT:    ; def v[0:1]1682; GFX90A-NEXT:    ;;#ASMEND1683; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021684; GFX90A-NEXT:    ;;#ASMSTART1685; GFX90A-NEXT:    ; def v[2:3]1686; GFX90A-NEXT:    ;;#ASMEND1687; GFX90A-NEXT:    v_perm_b32 v1, v0, v3, s41688; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:41689; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]1690; GFX90A-NEXT:    s_waitcnt vmcnt(0)1691; GFX90A-NEXT:    s_setpc_b64 s[30:31]1692;1693; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_1_0:1694; GFX942:       ; %bb.0:1695; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1696; GFX942-NEXT:    v_mov_b32_e32 v4, 01697; GFX942-NEXT:    ;;#ASMSTART1698; GFX942-NEXT:    ; def v[0:1]1699; GFX942-NEXT:    ;;#ASMEND1700; GFX942-NEXT:    s_mov_b32 s2, 0x70603021701; GFX942-NEXT:    ;;#ASMSTART1702; GFX942-NEXT:    ; def v[2:3]1703; GFX942-NEXT:    ;;#ASMEND1704; GFX942-NEXT:    s_nop 01705; GFX942-NEXT:    v_perm_b32 v1, v0, v3, s21706; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:41707; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]1708; GFX942-NEXT:    s_waitcnt vmcnt(0)1709; GFX942-NEXT:    s_setpc_b64 s[30:31]1710  %vec0 = call <4 x half> asm "; def $0", "=v"()1711  %vec1 = call <4 x half> asm "; def $0", "=v"()1712  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 1, i32 0>1713  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 81714  ret void1715}1716 1717define void @v_shuffle_v3f16_v4f16__7_2_0(ptr addrspace(1) inreg %ptr) {1718; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_2_0:1719; GFX900:       ; %bb.0:1720; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1721; GFX900-NEXT:    v_mov_b32_e32 v4, 01722; GFX900-NEXT:    ;;#ASMSTART1723; GFX900-NEXT:    ; def v[0:1]1724; GFX900-NEXT:    ;;#ASMEND1725; GFX900-NEXT:    ;;#ASMSTART1726; GFX900-NEXT:    ; def v[2:3]1727; GFX900-NEXT:    ;;#ASMEND1728; GFX900-NEXT:    v_alignbit_b32 v1, v1, v3, 161729; GFX900-NEXT:    global_store_short v4, v0, s[16:17] offset:41730; GFX900-NEXT:    global_store_dword v4, v1, s[16:17]1731; GFX900-NEXT:    s_waitcnt vmcnt(0)1732; GFX900-NEXT:    s_setpc_b64 s[30:31]1733;1734; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_2_0:1735; GFX90A:       ; %bb.0:1736; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1737; GFX90A-NEXT:    v_mov_b32_e32 v4, 01738; GFX90A-NEXT:    ;;#ASMSTART1739; GFX90A-NEXT:    ; def v[0:1]1740; GFX90A-NEXT:    ;;#ASMEND1741; GFX90A-NEXT:    ;;#ASMSTART1742; GFX90A-NEXT:    ; def v[2:3]1743; GFX90A-NEXT:    ;;#ASMEND1744; GFX90A-NEXT:    v_alignbit_b32 v1, v1, v3, 161745; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:41746; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]1747; GFX90A-NEXT:    s_waitcnt vmcnt(0)1748; GFX90A-NEXT:    s_setpc_b64 s[30:31]1749;1750; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_2_0:1751; GFX942:       ; %bb.0:1752; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1753; GFX942-NEXT:    v_mov_b32_e32 v4, 01754; GFX942-NEXT:    ;;#ASMSTART1755; GFX942-NEXT:    ; def v[0:1]1756; GFX942-NEXT:    ;;#ASMEND1757; GFX942-NEXT:    ;;#ASMSTART1758; GFX942-NEXT:    ; def v[2:3]1759; GFX942-NEXT:    ;;#ASMEND1760; GFX942-NEXT:    s_nop 01761; GFX942-NEXT:    v_alignbit_b32 v1, v1, v3, 161762; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:41763; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]1764; GFX942-NEXT:    s_waitcnt vmcnt(0)1765; GFX942-NEXT:    s_setpc_b64 s[30:31]1766  %vec0 = call <4 x half> asm "; def $0", "=v"()1767  %vec1 = call <4 x half> asm "; def $0", "=v"()1768  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 2, i32 0>1769  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 81770  ret void1771}1772 1773define void @v_shuffle_v3f16_v4f16__7_3_0(ptr addrspace(1) inreg %ptr) {1774; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_3_0:1775; GFX900:       ; %bb.0:1776; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1777; GFX900-NEXT:    v_mov_b32_e32 v4, 01778; GFX900-NEXT:    ;;#ASMSTART1779; GFX900-NEXT:    ; def v[0:1]1780; GFX900-NEXT:    ;;#ASMEND1781; GFX900-NEXT:    s_mov_b32 s4, 0x70603021782; GFX900-NEXT:    ;;#ASMSTART1783; GFX900-NEXT:    ; def v[2:3]1784; GFX900-NEXT:    ;;#ASMEND1785; GFX900-NEXT:    v_perm_b32 v1, v1, v3, s41786; GFX900-NEXT:    global_store_short v4, v0, s[16:17] offset:41787; GFX900-NEXT:    global_store_dword v4, v1, s[16:17]1788; GFX900-NEXT:    s_waitcnt vmcnt(0)1789; GFX900-NEXT:    s_setpc_b64 s[30:31]1790;1791; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_3_0:1792; GFX90A:       ; %bb.0:1793; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1794; GFX90A-NEXT:    v_mov_b32_e32 v4, 01795; GFX90A-NEXT:    ;;#ASMSTART1796; GFX90A-NEXT:    ; def v[0:1]1797; GFX90A-NEXT:    ;;#ASMEND1798; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021799; GFX90A-NEXT:    ;;#ASMSTART1800; GFX90A-NEXT:    ; def v[2:3]1801; GFX90A-NEXT:    ;;#ASMEND1802; GFX90A-NEXT:    v_perm_b32 v1, v1, v3, s41803; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:41804; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]1805; GFX90A-NEXT:    s_waitcnt vmcnt(0)1806; GFX90A-NEXT:    s_setpc_b64 s[30:31]1807;1808; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_3_0:1809; GFX942:       ; %bb.0:1810; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1811; GFX942-NEXT:    v_mov_b32_e32 v4, 01812; GFX942-NEXT:    ;;#ASMSTART1813; GFX942-NEXT:    ; def v[0:1]1814; GFX942-NEXT:    ;;#ASMEND1815; GFX942-NEXT:    s_mov_b32 s2, 0x70603021816; GFX942-NEXT:    ;;#ASMSTART1817; GFX942-NEXT:    ; def v[2:3]1818; GFX942-NEXT:    ;;#ASMEND1819; GFX942-NEXT:    s_nop 01820; GFX942-NEXT:    v_perm_b32 v1, v1, v3, s21821; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:41822; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]1823; GFX942-NEXT:    s_waitcnt vmcnt(0)1824; GFX942-NEXT:    s_setpc_b64 s[30:31]1825  %vec0 = call <4 x half> asm "; def $0", "=v"()1826  %vec1 = call <4 x half> asm "; def $0", "=v"()1827  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 3, i32 0>1828  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 81829  ret void1830}1831 1832define void @v_shuffle_v3f16_v4f16__7_4_0(ptr addrspace(1) inreg %ptr) {1833; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_4_0:1834; GFX900:       ; %bb.0:1835; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1836; GFX900-NEXT:    ;;#ASMSTART1837; GFX900-NEXT:    ; def v[0:1]1838; GFX900-NEXT:    ;;#ASMEND1839; GFX900-NEXT:    v_mov_b32_e32 v3, 01840; GFX900-NEXT:    ;;#ASMSTART1841; GFX900-NEXT:    ; def v[1:2]1842; GFX900-NEXT:    ;;#ASMEND1843; GFX900-NEXT:    v_alignbit_b32 v1, v1, v2, 161844; GFX900-NEXT:    global_store_short v3, v0, s[16:17] offset:41845; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]1846; GFX900-NEXT:    s_waitcnt vmcnt(0)1847; GFX900-NEXT:    s_setpc_b64 s[30:31]1848;1849; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_4_0:1850; GFX90A:       ; %bb.0:1851; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1852; GFX90A-NEXT:    v_mov_b32_e32 v4, 01853; GFX90A-NEXT:    ;;#ASMSTART1854; GFX90A-NEXT:    ; def v[0:1]1855; GFX90A-NEXT:    ;;#ASMEND1856; GFX90A-NEXT:    ;;#ASMSTART1857; GFX90A-NEXT:    ; def v[2:3]1858; GFX90A-NEXT:    ;;#ASMEND1859; GFX90A-NEXT:    v_alignbit_b32 v1, v2, v3, 161860; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:41861; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]1862; GFX90A-NEXT:    s_waitcnt vmcnt(0)1863; GFX90A-NEXT:    s_setpc_b64 s[30:31]1864;1865; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_4_0:1866; GFX942:       ; %bb.0:1867; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1868; GFX942-NEXT:    v_mov_b32_e32 v4, 01869; GFX942-NEXT:    ;;#ASMSTART1870; GFX942-NEXT:    ; def v[0:1]1871; GFX942-NEXT:    ;;#ASMEND1872; GFX942-NEXT:    ;;#ASMSTART1873; GFX942-NEXT:    ; def v[2:3]1874; GFX942-NEXT:    ;;#ASMEND1875; GFX942-NEXT:    s_nop 01876; GFX942-NEXT:    v_alignbit_b32 v1, v2, v3, 161877; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:41878; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]1879; GFX942-NEXT:    s_waitcnt vmcnt(0)1880; GFX942-NEXT:    s_setpc_b64 s[30:31]1881  %vec0 = call <4 x half> asm "; def $0", "=v"()1882  %vec1 = call <4 x half> asm "; def $0", "=v"()1883  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 4, i32 0>1884  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 81885  ret void1886}1887 1888define void @v_shuffle_v3f16_v4f16__7_5_0(ptr addrspace(1) inreg %ptr) {1889; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_5_0:1890; GFX900:       ; %bb.0:1891; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1892; GFX900-NEXT:    ;;#ASMSTART1893; GFX900-NEXT:    ; def v[0:1]1894; GFX900-NEXT:    ;;#ASMEND1895; GFX900-NEXT:    v_mov_b32_e32 v3, 01896; GFX900-NEXT:    ;;#ASMSTART1897; GFX900-NEXT:    ; def v[1:2]1898; GFX900-NEXT:    ;;#ASMEND1899; GFX900-NEXT:    s_mov_b32 s4, 0x70603021900; GFX900-NEXT:    v_perm_b32 v1, v1, v2, s41901; GFX900-NEXT:    global_store_short v3, v0, s[16:17] offset:41902; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]1903; GFX900-NEXT:    s_waitcnt vmcnt(0)1904; GFX900-NEXT:    s_setpc_b64 s[30:31]1905;1906; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_5_0:1907; GFX90A:       ; %bb.0:1908; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1909; GFX90A-NEXT:    v_mov_b32_e32 v4, 01910; GFX90A-NEXT:    ;;#ASMSTART1911; GFX90A-NEXT:    ; def v[0:1]1912; GFX90A-NEXT:    ;;#ASMEND1913; GFX90A-NEXT:    s_mov_b32 s4, 0x70603021914; GFX90A-NEXT:    ;;#ASMSTART1915; GFX90A-NEXT:    ; def v[2:3]1916; GFX90A-NEXT:    ;;#ASMEND1917; GFX90A-NEXT:    v_perm_b32 v1, v2, v3, s41918; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:41919; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]1920; GFX90A-NEXT:    s_waitcnt vmcnt(0)1921; GFX90A-NEXT:    s_setpc_b64 s[30:31]1922;1923; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_5_0:1924; GFX942:       ; %bb.0:1925; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1926; GFX942-NEXT:    v_mov_b32_e32 v4, 01927; GFX942-NEXT:    ;;#ASMSTART1928; GFX942-NEXT:    ; def v[0:1]1929; GFX942-NEXT:    ;;#ASMEND1930; GFX942-NEXT:    s_mov_b32 s2, 0x70603021931; GFX942-NEXT:    ;;#ASMSTART1932; GFX942-NEXT:    ; def v[2:3]1933; GFX942-NEXT:    ;;#ASMEND1934; GFX942-NEXT:    s_nop 01935; GFX942-NEXT:    v_perm_b32 v1, v2, v3, s21936; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:41937; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]1938; GFX942-NEXT:    s_waitcnt vmcnt(0)1939; GFX942-NEXT:    s_setpc_b64 s[30:31]1940  %vec0 = call <4 x half> asm "; def $0", "=v"()1941  %vec1 = call <4 x half> asm "; def $0", "=v"()1942  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 5, i32 0>1943  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 81944  ret void1945}1946 1947define void @v_shuffle_v3f16_v4f16__7_6_0(ptr addrspace(1) inreg %ptr) {1948; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_6_0:1949; GFX900:       ; %bb.0:1950; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1951; GFX900-NEXT:    ;;#ASMSTART1952; GFX900-NEXT:    ; def v[0:1]1953; GFX900-NEXT:    ;;#ASMEND1954; GFX900-NEXT:    v_mov_b32_e32 v3, 01955; GFX900-NEXT:    ;;#ASMSTART1956; GFX900-NEXT:    ; def v[1:2]1957; GFX900-NEXT:    ;;#ASMEND1958; GFX900-NEXT:    v_alignbit_b32 v1, v2, v2, 161959; GFX900-NEXT:    global_store_short v3, v0, s[16:17] offset:41960; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]1961; GFX900-NEXT:    s_waitcnt vmcnt(0)1962; GFX900-NEXT:    s_setpc_b64 s[30:31]1963;1964; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_6_0:1965; GFX90A:       ; %bb.0:1966; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1967; GFX90A-NEXT:    v_mov_b32_e32 v4, 01968; GFX90A-NEXT:    ;;#ASMSTART1969; GFX90A-NEXT:    ; def v[0:1]1970; GFX90A-NEXT:    ;;#ASMEND1971; GFX90A-NEXT:    ;;#ASMSTART1972; GFX90A-NEXT:    ; def v[2:3]1973; GFX90A-NEXT:    ;;#ASMEND1974; GFX90A-NEXT:    v_alignbit_b32 v1, v3, v3, 161975; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:41976; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]1977; GFX90A-NEXT:    s_waitcnt vmcnt(0)1978; GFX90A-NEXT:    s_setpc_b64 s[30:31]1979;1980; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_6_0:1981; GFX942:       ; %bb.0:1982; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1983; GFX942-NEXT:    v_mov_b32_e32 v4, 01984; GFX942-NEXT:    ;;#ASMSTART1985; GFX942-NEXT:    ; def v[0:1]1986; GFX942-NEXT:    ;;#ASMEND1987; GFX942-NEXT:    ;;#ASMSTART1988; GFX942-NEXT:    ; def v[2:3]1989; GFX942-NEXT:    ;;#ASMEND1990; GFX942-NEXT:    s_nop 01991; GFX942-NEXT:    v_alignbit_b32 v1, v3, v3, 161992; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:41993; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]1994; GFX942-NEXT:    s_waitcnt vmcnt(0)1995; GFX942-NEXT:    s_setpc_b64 s[30:31]1996  %vec0 = call <4 x half> asm "; def $0", "=v"()1997  %vec1 = call <4 x half> asm "; def $0", "=v"()1998  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 6, i32 0>1999  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 82000  ret void2001}2002 2003define void @v_shuffle_v3f16_v4f16__u_1_1(ptr addrspace(1) inreg %ptr) {2004; GFX900-LABEL: v_shuffle_v3f16_v4f16__u_1_1:2005; GFX900:       ; %bb.0:2006; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2007; GFX900-NEXT:    v_mov_b32_e32 v2, 02008; GFX900-NEXT:    ;;#ASMSTART2009; GFX900-NEXT:    ; def v[0:1]2010; GFX900-NEXT:    ;;#ASMEND2011; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]2012; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v02013; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:42014; GFX900-NEXT:    s_waitcnt vmcnt(0)2015; GFX900-NEXT:    s_setpc_b64 s[30:31]2016;2017; GFX90A-LABEL: v_shuffle_v3f16_v4f16__u_1_1:2018; GFX90A:       ; %bb.0:2019; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2020; GFX90A-NEXT:    v_mov_b32_e32 v2, 02021; GFX90A-NEXT:    ;;#ASMSTART2022; GFX90A-NEXT:    ; def v[0:1]2023; GFX90A-NEXT:    ;;#ASMEND2024; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]2025; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v02026; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:42027; GFX90A-NEXT:    s_waitcnt vmcnt(0)2028; GFX90A-NEXT:    s_setpc_b64 s[30:31]2029;2030; GFX942-LABEL: v_shuffle_v3f16_v4f16__u_1_1:2031; GFX942:       ; %bb.0:2032; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2033; GFX942-NEXT:    v_mov_b32_e32 v2, 02034; GFX942-NEXT:    ;;#ASMSTART2035; GFX942-NEXT:    ; def v[0:1]2036; GFX942-NEXT:    ;;#ASMEND2037; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]2038; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v02039; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:42040; GFX942-NEXT:    s_waitcnt vmcnt(0)2041; GFX942-NEXT:    s_setpc_b64 s[30:31]2042  %vec0 = call <4 x half> asm "; def $0", "=v"()2043  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 poison, i32 1, i32 1>2044  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 82045  ret void2046}2047 2048define void @v_shuffle_v3f16_v4f16__0_1_1(ptr addrspace(1) inreg %ptr) {2049; GFX900-LABEL: v_shuffle_v3f16_v4f16__0_1_1:2050; GFX900:       ; %bb.0:2051; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2052; GFX900-NEXT:    v_mov_b32_e32 v2, 02053; GFX900-NEXT:    ;;#ASMSTART2054; GFX900-NEXT:    ; def v[0:1]2055; GFX900-NEXT:    ;;#ASMEND2056; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]2057; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v02058; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:42059; GFX900-NEXT:    s_waitcnt vmcnt(0)2060; GFX900-NEXT:    s_setpc_b64 s[30:31]2061;2062; GFX90A-LABEL: v_shuffle_v3f16_v4f16__0_1_1:2063; GFX90A:       ; %bb.0:2064; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2065; GFX90A-NEXT:    v_mov_b32_e32 v2, 02066; GFX90A-NEXT:    ;;#ASMSTART2067; GFX90A-NEXT:    ; def v[0:1]2068; GFX90A-NEXT:    ;;#ASMEND2069; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]2070; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v02071; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:42072; GFX90A-NEXT:    s_waitcnt vmcnt(0)2073; GFX90A-NEXT:    s_setpc_b64 s[30:31]2074;2075; GFX942-LABEL: v_shuffle_v3f16_v4f16__0_1_1:2076; GFX942:       ; %bb.0:2077; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2078; GFX942-NEXT:    v_mov_b32_e32 v2, 02079; GFX942-NEXT:    ;;#ASMSTART2080; GFX942-NEXT:    ; def v[0:1]2081; GFX942-NEXT:    ;;#ASMEND2082; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]2083; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v02084; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:42085; GFX942-NEXT:    s_waitcnt vmcnt(0)2086; GFX942-NEXT:    s_setpc_b64 s[30:31]2087  %vec0 = call <4 x half> asm "; def $0", "=v"()2088  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 0, i32 1, i32 1>2089  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 82090  ret void2091}2092 2093define void @v_shuffle_v3f16_v4f16__1_1_1(ptr addrspace(1) inreg %ptr) {2094; GFX900-LABEL: v_shuffle_v3f16_v4f16__1_1_1:2095; GFX900:       ; %bb.0:2096; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2097; GFX900-NEXT:    ;;#ASMSTART2098; GFX900-NEXT:    ; def v[0:1]2099; GFX900-NEXT:    ;;#ASMEND2100; GFX900-NEXT:    s_mov_b32 s4, 0x70603022101; GFX900-NEXT:    v_mov_b32_e32 v2, 02102; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s42103; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v02104; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]2105; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:42106; GFX900-NEXT:    s_waitcnt vmcnt(0)2107; GFX900-NEXT:    s_setpc_b64 s[30:31]2108;2109; GFX90A-LABEL: v_shuffle_v3f16_v4f16__1_1_1:2110; GFX90A:       ; %bb.0:2111; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2112; GFX90A-NEXT:    ;;#ASMSTART2113; GFX90A-NEXT:    ; def v[0:1]2114; GFX90A-NEXT:    ;;#ASMEND2115; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022116; GFX90A-NEXT:    v_mov_b32_e32 v2, 02117; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s42118; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v02119; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]2120; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:42121; GFX90A-NEXT:    s_waitcnt vmcnt(0)2122; GFX90A-NEXT:    s_setpc_b64 s[30:31]2123;2124; GFX942-LABEL: v_shuffle_v3f16_v4f16__1_1_1:2125; GFX942:       ; %bb.0:2126; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2127; GFX942-NEXT:    ;;#ASMSTART2128; GFX942-NEXT:    ; def v[0:1]2129; GFX942-NEXT:    ;;#ASMEND2130; GFX942-NEXT:    s_mov_b32 s2, 0x70603022131; GFX942-NEXT:    v_mov_b32_e32 v2, 02132; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s22133; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v02134; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]2135; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:42136; GFX942-NEXT:    s_waitcnt vmcnt(0)2137; GFX942-NEXT:    s_setpc_b64 s[30:31]2138  %vec0 = call <4 x half> asm "; def $0", "=v"()2139  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 1, i32 1, i32 1>2140  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 82141  ret void2142}2143 2144define void @v_shuffle_v3f16_v4f16__2_1_1(ptr addrspace(1) inreg %ptr) {2145; GFX900-LABEL: v_shuffle_v3f16_v4f16__2_1_1:2146; GFX900:       ; %bb.0:2147; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2148; GFX900-NEXT:    ;;#ASMSTART2149; GFX900-NEXT:    ; def v[0:1]2150; GFX900-NEXT:    ;;#ASMEND2151; GFX900-NEXT:    s_mov_b32 s4, 0xffff2152; GFX900-NEXT:    v_mov_b32_e32 v2, 02153; GFX900-NEXT:    v_bfi_b32 v1, s4, v1, v02154; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v02155; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:42156; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]2157; GFX900-NEXT:    s_waitcnt vmcnt(0)2158; GFX900-NEXT:    s_setpc_b64 s[30:31]2159;2160; GFX90A-LABEL: v_shuffle_v3f16_v4f16__2_1_1:2161; GFX90A:       ; %bb.0:2162; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2163; GFX90A-NEXT:    ;;#ASMSTART2164; GFX90A-NEXT:    ; def v[0:1]2165; GFX90A-NEXT:    ;;#ASMEND2166; GFX90A-NEXT:    s_mov_b32 s4, 0xffff2167; GFX90A-NEXT:    v_mov_b32_e32 v2, 02168; GFX90A-NEXT:    v_bfi_b32 v1, s4, v1, v02169; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v02170; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:42171; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]2172; GFX90A-NEXT:    s_waitcnt vmcnt(0)2173; GFX90A-NEXT:    s_setpc_b64 s[30:31]2174;2175; GFX942-LABEL: v_shuffle_v3f16_v4f16__2_1_1:2176; GFX942:       ; %bb.0:2177; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2178; GFX942-NEXT:    ;;#ASMSTART2179; GFX942-NEXT:    ; def v[0:1]2180; GFX942-NEXT:    ;;#ASMEND2181; GFX942-NEXT:    s_mov_b32 s2, 0xffff2182; GFX942-NEXT:    v_mov_b32_e32 v2, 02183; GFX942-NEXT:    v_bfi_b32 v1, s2, v1, v02184; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v02185; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:42186; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]2187; GFX942-NEXT:    s_waitcnt vmcnt(0)2188; GFX942-NEXT:    s_setpc_b64 s[30:31]2189  %vec0 = call <4 x half> asm "; def $0", "=v"()2190  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 2, i32 1, i32 1>2191  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 82192  ret void2193}2194 2195define void @v_shuffle_v3f16_v4f16__3_1_1(ptr addrspace(1) inreg %ptr) {2196; GFX900-LABEL: v_shuffle_v3f16_v4f16__3_1_1:2197; GFX900:       ; %bb.0:2198; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2199; GFX900-NEXT:    ;;#ASMSTART2200; GFX900-NEXT:    ; def v[0:1]2201; GFX900-NEXT:    ;;#ASMEND2202; GFX900-NEXT:    s_mov_b32 s4, 0x70603022203; GFX900-NEXT:    v_mov_b32_e32 v2, 02204; GFX900-NEXT:    v_perm_b32 v1, v0, v1, s42205; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v02206; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]2207; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:42208; GFX900-NEXT:    s_waitcnt vmcnt(0)2209; GFX900-NEXT:    s_setpc_b64 s[30:31]2210;2211; GFX90A-LABEL: v_shuffle_v3f16_v4f16__3_1_1:2212; GFX90A:       ; %bb.0:2213; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2214; GFX90A-NEXT:    ;;#ASMSTART2215; GFX90A-NEXT:    ; def v[0:1]2216; GFX90A-NEXT:    ;;#ASMEND2217; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022218; GFX90A-NEXT:    v_mov_b32_e32 v2, 02219; GFX90A-NEXT:    v_perm_b32 v1, v0, v1, s42220; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v02221; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]2222; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:42223; GFX90A-NEXT:    s_waitcnt vmcnt(0)2224; GFX90A-NEXT:    s_setpc_b64 s[30:31]2225;2226; GFX942-LABEL: v_shuffle_v3f16_v4f16__3_1_1:2227; GFX942:       ; %bb.0:2228; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2229; GFX942-NEXT:    ;;#ASMSTART2230; GFX942-NEXT:    ; def v[0:1]2231; GFX942-NEXT:    ;;#ASMEND2232; GFX942-NEXT:    s_mov_b32 s2, 0x70603022233; GFX942-NEXT:    v_mov_b32_e32 v2, 02234; GFX942-NEXT:    v_perm_b32 v1, v0, v1, s22235; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v02236; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]2237; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:42238; GFX942-NEXT:    s_waitcnt vmcnt(0)2239; GFX942-NEXT:    s_setpc_b64 s[30:31]2240  %vec0 = call <4 x half> asm "; def $0", "=v"()2241  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 3, i32 1, i32 1>2242  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 82243  ret void2244}2245 2246define void @v_shuffle_v3f16_v4f16__4_1_1(ptr addrspace(1) inreg %ptr) {2247; GFX900-LABEL: v_shuffle_v3f16_v4f16__4_1_1:2248; GFX900:       ; %bb.0:2249; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2250; GFX900-NEXT:    v_mov_b32_e32 v2, 02251; GFX900-NEXT:    ;;#ASMSTART2252; GFX900-NEXT:    ; def v[0:1]2253; GFX900-NEXT:    ;;#ASMEND2254; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]2255; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v02256; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:42257; GFX900-NEXT:    s_waitcnt vmcnt(0)2258; GFX900-NEXT:    s_setpc_b64 s[30:31]2259;2260; GFX90A-LABEL: v_shuffle_v3f16_v4f16__4_1_1:2261; GFX90A:       ; %bb.0:2262; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2263; GFX90A-NEXT:    v_mov_b32_e32 v2, 02264; GFX90A-NEXT:    ;;#ASMSTART2265; GFX90A-NEXT:    ; def v[0:1]2266; GFX90A-NEXT:    ;;#ASMEND2267; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]2268; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v02269; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:42270; GFX90A-NEXT:    s_waitcnt vmcnt(0)2271; GFX90A-NEXT:    s_setpc_b64 s[30:31]2272;2273; GFX942-LABEL: v_shuffle_v3f16_v4f16__4_1_1:2274; GFX942:       ; %bb.0:2275; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2276; GFX942-NEXT:    v_mov_b32_e32 v2, 02277; GFX942-NEXT:    ;;#ASMSTART2278; GFX942-NEXT:    ; def v[0:1]2279; GFX942-NEXT:    ;;#ASMEND2280; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]2281; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v02282; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:42283; GFX942-NEXT:    s_waitcnt vmcnt(0)2284; GFX942-NEXT:    s_setpc_b64 s[30:31]2285  %vec0 = call <4 x half> asm "; def $0", "=v"()2286  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 4, i32 1, i32 1>2287  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 82288  ret void2289}2290 2291define void @v_shuffle_v3f16_v4f16__5_1_1(ptr addrspace(1) inreg %ptr) {2292; GFX900-LABEL: v_shuffle_v3f16_v4f16__5_1_1:2293; GFX900:       ; %bb.0:2294; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2295; GFX900-NEXT:    ;;#ASMSTART2296; GFX900-NEXT:    ; def v[0:1]2297; GFX900-NEXT:    ;;#ASMEND2298; GFX900-NEXT:    ;;#ASMSTART2299; GFX900-NEXT:    ; def v[1:2]2300; GFX900-NEXT:    ;;#ASMEND2301; GFX900-NEXT:    s_mov_b32 s4, 0x70603022302; GFX900-NEXT:    v_mov_b32_e32 v3, 02303; GFX900-NEXT:    v_perm_b32 v1, v0, v1, s42304; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v02305; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]2306; GFX900-NEXT:    global_store_short v3, v0, s[16:17] offset:42307; GFX900-NEXT:    s_waitcnt vmcnt(0)2308; GFX900-NEXT:    s_setpc_b64 s[30:31]2309;2310; GFX90A-LABEL: v_shuffle_v3f16_v4f16__5_1_1:2311; GFX90A:       ; %bb.0:2312; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2313; GFX90A-NEXT:    ;;#ASMSTART2314; GFX90A-NEXT:    ; def v[0:1]2315; GFX90A-NEXT:    ;;#ASMEND2316; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022317; GFX90A-NEXT:    v_mov_b32_e32 v4, 02318; GFX90A-NEXT:    ;;#ASMSTART2319; GFX90A-NEXT:    ; def v[2:3]2320; GFX90A-NEXT:    ;;#ASMEND2321; GFX90A-NEXT:    v_perm_b32 v1, v0, v2, s42322; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v02323; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]2324; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:42325; GFX90A-NEXT:    s_waitcnt vmcnt(0)2326; GFX90A-NEXT:    s_setpc_b64 s[30:31]2327;2328; GFX942-LABEL: v_shuffle_v3f16_v4f16__5_1_1:2329; GFX942:       ; %bb.0:2330; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2331; GFX942-NEXT:    ;;#ASMSTART2332; GFX942-NEXT:    ; def v[0:1]2333; GFX942-NEXT:    ;;#ASMEND2334; GFX942-NEXT:    s_mov_b32 s2, 0x70603022335; GFX942-NEXT:    v_mov_b32_e32 v4, 02336; GFX942-NEXT:    ;;#ASMSTART2337; GFX942-NEXT:    ; def v[2:3]2338; GFX942-NEXT:    ;;#ASMEND2339; GFX942-NEXT:    s_nop 02340; GFX942-NEXT:    v_perm_b32 v1, v0, v2, s22341; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v02342; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]2343; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:42344; GFX942-NEXT:    s_waitcnt vmcnt(0)2345; GFX942-NEXT:    s_setpc_b64 s[30:31]2346  %vec0 = call <4 x half> asm "; def $0", "=v"()2347  %vec1 = call <4 x half> asm "; def $0", "=v"()2348  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 5, i32 1, i32 1>2349  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 82350  ret void2351}2352 2353define void @v_shuffle_v3f16_v4f16__6_1_1(ptr addrspace(1) inreg %ptr) {2354; GFX900-LABEL: v_shuffle_v3f16_v4f16__6_1_1:2355; GFX900:       ; %bb.0:2356; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2357; GFX900-NEXT:    ;;#ASMSTART2358; GFX900-NEXT:    ; def v[0:1]2359; GFX900-NEXT:    ;;#ASMEND2360; GFX900-NEXT:    ;;#ASMSTART2361; GFX900-NEXT:    ; def v[1:2]2362; GFX900-NEXT:    ;;#ASMEND2363; GFX900-NEXT:    s_mov_b32 s4, 0xffff2364; GFX900-NEXT:    v_mov_b32_e32 v3, 02365; GFX900-NEXT:    v_bfi_b32 v1, s4, v2, v02366; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v02367; GFX900-NEXT:    global_store_short v3, v0, s[16:17] offset:42368; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]2369; GFX900-NEXT:    s_waitcnt vmcnt(0)2370; GFX900-NEXT:    s_setpc_b64 s[30:31]2371;2372; GFX90A-LABEL: v_shuffle_v3f16_v4f16__6_1_1:2373; GFX90A:       ; %bb.0:2374; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2375; GFX90A-NEXT:    ;;#ASMSTART2376; GFX90A-NEXT:    ; def v[0:1]2377; GFX90A-NEXT:    ;;#ASMEND2378; GFX90A-NEXT:    s_mov_b32 s4, 0xffff2379; GFX90A-NEXT:    v_mov_b32_e32 v4, 02380; GFX90A-NEXT:    ;;#ASMSTART2381; GFX90A-NEXT:    ; def v[2:3]2382; GFX90A-NEXT:    ;;#ASMEND2383; GFX90A-NEXT:    v_bfi_b32 v1, s4, v3, v02384; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v02385; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:42386; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]2387; GFX90A-NEXT:    s_waitcnt vmcnt(0)2388; GFX90A-NEXT:    s_setpc_b64 s[30:31]2389;2390; GFX942-LABEL: v_shuffle_v3f16_v4f16__6_1_1:2391; GFX942:       ; %bb.0:2392; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2393; GFX942-NEXT:    ;;#ASMSTART2394; GFX942-NEXT:    ; def v[0:1]2395; GFX942-NEXT:    ;;#ASMEND2396; GFX942-NEXT:    s_mov_b32 s2, 0xffff2397; GFX942-NEXT:    v_mov_b32_e32 v4, 02398; GFX942-NEXT:    ;;#ASMSTART2399; GFX942-NEXT:    ; def v[2:3]2400; GFX942-NEXT:    ;;#ASMEND2401; GFX942-NEXT:    s_nop 02402; GFX942-NEXT:    v_bfi_b32 v1, s2, v3, v02403; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v02404; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:42405; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]2406; GFX942-NEXT:    s_waitcnt vmcnt(0)2407; GFX942-NEXT:    s_setpc_b64 s[30:31]2408  %vec0 = call <4 x half> asm "; def $0", "=v"()2409  %vec1 = call <4 x half> asm "; def $0", "=v"()2410  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 6, i32 1, i32 1>2411  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 82412  ret void2413}2414 2415define void @v_shuffle_v3f16_v4f16__7_1_1(ptr addrspace(1) inreg %ptr) {2416; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_1_1:2417; GFX900:       ; %bb.0:2418; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2419; GFX900-NEXT:    ;;#ASMSTART2420; GFX900-NEXT:    ; def v[0:1]2421; GFX900-NEXT:    ;;#ASMEND2422; GFX900-NEXT:    ;;#ASMSTART2423; GFX900-NEXT:    ; def v[1:2]2424; GFX900-NEXT:    ;;#ASMEND2425; GFX900-NEXT:    s_mov_b32 s4, 0x70603022426; GFX900-NEXT:    v_mov_b32_e32 v3, 02427; GFX900-NEXT:    v_perm_b32 v1, v0, v2, s42428; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v02429; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]2430; GFX900-NEXT:    global_store_short v3, v0, s[16:17] offset:42431; GFX900-NEXT:    s_waitcnt vmcnt(0)2432; GFX900-NEXT:    s_setpc_b64 s[30:31]2433;2434; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_1_1:2435; GFX90A:       ; %bb.0:2436; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2437; GFX90A-NEXT:    ;;#ASMSTART2438; GFX90A-NEXT:    ; def v[0:1]2439; GFX90A-NEXT:    ;;#ASMEND2440; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022441; GFX90A-NEXT:    v_mov_b32_e32 v4, 02442; GFX90A-NEXT:    ;;#ASMSTART2443; GFX90A-NEXT:    ; def v[2:3]2444; GFX90A-NEXT:    ;;#ASMEND2445; GFX90A-NEXT:    v_perm_b32 v1, v0, v3, s42446; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v02447; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]2448; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:42449; GFX90A-NEXT:    s_waitcnt vmcnt(0)2450; GFX90A-NEXT:    s_setpc_b64 s[30:31]2451;2452; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_1_1:2453; GFX942:       ; %bb.0:2454; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2455; GFX942-NEXT:    ;;#ASMSTART2456; GFX942-NEXT:    ; def v[0:1]2457; GFX942-NEXT:    ;;#ASMEND2458; GFX942-NEXT:    s_mov_b32 s2, 0x70603022459; GFX942-NEXT:    v_mov_b32_e32 v4, 02460; GFX942-NEXT:    ;;#ASMSTART2461; GFX942-NEXT:    ; def v[2:3]2462; GFX942-NEXT:    ;;#ASMEND2463; GFX942-NEXT:    s_nop 02464; GFX942-NEXT:    v_perm_b32 v1, v0, v3, s22465; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v02466; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]2467; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:42468; GFX942-NEXT:    s_waitcnt vmcnt(0)2469; GFX942-NEXT:    s_setpc_b64 s[30:31]2470  %vec0 = call <4 x half> asm "; def $0", "=v"()2471  %vec1 = call <4 x half> asm "; def $0", "=v"()2472  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 1, i32 1>2473  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 82474  ret void2475}2476 2477define void @v_shuffle_v3f16_v4f16__7_u_1(ptr addrspace(1) inreg %ptr) {2478; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_u_1:2479; GFX900:       ; %bb.0:2480; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2481; GFX900-NEXT:    ;;#ASMSTART2482; GFX900-NEXT:    ; def v[0:1]2483; GFX900-NEXT:    ;;#ASMEND2484; GFX900-NEXT:    v_mov_b32_e32 v3, 02485; GFX900-NEXT:    ;;#ASMSTART2486; GFX900-NEXT:    ; def v[1:2]2487; GFX900-NEXT:    ;;#ASMEND2488; GFX900-NEXT:    v_alignbit_b32 v1, s4, v2, 162489; GFX900-NEXT:    global_store_short_d16_hi v3, v0, s[16:17] offset:42490; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]2491; GFX900-NEXT:    s_waitcnt vmcnt(0)2492; GFX900-NEXT:    s_setpc_b64 s[30:31]2493;2494; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_u_1:2495; GFX90A:       ; %bb.0:2496; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2497; GFX90A-NEXT:    v_mov_b32_e32 v4, 02498; GFX90A-NEXT:    ;;#ASMSTART2499; GFX90A-NEXT:    ; def v[0:1]2500; GFX90A-NEXT:    ;;#ASMEND2501; GFX90A-NEXT:    ;;#ASMSTART2502; GFX90A-NEXT:    ; def v[2:3]2503; GFX90A-NEXT:    ;;#ASMEND2504; GFX90A-NEXT:    v_alignbit_b32 v1, s4, v3, 162505; GFX90A-NEXT:    global_store_short_d16_hi v4, v0, s[16:17] offset:42506; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]2507; GFX90A-NEXT:    s_waitcnt vmcnt(0)2508; GFX90A-NEXT:    s_setpc_b64 s[30:31]2509;2510; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_u_1:2511; GFX942:       ; %bb.0:2512; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2513; GFX942-NEXT:    v_mov_b32_e32 v4, 02514; GFX942-NEXT:    ;;#ASMSTART2515; GFX942-NEXT:    ; def v[0:1]2516; GFX942-NEXT:    ;;#ASMEND2517; GFX942-NEXT:    ;;#ASMSTART2518; GFX942-NEXT:    ; def v[2:3]2519; GFX942-NEXT:    ;;#ASMEND2520; GFX942-NEXT:    s_nop 02521; GFX942-NEXT:    v_alignbit_b32 v1, s0, v3, 162522; GFX942-NEXT:    global_store_short_d16_hi v4, v0, s[0:1] offset:42523; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]2524; GFX942-NEXT:    s_waitcnt vmcnt(0)2525; GFX942-NEXT:    s_setpc_b64 s[30:31]2526  %vec0 = call <4 x half> asm "; def $0", "=v"()2527  %vec1 = call <4 x half> asm "; def $0", "=v"()2528  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 poison, i32 1>2529  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 82530  ret void2531}2532 2533define void @v_shuffle_v3f16_v4f16__7_0_1(ptr addrspace(1) inreg %ptr) {2534; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_0_1:2535; GFX900:       ; %bb.0:2536; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2537; GFX900-NEXT:    ;;#ASMSTART2538; GFX900-NEXT:    ; def v[0:1]2539; GFX900-NEXT:    ;;#ASMEND2540; GFX900-NEXT:    v_mov_b32_e32 v3, 02541; GFX900-NEXT:    ;;#ASMSTART2542; GFX900-NEXT:    ; def v[1:2]2543; GFX900-NEXT:    ;;#ASMEND2544; GFX900-NEXT:    v_alignbit_b32 v1, v0, v2, 162545; GFX900-NEXT:    global_store_short_d16_hi v3, v0, s[16:17] offset:42546; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]2547; GFX900-NEXT:    s_waitcnt vmcnt(0)2548; GFX900-NEXT:    s_setpc_b64 s[30:31]2549;2550; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_0_1:2551; GFX90A:       ; %bb.0:2552; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2553; GFX90A-NEXT:    v_mov_b32_e32 v4, 02554; GFX90A-NEXT:    ;;#ASMSTART2555; GFX90A-NEXT:    ; def v[0:1]2556; GFX90A-NEXT:    ;;#ASMEND2557; GFX90A-NEXT:    ;;#ASMSTART2558; GFX90A-NEXT:    ; def v[2:3]2559; GFX90A-NEXT:    ;;#ASMEND2560; GFX90A-NEXT:    v_alignbit_b32 v1, v0, v3, 162561; GFX90A-NEXT:    global_store_short_d16_hi v4, v0, s[16:17] offset:42562; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]2563; GFX90A-NEXT:    s_waitcnt vmcnt(0)2564; GFX90A-NEXT:    s_setpc_b64 s[30:31]2565;2566; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_0_1:2567; GFX942:       ; %bb.0:2568; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2569; GFX942-NEXT:    v_mov_b32_e32 v4, 02570; GFX942-NEXT:    ;;#ASMSTART2571; GFX942-NEXT:    ; def v[0:1]2572; GFX942-NEXT:    ;;#ASMEND2573; GFX942-NEXT:    ;;#ASMSTART2574; GFX942-NEXT:    ; def v[2:3]2575; GFX942-NEXT:    ;;#ASMEND2576; GFX942-NEXT:    s_nop 02577; GFX942-NEXT:    v_alignbit_b32 v1, v0, v3, 162578; GFX942-NEXT:    global_store_short_d16_hi v4, v0, s[0:1] offset:42579; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]2580; GFX942-NEXT:    s_waitcnt vmcnt(0)2581; GFX942-NEXT:    s_setpc_b64 s[30:31]2582  %vec0 = call <4 x half> asm "; def $0", "=v"()2583  %vec1 = call <4 x half> asm "; def $0", "=v"()2584  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 0, i32 1>2585  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 82586  ret void2587}2588 2589define void @v_shuffle_v3f16_v4f16__7_2_1(ptr addrspace(1) inreg %ptr) {2590; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_2_1:2591; GFX900:       ; %bb.0:2592; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2593; GFX900-NEXT:    v_mov_b32_e32 v4, 02594; GFX900-NEXT:    ;;#ASMSTART2595; GFX900-NEXT:    ; def v[0:1]2596; GFX900-NEXT:    ;;#ASMEND2597; GFX900-NEXT:    ;;#ASMSTART2598; GFX900-NEXT:    ; def v[2:3]2599; GFX900-NEXT:    ;;#ASMEND2600; GFX900-NEXT:    v_alignbit_b32 v1, v1, v3, 162601; GFX900-NEXT:    global_store_short_d16_hi v4, v0, s[16:17] offset:42602; GFX900-NEXT:    global_store_dword v4, v1, s[16:17]2603; GFX900-NEXT:    s_waitcnt vmcnt(0)2604; GFX900-NEXT:    s_setpc_b64 s[30:31]2605;2606; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_2_1:2607; GFX90A:       ; %bb.0:2608; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2609; GFX90A-NEXT:    v_mov_b32_e32 v4, 02610; GFX90A-NEXT:    ;;#ASMSTART2611; GFX90A-NEXT:    ; def v[0:1]2612; GFX90A-NEXT:    ;;#ASMEND2613; GFX90A-NEXT:    ;;#ASMSTART2614; GFX90A-NEXT:    ; def v[2:3]2615; GFX90A-NEXT:    ;;#ASMEND2616; GFX90A-NEXT:    v_alignbit_b32 v1, v1, v3, 162617; GFX90A-NEXT:    global_store_short_d16_hi v4, v0, s[16:17] offset:42618; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]2619; GFX90A-NEXT:    s_waitcnt vmcnt(0)2620; GFX90A-NEXT:    s_setpc_b64 s[30:31]2621;2622; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_2_1:2623; GFX942:       ; %bb.0:2624; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2625; GFX942-NEXT:    v_mov_b32_e32 v4, 02626; GFX942-NEXT:    ;;#ASMSTART2627; GFX942-NEXT:    ; def v[0:1]2628; GFX942-NEXT:    ;;#ASMEND2629; GFX942-NEXT:    ;;#ASMSTART2630; GFX942-NEXT:    ; def v[2:3]2631; GFX942-NEXT:    ;;#ASMEND2632; GFX942-NEXT:    s_nop 02633; GFX942-NEXT:    v_alignbit_b32 v1, v1, v3, 162634; GFX942-NEXT:    global_store_short_d16_hi v4, v0, s[0:1] offset:42635; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]2636; GFX942-NEXT:    s_waitcnt vmcnt(0)2637; GFX942-NEXT:    s_setpc_b64 s[30:31]2638  %vec0 = call <4 x half> asm "; def $0", "=v"()2639  %vec1 = call <4 x half> asm "; def $0", "=v"()2640  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 2, i32 1>2641  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 82642  ret void2643}2644 2645define void @v_shuffle_v3f16_v4f16__7_3_1(ptr addrspace(1) inreg %ptr) {2646; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_3_1:2647; GFX900:       ; %bb.0:2648; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2649; GFX900-NEXT:    v_mov_b32_e32 v4, 02650; GFX900-NEXT:    ;;#ASMSTART2651; GFX900-NEXT:    ; def v[0:1]2652; GFX900-NEXT:    ;;#ASMEND2653; GFX900-NEXT:    s_mov_b32 s4, 0x70603022654; GFX900-NEXT:    ;;#ASMSTART2655; GFX900-NEXT:    ; def v[2:3]2656; GFX900-NEXT:    ;;#ASMEND2657; GFX900-NEXT:    v_perm_b32 v1, v1, v3, s42658; GFX900-NEXT:    global_store_short_d16_hi v4, v0, s[16:17] offset:42659; GFX900-NEXT:    global_store_dword v4, v1, s[16:17]2660; GFX900-NEXT:    s_waitcnt vmcnt(0)2661; GFX900-NEXT:    s_setpc_b64 s[30:31]2662;2663; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_3_1:2664; GFX90A:       ; %bb.0:2665; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2666; GFX90A-NEXT:    v_mov_b32_e32 v4, 02667; GFX90A-NEXT:    ;;#ASMSTART2668; GFX90A-NEXT:    ; def v[0:1]2669; GFX90A-NEXT:    ;;#ASMEND2670; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022671; GFX90A-NEXT:    ;;#ASMSTART2672; GFX90A-NEXT:    ; def v[2:3]2673; GFX90A-NEXT:    ;;#ASMEND2674; GFX90A-NEXT:    v_perm_b32 v1, v1, v3, s42675; GFX90A-NEXT:    global_store_short_d16_hi v4, v0, s[16:17] offset:42676; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]2677; GFX90A-NEXT:    s_waitcnt vmcnt(0)2678; GFX90A-NEXT:    s_setpc_b64 s[30:31]2679;2680; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_3_1:2681; GFX942:       ; %bb.0:2682; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2683; GFX942-NEXT:    v_mov_b32_e32 v4, 02684; GFX942-NEXT:    ;;#ASMSTART2685; GFX942-NEXT:    ; def v[0:1]2686; GFX942-NEXT:    ;;#ASMEND2687; GFX942-NEXT:    s_mov_b32 s2, 0x70603022688; GFX942-NEXT:    ;;#ASMSTART2689; GFX942-NEXT:    ; def v[2:3]2690; GFX942-NEXT:    ;;#ASMEND2691; GFX942-NEXT:    s_nop 02692; GFX942-NEXT:    v_perm_b32 v1, v1, v3, s22693; GFX942-NEXT:    global_store_short_d16_hi v4, v0, s[0:1] offset:42694; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]2695; GFX942-NEXT:    s_waitcnt vmcnt(0)2696; GFX942-NEXT:    s_setpc_b64 s[30:31]2697  %vec0 = call <4 x half> asm "; def $0", "=v"()2698  %vec1 = call <4 x half> asm "; def $0", "=v"()2699  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 3, i32 1>2700  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 82701  ret void2702}2703 2704define void @v_shuffle_v3f16_v4f16__7_4_1(ptr addrspace(1) inreg %ptr) {2705; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_4_1:2706; GFX900:       ; %bb.0:2707; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2708; GFX900-NEXT:    ;;#ASMSTART2709; GFX900-NEXT:    ; def v[0:1]2710; GFX900-NEXT:    ;;#ASMEND2711; GFX900-NEXT:    v_mov_b32_e32 v3, 02712; GFX900-NEXT:    ;;#ASMSTART2713; GFX900-NEXT:    ; def v[1:2]2714; GFX900-NEXT:    ;;#ASMEND2715; GFX900-NEXT:    v_alignbit_b32 v1, v1, v2, 162716; GFX900-NEXT:    global_store_short_d16_hi v3, v0, s[16:17] offset:42717; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]2718; GFX900-NEXT:    s_waitcnt vmcnt(0)2719; GFX900-NEXT:    s_setpc_b64 s[30:31]2720;2721; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_4_1:2722; GFX90A:       ; %bb.0:2723; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2724; GFX90A-NEXT:    v_mov_b32_e32 v4, 02725; GFX90A-NEXT:    ;;#ASMSTART2726; GFX90A-NEXT:    ; def v[0:1]2727; GFX90A-NEXT:    ;;#ASMEND2728; GFX90A-NEXT:    ;;#ASMSTART2729; GFX90A-NEXT:    ; def v[2:3]2730; GFX90A-NEXT:    ;;#ASMEND2731; GFX90A-NEXT:    v_alignbit_b32 v1, v2, v3, 162732; GFX90A-NEXT:    global_store_short_d16_hi v4, v0, s[16:17] offset:42733; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]2734; GFX90A-NEXT:    s_waitcnt vmcnt(0)2735; GFX90A-NEXT:    s_setpc_b64 s[30:31]2736;2737; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_4_1:2738; GFX942:       ; %bb.0:2739; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2740; GFX942-NEXT:    v_mov_b32_e32 v4, 02741; GFX942-NEXT:    ;;#ASMSTART2742; GFX942-NEXT:    ; def v[0:1]2743; GFX942-NEXT:    ;;#ASMEND2744; GFX942-NEXT:    ;;#ASMSTART2745; GFX942-NEXT:    ; def v[2:3]2746; GFX942-NEXT:    ;;#ASMEND2747; GFX942-NEXT:    s_nop 02748; GFX942-NEXT:    v_alignbit_b32 v1, v2, v3, 162749; GFX942-NEXT:    global_store_short_d16_hi v4, v0, s[0:1] offset:42750; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]2751; GFX942-NEXT:    s_waitcnt vmcnt(0)2752; GFX942-NEXT:    s_setpc_b64 s[30:31]2753  %vec0 = call <4 x half> asm "; def $0", "=v"()2754  %vec1 = call <4 x half> asm "; def $0", "=v"()2755  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 4, i32 1>2756  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 82757  ret void2758}2759 2760define void @v_shuffle_v3f16_v4f16__7_5_1(ptr addrspace(1) inreg %ptr) {2761; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_5_1:2762; GFX900:       ; %bb.0:2763; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2764; GFX900-NEXT:    ;;#ASMSTART2765; GFX900-NEXT:    ; def v[0:1]2766; GFX900-NEXT:    ;;#ASMEND2767; GFX900-NEXT:    v_mov_b32_e32 v3, 02768; GFX900-NEXT:    ;;#ASMSTART2769; GFX900-NEXT:    ; def v[1:2]2770; GFX900-NEXT:    ;;#ASMEND2771; GFX900-NEXT:    s_mov_b32 s4, 0x70603022772; GFX900-NEXT:    v_perm_b32 v1, v1, v2, s42773; GFX900-NEXT:    global_store_short_d16_hi v3, v0, s[16:17] offset:42774; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]2775; GFX900-NEXT:    s_waitcnt vmcnt(0)2776; GFX900-NEXT:    s_setpc_b64 s[30:31]2777;2778; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_5_1:2779; GFX90A:       ; %bb.0:2780; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2781; GFX90A-NEXT:    v_mov_b32_e32 v4, 02782; GFX90A-NEXT:    ;;#ASMSTART2783; GFX90A-NEXT:    ; def v[0:1]2784; GFX90A-NEXT:    ;;#ASMEND2785; GFX90A-NEXT:    s_mov_b32 s4, 0x70603022786; GFX90A-NEXT:    ;;#ASMSTART2787; GFX90A-NEXT:    ; def v[2:3]2788; GFX90A-NEXT:    ;;#ASMEND2789; GFX90A-NEXT:    v_perm_b32 v1, v2, v3, s42790; GFX90A-NEXT:    global_store_short_d16_hi v4, v0, s[16:17] offset:42791; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]2792; GFX90A-NEXT:    s_waitcnt vmcnt(0)2793; GFX90A-NEXT:    s_setpc_b64 s[30:31]2794;2795; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_5_1:2796; GFX942:       ; %bb.0:2797; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2798; GFX942-NEXT:    v_mov_b32_e32 v4, 02799; GFX942-NEXT:    ;;#ASMSTART2800; GFX942-NEXT:    ; def v[0:1]2801; GFX942-NEXT:    ;;#ASMEND2802; GFX942-NEXT:    s_mov_b32 s2, 0x70603022803; GFX942-NEXT:    ;;#ASMSTART2804; GFX942-NEXT:    ; def v[2:3]2805; GFX942-NEXT:    ;;#ASMEND2806; GFX942-NEXT:    s_nop 02807; GFX942-NEXT:    v_perm_b32 v1, v2, v3, s22808; GFX942-NEXT:    global_store_short_d16_hi v4, v0, s[0:1] offset:42809; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]2810; GFX942-NEXT:    s_waitcnt vmcnt(0)2811; GFX942-NEXT:    s_setpc_b64 s[30:31]2812  %vec0 = call <4 x half> asm "; def $0", "=v"()2813  %vec1 = call <4 x half> asm "; def $0", "=v"()2814  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 5, i32 1>2815  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 82816  ret void2817}2818 2819define void @v_shuffle_v3f16_v4f16__7_6_1(ptr addrspace(1) inreg %ptr) {2820; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_6_1:2821; GFX900:       ; %bb.0:2822; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2823; GFX900-NEXT:    ;;#ASMSTART2824; GFX900-NEXT:    ; def v[0:1]2825; GFX900-NEXT:    ;;#ASMEND2826; GFX900-NEXT:    v_mov_b32_e32 v3, 02827; GFX900-NEXT:    ;;#ASMSTART2828; GFX900-NEXT:    ; def v[1:2]2829; GFX900-NEXT:    ;;#ASMEND2830; GFX900-NEXT:    v_alignbit_b32 v1, v2, v2, 162831; GFX900-NEXT:    global_store_short_d16_hi v3, v0, s[16:17] offset:42832; GFX900-NEXT:    global_store_dword v3, v1, s[16:17]2833; GFX900-NEXT:    s_waitcnt vmcnt(0)2834; GFX900-NEXT:    s_setpc_b64 s[30:31]2835;2836; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_6_1:2837; GFX90A:       ; %bb.0:2838; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2839; GFX90A-NEXT:    v_mov_b32_e32 v4, 02840; GFX90A-NEXT:    ;;#ASMSTART2841; GFX90A-NEXT:    ; def v[0:1]2842; GFX90A-NEXT:    ;;#ASMEND2843; GFX90A-NEXT:    ;;#ASMSTART2844; GFX90A-NEXT:    ; def v[2:3]2845; GFX90A-NEXT:    ;;#ASMEND2846; GFX90A-NEXT:    v_alignbit_b32 v1, v3, v3, 162847; GFX90A-NEXT:    global_store_short_d16_hi v4, v0, s[16:17] offset:42848; GFX90A-NEXT:    global_store_dword v4, v1, s[16:17]2849; GFX90A-NEXT:    s_waitcnt vmcnt(0)2850; GFX90A-NEXT:    s_setpc_b64 s[30:31]2851;2852; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_6_1:2853; GFX942:       ; %bb.0:2854; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2855; GFX942-NEXT:    v_mov_b32_e32 v4, 02856; GFX942-NEXT:    ;;#ASMSTART2857; GFX942-NEXT:    ; def v[0:1]2858; GFX942-NEXT:    ;;#ASMEND2859; GFX942-NEXT:    ;;#ASMSTART2860; GFX942-NEXT:    ; def v[2:3]2861; GFX942-NEXT:    ;;#ASMEND2862; GFX942-NEXT:    s_nop 02863; GFX942-NEXT:    v_alignbit_b32 v1, v3, v3, 162864; GFX942-NEXT:    global_store_short_d16_hi v4, v0, s[0:1] offset:42865; GFX942-NEXT:    global_store_dword v4, v1, s[0:1]2866; GFX942-NEXT:    s_waitcnt vmcnt(0)2867; GFX942-NEXT:    s_setpc_b64 s[30:31]2868  %vec0 = call <4 x half> asm "; def $0", "=v"()2869  %vec1 = call <4 x half> asm "; def $0", "=v"()2870  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 6, i32 1>2871  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 82872  ret void2873}2874 2875define void @v_shuffle_v3f16_v4f16__u_2_2(ptr addrspace(1) inreg %ptr) {2876; GFX900-LABEL: v_shuffle_v3f16_v4f16__u_2_2:2877; GFX900:       ; %bb.0:2878; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2879; GFX900-NEXT:    v_mov_b32_e32 v2, 02880; GFX900-NEXT:    ;;#ASMSTART2881; GFX900-NEXT:    ; def v[0:1]2882; GFX900-NEXT:    ;;#ASMEND2883; GFX900-NEXT:    v_lshlrev_b32_e32 v0, 16, v12884; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:42885; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]2886; GFX900-NEXT:    s_waitcnt vmcnt(0)2887; GFX900-NEXT:    s_setpc_b64 s[30:31]2888;2889; GFX90A-LABEL: v_shuffle_v3f16_v4f16__u_2_2:2890; GFX90A:       ; %bb.0:2891; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2892; GFX90A-NEXT:    v_mov_b32_e32 v2, 02893; GFX90A-NEXT:    ;;#ASMSTART2894; GFX90A-NEXT:    ; def v[0:1]2895; GFX90A-NEXT:    ;;#ASMEND2896; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 16, v12897; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:42898; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]2899; GFX90A-NEXT:    s_waitcnt vmcnt(0)2900; GFX90A-NEXT:    s_setpc_b64 s[30:31]2901;2902; GFX942-LABEL: v_shuffle_v3f16_v4f16__u_2_2:2903; GFX942:       ; %bb.0:2904; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2905; GFX942-NEXT:    v_mov_b32_e32 v2, 02906; GFX942-NEXT:    ;;#ASMSTART2907; GFX942-NEXT:    ; def v[0:1]2908; GFX942-NEXT:    ;;#ASMEND2909; GFX942-NEXT:    s_nop 02910; GFX942-NEXT:    v_lshlrev_b32_e32 v0, 16, v12911; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:42912; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]2913; GFX942-NEXT:    s_waitcnt vmcnt(0)2914; GFX942-NEXT:    s_setpc_b64 s[30:31]2915  %vec0 = call <4 x half> asm "; def $0", "=v"()2916  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 poison, i32 2, i32 2>2917  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 82918  ret void2919}2920 2921define void @v_shuffle_v3f16_v4f16__0_2_2(ptr addrspace(1) inreg %ptr) {2922; GFX900-LABEL: v_shuffle_v3f16_v4f16__0_2_2:2923; GFX900:       ; %bb.0:2924; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2925; GFX900-NEXT:    v_mov_b32_e32 v2, 02926; GFX900-NEXT:    ;;#ASMSTART2927; GFX900-NEXT:    ; def v[0:1]2928; GFX900-NEXT:    ;;#ASMEND2929; GFX900-NEXT:    s_mov_b32 s4, 0x50401002930; GFX900-NEXT:    v_perm_b32 v0, v1, v0, s42931; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:42932; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]2933; GFX900-NEXT:    s_waitcnt vmcnt(0)2934; GFX900-NEXT:    s_setpc_b64 s[30:31]2935;2936; GFX90A-LABEL: v_shuffle_v3f16_v4f16__0_2_2:2937; GFX90A:       ; %bb.0:2938; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2939; GFX90A-NEXT:    v_mov_b32_e32 v2, 02940; GFX90A-NEXT:    ;;#ASMSTART2941; GFX90A-NEXT:    ; def v[0:1]2942; GFX90A-NEXT:    ;;#ASMEND2943; GFX90A-NEXT:    s_mov_b32 s4, 0x50401002944; GFX90A-NEXT:    v_perm_b32 v0, v1, v0, s42945; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:42946; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]2947; GFX90A-NEXT:    s_waitcnt vmcnt(0)2948; GFX90A-NEXT:    s_setpc_b64 s[30:31]2949;2950; GFX942-LABEL: v_shuffle_v3f16_v4f16__0_2_2:2951; GFX942:       ; %bb.0:2952; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2953; GFX942-NEXT:    v_mov_b32_e32 v2, 02954; GFX942-NEXT:    ;;#ASMSTART2955; GFX942-NEXT:    ; def v[0:1]2956; GFX942-NEXT:    ;;#ASMEND2957; GFX942-NEXT:    s_mov_b32 s2, 0x50401002958; GFX942-NEXT:    v_perm_b32 v0, v1, v0, s22959; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:42960; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]2961; GFX942-NEXT:    s_waitcnt vmcnt(0)2962; GFX942-NEXT:    s_setpc_b64 s[30:31]2963  %vec0 = call <4 x half> asm "; def $0", "=v"()2964  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 0, i32 2, i32 2>2965  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 82966  ret void2967}2968 2969define void @v_shuffle_v3f16_v4f16__1_2_2(ptr addrspace(1) inreg %ptr) {2970; GFX900-LABEL: v_shuffle_v3f16_v4f16__1_2_2:2971; GFX900:       ; %bb.0:2972; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2973; GFX900-NEXT:    v_mov_b32_e32 v2, 02974; GFX900-NEXT:    ;;#ASMSTART2975; GFX900-NEXT:    ; def v[0:1]2976; GFX900-NEXT:    ;;#ASMEND2977; GFX900-NEXT:    v_alignbit_b32 v0, v1, v0, 162978; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:42979; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]2980; GFX900-NEXT:    s_waitcnt vmcnt(0)2981; GFX900-NEXT:    s_setpc_b64 s[30:31]2982;2983; GFX90A-LABEL: v_shuffle_v3f16_v4f16__1_2_2:2984; GFX90A:       ; %bb.0:2985; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2986; GFX90A-NEXT:    v_mov_b32_e32 v2, 02987; GFX90A-NEXT:    ;;#ASMSTART2988; GFX90A-NEXT:    ; def v[0:1]2989; GFX90A-NEXT:    ;;#ASMEND2990; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v0, 162991; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:42992; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]2993; GFX90A-NEXT:    s_waitcnt vmcnt(0)2994; GFX90A-NEXT:    s_setpc_b64 s[30:31]2995;2996; GFX942-LABEL: v_shuffle_v3f16_v4f16__1_2_2:2997; GFX942:       ; %bb.0:2998; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2999; GFX942-NEXT:    v_mov_b32_e32 v2, 03000; GFX942-NEXT:    ;;#ASMSTART3001; GFX942-NEXT:    ; def v[0:1]3002; GFX942-NEXT:    ;;#ASMEND3003; GFX942-NEXT:    s_nop 03004; GFX942-NEXT:    v_alignbit_b32 v0, v1, v0, 163005; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:43006; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]3007; GFX942-NEXT:    s_waitcnt vmcnt(0)3008; GFX942-NEXT:    s_setpc_b64 s[30:31]3009  %vec0 = call <4 x half> asm "; def $0", "=v"()3010  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 1, i32 2, i32 2>3011  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 83012  ret void3013}3014 3015define void @v_shuffle_v3f16_v4f16__2_2_2(ptr addrspace(1) inreg %ptr) {3016; GFX900-LABEL: v_shuffle_v3f16_v4f16__2_2_2:3017; GFX900:       ; %bb.0:3018; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3019; GFX900-NEXT:    v_mov_b32_e32 v2, 03020; GFX900-NEXT:    ;;#ASMSTART3021; GFX900-NEXT:    ; def v[0:1]3022; GFX900-NEXT:    ;;#ASMEND3023; GFX900-NEXT:    s_mov_b32 s4, 0x50401003024; GFX900-NEXT:    v_perm_b32 v0, v1, v1, s43025; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:43026; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]3027; GFX900-NEXT:    s_waitcnt vmcnt(0)3028; GFX900-NEXT:    s_setpc_b64 s[30:31]3029;3030; GFX90A-LABEL: v_shuffle_v3f16_v4f16__2_2_2:3031; GFX90A:       ; %bb.0:3032; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3033; GFX90A-NEXT:    v_mov_b32_e32 v2, 03034; GFX90A-NEXT:    ;;#ASMSTART3035; GFX90A-NEXT:    ; def v[0:1]3036; GFX90A-NEXT:    ;;#ASMEND3037; GFX90A-NEXT:    s_mov_b32 s4, 0x50401003038; GFX90A-NEXT:    v_perm_b32 v0, v1, v1, s43039; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:43040; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]3041; GFX90A-NEXT:    s_waitcnt vmcnt(0)3042; GFX90A-NEXT:    s_setpc_b64 s[30:31]3043;3044; GFX942-LABEL: v_shuffle_v3f16_v4f16__2_2_2:3045; GFX942:       ; %bb.0:3046; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3047; GFX942-NEXT:    v_mov_b32_e32 v2, 03048; GFX942-NEXT:    ;;#ASMSTART3049; GFX942-NEXT:    ; def v[0:1]3050; GFX942-NEXT:    ;;#ASMEND3051; GFX942-NEXT:    s_mov_b32 s2, 0x50401003052; GFX942-NEXT:    v_perm_b32 v0, v1, v1, s23053; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:43054; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]3055; GFX942-NEXT:    s_waitcnt vmcnt(0)3056; GFX942-NEXT:    s_setpc_b64 s[30:31]3057  %vec0 = call <4 x half> asm "; def $0", "=v"()3058  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 2, i32 2, i32 2>3059  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 83060  ret void3061}3062 3063define void @v_shuffle_v3f16_v4f16__3_2_2(ptr addrspace(1) inreg %ptr) {3064; GFX900-LABEL: v_shuffle_v3f16_v4f16__3_2_2:3065; GFX900:       ; %bb.0:3066; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3067; GFX900-NEXT:    v_mov_b32_e32 v2, 03068; GFX900-NEXT:    ;;#ASMSTART3069; GFX900-NEXT:    ; def v[0:1]3070; GFX900-NEXT:    ;;#ASMEND3071; GFX900-NEXT:    v_alignbit_b32 v0, v1, v1, 163072; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:43073; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]3074; GFX900-NEXT:    s_waitcnt vmcnt(0)3075; GFX900-NEXT:    s_setpc_b64 s[30:31]3076;3077; GFX90A-LABEL: v_shuffle_v3f16_v4f16__3_2_2:3078; GFX90A:       ; %bb.0:3079; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3080; GFX90A-NEXT:    v_mov_b32_e32 v2, 03081; GFX90A-NEXT:    ;;#ASMSTART3082; GFX90A-NEXT:    ; def v[0:1]3083; GFX90A-NEXT:    ;;#ASMEND3084; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v1, 163085; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:43086; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]3087; GFX90A-NEXT:    s_waitcnt vmcnt(0)3088; GFX90A-NEXT:    s_setpc_b64 s[30:31]3089;3090; GFX942-LABEL: v_shuffle_v3f16_v4f16__3_2_2:3091; GFX942:       ; %bb.0:3092; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3093; GFX942-NEXT:    v_mov_b32_e32 v2, 03094; GFX942-NEXT:    ;;#ASMSTART3095; GFX942-NEXT:    ; def v[0:1]3096; GFX942-NEXT:    ;;#ASMEND3097; GFX942-NEXT:    s_nop 03098; GFX942-NEXT:    v_alignbit_b32 v0, v1, v1, 163099; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:43100; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]3101; GFX942-NEXT:    s_waitcnt vmcnt(0)3102; GFX942-NEXT:    s_setpc_b64 s[30:31]3103  %vec0 = call <4 x half> asm "; def $0", "=v"()3104  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 3, i32 2, i32 2>3105  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 83106  ret void3107}3108 3109define void @v_shuffle_v3f16_v4f16__4_2_2(ptr addrspace(1) inreg %ptr) {3110; GFX900-LABEL: v_shuffle_v3f16_v4f16__4_2_2:3111; GFX900:       ; %bb.0:3112; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3113; GFX900-NEXT:    v_mov_b32_e32 v2, 03114; GFX900-NEXT:    ;;#ASMSTART3115; GFX900-NEXT:    ; def v[0:1]3116; GFX900-NEXT:    ;;#ASMEND3117; GFX900-NEXT:    v_lshlrev_b32_e32 v0, 16, v13118; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:43119; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]3120; GFX900-NEXT:    s_waitcnt vmcnt(0)3121; GFX900-NEXT:    s_setpc_b64 s[30:31]3122;3123; GFX90A-LABEL: v_shuffle_v3f16_v4f16__4_2_2:3124; GFX90A:       ; %bb.0:3125; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3126; GFX90A-NEXT:    v_mov_b32_e32 v2, 03127; GFX90A-NEXT:    ;;#ASMSTART3128; GFX90A-NEXT:    ; def v[0:1]3129; GFX90A-NEXT:    ;;#ASMEND3130; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 16, v13131; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:43132; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]3133; GFX90A-NEXT:    s_waitcnt vmcnt(0)3134; GFX90A-NEXT:    s_setpc_b64 s[30:31]3135;3136; GFX942-LABEL: v_shuffle_v3f16_v4f16__4_2_2:3137; GFX942:       ; %bb.0:3138; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3139; GFX942-NEXT:    v_mov_b32_e32 v2, 03140; GFX942-NEXT:    ;;#ASMSTART3141; GFX942-NEXT:    ; def v[0:1]3142; GFX942-NEXT:    ;;#ASMEND3143; GFX942-NEXT:    s_nop 03144; GFX942-NEXT:    v_lshlrev_b32_e32 v0, 16, v13145; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:43146; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]3147; GFX942-NEXT:    s_waitcnt vmcnt(0)3148; GFX942-NEXT:    s_setpc_b64 s[30:31]3149  %vec0 = call <4 x half> asm "; def $0", "=v"()3150  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 4, i32 2, i32 2>3151  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 83152  ret void3153}3154 3155define void @v_shuffle_v3f16_v4f16__5_2_2(ptr addrspace(1) inreg %ptr) {3156; GFX900-LABEL: v_shuffle_v3f16_v4f16__5_2_2:3157; GFX900:       ; %bb.0:3158; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3159; GFX900-NEXT:    v_mov_b32_e32 v4, 03160; GFX900-NEXT:    ;;#ASMSTART3161; GFX900-NEXT:    ; def v[0:1]3162; GFX900-NEXT:    ;;#ASMEND3163; GFX900-NEXT:    ;;#ASMSTART3164; GFX900-NEXT:    ; def v[2:3]3165; GFX900-NEXT:    ;;#ASMEND3166; GFX900-NEXT:    v_alignbit_b32 v0, v1, v2, 163167; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:43168; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]3169; GFX900-NEXT:    s_waitcnt vmcnt(0)3170; GFX900-NEXT:    s_setpc_b64 s[30:31]3171;3172; GFX90A-LABEL: v_shuffle_v3f16_v4f16__5_2_2:3173; GFX90A:       ; %bb.0:3174; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3175; GFX90A-NEXT:    v_mov_b32_e32 v4, 03176; GFX90A-NEXT:    ;;#ASMSTART3177; GFX90A-NEXT:    ; def v[0:1]3178; GFX90A-NEXT:    ;;#ASMEND3179; GFX90A-NEXT:    ;;#ASMSTART3180; GFX90A-NEXT:    ; def v[2:3]3181; GFX90A-NEXT:    ;;#ASMEND3182; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v2, 163183; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:43184; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]3185; GFX90A-NEXT:    s_waitcnt vmcnt(0)3186; GFX90A-NEXT:    s_setpc_b64 s[30:31]3187;3188; GFX942-LABEL: v_shuffle_v3f16_v4f16__5_2_2:3189; GFX942:       ; %bb.0:3190; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3191; GFX942-NEXT:    v_mov_b32_e32 v4, 03192; GFX942-NEXT:    ;;#ASMSTART3193; GFX942-NEXT:    ; def v[0:1]3194; GFX942-NEXT:    ;;#ASMEND3195; GFX942-NEXT:    ;;#ASMSTART3196; GFX942-NEXT:    ; def v[2:3]3197; GFX942-NEXT:    ;;#ASMEND3198; GFX942-NEXT:    s_nop 03199; GFX942-NEXT:    v_alignbit_b32 v0, v1, v2, 163200; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:43201; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]3202; GFX942-NEXT:    s_waitcnt vmcnt(0)3203; GFX942-NEXT:    s_setpc_b64 s[30:31]3204  %vec0 = call <4 x half> asm "; def $0", "=v"()3205  %vec1 = call <4 x half> asm "; def $0", "=v"()3206  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 5, i32 2, i32 2>3207  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 83208  ret void3209}3210 3211define void @v_shuffle_v3f16_v4f16__6_2_2(ptr addrspace(1) inreg %ptr) {3212; GFX900-LABEL: v_shuffle_v3f16_v4f16__6_2_2:3213; GFX900:       ; %bb.0:3214; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3215; GFX900-NEXT:    v_mov_b32_e32 v4, 03216; GFX900-NEXT:    ;;#ASMSTART3217; GFX900-NEXT:    ; def v[0:1]3218; GFX900-NEXT:    ;;#ASMEND3219; GFX900-NEXT:    s_mov_b32 s4, 0x50401003220; GFX900-NEXT:    ;;#ASMSTART3221; GFX900-NEXT:    ; def v[2:3]3222; GFX900-NEXT:    ;;#ASMEND3223; GFX900-NEXT:    v_perm_b32 v0, v1, v3, s43224; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:43225; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]3226; GFX900-NEXT:    s_waitcnt vmcnt(0)3227; GFX900-NEXT:    s_setpc_b64 s[30:31]3228;3229; GFX90A-LABEL: v_shuffle_v3f16_v4f16__6_2_2:3230; GFX90A:       ; %bb.0:3231; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3232; GFX90A-NEXT:    v_mov_b32_e32 v4, 03233; GFX90A-NEXT:    ;;#ASMSTART3234; GFX90A-NEXT:    ; def v[0:1]3235; GFX90A-NEXT:    ;;#ASMEND3236; GFX90A-NEXT:    s_mov_b32 s4, 0x50401003237; GFX90A-NEXT:    ;;#ASMSTART3238; GFX90A-NEXT:    ; def v[2:3]3239; GFX90A-NEXT:    ;;#ASMEND3240; GFX90A-NEXT:    v_perm_b32 v0, v1, v3, s43241; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:43242; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]3243; GFX90A-NEXT:    s_waitcnt vmcnt(0)3244; GFX90A-NEXT:    s_setpc_b64 s[30:31]3245;3246; GFX942-LABEL: v_shuffle_v3f16_v4f16__6_2_2:3247; GFX942:       ; %bb.0:3248; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3249; GFX942-NEXT:    v_mov_b32_e32 v4, 03250; GFX942-NEXT:    ;;#ASMSTART3251; GFX942-NEXT:    ; def v[0:1]3252; GFX942-NEXT:    ;;#ASMEND3253; GFX942-NEXT:    s_mov_b32 s2, 0x50401003254; GFX942-NEXT:    ;;#ASMSTART3255; GFX942-NEXT:    ; def v[2:3]3256; GFX942-NEXT:    ;;#ASMEND3257; GFX942-NEXT:    s_nop 03258; GFX942-NEXT:    v_perm_b32 v0, v1, v3, s23259; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:43260; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]3261; GFX942-NEXT:    s_waitcnt vmcnt(0)3262; GFX942-NEXT:    s_setpc_b64 s[30:31]3263  %vec0 = call <4 x half> asm "; def $0", "=v"()3264  %vec1 = call <4 x half> asm "; def $0", "=v"()3265  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 6, i32 2, i32 2>3266  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 83267  ret void3268}3269 3270define void @v_shuffle_v3f16_v4f16__7_2_2(ptr addrspace(1) inreg %ptr) {3271; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_2_2:3272; GFX900:       ; %bb.0:3273; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3274; GFX900-NEXT:    v_mov_b32_e32 v4, 03275; GFX900-NEXT:    ;;#ASMSTART3276; GFX900-NEXT:    ; def v[0:1]3277; GFX900-NEXT:    ;;#ASMEND3278; GFX900-NEXT:    ;;#ASMSTART3279; GFX900-NEXT:    ; def v[2:3]3280; GFX900-NEXT:    ;;#ASMEND3281; GFX900-NEXT:    v_alignbit_b32 v0, v1, v3, 163282; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:43283; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]3284; GFX900-NEXT:    s_waitcnt vmcnt(0)3285; GFX900-NEXT:    s_setpc_b64 s[30:31]3286;3287; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_2_2:3288; GFX90A:       ; %bb.0:3289; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3290; GFX90A-NEXT:    v_mov_b32_e32 v4, 03291; GFX90A-NEXT:    ;;#ASMSTART3292; GFX90A-NEXT:    ; def v[0:1]3293; GFX90A-NEXT:    ;;#ASMEND3294; GFX90A-NEXT:    ;;#ASMSTART3295; GFX90A-NEXT:    ; def v[2:3]3296; GFX90A-NEXT:    ;;#ASMEND3297; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v3, 163298; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:43299; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]3300; GFX90A-NEXT:    s_waitcnt vmcnt(0)3301; GFX90A-NEXT:    s_setpc_b64 s[30:31]3302;3303; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_2_2:3304; GFX942:       ; %bb.0:3305; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3306; GFX942-NEXT:    v_mov_b32_e32 v4, 03307; GFX942-NEXT:    ;;#ASMSTART3308; GFX942-NEXT:    ; def v[0:1]3309; GFX942-NEXT:    ;;#ASMEND3310; GFX942-NEXT:    ;;#ASMSTART3311; GFX942-NEXT:    ; def v[2:3]3312; GFX942-NEXT:    ;;#ASMEND3313; GFX942-NEXT:    s_nop 03314; GFX942-NEXT:    v_alignbit_b32 v0, v1, v3, 163315; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:43316; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]3317; GFX942-NEXT:    s_waitcnt vmcnt(0)3318; GFX942-NEXT:    s_setpc_b64 s[30:31]3319  %vec0 = call <4 x half> asm "; def $0", "=v"()3320  %vec1 = call <4 x half> asm "; def $0", "=v"()3321  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 2, i32 2>3322  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 83323  ret void3324}3325 3326define void @v_shuffle_v3f16_v4f16__7_u_2(ptr addrspace(1) inreg %ptr) {3327; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_u_2:3328; GFX900:       ; %bb.0:3329; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3330; GFX900-NEXT:    v_mov_b32_e32 v4, 03331; GFX900-NEXT:    ;;#ASMSTART3332; GFX900-NEXT:    ; def v[0:1]3333; GFX900-NEXT:    ;;#ASMEND3334; GFX900-NEXT:    ;;#ASMSTART3335; GFX900-NEXT:    ; def v[2:3]3336; GFX900-NEXT:    ;;#ASMEND3337; GFX900-NEXT:    v_alignbit_b32 v0, s4, v3, 163338; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:43339; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]3340; GFX900-NEXT:    s_waitcnt vmcnt(0)3341; GFX900-NEXT:    s_setpc_b64 s[30:31]3342;3343; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_u_2:3344; GFX90A:       ; %bb.0:3345; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3346; GFX90A-NEXT:    v_mov_b32_e32 v4, 03347; GFX90A-NEXT:    ;;#ASMSTART3348; GFX90A-NEXT:    ; def v[0:1]3349; GFX90A-NEXT:    ;;#ASMEND3350; GFX90A-NEXT:    ;;#ASMSTART3351; GFX90A-NEXT:    ; def v[2:3]3352; GFX90A-NEXT:    ;;#ASMEND3353; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v3, 163354; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:43355; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]3356; GFX90A-NEXT:    s_waitcnt vmcnt(0)3357; GFX90A-NEXT:    s_setpc_b64 s[30:31]3358;3359; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_u_2:3360; GFX942:       ; %bb.0:3361; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3362; GFX942-NEXT:    v_mov_b32_e32 v4, 03363; GFX942-NEXT:    ;;#ASMSTART3364; GFX942-NEXT:    ; def v[0:1]3365; GFX942-NEXT:    ;;#ASMEND3366; GFX942-NEXT:    ;;#ASMSTART3367; GFX942-NEXT:    ; def v[2:3]3368; GFX942-NEXT:    ;;#ASMEND3369; GFX942-NEXT:    s_nop 03370; GFX942-NEXT:    v_alignbit_b32 v0, s0, v3, 163371; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:43372; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]3373; GFX942-NEXT:    s_waitcnt vmcnt(0)3374; GFX942-NEXT:    s_setpc_b64 s[30:31]3375  %vec0 = call <4 x half> asm "; def $0", "=v"()3376  %vec1 = call <4 x half> asm "; def $0", "=v"()3377  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 poison, i32 2>3378  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 83379  ret void3380}3381 3382define void @v_shuffle_v3f16_v4f16__7_0_2(ptr addrspace(1) inreg %ptr) {3383; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_0_2:3384; GFX900:       ; %bb.0:3385; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3386; GFX900-NEXT:    v_mov_b32_e32 v4, 03387; GFX900-NEXT:    ;;#ASMSTART3388; GFX900-NEXT:    ; def v[0:1]3389; GFX900-NEXT:    ;;#ASMEND3390; GFX900-NEXT:    ;;#ASMSTART3391; GFX900-NEXT:    ; def v[2:3]3392; GFX900-NEXT:    ;;#ASMEND3393; GFX900-NEXT:    v_alignbit_b32 v0, v0, v3, 163394; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:43395; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]3396; GFX900-NEXT:    s_waitcnt vmcnt(0)3397; GFX900-NEXT:    s_setpc_b64 s[30:31]3398;3399; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_0_2:3400; GFX90A:       ; %bb.0:3401; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3402; GFX90A-NEXT:    v_mov_b32_e32 v4, 03403; GFX90A-NEXT:    ;;#ASMSTART3404; GFX90A-NEXT:    ; def v[0:1]3405; GFX90A-NEXT:    ;;#ASMEND3406; GFX90A-NEXT:    ;;#ASMSTART3407; GFX90A-NEXT:    ; def v[2:3]3408; GFX90A-NEXT:    ;;#ASMEND3409; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v3, 163410; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:43411; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]3412; GFX90A-NEXT:    s_waitcnt vmcnt(0)3413; GFX90A-NEXT:    s_setpc_b64 s[30:31]3414;3415; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_0_2:3416; GFX942:       ; %bb.0:3417; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3418; GFX942-NEXT:    v_mov_b32_e32 v4, 03419; GFX942-NEXT:    ;;#ASMSTART3420; GFX942-NEXT:    ; def v[0:1]3421; GFX942-NEXT:    ;;#ASMEND3422; GFX942-NEXT:    ;;#ASMSTART3423; GFX942-NEXT:    ; def v[2:3]3424; GFX942-NEXT:    ;;#ASMEND3425; GFX942-NEXT:    s_nop 03426; GFX942-NEXT:    v_alignbit_b32 v0, v0, v3, 163427; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:43428; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]3429; GFX942-NEXT:    s_waitcnt vmcnt(0)3430; GFX942-NEXT:    s_setpc_b64 s[30:31]3431  %vec0 = call <4 x half> asm "; def $0", "=v"()3432  %vec1 = call <4 x half> asm "; def $0", "=v"()3433  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 0, i32 2>3434  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 83435  ret void3436}3437 3438define void @v_shuffle_v3f16_v4f16__7_1_2(ptr addrspace(1) inreg %ptr) {3439; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_1_2:3440; GFX900:       ; %bb.0:3441; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3442; GFX900-NEXT:    v_mov_b32_e32 v4, 03443; GFX900-NEXT:    ;;#ASMSTART3444; GFX900-NEXT:    ; def v[0:1]3445; GFX900-NEXT:    ;;#ASMEND3446; GFX900-NEXT:    s_mov_b32 s4, 0x70603023447; GFX900-NEXT:    ;;#ASMSTART3448; GFX900-NEXT:    ; def v[2:3]3449; GFX900-NEXT:    ;;#ASMEND3450; GFX900-NEXT:    v_perm_b32 v0, v0, v3, s43451; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:43452; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]3453; GFX900-NEXT:    s_waitcnt vmcnt(0)3454; GFX900-NEXT:    s_setpc_b64 s[30:31]3455;3456; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_1_2:3457; GFX90A:       ; %bb.0:3458; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3459; GFX90A-NEXT:    v_mov_b32_e32 v4, 03460; GFX90A-NEXT:    ;;#ASMSTART3461; GFX90A-NEXT:    ; def v[0:1]3462; GFX90A-NEXT:    ;;#ASMEND3463; GFX90A-NEXT:    s_mov_b32 s4, 0x70603023464; GFX90A-NEXT:    ;;#ASMSTART3465; GFX90A-NEXT:    ; def v[2:3]3466; GFX90A-NEXT:    ;;#ASMEND3467; GFX90A-NEXT:    v_perm_b32 v0, v0, v3, s43468; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:43469; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]3470; GFX90A-NEXT:    s_waitcnt vmcnt(0)3471; GFX90A-NEXT:    s_setpc_b64 s[30:31]3472;3473; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_1_2:3474; GFX942:       ; %bb.0:3475; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3476; GFX942-NEXT:    v_mov_b32_e32 v4, 03477; GFX942-NEXT:    ;;#ASMSTART3478; GFX942-NEXT:    ; def v[0:1]3479; GFX942-NEXT:    ;;#ASMEND3480; GFX942-NEXT:    s_mov_b32 s2, 0x70603023481; GFX942-NEXT:    ;;#ASMSTART3482; GFX942-NEXT:    ; def v[2:3]3483; GFX942-NEXT:    ;;#ASMEND3484; GFX942-NEXT:    s_nop 03485; GFX942-NEXT:    v_perm_b32 v0, v0, v3, s23486; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:43487; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]3488; GFX942-NEXT:    s_waitcnt vmcnt(0)3489; GFX942-NEXT:    s_setpc_b64 s[30:31]3490  %vec0 = call <4 x half> asm "; def $0", "=v"()3491  %vec1 = call <4 x half> asm "; def $0", "=v"()3492  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 1, i32 2>3493  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 83494  ret void3495}3496 3497define void @v_shuffle_v3f16_v4f16__7_3_2(ptr addrspace(1) inreg %ptr) {3498; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_3_2:3499; GFX900:       ; %bb.0:3500; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3501; GFX900-NEXT:    v_mov_b32_e32 v4, 03502; GFX900-NEXT:    ;;#ASMSTART3503; GFX900-NEXT:    ; def v[0:1]3504; GFX900-NEXT:    ;;#ASMEND3505; GFX900-NEXT:    s_mov_b32 s4, 0x70603023506; GFX900-NEXT:    ;;#ASMSTART3507; GFX900-NEXT:    ; def v[2:3]3508; GFX900-NEXT:    ;;#ASMEND3509; GFX900-NEXT:    v_perm_b32 v0, v1, v3, s43510; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:43511; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]3512; GFX900-NEXT:    s_waitcnt vmcnt(0)3513; GFX900-NEXT:    s_setpc_b64 s[30:31]3514;3515; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_3_2:3516; GFX90A:       ; %bb.0:3517; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3518; GFX90A-NEXT:    v_mov_b32_e32 v4, 03519; GFX90A-NEXT:    ;;#ASMSTART3520; GFX90A-NEXT:    ; def v[0:1]3521; GFX90A-NEXT:    ;;#ASMEND3522; GFX90A-NEXT:    s_mov_b32 s4, 0x70603023523; GFX90A-NEXT:    ;;#ASMSTART3524; GFX90A-NEXT:    ; def v[2:3]3525; GFX90A-NEXT:    ;;#ASMEND3526; GFX90A-NEXT:    v_perm_b32 v0, v1, v3, s43527; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:43528; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]3529; GFX90A-NEXT:    s_waitcnt vmcnt(0)3530; GFX90A-NEXT:    s_setpc_b64 s[30:31]3531;3532; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_3_2:3533; GFX942:       ; %bb.0:3534; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3535; GFX942-NEXT:    v_mov_b32_e32 v4, 03536; GFX942-NEXT:    ;;#ASMSTART3537; GFX942-NEXT:    ; def v[0:1]3538; GFX942-NEXT:    ;;#ASMEND3539; GFX942-NEXT:    s_mov_b32 s2, 0x70603023540; GFX942-NEXT:    ;;#ASMSTART3541; GFX942-NEXT:    ; def v[2:3]3542; GFX942-NEXT:    ;;#ASMEND3543; GFX942-NEXT:    s_nop 03544; GFX942-NEXT:    v_perm_b32 v0, v1, v3, s23545; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:43546; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]3547; GFX942-NEXT:    s_waitcnt vmcnt(0)3548; GFX942-NEXT:    s_setpc_b64 s[30:31]3549  %vec0 = call <4 x half> asm "; def $0", "=v"()3550  %vec1 = call <4 x half> asm "; def $0", "=v"()3551  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 3, i32 2>3552  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 83553  ret void3554}3555 3556define void @v_shuffle_v3f16_v4f16__7_4_2(ptr addrspace(1) inreg %ptr) {3557; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_4_2:3558; GFX900:       ; %bb.0:3559; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3560; GFX900-NEXT:    v_mov_b32_e32 v4, 03561; GFX900-NEXT:    ;;#ASMSTART3562; GFX900-NEXT:    ; def v[0:1]3563; GFX900-NEXT:    ;;#ASMEND3564; GFX900-NEXT:    ;;#ASMSTART3565; GFX900-NEXT:    ; def v[2:3]3566; GFX900-NEXT:    ;;#ASMEND3567; GFX900-NEXT:    v_alignbit_b32 v0, v2, v3, 163568; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:43569; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]3570; GFX900-NEXT:    s_waitcnt vmcnt(0)3571; GFX900-NEXT:    s_setpc_b64 s[30:31]3572;3573; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_4_2:3574; GFX90A:       ; %bb.0:3575; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3576; GFX90A-NEXT:    v_mov_b32_e32 v4, 03577; GFX90A-NEXT:    ;;#ASMSTART3578; GFX90A-NEXT:    ; def v[0:1]3579; GFX90A-NEXT:    ;;#ASMEND3580; GFX90A-NEXT:    ;;#ASMSTART3581; GFX90A-NEXT:    ; def v[2:3]3582; GFX90A-NEXT:    ;;#ASMEND3583; GFX90A-NEXT:    v_alignbit_b32 v0, v2, v3, 163584; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:43585; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]3586; GFX90A-NEXT:    s_waitcnt vmcnt(0)3587; GFX90A-NEXT:    s_setpc_b64 s[30:31]3588;3589; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_4_2:3590; GFX942:       ; %bb.0:3591; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3592; GFX942-NEXT:    v_mov_b32_e32 v4, 03593; GFX942-NEXT:    ;;#ASMSTART3594; GFX942-NEXT:    ; def v[0:1]3595; GFX942-NEXT:    ;;#ASMEND3596; GFX942-NEXT:    ;;#ASMSTART3597; GFX942-NEXT:    ; def v[2:3]3598; GFX942-NEXT:    ;;#ASMEND3599; GFX942-NEXT:    s_nop 03600; GFX942-NEXT:    v_alignbit_b32 v0, v2, v3, 163601; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:43602; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]3603; GFX942-NEXT:    s_waitcnt vmcnt(0)3604; GFX942-NEXT:    s_setpc_b64 s[30:31]3605  %vec0 = call <4 x half> asm "; def $0", "=v"()3606  %vec1 = call <4 x half> asm "; def $0", "=v"()3607  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 4, i32 2>3608  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 83609  ret void3610}3611 3612define void @v_shuffle_v3f16_v4f16__7_5_2(ptr addrspace(1) inreg %ptr) {3613; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_5_2:3614; GFX900:       ; %bb.0:3615; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3616; GFX900-NEXT:    v_mov_b32_e32 v4, 03617; GFX900-NEXT:    ;;#ASMSTART3618; GFX900-NEXT:    ; def v[0:1]3619; GFX900-NEXT:    ;;#ASMEND3620; GFX900-NEXT:    s_mov_b32 s4, 0x70603023621; GFX900-NEXT:    ;;#ASMSTART3622; GFX900-NEXT:    ; def v[2:3]3623; GFX900-NEXT:    ;;#ASMEND3624; GFX900-NEXT:    v_perm_b32 v0, v2, v3, s43625; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:43626; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]3627; GFX900-NEXT:    s_waitcnt vmcnt(0)3628; GFX900-NEXT:    s_setpc_b64 s[30:31]3629;3630; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_5_2:3631; GFX90A:       ; %bb.0:3632; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3633; GFX90A-NEXT:    v_mov_b32_e32 v4, 03634; GFX90A-NEXT:    ;;#ASMSTART3635; GFX90A-NEXT:    ; def v[0:1]3636; GFX90A-NEXT:    ;;#ASMEND3637; GFX90A-NEXT:    s_mov_b32 s4, 0x70603023638; GFX90A-NEXT:    ;;#ASMSTART3639; GFX90A-NEXT:    ; def v[2:3]3640; GFX90A-NEXT:    ;;#ASMEND3641; GFX90A-NEXT:    v_perm_b32 v0, v2, v3, s43642; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:43643; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]3644; GFX90A-NEXT:    s_waitcnt vmcnt(0)3645; GFX90A-NEXT:    s_setpc_b64 s[30:31]3646;3647; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_5_2:3648; GFX942:       ; %bb.0:3649; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3650; GFX942-NEXT:    v_mov_b32_e32 v4, 03651; GFX942-NEXT:    ;;#ASMSTART3652; GFX942-NEXT:    ; def v[0:1]3653; GFX942-NEXT:    ;;#ASMEND3654; GFX942-NEXT:    s_mov_b32 s2, 0x70603023655; GFX942-NEXT:    ;;#ASMSTART3656; GFX942-NEXT:    ; def v[2:3]3657; GFX942-NEXT:    ;;#ASMEND3658; GFX942-NEXT:    s_nop 03659; GFX942-NEXT:    v_perm_b32 v0, v2, v3, s23660; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:43661; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]3662; GFX942-NEXT:    s_waitcnt vmcnt(0)3663; GFX942-NEXT:    s_setpc_b64 s[30:31]3664  %vec0 = call <4 x half> asm "; def $0", "=v"()3665  %vec1 = call <4 x half> asm "; def $0", "=v"()3666  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 5, i32 2>3667  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 83668  ret void3669}3670 3671define void @v_shuffle_v3f16_v4f16__7_6_2(ptr addrspace(1) inreg %ptr) {3672; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_6_2:3673; GFX900:       ; %bb.0:3674; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3675; GFX900-NEXT:    v_mov_b32_e32 v4, 03676; GFX900-NEXT:    ;;#ASMSTART3677; GFX900-NEXT:    ; def v[0:1]3678; GFX900-NEXT:    ;;#ASMEND3679; GFX900-NEXT:    ;;#ASMSTART3680; GFX900-NEXT:    ; def v[2:3]3681; GFX900-NEXT:    ;;#ASMEND3682; GFX900-NEXT:    v_alignbit_b32 v0, v3, v3, 163683; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:43684; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]3685; GFX900-NEXT:    s_waitcnt vmcnt(0)3686; GFX900-NEXT:    s_setpc_b64 s[30:31]3687;3688; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_6_2:3689; GFX90A:       ; %bb.0:3690; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3691; GFX90A-NEXT:    v_mov_b32_e32 v4, 03692; GFX90A-NEXT:    ;;#ASMSTART3693; GFX90A-NEXT:    ; def v[0:1]3694; GFX90A-NEXT:    ;;#ASMEND3695; GFX90A-NEXT:    ;;#ASMSTART3696; GFX90A-NEXT:    ; def v[2:3]3697; GFX90A-NEXT:    ;;#ASMEND3698; GFX90A-NEXT:    v_alignbit_b32 v0, v3, v3, 163699; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:43700; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]3701; GFX90A-NEXT:    s_waitcnt vmcnt(0)3702; GFX90A-NEXT:    s_setpc_b64 s[30:31]3703;3704; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_6_2:3705; GFX942:       ; %bb.0:3706; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3707; GFX942-NEXT:    v_mov_b32_e32 v4, 03708; GFX942-NEXT:    ;;#ASMSTART3709; GFX942-NEXT:    ; def v[0:1]3710; GFX942-NEXT:    ;;#ASMEND3711; GFX942-NEXT:    ;;#ASMSTART3712; GFX942-NEXT:    ; def v[2:3]3713; GFX942-NEXT:    ;;#ASMEND3714; GFX942-NEXT:    s_nop 03715; GFX942-NEXT:    v_alignbit_b32 v0, v3, v3, 163716; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:43717; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]3718; GFX942-NEXT:    s_waitcnt vmcnt(0)3719; GFX942-NEXT:    s_setpc_b64 s[30:31]3720  %vec0 = call <4 x half> asm "; def $0", "=v"()3721  %vec1 = call <4 x half> asm "; def $0", "=v"()3722  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 6, i32 2>3723  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 83724  ret void3725}3726 3727define void @v_shuffle_v3f16_v4f16__u_3_3(ptr addrspace(1) inreg %ptr) {3728; GFX900-LABEL: v_shuffle_v3f16_v4f16__u_3_3:3729; GFX900:       ; %bb.0:3730; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3731; GFX900-NEXT:    ;;#ASMSTART3732; GFX900-NEXT:    ; def v[0:1]3733; GFX900-NEXT:    ;;#ASMEND3734; GFX900-NEXT:    s_mov_b32 s4, 0xffff3735; GFX900-NEXT:    v_mov_b32_e32 v2, 03736; GFX900-NEXT:    v_bfi_b32 v0, s4, v0, v13737; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v13738; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]3739; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:43740; GFX900-NEXT:    s_waitcnt vmcnt(0)3741; GFX900-NEXT:    s_setpc_b64 s[30:31]3742;3743; GFX90A-LABEL: v_shuffle_v3f16_v4f16__u_3_3:3744; GFX90A:       ; %bb.0:3745; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3746; GFX90A-NEXT:    ;;#ASMSTART3747; GFX90A-NEXT:    ; def v[0:1]3748; GFX90A-NEXT:    ;;#ASMEND3749; GFX90A-NEXT:    s_mov_b32 s4, 0xffff3750; GFX90A-NEXT:    v_mov_b32_e32 v2, 03751; GFX90A-NEXT:    v_bfi_b32 v0, s4, v0, v13752; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v13753; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]3754; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:43755; GFX90A-NEXT:    s_waitcnt vmcnt(0)3756; GFX90A-NEXT:    s_setpc_b64 s[30:31]3757;3758; GFX942-LABEL: v_shuffle_v3f16_v4f16__u_3_3:3759; GFX942:       ; %bb.0:3760; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3761; GFX942-NEXT:    ;;#ASMSTART3762; GFX942-NEXT:    ; def v[0:1]3763; GFX942-NEXT:    ;;#ASMEND3764; GFX942-NEXT:    s_mov_b32 s2, 0xffff3765; GFX942-NEXT:    v_mov_b32_e32 v2, 03766; GFX942-NEXT:    v_bfi_b32 v0, s2, v0, v13767; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v13768; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]3769; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:43770; GFX942-NEXT:    s_waitcnt vmcnt(0)3771; GFX942-NEXT:    s_setpc_b64 s[30:31]3772  %vec0 = call <4 x half> asm "; def $0", "=v"()3773  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 poison, i32 3, i32 3>3774  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 83775  ret void3776}3777 3778define void @v_shuffle_v3f16_v4f16__0_3_3(ptr addrspace(1) inreg %ptr) {3779; GFX900-LABEL: v_shuffle_v3f16_v4f16__0_3_3:3780; GFX900:       ; %bb.0:3781; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3782; GFX900-NEXT:    ;;#ASMSTART3783; GFX900-NEXT:    ; def v[0:1]3784; GFX900-NEXT:    ;;#ASMEND3785; GFX900-NEXT:    s_mov_b32 s4, 0xffff3786; GFX900-NEXT:    v_mov_b32_e32 v2, 03787; GFX900-NEXT:    v_bfi_b32 v0, s4, v0, v13788; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v13789; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]3790; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:43791; GFX900-NEXT:    s_waitcnt vmcnt(0)3792; GFX900-NEXT:    s_setpc_b64 s[30:31]3793;3794; GFX90A-LABEL: v_shuffle_v3f16_v4f16__0_3_3:3795; GFX90A:       ; %bb.0:3796; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3797; GFX90A-NEXT:    ;;#ASMSTART3798; GFX90A-NEXT:    ; def v[0:1]3799; GFX90A-NEXT:    ;;#ASMEND3800; GFX90A-NEXT:    s_mov_b32 s4, 0xffff3801; GFX90A-NEXT:    v_mov_b32_e32 v2, 03802; GFX90A-NEXT:    v_bfi_b32 v0, s4, v0, v13803; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v13804; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]3805; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:43806; GFX90A-NEXT:    s_waitcnt vmcnt(0)3807; GFX90A-NEXT:    s_setpc_b64 s[30:31]3808;3809; GFX942-LABEL: v_shuffle_v3f16_v4f16__0_3_3:3810; GFX942:       ; %bb.0:3811; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3812; GFX942-NEXT:    ;;#ASMSTART3813; GFX942-NEXT:    ; def v[0:1]3814; GFX942-NEXT:    ;;#ASMEND3815; GFX942-NEXT:    s_mov_b32 s2, 0xffff3816; GFX942-NEXT:    v_mov_b32_e32 v2, 03817; GFX942-NEXT:    v_bfi_b32 v0, s2, v0, v13818; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v13819; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]3820; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:43821; GFX942-NEXT:    s_waitcnt vmcnt(0)3822; GFX942-NEXT:    s_setpc_b64 s[30:31]3823  %vec0 = call <4 x half> asm "; def $0", "=v"()3824  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 0, i32 3, i32 3>3825  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 83826  ret void3827}3828 3829define void @v_shuffle_v3f16_v4f16__1_3_3(ptr addrspace(1) inreg %ptr) {3830; GFX900-LABEL: v_shuffle_v3f16_v4f16__1_3_3:3831; GFX900:       ; %bb.0:3832; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3833; GFX900-NEXT:    ;;#ASMSTART3834; GFX900-NEXT:    ; def v[0:1]3835; GFX900-NEXT:    ;;#ASMEND3836; GFX900-NEXT:    s_mov_b32 s4, 0x70603023837; GFX900-NEXT:    v_mov_b32_e32 v2, 03838; GFX900-NEXT:    v_perm_b32 v0, v1, v0, s43839; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v13840; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]3841; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:43842; GFX900-NEXT:    s_waitcnt vmcnt(0)3843; GFX900-NEXT:    s_setpc_b64 s[30:31]3844;3845; GFX90A-LABEL: v_shuffle_v3f16_v4f16__1_3_3:3846; GFX90A:       ; %bb.0:3847; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3848; GFX90A-NEXT:    ;;#ASMSTART3849; GFX90A-NEXT:    ; def v[0:1]3850; GFX90A-NEXT:    ;;#ASMEND3851; GFX90A-NEXT:    s_mov_b32 s4, 0x70603023852; GFX90A-NEXT:    v_mov_b32_e32 v2, 03853; GFX90A-NEXT:    v_perm_b32 v0, v1, v0, s43854; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v13855; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]3856; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:43857; GFX90A-NEXT:    s_waitcnt vmcnt(0)3858; GFX90A-NEXT:    s_setpc_b64 s[30:31]3859;3860; GFX942-LABEL: v_shuffle_v3f16_v4f16__1_3_3:3861; GFX942:       ; %bb.0:3862; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3863; GFX942-NEXT:    ;;#ASMSTART3864; GFX942-NEXT:    ; def v[0:1]3865; GFX942-NEXT:    ;;#ASMEND3866; GFX942-NEXT:    s_mov_b32 s2, 0x70603023867; GFX942-NEXT:    v_mov_b32_e32 v2, 03868; GFX942-NEXT:    v_perm_b32 v0, v1, v0, s23869; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v13870; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]3871; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:43872; GFX942-NEXT:    s_waitcnt vmcnt(0)3873; GFX942-NEXT:    s_setpc_b64 s[30:31]3874  %vec0 = call <4 x half> asm "; def $0", "=v"()3875  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 1, i32 3, i32 3>3876  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 83877  ret void3878}3879 3880define void @v_shuffle_v3f16_v4f16__2_3_3(ptr addrspace(1) inreg %ptr) {3881; GFX900-LABEL: v_shuffle_v3f16_v4f16__2_3_3:3882; GFX900:       ; %bb.0:3883; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3884; GFX900-NEXT:    v_mov_b32_e32 v2, 03885; GFX900-NEXT:    ;;#ASMSTART3886; GFX900-NEXT:    ; def v[0:1]3887; GFX900-NEXT:    ;;#ASMEND3888; GFX900-NEXT:    global_store_short_d16_hi v2, v1, s[16:17] offset:43889; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]3890; GFX900-NEXT:    s_waitcnt vmcnt(0)3891; GFX900-NEXT:    s_setpc_b64 s[30:31]3892;3893; GFX90A-LABEL: v_shuffle_v3f16_v4f16__2_3_3:3894; GFX90A:       ; %bb.0:3895; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3896; GFX90A-NEXT:    v_mov_b32_e32 v2, 03897; GFX90A-NEXT:    ;;#ASMSTART3898; GFX90A-NEXT:    ; def v[0:1]3899; GFX90A-NEXT:    ;;#ASMEND3900; GFX90A-NEXT:    global_store_short_d16_hi v2, v1, s[16:17] offset:43901; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]3902; GFX90A-NEXT:    s_waitcnt vmcnt(0)3903; GFX90A-NEXT:    s_setpc_b64 s[30:31]3904;3905; GFX942-LABEL: v_shuffle_v3f16_v4f16__2_3_3:3906; GFX942:       ; %bb.0:3907; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3908; GFX942-NEXT:    v_mov_b32_e32 v2, 03909; GFX942-NEXT:    ;;#ASMSTART3910; GFX942-NEXT:    ; def v[0:1]3911; GFX942-NEXT:    ;;#ASMEND3912; GFX942-NEXT:    global_store_short_d16_hi v2, v1, s[0:1] offset:43913; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]3914; GFX942-NEXT:    s_waitcnt vmcnt(0)3915; GFX942-NEXT:    s_setpc_b64 s[30:31]3916  %vec0 = call <4 x half> asm "; def $0", "=v"()3917  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 2, i32 3, i32 3>3918  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 83919  ret void3920}3921 3922define void @v_shuffle_v3f16_v4f16__3_3_3(ptr addrspace(1) inreg %ptr) {3923; GFX900-LABEL: v_shuffle_v3f16_v4f16__3_3_3:3924; GFX900:       ; %bb.0:3925; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3926; GFX900-NEXT:    ;;#ASMSTART3927; GFX900-NEXT:    ; def v[0:1]3928; GFX900-NEXT:    ;;#ASMEND3929; GFX900-NEXT:    s_mov_b32 s4, 0x70603023930; GFX900-NEXT:    v_mov_b32_e32 v2, 03931; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v13932; GFX900-NEXT:    v_perm_b32 v1, v1, v1, s43933; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]3934; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:43935; GFX900-NEXT:    s_waitcnt vmcnt(0)3936; GFX900-NEXT:    s_setpc_b64 s[30:31]3937;3938; GFX90A-LABEL: v_shuffle_v3f16_v4f16__3_3_3:3939; GFX90A:       ; %bb.0:3940; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3941; GFX90A-NEXT:    ;;#ASMSTART3942; GFX90A-NEXT:    ; def v[0:1]3943; GFX90A-NEXT:    ;;#ASMEND3944; GFX90A-NEXT:    s_mov_b32 s4, 0x70603023945; GFX90A-NEXT:    v_mov_b32_e32 v2, 03946; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v13947; GFX90A-NEXT:    v_perm_b32 v1, v1, v1, s43948; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]3949; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:43950; GFX90A-NEXT:    s_waitcnt vmcnt(0)3951; GFX90A-NEXT:    s_setpc_b64 s[30:31]3952;3953; GFX942-LABEL: v_shuffle_v3f16_v4f16__3_3_3:3954; GFX942:       ; %bb.0:3955; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3956; GFX942-NEXT:    ;;#ASMSTART3957; GFX942-NEXT:    ; def v[0:1]3958; GFX942-NEXT:    ;;#ASMEND3959; GFX942-NEXT:    s_mov_b32 s2, 0x70603023960; GFX942-NEXT:    v_mov_b32_e32 v2, 03961; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v13962; GFX942-NEXT:    v_perm_b32 v1, v1, v1, s23963; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]3964; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:43965; GFX942-NEXT:    s_waitcnt vmcnt(0)3966; GFX942-NEXT:    s_setpc_b64 s[30:31]3967  %vec0 = call <4 x half> asm "; def $0", "=v"()3968  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 3, i32 3, i32 3>3969  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 83970  ret void3971}3972 3973define void @v_shuffle_v3f16_v4f16__4_3_3(ptr addrspace(1) inreg %ptr) {3974; GFX900-LABEL: v_shuffle_v3f16_v4f16__4_3_3:3975; GFX900:       ; %bb.0:3976; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3977; GFX900-NEXT:    ;;#ASMSTART3978; GFX900-NEXT:    ; def v[0:1]3979; GFX900-NEXT:    ;;#ASMEND3980; GFX900-NEXT:    s_mov_b32 s4, 0xffff3981; GFX900-NEXT:    v_mov_b32_e32 v2, 03982; GFX900-NEXT:    v_bfi_b32 v0, s4, v0, v13983; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v13984; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]3985; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:43986; GFX900-NEXT:    s_waitcnt vmcnt(0)3987; GFX900-NEXT:    s_setpc_b64 s[30:31]3988;3989; GFX90A-LABEL: v_shuffle_v3f16_v4f16__4_3_3:3990; GFX90A:       ; %bb.0:3991; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3992; GFX90A-NEXT:    ;;#ASMSTART3993; GFX90A-NEXT:    ; def v[0:1]3994; GFX90A-NEXT:    ;;#ASMEND3995; GFX90A-NEXT:    s_mov_b32 s4, 0xffff3996; GFX90A-NEXT:    v_mov_b32_e32 v2, 03997; GFX90A-NEXT:    v_bfi_b32 v0, s4, v0, v13998; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v13999; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]4000; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:44001; GFX90A-NEXT:    s_waitcnt vmcnt(0)4002; GFX90A-NEXT:    s_setpc_b64 s[30:31]4003;4004; GFX942-LABEL: v_shuffle_v3f16_v4f16__4_3_3:4005; GFX942:       ; %bb.0:4006; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4007; GFX942-NEXT:    ;;#ASMSTART4008; GFX942-NEXT:    ; def v[0:1]4009; GFX942-NEXT:    ;;#ASMEND4010; GFX942-NEXT:    s_mov_b32 s2, 0xffff4011; GFX942-NEXT:    v_mov_b32_e32 v2, 04012; GFX942-NEXT:    v_bfi_b32 v0, s2, v0, v14013; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v14014; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]4015; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:44016; GFX942-NEXT:    s_waitcnt vmcnt(0)4017; GFX942-NEXT:    s_setpc_b64 s[30:31]4018  %vec0 = call <4 x half> asm "; def $0", "=v"()4019  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 4, i32 3, i32 3>4020  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 84021  ret void4022}4023 4024define void @v_shuffle_v3f16_v4f16__5_3_3(ptr addrspace(1) inreg %ptr) {4025; GFX900-LABEL: v_shuffle_v3f16_v4f16__5_3_3:4026; GFX900:       ; %bb.0:4027; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4028; GFX900-NEXT:    ;;#ASMSTART4029; GFX900-NEXT:    ; def v[0:1]4030; GFX900-NEXT:    ;;#ASMEND4031; GFX900-NEXT:    s_mov_b32 s4, 0x70603024032; GFX900-NEXT:    v_mov_b32_e32 v4, 04033; GFX900-NEXT:    ;;#ASMSTART4034; GFX900-NEXT:    ; def v[2:3]4035; GFX900-NEXT:    ;;#ASMEND4036; GFX900-NEXT:    v_perm_b32 v0, v1, v2, s44037; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v14038; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]4039; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:44040; GFX900-NEXT:    s_waitcnt vmcnt(0)4041; GFX900-NEXT:    s_setpc_b64 s[30:31]4042;4043; GFX90A-LABEL: v_shuffle_v3f16_v4f16__5_3_3:4044; GFX90A:       ; %bb.0:4045; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4046; GFX90A-NEXT:    ;;#ASMSTART4047; GFX90A-NEXT:    ; def v[0:1]4048; GFX90A-NEXT:    ;;#ASMEND4049; GFX90A-NEXT:    s_mov_b32 s4, 0x70603024050; GFX90A-NEXT:    v_mov_b32_e32 v4, 04051; GFX90A-NEXT:    ;;#ASMSTART4052; GFX90A-NEXT:    ; def v[2:3]4053; GFX90A-NEXT:    ;;#ASMEND4054; GFX90A-NEXT:    v_perm_b32 v0, v1, v2, s44055; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v14056; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]4057; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:44058; GFX90A-NEXT:    s_waitcnt vmcnt(0)4059; GFX90A-NEXT:    s_setpc_b64 s[30:31]4060;4061; GFX942-LABEL: v_shuffle_v3f16_v4f16__5_3_3:4062; GFX942:       ; %bb.0:4063; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4064; GFX942-NEXT:    ;;#ASMSTART4065; GFX942-NEXT:    ; def v[0:1]4066; GFX942-NEXT:    ;;#ASMEND4067; GFX942-NEXT:    s_mov_b32 s2, 0x70603024068; GFX942-NEXT:    v_mov_b32_e32 v4, 04069; GFX942-NEXT:    ;;#ASMSTART4070; GFX942-NEXT:    ; def v[2:3]4071; GFX942-NEXT:    ;;#ASMEND4072; GFX942-NEXT:    s_nop 04073; GFX942-NEXT:    v_perm_b32 v0, v1, v2, s24074; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v14075; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]4076; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:44077; GFX942-NEXT:    s_waitcnt vmcnt(0)4078; GFX942-NEXT:    s_setpc_b64 s[30:31]4079  %vec0 = call <4 x half> asm "; def $0", "=v"()4080  %vec1 = call <4 x half> asm "; def $0", "=v"()4081  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 5, i32 3, i32 3>4082  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 84083  ret void4084}4085 4086define void @v_shuffle_v3f16_v4f16__6_3_3(ptr addrspace(1) inreg %ptr) {4087; GFX900-LABEL: v_shuffle_v3f16_v4f16__6_3_3:4088; GFX900:       ; %bb.0:4089; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4090; GFX900-NEXT:    ;;#ASMSTART4091; GFX900-NEXT:    ; def v[0:1]4092; GFX900-NEXT:    ;;#ASMEND4093; GFX900-NEXT:    s_mov_b32 s4, 0xffff4094; GFX900-NEXT:    v_mov_b32_e32 v4, 04095; GFX900-NEXT:    ;;#ASMSTART4096; GFX900-NEXT:    ; def v[2:3]4097; GFX900-NEXT:    ;;#ASMEND4098; GFX900-NEXT:    v_bfi_b32 v0, s4, v3, v14099; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v14100; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:44101; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]4102; GFX900-NEXT:    s_waitcnt vmcnt(0)4103; GFX900-NEXT:    s_setpc_b64 s[30:31]4104;4105; GFX90A-LABEL: v_shuffle_v3f16_v4f16__6_3_3:4106; GFX90A:       ; %bb.0:4107; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4108; GFX90A-NEXT:    ;;#ASMSTART4109; GFX90A-NEXT:    ; def v[0:1]4110; GFX90A-NEXT:    ;;#ASMEND4111; GFX90A-NEXT:    s_mov_b32 s4, 0xffff4112; GFX90A-NEXT:    v_mov_b32_e32 v4, 04113; GFX90A-NEXT:    ;;#ASMSTART4114; GFX90A-NEXT:    ; def v[2:3]4115; GFX90A-NEXT:    ;;#ASMEND4116; GFX90A-NEXT:    v_bfi_b32 v0, s4, v3, v14117; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v14118; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:44119; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]4120; GFX90A-NEXT:    s_waitcnt vmcnt(0)4121; GFX90A-NEXT:    s_setpc_b64 s[30:31]4122;4123; GFX942-LABEL: v_shuffle_v3f16_v4f16__6_3_3:4124; GFX942:       ; %bb.0:4125; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4126; GFX942-NEXT:    ;;#ASMSTART4127; GFX942-NEXT:    ; def v[0:1]4128; GFX942-NEXT:    ;;#ASMEND4129; GFX942-NEXT:    s_mov_b32 s2, 0xffff4130; GFX942-NEXT:    v_mov_b32_e32 v4, 04131; GFX942-NEXT:    ;;#ASMSTART4132; GFX942-NEXT:    ; def v[2:3]4133; GFX942-NEXT:    ;;#ASMEND4134; GFX942-NEXT:    s_nop 04135; GFX942-NEXT:    v_bfi_b32 v0, s2, v3, v14136; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v14137; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:44138; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]4139; GFX942-NEXT:    s_waitcnt vmcnt(0)4140; GFX942-NEXT:    s_setpc_b64 s[30:31]4141  %vec0 = call <4 x half> asm "; def $0", "=v"()4142  %vec1 = call <4 x half> asm "; def $0", "=v"()4143  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 6, i32 3, i32 3>4144  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 84145  ret void4146}4147 4148define void @v_shuffle_v3f16_v4f16__7_3_3(ptr addrspace(1) inreg %ptr) {4149; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_3_3:4150; GFX900:       ; %bb.0:4151; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4152; GFX900-NEXT:    ;;#ASMSTART4153; GFX900-NEXT:    ; def v[0:1]4154; GFX900-NEXT:    ;;#ASMEND4155; GFX900-NEXT:    s_mov_b32 s4, 0x70603024156; GFX900-NEXT:    v_mov_b32_e32 v4, 04157; GFX900-NEXT:    ;;#ASMSTART4158; GFX900-NEXT:    ; def v[2:3]4159; GFX900-NEXT:    ;;#ASMEND4160; GFX900-NEXT:    v_perm_b32 v0, v1, v3, s44161; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v14162; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]4163; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:44164; GFX900-NEXT:    s_waitcnt vmcnt(0)4165; GFX900-NEXT:    s_setpc_b64 s[30:31]4166;4167; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_3_3:4168; GFX90A:       ; %bb.0:4169; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4170; GFX90A-NEXT:    ;;#ASMSTART4171; GFX90A-NEXT:    ; def v[0:1]4172; GFX90A-NEXT:    ;;#ASMEND4173; GFX90A-NEXT:    s_mov_b32 s4, 0x70603024174; GFX90A-NEXT:    v_mov_b32_e32 v4, 04175; GFX90A-NEXT:    ;;#ASMSTART4176; GFX90A-NEXT:    ; def v[2:3]4177; GFX90A-NEXT:    ;;#ASMEND4178; GFX90A-NEXT:    v_perm_b32 v0, v1, v3, s44179; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v14180; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]4181; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:44182; GFX90A-NEXT:    s_waitcnt vmcnt(0)4183; GFX90A-NEXT:    s_setpc_b64 s[30:31]4184;4185; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_3_3:4186; GFX942:       ; %bb.0:4187; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4188; GFX942-NEXT:    ;;#ASMSTART4189; GFX942-NEXT:    ; def v[0:1]4190; GFX942-NEXT:    ;;#ASMEND4191; GFX942-NEXT:    s_mov_b32 s2, 0x70603024192; GFX942-NEXT:    v_mov_b32_e32 v4, 04193; GFX942-NEXT:    ;;#ASMSTART4194; GFX942-NEXT:    ; def v[2:3]4195; GFX942-NEXT:    ;;#ASMEND4196; GFX942-NEXT:    s_nop 04197; GFX942-NEXT:    v_perm_b32 v0, v1, v3, s24198; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v14199; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]4200; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:44201; GFX942-NEXT:    s_waitcnt vmcnt(0)4202; GFX942-NEXT:    s_setpc_b64 s[30:31]4203  %vec0 = call <4 x half> asm "; def $0", "=v"()4204  %vec1 = call <4 x half> asm "; def $0", "=v"()4205  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 3, i32 3>4206  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 84207  ret void4208}4209 4210define void @v_shuffle_v3f16_v4f16__7_u_3(ptr addrspace(1) inreg %ptr) {4211; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_u_3:4212; GFX900:       ; %bb.0:4213; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4214; GFX900-NEXT:    v_mov_b32_e32 v4, 04215; GFX900-NEXT:    ;;#ASMSTART4216; GFX900-NEXT:    ; def v[0:1]4217; GFX900-NEXT:    ;;#ASMEND4218; GFX900-NEXT:    ;;#ASMSTART4219; GFX900-NEXT:    ; def v[2:3]4220; GFX900-NEXT:    ;;#ASMEND4221; GFX900-NEXT:    v_alignbit_b32 v0, s4, v3, 164222; GFX900-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:44223; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]4224; GFX900-NEXT:    s_waitcnt vmcnt(0)4225; GFX900-NEXT:    s_setpc_b64 s[30:31]4226;4227; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_u_3:4228; GFX90A:       ; %bb.0:4229; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4230; GFX90A-NEXT:    v_mov_b32_e32 v4, 04231; GFX90A-NEXT:    ;;#ASMSTART4232; GFX90A-NEXT:    ; def v[0:1]4233; GFX90A-NEXT:    ;;#ASMEND4234; GFX90A-NEXT:    ;;#ASMSTART4235; GFX90A-NEXT:    ; def v[2:3]4236; GFX90A-NEXT:    ;;#ASMEND4237; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v3, 164238; GFX90A-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:44239; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]4240; GFX90A-NEXT:    s_waitcnt vmcnt(0)4241; GFX90A-NEXT:    s_setpc_b64 s[30:31]4242;4243; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_u_3:4244; GFX942:       ; %bb.0:4245; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4246; GFX942-NEXT:    v_mov_b32_e32 v4, 04247; GFX942-NEXT:    ;;#ASMSTART4248; GFX942-NEXT:    ; def v[0:1]4249; GFX942-NEXT:    ;;#ASMEND4250; GFX942-NEXT:    ;;#ASMSTART4251; GFX942-NEXT:    ; def v[2:3]4252; GFX942-NEXT:    ;;#ASMEND4253; GFX942-NEXT:    s_nop 04254; GFX942-NEXT:    v_alignbit_b32 v0, s0, v3, 164255; GFX942-NEXT:    global_store_short_d16_hi v4, v1, s[0:1] offset:44256; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]4257; GFX942-NEXT:    s_waitcnt vmcnt(0)4258; GFX942-NEXT:    s_setpc_b64 s[30:31]4259  %vec0 = call <4 x half> asm "; def $0", "=v"()4260  %vec1 = call <4 x half> asm "; def $0", "=v"()4261  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 poison, i32 3>4262  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 84263  ret void4264}4265 4266define void @v_shuffle_v3f16_v4f16__7_0_3(ptr addrspace(1) inreg %ptr) {4267; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_0_3:4268; GFX900:       ; %bb.0:4269; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4270; GFX900-NEXT:    v_mov_b32_e32 v4, 04271; GFX900-NEXT:    ;;#ASMSTART4272; GFX900-NEXT:    ; def v[0:1]4273; GFX900-NEXT:    ;;#ASMEND4274; GFX900-NEXT:    ;;#ASMSTART4275; GFX900-NEXT:    ; def v[2:3]4276; GFX900-NEXT:    ;;#ASMEND4277; GFX900-NEXT:    v_alignbit_b32 v0, v0, v3, 164278; GFX900-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:44279; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]4280; GFX900-NEXT:    s_waitcnt vmcnt(0)4281; GFX900-NEXT:    s_setpc_b64 s[30:31]4282;4283; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_0_3:4284; GFX90A:       ; %bb.0:4285; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4286; GFX90A-NEXT:    v_mov_b32_e32 v4, 04287; GFX90A-NEXT:    ;;#ASMSTART4288; GFX90A-NEXT:    ; def v[0:1]4289; GFX90A-NEXT:    ;;#ASMEND4290; GFX90A-NEXT:    ;;#ASMSTART4291; GFX90A-NEXT:    ; def v[2:3]4292; GFX90A-NEXT:    ;;#ASMEND4293; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v3, 164294; GFX90A-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:44295; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]4296; GFX90A-NEXT:    s_waitcnt vmcnt(0)4297; GFX90A-NEXT:    s_setpc_b64 s[30:31]4298;4299; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_0_3:4300; GFX942:       ; %bb.0:4301; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4302; GFX942-NEXT:    v_mov_b32_e32 v4, 04303; GFX942-NEXT:    ;;#ASMSTART4304; GFX942-NEXT:    ; def v[0:1]4305; GFX942-NEXT:    ;;#ASMEND4306; GFX942-NEXT:    ;;#ASMSTART4307; GFX942-NEXT:    ; def v[2:3]4308; GFX942-NEXT:    ;;#ASMEND4309; GFX942-NEXT:    s_nop 04310; GFX942-NEXT:    v_alignbit_b32 v0, v0, v3, 164311; GFX942-NEXT:    global_store_short_d16_hi v4, v1, s[0:1] offset:44312; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]4313; GFX942-NEXT:    s_waitcnt vmcnt(0)4314; GFX942-NEXT:    s_setpc_b64 s[30:31]4315  %vec0 = call <4 x half> asm "; def $0", "=v"()4316  %vec1 = call <4 x half> asm "; def $0", "=v"()4317  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 0, i32 3>4318  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 84319  ret void4320}4321 4322define void @v_shuffle_v3f16_v4f16__7_1_3(ptr addrspace(1) inreg %ptr) {4323; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_1_3:4324; GFX900:       ; %bb.0:4325; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4326; GFX900-NEXT:    v_mov_b32_e32 v4, 04327; GFX900-NEXT:    ;;#ASMSTART4328; GFX900-NEXT:    ; def v[0:1]4329; GFX900-NEXT:    ;;#ASMEND4330; GFX900-NEXT:    s_mov_b32 s4, 0x70603024331; GFX900-NEXT:    ;;#ASMSTART4332; GFX900-NEXT:    ; def v[2:3]4333; GFX900-NEXT:    ;;#ASMEND4334; GFX900-NEXT:    v_perm_b32 v0, v0, v3, s44335; GFX900-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:44336; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]4337; GFX900-NEXT:    s_waitcnt vmcnt(0)4338; GFX900-NEXT:    s_setpc_b64 s[30:31]4339;4340; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_1_3:4341; GFX90A:       ; %bb.0:4342; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4343; GFX90A-NEXT:    v_mov_b32_e32 v4, 04344; GFX90A-NEXT:    ;;#ASMSTART4345; GFX90A-NEXT:    ; def v[0:1]4346; GFX90A-NEXT:    ;;#ASMEND4347; GFX90A-NEXT:    s_mov_b32 s4, 0x70603024348; GFX90A-NEXT:    ;;#ASMSTART4349; GFX90A-NEXT:    ; def v[2:3]4350; GFX90A-NEXT:    ;;#ASMEND4351; GFX90A-NEXT:    v_perm_b32 v0, v0, v3, s44352; GFX90A-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:44353; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]4354; GFX90A-NEXT:    s_waitcnt vmcnt(0)4355; GFX90A-NEXT:    s_setpc_b64 s[30:31]4356;4357; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_1_3:4358; GFX942:       ; %bb.0:4359; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4360; GFX942-NEXT:    v_mov_b32_e32 v4, 04361; GFX942-NEXT:    ;;#ASMSTART4362; GFX942-NEXT:    ; def v[0:1]4363; GFX942-NEXT:    ;;#ASMEND4364; GFX942-NEXT:    s_mov_b32 s2, 0x70603024365; GFX942-NEXT:    ;;#ASMSTART4366; GFX942-NEXT:    ; def v[2:3]4367; GFX942-NEXT:    ;;#ASMEND4368; GFX942-NEXT:    s_nop 04369; GFX942-NEXT:    v_perm_b32 v0, v0, v3, s24370; GFX942-NEXT:    global_store_short_d16_hi v4, v1, s[0:1] offset:44371; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]4372; GFX942-NEXT:    s_waitcnt vmcnt(0)4373; GFX942-NEXT:    s_setpc_b64 s[30:31]4374  %vec0 = call <4 x half> asm "; def $0", "=v"()4375  %vec1 = call <4 x half> asm "; def $0", "=v"()4376  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 1, i32 3>4377  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 84378  ret void4379}4380 4381define void @v_shuffle_v3f16_v4f16__7_2_3(ptr addrspace(1) inreg %ptr) {4382; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_2_3:4383; GFX900:       ; %bb.0:4384; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4385; GFX900-NEXT:    v_mov_b32_e32 v4, 04386; GFX900-NEXT:    ;;#ASMSTART4387; GFX900-NEXT:    ; def v[0:1]4388; GFX900-NEXT:    ;;#ASMEND4389; GFX900-NEXT:    ;;#ASMSTART4390; GFX900-NEXT:    ; def v[2:3]4391; GFX900-NEXT:    ;;#ASMEND4392; GFX900-NEXT:    v_alignbit_b32 v0, v1, v3, 164393; GFX900-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:44394; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]4395; GFX900-NEXT:    s_waitcnt vmcnt(0)4396; GFX900-NEXT:    s_setpc_b64 s[30:31]4397;4398; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_2_3:4399; GFX90A:       ; %bb.0:4400; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4401; GFX90A-NEXT:    v_mov_b32_e32 v4, 04402; GFX90A-NEXT:    ;;#ASMSTART4403; GFX90A-NEXT:    ; def v[0:1]4404; GFX90A-NEXT:    ;;#ASMEND4405; GFX90A-NEXT:    ;;#ASMSTART4406; GFX90A-NEXT:    ; def v[2:3]4407; GFX90A-NEXT:    ;;#ASMEND4408; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v3, 164409; GFX90A-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:44410; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]4411; GFX90A-NEXT:    s_waitcnt vmcnt(0)4412; GFX90A-NEXT:    s_setpc_b64 s[30:31]4413;4414; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_2_3:4415; GFX942:       ; %bb.0:4416; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4417; GFX942-NEXT:    v_mov_b32_e32 v4, 04418; GFX942-NEXT:    ;;#ASMSTART4419; GFX942-NEXT:    ; def v[0:1]4420; GFX942-NEXT:    ;;#ASMEND4421; GFX942-NEXT:    ;;#ASMSTART4422; GFX942-NEXT:    ; def v[2:3]4423; GFX942-NEXT:    ;;#ASMEND4424; GFX942-NEXT:    s_nop 04425; GFX942-NEXT:    v_alignbit_b32 v0, v1, v3, 164426; GFX942-NEXT:    global_store_short_d16_hi v4, v1, s[0:1] offset:44427; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]4428; GFX942-NEXT:    s_waitcnt vmcnt(0)4429; GFX942-NEXT:    s_setpc_b64 s[30:31]4430  %vec0 = call <4 x half> asm "; def $0", "=v"()4431  %vec1 = call <4 x half> asm "; def $0", "=v"()4432  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 2, i32 3>4433  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 84434  ret void4435}4436 4437define void @v_shuffle_v3f16_v4f16__7_4_3(ptr addrspace(1) inreg %ptr) {4438; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_4_3:4439; GFX900:       ; %bb.0:4440; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4441; GFX900-NEXT:    v_mov_b32_e32 v4, 04442; GFX900-NEXT:    ;;#ASMSTART4443; GFX900-NEXT:    ; def v[0:1]4444; GFX900-NEXT:    ;;#ASMEND4445; GFX900-NEXT:    ;;#ASMSTART4446; GFX900-NEXT:    ; def v[2:3]4447; GFX900-NEXT:    ;;#ASMEND4448; GFX900-NEXT:    v_alignbit_b32 v0, v2, v3, 164449; GFX900-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:44450; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]4451; GFX900-NEXT:    s_waitcnt vmcnt(0)4452; GFX900-NEXT:    s_setpc_b64 s[30:31]4453;4454; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_4_3:4455; GFX90A:       ; %bb.0:4456; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4457; GFX90A-NEXT:    v_mov_b32_e32 v4, 04458; GFX90A-NEXT:    ;;#ASMSTART4459; GFX90A-NEXT:    ; def v[0:1]4460; GFX90A-NEXT:    ;;#ASMEND4461; GFX90A-NEXT:    ;;#ASMSTART4462; GFX90A-NEXT:    ; def v[2:3]4463; GFX90A-NEXT:    ;;#ASMEND4464; GFX90A-NEXT:    v_alignbit_b32 v0, v2, v3, 164465; GFX90A-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:44466; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]4467; GFX90A-NEXT:    s_waitcnt vmcnt(0)4468; GFX90A-NEXT:    s_setpc_b64 s[30:31]4469;4470; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_4_3:4471; GFX942:       ; %bb.0:4472; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4473; GFX942-NEXT:    v_mov_b32_e32 v4, 04474; GFX942-NEXT:    ;;#ASMSTART4475; GFX942-NEXT:    ; def v[0:1]4476; GFX942-NEXT:    ;;#ASMEND4477; GFX942-NEXT:    ;;#ASMSTART4478; GFX942-NEXT:    ; def v[2:3]4479; GFX942-NEXT:    ;;#ASMEND4480; GFX942-NEXT:    s_nop 04481; GFX942-NEXT:    v_alignbit_b32 v0, v2, v3, 164482; GFX942-NEXT:    global_store_short_d16_hi v4, v1, s[0:1] offset:44483; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]4484; GFX942-NEXT:    s_waitcnt vmcnt(0)4485; GFX942-NEXT:    s_setpc_b64 s[30:31]4486  %vec0 = call <4 x half> asm "; def $0", "=v"()4487  %vec1 = call <4 x half> asm "; def $0", "=v"()4488  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 4, i32 3>4489  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 84490  ret void4491}4492 4493define void @v_shuffle_v3f16_v4f16__7_5_3(ptr addrspace(1) inreg %ptr) {4494; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_5_3:4495; GFX900:       ; %bb.0:4496; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4497; GFX900-NEXT:    v_mov_b32_e32 v4, 04498; GFX900-NEXT:    ;;#ASMSTART4499; GFX900-NEXT:    ; def v[0:1]4500; GFX900-NEXT:    ;;#ASMEND4501; GFX900-NEXT:    s_mov_b32 s4, 0x70603024502; GFX900-NEXT:    ;;#ASMSTART4503; GFX900-NEXT:    ; def v[2:3]4504; GFX900-NEXT:    ;;#ASMEND4505; GFX900-NEXT:    v_perm_b32 v0, v2, v3, s44506; GFX900-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:44507; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]4508; GFX900-NEXT:    s_waitcnt vmcnt(0)4509; GFX900-NEXT:    s_setpc_b64 s[30:31]4510;4511; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_5_3:4512; GFX90A:       ; %bb.0:4513; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4514; GFX90A-NEXT:    v_mov_b32_e32 v4, 04515; GFX90A-NEXT:    ;;#ASMSTART4516; GFX90A-NEXT:    ; def v[0:1]4517; GFX90A-NEXT:    ;;#ASMEND4518; GFX90A-NEXT:    s_mov_b32 s4, 0x70603024519; GFX90A-NEXT:    ;;#ASMSTART4520; GFX90A-NEXT:    ; def v[2:3]4521; GFX90A-NEXT:    ;;#ASMEND4522; GFX90A-NEXT:    v_perm_b32 v0, v2, v3, s44523; GFX90A-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:44524; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]4525; GFX90A-NEXT:    s_waitcnt vmcnt(0)4526; GFX90A-NEXT:    s_setpc_b64 s[30:31]4527;4528; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_5_3:4529; GFX942:       ; %bb.0:4530; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4531; GFX942-NEXT:    v_mov_b32_e32 v4, 04532; GFX942-NEXT:    ;;#ASMSTART4533; GFX942-NEXT:    ; def v[0:1]4534; GFX942-NEXT:    ;;#ASMEND4535; GFX942-NEXT:    s_mov_b32 s2, 0x70603024536; GFX942-NEXT:    ;;#ASMSTART4537; GFX942-NEXT:    ; def v[2:3]4538; GFX942-NEXT:    ;;#ASMEND4539; GFX942-NEXT:    s_nop 04540; GFX942-NEXT:    v_perm_b32 v0, v2, v3, s24541; GFX942-NEXT:    global_store_short_d16_hi v4, v1, s[0:1] offset:44542; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]4543; GFX942-NEXT:    s_waitcnt vmcnt(0)4544; GFX942-NEXT:    s_setpc_b64 s[30:31]4545  %vec0 = call <4 x half> asm "; def $0", "=v"()4546  %vec1 = call <4 x half> asm "; def $0", "=v"()4547  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 5, i32 3>4548  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 84549  ret void4550}4551 4552define void @v_shuffle_v3f16_v4f16__7_6_3(ptr addrspace(1) inreg %ptr) {4553; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_6_3:4554; GFX900:       ; %bb.0:4555; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4556; GFX900-NEXT:    v_mov_b32_e32 v4, 04557; GFX900-NEXT:    ;;#ASMSTART4558; GFX900-NEXT:    ; def v[0:1]4559; GFX900-NEXT:    ;;#ASMEND4560; GFX900-NEXT:    ;;#ASMSTART4561; GFX900-NEXT:    ; def v[2:3]4562; GFX900-NEXT:    ;;#ASMEND4563; GFX900-NEXT:    v_alignbit_b32 v0, v3, v3, 164564; GFX900-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:44565; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]4566; GFX900-NEXT:    s_waitcnt vmcnt(0)4567; GFX900-NEXT:    s_setpc_b64 s[30:31]4568;4569; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_6_3:4570; GFX90A:       ; %bb.0:4571; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4572; GFX90A-NEXT:    v_mov_b32_e32 v4, 04573; GFX90A-NEXT:    ;;#ASMSTART4574; GFX90A-NEXT:    ; def v[0:1]4575; GFX90A-NEXT:    ;;#ASMEND4576; GFX90A-NEXT:    ;;#ASMSTART4577; GFX90A-NEXT:    ; def v[2:3]4578; GFX90A-NEXT:    ;;#ASMEND4579; GFX90A-NEXT:    v_alignbit_b32 v0, v3, v3, 164580; GFX90A-NEXT:    global_store_short_d16_hi v4, v1, s[16:17] offset:44581; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]4582; GFX90A-NEXT:    s_waitcnt vmcnt(0)4583; GFX90A-NEXT:    s_setpc_b64 s[30:31]4584;4585; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_6_3:4586; GFX942:       ; %bb.0:4587; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4588; GFX942-NEXT:    v_mov_b32_e32 v4, 04589; GFX942-NEXT:    ;;#ASMSTART4590; GFX942-NEXT:    ; def v[0:1]4591; GFX942-NEXT:    ;;#ASMEND4592; GFX942-NEXT:    ;;#ASMSTART4593; GFX942-NEXT:    ; def v[2:3]4594; GFX942-NEXT:    ;;#ASMEND4595; GFX942-NEXT:    s_nop 04596; GFX942-NEXT:    v_alignbit_b32 v0, v3, v3, 164597; GFX942-NEXT:    global_store_short_d16_hi v4, v1, s[0:1] offset:44598; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]4599; GFX942-NEXT:    s_waitcnt vmcnt(0)4600; GFX942-NEXT:    s_setpc_b64 s[30:31]4601  %vec0 = call <4 x half> asm "; def $0", "=v"()4602  %vec1 = call <4 x half> asm "; def $0", "=v"()4603  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 6, i32 3>4604  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 84605  ret void4606}4607 4608define void @v_shuffle_v3f16_v4f16__u_4_4(ptr addrspace(1) inreg %ptr) {4609; GFX9-LABEL: v_shuffle_v3f16_v4f16__u_4_4:4610; GFX9:       ; %bb.0:4611; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4612; GFX9-NEXT:    s_setpc_b64 s[30:31]4613  %vec0 = call <4 x half> asm "; def $0", "=v"()4614  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 poison, i32 4, i32 4>4615  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 84616  ret void4617}4618 4619define void @v_shuffle_v3f16_v4f16__0_4_4(ptr addrspace(1) inreg %ptr) {4620; GFX900-LABEL: v_shuffle_v3f16_v4f16__0_4_4:4621; GFX900:       ; %bb.0:4622; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4623; GFX900-NEXT:    v_mov_b32_e32 v2, 04624; GFX900-NEXT:    ;;#ASMSTART4625; GFX900-NEXT:    ; def v[0:1]4626; GFX900-NEXT:    ;;#ASMEND4627; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:44628; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]4629; GFX900-NEXT:    s_waitcnt vmcnt(0)4630; GFX900-NEXT:    s_setpc_b64 s[30:31]4631;4632; GFX90A-LABEL: v_shuffle_v3f16_v4f16__0_4_4:4633; GFX90A:       ; %bb.0:4634; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4635; GFX90A-NEXT:    v_mov_b32_e32 v2, 04636; GFX90A-NEXT:    ;;#ASMSTART4637; GFX90A-NEXT:    ; def v[0:1]4638; GFX90A-NEXT:    ;;#ASMEND4639; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:44640; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]4641; GFX90A-NEXT:    s_waitcnt vmcnt(0)4642; GFX90A-NEXT:    s_setpc_b64 s[30:31]4643;4644; GFX942-LABEL: v_shuffle_v3f16_v4f16__0_4_4:4645; GFX942:       ; %bb.0:4646; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4647; GFX942-NEXT:    v_mov_b32_e32 v2, 04648; GFX942-NEXT:    ;;#ASMSTART4649; GFX942-NEXT:    ; def v[0:1]4650; GFX942-NEXT:    ;;#ASMEND4651; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:44652; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]4653; GFX942-NEXT:    s_waitcnt vmcnt(0)4654; GFX942-NEXT:    s_setpc_b64 s[30:31]4655  %vec0 = call <4 x half> asm "; def $0", "=v"()4656  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 0, i32 4, i32 4>4657  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 84658  ret void4659}4660 4661define void @v_shuffle_v3f16_v4f16__1_4_4(ptr addrspace(1) inreg %ptr) {4662; GFX900-LABEL: v_shuffle_v3f16_v4f16__1_4_4:4663; GFX900:       ; %bb.0:4664; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4665; GFX900-NEXT:    ;;#ASMSTART4666; GFX900-NEXT:    ; def v[0:1]4667; GFX900-NEXT:    ;;#ASMEND4668; GFX900-NEXT:    v_mov_b32_e32 v2, 04669; GFX900-NEXT:    v_alignbit_b32 v0, s4, v0, 164670; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]4671; GFX900-NEXT:    s_waitcnt vmcnt(0)4672; GFX900-NEXT:    s_setpc_b64 s[30:31]4673;4674; GFX90A-LABEL: v_shuffle_v3f16_v4f16__1_4_4:4675; GFX90A:       ; %bb.0:4676; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4677; GFX90A-NEXT:    ;;#ASMSTART4678; GFX90A-NEXT:    ; def v[0:1]4679; GFX90A-NEXT:    ;;#ASMEND4680; GFX90A-NEXT:    v_mov_b32_e32 v2, 04681; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v0, 164682; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]4683; GFX90A-NEXT:    s_waitcnt vmcnt(0)4684; GFX90A-NEXT:    s_setpc_b64 s[30:31]4685;4686; GFX942-LABEL: v_shuffle_v3f16_v4f16__1_4_4:4687; GFX942:       ; %bb.0:4688; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4689; GFX942-NEXT:    ;;#ASMSTART4690; GFX942-NEXT:    ; def v[0:1]4691; GFX942-NEXT:    ;;#ASMEND4692; GFX942-NEXT:    v_mov_b32_e32 v2, 04693; GFX942-NEXT:    v_alignbit_b32 v0, s0, v0, 164694; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]4695; GFX942-NEXT:    s_waitcnt vmcnt(0)4696; GFX942-NEXT:    s_setpc_b64 s[30:31]4697  %vec0 = call <4 x half> asm "; def $0", "=v"()4698  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 1, i32 4, i32 4>4699  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 84700  ret void4701}4702 4703define void @v_shuffle_v3f16_v4f16__2_4_4(ptr addrspace(1) inreg %ptr) {4704; GFX900-LABEL: v_shuffle_v3f16_v4f16__2_4_4:4705; GFX900:       ; %bb.0:4706; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4707; GFX900-NEXT:    v_mov_b32_e32 v2, 04708; GFX900-NEXT:    ;;#ASMSTART4709; GFX900-NEXT:    ; def v[0:1]4710; GFX900-NEXT:    ;;#ASMEND4711; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]4712; GFX900-NEXT:    s_waitcnt vmcnt(0)4713; GFX900-NEXT:    s_setpc_b64 s[30:31]4714;4715; GFX90A-LABEL: v_shuffle_v3f16_v4f16__2_4_4:4716; GFX90A:       ; %bb.0:4717; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4718; GFX90A-NEXT:    v_mov_b32_e32 v2, 04719; GFX90A-NEXT:    ;;#ASMSTART4720; GFX90A-NEXT:    ; def v[0:1]4721; GFX90A-NEXT:    ;;#ASMEND4722; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]4723; GFX90A-NEXT:    s_waitcnt vmcnt(0)4724; GFX90A-NEXT:    s_setpc_b64 s[30:31]4725;4726; GFX942-LABEL: v_shuffle_v3f16_v4f16__2_4_4:4727; GFX942:       ; %bb.0:4728; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4729; GFX942-NEXT:    v_mov_b32_e32 v2, 04730; GFX942-NEXT:    ;;#ASMSTART4731; GFX942-NEXT:    ; def v[0:1]4732; GFX942-NEXT:    ;;#ASMEND4733; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]4734; GFX942-NEXT:    s_waitcnt vmcnt(0)4735; GFX942-NEXT:    s_setpc_b64 s[30:31]4736  %vec0 = call <4 x half> asm "; def $0", "=v"()4737  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 2, i32 4, i32 4>4738  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 84739  ret void4740}4741 4742define void @v_shuffle_v3f16_v4f16__3_4_4(ptr addrspace(1) inreg %ptr) {4743; GFX900-LABEL: v_shuffle_v3f16_v4f16__3_4_4:4744; GFX900:       ; %bb.0:4745; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4746; GFX900-NEXT:    ;;#ASMSTART4747; GFX900-NEXT:    ; def v[0:1]4748; GFX900-NEXT:    ;;#ASMEND4749; GFX900-NEXT:    v_mov_b32_e32 v2, 04750; GFX900-NEXT:    v_alignbit_b32 v0, s4, v1, 164751; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]4752; GFX900-NEXT:    s_waitcnt vmcnt(0)4753; GFX900-NEXT:    s_setpc_b64 s[30:31]4754;4755; GFX90A-LABEL: v_shuffle_v3f16_v4f16__3_4_4:4756; GFX90A:       ; %bb.0:4757; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4758; GFX90A-NEXT:    ;;#ASMSTART4759; GFX90A-NEXT:    ; def v[0:1]4760; GFX90A-NEXT:    ;;#ASMEND4761; GFX90A-NEXT:    v_mov_b32_e32 v2, 04762; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v1, 164763; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]4764; GFX90A-NEXT:    s_waitcnt vmcnt(0)4765; GFX90A-NEXT:    s_setpc_b64 s[30:31]4766;4767; GFX942-LABEL: v_shuffle_v3f16_v4f16__3_4_4:4768; GFX942:       ; %bb.0:4769; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4770; GFX942-NEXT:    ;;#ASMSTART4771; GFX942-NEXT:    ; def v[0:1]4772; GFX942-NEXT:    ;;#ASMEND4773; GFX942-NEXT:    v_mov_b32_e32 v2, 04774; GFX942-NEXT:    v_alignbit_b32 v0, s0, v1, 164775; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]4776; GFX942-NEXT:    s_waitcnt vmcnt(0)4777; GFX942-NEXT:    s_setpc_b64 s[30:31]4778  %vec0 = call <4 x half> asm "; def $0", "=v"()4779  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 3, i32 4, i32 4>4780  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 84781  ret void4782}4783 4784define void @v_shuffle_v3f16_v4f16__4_4_4(ptr addrspace(1) inreg %ptr) {4785; GFX9-LABEL: v_shuffle_v3f16_v4f16__4_4_4:4786; GFX9:       ; %bb.0:4787; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4788; GFX9-NEXT:    s_setpc_b64 s[30:31]4789  %vec0 = call <4 x half> asm "; def $0", "=v"()4790  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 4, i32 4, i32 4>4791  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 84792  ret void4793}4794 4795define void @v_shuffle_v3f16_v4f16__5_4_4(ptr addrspace(1) inreg %ptr) {4796; GFX900-LABEL: v_shuffle_v3f16_v4f16__5_4_4:4797; GFX900:       ; %bb.0:4798; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4799; GFX900-NEXT:    v_mov_b32_e32 v2, 04800; GFX900-NEXT:    ;;#ASMSTART4801; GFX900-NEXT:    ; def v[0:1]4802; GFX900-NEXT:    ;;#ASMEND4803; GFX900-NEXT:    v_alignbit_b32 v1, v0, v0, 164804; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:44805; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]4806; GFX900-NEXT:    s_waitcnt vmcnt(0)4807; GFX900-NEXT:    s_setpc_b64 s[30:31]4808;4809; GFX90A-LABEL: v_shuffle_v3f16_v4f16__5_4_4:4810; GFX90A:       ; %bb.0:4811; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4812; GFX90A-NEXT:    v_mov_b32_e32 v2, 04813; GFX90A-NEXT:    ;;#ASMSTART4814; GFX90A-NEXT:    ; def v[0:1]4815; GFX90A-NEXT:    ;;#ASMEND4816; GFX90A-NEXT:    v_alignbit_b32 v1, v0, v0, 164817; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:44818; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]4819; GFX90A-NEXT:    s_waitcnt vmcnt(0)4820; GFX90A-NEXT:    s_setpc_b64 s[30:31]4821;4822; GFX942-LABEL: v_shuffle_v3f16_v4f16__5_4_4:4823; GFX942:       ; %bb.0:4824; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4825; GFX942-NEXT:    v_mov_b32_e32 v2, 04826; GFX942-NEXT:    ;;#ASMSTART4827; GFX942-NEXT:    ; def v[0:1]4828; GFX942-NEXT:    ;;#ASMEND4829; GFX942-NEXT:    s_nop 04830; GFX942-NEXT:    v_alignbit_b32 v1, v0, v0, 164831; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:44832; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]4833; GFX942-NEXT:    s_waitcnt vmcnt(0)4834; GFX942-NEXT:    s_setpc_b64 s[30:31]4835  %vec0 = call <4 x half> asm "; def $0", "=v"()4836  %vec1 = call <4 x half> asm "; def $0", "=v"()4837  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 5, i32 4, i32 4>4838  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 84839  ret void4840}4841 4842define void @v_shuffle_v3f16_v4f16__6_4_4(ptr addrspace(1) inreg %ptr) {4843; GFX900-LABEL: v_shuffle_v3f16_v4f16__6_4_4:4844; GFX900:       ; %bb.0:4845; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4846; GFX900-NEXT:    v_mov_b32_e32 v2, 04847; GFX900-NEXT:    ;;#ASMSTART4848; GFX900-NEXT:    ; def v[0:1]4849; GFX900-NEXT:    ;;#ASMEND4850; GFX900-NEXT:    s_mov_b32 s4, 0x50401004851; GFX900-NEXT:    v_perm_b32 v1, v0, v1, s44852; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:44853; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]4854; GFX900-NEXT:    s_waitcnt vmcnt(0)4855; GFX900-NEXT:    s_setpc_b64 s[30:31]4856;4857; GFX90A-LABEL: v_shuffle_v3f16_v4f16__6_4_4:4858; GFX90A:       ; %bb.0:4859; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4860; GFX90A-NEXT:    v_mov_b32_e32 v2, 04861; GFX90A-NEXT:    ;;#ASMSTART4862; GFX90A-NEXT:    ; def v[0:1]4863; GFX90A-NEXT:    ;;#ASMEND4864; GFX90A-NEXT:    s_mov_b32 s4, 0x50401004865; GFX90A-NEXT:    v_perm_b32 v1, v0, v1, s44866; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:44867; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]4868; GFX90A-NEXT:    s_waitcnt vmcnt(0)4869; GFX90A-NEXT:    s_setpc_b64 s[30:31]4870;4871; GFX942-LABEL: v_shuffle_v3f16_v4f16__6_4_4:4872; GFX942:       ; %bb.0:4873; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4874; GFX942-NEXT:    v_mov_b32_e32 v2, 04875; GFX942-NEXT:    ;;#ASMSTART4876; GFX942-NEXT:    ; def v[0:1]4877; GFX942-NEXT:    ;;#ASMEND4878; GFX942-NEXT:    s_mov_b32 s2, 0x50401004879; GFX942-NEXT:    v_perm_b32 v1, v0, v1, s24880; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:44881; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]4882; GFX942-NEXT:    s_waitcnt vmcnt(0)4883; GFX942-NEXT:    s_setpc_b64 s[30:31]4884  %vec0 = call <4 x half> asm "; def $0", "=v"()4885  %vec1 = call <4 x half> asm "; def $0", "=v"()4886  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 6, i32 4, i32 4>4887  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 84888  ret void4889}4890 4891define void @v_shuffle_v3f16_v4f16__7_4_4(ptr addrspace(1) inreg %ptr) {4892; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_4_4:4893; GFX900:       ; %bb.0:4894; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4895; GFX900-NEXT:    v_mov_b32_e32 v2, 04896; GFX900-NEXT:    ;;#ASMSTART4897; GFX900-NEXT:    ; def v[0:1]4898; GFX900-NEXT:    ;;#ASMEND4899; GFX900-NEXT:    v_alignbit_b32 v1, v0, v1, 164900; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:44901; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]4902; GFX900-NEXT:    s_waitcnt vmcnt(0)4903; GFX900-NEXT:    s_setpc_b64 s[30:31]4904;4905; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_4_4:4906; GFX90A:       ; %bb.0:4907; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4908; GFX90A-NEXT:    v_mov_b32_e32 v2, 04909; GFX90A-NEXT:    ;;#ASMSTART4910; GFX90A-NEXT:    ; def v[0:1]4911; GFX90A-NEXT:    ;;#ASMEND4912; GFX90A-NEXT:    v_alignbit_b32 v1, v0, v1, 164913; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:44914; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]4915; GFX90A-NEXT:    s_waitcnt vmcnt(0)4916; GFX90A-NEXT:    s_setpc_b64 s[30:31]4917;4918; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_4_4:4919; GFX942:       ; %bb.0:4920; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4921; GFX942-NEXT:    v_mov_b32_e32 v2, 04922; GFX942-NEXT:    ;;#ASMSTART4923; GFX942-NEXT:    ; def v[0:1]4924; GFX942-NEXT:    ;;#ASMEND4925; GFX942-NEXT:    s_nop 04926; GFX942-NEXT:    v_alignbit_b32 v1, v0, v1, 164927; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:44928; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]4929; GFX942-NEXT:    s_waitcnt vmcnt(0)4930; GFX942-NEXT:    s_setpc_b64 s[30:31]4931  %vec0 = call <4 x half> asm "; def $0", "=v"()4932  %vec1 = call <4 x half> asm "; def $0", "=v"()4933  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 4, i32 4>4934  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 84935  ret void4936}4937 4938define void @v_shuffle_v3f16_v4f16__7_u_4(ptr addrspace(1) inreg %ptr) {4939; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_u_4:4940; GFX900:       ; %bb.0:4941; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4942; GFX900-NEXT:    v_mov_b32_e32 v2, 04943; GFX900-NEXT:    ;;#ASMSTART4944; GFX900-NEXT:    ; def v[0:1]4945; GFX900-NEXT:    ;;#ASMEND4946; GFX900-NEXT:    v_alignbit_b32 v1, s4, v1, 164947; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:44948; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]4949; GFX900-NEXT:    s_waitcnt vmcnt(0)4950; GFX900-NEXT:    s_setpc_b64 s[30:31]4951;4952; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_u_4:4953; GFX90A:       ; %bb.0:4954; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4955; GFX90A-NEXT:    v_mov_b32_e32 v2, 04956; GFX90A-NEXT:    ;;#ASMSTART4957; GFX90A-NEXT:    ; def v[0:1]4958; GFX90A-NEXT:    ;;#ASMEND4959; GFX90A-NEXT:    v_alignbit_b32 v1, s4, v1, 164960; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:44961; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]4962; GFX90A-NEXT:    s_waitcnt vmcnt(0)4963; GFX90A-NEXT:    s_setpc_b64 s[30:31]4964;4965; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_u_4:4966; GFX942:       ; %bb.0:4967; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4968; GFX942-NEXT:    v_mov_b32_e32 v2, 04969; GFX942-NEXT:    ;;#ASMSTART4970; GFX942-NEXT:    ; def v[0:1]4971; GFX942-NEXT:    ;;#ASMEND4972; GFX942-NEXT:    s_nop 04973; GFX942-NEXT:    v_alignbit_b32 v1, s0, v1, 164974; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:44975; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]4976; GFX942-NEXT:    s_waitcnt vmcnt(0)4977; GFX942-NEXT:    s_setpc_b64 s[30:31]4978  %vec0 = call <4 x half> asm "; def $0", "=v"()4979  %vec1 = call <4 x half> asm "; def $0", "=v"()4980  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 poison, i32 4>4981  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 84982  ret void4983}4984 4985define void @v_shuffle_v3f16_v4f16__7_0_4(ptr addrspace(1) inreg %ptr) {4986; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_0_4:4987; GFX900:       ; %bb.0:4988; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4989; GFX900-NEXT:    ;;#ASMSTART4990; GFX900-NEXT:    ; def v[0:1]4991; GFX900-NEXT:    ;;#ASMEND4992; GFX900-NEXT:    v_mov_b32_e32 v3, 04993; GFX900-NEXT:    ;;#ASMSTART4994; GFX900-NEXT:    ; def v[1:2]4995; GFX900-NEXT:    ;;#ASMEND4996; GFX900-NEXT:    v_alignbit_b32 v0, v0, v2, 164997; GFX900-NEXT:    global_store_short v3, v1, s[16:17] offset:44998; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]4999; GFX900-NEXT:    s_waitcnt vmcnt(0)5000; GFX900-NEXT:    s_setpc_b64 s[30:31]5001;5002; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_0_4:5003; GFX90A:       ; %bb.0:5004; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5005; GFX90A-NEXT:    v_mov_b32_e32 v4, 05006; GFX90A-NEXT:    ;;#ASMSTART5007; GFX90A-NEXT:    ; def v[0:1]5008; GFX90A-NEXT:    ;;#ASMEND5009; GFX90A-NEXT:    ;;#ASMSTART5010; GFX90A-NEXT:    ; def v[2:3]5011; GFX90A-NEXT:    ;;#ASMEND5012; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v3, 165013; GFX90A-NEXT:    global_store_short v4, v2, s[16:17] offset:45014; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]5015; GFX90A-NEXT:    s_waitcnt vmcnt(0)5016; GFX90A-NEXT:    s_setpc_b64 s[30:31]5017;5018; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_0_4:5019; GFX942:       ; %bb.0:5020; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5021; GFX942-NEXT:    v_mov_b32_e32 v4, 05022; GFX942-NEXT:    ;;#ASMSTART5023; GFX942-NEXT:    ; def v[0:1]5024; GFX942-NEXT:    ;;#ASMEND5025; GFX942-NEXT:    ;;#ASMSTART5026; GFX942-NEXT:    ; def v[2:3]5027; GFX942-NEXT:    ;;#ASMEND5028; GFX942-NEXT:    s_nop 05029; GFX942-NEXT:    v_alignbit_b32 v0, v0, v3, 165030; GFX942-NEXT:    global_store_short v4, v2, s[0:1] offset:45031; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]5032; GFX942-NEXT:    s_waitcnt vmcnt(0)5033; GFX942-NEXT:    s_setpc_b64 s[30:31]5034  %vec0 = call <4 x half> asm "; def $0", "=v"()5035  %vec1 = call <4 x half> asm "; def $0", "=v"()5036  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 0, i32 4>5037  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 85038  ret void5039}5040 5041define void @v_shuffle_v3f16_v4f16__7_1_4(ptr addrspace(1) inreg %ptr) {5042; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_1_4:5043; GFX900:       ; %bb.0:5044; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5045; GFX900-NEXT:    ;;#ASMSTART5046; GFX900-NEXT:    ; def v[0:1]5047; GFX900-NEXT:    ;;#ASMEND5048; GFX900-NEXT:    v_mov_b32_e32 v3, 05049; GFX900-NEXT:    ;;#ASMSTART5050; GFX900-NEXT:    ; def v[1:2]5051; GFX900-NEXT:    ;;#ASMEND5052; GFX900-NEXT:    s_mov_b32 s4, 0x70603025053; GFX900-NEXT:    v_perm_b32 v0, v0, v2, s45054; GFX900-NEXT:    global_store_short v3, v1, s[16:17] offset:45055; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]5056; GFX900-NEXT:    s_waitcnt vmcnt(0)5057; GFX900-NEXT:    s_setpc_b64 s[30:31]5058;5059; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_1_4:5060; GFX90A:       ; %bb.0:5061; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5062; GFX90A-NEXT:    v_mov_b32_e32 v4, 05063; GFX90A-NEXT:    ;;#ASMSTART5064; GFX90A-NEXT:    ; def v[0:1]5065; GFX90A-NEXT:    ;;#ASMEND5066; GFX90A-NEXT:    ;;#ASMSTART5067; GFX90A-NEXT:    ; def v[2:3]5068; GFX90A-NEXT:    ;;#ASMEND5069; GFX90A-NEXT:    s_mov_b32 s4, 0x70603025070; GFX90A-NEXT:    v_perm_b32 v0, v0, v3, s45071; GFX90A-NEXT:    global_store_short v4, v2, s[16:17] offset:45072; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]5073; GFX90A-NEXT:    s_waitcnt vmcnt(0)5074; GFX90A-NEXT:    s_setpc_b64 s[30:31]5075;5076; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_1_4:5077; GFX942:       ; %bb.0:5078; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5079; GFX942-NEXT:    v_mov_b32_e32 v4, 05080; GFX942-NEXT:    ;;#ASMSTART5081; GFX942-NEXT:    ; def v[0:1]5082; GFX942-NEXT:    ;;#ASMEND5083; GFX942-NEXT:    ;;#ASMSTART5084; GFX942-NEXT:    ; def v[2:3]5085; GFX942-NEXT:    ;;#ASMEND5086; GFX942-NEXT:    s_mov_b32 s2, 0x70603025087; GFX942-NEXT:    v_perm_b32 v0, v0, v3, s25088; GFX942-NEXT:    global_store_short v4, v2, s[0:1] offset:45089; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]5090; GFX942-NEXT:    s_waitcnt vmcnt(0)5091; GFX942-NEXT:    s_setpc_b64 s[30:31]5092  %vec0 = call <4 x half> asm "; def $0", "=v"()5093  %vec1 = call <4 x half> asm "; def $0", "=v"()5094  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 1, i32 4>5095  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 85096  ret void5097}5098 5099define void @v_shuffle_v3f16_v4f16__7_2_4(ptr addrspace(1) inreg %ptr) {5100; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_2_4:5101; GFX900:       ; %bb.0:5102; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5103; GFX900-NEXT:    v_mov_b32_e32 v4, 05104; GFX900-NEXT:    ;;#ASMSTART5105; GFX900-NEXT:    ; def v[0:1]5106; GFX900-NEXT:    ;;#ASMEND5107; GFX900-NEXT:    ;;#ASMSTART5108; GFX900-NEXT:    ; def v[2:3]5109; GFX900-NEXT:    ;;#ASMEND5110; GFX900-NEXT:    v_alignbit_b32 v0, v1, v3, 165111; GFX900-NEXT:    global_store_short v4, v2, s[16:17] offset:45112; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]5113; GFX900-NEXT:    s_waitcnt vmcnt(0)5114; GFX900-NEXT:    s_setpc_b64 s[30:31]5115;5116; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_2_4:5117; GFX90A:       ; %bb.0:5118; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5119; GFX90A-NEXT:    v_mov_b32_e32 v4, 05120; GFX90A-NEXT:    ;;#ASMSTART5121; GFX90A-NEXT:    ; def v[0:1]5122; GFX90A-NEXT:    ;;#ASMEND5123; GFX90A-NEXT:    ;;#ASMSTART5124; GFX90A-NEXT:    ; def v[2:3]5125; GFX90A-NEXT:    ;;#ASMEND5126; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v3, 165127; GFX90A-NEXT:    global_store_short v4, v2, s[16:17] offset:45128; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]5129; GFX90A-NEXT:    s_waitcnt vmcnt(0)5130; GFX90A-NEXT:    s_setpc_b64 s[30:31]5131;5132; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_2_4:5133; GFX942:       ; %bb.0:5134; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5135; GFX942-NEXT:    v_mov_b32_e32 v4, 05136; GFX942-NEXT:    ;;#ASMSTART5137; GFX942-NEXT:    ; def v[0:1]5138; GFX942-NEXT:    ;;#ASMEND5139; GFX942-NEXT:    ;;#ASMSTART5140; GFX942-NEXT:    ; def v[2:3]5141; GFX942-NEXT:    ;;#ASMEND5142; GFX942-NEXT:    s_nop 05143; GFX942-NEXT:    v_alignbit_b32 v0, v1, v3, 165144; GFX942-NEXT:    global_store_short v4, v2, s[0:1] offset:45145; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]5146; GFX942-NEXT:    s_waitcnt vmcnt(0)5147; GFX942-NEXT:    s_setpc_b64 s[30:31]5148  %vec0 = call <4 x half> asm "; def $0", "=v"()5149  %vec1 = call <4 x half> asm "; def $0", "=v"()5150  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 2, i32 4>5151  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 85152  ret void5153}5154 5155define void @v_shuffle_v3f16_v4f16__7_3_4(ptr addrspace(1) inreg %ptr) {5156; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_3_4:5157; GFX900:       ; %bb.0:5158; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5159; GFX900-NEXT:    v_mov_b32_e32 v4, 05160; GFX900-NEXT:    ;;#ASMSTART5161; GFX900-NEXT:    ; def v[0:1]5162; GFX900-NEXT:    ;;#ASMEND5163; GFX900-NEXT:    ;;#ASMSTART5164; GFX900-NEXT:    ; def v[2:3]5165; GFX900-NEXT:    ;;#ASMEND5166; GFX900-NEXT:    s_mov_b32 s4, 0x70603025167; GFX900-NEXT:    v_perm_b32 v0, v1, v3, s45168; GFX900-NEXT:    global_store_short v4, v2, s[16:17] offset:45169; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]5170; GFX900-NEXT:    s_waitcnt vmcnt(0)5171; GFX900-NEXT:    s_setpc_b64 s[30:31]5172;5173; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_3_4:5174; GFX90A:       ; %bb.0:5175; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5176; GFX90A-NEXT:    v_mov_b32_e32 v4, 05177; GFX90A-NEXT:    ;;#ASMSTART5178; GFX90A-NEXT:    ; def v[0:1]5179; GFX90A-NEXT:    ;;#ASMEND5180; GFX90A-NEXT:    ;;#ASMSTART5181; GFX90A-NEXT:    ; def v[2:3]5182; GFX90A-NEXT:    ;;#ASMEND5183; GFX90A-NEXT:    s_mov_b32 s4, 0x70603025184; GFX90A-NEXT:    v_perm_b32 v0, v1, v3, s45185; GFX90A-NEXT:    global_store_short v4, v2, s[16:17] offset:45186; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]5187; GFX90A-NEXT:    s_waitcnt vmcnt(0)5188; GFX90A-NEXT:    s_setpc_b64 s[30:31]5189;5190; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_3_4:5191; GFX942:       ; %bb.0:5192; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5193; GFX942-NEXT:    v_mov_b32_e32 v4, 05194; GFX942-NEXT:    ;;#ASMSTART5195; GFX942-NEXT:    ; def v[0:1]5196; GFX942-NEXT:    ;;#ASMEND5197; GFX942-NEXT:    ;;#ASMSTART5198; GFX942-NEXT:    ; def v[2:3]5199; GFX942-NEXT:    ;;#ASMEND5200; GFX942-NEXT:    s_mov_b32 s2, 0x70603025201; GFX942-NEXT:    v_perm_b32 v0, v1, v3, s25202; GFX942-NEXT:    global_store_short v4, v2, s[0:1] offset:45203; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]5204; GFX942-NEXT:    s_waitcnt vmcnt(0)5205; GFX942-NEXT:    s_setpc_b64 s[30:31]5206  %vec0 = call <4 x half> asm "; def $0", "=v"()5207  %vec1 = call <4 x half> asm "; def $0", "=v"()5208  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 3, i32 4>5209  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 85210  ret void5211}5212 5213define void @v_shuffle_v3f16_v4f16__7_5_4(ptr addrspace(1) inreg %ptr) {5214; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_5_4:5215; GFX900:       ; %bb.0:5216; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5217; GFX900-NEXT:    v_mov_b32_e32 v2, 05218; GFX900-NEXT:    ;;#ASMSTART5219; GFX900-NEXT:    ; def v[0:1]5220; GFX900-NEXT:    ;;#ASMEND5221; GFX900-NEXT:    s_mov_b32 s4, 0x70603025222; GFX900-NEXT:    v_perm_b32 v1, v0, v1, s45223; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:45224; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]5225; GFX900-NEXT:    s_waitcnt vmcnt(0)5226; GFX900-NEXT:    s_setpc_b64 s[30:31]5227;5228; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_5_4:5229; GFX90A:       ; %bb.0:5230; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5231; GFX90A-NEXT:    v_mov_b32_e32 v2, 05232; GFX90A-NEXT:    ;;#ASMSTART5233; GFX90A-NEXT:    ; def v[0:1]5234; GFX90A-NEXT:    ;;#ASMEND5235; GFX90A-NEXT:    s_mov_b32 s4, 0x70603025236; GFX90A-NEXT:    v_perm_b32 v1, v0, v1, s45237; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:45238; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]5239; GFX90A-NEXT:    s_waitcnt vmcnt(0)5240; GFX90A-NEXT:    s_setpc_b64 s[30:31]5241;5242; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_5_4:5243; GFX942:       ; %bb.0:5244; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5245; GFX942-NEXT:    v_mov_b32_e32 v2, 05246; GFX942-NEXT:    ;;#ASMSTART5247; GFX942-NEXT:    ; def v[0:1]5248; GFX942-NEXT:    ;;#ASMEND5249; GFX942-NEXT:    s_mov_b32 s2, 0x70603025250; GFX942-NEXT:    v_perm_b32 v1, v0, v1, s25251; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:45252; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]5253; GFX942-NEXT:    s_waitcnt vmcnt(0)5254; GFX942-NEXT:    s_setpc_b64 s[30:31]5255  %vec0 = call <4 x half> asm "; def $0", "=v"()5256  %vec1 = call <4 x half> asm "; def $0", "=v"()5257  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 5, i32 4>5258  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 85259  ret void5260}5261 5262define void @v_shuffle_v3f16_v4f16__7_6_4(ptr addrspace(1) inreg %ptr) {5263; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_6_4:5264; GFX900:       ; %bb.0:5265; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5266; GFX900-NEXT:    v_mov_b32_e32 v2, 05267; GFX900-NEXT:    ;;#ASMSTART5268; GFX900-NEXT:    ; def v[0:1]5269; GFX900-NEXT:    ;;#ASMEND5270; GFX900-NEXT:    v_alignbit_b32 v1, v1, v1, 165271; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:45272; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]5273; GFX900-NEXT:    s_waitcnt vmcnt(0)5274; GFX900-NEXT:    s_setpc_b64 s[30:31]5275;5276; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_6_4:5277; GFX90A:       ; %bb.0:5278; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5279; GFX90A-NEXT:    v_mov_b32_e32 v2, 05280; GFX90A-NEXT:    ;;#ASMSTART5281; GFX90A-NEXT:    ; def v[0:1]5282; GFX90A-NEXT:    ;;#ASMEND5283; GFX90A-NEXT:    v_alignbit_b32 v1, v1, v1, 165284; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:45285; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]5286; GFX90A-NEXT:    s_waitcnt vmcnt(0)5287; GFX90A-NEXT:    s_setpc_b64 s[30:31]5288;5289; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_6_4:5290; GFX942:       ; %bb.0:5291; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5292; GFX942-NEXT:    v_mov_b32_e32 v2, 05293; GFX942-NEXT:    ;;#ASMSTART5294; GFX942-NEXT:    ; def v[0:1]5295; GFX942-NEXT:    ;;#ASMEND5296; GFX942-NEXT:    s_nop 05297; GFX942-NEXT:    v_alignbit_b32 v1, v1, v1, 165298; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:45299; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]5300; GFX942-NEXT:    s_waitcnt vmcnt(0)5301; GFX942-NEXT:    s_setpc_b64 s[30:31]5302  %vec0 = call <4 x half> asm "; def $0", "=v"()5303  %vec1 = call <4 x half> asm "; def $0", "=v"()5304  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 6, i32 4>5305  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 85306  ret void5307}5308 5309define void @v_shuffle_v3f16_v4f16__u_5_5(ptr addrspace(1) inreg %ptr) {5310; GFX900-LABEL: v_shuffle_v3f16_v4f16__u_5_5:5311; GFX900:       ; %bb.0:5312; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5313; GFX900-NEXT:    v_mov_b32_e32 v2, 05314; GFX900-NEXT:    ;;#ASMSTART5315; GFX900-NEXT:    ; def v[0:1]5316; GFX900-NEXT:    ;;#ASMEND5317; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]5318; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v05319; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:45320; GFX900-NEXT:    s_waitcnt vmcnt(0)5321; GFX900-NEXT:    s_setpc_b64 s[30:31]5322;5323; GFX90A-LABEL: v_shuffle_v3f16_v4f16__u_5_5:5324; GFX90A:       ; %bb.0:5325; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5326; GFX90A-NEXT:    v_mov_b32_e32 v2, 05327; GFX90A-NEXT:    ;;#ASMSTART5328; GFX90A-NEXT:    ; def v[0:1]5329; GFX90A-NEXT:    ;;#ASMEND5330; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]5331; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v05332; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:45333; GFX90A-NEXT:    s_waitcnt vmcnt(0)5334; GFX90A-NEXT:    s_setpc_b64 s[30:31]5335;5336; GFX942-LABEL: v_shuffle_v3f16_v4f16__u_5_5:5337; GFX942:       ; %bb.0:5338; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5339; GFX942-NEXT:    v_mov_b32_e32 v2, 05340; GFX942-NEXT:    ;;#ASMSTART5341; GFX942-NEXT:    ; def v[0:1]5342; GFX942-NEXT:    ;;#ASMEND5343; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]5344; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v05345; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:45346; GFX942-NEXT:    s_waitcnt vmcnt(0)5347; GFX942-NEXT:    s_setpc_b64 s[30:31]5348  %vec0 = call <4 x half> asm "; def $0", "=v"()5349  %vec1 = call <4 x half> asm "; def $0", "=v"()5350  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 poison, i32 5, i32 5>5351  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 85352  ret void5353}5354 5355define void @v_shuffle_v3f16_v4f16__0_5_5(ptr addrspace(1) inreg %ptr) {5356; GFX900-LABEL: v_shuffle_v3f16_v4f16__0_5_5:5357; GFX900:       ; %bb.0:5358; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5359; GFX900-NEXT:    ;;#ASMSTART5360; GFX900-NEXT:    ; def v[0:1]5361; GFX900-NEXT:    ;;#ASMEND5362; GFX900-NEXT:    s_mov_b32 s4, 0xffff5363; GFX900-NEXT:    v_mov_b32_e32 v3, 05364; GFX900-NEXT:    ;;#ASMSTART5365; GFX900-NEXT:    ; def v[1:2]5366; GFX900-NEXT:    ;;#ASMEND5367; GFX900-NEXT:    v_bfi_b32 v0, s4, v0, v15368; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]5369; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v15370; GFX900-NEXT:    global_store_short v3, v0, s[16:17] offset:45371; GFX900-NEXT:    s_waitcnt vmcnt(0)5372; GFX900-NEXT:    s_setpc_b64 s[30:31]5373;5374; GFX90A-LABEL: v_shuffle_v3f16_v4f16__0_5_5:5375; GFX90A:       ; %bb.0:5376; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5377; GFX90A-NEXT:    ;;#ASMSTART5378; GFX90A-NEXT:    ; def v[0:1]5379; GFX90A-NEXT:    ;;#ASMEND5380; GFX90A-NEXT:    s_mov_b32 s4, 0xffff5381; GFX90A-NEXT:    v_mov_b32_e32 v4, 05382; GFX90A-NEXT:    ;;#ASMSTART5383; GFX90A-NEXT:    ; def v[2:3]5384; GFX90A-NEXT:    ;;#ASMEND5385; GFX90A-NEXT:    v_bfi_b32 v0, s4, v0, v25386; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]5387; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v25388; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:45389; GFX90A-NEXT:    s_waitcnt vmcnt(0)5390; GFX90A-NEXT:    s_setpc_b64 s[30:31]5391;5392; GFX942-LABEL: v_shuffle_v3f16_v4f16__0_5_5:5393; GFX942:       ; %bb.0:5394; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5395; GFX942-NEXT:    ;;#ASMSTART5396; GFX942-NEXT:    ; def v[0:1]5397; GFX942-NEXT:    ;;#ASMEND5398; GFX942-NEXT:    s_mov_b32 s2, 0xffff5399; GFX942-NEXT:    v_mov_b32_e32 v4, 05400; GFX942-NEXT:    ;;#ASMSTART5401; GFX942-NEXT:    ; def v[2:3]5402; GFX942-NEXT:    ;;#ASMEND5403; GFX942-NEXT:    s_nop 05404; GFX942-NEXT:    v_bfi_b32 v0, s2, v0, v25405; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]5406; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v25407; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:45408; GFX942-NEXT:    s_waitcnt vmcnt(0)5409; GFX942-NEXT:    s_setpc_b64 s[30:31]5410  %vec0 = call <4 x half> asm "; def $0", "=v"()5411  %vec1 = call <4 x half> asm "; def $0", "=v"()5412  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 0, i32 5, i32 5>5413  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 85414  ret void5415}5416 5417define void @v_shuffle_v3f16_v4f16__1_5_5(ptr addrspace(1) inreg %ptr) {5418; GFX900-LABEL: v_shuffle_v3f16_v4f16__1_5_5:5419; GFX900:       ; %bb.0:5420; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5421; GFX900-NEXT:    ;;#ASMSTART5422; GFX900-NEXT:    ; def v[0:1]5423; GFX900-NEXT:    ;;#ASMEND5424; GFX900-NEXT:    s_mov_b32 s4, 0x70603025425; GFX900-NEXT:    v_mov_b32_e32 v3, 05426; GFX900-NEXT:    ;;#ASMSTART5427; GFX900-NEXT:    ; def v[1:2]5428; GFX900-NEXT:    ;;#ASMEND5429; GFX900-NEXT:    v_perm_b32 v0, v1, v0, s45430; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]5431; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v15432; GFX900-NEXT:    global_store_short v3, v0, s[16:17] offset:45433; GFX900-NEXT:    s_waitcnt vmcnt(0)5434; GFX900-NEXT:    s_setpc_b64 s[30:31]5435;5436; GFX90A-LABEL: v_shuffle_v3f16_v4f16__1_5_5:5437; GFX90A:       ; %bb.0:5438; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5439; GFX90A-NEXT:    ;;#ASMSTART5440; GFX90A-NEXT:    ; def v[0:1]5441; GFX90A-NEXT:    ;;#ASMEND5442; GFX90A-NEXT:    s_mov_b32 s4, 0x70603025443; GFX90A-NEXT:    v_mov_b32_e32 v4, 05444; GFX90A-NEXT:    ;;#ASMSTART5445; GFX90A-NEXT:    ; def v[2:3]5446; GFX90A-NEXT:    ;;#ASMEND5447; GFX90A-NEXT:    v_perm_b32 v0, v2, v0, s45448; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]5449; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v25450; GFX90A-NEXT:    global_store_short v4, v0, s[16:17] offset:45451; GFX90A-NEXT:    s_waitcnt vmcnt(0)5452; GFX90A-NEXT:    s_setpc_b64 s[30:31]5453;5454; GFX942-LABEL: v_shuffle_v3f16_v4f16__1_5_5:5455; GFX942:       ; %bb.0:5456; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5457; GFX942-NEXT:    ;;#ASMSTART5458; GFX942-NEXT:    ; def v[0:1]5459; GFX942-NEXT:    ;;#ASMEND5460; GFX942-NEXT:    s_mov_b32 s2, 0x70603025461; GFX942-NEXT:    v_mov_b32_e32 v4, 05462; GFX942-NEXT:    ;;#ASMSTART5463; GFX942-NEXT:    ; def v[2:3]5464; GFX942-NEXT:    ;;#ASMEND5465; GFX942-NEXT:    s_nop 05466; GFX942-NEXT:    v_perm_b32 v0, v2, v0, s25467; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]5468; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v25469; GFX942-NEXT:    global_store_short v4, v0, s[0:1] offset:45470; GFX942-NEXT:    s_waitcnt vmcnt(0)5471; GFX942-NEXT:    s_setpc_b64 s[30:31]5472  %vec0 = call <4 x half> asm "; def $0", "=v"()5473  %vec1 = call <4 x half> asm "; def $0", "=v"()5474  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 1, i32 5, i32 5>5475  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 85476  ret void5477}5478 5479define void @v_shuffle_v3f16_v4f16__2_5_5(ptr addrspace(1) inreg %ptr) {5480; GFX900-LABEL: v_shuffle_v3f16_v4f16__2_5_5:5481; GFX900:       ; %bb.0:5482; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5483; GFX900-NEXT:    ;;#ASMSTART5484; GFX900-NEXT:    ; def v[0:1]5485; GFX900-NEXT:    ;;#ASMEND5486; GFX900-NEXT:    s_mov_b32 s4, 0xffff5487; GFX900-NEXT:    v_mov_b32_e32 v4, 05488; GFX900-NEXT:    ;;#ASMSTART5489; GFX900-NEXT:    ; def v[2:3]5490; GFX900-NEXT:    ;;#ASMEND5491; GFX900-NEXT:    v_bfi_b32 v0, s4, v1, v25492; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v25493; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:45494; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]5495; GFX900-NEXT:    s_waitcnt vmcnt(0)5496; GFX900-NEXT:    s_setpc_b64 s[30:31]5497;5498; GFX90A-LABEL: v_shuffle_v3f16_v4f16__2_5_5:5499; GFX90A:       ; %bb.0:5500; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5501; GFX90A-NEXT:    ;;#ASMSTART5502; GFX90A-NEXT:    ; def v[0:1]5503; GFX90A-NEXT:    ;;#ASMEND5504; GFX90A-NEXT:    s_mov_b32 s4, 0xffff5505; GFX90A-NEXT:    v_mov_b32_e32 v4, 05506; GFX90A-NEXT:    ;;#ASMSTART5507; GFX90A-NEXT:    ; def v[2:3]5508; GFX90A-NEXT:    ;;#ASMEND5509; GFX90A-NEXT:    v_bfi_b32 v0, s4, v1, v25510; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v25511; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:45512; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]5513; GFX90A-NEXT:    s_waitcnt vmcnt(0)5514; GFX90A-NEXT:    s_setpc_b64 s[30:31]5515;5516; GFX942-LABEL: v_shuffle_v3f16_v4f16__2_5_5:5517; GFX942:       ; %bb.0:5518; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5519; GFX942-NEXT:    ;;#ASMSTART5520; GFX942-NEXT:    ; def v[0:1]5521; GFX942-NEXT:    ;;#ASMEND5522; GFX942-NEXT:    s_mov_b32 s2, 0xffff5523; GFX942-NEXT:    v_mov_b32_e32 v4, 05524; GFX942-NEXT:    ;;#ASMSTART5525; GFX942-NEXT:    ; def v[2:3]5526; GFX942-NEXT:    ;;#ASMEND5527; GFX942-NEXT:    s_nop 05528; GFX942-NEXT:    v_bfi_b32 v0, s2, v1, v25529; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v25530; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:45531; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]5532; GFX942-NEXT:    s_waitcnt vmcnt(0)5533; GFX942-NEXT:    s_setpc_b64 s[30:31]5534  %vec0 = call <4 x half> asm "; def $0", "=v"()5535  %vec1 = call <4 x half> asm "; def $0", "=v"()5536  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 2, i32 5, i32 5>5537  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 85538  ret void5539}5540 5541define void @v_shuffle_v3f16_v4f16__3_5_5(ptr addrspace(1) inreg %ptr) {5542; GFX900-LABEL: v_shuffle_v3f16_v4f16__3_5_5:5543; GFX900:       ; %bb.0:5544; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5545; GFX900-NEXT:    ;;#ASMSTART5546; GFX900-NEXT:    ; def v[0:1]5547; GFX900-NEXT:    ;;#ASMEND5548; GFX900-NEXT:    s_mov_b32 s4, 0x70603025549; GFX900-NEXT:    v_mov_b32_e32 v4, 05550; GFX900-NEXT:    ;;#ASMSTART5551; GFX900-NEXT:    ; def v[2:3]5552; GFX900-NEXT:    ;;#ASMEND5553; GFX900-NEXT:    v_perm_b32 v0, v2, v1, s45554; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v25555; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]5556; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:45557; GFX900-NEXT:    s_waitcnt vmcnt(0)5558; GFX900-NEXT:    s_setpc_b64 s[30:31]5559;5560; GFX90A-LABEL: v_shuffle_v3f16_v4f16__3_5_5:5561; GFX90A:       ; %bb.0:5562; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5563; GFX90A-NEXT:    ;;#ASMSTART5564; GFX90A-NEXT:    ; def v[0:1]5565; GFX90A-NEXT:    ;;#ASMEND5566; GFX90A-NEXT:    s_mov_b32 s4, 0x70603025567; GFX90A-NEXT:    v_mov_b32_e32 v4, 05568; GFX90A-NEXT:    ;;#ASMSTART5569; GFX90A-NEXT:    ; def v[2:3]5570; GFX90A-NEXT:    ;;#ASMEND5571; GFX90A-NEXT:    v_perm_b32 v0, v2, v1, s45572; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v25573; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]5574; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:45575; GFX90A-NEXT:    s_waitcnt vmcnt(0)5576; GFX90A-NEXT:    s_setpc_b64 s[30:31]5577;5578; GFX942-LABEL: v_shuffle_v3f16_v4f16__3_5_5:5579; GFX942:       ; %bb.0:5580; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5581; GFX942-NEXT:    ;;#ASMSTART5582; GFX942-NEXT:    ; def v[0:1]5583; GFX942-NEXT:    ;;#ASMEND5584; GFX942-NEXT:    s_mov_b32 s2, 0x70603025585; GFX942-NEXT:    v_mov_b32_e32 v4, 05586; GFX942-NEXT:    ;;#ASMSTART5587; GFX942-NEXT:    ; def v[2:3]5588; GFX942-NEXT:    ;;#ASMEND5589; GFX942-NEXT:    s_nop 05590; GFX942-NEXT:    v_perm_b32 v0, v2, v1, s25591; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v25592; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]5593; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:45594; GFX942-NEXT:    s_waitcnt vmcnt(0)5595; GFX942-NEXT:    s_setpc_b64 s[30:31]5596  %vec0 = call <4 x half> asm "; def $0", "=v"()5597  %vec1 = call <4 x half> asm "; def $0", "=v"()5598  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 3, i32 5, i32 5>5599  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 85600  ret void5601}5602 5603define void @v_shuffle_v3f16_v4f16__4_5_5(ptr addrspace(1) inreg %ptr) {5604; GFX900-LABEL: v_shuffle_v3f16_v4f16__4_5_5:5605; GFX900:       ; %bb.0:5606; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5607; GFX900-NEXT:    v_mov_b32_e32 v2, 05608; GFX900-NEXT:    ;;#ASMSTART5609; GFX900-NEXT:    ; def v[0:1]5610; GFX900-NEXT:    ;;#ASMEND5611; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]5612; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v05613; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:45614; GFX900-NEXT:    s_waitcnt vmcnt(0)5615; GFX900-NEXT:    s_setpc_b64 s[30:31]5616;5617; GFX90A-LABEL: v_shuffle_v3f16_v4f16__4_5_5:5618; GFX90A:       ; %bb.0:5619; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5620; GFX90A-NEXT:    v_mov_b32_e32 v2, 05621; GFX90A-NEXT:    ;;#ASMSTART5622; GFX90A-NEXT:    ; def v[0:1]5623; GFX90A-NEXT:    ;;#ASMEND5624; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]5625; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v05626; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:45627; GFX90A-NEXT:    s_waitcnt vmcnt(0)5628; GFX90A-NEXT:    s_setpc_b64 s[30:31]5629;5630; GFX942-LABEL: v_shuffle_v3f16_v4f16__4_5_5:5631; GFX942:       ; %bb.0:5632; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5633; GFX942-NEXT:    v_mov_b32_e32 v2, 05634; GFX942-NEXT:    ;;#ASMSTART5635; GFX942-NEXT:    ; def v[0:1]5636; GFX942-NEXT:    ;;#ASMEND5637; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]5638; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v05639; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:45640; GFX942-NEXT:    s_waitcnt vmcnt(0)5641; GFX942-NEXT:    s_setpc_b64 s[30:31]5642  %vec0 = call <4 x half> asm "; def $0", "=v"()5643  %vec1 = call <4 x half> asm "; def $0", "=v"()5644  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 4, i32 5, i32 5>5645  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 85646  ret void5647}5648 5649define void @v_shuffle_v3f16_v4f16__5_5_5(ptr addrspace(1) inreg %ptr) {5650; GFX900-LABEL: v_shuffle_v3f16_v4f16__5_5_5:5651; GFX900:       ; %bb.0:5652; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5653; GFX900-NEXT:    ;;#ASMSTART5654; GFX900-NEXT:    ; def v[0:1]5655; GFX900-NEXT:    ;;#ASMEND5656; GFX900-NEXT:    s_mov_b32 s4, 0x70603025657; GFX900-NEXT:    v_mov_b32_e32 v2, 05658; GFX900-NEXT:    v_perm_b32 v1, v0, v0, s45659; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v05660; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]5661; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:45662; GFX900-NEXT:    s_waitcnt vmcnt(0)5663; GFX900-NEXT:    s_setpc_b64 s[30:31]5664;5665; GFX90A-LABEL: v_shuffle_v3f16_v4f16__5_5_5:5666; GFX90A:       ; %bb.0:5667; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5668; GFX90A-NEXT:    ;;#ASMSTART5669; GFX90A-NEXT:    ; def v[0:1]5670; GFX90A-NEXT:    ;;#ASMEND5671; GFX90A-NEXT:    s_mov_b32 s4, 0x70603025672; GFX90A-NEXT:    v_mov_b32_e32 v2, 05673; GFX90A-NEXT:    v_perm_b32 v1, v0, v0, s45674; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v05675; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]5676; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:45677; GFX90A-NEXT:    s_waitcnt vmcnt(0)5678; GFX90A-NEXT:    s_setpc_b64 s[30:31]5679;5680; GFX942-LABEL: v_shuffle_v3f16_v4f16__5_5_5:5681; GFX942:       ; %bb.0:5682; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5683; GFX942-NEXT:    ;;#ASMSTART5684; GFX942-NEXT:    ; def v[0:1]5685; GFX942-NEXT:    ;;#ASMEND5686; GFX942-NEXT:    s_mov_b32 s2, 0x70603025687; GFX942-NEXT:    v_mov_b32_e32 v2, 05688; GFX942-NEXT:    v_perm_b32 v1, v0, v0, s25689; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v05690; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]5691; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:45692; GFX942-NEXT:    s_waitcnt vmcnt(0)5693; GFX942-NEXT:    s_setpc_b64 s[30:31]5694  %vec0 = call <4 x half> asm "; def $0", "=v"()5695  %vec1 = call <4 x half> asm "; def $0", "=v"()5696  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 5, i32 5, i32 5>5697  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 85698  ret void5699}5700 5701define void @v_shuffle_v3f16_v4f16__6_5_5(ptr addrspace(1) inreg %ptr) {5702; GFX900-LABEL: v_shuffle_v3f16_v4f16__6_5_5:5703; GFX900:       ; %bb.0:5704; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5705; GFX900-NEXT:    ;;#ASMSTART5706; GFX900-NEXT:    ; def v[0:1]5707; GFX900-NEXT:    ;;#ASMEND5708; GFX900-NEXT:    s_mov_b32 s4, 0xffff5709; GFX900-NEXT:    v_mov_b32_e32 v2, 05710; GFX900-NEXT:    v_bfi_b32 v1, s4, v1, v05711; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v05712; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:45713; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]5714; GFX900-NEXT:    s_waitcnt vmcnt(0)5715; GFX900-NEXT:    s_setpc_b64 s[30:31]5716;5717; GFX90A-LABEL: v_shuffle_v3f16_v4f16__6_5_5:5718; GFX90A:       ; %bb.0:5719; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5720; GFX90A-NEXT:    ;;#ASMSTART5721; GFX90A-NEXT:    ; def v[0:1]5722; GFX90A-NEXT:    ;;#ASMEND5723; GFX90A-NEXT:    s_mov_b32 s4, 0xffff5724; GFX90A-NEXT:    v_mov_b32_e32 v2, 05725; GFX90A-NEXT:    v_bfi_b32 v1, s4, v1, v05726; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v05727; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:45728; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]5729; GFX90A-NEXT:    s_waitcnt vmcnt(0)5730; GFX90A-NEXT:    s_setpc_b64 s[30:31]5731;5732; GFX942-LABEL: v_shuffle_v3f16_v4f16__6_5_5:5733; GFX942:       ; %bb.0:5734; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5735; GFX942-NEXT:    ;;#ASMSTART5736; GFX942-NEXT:    ; def v[0:1]5737; GFX942-NEXT:    ;;#ASMEND5738; GFX942-NEXT:    s_mov_b32 s2, 0xffff5739; GFX942-NEXT:    v_mov_b32_e32 v2, 05740; GFX942-NEXT:    v_bfi_b32 v1, s2, v1, v05741; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v05742; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:45743; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]5744; GFX942-NEXT:    s_waitcnt vmcnt(0)5745; GFX942-NEXT:    s_setpc_b64 s[30:31]5746  %vec0 = call <4 x half> asm "; def $0", "=v"()5747  %vec1 = call <4 x half> asm "; def $0", "=v"()5748  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 6, i32 5, i32 5>5749  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 85750  ret void5751}5752 5753define void @v_shuffle_v3f16_v4f16__7_5_5(ptr addrspace(1) inreg %ptr) {5754; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_5_5:5755; GFX900:       ; %bb.0:5756; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5757; GFX900-NEXT:    ;;#ASMSTART5758; GFX900-NEXT:    ; def v[0:1]5759; GFX900-NEXT:    ;;#ASMEND5760; GFX900-NEXT:    s_mov_b32 s4, 0x70603025761; GFX900-NEXT:    v_mov_b32_e32 v2, 05762; GFX900-NEXT:    v_perm_b32 v1, v0, v1, s45763; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v05764; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]5765; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:45766; GFX900-NEXT:    s_waitcnt vmcnt(0)5767; GFX900-NEXT:    s_setpc_b64 s[30:31]5768;5769; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_5_5:5770; GFX90A:       ; %bb.0:5771; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5772; GFX90A-NEXT:    ;;#ASMSTART5773; GFX90A-NEXT:    ; def v[0:1]5774; GFX90A-NEXT:    ;;#ASMEND5775; GFX90A-NEXT:    s_mov_b32 s4, 0x70603025776; GFX90A-NEXT:    v_mov_b32_e32 v2, 05777; GFX90A-NEXT:    v_perm_b32 v1, v0, v1, s45778; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v05779; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]5780; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:45781; GFX90A-NEXT:    s_waitcnt vmcnt(0)5782; GFX90A-NEXT:    s_setpc_b64 s[30:31]5783;5784; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_5_5:5785; GFX942:       ; %bb.0:5786; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5787; GFX942-NEXT:    ;;#ASMSTART5788; GFX942-NEXT:    ; def v[0:1]5789; GFX942-NEXT:    ;;#ASMEND5790; GFX942-NEXT:    s_mov_b32 s2, 0x70603025791; GFX942-NEXT:    v_mov_b32_e32 v2, 05792; GFX942-NEXT:    v_perm_b32 v1, v0, v1, s25793; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v05794; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]5795; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:45796; GFX942-NEXT:    s_waitcnt vmcnt(0)5797; GFX942-NEXT:    s_setpc_b64 s[30:31]5798  %vec0 = call <4 x half> asm "; def $0", "=v"()5799  %vec1 = call <4 x half> asm "; def $0", "=v"()5800  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 5, i32 5>5801  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 85802  ret void5803}5804 5805define void @v_shuffle_v3f16_v4f16__7_u_5(ptr addrspace(1) inreg %ptr) {5806; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_u_5:5807; GFX900:       ; %bb.0:5808; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5809; GFX900-NEXT:    v_mov_b32_e32 v2, 05810; GFX900-NEXT:    ;;#ASMSTART5811; GFX900-NEXT:    ; def v[0:1]5812; GFX900-NEXT:    ;;#ASMEND5813; GFX900-NEXT:    v_alignbit_b32 v1, s4, v1, 165814; GFX900-NEXT:    global_store_short_d16_hi v2, v0, s[16:17] offset:45815; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]5816; GFX900-NEXT:    s_waitcnt vmcnt(0)5817; GFX900-NEXT:    s_setpc_b64 s[30:31]5818;5819; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_u_5:5820; GFX90A:       ; %bb.0:5821; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5822; GFX90A-NEXT:    v_mov_b32_e32 v2, 05823; GFX90A-NEXT:    ;;#ASMSTART5824; GFX90A-NEXT:    ; def v[0:1]5825; GFX90A-NEXT:    ;;#ASMEND5826; GFX90A-NEXT:    v_alignbit_b32 v1, s4, v1, 165827; GFX90A-NEXT:    global_store_short_d16_hi v2, v0, s[16:17] offset:45828; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]5829; GFX90A-NEXT:    s_waitcnt vmcnt(0)5830; GFX90A-NEXT:    s_setpc_b64 s[30:31]5831;5832; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_u_5:5833; GFX942:       ; %bb.0:5834; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5835; GFX942-NEXT:    v_mov_b32_e32 v2, 05836; GFX942-NEXT:    ;;#ASMSTART5837; GFX942-NEXT:    ; def v[0:1]5838; GFX942-NEXT:    ;;#ASMEND5839; GFX942-NEXT:    s_nop 05840; GFX942-NEXT:    v_alignbit_b32 v1, s0, v1, 165841; GFX942-NEXT:    global_store_short_d16_hi v2, v0, s[0:1] offset:45842; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]5843; GFX942-NEXT:    s_waitcnt vmcnt(0)5844; GFX942-NEXT:    s_setpc_b64 s[30:31]5845  %vec0 = call <4 x half> asm "; def $0", "=v"()5846  %vec1 = call <4 x half> asm "; def $0", "=v"()5847  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 poison, i32 5>5848  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 85849  ret void5850}5851 5852define void @v_shuffle_v3f16_v4f16__7_0_5(ptr addrspace(1) inreg %ptr) {5853; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_0_5:5854; GFX900:       ; %bb.0:5855; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5856; GFX900-NEXT:    ;;#ASMSTART5857; GFX900-NEXT:    ; def v[0:1]5858; GFX900-NEXT:    ;;#ASMEND5859; GFX900-NEXT:    v_mov_b32_e32 v3, 05860; GFX900-NEXT:    ;;#ASMSTART5861; GFX900-NEXT:    ; def v[1:2]5862; GFX900-NEXT:    ;;#ASMEND5863; GFX900-NEXT:    v_alignbit_b32 v0, v0, v2, 165864; GFX900-NEXT:    global_store_short_d16_hi v3, v1, s[16:17] offset:45865; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]5866; GFX900-NEXT:    s_waitcnt vmcnt(0)5867; GFX900-NEXT:    s_setpc_b64 s[30:31]5868;5869; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_0_5:5870; GFX90A:       ; %bb.0:5871; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5872; GFX90A-NEXT:    v_mov_b32_e32 v4, 05873; GFX90A-NEXT:    ;;#ASMSTART5874; GFX90A-NEXT:    ; def v[0:1]5875; GFX90A-NEXT:    ;;#ASMEND5876; GFX90A-NEXT:    ;;#ASMSTART5877; GFX90A-NEXT:    ; def v[2:3]5878; GFX90A-NEXT:    ;;#ASMEND5879; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v3, 165880; GFX90A-NEXT:    global_store_short_d16_hi v4, v2, s[16:17] offset:45881; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]5882; GFX90A-NEXT:    s_waitcnt vmcnt(0)5883; GFX90A-NEXT:    s_setpc_b64 s[30:31]5884;5885; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_0_5:5886; GFX942:       ; %bb.0:5887; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5888; GFX942-NEXT:    v_mov_b32_e32 v4, 05889; GFX942-NEXT:    ;;#ASMSTART5890; GFX942-NEXT:    ; def v[0:1]5891; GFX942-NEXT:    ;;#ASMEND5892; GFX942-NEXT:    ;;#ASMSTART5893; GFX942-NEXT:    ; def v[2:3]5894; GFX942-NEXT:    ;;#ASMEND5895; GFX942-NEXT:    s_nop 05896; GFX942-NEXT:    v_alignbit_b32 v0, v0, v3, 165897; GFX942-NEXT:    global_store_short_d16_hi v4, v2, s[0:1] offset:45898; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]5899; GFX942-NEXT:    s_waitcnt vmcnt(0)5900; GFX942-NEXT:    s_setpc_b64 s[30:31]5901  %vec0 = call <4 x half> asm "; def $0", "=v"()5902  %vec1 = call <4 x half> asm "; def $0", "=v"()5903  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 0, i32 5>5904  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 85905  ret void5906}5907 5908define void @v_shuffle_v3f16_v4f16__7_1_5(ptr addrspace(1) inreg %ptr) {5909; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_1_5:5910; GFX900:       ; %bb.0:5911; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5912; GFX900-NEXT:    ;;#ASMSTART5913; GFX900-NEXT:    ; def v[0:1]5914; GFX900-NEXT:    ;;#ASMEND5915; GFX900-NEXT:    v_mov_b32_e32 v3, 05916; GFX900-NEXT:    ;;#ASMSTART5917; GFX900-NEXT:    ; def v[1:2]5918; GFX900-NEXT:    ;;#ASMEND5919; GFX900-NEXT:    s_mov_b32 s4, 0x70603025920; GFX900-NEXT:    v_perm_b32 v0, v0, v2, s45921; GFX900-NEXT:    global_store_short_d16_hi v3, v1, s[16:17] offset:45922; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]5923; GFX900-NEXT:    s_waitcnt vmcnt(0)5924; GFX900-NEXT:    s_setpc_b64 s[30:31]5925;5926; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_1_5:5927; GFX90A:       ; %bb.0:5928; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5929; GFX90A-NEXT:    v_mov_b32_e32 v4, 05930; GFX90A-NEXT:    ;;#ASMSTART5931; GFX90A-NEXT:    ; def v[0:1]5932; GFX90A-NEXT:    ;;#ASMEND5933; GFX90A-NEXT:    ;;#ASMSTART5934; GFX90A-NEXT:    ; def v[2:3]5935; GFX90A-NEXT:    ;;#ASMEND5936; GFX90A-NEXT:    s_mov_b32 s4, 0x70603025937; GFX90A-NEXT:    v_perm_b32 v0, v0, v3, s45938; GFX90A-NEXT:    global_store_short_d16_hi v4, v2, s[16:17] offset:45939; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]5940; GFX90A-NEXT:    s_waitcnt vmcnt(0)5941; GFX90A-NEXT:    s_setpc_b64 s[30:31]5942;5943; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_1_5:5944; GFX942:       ; %bb.0:5945; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5946; GFX942-NEXT:    v_mov_b32_e32 v4, 05947; GFX942-NEXT:    ;;#ASMSTART5948; GFX942-NEXT:    ; def v[0:1]5949; GFX942-NEXT:    ;;#ASMEND5950; GFX942-NEXT:    ;;#ASMSTART5951; GFX942-NEXT:    ; def v[2:3]5952; GFX942-NEXT:    ;;#ASMEND5953; GFX942-NEXT:    s_mov_b32 s2, 0x70603025954; GFX942-NEXT:    v_perm_b32 v0, v0, v3, s25955; GFX942-NEXT:    global_store_short_d16_hi v4, v2, s[0:1] offset:45956; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]5957; GFX942-NEXT:    s_waitcnt vmcnt(0)5958; GFX942-NEXT:    s_setpc_b64 s[30:31]5959  %vec0 = call <4 x half> asm "; def $0", "=v"()5960  %vec1 = call <4 x half> asm "; def $0", "=v"()5961  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 1, i32 5>5962  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 85963  ret void5964}5965 5966define void @v_shuffle_v3f16_v4f16__7_2_5(ptr addrspace(1) inreg %ptr) {5967; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_2_5:5968; GFX900:       ; %bb.0:5969; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5970; GFX900-NEXT:    v_mov_b32_e32 v4, 05971; GFX900-NEXT:    ;;#ASMSTART5972; GFX900-NEXT:    ; def v[0:1]5973; GFX900-NEXT:    ;;#ASMEND5974; GFX900-NEXT:    ;;#ASMSTART5975; GFX900-NEXT:    ; def v[2:3]5976; GFX900-NEXT:    ;;#ASMEND5977; GFX900-NEXT:    v_alignbit_b32 v0, v1, v3, 165978; GFX900-NEXT:    global_store_short_d16_hi v4, v2, s[16:17] offset:45979; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]5980; GFX900-NEXT:    s_waitcnt vmcnt(0)5981; GFX900-NEXT:    s_setpc_b64 s[30:31]5982;5983; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_2_5:5984; GFX90A:       ; %bb.0:5985; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5986; GFX90A-NEXT:    v_mov_b32_e32 v4, 05987; GFX90A-NEXT:    ;;#ASMSTART5988; GFX90A-NEXT:    ; def v[0:1]5989; GFX90A-NEXT:    ;;#ASMEND5990; GFX90A-NEXT:    ;;#ASMSTART5991; GFX90A-NEXT:    ; def v[2:3]5992; GFX90A-NEXT:    ;;#ASMEND5993; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v3, 165994; GFX90A-NEXT:    global_store_short_d16_hi v4, v2, s[16:17] offset:45995; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]5996; GFX90A-NEXT:    s_waitcnt vmcnt(0)5997; GFX90A-NEXT:    s_setpc_b64 s[30:31]5998;5999; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_2_5:6000; GFX942:       ; %bb.0:6001; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6002; GFX942-NEXT:    v_mov_b32_e32 v4, 06003; GFX942-NEXT:    ;;#ASMSTART6004; GFX942-NEXT:    ; def v[0:1]6005; GFX942-NEXT:    ;;#ASMEND6006; GFX942-NEXT:    ;;#ASMSTART6007; GFX942-NEXT:    ; def v[2:3]6008; GFX942-NEXT:    ;;#ASMEND6009; GFX942-NEXT:    s_nop 06010; GFX942-NEXT:    v_alignbit_b32 v0, v1, v3, 166011; GFX942-NEXT:    global_store_short_d16_hi v4, v2, s[0:1] offset:46012; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]6013; GFX942-NEXT:    s_waitcnt vmcnt(0)6014; GFX942-NEXT:    s_setpc_b64 s[30:31]6015  %vec0 = call <4 x half> asm "; def $0", "=v"()6016  %vec1 = call <4 x half> asm "; def $0", "=v"()6017  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 2, i32 5>6018  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 86019  ret void6020}6021 6022define void @v_shuffle_v3f16_v4f16__7_3_5(ptr addrspace(1) inreg %ptr) {6023; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_3_5:6024; GFX900:       ; %bb.0:6025; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6026; GFX900-NEXT:    v_mov_b32_e32 v4, 06027; GFX900-NEXT:    ;;#ASMSTART6028; GFX900-NEXT:    ; def v[0:1]6029; GFX900-NEXT:    ;;#ASMEND6030; GFX900-NEXT:    ;;#ASMSTART6031; GFX900-NEXT:    ; def v[2:3]6032; GFX900-NEXT:    ;;#ASMEND6033; GFX900-NEXT:    s_mov_b32 s4, 0x70603026034; GFX900-NEXT:    v_perm_b32 v0, v1, v3, s46035; GFX900-NEXT:    global_store_short_d16_hi v4, v2, s[16:17] offset:46036; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]6037; GFX900-NEXT:    s_waitcnt vmcnt(0)6038; GFX900-NEXT:    s_setpc_b64 s[30:31]6039;6040; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_3_5:6041; GFX90A:       ; %bb.0:6042; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6043; GFX90A-NEXT:    v_mov_b32_e32 v4, 06044; GFX90A-NEXT:    ;;#ASMSTART6045; GFX90A-NEXT:    ; def v[0:1]6046; GFX90A-NEXT:    ;;#ASMEND6047; GFX90A-NEXT:    ;;#ASMSTART6048; GFX90A-NEXT:    ; def v[2:3]6049; GFX90A-NEXT:    ;;#ASMEND6050; GFX90A-NEXT:    s_mov_b32 s4, 0x70603026051; GFX90A-NEXT:    v_perm_b32 v0, v1, v3, s46052; GFX90A-NEXT:    global_store_short_d16_hi v4, v2, s[16:17] offset:46053; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]6054; GFX90A-NEXT:    s_waitcnt vmcnt(0)6055; GFX90A-NEXT:    s_setpc_b64 s[30:31]6056;6057; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_3_5:6058; GFX942:       ; %bb.0:6059; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6060; GFX942-NEXT:    v_mov_b32_e32 v4, 06061; GFX942-NEXT:    ;;#ASMSTART6062; GFX942-NEXT:    ; def v[0:1]6063; GFX942-NEXT:    ;;#ASMEND6064; GFX942-NEXT:    ;;#ASMSTART6065; GFX942-NEXT:    ; def v[2:3]6066; GFX942-NEXT:    ;;#ASMEND6067; GFX942-NEXT:    s_mov_b32 s2, 0x70603026068; GFX942-NEXT:    v_perm_b32 v0, v1, v3, s26069; GFX942-NEXT:    global_store_short_d16_hi v4, v2, s[0:1] offset:46070; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]6071; GFX942-NEXT:    s_waitcnt vmcnt(0)6072; GFX942-NEXT:    s_setpc_b64 s[30:31]6073  %vec0 = call <4 x half> asm "; def $0", "=v"()6074  %vec1 = call <4 x half> asm "; def $0", "=v"()6075  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 3, i32 5>6076  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 86077  ret void6078}6079 6080define void @v_shuffle_v3f16_v4f16__7_4_5(ptr addrspace(1) inreg %ptr) {6081; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_4_5:6082; GFX900:       ; %bb.0:6083; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6084; GFX900-NEXT:    v_mov_b32_e32 v2, 06085; GFX900-NEXT:    ;;#ASMSTART6086; GFX900-NEXT:    ; def v[0:1]6087; GFX900-NEXT:    ;;#ASMEND6088; GFX900-NEXT:    v_alignbit_b32 v1, v0, v1, 166089; GFX900-NEXT:    global_store_short_d16_hi v2, v0, s[16:17] offset:46090; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]6091; GFX900-NEXT:    s_waitcnt vmcnt(0)6092; GFX900-NEXT:    s_setpc_b64 s[30:31]6093;6094; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_4_5:6095; GFX90A:       ; %bb.0:6096; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6097; GFX90A-NEXT:    v_mov_b32_e32 v2, 06098; GFX90A-NEXT:    ;;#ASMSTART6099; GFX90A-NEXT:    ; def v[0:1]6100; GFX90A-NEXT:    ;;#ASMEND6101; GFX90A-NEXT:    v_alignbit_b32 v1, v0, v1, 166102; GFX90A-NEXT:    global_store_short_d16_hi v2, v0, s[16:17] offset:46103; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]6104; GFX90A-NEXT:    s_waitcnt vmcnt(0)6105; GFX90A-NEXT:    s_setpc_b64 s[30:31]6106;6107; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_4_5:6108; GFX942:       ; %bb.0:6109; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6110; GFX942-NEXT:    v_mov_b32_e32 v2, 06111; GFX942-NEXT:    ;;#ASMSTART6112; GFX942-NEXT:    ; def v[0:1]6113; GFX942-NEXT:    ;;#ASMEND6114; GFX942-NEXT:    s_nop 06115; GFX942-NEXT:    v_alignbit_b32 v1, v0, v1, 166116; GFX942-NEXT:    global_store_short_d16_hi v2, v0, s[0:1] offset:46117; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]6118; GFX942-NEXT:    s_waitcnt vmcnt(0)6119; GFX942-NEXT:    s_setpc_b64 s[30:31]6120  %vec0 = call <4 x half> asm "; def $0", "=v"()6121  %vec1 = call <4 x half> asm "; def $0", "=v"()6122  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 4, i32 5>6123  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 86124  ret void6125}6126 6127define void @v_shuffle_v3f16_v4f16__7_6_5(ptr addrspace(1) inreg %ptr) {6128; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_6_5:6129; GFX900:       ; %bb.0:6130; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6131; GFX900-NEXT:    v_mov_b32_e32 v2, 06132; GFX900-NEXT:    ;;#ASMSTART6133; GFX900-NEXT:    ; def v[0:1]6134; GFX900-NEXT:    ;;#ASMEND6135; GFX900-NEXT:    v_alignbit_b32 v1, v1, v1, 166136; GFX900-NEXT:    global_store_short_d16_hi v2, v0, s[16:17] offset:46137; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]6138; GFX900-NEXT:    s_waitcnt vmcnt(0)6139; GFX900-NEXT:    s_setpc_b64 s[30:31]6140;6141; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_6_5:6142; GFX90A:       ; %bb.0:6143; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6144; GFX90A-NEXT:    v_mov_b32_e32 v2, 06145; GFX90A-NEXT:    ;;#ASMSTART6146; GFX90A-NEXT:    ; def v[0:1]6147; GFX90A-NEXT:    ;;#ASMEND6148; GFX90A-NEXT:    v_alignbit_b32 v1, v1, v1, 166149; GFX90A-NEXT:    global_store_short_d16_hi v2, v0, s[16:17] offset:46150; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]6151; GFX90A-NEXT:    s_waitcnt vmcnt(0)6152; GFX90A-NEXT:    s_setpc_b64 s[30:31]6153;6154; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_6_5:6155; GFX942:       ; %bb.0:6156; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6157; GFX942-NEXT:    v_mov_b32_e32 v2, 06158; GFX942-NEXT:    ;;#ASMSTART6159; GFX942-NEXT:    ; def v[0:1]6160; GFX942-NEXT:    ;;#ASMEND6161; GFX942-NEXT:    s_nop 06162; GFX942-NEXT:    v_alignbit_b32 v1, v1, v1, 166163; GFX942-NEXT:    global_store_short_d16_hi v2, v0, s[0:1] offset:46164; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]6165; GFX942-NEXT:    s_waitcnt vmcnt(0)6166; GFX942-NEXT:    s_setpc_b64 s[30:31]6167  %vec0 = call <4 x half> asm "; def $0", "=v"()6168  %vec1 = call <4 x half> asm "; def $0", "=v"()6169  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 6, i32 5>6170  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 86171  ret void6172}6173 6174define void @v_shuffle_v3f16_v4f16__u_6_6(ptr addrspace(1) inreg %ptr) {6175; GFX900-LABEL: v_shuffle_v3f16_v4f16__u_6_6:6176; GFX900:       ; %bb.0:6177; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6178; GFX900-NEXT:    v_mov_b32_e32 v2, 06179; GFX900-NEXT:    ;;#ASMSTART6180; GFX900-NEXT:    ; def v[0:1]6181; GFX900-NEXT:    ;;#ASMEND6182; GFX900-NEXT:    v_lshlrev_b32_e32 v0, 16, v16183; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:46184; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]6185; GFX900-NEXT:    s_waitcnt vmcnt(0)6186; GFX900-NEXT:    s_setpc_b64 s[30:31]6187;6188; GFX90A-LABEL: v_shuffle_v3f16_v4f16__u_6_6:6189; GFX90A:       ; %bb.0:6190; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6191; GFX90A-NEXT:    v_mov_b32_e32 v2, 06192; GFX90A-NEXT:    ;;#ASMSTART6193; GFX90A-NEXT:    ; def v[0:1]6194; GFX90A-NEXT:    ;;#ASMEND6195; GFX90A-NEXT:    v_lshlrev_b32_e32 v0, 16, v16196; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:46197; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]6198; GFX90A-NEXT:    s_waitcnt vmcnt(0)6199; GFX90A-NEXT:    s_setpc_b64 s[30:31]6200;6201; GFX942-LABEL: v_shuffle_v3f16_v4f16__u_6_6:6202; GFX942:       ; %bb.0:6203; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6204; GFX942-NEXT:    v_mov_b32_e32 v2, 06205; GFX942-NEXT:    ;;#ASMSTART6206; GFX942-NEXT:    ; def v[0:1]6207; GFX942-NEXT:    ;;#ASMEND6208; GFX942-NEXT:    s_nop 06209; GFX942-NEXT:    v_lshlrev_b32_e32 v0, 16, v16210; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:46211; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]6212; GFX942-NEXT:    s_waitcnt vmcnt(0)6213; GFX942-NEXT:    s_setpc_b64 s[30:31]6214  %vec0 = call <4 x half> asm "; def $0", "=v"()6215  %vec1 = call <4 x half> asm "; def $0", "=v"()6216  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 poison, i32 6, i32 6>6217  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 86218  ret void6219}6220 6221define void @v_shuffle_v3f16_v4f16__0_6_6(ptr addrspace(1) inreg %ptr) {6222; GFX900-LABEL: v_shuffle_v3f16_v4f16__0_6_6:6223; GFX900:       ; %bb.0:6224; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6225; GFX900-NEXT:    ;;#ASMSTART6226; GFX900-NEXT:    ; def v[0:1]6227; GFX900-NEXT:    ;;#ASMEND6228; GFX900-NEXT:    v_mov_b32_e32 v3, 06229; GFX900-NEXT:    ;;#ASMSTART6230; GFX900-NEXT:    ; def v[1:2]6231; GFX900-NEXT:    ;;#ASMEND6232; GFX900-NEXT:    s_mov_b32 s4, 0x50401006233; GFX900-NEXT:    v_perm_b32 v0, v2, v0, s46234; GFX900-NEXT:    global_store_short v3, v2, s[16:17] offset:46235; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]6236; GFX900-NEXT:    s_waitcnt vmcnt(0)6237; GFX900-NEXT:    s_setpc_b64 s[30:31]6238;6239; GFX90A-LABEL: v_shuffle_v3f16_v4f16__0_6_6:6240; GFX90A:       ; %bb.0:6241; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6242; GFX90A-NEXT:    v_mov_b32_e32 v4, 06243; GFX90A-NEXT:    ;;#ASMSTART6244; GFX90A-NEXT:    ; def v[0:1]6245; GFX90A-NEXT:    ;;#ASMEND6246; GFX90A-NEXT:    ;;#ASMSTART6247; GFX90A-NEXT:    ; def v[2:3]6248; GFX90A-NEXT:    ;;#ASMEND6249; GFX90A-NEXT:    s_mov_b32 s4, 0x50401006250; GFX90A-NEXT:    v_perm_b32 v0, v3, v0, s46251; GFX90A-NEXT:    global_store_short v4, v3, s[16:17] offset:46252; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]6253; GFX90A-NEXT:    s_waitcnt vmcnt(0)6254; GFX90A-NEXT:    s_setpc_b64 s[30:31]6255;6256; GFX942-LABEL: v_shuffle_v3f16_v4f16__0_6_6:6257; GFX942:       ; %bb.0:6258; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6259; GFX942-NEXT:    v_mov_b32_e32 v4, 06260; GFX942-NEXT:    ;;#ASMSTART6261; GFX942-NEXT:    ; def v[0:1]6262; GFX942-NEXT:    ;;#ASMEND6263; GFX942-NEXT:    ;;#ASMSTART6264; GFX942-NEXT:    ; def v[2:3]6265; GFX942-NEXT:    ;;#ASMEND6266; GFX942-NEXT:    s_mov_b32 s2, 0x50401006267; GFX942-NEXT:    v_perm_b32 v0, v3, v0, s26268; GFX942-NEXT:    global_store_short v4, v3, s[0:1] offset:46269; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]6270; GFX942-NEXT:    s_waitcnt vmcnt(0)6271; GFX942-NEXT:    s_setpc_b64 s[30:31]6272  %vec0 = call <4 x half> asm "; def $0", "=v"()6273  %vec1 = call <4 x half> asm "; def $0", "=v"()6274  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 0, i32 6, i32 6>6275  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 86276  ret void6277}6278 6279define void @v_shuffle_v3f16_v4f16__1_6_6(ptr addrspace(1) inreg %ptr) {6280; GFX900-LABEL: v_shuffle_v3f16_v4f16__1_6_6:6281; GFX900:       ; %bb.0:6282; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6283; GFX900-NEXT:    ;;#ASMSTART6284; GFX900-NEXT:    ; def v[0:1]6285; GFX900-NEXT:    ;;#ASMEND6286; GFX900-NEXT:    v_mov_b32_e32 v3, 06287; GFX900-NEXT:    ;;#ASMSTART6288; GFX900-NEXT:    ; def v[1:2]6289; GFX900-NEXT:    ;;#ASMEND6290; GFX900-NEXT:    v_alignbit_b32 v0, v2, v0, 166291; GFX900-NEXT:    global_store_short v3, v2, s[16:17] offset:46292; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]6293; GFX900-NEXT:    s_waitcnt vmcnt(0)6294; GFX900-NEXT:    s_setpc_b64 s[30:31]6295;6296; GFX90A-LABEL: v_shuffle_v3f16_v4f16__1_6_6:6297; GFX90A:       ; %bb.0:6298; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6299; GFX90A-NEXT:    v_mov_b32_e32 v4, 06300; GFX90A-NEXT:    ;;#ASMSTART6301; GFX90A-NEXT:    ; def v[0:1]6302; GFX90A-NEXT:    ;;#ASMEND6303; GFX90A-NEXT:    ;;#ASMSTART6304; GFX90A-NEXT:    ; def v[2:3]6305; GFX90A-NEXT:    ;;#ASMEND6306; GFX90A-NEXT:    v_alignbit_b32 v0, v3, v0, 166307; GFX90A-NEXT:    global_store_short v4, v3, s[16:17] offset:46308; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]6309; GFX90A-NEXT:    s_waitcnt vmcnt(0)6310; GFX90A-NEXT:    s_setpc_b64 s[30:31]6311;6312; GFX942-LABEL: v_shuffle_v3f16_v4f16__1_6_6:6313; GFX942:       ; %bb.0:6314; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6315; GFX942-NEXT:    v_mov_b32_e32 v4, 06316; GFX942-NEXT:    ;;#ASMSTART6317; GFX942-NEXT:    ; def v[0:1]6318; GFX942-NEXT:    ;;#ASMEND6319; GFX942-NEXT:    ;;#ASMSTART6320; GFX942-NEXT:    ; def v[2:3]6321; GFX942-NEXT:    ;;#ASMEND6322; GFX942-NEXT:    s_nop 06323; GFX942-NEXT:    v_alignbit_b32 v0, v3, v0, 166324; GFX942-NEXT:    global_store_short v4, v3, s[0:1] offset:46325; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]6326; GFX942-NEXT:    s_waitcnt vmcnt(0)6327; GFX942-NEXT:    s_setpc_b64 s[30:31]6328  %vec0 = call <4 x half> asm "; def $0", "=v"()6329  %vec1 = call <4 x half> asm "; def $0", "=v"()6330  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 1, i32 6, i32 6>6331  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 86332  ret void6333}6334 6335define void @v_shuffle_v3f16_v4f16__2_6_6(ptr addrspace(1) inreg %ptr) {6336; GFX900-LABEL: v_shuffle_v3f16_v4f16__2_6_6:6337; GFX900:       ; %bb.0:6338; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6339; GFX900-NEXT:    v_mov_b32_e32 v4, 06340; GFX900-NEXT:    ;;#ASMSTART6341; GFX900-NEXT:    ; def v[0:1]6342; GFX900-NEXT:    ;;#ASMEND6343; GFX900-NEXT:    ;;#ASMSTART6344; GFX900-NEXT:    ; def v[2:3]6345; GFX900-NEXT:    ;;#ASMEND6346; GFX900-NEXT:    s_mov_b32 s4, 0x50401006347; GFX900-NEXT:    v_perm_b32 v0, v3, v1, s46348; GFX900-NEXT:    global_store_short v4, v3, s[16:17] offset:46349; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]6350; GFX900-NEXT:    s_waitcnt vmcnt(0)6351; GFX900-NEXT:    s_setpc_b64 s[30:31]6352;6353; GFX90A-LABEL: v_shuffle_v3f16_v4f16__2_6_6:6354; GFX90A:       ; %bb.0:6355; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6356; GFX90A-NEXT:    v_mov_b32_e32 v4, 06357; GFX90A-NEXT:    ;;#ASMSTART6358; GFX90A-NEXT:    ; def v[0:1]6359; GFX90A-NEXT:    ;;#ASMEND6360; GFX90A-NEXT:    ;;#ASMSTART6361; GFX90A-NEXT:    ; def v[2:3]6362; GFX90A-NEXT:    ;;#ASMEND6363; GFX90A-NEXT:    s_mov_b32 s4, 0x50401006364; GFX90A-NEXT:    v_perm_b32 v0, v3, v1, s46365; GFX90A-NEXT:    global_store_short v4, v3, s[16:17] offset:46366; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]6367; GFX90A-NEXT:    s_waitcnt vmcnt(0)6368; GFX90A-NEXT:    s_setpc_b64 s[30:31]6369;6370; GFX942-LABEL: v_shuffle_v3f16_v4f16__2_6_6:6371; GFX942:       ; %bb.0:6372; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6373; GFX942-NEXT:    v_mov_b32_e32 v4, 06374; GFX942-NEXT:    ;;#ASMSTART6375; GFX942-NEXT:    ; def v[0:1]6376; GFX942-NEXT:    ;;#ASMEND6377; GFX942-NEXT:    ;;#ASMSTART6378; GFX942-NEXT:    ; def v[2:3]6379; GFX942-NEXT:    ;;#ASMEND6380; GFX942-NEXT:    s_mov_b32 s2, 0x50401006381; GFX942-NEXT:    v_perm_b32 v0, v3, v1, s26382; GFX942-NEXT:    global_store_short v4, v3, s[0:1] offset:46383; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]6384; GFX942-NEXT:    s_waitcnt vmcnt(0)6385; GFX942-NEXT:    s_setpc_b64 s[30:31]6386  %vec0 = call <4 x half> asm "; def $0", "=v"()6387  %vec1 = call <4 x half> asm "; def $0", "=v"()6388  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 2, i32 6, i32 6>6389  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 86390  ret void6391}6392 6393define void @v_shuffle_v3f16_v4f16__3_6_6(ptr addrspace(1) inreg %ptr) {6394; GFX900-LABEL: v_shuffle_v3f16_v4f16__3_6_6:6395; GFX900:       ; %bb.0:6396; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6397; GFX900-NEXT:    v_mov_b32_e32 v4, 06398; GFX900-NEXT:    ;;#ASMSTART6399; GFX900-NEXT:    ; def v[0:1]6400; GFX900-NEXT:    ;;#ASMEND6401; GFX900-NEXT:    ;;#ASMSTART6402; GFX900-NEXT:    ; def v[2:3]6403; GFX900-NEXT:    ;;#ASMEND6404; GFX900-NEXT:    v_alignbit_b32 v0, v3, v1, 166405; GFX900-NEXT:    global_store_short v4, v3, s[16:17] offset:46406; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]6407; GFX900-NEXT:    s_waitcnt vmcnt(0)6408; GFX900-NEXT:    s_setpc_b64 s[30:31]6409;6410; GFX90A-LABEL: v_shuffle_v3f16_v4f16__3_6_6:6411; GFX90A:       ; %bb.0:6412; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6413; GFX90A-NEXT:    v_mov_b32_e32 v4, 06414; GFX90A-NEXT:    ;;#ASMSTART6415; GFX90A-NEXT:    ; def v[0:1]6416; GFX90A-NEXT:    ;;#ASMEND6417; GFX90A-NEXT:    ;;#ASMSTART6418; GFX90A-NEXT:    ; def v[2:3]6419; GFX90A-NEXT:    ;;#ASMEND6420; GFX90A-NEXT:    v_alignbit_b32 v0, v3, v1, 166421; GFX90A-NEXT:    global_store_short v4, v3, s[16:17] offset:46422; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]6423; GFX90A-NEXT:    s_waitcnt vmcnt(0)6424; GFX90A-NEXT:    s_setpc_b64 s[30:31]6425;6426; GFX942-LABEL: v_shuffle_v3f16_v4f16__3_6_6:6427; GFX942:       ; %bb.0:6428; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6429; GFX942-NEXT:    v_mov_b32_e32 v4, 06430; GFX942-NEXT:    ;;#ASMSTART6431; GFX942-NEXT:    ; def v[0:1]6432; GFX942-NEXT:    ;;#ASMEND6433; GFX942-NEXT:    ;;#ASMSTART6434; GFX942-NEXT:    ; def v[2:3]6435; GFX942-NEXT:    ;;#ASMEND6436; GFX942-NEXT:    s_nop 06437; GFX942-NEXT:    v_alignbit_b32 v0, v3, v1, 166438; GFX942-NEXT:    global_store_short v4, v3, s[0:1] offset:46439; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]6440; GFX942-NEXT:    s_waitcnt vmcnt(0)6441; GFX942-NEXT:    s_setpc_b64 s[30:31]6442  %vec0 = call <4 x half> asm "; def $0", "=v"()6443  %vec1 = call <4 x half> asm "; def $0", "=v"()6444  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 3, i32 6, i32 6>6445  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 86446  ret void6447}6448 6449define void @v_shuffle_v3f16_v4f16__4_6_6(ptr addrspace(1) inreg %ptr) {6450; GFX900-LABEL: v_shuffle_v3f16_v4f16__4_6_6:6451; GFX900:       ; %bb.0:6452; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6453; GFX900-NEXT:    v_mov_b32_e32 v2, 06454; GFX900-NEXT:    ;;#ASMSTART6455; GFX900-NEXT:    ; def v[0:1]6456; GFX900-NEXT:    ;;#ASMEND6457; GFX900-NEXT:    s_mov_b32 s4, 0x50401006458; GFX900-NEXT:    v_perm_b32 v0, v1, v0, s46459; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:46460; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]6461; GFX900-NEXT:    s_waitcnt vmcnt(0)6462; GFX900-NEXT:    s_setpc_b64 s[30:31]6463;6464; GFX90A-LABEL: v_shuffle_v3f16_v4f16__4_6_6:6465; GFX90A:       ; %bb.0:6466; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6467; GFX90A-NEXT:    v_mov_b32_e32 v2, 06468; GFX90A-NEXT:    ;;#ASMSTART6469; GFX90A-NEXT:    ; def v[0:1]6470; GFX90A-NEXT:    ;;#ASMEND6471; GFX90A-NEXT:    s_mov_b32 s4, 0x50401006472; GFX90A-NEXT:    v_perm_b32 v0, v1, v0, s46473; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:46474; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]6475; GFX90A-NEXT:    s_waitcnt vmcnt(0)6476; GFX90A-NEXT:    s_setpc_b64 s[30:31]6477;6478; GFX942-LABEL: v_shuffle_v3f16_v4f16__4_6_6:6479; GFX942:       ; %bb.0:6480; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6481; GFX942-NEXT:    v_mov_b32_e32 v2, 06482; GFX942-NEXT:    ;;#ASMSTART6483; GFX942-NEXT:    ; def v[0:1]6484; GFX942-NEXT:    ;;#ASMEND6485; GFX942-NEXT:    s_mov_b32 s2, 0x50401006486; GFX942-NEXT:    v_perm_b32 v0, v1, v0, s26487; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:46488; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]6489; GFX942-NEXT:    s_waitcnt vmcnt(0)6490; GFX942-NEXT:    s_setpc_b64 s[30:31]6491  %vec0 = call <4 x half> asm "; def $0", "=v"()6492  %vec1 = call <4 x half> asm "; def $0", "=v"()6493  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 4, i32 6, i32 6>6494  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 86495  ret void6496}6497 6498define void @v_shuffle_v3f16_v4f16__5_6_6(ptr addrspace(1) inreg %ptr) {6499; GFX900-LABEL: v_shuffle_v3f16_v4f16__5_6_6:6500; GFX900:       ; %bb.0:6501; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6502; GFX900-NEXT:    v_mov_b32_e32 v2, 06503; GFX900-NEXT:    ;;#ASMSTART6504; GFX900-NEXT:    ; def v[0:1]6505; GFX900-NEXT:    ;;#ASMEND6506; GFX900-NEXT:    v_alignbit_b32 v0, v1, v0, 166507; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:46508; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]6509; GFX900-NEXT:    s_waitcnt vmcnt(0)6510; GFX900-NEXT:    s_setpc_b64 s[30:31]6511;6512; GFX90A-LABEL: v_shuffle_v3f16_v4f16__5_6_6:6513; GFX90A:       ; %bb.0:6514; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6515; GFX90A-NEXT:    v_mov_b32_e32 v2, 06516; GFX90A-NEXT:    ;;#ASMSTART6517; GFX90A-NEXT:    ; def v[0:1]6518; GFX90A-NEXT:    ;;#ASMEND6519; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v0, 166520; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:46521; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]6522; GFX90A-NEXT:    s_waitcnt vmcnt(0)6523; GFX90A-NEXT:    s_setpc_b64 s[30:31]6524;6525; GFX942-LABEL: v_shuffle_v3f16_v4f16__5_6_6:6526; GFX942:       ; %bb.0:6527; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6528; GFX942-NEXT:    v_mov_b32_e32 v2, 06529; GFX942-NEXT:    ;;#ASMSTART6530; GFX942-NEXT:    ; def v[0:1]6531; GFX942-NEXT:    ;;#ASMEND6532; GFX942-NEXT:    s_nop 06533; GFX942-NEXT:    v_alignbit_b32 v0, v1, v0, 166534; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:46535; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]6536; GFX942-NEXT:    s_waitcnt vmcnt(0)6537; GFX942-NEXT:    s_setpc_b64 s[30:31]6538  %vec0 = call <4 x half> asm "; def $0", "=v"()6539  %vec1 = call <4 x half> asm "; def $0", "=v"()6540  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 5, i32 6, i32 6>6541  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 86542  ret void6543}6544 6545define void @v_shuffle_v3f16_v4f16__6_6_6(ptr addrspace(1) inreg %ptr) {6546; GFX900-LABEL: v_shuffle_v3f16_v4f16__6_6_6:6547; GFX900:       ; %bb.0:6548; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6549; GFX900-NEXT:    v_mov_b32_e32 v2, 06550; GFX900-NEXT:    ;;#ASMSTART6551; GFX900-NEXT:    ; def v[0:1]6552; GFX900-NEXT:    ;;#ASMEND6553; GFX900-NEXT:    s_mov_b32 s4, 0x50401006554; GFX900-NEXT:    v_perm_b32 v0, v1, v1, s46555; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:46556; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]6557; GFX900-NEXT:    s_waitcnt vmcnt(0)6558; GFX900-NEXT:    s_setpc_b64 s[30:31]6559;6560; GFX90A-LABEL: v_shuffle_v3f16_v4f16__6_6_6:6561; GFX90A:       ; %bb.0:6562; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6563; GFX90A-NEXT:    v_mov_b32_e32 v2, 06564; GFX90A-NEXT:    ;;#ASMSTART6565; GFX90A-NEXT:    ; def v[0:1]6566; GFX90A-NEXT:    ;;#ASMEND6567; GFX90A-NEXT:    s_mov_b32 s4, 0x50401006568; GFX90A-NEXT:    v_perm_b32 v0, v1, v1, s46569; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:46570; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]6571; GFX90A-NEXT:    s_waitcnt vmcnt(0)6572; GFX90A-NEXT:    s_setpc_b64 s[30:31]6573;6574; GFX942-LABEL: v_shuffle_v3f16_v4f16__6_6_6:6575; GFX942:       ; %bb.0:6576; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6577; GFX942-NEXT:    v_mov_b32_e32 v2, 06578; GFX942-NEXT:    ;;#ASMSTART6579; GFX942-NEXT:    ; def v[0:1]6580; GFX942-NEXT:    ;;#ASMEND6581; GFX942-NEXT:    s_mov_b32 s2, 0x50401006582; GFX942-NEXT:    v_perm_b32 v0, v1, v1, s26583; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:46584; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]6585; GFX942-NEXT:    s_waitcnt vmcnt(0)6586; GFX942-NEXT:    s_setpc_b64 s[30:31]6587  %vec0 = call <4 x half> asm "; def $0", "=v"()6588  %vec1 = call <4 x half> asm "; def $0", "=v"()6589  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 6, i32 6, i32 6>6590  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 86591  ret void6592}6593 6594define void @v_shuffle_v3f16_v4f16__7_6_6(ptr addrspace(1) inreg %ptr) {6595; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_6_6:6596; GFX900:       ; %bb.0:6597; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6598; GFX900-NEXT:    v_mov_b32_e32 v2, 06599; GFX900-NEXT:    ;;#ASMSTART6600; GFX900-NEXT:    ; def v[0:1]6601; GFX900-NEXT:    ;;#ASMEND6602; GFX900-NEXT:    v_alignbit_b32 v0, v1, v1, 166603; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:46604; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]6605; GFX900-NEXT:    s_waitcnt vmcnt(0)6606; GFX900-NEXT:    s_setpc_b64 s[30:31]6607;6608; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_6_6:6609; GFX90A:       ; %bb.0:6610; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6611; GFX90A-NEXT:    v_mov_b32_e32 v2, 06612; GFX90A-NEXT:    ;;#ASMSTART6613; GFX90A-NEXT:    ; def v[0:1]6614; GFX90A-NEXT:    ;;#ASMEND6615; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v1, 166616; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:46617; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]6618; GFX90A-NEXT:    s_waitcnt vmcnt(0)6619; GFX90A-NEXT:    s_setpc_b64 s[30:31]6620;6621; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_6_6:6622; GFX942:       ; %bb.0:6623; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6624; GFX942-NEXT:    v_mov_b32_e32 v2, 06625; GFX942-NEXT:    ;;#ASMSTART6626; GFX942-NEXT:    ; def v[0:1]6627; GFX942-NEXT:    ;;#ASMEND6628; GFX942-NEXT:    s_nop 06629; GFX942-NEXT:    v_alignbit_b32 v0, v1, v1, 166630; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:46631; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]6632; GFX942-NEXT:    s_waitcnt vmcnt(0)6633; GFX942-NEXT:    s_setpc_b64 s[30:31]6634  %vec0 = call <4 x half> asm "; def $0", "=v"()6635  %vec1 = call <4 x half> asm "; def $0", "=v"()6636  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 6, i32 6>6637  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 86638  ret void6639}6640 6641define void @v_shuffle_v3f16_v4f16__7_u_6(ptr addrspace(1) inreg %ptr) {6642; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_u_6:6643; GFX900:       ; %bb.0:6644; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6645; GFX900-NEXT:    v_mov_b32_e32 v2, 06646; GFX900-NEXT:    ;;#ASMSTART6647; GFX900-NEXT:    ; def v[0:1]6648; GFX900-NEXT:    ;;#ASMEND6649; GFX900-NEXT:    v_alignbit_b32 v0, s4, v1, 166650; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:46651; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]6652; GFX900-NEXT:    s_waitcnt vmcnt(0)6653; GFX900-NEXT:    s_setpc_b64 s[30:31]6654;6655; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_u_6:6656; GFX90A:       ; %bb.0:6657; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6658; GFX90A-NEXT:    v_mov_b32_e32 v2, 06659; GFX90A-NEXT:    ;;#ASMSTART6660; GFX90A-NEXT:    ; def v[0:1]6661; GFX90A-NEXT:    ;;#ASMEND6662; GFX90A-NEXT:    v_alignbit_b32 v0, s4, v1, 166663; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:46664; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]6665; GFX90A-NEXT:    s_waitcnt vmcnt(0)6666; GFX90A-NEXT:    s_setpc_b64 s[30:31]6667;6668; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_u_6:6669; GFX942:       ; %bb.0:6670; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6671; GFX942-NEXT:    v_mov_b32_e32 v2, 06672; GFX942-NEXT:    ;;#ASMSTART6673; GFX942-NEXT:    ; def v[0:1]6674; GFX942-NEXT:    ;;#ASMEND6675; GFX942-NEXT:    s_nop 06676; GFX942-NEXT:    v_alignbit_b32 v0, s0, v1, 166677; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:46678; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]6679; GFX942-NEXT:    s_waitcnt vmcnt(0)6680; GFX942-NEXT:    s_setpc_b64 s[30:31]6681  %vec0 = call <4 x half> asm "; def $0", "=v"()6682  %vec1 = call <4 x half> asm "; def $0", "=v"()6683  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 poison, i32 6>6684  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 86685  ret void6686}6687 6688define void @v_shuffle_v3f16_v4f16__7_0_6(ptr addrspace(1) inreg %ptr) {6689; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_0_6:6690; GFX900:       ; %bb.0:6691; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6692; GFX900-NEXT:    ;;#ASMSTART6693; GFX900-NEXT:    ; def v[0:1]6694; GFX900-NEXT:    ;;#ASMEND6695; GFX900-NEXT:    v_mov_b32_e32 v3, 06696; GFX900-NEXT:    ;;#ASMSTART6697; GFX900-NEXT:    ; def v[1:2]6698; GFX900-NEXT:    ;;#ASMEND6699; GFX900-NEXT:    v_alignbit_b32 v0, v0, v2, 166700; GFX900-NEXT:    global_store_short v3, v2, s[16:17] offset:46701; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]6702; GFX900-NEXT:    s_waitcnt vmcnt(0)6703; GFX900-NEXT:    s_setpc_b64 s[30:31]6704;6705; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_0_6:6706; GFX90A:       ; %bb.0:6707; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6708; GFX90A-NEXT:    v_mov_b32_e32 v4, 06709; GFX90A-NEXT:    ;;#ASMSTART6710; GFX90A-NEXT:    ; def v[0:1]6711; GFX90A-NEXT:    ;;#ASMEND6712; GFX90A-NEXT:    ;;#ASMSTART6713; GFX90A-NEXT:    ; def v[2:3]6714; GFX90A-NEXT:    ;;#ASMEND6715; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v3, 166716; GFX90A-NEXT:    global_store_short v4, v3, s[16:17] offset:46717; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]6718; GFX90A-NEXT:    s_waitcnt vmcnt(0)6719; GFX90A-NEXT:    s_setpc_b64 s[30:31]6720;6721; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_0_6:6722; GFX942:       ; %bb.0:6723; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6724; GFX942-NEXT:    v_mov_b32_e32 v4, 06725; GFX942-NEXT:    ;;#ASMSTART6726; GFX942-NEXT:    ; def v[0:1]6727; GFX942-NEXT:    ;;#ASMEND6728; GFX942-NEXT:    ;;#ASMSTART6729; GFX942-NEXT:    ; def v[2:3]6730; GFX942-NEXT:    ;;#ASMEND6731; GFX942-NEXT:    s_nop 06732; GFX942-NEXT:    v_alignbit_b32 v0, v0, v3, 166733; GFX942-NEXT:    global_store_short v4, v3, s[0:1] offset:46734; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]6735; GFX942-NEXT:    s_waitcnt vmcnt(0)6736; GFX942-NEXT:    s_setpc_b64 s[30:31]6737  %vec0 = call <4 x half> asm "; def $0", "=v"()6738  %vec1 = call <4 x half> asm "; def $0", "=v"()6739  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 0, i32 6>6740  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 86741  ret void6742}6743 6744define void @v_shuffle_v3f16_v4f16__7_1_6(ptr addrspace(1) inreg %ptr) {6745; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_1_6:6746; GFX900:       ; %bb.0:6747; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6748; GFX900-NEXT:    ;;#ASMSTART6749; GFX900-NEXT:    ; def v[0:1]6750; GFX900-NEXT:    ;;#ASMEND6751; GFX900-NEXT:    v_mov_b32_e32 v3, 06752; GFX900-NEXT:    ;;#ASMSTART6753; GFX900-NEXT:    ; def v[1:2]6754; GFX900-NEXT:    ;;#ASMEND6755; GFX900-NEXT:    s_mov_b32 s4, 0x70603026756; GFX900-NEXT:    v_perm_b32 v0, v0, v2, s46757; GFX900-NEXT:    global_store_short v3, v2, s[16:17] offset:46758; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]6759; GFX900-NEXT:    s_waitcnt vmcnt(0)6760; GFX900-NEXT:    s_setpc_b64 s[30:31]6761;6762; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_1_6:6763; GFX90A:       ; %bb.0:6764; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6765; GFX90A-NEXT:    v_mov_b32_e32 v4, 06766; GFX90A-NEXT:    ;;#ASMSTART6767; GFX90A-NEXT:    ; def v[0:1]6768; GFX90A-NEXT:    ;;#ASMEND6769; GFX90A-NEXT:    ;;#ASMSTART6770; GFX90A-NEXT:    ; def v[2:3]6771; GFX90A-NEXT:    ;;#ASMEND6772; GFX90A-NEXT:    s_mov_b32 s4, 0x70603026773; GFX90A-NEXT:    v_perm_b32 v0, v0, v3, s46774; GFX90A-NEXT:    global_store_short v4, v3, s[16:17] offset:46775; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]6776; GFX90A-NEXT:    s_waitcnt vmcnt(0)6777; GFX90A-NEXT:    s_setpc_b64 s[30:31]6778;6779; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_1_6:6780; GFX942:       ; %bb.0:6781; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6782; GFX942-NEXT:    v_mov_b32_e32 v4, 06783; GFX942-NEXT:    ;;#ASMSTART6784; GFX942-NEXT:    ; def v[0:1]6785; GFX942-NEXT:    ;;#ASMEND6786; GFX942-NEXT:    ;;#ASMSTART6787; GFX942-NEXT:    ; def v[2:3]6788; GFX942-NEXT:    ;;#ASMEND6789; GFX942-NEXT:    s_mov_b32 s2, 0x70603026790; GFX942-NEXT:    v_perm_b32 v0, v0, v3, s26791; GFX942-NEXT:    global_store_short v4, v3, s[0:1] offset:46792; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]6793; GFX942-NEXT:    s_waitcnt vmcnt(0)6794; GFX942-NEXT:    s_setpc_b64 s[30:31]6795  %vec0 = call <4 x half> asm "; def $0", "=v"()6796  %vec1 = call <4 x half> asm "; def $0", "=v"()6797  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 1, i32 6>6798  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 86799  ret void6800}6801 6802define void @v_shuffle_v3f16_v4f16__7_2_6(ptr addrspace(1) inreg %ptr) {6803; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_2_6:6804; GFX900:       ; %bb.0:6805; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6806; GFX900-NEXT:    v_mov_b32_e32 v4, 06807; GFX900-NEXT:    ;;#ASMSTART6808; GFX900-NEXT:    ; def v[0:1]6809; GFX900-NEXT:    ;;#ASMEND6810; GFX900-NEXT:    ;;#ASMSTART6811; GFX900-NEXT:    ; def v[2:3]6812; GFX900-NEXT:    ;;#ASMEND6813; GFX900-NEXT:    v_alignbit_b32 v0, v1, v3, 166814; GFX900-NEXT:    global_store_short v4, v3, s[16:17] offset:46815; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]6816; GFX900-NEXT:    s_waitcnt vmcnt(0)6817; GFX900-NEXT:    s_setpc_b64 s[30:31]6818;6819; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_2_6:6820; GFX90A:       ; %bb.0:6821; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6822; GFX90A-NEXT:    v_mov_b32_e32 v4, 06823; GFX90A-NEXT:    ;;#ASMSTART6824; GFX90A-NEXT:    ; def v[0:1]6825; GFX90A-NEXT:    ;;#ASMEND6826; GFX90A-NEXT:    ;;#ASMSTART6827; GFX90A-NEXT:    ; def v[2:3]6828; GFX90A-NEXT:    ;;#ASMEND6829; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v3, 166830; GFX90A-NEXT:    global_store_short v4, v3, s[16:17] offset:46831; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]6832; GFX90A-NEXT:    s_waitcnt vmcnt(0)6833; GFX90A-NEXT:    s_setpc_b64 s[30:31]6834;6835; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_2_6:6836; GFX942:       ; %bb.0:6837; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6838; GFX942-NEXT:    v_mov_b32_e32 v4, 06839; GFX942-NEXT:    ;;#ASMSTART6840; GFX942-NEXT:    ; def v[0:1]6841; GFX942-NEXT:    ;;#ASMEND6842; GFX942-NEXT:    ;;#ASMSTART6843; GFX942-NEXT:    ; def v[2:3]6844; GFX942-NEXT:    ;;#ASMEND6845; GFX942-NEXT:    s_nop 06846; GFX942-NEXT:    v_alignbit_b32 v0, v1, v3, 166847; GFX942-NEXT:    global_store_short v4, v3, s[0:1] offset:46848; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]6849; GFX942-NEXT:    s_waitcnt vmcnt(0)6850; GFX942-NEXT:    s_setpc_b64 s[30:31]6851  %vec0 = call <4 x half> asm "; def $0", "=v"()6852  %vec1 = call <4 x half> asm "; def $0", "=v"()6853  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 2, i32 6>6854  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 86855  ret void6856}6857 6858define void @v_shuffle_v3f16_v4f16__7_3_6(ptr addrspace(1) inreg %ptr) {6859; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_3_6:6860; GFX900:       ; %bb.0:6861; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6862; GFX900-NEXT:    v_mov_b32_e32 v4, 06863; GFX900-NEXT:    ;;#ASMSTART6864; GFX900-NEXT:    ; def v[0:1]6865; GFX900-NEXT:    ;;#ASMEND6866; GFX900-NEXT:    ;;#ASMSTART6867; GFX900-NEXT:    ; def v[2:3]6868; GFX900-NEXT:    ;;#ASMEND6869; GFX900-NEXT:    s_mov_b32 s4, 0x70603026870; GFX900-NEXT:    v_perm_b32 v0, v1, v3, s46871; GFX900-NEXT:    global_store_short v4, v3, s[16:17] offset:46872; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]6873; GFX900-NEXT:    s_waitcnt vmcnt(0)6874; GFX900-NEXT:    s_setpc_b64 s[30:31]6875;6876; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_3_6:6877; GFX90A:       ; %bb.0:6878; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6879; GFX90A-NEXT:    v_mov_b32_e32 v4, 06880; GFX90A-NEXT:    ;;#ASMSTART6881; GFX90A-NEXT:    ; def v[0:1]6882; GFX90A-NEXT:    ;;#ASMEND6883; GFX90A-NEXT:    ;;#ASMSTART6884; GFX90A-NEXT:    ; def v[2:3]6885; GFX90A-NEXT:    ;;#ASMEND6886; GFX90A-NEXT:    s_mov_b32 s4, 0x70603026887; GFX90A-NEXT:    v_perm_b32 v0, v1, v3, s46888; GFX90A-NEXT:    global_store_short v4, v3, s[16:17] offset:46889; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]6890; GFX90A-NEXT:    s_waitcnt vmcnt(0)6891; GFX90A-NEXT:    s_setpc_b64 s[30:31]6892;6893; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_3_6:6894; GFX942:       ; %bb.0:6895; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6896; GFX942-NEXT:    v_mov_b32_e32 v4, 06897; GFX942-NEXT:    ;;#ASMSTART6898; GFX942-NEXT:    ; def v[0:1]6899; GFX942-NEXT:    ;;#ASMEND6900; GFX942-NEXT:    ;;#ASMSTART6901; GFX942-NEXT:    ; def v[2:3]6902; GFX942-NEXT:    ;;#ASMEND6903; GFX942-NEXT:    s_mov_b32 s2, 0x70603026904; GFX942-NEXT:    v_perm_b32 v0, v1, v3, s26905; GFX942-NEXT:    global_store_short v4, v3, s[0:1] offset:46906; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]6907; GFX942-NEXT:    s_waitcnt vmcnt(0)6908; GFX942-NEXT:    s_setpc_b64 s[30:31]6909  %vec0 = call <4 x half> asm "; def $0", "=v"()6910  %vec1 = call <4 x half> asm "; def $0", "=v"()6911  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 3, i32 6>6912  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 86913  ret void6914}6915 6916define void @v_shuffle_v3f16_v4f16__7_4_6(ptr addrspace(1) inreg %ptr) {6917; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_4_6:6918; GFX900:       ; %bb.0:6919; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6920; GFX900-NEXT:    v_mov_b32_e32 v2, 06921; GFX900-NEXT:    ;;#ASMSTART6922; GFX900-NEXT:    ; def v[0:1]6923; GFX900-NEXT:    ;;#ASMEND6924; GFX900-NEXT:    v_alignbit_b32 v0, v0, v1, 166925; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:46926; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]6927; GFX900-NEXT:    s_waitcnt vmcnt(0)6928; GFX900-NEXT:    s_setpc_b64 s[30:31]6929;6930; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_4_6:6931; GFX90A:       ; %bb.0:6932; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6933; GFX90A-NEXT:    v_mov_b32_e32 v2, 06934; GFX90A-NEXT:    ;;#ASMSTART6935; GFX90A-NEXT:    ; def v[0:1]6936; GFX90A-NEXT:    ;;#ASMEND6937; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v1, 166938; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:46939; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]6940; GFX90A-NEXT:    s_waitcnt vmcnt(0)6941; GFX90A-NEXT:    s_setpc_b64 s[30:31]6942;6943; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_4_6:6944; GFX942:       ; %bb.0:6945; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6946; GFX942-NEXT:    v_mov_b32_e32 v2, 06947; GFX942-NEXT:    ;;#ASMSTART6948; GFX942-NEXT:    ; def v[0:1]6949; GFX942-NEXT:    ;;#ASMEND6950; GFX942-NEXT:    s_nop 06951; GFX942-NEXT:    v_alignbit_b32 v0, v0, v1, 166952; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:46953; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]6954; GFX942-NEXT:    s_waitcnt vmcnt(0)6955; GFX942-NEXT:    s_setpc_b64 s[30:31]6956  %vec0 = call <4 x half> asm "; def $0", "=v"()6957  %vec1 = call <4 x half> asm "; def $0", "=v"()6958  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 4, i32 6>6959  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 86960  ret void6961}6962 6963define void @v_shuffle_v3f16_v4f16__7_5_6(ptr addrspace(1) inreg %ptr) {6964; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_5_6:6965; GFX900:       ; %bb.0:6966; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6967; GFX900-NEXT:    v_mov_b32_e32 v2, 06968; GFX900-NEXT:    ;;#ASMSTART6969; GFX900-NEXT:    ; def v[0:1]6970; GFX900-NEXT:    ;;#ASMEND6971; GFX900-NEXT:    s_mov_b32 s4, 0x70603026972; GFX900-NEXT:    v_perm_b32 v0, v0, v1, s46973; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:46974; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]6975; GFX900-NEXT:    s_waitcnt vmcnt(0)6976; GFX900-NEXT:    s_setpc_b64 s[30:31]6977;6978; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_5_6:6979; GFX90A:       ; %bb.0:6980; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6981; GFX90A-NEXT:    v_mov_b32_e32 v2, 06982; GFX90A-NEXT:    ;;#ASMSTART6983; GFX90A-NEXT:    ; def v[0:1]6984; GFX90A-NEXT:    ;;#ASMEND6985; GFX90A-NEXT:    s_mov_b32 s4, 0x70603026986; GFX90A-NEXT:    v_perm_b32 v0, v0, v1, s46987; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:46988; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]6989; GFX90A-NEXT:    s_waitcnt vmcnt(0)6990; GFX90A-NEXT:    s_setpc_b64 s[30:31]6991;6992; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_5_6:6993; GFX942:       ; %bb.0:6994; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6995; GFX942-NEXT:    v_mov_b32_e32 v2, 06996; GFX942-NEXT:    ;;#ASMSTART6997; GFX942-NEXT:    ; def v[0:1]6998; GFX942-NEXT:    ;;#ASMEND6999; GFX942-NEXT:    s_mov_b32 s2, 0x70603027000; GFX942-NEXT:    v_perm_b32 v0, v0, v1, s27001; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:47002; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]7003; GFX942-NEXT:    s_waitcnt vmcnt(0)7004; GFX942-NEXT:    s_setpc_b64 s[30:31]7005  %vec0 = call <4 x half> asm "; def $0", "=v"()7006  %vec1 = call <4 x half> asm "; def $0", "=v"()7007  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 5, i32 6>7008  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 87009  ret void7010}7011 7012define void @v_shuffle_v3f16_v4f16__u_7_7(ptr addrspace(1) inreg %ptr) {7013; GFX900-LABEL: v_shuffle_v3f16_v4f16__u_7_7:7014; GFX900:       ; %bb.0:7015; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7016; GFX900-NEXT:    ;;#ASMSTART7017; GFX900-NEXT:    ; def v[0:1]7018; GFX900-NEXT:    ;;#ASMEND7019; GFX900-NEXT:    s_mov_b32 s4, 0xffff7020; GFX900-NEXT:    v_mov_b32_e32 v2, 07021; GFX900-NEXT:    v_bfi_b32 v0, s4, v0, v17022; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v17023; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]7024; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:47025; GFX900-NEXT:    s_waitcnt vmcnt(0)7026; GFX900-NEXT:    s_setpc_b64 s[30:31]7027;7028; GFX90A-LABEL: v_shuffle_v3f16_v4f16__u_7_7:7029; GFX90A:       ; %bb.0:7030; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7031; GFX90A-NEXT:    ;;#ASMSTART7032; GFX90A-NEXT:    ; def v[0:1]7033; GFX90A-NEXT:    ;;#ASMEND7034; GFX90A-NEXT:    s_mov_b32 s4, 0xffff7035; GFX90A-NEXT:    v_mov_b32_e32 v2, 07036; GFX90A-NEXT:    v_bfi_b32 v0, s4, v0, v17037; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v17038; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]7039; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:47040; GFX90A-NEXT:    s_waitcnt vmcnt(0)7041; GFX90A-NEXT:    s_setpc_b64 s[30:31]7042;7043; GFX942-LABEL: v_shuffle_v3f16_v4f16__u_7_7:7044; GFX942:       ; %bb.0:7045; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7046; GFX942-NEXT:    ;;#ASMSTART7047; GFX942-NEXT:    ; def v[0:1]7048; GFX942-NEXT:    ;;#ASMEND7049; GFX942-NEXT:    s_mov_b32 s2, 0xffff7050; GFX942-NEXT:    v_mov_b32_e32 v2, 07051; GFX942-NEXT:    v_bfi_b32 v0, s2, v0, v17052; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v17053; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]7054; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:47055; GFX942-NEXT:    s_waitcnt vmcnt(0)7056; GFX942-NEXT:    s_setpc_b64 s[30:31]7057  %vec0 = call <4 x half> asm "; def $0", "=v"()7058  %vec1 = call <4 x half> asm "; def $0", "=v"()7059  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 poison, i32 7, i32 7>7060  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 87061  ret void7062}7063 7064define void @v_shuffle_v3f16_v4f16__0_7_7(ptr addrspace(1) inreg %ptr) {7065; GFX900-LABEL: v_shuffle_v3f16_v4f16__0_7_7:7066; GFX900:       ; %bb.0:7067; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7068; GFX900-NEXT:    ;;#ASMSTART7069; GFX900-NEXT:    ; def v[0:1]7070; GFX900-NEXT:    ;;#ASMEND7071; GFX900-NEXT:    s_mov_b32 s4, 0xffff7072; GFX900-NEXT:    v_mov_b32_e32 v3, 07073; GFX900-NEXT:    ;;#ASMSTART7074; GFX900-NEXT:    ; def v[1:2]7075; GFX900-NEXT:    ;;#ASMEND7076; GFX900-NEXT:    v_bfi_b32 v0, s4, v0, v27077; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v27078; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]7079; GFX900-NEXT:    global_store_short v3, v1, s[16:17] offset:47080; GFX900-NEXT:    s_waitcnt vmcnt(0)7081; GFX900-NEXT:    s_setpc_b64 s[30:31]7082;7083; GFX90A-LABEL: v_shuffle_v3f16_v4f16__0_7_7:7084; GFX90A:       ; %bb.0:7085; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7086; GFX90A-NEXT:    ;;#ASMSTART7087; GFX90A-NEXT:    ; def v[0:1]7088; GFX90A-NEXT:    ;;#ASMEND7089; GFX90A-NEXT:    s_mov_b32 s4, 0xffff7090; GFX90A-NEXT:    v_mov_b32_e32 v4, 07091; GFX90A-NEXT:    ;;#ASMSTART7092; GFX90A-NEXT:    ; def v[2:3]7093; GFX90A-NEXT:    ;;#ASMEND7094; GFX90A-NEXT:    v_bfi_b32 v0, s4, v0, v37095; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v37096; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]7097; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:47098; GFX90A-NEXT:    s_waitcnt vmcnt(0)7099; GFX90A-NEXT:    s_setpc_b64 s[30:31]7100;7101; GFX942-LABEL: v_shuffle_v3f16_v4f16__0_7_7:7102; GFX942:       ; %bb.0:7103; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7104; GFX942-NEXT:    ;;#ASMSTART7105; GFX942-NEXT:    ; def v[0:1]7106; GFX942-NEXT:    ;;#ASMEND7107; GFX942-NEXT:    s_mov_b32 s2, 0xffff7108; GFX942-NEXT:    v_mov_b32_e32 v4, 07109; GFX942-NEXT:    ;;#ASMSTART7110; GFX942-NEXT:    ; def v[2:3]7111; GFX942-NEXT:    ;;#ASMEND7112; GFX942-NEXT:    s_nop 07113; GFX942-NEXT:    v_bfi_b32 v0, s2, v0, v37114; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v37115; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]7116; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:47117; GFX942-NEXT:    s_waitcnt vmcnt(0)7118; GFX942-NEXT:    s_setpc_b64 s[30:31]7119  %vec0 = call <4 x half> asm "; def $0", "=v"()7120  %vec1 = call <4 x half> asm "; def $0", "=v"()7121  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 0, i32 7, i32 7>7122  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 87123  ret void7124}7125 7126define void @v_shuffle_v3f16_v4f16__1_7_7(ptr addrspace(1) inreg %ptr) {7127; GFX900-LABEL: v_shuffle_v3f16_v4f16__1_7_7:7128; GFX900:       ; %bb.0:7129; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7130; GFX900-NEXT:    ;;#ASMSTART7131; GFX900-NEXT:    ; def v[0:1]7132; GFX900-NEXT:    ;;#ASMEND7133; GFX900-NEXT:    s_mov_b32 s4, 0x70603027134; GFX900-NEXT:    v_mov_b32_e32 v3, 07135; GFX900-NEXT:    ;;#ASMSTART7136; GFX900-NEXT:    ; def v[1:2]7137; GFX900-NEXT:    ;;#ASMEND7138; GFX900-NEXT:    v_perm_b32 v0, v2, v0, s47139; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v27140; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]7141; GFX900-NEXT:    global_store_short v3, v1, s[16:17] offset:47142; GFX900-NEXT:    s_waitcnt vmcnt(0)7143; GFX900-NEXT:    s_setpc_b64 s[30:31]7144;7145; GFX90A-LABEL: v_shuffle_v3f16_v4f16__1_7_7:7146; GFX90A:       ; %bb.0:7147; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7148; GFX90A-NEXT:    ;;#ASMSTART7149; GFX90A-NEXT:    ; def v[0:1]7150; GFX90A-NEXT:    ;;#ASMEND7151; GFX90A-NEXT:    s_mov_b32 s4, 0x70603027152; GFX90A-NEXT:    v_mov_b32_e32 v4, 07153; GFX90A-NEXT:    ;;#ASMSTART7154; GFX90A-NEXT:    ; def v[2:3]7155; GFX90A-NEXT:    ;;#ASMEND7156; GFX90A-NEXT:    v_perm_b32 v0, v3, v0, s47157; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v37158; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]7159; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:47160; GFX90A-NEXT:    s_waitcnt vmcnt(0)7161; GFX90A-NEXT:    s_setpc_b64 s[30:31]7162;7163; GFX942-LABEL: v_shuffle_v3f16_v4f16__1_7_7:7164; GFX942:       ; %bb.0:7165; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7166; GFX942-NEXT:    ;;#ASMSTART7167; GFX942-NEXT:    ; def v[0:1]7168; GFX942-NEXT:    ;;#ASMEND7169; GFX942-NEXT:    s_mov_b32 s2, 0x70603027170; GFX942-NEXT:    v_mov_b32_e32 v4, 07171; GFX942-NEXT:    ;;#ASMSTART7172; GFX942-NEXT:    ; def v[2:3]7173; GFX942-NEXT:    ;;#ASMEND7174; GFX942-NEXT:    s_nop 07175; GFX942-NEXT:    v_perm_b32 v0, v3, v0, s27176; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v37177; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]7178; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:47179; GFX942-NEXT:    s_waitcnt vmcnt(0)7180; GFX942-NEXT:    s_setpc_b64 s[30:31]7181  %vec0 = call <4 x half> asm "; def $0", "=v"()7182  %vec1 = call <4 x half> asm "; def $0", "=v"()7183  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 1, i32 7, i32 7>7184  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 87185  ret void7186}7187 7188define void @v_shuffle_v3f16_v4f16__2_7_7(ptr addrspace(1) inreg %ptr) {7189; GFX900-LABEL: v_shuffle_v3f16_v4f16__2_7_7:7190; GFX900:       ; %bb.0:7191; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7192; GFX900-NEXT:    ;;#ASMSTART7193; GFX900-NEXT:    ; def v[0:1]7194; GFX900-NEXT:    ;;#ASMEND7195; GFX900-NEXT:    s_mov_b32 s4, 0xffff7196; GFX900-NEXT:    v_mov_b32_e32 v4, 07197; GFX900-NEXT:    ;;#ASMSTART7198; GFX900-NEXT:    ; def v[2:3]7199; GFX900-NEXT:    ;;#ASMEND7200; GFX900-NEXT:    v_bfi_b32 v0, s4, v1, v37201; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v37202; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:47203; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]7204; GFX900-NEXT:    s_waitcnt vmcnt(0)7205; GFX900-NEXT:    s_setpc_b64 s[30:31]7206;7207; GFX90A-LABEL: v_shuffle_v3f16_v4f16__2_7_7:7208; GFX90A:       ; %bb.0:7209; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7210; GFX90A-NEXT:    ;;#ASMSTART7211; GFX90A-NEXT:    ; def v[0:1]7212; GFX90A-NEXT:    ;;#ASMEND7213; GFX90A-NEXT:    s_mov_b32 s4, 0xffff7214; GFX90A-NEXT:    v_mov_b32_e32 v4, 07215; GFX90A-NEXT:    ;;#ASMSTART7216; GFX90A-NEXT:    ; def v[2:3]7217; GFX90A-NEXT:    ;;#ASMEND7218; GFX90A-NEXT:    v_bfi_b32 v0, s4, v1, v37219; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v37220; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:47221; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]7222; GFX90A-NEXT:    s_waitcnt vmcnt(0)7223; GFX90A-NEXT:    s_setpc_b64 s[30:31]7224;7225; GFX942-LABEL: v_shuffle_v3f16_v4f16__2_7_7:7226; GFX942:       ; %bb.0:7227; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7228; GFX942-NEXT:    ;;#ASMSTART7229; GFX942-NEXT:    ; def v[0:1]7230; GFX942-NEXT:    ;;#ASMEND7231; GFX942-NEXT:    s_mov_b32 s2, 0xffff7232; GFX942-NEXT:    v_mov_b32_e32 v4, 07233; GFX942-NEXT:    ;;#ASMSTART7234; GFX942-NEXT:    ; def v[2:3]7235; GFX942-NEXT:    ;;#ASMEND7236; GFX942-NEXT:    s_nop 07237; GFX942-NEXT:    v_bfi_b32 v0, s2, v1, v37238; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v37239; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:47240; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]7241; GFX942-NEXT:    s_waitcnt vmcnt(0)7242; GFX942-NEXT:    s_setpc_b64 s[30:31]7243  %vec0 = call <4 x half> asm "; def $0", "=v"()7244  %vec1 = call <4 x half> asm "; def $0", "=v"()7245  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 2, i32 7, i32 7>7246  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 87247  ret void7248}7249 7250define void @v_shuffle_v3f16_v4f16__3_7_7(ptr addrspace(1) inreg %ptr) {7251; GFX900-LABEL: v_shuffle_v3f16_v4f16__3_7_7:7252; GFX900:       ; %bb.0:7253; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7254; GFX900-NEXT:    ;;#ASMSTART7255; GFX900-NEXT:    ; def v[0:1]7256; GFX900-NEXT:    ;;#ASMEND7257; GFX900-NEXT:    s_mov_b32 s4, 0x70603027258; GFX900-NEXT:    v_mov_b32_e32 v4, 07259; GFX900-NEXT:    ;;#ASMSTART7260; GFX900-NEXT:    ; def v[2:3]7261; GFX900-NEXT:    ;;#ASMEND7262; GFX900-NEXT:    v_perm_b32 v0, v3, v1, s47263; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v37264; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]7265; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:47266; GFX900-NEXT:    s_waitcnt vmcnt(0)7267; GFX900-NEXT:    s_setpc_b64 s[30:31]7268;7269; GFX90A-LABEL: v_shuffle_v3f16_v4f16__3_7_7:7270; GFX90A:       ; %bb.0:7271; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7272; GFX90A-NEXT:    ;;#ASMSTART7273; GFX90A-NEXT:    ; def v[0:1]7274; GFX90A-NEXT:    ;;#ASMEND7275; GFX90A-NEXT:    s_mov_b32 s4, 0x70603027276; GFX90A-NEXT:    v_mov_b32_e32 v4, 07277; GFX90A-NEXT:    ;;#ASMSTART7278; GFX90A-NEXT:    ; def v[2:3]7279; GFX90A-NEXT:    ;;#ASMEND7280; GFX90A-NEXT:    v_perm_b32 v0, v3, v1, s47281; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v37282; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]7283; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:47284; GFX90A-NEXT:    s_waitcnt vmcnt(0)7285; GFX90A-NEXT:    s_setpc_b64 s[30:31]7286;7287; GFX942-LABEL: v_shuffle_v3f16_v4f16__3_7_7:7288; GFX942:       ; %bb.0:7289; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7290; GFX942-NEXT:    ;;#ASMSTART7291; GFX942-NEXT:    ; def v[0:1]7292; GFX942-NEXT:    ;;#ASMEND7293; GFX942-NEXT:    s_mov_b32 s2, 0x70603027294; GFX942-NEXT:    v_mov_b32_e32 v4, 07295; GFX942-NEXT:    ;;#ASMSTART7296; GFX942-NEXT:    ; def v[2:3]7297; GFX942-NEXT:    ;;#ASMEND7298; GFX942-NEXT:    s_nop 07299; GFX942-NEXT:    v_perm_b32 v0, v3, v1, s27300; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v37301; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]7302; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:47303; GFX942-NEXT:    s_waitcnt vmcnt(0)7304; GFX942-NEXT:    s_setpc_b64 s[30:31]7305  %vec0 = call <4 x half> asm "; def $0", "=v"()7306  %vec1 = call <4 x half> asm "; def $0", "=v"()7307  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 3, i32 7, i32 7>7308  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 87309  ret void7310}7311 7312define void @v_shuffle_v3f16_v4f16__4_7_7(ptr addrspace(1) inreg %ptr) {7313; GFX900-LABEL: v_shuffle_v3f16_v4f16__4_7_7:7314; GFX900:       ; %bb.0:7315; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7316; GFX900-NEXT:    ;;#ASMSTART7317; GFX900-NEXT:    ; def v[0:1]7318; GFX900-NEXT:    ;;#ASMEND7319; GFX900-NEXT:    s_mov_b32 s4, 0xffff7320; GFX900-NEXT:    v_mov_b32_e32 v2, 07321; GFX900-NEXT:    v_bfi_b32 v0, s4, v0, v17322; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v17323; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]7324; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:47325; GFX900-NEXT:    s_waitcnt vmcnt(0)7326; GFX900-NEXT:    s_setpc_b64 s[30:31]7327;7328; GFX90A-LABEL: v_shuffle_v3f16_v4f16__4_7_7:7329; GFX90A:       ; %bb.0:7330; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7331; GFX90A-NEXT:    ;;#ASMSTART7332; GFX90A-NEXT:    ; def v[0:1]7333; GFX90A-NEXT:    ;;#ASMEND7334; GFX90A-NEXT:    s_mov_b32 s4, 0xffff7335; GFX90A-NEXT:    v_mov_b32_e32 v2, 07336; GFX90A-NEXT:    v_bfi_b32 v0, s4, v0, v17337; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v17338; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]7339; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:47340; GFX90A-NEXT:    s_waitcnt vmcnt(0)7341; GFX90A-NEXT:    s_setpc_b64 s[30:31]7342;7343; GFX942-LABEL: v_shuffle_v3f16_v4f16__4_7_7:7344; GFX942:       ; %bb.0:7345; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7346; GFX942-NEXT:    ;;#ASMSTART7347; GFX942-NEXT:    ; def v[0:1]7348; GFX942-NEXT:    ;;#ASMEND7349; GFX942-NEXT:    s_mov_b32 s2, 0xffff7350; GFX942-NEXT:    v_mov_b32_e32 v2, 07351; GFX942-NEXT:    v_bfi_b32 v0, s2, v0, v17352; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v17353; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]7354; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:47355; GFX942-NEXT:    s_waitcnt vmcnt(0)7356; GFX942-NEXT:    s_setpc_b64 s[30:31]7357  %vec0 = call <4 x half> asm "; def $0", "=v"()7358  %vec1 = call <4 x half> asm "; def $0", "=v"()7359  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 4, i32 7, i32 7>7360  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 87361  ret void7362}7363 7364define void @v_shuffle_v3f16_v4f16__5_7_7(ptr addrspace(1) inreg %ptr) {7365; GFX900-LABEL: v_shuffle_v3f16_v4f16__5_7_7:7366; GFX900:       ; %bb.0:7367; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7368; GFX900-NEXT:    ;;#ASMSTART7369; GFX900-NEXT:    ; def v[0:1]7370; GFX900-NEXT:    ;;#ASMEND7371; GFX900-NEXT:    s_mov_b32 s4, 0x70603027372; GFX900-NEXT:    v_mov_b32_e32 v2, 07373; GFX900-NEXT:    v_perm_b32 v0, v1, v0, s47374; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v17375; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]7376; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:47377; GFX900-NEXT:    s_waitcnt vmcnt(0)7378; GFX900-NEXT:    s_setpc_b64 s[30:31]7379;7380; GFX90A-LABEL: v_shuffle_v3f16_v4f16__5_7_7:7381; GFX90A:       ; %bb.0:7382; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7383; GFX90A-NEXT:    ;;#ASMSTART7384; GFX90A-NEXT:    ; def v[0:1]7385; GFX90A-NEXT:    ;;#ASMEND7386; GFX90A-NEXT:    s_mov_b32 s4, 0x70603027387; GFX90A-NEXT:    v_mov_b32_e32 v2, 07388; GFX90A-NEXT:    v_perm_b32 v0, v1, v0, s47389; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v17390; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]7391; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:47392; GFX90A-NEXT:    s_waitcnt vmcnt(0)7393; GFX90A-NEXT:    s_setpc_b64 s[30:31]7394;7395; GFX942-LABEL: v_shuffle_v3f16_v4f16__5_7_7:7396; GFX942:       ; %bb.0:7397; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7398; GFX942-NEXT:    ;;#ASMSTART7399; GFX942-NEXT:    ; def v[0:1]7400; GFX942-NEXT:    ;;#ASMEND7401; GFX942-NEXT:    s_mov_b32 s2, 0x70603027402; GFX942-NEXT:    v_mov_b32_e32 v2, 07403; GFX942-NEXT:    v_perm_b32 v0, v1, v0, s27404; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v17405; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]7406; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:47407; GFX942-NEXT:    s_waitcnt vmcnt(0)7408; GFX942-NEXT:    s_setpc_b64 s[30:31]7409  %vec0 = call <4 x half> asm "; def $0", "=v"()7410  %vec1 = call <4 x half> asm "; def $0", "=v"()7411  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 5, i32 7, i32 7>7412  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 87413  ret void7414}7415 7416define void @v_shuffle_v3f16_v4f16__6_7_7(ptr addrspace(1) inreg %ptr) {7417; GFX900-LABEL: v_shuffle_v3f16_v4f16__6_7_7:7418; GFX900:       ; %bb.0:7419; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7420; GFX900-NEXT:    v_mov_b32_e32 v2, 07421; GFX900-NEXT:    ;;#ASMSTART7422; GFX900-NEXT:    ; def v[0:1]7423; GFX900-NEXT:    ;;#ASMEND7424; GFX900-NEXT:    global_store_short_d16_hi v2, v1, s[16:17] offset:47425; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]7426; GFX900-NEXT:    s_waitcnt vmcnt(0)7427; GFX900-NEXT:    s_setpc_b64 s[30:31]7428;7429; GFX90A-LABEL: v_shuffle_v3f16_v4f16__6_7_7:7430; GFX90A:       ; %bb.0:7431; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7432; GFX90A-NEXT:    v_mov_b32_e32 v2, 07433; GFX90A-NEXT:    ;;#ASMSTART7434; GFX90A-NEXT:    ; def v[0:1]7435; GFX90A-NEXT:    ;;#ASMEND7436; GFX90A-NEXT:    global_store_short_d16_hi v2, v1, s[16:17] offset:47437; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]7438; GFX90A-NEXT:    s_waitcnt vmcnt(0)7439; GFX90A-NEXT:    s_setpc_b64 s[30:31]7440;7441; GFX942-LABEL: v_shuffle_v3f16_v4f16__6_7_7:7442; GFX942:       ; %bb.0:7443; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7444; GFX942-NEXT:    v_mov_b32_e32 v2, 07445; GFX942-NEXT:    ;;#ASMSTART7446; GFX942-NEXT:    ; def v[0:1]7447; GFX942-NEXT:    ;;#ASMEND7448; GFX942-NEXT:    global_store_short_d16_hi v2, v1, s[0:1] offset:47449; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]7450; GFX942-NEXT:    s_waitcnt vmcnt(0)7451; GFX942-NEXT:    s_setpc_b64 s[30:31]7452  %vec0 = call <4 x half> asm "; def $0", "=v"()7453  %vec1 = call <4 x half> asm "; def $0", "=v"()7454  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 6, i32 7, i32 7>7455  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 87456  ret void7457}7458 7459define void @v_shuffle_v3f16_v4f16__7_u_7(ptr addrspace(1) inreg %ptr) {7460; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_u_7:7461; GFX900:       ; %bb.0:7462; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7463; GFX900-NEXT:    ;;#ASMSTART7464; GFX900-NEXT:    ; def v[0:1]7465; GFX900-NEXT:    ;;#ASMEND7466; GFX900-NEXT:    v_mov_b32_e32 v2, 07467; GFX900-NEXT:    v_lshrrev_b32_e32 v0, 16, v17468; GFX900-NEXT:    v_alignbit_b32 v1, s4, v1, 167469; GFX900-NEXT:    global_store_dword v2, v1, s[16:17]7470; GFX900-NEXT:    global_store_short v2, v0, s[16:17] offset:47471; GFX900-NEXT:    s_waitcnt vmcnt(0)7472; GFX900-NEXT:    s_setpc_b64 s[30:31]7473;7474; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_u_7:7475; GFX90A:       ; %bb.0:7476; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7477; GFX90A-NEXT:    ;;#ASMSTART7478; GFX90A-NEXT:    ; def v[0:1]7479; GFX90A-NEXT:    ;;#ASMEND7480; GFX90A-NEXT:    v_mov_b32_e32 v2, 07481; GFX90A-NEXT:    v_lshrrev_b32_e32 v0, 16, v17482; GFX90A-NEXT:    v_alignbit_b32 v1, s4, v1, 167483; GFX90A-NEXT:    global_store_dword v2, v1, s[16:17]7484; GFX90A-NEXT:    global_store_short v2, v0, s[16:17] offset:47485; GFX90A-NEXT:    s_waitcnt vmcnt(0)7486; GFX90A-NEXT:    s_setpc_b64 s[30:31]7487;7488; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_u_7:7489; GFX942:       ; %bb.0:7490; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7491; GFX942-NEXT:    ;;#ASMSTART7492; GFX942-NEXT:    ; def v[0:1]7493; GFX942-NEXT:    ;;#ASMEND7494; GFX942-NEXT:    v_mov_b32_e32 v2, 07495; GFX942-NEXT:    v_lshrrev_b32_e32 v0, 16, v17496; GFX942-NEXT:    v_alignbit_b32 v1, s0, v1, 167497; GFX942-NEXT:    global_store_dword v2, v1, s[0:1]7498; GFX942-NEXT:    global_store_short v2, v0, s[0:1] offset:47499; GFX942-NEXT:    s_waitcnt vmcnt(0)7500; GFX942-NEXT:    s_setpc_b64 s[30:31]7501  %vec0 = call <4 x half> asm "; def $0", "=v"()7502  %vec1 = call <4 x half> asm "; def $0", "=v"()7503  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 poison, i32 7>7504  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 87505  ret void7506}7507 7508define void @v_shuffle_v3f16_v4f16__7_0_7(ptr addrspace(1) inreg %ptr) {7509; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_0_7:7510; GFX900:       ; %bb.0:7511; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7512; GFX900-NEXT:    ;;#ASMSTART7513; GFX900-NEXT:    ; def v[0:1]7514; GFX900-NEXT:    ;;#ASMEND7515; GFX900-NEXT:    v_mov_b32_e32 v3, 07516; GFX900-NEXT:    ;;#ASMSTART7517; GFX900-NEXT:    ; def v[1:2]7518; GFX900-NEXT:    ;;#ASMEND7519; GFX900-NEXT:    v_alignbit_b32 v0, v0, v2, 167520; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v27521; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]7522; GFX900-NEXT:    global_store_short v3, v1, s[16:17] offset:47523; GFX900-NEXT:    s_waitcnt vmcnt(0)7524; GFX900-NEXT:    s_setpc_b64 s[30:31]7525;7526; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_0_7:7527; GFX90A:       ; %bb.0:7528; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7529; GFX90A-NEXT:    ;;#ASMSTART7530; GFX90A-NEXT:    ; def v[0:1]7531; GFX90A-NEXT:    ;;#ASMEND7532; GFX90A-NEXT:    v_mov_b32_e32 v4, 07533; GFX90A-NEXT:    ;;#ASMSTART7534; GFX90A-NEXT:    ; def v[2:3]7535; GFX90A-NEXT:    ;;#ASMEND7536; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v3, 167537; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v37538; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]7539; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:47540; GFX90A-NEXT:    s_waitcnt vmcnt(0)7541; GFX90A-NEXT:    s_setpc_b64 s[30:31]7542;7543; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_0_7:7544; GFX942:       ; %bb.0:7545; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7546; GFX942-NEXT:    ;;#ASMSTART7547; GFX942-NEXT:    ; def v[0:1]7548; GFX942-NEXT:    ;;#ASMEND7549; GFX942-NEXT:    v_mov_b32_e32 v4, 07550; GFX942-NEXT:    ;;#ASMSTART7551; GFX942-NEXT:    ; def v[2:3]7552; GFX942-NEXT:    ;;#ASMEND7553; GFX942-NEXT:    s_nop 07554; GFX942-NEXT:    v_alignbit_b32 v0, v0, v3, 167555; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v37556; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]7557; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:47558; GFX942-NEXT:    s_waitcnt vmcnt(0)7559; GFX942-NEXT:    s_setpc_b64 s[30:31]7560  %vec0 = call <4 x half> asm "; def $0", "=v"()7561  %vec1 = call <4 x half> asm "; def $0", "=v"()7562  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 0, i32 7>7563  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 87564  ret void7565}7566 7567define void @v_shuffle_v3f16_v4f16__7_1_7(ptr addrspace(1) inreg %ptr) {7568; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_1_7:7569; GFX900:       ; %bb.0:7570; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7571; GFX900-NEXT:    ;;#ASMSTART7572; GFX900-NEXT:    ; def v[0:1]7573; GFX900-NEXT:    ;;#ASMEND7574; GFX900-NEXT:    s_mov_b32 s4, 0x70603027575; GFX900-NEXT:    v_mov_b32_e32 v3, 07576; GFX900-NEXT:    ;;#ASMSTART7577; GFX900-NEXT:    ; def v[1:2]7578; GFX900-NEXT:    ;;#ASMEND7579; GFX900-NEXT:    v_perm_b32 v0, v0, v2, s47580; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v27581; GFX900-NEXT:    global_store_dword v3, v0, s[16:17]7582; GFX900-NEXT:    global_store_short v3, v1, s[16:17] offset:47583; GFX900-NEXT:    s_waitcnt vmcnt(0)7584; GFX900-NEXT:    s_setpc_b64 s[30:31]7585;7586; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_1_7:7587; GFX90A:       ; %bb.0:7588; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7589; GFX90A-NEXT:    ;;#ASMSTART7590; GFX90A-NEXT:    ; def v[0:1]7591; GFX90A-NEXT:    ;;#ASMEND7592; GFX90A-NEXT:    s_mov_b32 s4, 0x70603027593; GFX90A-NEXT:    v_mov_b32_e32 v4, 07594; GFX90A-NEXT:    ;;#ASMSTART7595; GFX90A-NEXT:    ; def v[2:3]7596; GFX90A-NEXT:    ;;#ASMEND7597; GFX90A-NEXT:    v_perm_b32 v0, v0, v3, s47598; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v37599; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]7600; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:47601; GFX90A-NEXT:    s_waitcnt vmcnt(0)7602; GFX90A-NEXT:    s_setpc_b64 s[30:31]7603;7604; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_1_7:7605; GFX942:       ; %bb.0:7606; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7607; GFX942-NEXT:    ;;#ASMSTART7608; GFX942-NEXT:    ; def v[0:1]7609; GFX942-NEXT:    ;;#ASMEND7610; GFX942-NEXT:    s_mov_b32 s2, 0x70603027611; GFX942-NEXT:    v_mov_b32_e32 v4, 07612; GFX942-NEXT:    ;;#ASMSTART7613; GFX942-NEXT:    ; def v[2:3]7614; GFX942-NEXT:    ;;#ASMEND7615; GFX942-NEXT:    s_nop 07616; GFX942-NEXT:    v_perm_b32 v0, v0, v3, s27617; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v37618; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]7619; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:47620; GFX942-NEXT:    s_waitcnt vmcnt(0)7621; GFX942-NEXT:    s_setpc_b64 s[30:31]7622  %vec0 = call <4 x half> asm "; def $0", "=v"()7623  %vec1 = call <4 x half> asm "; def $0", "=v"()7624  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 1, i32 7>7625  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 87626  ret void7627}7628 7629define void @v_shuffle_v3f16_v4f16__7_2_7(ptr addrspace(1) inreg %ptr) {7630; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_2_7:7631; GFX900:       ; %bb.0:7632; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7633; GFX900-NEXT:    ;;#ASMSTART7634; GFX900-NEXT:    ; def v[0:1]7635; GFX900-NEXT:    ;;#ASMEND7636; GFX900-NEXT:    v_mov_b32_e32 v4, 07637; GFX900-NEXT:    ;;#ASMSTART7638; GFX900-NEXT:    ; def v[2:3]7639; GFX900-NEXT:    ;;#ASMEND7640; GFX900-NEXT:    v_alignbit_b32 v0, v1, v3, 167641; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v37642; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:47643; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]7644; GFX900-NEXT:    s_waitcnt vmcnt(0)7645; GFX900-NEXT:    s_setpc_b64 s[30:31]7646;7647; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_2_7:7648; GFX90A:       ; %bb.0:7649; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7650; GFX90A-NEXT:    ;;#ASMSTART7651; GFX90A-NEXT:    ; def v[0:1]7652; GFX90A-NEXT:    ;;#ASMEND7653; GFX90A-NEXT:    v_mov_b32_e32 v4, 07654; GFX90A-NEXT:    ;;#ASMSTART7655; GFX90A-NEXT:    ; def v[2:3]7656; GFX90A-NEXT:    ;;#ASMEND7657; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v3, 167658; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v37659; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:47660; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]7661; GFX90A-NEXT:    s_waitcnt vmcnt(0)7662; GFX90A-NEXT:    s_setpc_b64 s[30:31]7663;7664; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_2_7:7665; GFX942:       ; %bb.0:7666; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7667; GFX942-NEXT:    ;;#ASMSTART7668; GFX942-NEXT:    ; def v[0:1]7669; GFX942-NEXT:    ;;#ASMEND7670; GFX942-NEXT:    v_mov_b32_e32 v4, 07671; GFX942-NEXT:    ;;#ASMSTART7672; GFX942-NEXT:    ; def v[2:3]7673; GFX942-NEXT:    ;;#ASMEND7674; GFX942-NEXT:    s_nop 07675; GFX942-NEXT:    v_alignbit_b32 v0, v1, v3, 167676; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v37677; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:47678; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]7679; GFX942-NEXT:    s_waitcnt vmcnt(0)7680; GFX942-NEXT:    s_setpc_b64 s[30:31]7681  %vec0 = call <4 x half> asm "; def $0", "=v"()7682  %vec1 = call <4 x half> asm "; def $0", "=v"()7683  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 2, i32 7>7684  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 87685  ret void7686}7687 7688define void @v_shuffle_v3f16_v4f16__7_3_7(ptr addrspace(1) inreg %ptr) {7689; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_3_7:7690; GFX900:       ; %bb.0:7691; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7692; GFX900-NEXT:    ;;#ASMSTART7693; GFX900-NEXT:    ; def v[0:1]7694; GFX900-NEXT:    ;;#ASMEND7695; GFX900-NEXT:    s_mov_b32 s4, 0x70603027696; GFX900-NEXT:    v_mov_b32_e32 v4, 07697; GFX900-NEXT:    ;;#ASMSTART7698; GFX900-NEXT:    ; def v[2:3]7699; GFX900-NEXT:    ;;#ASMEND7700; GFX900-NEXT:    v_perm_b32 v0, v1, v3, s47701; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v37702; GFX900-NEXT:    global_store_dword v4, v0, s[16:17]7703; GFX900-NEXT:    global_store_short v4, v1, s[16:17] offset:47704; GFX900-NEXT:    s_waitcnt vmcnt(0)7705; GFX900-NEXT:    s_setpc_b64 s[30:31]7706;7707; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_3_7:7708; GFX90A:       ; %bb.0:7709; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7710; GFX90A-NEXT:    ;;#ASMSTART7711; GFX90A-NEXT:    ; def v[0:1]7712; GFX90A-NEXT:    ;;#ASMEND7713; GFX90A-NEXT:    s_mov_b32 s4, 0x70603027714; GFX90A-NEXT:    v_mov_b32_e32 v4, 07715; GFX90A-NEXT:    ;;#ASMSTART7716; GFX90A-NEXT:    ; def v[2:3]7717; GFX90A-NEXT:    ;;#ASMEND7718; GFX90A-NEXT:    v_perm_b32 v0, v1, v3, s47719; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v37720; GFX90A-NEXT:    global_store_dword v4, v0, s[16:17]7721; GFX90A-NEXT:    global_store_short v4, v1, s[16:17] offset:47722; GFX90A-NEXT:    s_waitcnt vmcnt(0)7723; GFX90A-NEXT:    s_setpc_b64 s[30:31]7724;7725; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_3_7:7726; GFX942:       ; %bb.0:7727; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7728; GFX942-NEXT:    ;;#ASMSTART7729; GFX942-NEXT:    ; def v[0:1]7730; GFX942-NEXT:    ;;#ASMEND7731; GFX942-NEXT:    s_mov_b32 s2, 0x70603027732; GFX942-NEXT:    v_mov_b32_e32 v4, 07733; GFX942-NEXT:    ;;#ASMSTART7734; GFX942-NEXT:    ; def v[2:3]7735; GFX942-NEXT:    ;;#ASMEND7736; GFX942-NEXT:    s_nop 07737; GFX942-NEXT:    v_perm_b32 v0, v1, v3, s27738; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v37739; GFX942-NEXT:    global_store_dword v4, v0, s[0:1]7740; GFX942-NEXT:    global_store_short v4, v1, s[0:1] offset:47741; GFX942-NEXT:    s_waitcnt vmcnt(0)7742; GFX942-NEXT:    s_setpc_b64 s[30:31]7743  %vec0 = call <4 x half> asm "; def $0", "=v"()7744  %vec1 = call <4 x half> asm "; def $0", "=v"()7745  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 3, i32 7>7746  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 87747  ret void7748}7749 7750define void @v_shuffle_v3f16_v4f16__7_4_7(ptr addrspace(1) inreg %ptr) {7751; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_4_7:7752; GFX900:       ; %bb.0:7753; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7754; GFX900-NEXT:    ;;#ASMSTART7755; GFX900-NEXT:    ; def v[0:1]7756; GFX900-NEXT:    ;;#ASMEND7757; GFX900-NEXT:    v_mov_b32_e32 v2, 07758; GFX900-NEXT:    v_alignbit_b32 v0, v0, v1, 167759; GFX900-NEXT:    v_lshrrev_b32_e32 v3, 16, v17760; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]7761; GFX900-NEXT:    global_store_short v2, v3, s[16:17] offset:47762; GFX900-NEXT:    s_waitcnt vmcnt(0)7763; GFX900-NEXT:    s_setpc_b64 s[30:31]7764;7765; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_4_7:7766; GFX90A:       ; %bb.0:7767; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7768; GFX90A-NEXT:    ;;#ASMSTART7769; GFX90A-NEXT:    ; def v[0:1]7770; GFX90A-NEXT:    ;;#ASMEND7771; GFX90A-NEXT:    v_mov_b32_e32 v2, 07772; GFX90A-NEXT:    v_alignbit_b32 v0, v0, v1, 167773; GFX90A-NEXT:    v_lshrrev_b32_e32 v3, 16, v17774; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]7775; GFX90A-NEXT:    global_store_short v2, v3, s[16:17] offset:47776; GFX90A-NEXT:    s_waitcnt vmcnt(0)7777; GFX90A-NEXT:    s_setpc_b64 s[30:31]7778;7779; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_4_7:7780; GFX942:       ; %bb.0:7781; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7782; GFX942-NEXT:    ;;#ASMSTART7783; GFX942-NEXT:    ; def v[0:1]7784; GFX942-NEXT:    ;;#ASMEND7785; GFX942-NEXT:    v_mov_b32_e32 v2, 07786; GFX942-NEXT:    v_alignbit_b32 v0, v0, v1, 167787; GFX942-NEXT:    v_lshrrev_b32_e32 v3, 16, v17788; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]7789; GFX942-NEXT:    global_store_short v2, v3, s[0:1] offset:47790; GFX942-NEXT:    s_waitcnt vmcnt(0)7791; GFX942-NEXT:    s_setpc_b64 s[30:31]7792  %vec0 = call <4 x half> asm "; def $0", "=v"()7793  %vec1 = call <4 x half> asm "; def $0", "=v"()7794  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 4, i32 7>7795  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 87796  ret void7797}7798 7799define void @v_shuffle_v3f16_v4f16__7_5_7(ptr addrspace(1) inreg %ptr) {7800; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_5_7:7801; GFX900:       ; %bb.0:7802; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7803; GFX900-NEXT:    ;;#ASMSTART7804; GFX900-NEXT:    ; def v[0:1]7805; GFX900-NEXT:    ;;#ASMEND7806; GFX900-NEXT:    s_mov_b32 s4, 0x70603027807; GFX900-NEXT:    v_mov_b32_e32 v2, 07808; GFX900-NEXT:    v_perm_b32 v0, v0, v1, s47809; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v17810; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]7811; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:47812; GFX900-NEXT:    s_waitcnt vmcnt(0)7813; GFX900-NEXT:    s_setpc_b64 s[30:31]7814;7815; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_5_7:7816; GFX90A:       ; %bb.0:7817; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7818; GFX90A-NEXT:    ;;#ASMSTART7819; GFX90A-NEXT:    ; def v[0:1]7820; GFX90A-NEXT:    ;;#ASMEND7821; GFX90A-NEXT:    s_mov_b32 s4, 0x70603027822; GFX90A-NEXT:    v_mov_b32_e32 v2, 07823; GFX90A-NEXT:    v_perm_b32 v0, v0, v1, s47824; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v17825; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]7826; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:47827; GFX90A-NEXT:    s_waitcnt vmcnt(0)7828; GFX90A-NEXT:    s_setpc_b64 s[30:31]7829;7830; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_5_7:7831; GFX942:       ; %bb.0:7832; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7833; GFX942-NEXT:    ;;#ASMSTART7834; GFX942-NEXT:    ; def v[0:1]7835; GFX942-NEXT:    ;;#ASMEND7836; GFX942-NEXT:    s_mov_b32 s2, 0x70603027837; GFX942-NEXT:    v_mov_b32_e32 v2, 07838; GFX942-NEXT:    v_perm_b32 v0, v0, v1, s27839; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v17840; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]7841; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:47842; GFX942-NEXT:    s_waitcnt vmcnt(0)7843; GFX942-NEXT:    s_setpc_b64 s[30:31]7844  %vec0 = call <4 x half> asm "; def $0", "=v"()7845  %vec1 = call <4 x half> asm "; def $0", "=v"()7846  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 5, i32 7>7847  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 87848  ret void7849}7850 7851define void @v_shuffle_v3f16_v4f16__7_6_7(ptr addrspace(1) inreg %ptr) {7852; GFX900-LABEL: v_shuffle_v3f16_v4f16__7_6_7:7853; GFX900:       ; %bb.0:7854; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7855; GFX900-NEXT:    ;;#ASMSTART7856; GFX900-NEXT:    ; def v[0:1]7857; GFX900-NEXT:    ;;#ASMEND7858; GFX900-NEXT:    v_mov_b32_e32 v2, 07859; GFX900-NEXT:    v_alignbit_b32 v0, v1, v1, 167860; GFX900-NEXT:    v_lshrrev_b32_e32 v1, 16, v17861; GFX900-NEXT:    global_store_short v2, v1, s[16:17] offset:47862; GFX900-NEXT:    global_store_dword v2, v0, s[16:17]7863; GFX900-NEXT:    s_waitcnt vmcnt(0)7864; GFX900-NEXT:    s_setpc_b64 s[30:31]7865;7866; GFX90A-LABEL: v_shuffle_v3f16_v4f16__7_6_7:7867; GFX90A:       ; %bb.0:7868; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7869; GFX90A-NEXT:    ;;#ASMSTART7870; GFX90A-NEXT:    ; def v[0:1]7871; GFX90A-NEXT:    ;;#ASMEND7872; GFX90A-NEXT:    v_mov_b32_e32 v2, 07873; GFX90A-NEXT:    v_alignbit_b32 v0, v1, v1, 167874; GFX90A-NEXT:    v_lshrrev_b32_e32 v1, 16, v17875; GFX90A-NEXT:    global_store_short v2, v1, s[16:17] offset:47876; GFX90A-NEXT:    global_store_dword v2, v0, s[16:17]7877; GFX90A-NEXT:    s_waitcnt vmcnt(0)7878; GFX90A-NEXT:    s_setpc_b64 s[30:31]7879;7880; GFX942-LABEL: v_shuffle_v3f16_v4f16__7_6_7:7881; GFX942:       ; %bb.0:7882; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7883; GFX942-NEXT:    ;;#ASMSTART7884; GFX942-NEXT:    ; def v[0:1]7885; GFX942-NEXT:    ;;#ASMEND7886; GFX942-NEXT:    v_mov_b32_e32 v2, 07887; GFX942-NEXT:    v_alignbit_b32 v0, v1, v1, 167888; GFX942-NEXT:    v_lshrrev_b32_e32 v1, 16, v17889; GFX942-NEXT:    global_store_short v2, v1, s[0:1] offset:47890; GFX942-NEXT:    global_store_dword v2, v0, s[0:1]7891; GFX942-NEXT:    s_waitcnt vmcnt(0)7892; GFX942-NEXT:    s_setpc_b64 s[30:31]7893  %vec0 = call <4 x half> asm "; def $0", "=v"()7894  %vec1 = call <4 x half> asm "; def $0", "=v"()7895  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 6, i32 7>7896  store <3 x half> %shuf, ptr addrspace(1) %ptr, align 87897  ret void7898}7899 7900define void @s_shuffle_v3f16_v4f16__u_u_u() {7901; GFX9-LABEL: s_shuffle_v3f16_v4f16__u_u_u:7902; GFX9:       ; %bb.0:7903; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7904; GFX9-NEXT:    ;;#ASMSTART7905; GFX9-NEXT:    ; use s[8:9]7906; GFX9-NEXT:    ;;#ASMEND7907; GFX9-NEXT:    s_setpc_b64 s[30:31]7908  %vec0 = call <4 x half> asm "; def $0", "=s"()7909  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> poison7910  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>7911  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)7912  ret void7913}7914 7915define void @s_shuffle_v3f16_v4f16__0_u_u() {7916; GFX900-LABEL: s_shuffle_v3f16_v4f16__0_u_u:7917; GFX900:       ; %bb.0:7918; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7919; GFX900-NEXT:    ;;#ASMSTART7920; GFX900-NEXT:    ; def s[8:9]7921; GFX900-NEXT:    ;;#ASMEND7922; GFX900-NEXT:    ;;#ASMSTART7923; GFX900-NEXT:    ; use s[8:9]7924; GFX900-NEXT:    ;;#ASMEND7925; GFX900-NEXT:    s_setpc_b64 s[30:31]7926;7927; GFX90A-LABEL: s_shuffle_v3f16_v4f16__0_u_u:7928; GFX90A:       ; %bb.0:7929; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7930; GFX90A-NEXT:    ;;#ASMSTART7931; GFX90A-NEXT:    ; def s[8:9]7932; GFX90A-NEXT:    ;;#ASMEND7933; GFX90A-NEXT:    ;;#ASMSTART7934; GFX90A-NEXT:    ; use s[8:9]7935; GFX90A-NEXT:    ;;#ASMEND7936; GFX90A-NEXT:    s_setpc_b64 s[30:31]7937;7938; GFX942-LABEL: s_shuffle_v3f16_v4f16__0_u_u:7939; GFX942:       ; %bb.0:7940; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7941; GFX942-NEXT:    ;;#ASMSTART7942; GFX942-NEXT:    ; def s[8:9]7943; GFX942-NEXT:    ;;#ASMEND7944; GFX942-NEXT:    s_nop 07945; GFX942-NEXT:    ;;#ASMSTART7946; GFX942-NEXT:    ; use s[8:9]7947; GFX942-NEXT:    ;;#ASMEND7948; GFX942-NEXT:    s_setpc_b64 s[30:31]7949  %vec0 = call <4 x half> asm "; def $0", "=s"()7950  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 0, i32 poison, i32 poison>7951  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>7952  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)7953  ret void7954}7955 7956define void @s_shuffle_v3f16_v4f16__1_u_u() {7957; GFX900-LABEL: s_shuffle_v3f16_v4f16__1_u_u:7958; GFX900:       ; %bb.0:7959; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7960; GFX900-NEXT:    ;;#ASMSTART7961; GFX900-NEXT:    ; def s[4:5]7962; GFX900-NEXT:    ;;#ASMEND7963; GFX900-NEXT:    s_lshr_b32 s8, s4, 167964; GFX900-NEXT:    ;;#ASMSTART7965; GFX900-NEXT:    ; use s[8:9]7966; GFX900-NEXT:    ;;#ASMEND7967; GFX900-NEXT:    s_setpc_b64 s[30:31]7968;7969; GFX90A-LABEL: s_shuffle_v3f16_v4f16__1_u_u:7970; GFX90A:       ; %bb.0:7971; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7972; GFX90A-NEXT:    ;;#ASMSTART7973; GFX90A-NEXT:    ; def s[4:5]7974; GFX90A-NEXT:    ;;#ASMEND7975; GFX90A-NEXT:    s_lshr_b32 s8, s4, 167976; GFX90A-NEXT:    ;;#ASMSTART7977; GFX90A-NEXT:    ; use s[8:9]7978; GFX90A-NEXT:    ;;#ASMEND7979; GFX90A-NEXT:    s_setpc_b64 s[30:31]7980;7981; GFX942-LABEL: s_shuffle_v3f16_v4f16__1_u_u:7982; GFX942:       ; %bb.0:7983; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7984; GFX942-NEXT:    ;;#ASMSTART7985; GFX942-NEXT:    ; def s[0:1]7986; GFX942-NEXT:    ;;#ASMEND7987; GFX942-NEXT:    s_lshr_b32 s8, s0, 167988; GFX942-NEXT:    ;;#ASMSTART7989; GFX942-NEXT:    ; use s[8:9]7990; GFX942-NEXT:    ;;#ASMEND7991; GFX942-NEXT:    s_setpc_b64 s[30:31]7992  %vec0 = call <4 x half> asm "; def $0", "=s"()7993  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 1, i32 poison, i32 poison>7994  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>7995  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)7996  ret void7997}7998 7999define void @s_shuffle_v3f16_v4f16__2_u_u() {8000; GFX900-LABEL: s_shuffle_v3f16_v4f16__2_u_u:8001; GFX900:       ; %bb.0:8002; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8003; GFX900-NEXT:    ;;#ASMSTART8004; GFX900-NEXT:    ; def s[4:5]8005; GFX900-NEXT:    ;;#ASMEND8006; GFX900-NEXT:    s_mov_b32 s8, s58007; GFX900-NEXT:    ;;#ASMSTART8008; GFX900-NEXT:    ; use s[8:9]8009; GFX900-NEXT:    ;;#ASMEND8010; GFX900-NEXT:    s_setpc_b64 s[30:31]8011;8012; GFX90A-LABEL: s_shuffle_v3f16_v4f16__2_u_u:8013; GFX90A:       ; %bb.0:8014; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8015; GFX90A-NEXT:    ;;#ASMSTART8016; GFX90A-NEXT:    ; def s[4:5]8017; GFX90A-NEXT:    ;;#ASMEND8018; GFX90A-NEXT:    s_mov_b32 s8, s58019; GFX90A-NEXT:    ;;#ASMSTART8020; GFX90A-NEXT:    ; use s[8:9]8021; GFX90A-NEXT:    ;;#ASMEND8022; GFX90A-NEXT:    s_setpc_b64 s[30:31]8023;8024; GFX942-LABEL: s_shuffle_v3f16_v4f16__2_u_u:8025; GFX942:       ; %bb.0:8026; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8027; GFX942-NEXT:    ;;#ASMSTART8028; GFX942-NEXT:    ; def s[0:1]8029; GFX942-NEXT:    ;;#ASMEND8030; GFX942-NEXT:    s_mov_b32 s8, s18031; GFX942-NEXT:    ;;#ASMSTART8032; GFX942-NEXT:    ; use s[8:9]8033; GFX942-NEXT:    ;;#ASMEND8034; GFX942-NEXT:    s_setpc_b64 s[30:31]8035  %vec0 = call <4 x half> asm "; def $0", "=s"()8036  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 2, i32 poison, i32 poison>8037  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8038  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)8039  ret void8040}8041 8042define void @s_shuffle_v3f16_v4f16__3_u_u() {8043; GFX900-LABEL: s_shuffle_v3f16_v4f16__3_u_u:8044; GFX900:       ; %bb.0:8045; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8046; GFX900-NEXT:    ;;#ASMSTART8047; GFX900-NEXT:    ; def s[4:5]8048; GFX900-NEXT:    ;;#ASMEND8049; GFX900-NEXT:    s_lshr_b32 s8, s5, 168050; GFX900-NEXT:    ;;#ASMSTART8051; GFX900-NEXT:    ; use s[8:9]8052; GFX900-NEXT:    ;;#ASMEND8053; GFX900-NEXT:    s_setpc_b64 s[30:31]8054;8055; GFX90A-LABEL: s_shuffle_v3f16_v4f16__3_u_u:8056; GFX90A:       ; %bb.0:8057; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8058; GFX90A-NEXT:    ;;#ASMSTART8059; GFX90A-NEXT:    ; def s[4:5]8060; GFX90A-NEXT:    ;;#ASMEND8061; GFX90A-NEXT:    s_lshr_b32 s8, s5, 168062; GFX90A-NEXT:    ;;#ASMSTART8063; GFX90A-NEXT:    ; use s[8:9]8064; GFX90A-NEXT:    ;;#ASMEND8065; GFX90A-NEXT:    s_setpc_b64 s[30:31]8066;8067; GFX942-LABEL: s_shuffle_v3f16_v4f16__3_u_u:8068; GFX942:       ; %bb.0:8069; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8070; GFX942-NEXT:    ;;#ASMSTART8071; GFX942-NEXT:    ; def s[0:1]8072; GFX942-NEXT:    ;;#ASMEND8073; GFX942-NEXT:    s_lshr_b32 s8, s1, 168074; GFX942-NEXT:    ;;#ASMSTART8075; GFX942-NEXT:    ; use s[8:9]8076; GFX942-NEXT:    ;;#ASMEND8077; GFX942-NEXT:    s_setpc_b64 s[30:31]8078  %vec0 = call <4 x half> asm "; def $0", "=s"()8079  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 3, i32 poison, i32 poison>8080  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8081  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)8082  ret void8083}8084 8085define void @s_shuffle_v3f16_v4f16__4_u_u() {8086; GFX9-LABEL: s_shuffle_v3f16_v4f16__4_u_u:8087; GFX9:       ; %bb.0:8088; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8089; GFX9-NEXT:    ;;#ASMSTART8090; GFX9-NEXT:    ; use s[8:9]8091; GFX9-NEXT:    ;;#ASMEND8092; GFX9-NEXT:    s_setpc_b64 s[30:31]8093  %vec0 = call <4 x half> asm "; def $0", "=s"()8094  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 4, i32 poison, i32 poison>8095  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8096  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)8097  ret void8098}8099 8100define void @s_shuffle_v3f16_v4f16__5_u_u() {8101; GFX900-LABEL: s_shuffle_v3f16_v4f16__5_u_u:8102; GFX900:       ; %bb.0:8103; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8104; GFX900-NEXT:    ;;#ASMSTART8105; GFX900-NEXT:    ; def s[4:5]8106; GFX900-NEXT:    ;;#ASMEND8107; GFX900-NEXT:    s_lshr_b32 s8, s4, 168108; GFX900-NEXT:    ;;#ASMSTART8109; GFX900-NEXT:    ; use s[8:9]8110; GFX900-NEXT:    ;;#ASMEND8111; GFX900-NEXT:    s_setpc_b64 s[30:31]8112;8113; GFX90A-LABEL: s_shuffle_v3f16_v4f16__5_u_u:8114; GFX90A:       ; %bb.0:8115; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8116; GFX90A-NEXT:    ;;#ASMSTART8117; GFX90A-NEXT:    ; def s[4:5]8118; GFX90A-NEXT:    ;;#ASMEND8119; GFX90A-NEXT:    s_lshr_b32 s8, s4, 168120; GFX90A-NEXT:    ;;#ASMSTART8121; GFX90A-NEXT:    ; use s[8:9]8122; GFX90A-NEXT:    ;;#ASMEND8123; GFX90A-NEXT:    s_setpc_b64 s[30:31]8124;8125; GFX942-LABEL: s_shuffle_v3f16_v4f16__5_u_u:8126; GFX942:       ; %bb.0:8127; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8128; GFX942-NEXT:    ;;#ASMSTART8129; GFX942-NEXT:    ; def s[0:1]8130; GFX942-NEXT:    ;;#ASMEND8131; GFX942-NEXT:    s_lshr_b32 s8, s0, 168132; GFX942-NEXT:    ;;#ASMSTART8133; GFX942-NEXT:    ; use s[8:9]8134; GFX942-NEXT:    ;;#ASMEND8135; GFX942-NEXT:    s_setpc_b64 s[30:31]8136  %vec0 = call <4 x half> asm "; def $0", "=s"()8137  %vec1 = call <4 x half> asm "; def $0", "=s"()8138  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 5, i32 poison, i32 poison>8139  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8140  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)8141  ret void8142}8143 8144define void @s_shuffle_v3f16_v4f16__6_u_u() {8145; GFX900-LABEL: s_shuffle_v3f16_v4f16__6_u_u:8146; GFX900:       ; %bb.0:8147; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8148; GFX900-NEXT:    ;;#ASMSTART8149; GFX900-NEXT:    ; def s[4:5]8150; GFX900-NEXT:    ;;#ASMEND8151; GFX900-NEXT:    s_mov_b32 s8, s58152; GFX900-NEXT:    ;;#ASMSTART8153; GFX900-NEXT:    ; use s[8:9]8154; GFX900-NEXT:    ;;#ASMEND8155; GFX900-NEXT:    s_setpc_b64 s[30:31]8156;8157; GFX90A-LABEL: s_shuffle_v3f16_v4f16__6_u_u:8158; GFX90A:       ; %bb.0:8159; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8160; GFX90A-NEXT:    ;;#ASMSTART8161; GFX90A-NEXT:    ; def s[4:5]8162; GFX90A-NEXT:    ;;#ASMEND8163; GFX90A-NEXT:    s_mov_b32 s8, s58164; GFX90A-NEXT:    ;;#ASMSTART8165; GFX90A-NEXT:    ; use s[8:9]8166; GFX90A-NEXT:    ;;#ASMEND8167; GFX90A-NEXT:    s_setpc_b64 s[30:31]8168;8169; GFX942-LABEL: s_shuffle_v3f16_v4f16__6_u_u:8170; GFX942:       ; %bb.0:8171; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8172; GFX942-NEXT:    ;;#ASMSTART8173; GFX942-NEXT:    ; def s[0:1]8174; GFX942-NEXT:    ;;#ASMEND8175; GFX942-NEXT:    s_mov_b32 s8, s18176; GFX942-NEXT:    ;;#ASMSTART8177; GFX942-NEXT:    ; use s[8:9]8178; GFX942-NEXT:    ;;#ASMEND8179; GFX942-NEXT:    s_setpc_b64 s[30:31]8180  %vec0 = call <4 x half> asm "; def $0", "=s"()8181  %vec1 = call <4 x half> asm "; def $0", "=s"()8182  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 6, i32 poison, i32 poison>8183  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8184  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)8185  ret void8186}8187 8188define void @s_shuffle_v3f16_v4f16__7_u_u() {8189; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_u_u:8190; GFX900:       ; %bb.0:8191; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8192; GFX900-NEXT:    ;;#ASMSTART8193; GFX900-NEXT:    ; def s[4:5]8194; GFX900-NEXT:    ;;#ASMEND8195; GFX900-NEXT:    s_lshr_b32 s8, s5, 168196; GFX900-NEXT:    ;;#ASMSTART8197; GFX900-NEXT:    ; use s[8:9]8198; GFX900-NEXT:    ;;#ASMEND8199; GFX900-NEXT:    s_setpc_b64 s[30:31]8200;8201; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_u_u:8202; GFX90A:       ; %bb.0:8203; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8204; GFX90A-NEXT:    ;;#ASMSTART8205; GFX90A-NEXT:    ; def s[4:5]8206; GFX90A-NEXT:    ;;#ASMEND8207; GFX90A-NEXT:    s_lshr_b32 s8, s5, 168208; GFX90A-NEXT:    ;;#ASMSTART8209; GFX90A-NEXT:    ; use s[8:9]8210; GFX90A-NEXT:    ;;#ASMEND8211; GFX90A-NEXT:    s_setpc_b64 s[30:31]8212;8213; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_u_u:8214; GFX942:       ; %bb.0:8215; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8216; GFX942-NEXT:    ;;#ASMSTART8217; GFX942-NEXT:    ; def s[0:1]8218; GFX942-NEXT:    ;;#ASMEND8219; GFX942-NEXT:    s_lshr_b32 s8, s1, 168220; GFX942-NEXT:    ;;#ASMSTART8221; GFX942-NEXT:    ; use s[8:9]8222; GFX942-NEXT:    ;;#ASMEND8223; GFX942-NEXT:    s_setpc_b64 s[30:31]8224  %vec0 = call <4 x half> asm "; def $0", "=s"()8225  %vec1 = call <4 x half> asm "; def $0", "=s"()8226  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 poison, i32 poison>8227  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8228  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)8229  ret void8230}8231 8232define void @s_shuffle_v3f16_v4f16__7_0_u() {8233; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_0_u:8234; GFX900:       ; %bb.0:8235; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8236; GFX900-NEXT:    ;;#ASMSTART8237; GFX900-NEXT:    ; def s[4:5]8238; GFX900-NEXT:    ;;#ASMEND8239; GFX900-NEXT:    ;;#ASMSTART8240; GFX900-NEXT:    ; def s[6:7]8241; GFX900-NEXT:    ;;#ASMEND8242; GFX900-NEXT:    s_lshr_b32 s5, s7, 168243; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s48244; GFX900-NEXT:    ;;#ASMSTART8245; GFX900-NEXT:    ; use s[8:9]8246; GFX900-NEXT:    ;;#ASMEND8247; GFX900-NEXT:    s_setpc_b64 s[30:31]8248;8249; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_0_u:8250; GFX90A:       ; %bb.0:8251; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8252; GFX90A-NEXT:    ;;#ASMSTART8253; GFX90A-NEXT:    ; def s[4:5]8254; GFX90A-NEXT:    ;;#ASMEND8255; GFX90A-NEXT:    ;;#ASMSTART8256; GFX90A-NEXT:    ; def s[6:7]8257; GFX90A-NEXT:    ;;#ASMEND8258; GFX90A-NEXT:    s_lshr_b32 s5, s7, 168259; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s48260; GFX90A-NEXT:    ;;#ASMSTART8261; GFX90A-NEXT:    ; use s[8:9]8262; GFX90A-NEXT:    ;;#ASMEND8263; GFX90A-NEXT:    s_setpc_b64 s[30:31]8264;8265; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_0_u:8266; GFX942:       ; %bb.0:8267; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8268; GFX942-NEXT:    ;;#ASMSTART8269; GFX942-NEXT:    ; def s[0:1]8270; GFX942-NEXT:    ;;#ASMEND8271; GFX942-NEXT:    ;;#ASMSTART8272; GFX942-NEXT:    ; def s[2:3]8273; GFX942-NEXT:    ;;#ASMEND8274; GFX942-NEXT:    s_lshr_b32 s1, s3, 168275; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s08276; GFX942-NEXT:    ;;#ASMSTART8277; GFX942-NEXT:    ; use s[8:9]8278; GFX942-NEXT:    ;;#ASMEND8279; GFX942-NEXT:    s_setpc_b64 s[30:31]8280  %vec0 = call <4 x half> asm "; def $0", "=s"()8281  %vec1 = call <4 x half> asm "; def $0", "=s"()8282  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 0, i32 poison>8283  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8284  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)8285  ret void8286}8287 8288define void @s_shuffle_v3f16_v4f16__7_1_u() {8289; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_1_u:8290; GFX900:       ; %bb.0:8291; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8292; GFX900-NEXT:    ;;#ASMSTART8293; GFX900-NEXT:    ; def s[4:5]8294; GFX900-NEXT:    ;;#ASMEND8295; GFX900-NEXT:    ;;#ASMSTART8296; GFX900-NEXT:    ; def s[6:7]8297; GFX900-NEXT:    ;;#ASMEND8298; GFX900-NEXT:    s_lshr_b32 s4, s4, 168299; GFX900-NEXT:    s_lshr_b32 s5, s7, 168300; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s48301; GFX900-NEXT:    ;;#ASMSTART8302; GFX900-NEXT:    ; use s[8:9]8303; GFX900-NEXT:    ;;#ASMEND8304; GFX900-NEXT:    s_setpc_b64 s[30:31]8305;8306; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_1_u:8307; GFX90A:       ; %bb.0:8308; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8309; GFX90A-NEXT:    ;;#ASMSTART8310; GFX90A-NEXT:    ; def s[4:5]8311; GFX90A-NEXT:    ;;#ASMEND8312; GFX90A-NEXT:    ;;#ASMSTART8313; GFX90A-NEXT:    ; def s[6:7]8314; GFX90A-NEXT:    ;;#ASMEND8315; GFX90A-NEXT:    s_lshr_b32 s4, s4, 168316; GFX90A-NEXT:    s_lshr_b32 s5, s7, 168317; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s48318; GFX90A-NEXT:    ;;#ASMSTART8319; GFX90A-NEXT:    ; use s[8:9]8320; GFX90A-NEXT:    ;;#ASMEND8321; GFX90A-NEXT:    s_setpc_b64 s[30:31]8322;8323; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_1_u:8324; GFX942:       ; %bb.0:8325; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8326; GFX942-NEXT:    ;;#ASMSTART8327; GFX942-NEXT:    ; def s[0:1]8328; GFX942-NEXT:    ;;#ASMEND8329; GFX942-NEXT:    ;;#ASMSTART8330; GFX942-NEXT:    ; def s[2:3]8331; GFX942-NEXT:    ;;#ASMEND8332; GFX942-NEXT:    s_lshr_b32 s0, s0, 168333; GFX942-NEXT:    s_lshr_b32 s1, s3, 168334; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s08335; GFX942-NEXT:    ;;#ASMSTART8336; GFX942-NEXT:    ; use s[8:9]8337; GFX942-NEXT:    ;;#ASMEND8338; GFX942-NEXT:    s_setpc_b64 s[30:31]8339  %vec0 = call <4 x half> asm "; def $0", "=s"()8340  %vec1 = call <4 x half> asm "; def $0", "=s"()8341  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 1, i32 poison>8342  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8343  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)8344  ret void8345}8346 8347define void @s_shuffle_v3f16_v4f16__7_2_u() {8348; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_2_u:8349; GFX900:       ; %bb.0:8350; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8351; GFX900-NEXT:    ;;#ASMSTART8352; GFX900-NEXT:    ; def s[4:5]8353; GFX900-NEXT:    ;;#ASMEND8354; GFX900-NEXT:    ;;#ASMSTART8355; GFX900-NEXT:    ; def s[6:7]8356; GFX900-NEXT:    ;;#ASMEND8357; GFX900-NEXT:    s_lshr_b32 s4, s7, 168358; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s58359; GFX900-NEXT:    ;;#ASMSTART8360; GFX900-NEXT:    ; use s[8:9]8361; GFX900-NEXT:    ;;#ASMEND8362; GFX900-NEXT:    s_setpc_b64 s[30:31]8363;8364; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_2_u:8365; GFX90A:       ; %bb.0:8366; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8367; GFX90A-NEXT:    ;;#ASMSTART8368; GFX90A-NEXT:    ; def s[4:5]8369; GFX90A-NEXT:    ;;#ASMEND8370; GFX90A-NEXT:    ;;#ASMSTART8371; GFX90A-NEXT:    ; def s[6:7]8372; GFX90A-NEXT:    ;;#ASMEND8373; GFX90A-NEXT:    s_lshr_b32 s4, s7, 168374; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s58375; GFX90A-NEXT:    ;;#ASMSTART8376; GFX90A-NEXT:    ; use s[8:9]8377; GFX90A-NEXT:    ;;#ASMEND8378; GFX90A-NEXT:    s_setpc_b64 s[30:31]8379;8380; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_2_u:8381; GFX942:       ; %bb.0:8382; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8383; GFX942-NEXT:    ;;#ASMSTART8384; GFX942-NEXT:    ; def s[0:1]8385; GFX942-NEXT:    ;;#ASMEND8386; GFX942-NEXT:    ;;#ASMSTART8387; GFX942-NEXT:    ; def s[2:3]8388; GFX942-NEXT:    ;;#ASMEND8389; GFX942-NEXT:    s_lshr_b32 s0, s3, 168390; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s18391; GFX942-NEXT:    ;;#ASMSTART8392; GFX942-NEXT:    ; use s[8:9]8393; GFX942-NEXT:    ;;#ASMEND8394; GFX942-NEXT:    s_setpc_b64 s[30:31]8395  %vec0 = call <4 x half> asm "; def $0", "=s"()8396  %vec1 = call <4 x half> asm "; def $0", "=s"()8397  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 2, i32 poison>8398  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8399  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)8400  ret void8401}8402 8403define void @s_shuffle_v3f16_v4f16__7_3_u() {8404; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_3_u:8405; GFX900:       ; %bb.0:8406; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8407; GFX900-NEXT:    ;;#ASMSTART8408; GFX900-NEXT:    ; def s[4:5]8409; GFX900-NEXT:    ;;#ASMEND8410; GFX900-NEXT:    ;;#ASMSTART8411; GFX900-NEXT:    ; def s[6:7]8412; GFX900-NEXT:    ;;#ASMEND8413; GFX900-NEXT:    s_lshr_b32 s4, s5, 168414; GFX900-NEXT:    s_lshr_b32 s5, s7, 168415; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s48416; GFX900-NEXT:    ;;#ASMSTART8417; GFX900-NEXT:    ; use s[8:9]8418; GFX900-NEXT:    ;;#ASMEND8419; GFX900-NEXT:    s_setpc_b64 s[30:31]8420;8421; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_3_u:8422; GFX90A:       ; %bb.0:8423; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8424; GFX90A-NEXT:    ;;#ASMSTART8425; GFX90A-NEXT:    ; def s[4:5]8426; GFX90A-NEXT:    ;;#ASMEND8427; GFX90A-NEXT:    ;;#ASMSTART8428; GFX90A-NEXT:    ; def s[6:7]8429; GFX90A-NEXT:    ;;#ASMEND8430; GFX90A-NEXT:    s_lshr_b32 s4, s5, 168431; GFX90A-NEXT:    s_lshr_b32 s5, s7, 168432; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s48433; GFX90A-NEXT:    ;;#ASMSTART8434; GFX90A-NEXT:    ; use s[8:9]8435; GFX90A-NEXT:    ;;#ASMEND8436; GFX90A-NEXT:    s_setpc_b64 s[30:31]8437;8438; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_3_u:8439; GFX942:       ; %bb.0:8440; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8441; GFX942-NEXT:    ;;#ASMSTART8442; GFX942-NEXT:    ; def s[0:1]8443; GFX942-NEXT:    ;;#ASMEND8444; GFX942-NEXT:    ;;#ASMSTART8445; GFX942-NEXT:    ; def s[2:3]8446; GFX942-NEXT:    ;;#ASMEND8447; GFX942-NEXT:    s_lshr_b32 s0, s1, 168448; GFX942-NEXT:    s_lshr_b32 s1, s3, 168449; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s08450; GFX942-NEXT:    ;;#ASMSTART8451; GFX942-NEXT:    ; use s[8:9]8452; GFX942-NEXT:    ;;#ASMEND8453; GFX942-NEXT:    s_setpc_b64 s[30:31]8454  %vec0 = call <4 x half> asm "; def $0", "=s"()8455  %vec1 = call <4 x half> asm "; def $0", "=s"()8456  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 3, i32 poison>8457  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8458  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)8459  ret void8460}8461 8462define void @s_shuffle_v3f16_v4f16__7_4_u() {8463; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_4_u:8464; GFX900:       ; %bb.0:8465; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8466; GFX900-NEXT:    ;;#ASMSTART8467; GFX900-NEXT:    ; def s[4:5]8468; GFX900-NEXT:    ;;#ASMEND8469; GFX900-NEXT:    s_lshr_b32 s5, s5, 168470; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s48471; GFX900-NEXT:    ;;#ASMSTART8472; GFX900-NEXT:    ; use s[8:9]8473; GFX900-NEXT:    ;;#ASMEND8474; GFX900-NEXT:    s_setpc_b64 s[30:31]8475;8476; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_4_u:8477; GFX90A:       ; %bb.0:8478; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8479; GFX90A-NEXT:    ;;#ASMSTART8480; GFX90A-NEXT:    ; def s[4:5]8481; GFX90A-NEXT:    ;;#ASMEND8482; GFX90A-NEXT:    s_lshr_b32 s5, s5, 168483; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s48484; GFX90A-NEXT:    ;;#ASMSTART8485; GFX90A-NEXT:    ; use s[8:9]8486; GFX90A-NEXT:    ;;#ASMEND8487; GFX90A-NEXT:    s_setpc_b64 s[30:31]8488;8489; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_4_u:8490; GFX942:       ; %bb.0:8491; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8492; GFX942-NEXT:    ;;#ASMSTART8493; GFX942-NEXT:    ; def s[0:1]8494; GFX942-NEXT:    ;;#ASMEND8495; GFX942-NEXT:    s_lshr_b32 s1, s1, 168496; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s08497; GFX942-NEXT:    ;;#ASMSTART8498; GFX942-NEXT:    ; use s[8:9]8499; GFX942-NEXT:    ;;#ASMEND8500; GFX942-NEXT:    s_setpc_b64 s[30:31]8501  %vec0 = call <4 x half> asm "; def $0", "=s"()8502  %vec1 = call <4 x half> asm "; def $0", "=s"()8503  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 4, i32 poison>8504  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8505  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)8506  ret void8507}8508 8509define void @s_shuffle_v3f16_v4f16__7_5_u() {8510; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_5_u:8511; GFX900:       ; %bb.0:8512; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8513; GFX900-NEXT:    ;;#ASMSTART8514; GFX900-NEXT:    ; def s[4:5]8515; GFX900-NEXT:    ;;#ASMEND8516; GFX900-NEXT:    s_lshr_b32 s4, s4, 168517; GFX900-NEXT:    s_lshr_b32 s5, s5, 168518; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s48519; GFX900-NEXT:    ;;#ASMSTART8520; GFX900-NEXT:    ; use s[8:9]8521; GFX900-NEXT:    ;;#ASMEND8522; GFX900-NEXT:    s_setpc_b64 s[30:31]8523;8524; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_5_u:8525; GFX90A:       ; %bb.0:8526; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8527; GFX90A-NEXT:    ;;#ASMSTART8528; GFX90A-NEXT:    ; def s[4:5]8529; GFX90A-NEXT:    ;;#ASMEND8530; GFX90A-NEXT:    s_lshr_b32 s4, s4, 168531; GFX90A-NEXT:    s_lshr_b32 s5, s5, 168532; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s48533; GFX90A-NEXT:    ;;#ASMSTART8534; GFX90A-NEXT:    ; use s[8:9]8535; GFX90A-NEXT:    ;;#ASMEND8536; GFX90A-NEXT:    s_setpc_b64 s[30:31]8537;8538; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_5_u:8539; GFX942:       ; %bb.0:8540; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8541; GFX942-NEXT:    ;;#ASMSTART8542; GFX942-NEXT:    ; def s[0:1]8543; GFX942-NEXT:    ;;#ASMEND8544; GFX942-NEXT:    s_lshr_b32 s0, s0, 168545; GFX942-NEXT:    s_lshr_b32 s1, s1, 168546; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s08547; GFX942-NEXT:    ;;#ASMSTART8548; GFX942-NEXT:    ; use s[8:9]8549; GFX942-NEXT:    ;;#ASMEND8550; GFX942-NEXT:    s_setpc_b64 s[30:31]8551  %vec0 = call <4 x half> asm "; def $0", "=s"()8552  %vec1 = call <4 x half> asm "; def $0", "=s"()8553  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 5, i32 poison>8554  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8555  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)8556  ret void8557}8558 8559define void @s_shuffle_v3f16_v4f16__7_6_u() {8560; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_6_u:8561; GFX900:       ; %bb.0:8562; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8563; GFX900-NEXT:    ;;#ASMSTART8564; GFX900-NEXT:    ; def s[4:5]8565; GFX900-NEXT:    ;;#ASMEND8566; GFX900-NEXT:    s_lshr_b32 s4, s5, 168567; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s58568; GFX900-NEXT:    ;;#ASMSTART8569; GFX900-NEXT:    ; use s[8:9]8570; GFX900-NEXT:    ;;#ASMEND8571; GFX900-NEXT:    s_setpc_b64 s[30:31]8572;8573; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_6_u:8574; GFX90A:       ; %bb.0:8575; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8576; GFX90A-NEXT:    ;;#ASMSTART8577; GFX90A-NEXT:    ; def s[4:5]8578; GFX90A-NEXT:    ;;#ASMEND8579; GFX90A-NEXT:    s_lshr_b32 s4, s5, 168580; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s58581; GFX90A-NEXT:    ;;#ASMSTART8582; GFX90A-NEXT:    ; use s[8:9]8583; GFX90A-NEXT:    ;;#ASMEND8584; GFX90A-NEXT:    s_setpc_b64 s[30:31]8585;8586; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_6_u:8587; GFX942:       ; %bb.0:8588; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8589; GFX942-NEXT:    ;;#ASMSTART8590; GFX942-NEXT:    ; def s[0:1]8591; GFX942-NEXT:    ;;#ASMEND8592; GFX942-NEXT:    s_lshr_b32 s0, s1, 168593; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s18594; GFX942-NEXT:    ;;#ASMSTART8595; GFX942-NEXT:    ; use s[8:9]8596; GFX942-NEXT:    ;;#ASMEND8597; GFX942-NEXT:    s_setpc_b64 s[30:31]8598  %vec0 = call <4 x half> asm "; def $0", "=s"()8599  %vec1 = call <4 x half> asm "; def $0", "=s"()8600  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 6, i32 poison>8601  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8602  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)8603  ret void8604}8605 8606define void @s_shuffle_v3f16_v4f16__7_7_u() {8607; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_7_u:8608; GFX900:       ; %bb.0:8609; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8610; GFX900-NEXT:    ;;#ASMSTART8611; GFX900-NEXT:    ; def s[4:5]8612; GFX900-NEXT:    ;;#ASMEND8613; GFX900-NEXT:    s_lshr_b32 s4, s5, 168614; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s48615; GFX900-NEXT:    ;;#ASMSTART8616; GFX900-NEXT:    ; use s[8:9]8617; GFX900-NEXT:    ;;#ASMEND8618; GFX900-NEXT:    s_setpc_b64 s[30:31]8619;8620; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_7_u:8621; GFX90A:       ; %bb.0:8622; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8623; GFX90A-NEXT:    ;;#ASMSTART8624; GFX90A-NEXT:    ; def s[4:5]8625; GFX90A-NEXT:    ;;#ASMEND8626; GFX90A-NEXT:    s_lshr_b32 s4, s5, 168627; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s48628; GFX90A-NEXT:    ;;#ASMSTART8629; GFX90A-NEXT:    ; use s[8:9]8630; GFX90A-NEXT:    ;;#ASMEND8631; GFX90A-NEXT:    s_setpc_b64 s[30:31]8632;8633; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_7_u:8634; GFX942:       ; %bb.0:8635; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8636; GFX942-NEXT:    ;;#ASMSTART8637; GFX942-NEXT:    ; def s[0:1]8638; GFX942-NEXT:    ;;#ASMEND8639; GFX942-NEXT:    s_lshr_b32 s0, s1, 168640; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s08641; GFX942-NEXT:    ;;#ASMSTART8642; GFX942-NEXT:    ; use s[8:9]8643; GFX942-NEXT:    ;;#ASMEND8644; GFX942-NEXT:    s_setpc_b64 s[30:31]8645  %vec0 = call <4 x half> asm "; def $0", "=s"()8646  %vec1 = call <4 x half> asm "; def $0", "=s"()8647  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 7, i32 poison>8648  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8649  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)8650  ret void8651}8652 8653define void @s_shuffle_v3f16_v4f16__7_7_0() {8654; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_7_0:8655; GFX900:       ; %bb.0:8656; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8657; GFX900-NEXT:    ;;#ASMSTART8658; GFX900-NEXT:    ; def s[4:5]8659; GFX900-NEXT:    ;;#ASMEND8660; GFX900-NEXT:    ;;#ASMSTART8661; GFX900-NEXT:    ; def s[6:7]8662; GFX900-NEXT:    ;;#ASMEND8663; GFX900-NEXT:    s_lshr_b32 s5, s7, 168664; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s58665; GFX900-NEXT:    s_mov_b32 s9, s48666; GFX900-NEXT:    ;;#ASMSTART8667; GFX900-NEXT:    ; use s[8:9]8668; GFX900-NEXT:    ;;#ASMEND8669; GFX900-NEXT:    s_setpc_b64 s[30:31]8670;8671; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_7_0:8672; GFX90A:       ; %bb.0:8673; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8674; GFX90A-NEXT:    ;;#ASMSTART8675; GFX90A-NEXT:    ; def s[4:5]8676; GFX90A-NEXT:    ;;#ASMEND8677; GFX90A-NEXT:    ;;#ASMSTART8678; GFX90A-NEXT:    ; def s[6:7]8679; GFX90A-NEXT:    ;;#ASMEND8680; GFX90A-NEXT:    s_lshr_b32 s5, s7, 168681; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s58682; GFX90A-NEXT:    s_mov_b32 s9, s48683; GFX90A-NEXT:    ;;#ASMSTART8684; GFX90A-NEXT:    ; use s[8:9]8685; GFX90A-NEXT:    ;;#ASMEND8686; GFX90A-NEXT:    s_setpc_b64 s[30:31]8687;8688; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_7_0:8689; GFX942:       ; %bb.0:8690; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8691; GFX942-NEXT:    ;;#ASMSTART8692; GFX942-NEXT:    ; def s[0:1]8693; GFX942-NEXT:    ;;#ASMEND8694; GFX942-NEXT:    ;;#ASMSTART8695; GFX942-NEXT:    ; def s[2:3]8696; GFX942-NEXT:    ;;#ASMEND8697; GFX942-NEXT:    s_lshr_b32 s1, s3, 168698; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s18699; GFX942-NEXT:    s_mov_b32 s9, s08700; GFX942-NEXT:    ;;#ASMSTART8701; GFX942-NEXT:    ; use s[8:9]8702; GFX942-NEXT:    ;;#ASMEND8703; GFX942-NEXT:    s_setpc_b64 s[30:31]8704  %vec0 = call <4 x half> asm "; def $0", "=s"()8705  %vec1 = call <4 x half> asm "; def $0", "=s"()8706  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 7, i32 0>8707  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8708  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)8709  ret void8710}8711 8712define void @s_shuffle_v3f16_v4f16__7_7_1() {8713; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_7_1:8714; GFX900:       ; %bb.0:8715; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8716; GFX900-NEXT:    ;;#ASMSTART8717; GFX900-NEXT:    ; def s[4:5]8718; GFX900-NEXT:    ;;#ASMEND8719; GFX900-NEXT:    ;;#ASMSTART8720; GFX900-NEXT:    ; def s[6:7]8721; GFX900-NEXT:    ;;#ASMEND8722; GFX900-NEXT:    s_lshr_b32 s9, s4, 168723; GFX900-NEXT:    s_lshr_b32 s4, s7, 168724; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s48725; GFX900-NEXT:    ;;#ASMSTART8726; GFX900-NEXT:    ; use s[8:9]8727; GFX900-NEXT:    ;;#ASMEND8728; GFX900-NEXT:    s_setpc_b64 s[30:31]8729;8730; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_7_1:8731; GFX90A:       ; %bb.0:8732; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8733; GFX90A-NEXT:    ;;#ASMSTART8734; GFX90A-NEXT:    ; def s[4:5]8735; GFX90A-NEXT:    ;;#ASMEND8736; GFX90A-NEXT:    ;;#ASMSTART8737; GFX90A-NEXT:    ; def s[6:7]8738; GFX90A-NEXT:    ;;#ASMEND8739; GFX90A-NEXT:    s_lshr_b32 s9, s4, 168740; GFX90A-NEXT:    s_lshr_b32 s4, s7, 168741; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s48742; GFX90A-NEXT:    ;;#ASMSTART8743; GFX90A-NEXT:    ; use s[8:9]8744; GFX90A-NEXT:    ;;#ASMEND8745; GFX90A-NEXT:    s_setpc_b64 s[30:31]8746;8747; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_7_1:8748; GFX942:       ; %bb.0:8749; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8750; GFX942-NEXT:    ;;#ASMSTART8751; GFX942-NEXT:    ; def s[0:1]8752; GFX942-NEXT:    ;;#ASMEND8753; GFX942-NEXT:    ;;#ASMSTART8754; GFX942-NEXT:    ; def s[2:3]8755; GFX942-NEXT:    ;;#ASMEND8756; GFX942-NEXT:    s_lshr_b32 s9, s0, 168757; GFX942-NEXT:    s_lshr_b32 s0, s3, 168758; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s08759; GFX942-NEXT:    ;;#ASMSTART8760; GFX942-NEXT:    ; use s[8:9]8761; GFX942-NEXT:    ;;#ASMEND8762; GFX942-NEXT:    s_setpc_b64 s[30:31]8763  %vec0 = call <4 x half> asm "; def $0", "=s"()8764  %vec1 = call <4 x half> asm "; def $0", "=s"()8765  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 7, i32 1>8766  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8767  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)8768  ret void8769}8770 8771define void @s_shuffle_v3f16_v4f16__7_7_2() {8772; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_7_2:8773; GFX900:       ; %bb.0:8774; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8775; GFX900-NEXT:    ;;#ASMSTART8776; GFX900-NEXT:    ; def s[4:5]8777; GFX900-NEXT:    ;;#ASMEND8778; GFX900-NEXT:    ;;#ASMSTART8779; GFX900-NEXT:    ; def s[8:9]8780; GFX900-NEXT:    ;;#ASMEND8781; GFX900-NEXT:    s_lshr_b32 s4, s5, 168782; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s48783; GFX900-NEXT:    ;;#ASMSTART8784; GFX900-NEXT:    ; use s[8:9]8785; GFX900-NEXT:    ;;#ASMEND8786; GFX900-NEXT:    s_setpc_b64 s[30:31]8787;8788; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_7_2:8789; GFX90A:       ; %bb.0:8790; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8791; GFX90A-NEXT:    ;;#ASMSTART8792; GFX90A-NEXT:    ; def s[4:5]8793; GFX90A-NEXT:    ;;#ASMEND8794; GFX90A-NEXT:    ;;#ASMSTART8795; GFX90A-NEXT:    ; def s[8:9]8796; GFX90A-NEXT:    ;;#ASMEND8797; GFX90A-NEXT:    s_lshr_b32 s4, s5, 168798; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s48799; GFX90A-NEXT:    ;;#ASMSTART8800; GFX90A-NEXT:    ; use s[8:9]8801; GFX90A-NEXT:    ;;#ASMEND8802; GFX90A-NEXT:    s_setpc_b64 s[30:31]8803;8804; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_7_2:8805; GFX942:       ; %bb.0:8806; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8807; GFX942-NEXT:    ;;#ASMSTART8808; GFX942-NEXT:    ; def s[0:1]8809; GFX942-NEXT:    ;;#ASMEND8810; GFX942-NEXT:    ;;#ASMSTART8811; GFX942-NEXT:    ; def s[8:9]8812; GFX942-NEXT:    ;;#ASMEND8813; GFX942-NEXT:    s_lshr_b32 s0, s1, 168814; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s08815; GFX942-NEXT:    ;;#ASMSTART8816; GFX942-NEXT:    ; use s[8:9]8817; GFX942-NEXT:    ;;#ASMEND8818; GFX942-NEXT:    s_setpc_b64 s[30:31]8819  %vec0 = call <4 x half> asm "; def $0", "=s"()8820  %vec1 = call <4 x half> asm "; def $0", "=s"()8821  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 7, i32 2>8822  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8823  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)8824  ret void8825}8826 8827define void @s_shuffle_v3f16_v4f16__7_7_3() {8828; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_7_3:8829; GFX900:       ; %bb.0:8830; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8831; GFX900-NEXT:    ;;#ASMSTART8832; GFX900-NEXT:    ; def s[4:5]8833; GFX900-NEXT:    ;;#ASMEND8834; GFX900-NEXT:    ;;#ASMSTART8835; GFX900-NEXT:    ; def s[6:7]8836; GFX900-NEXT:    ;;#ASMEND8837; GFX900-NEXT:    s_lshr_b32 s4, s7, 168838; GFX900-NEXT:    s_lshr_b32 s9, s5, 168839; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s48840; GFX900-NEXT:    ;;#ASMSTART8841; GFX900-NEXT:    ; use s[8:9]8842; GFX900-NEXT:    ;;#ASMEND8843; GFX900-NEXT:    s_setpc_b64 s[30:31]8844;8845; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_7_3:8846; GFX90A:       ; %bb.0:8847; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8848; GFX90A-NEXT:    ;;#ASMSTART8849; GFX90A-NEXT:    ; def s[4:5]8850; GFX90A-NEXT:    ;;#ASMEND8851; GFX90A-NEXT:    ;;#ASMSTART8852; GFX90A-NEXT:    ; def s[6:7]8853; GFX90A-NEXT:    ;;#ASMEND8854; GFX90A-NEXT:    s_lshr_b32 s4, s7, 168855; GFX90A-NEXT:    s_lshr_b32 s9, s5, 168856; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s48857; GFX90A-NEXT:    ;;#ASMSTART8858; GFX90A-NEXT:    ; use s[8:9]8859; GFX90A-NEXT:    ;;#ASMEND8860; GFX90A-NEXT:    s_setpc_b64 s[30:31]8861;8862; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_7_3:8863; GFX942:       ; %bb.0:8864; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8865; GFX942-NEXT:    ;;#ASMSTART8866; GFX942-NEXT:    ; def s[0:1]8867; GFX942-NEXT:    ;;#ASMEND8868; GFX942-NEXT:    ;;#ASMSTART8869; GFX942-NEXT:    ; def s[2:3]8870; GFX942-NEXT:    ;;#ASMEND8871; GFX942-NEXT:    s_lshr_b32 s0, s3, 168872; GFX942-NEXT:    s_lshr_b32 s9, s1, 168873; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s08874; GFX942-NEXT:    ;;#ASMSTART8875; GFX942-NEXT:    ; use s[8:9]8876; GFX942-NEXT:    ;;#ASMEND8877; GFX942-NEXT:    s_setpc_b64 s[30:31]8878  %vec0 = call <4 x half> asm "; def $0", "=s"()8879  %vec1 = call <4 x half> asm "; def $0", "=s"()8880  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 7, i32 3>8881  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8882  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)8883  ret void8884}8885 8886define void @s_shuffle_v3f16_v4f16__7_7_4() {8887; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_7_4:8888; GFX900:       ; %bb.0:8889; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8890; GFX900-NEXT:    ;;#ASMSTART8891; GFX900-NEXT:    ; def s[4:5]8892; GFX900-NEXT:    ;;#ASMEND8893; GFX900-NEXT:    s_lshr_b32 s5, s5, 168894; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s58895; GFX900-NEXT:    s_mov_b32 s9, s48896; GFX900-NEXT:    ;;#ASMSTART8897; GFX900-NEXT:    ; use s[8:9]8898; GFX900-NEXT:    ;;#ASMEND8899; GFX900-NEXT:    s_setpc_b64 s[30:31]8900;8901; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_7_4:8902; GFX90A:       ; %bb.0:8903; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8904; GFX90A-NEXT:    ;;#ASMSTART8905; GFX90A-NEXT:    ; def s[4:5]8906; GFX90A-NEXT:    ;;#ASMEND8907; GFX90A-NEXT:    s_lshr_b32 s5, s5, 168908; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s58909; GFX90A-NEXT:    s_mov_b32 s9, s48910; GFX90A-NEXT:    ;;#ASMSTART8911; GFX90A-NEXT:    ; use s[8:9]8912; GFX90A-NEXT:    ;;#ASMEND8913; GFX90A-NEXT:    s_setpc_b64 s[30:31]8914;8915; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_7_4:8916; GFX942:       ; %bb.0:8917; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8918; GFX942-NEXT:    ;;#ASMSTART8919; GFX942-NEXT:    ; def s[0:1]8920; GFX942-NEXT:    ;;#ASMEND8921; GFX942-NEXT:    s_lshr_b32 s1, s1, 168922; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s18923; GFX942-NEXT:    s_mov_b32 s9, s08924; GFX942-NEXT:    ;;#ASMSTART8925; GFX942-NEXT:    ; use s[8:9]8926; GFX942-NEXT:    ;;#ASMEND8927; GFX942-NEXT:    s_setpc_b64 s[30:31]8928  %vec0 = call <4 x half> asm "; def $0", "=s"()8929  %vec1 = call <4 x half> asm "; def $0", "=s"()8930  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 7, i32 4>8931  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8932  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)8933  ret void8934}8935 8936define void @s_shuffle_v3f16_v4f16__7_7_5() {8937; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_7_5:8938; GFX900:       ; %bb.0:8939; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8940; GFX900-NEXT:    ;;#ASMSTART8941; GFX900-NEXT:    ; def s[4:5]8942; GFX900-NEXT:    ;;#ASMEND8943; GFX900-NEXT:    s_lshr_b32 s9, s4, 168944; GFX900-NEXT:    s_lshr_b32 s4, s5, 168945; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s48946; GFX900-NEXT:    ;;#ASMSTART8947; GFX900-NEXT:    ; use s[8:9]8948; GFX900-NEXT:    ;;#ASMEND8949; GFX900-NEXT:    s_setpc_b64 s[30:31]8950;8951; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_7_5:8952; GFX90A:       ; %bb.0:8953; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8954; GFX90A-NEXT:    ;;#ASMSTART8955; GFX90A-NEXT:    ; def s[4:5]8956; GFX90A-NEXT:    ;;#ASMEND8957; GFX90A-NEXT:    s_lshr_b32 s9, s4, 168958; GFX90A-NEXT:    s_lshr_b32 s4, s5, 168959; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s48960; GFX90A-NEXT:    ;;#ASMSTART8961; GFX90A-NEXT:    ; use s[8:9]8962; GFX90A-NEXT:    ;;#ASMEND8963; GFX90A-NEXT:    s_setpc_b64 s[30:31]8964;8965; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_7_5:8966; GFX942:       ; %bb.0:8967; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8968; GFX942-NEXT:    ;;#ASMSTART8969; GFX942-NEXT:    ; def s[0:1]8970; GFX942-NEXT:    ;;#ASMEND8971; GFX942-NEXT:    s_lshr_b32 s9, s0, 168972; GFX942-NEXT:    s_lshr_b32 s0, s1, 168973; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s08974; GFX942-NEXT:    ;;#ASMSTART8975; GFX942-NEXT:    ; use s[8:9]8976; GFX942-NEXT:    ;;#ASMEND8977; GFX942-NEXT:    s_setpc_b64 s[30:31]8978  %vec0 = call <4 x half> asm "; def $0", "=s"()8979  %vec1 = call <4 x half> asm "; def $0", "=s"()8980  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 7, i32 5>8981  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>8982  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)8983  ret void8984}8985 8986define void @s_shuffle_v3f16_v4f16__7_7_6() {8987; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_7_6:8988; GFX900:       ; %bb.0:8989; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8990; GFX900-NEXT:    ;;#ASMSTART8991; GFX900-NEXT:    ; def s[8:9]8992; GFX900-NEXT:    ;;#ASMEND8993; GFX900-NEXT:    s_lshr_b32 s4, s9, 168994; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s48995; GFX900-NEXT:    ;;#ASMSTART8996; GFX900-NEXT:    ; use s[8:9]8997; GFX900-NEXT:    ;;#ASMEND8998; GFX900-NEXT:    s_setpc_b64 s[30:31]8999;9000; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_7_6:9001; GFX90A:       ; %bb.0:9002; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9003; GFX90A-NEXT:    ;;#ASMSTART9004; GFX90A-NEXT:    ; def s[8:9]9005; GFX90A-NEXT:    ;;#ASMEND9006; GFX90A-NEXT:    s_lshr_b32 s4, s9, 169007; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s49008; GFX90A-NEXT:    ;;#ASMSTART9009; GFX90A-NEXT:    ; use s[8:9]9010; GFX90A-NEXT:    ;;#ASMEND9011; GFX90A-NEXT:    s_setpc_b64 s[30:31]9012;9013; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_7_6:9014; GFX942:       ; %bb.0:9015; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9016; GFX942-NEXT:    ;;#ASMSTART9017; GFX942-NEXT:    ; def s[8:9]9018; GFX942-NEXT:    ;;#ASMEND9019; GFX942-NEXT:    s_lshr_b32 s0, s9, 169020; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s09021; GFX942-NEXT:    ;;#ASMSTART9022; GFX942-NEXT:    ; use s[8:9]9023; GFX942-NEXT:    ;;#ASMEND9024; GFX942-NEXT:    s_setpc_b64 s[30:31]9025  %vec0 = call <4 x half> asm "; def $0", "=s"()9026  %vec1 = call <4 x half> asm "; def $0", "=s"()9027  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 7, i32 6>9028  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9029  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)9030  ret void9031}9032 9033define void @s_shuffle_v3f16_v4f16__7_7_7() {9034; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_7_7:9035; GFX900:       ; %bb.0:9036; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9037; GFX900-NEXT:    ;;#ASMSTART9038; GFX900-NEXT:    ; def s[4:5]9039; GFX900-NEXT:    ;;#ASMEND9040; GFX900-NEXT:    s_lshr_b32 s9, s5, 169041; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s9, s99042; GFX900-NEXT:    ;;#ASMSTART9043; GFX900-NEXT:    ; use s[8:9]9044; GFX900-NEXT:    ;;#ASMEND9045; GFX900-NEXT:    s_setpc_b64 s[30:31]9046;9047; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_7_7:9048; GFX90A:       ; %bb.0:9049; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9050; GFX90A-NEXT:    ;;#ASMSTART9051; GFX90A-NEXT:    ; def s[4:5]9052; GFX90A-NEXT:    ;;#ASMEND9053; GFX90A-NEXT:    s_lshr_b32 s9, s5, 169054; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s9, s99055; GFX90A-NEXT:    ;;#ASMSTART9056; GFX90A-NEXT:    ; use s[8:9]9057; GFX90A-NEXT:    ;;#ASMEND9058; GFX90A-NEXT:    s_setpc_b64 s[30:31]9059;9060; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_7_7:9061; GFX942:       ; %bb.0:9062; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9063; GFX942-NEXT:    ;;#ASMSTART9064; GFX942-NEXT:    ; def s[0:1]9065; GFX942-NEXT:    ;;#ASMEND9066; GFX942-NEXT:    s_lshr_b32 s9, s1, 169067; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s9, s99068; GFX942-NEXT:    ;;#ASMSTART9069; GFX942-NEXT:    ; use s[8:9]9070; GFX942-NEXT:    ;;#ASMEND9071; GFX942-NEXT:    s_setpc_b64 s[30:31]9072  %vec0 = call <4 x half> asm "; def $0", "=s"()9073  %vec1 = call <4 x half> asm "; def $0", "=s"()9074  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 7, i32 7>9075  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9076  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)9077  ret void9078}9079 9080define void @s_shuffle_v3f16_v4f16__u_0_0() {9081; GFX900-LABEL: s_shuffle_v3f16_v4f16__u_0_0:9082; GFX900:       ; %bb.0:9083; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9084; GFX900-NEXT:    ;;#ASMSTART9085; GFX900-NEXT:    ; def s[4:5]9086; GFX900-NEXT:    ;;#ASMEND9087; GFX900-NEXT:    s_lshl_b32 s8, s4, 169088; GFX900-NEXT:    s_mov_b32 s9, s49089; GFX900-NEXT:    ;;#ASMSTART9090; GFX900-NEXT:    ; use s[8:9]9091; GFX900-NEXT:    ;;#ASMEND9092; GFX900-NEXT:    s_setpc_b64 s[30:31]9093;9094; GFX90A-LABEL: s_shuffle_v3f16_v4f16__u_0_0:9095; GFX90A:       ; %bb.0:9096; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9097; GFX90A-NEXT:    ;;#ASMSTART9098; GFX90A-NEXT:    ; def s[4:5]9099; GFX90A-NEXT:    ;;#ASMEND9100; GFX90A-NEXT:    s_lshl_b32 s8, s4, 169101; GFX90A-NEXT:    s_mov_b32 s9, s49102; GFX90A-NEXT:    ;;#ASMSTART9103; GFX90A-NEXT:    ; use s[8:9]9104; GFX90A-NEXT:    ;;#ASMEND9105; GFX90A-NEXT:    s_setpc_b64 s[30:31]9106;9107; GFX942-LABEL: s_shuffle_v3f16_v4f16__u_0_0:9108; GFX942:       ; %bb.0:9109; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9110; GFX942-NEXT:    ;;#ASMSTART9111; GFX942-NEXT:    ; def s[0:1]9112; GFX942-NEXT:    ;;#ASMEND9113; GFX942-NEXT:    s_lshl_b32 s8, s0, 169114; GFX942-NEXT:    s_mov_b32 s9, s09115; GFX942-NEXT:    ;;#ASMSTART9116; GFX942-NEXT:    ; use s[8:9]9117; GFX942-NEXT:    ;;#ASMEND9118; GFX942-NEXT:    s_setpc_b64 s[30:31]9119  %vec0 = call <4 x half> asm "; def $0", "=s"()9120  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 poison, i32 0, i32 0>9121  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9122  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)9123  ret void9124}9125 9126define void @s_shuffle_v3f16_v4f16__0_0_0() {9127; GFX900-LABEL: s_shuffle_v3f16_v4f16__0_0_0:9128; GFX900:       ; %bb.0:9129; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9130; GFX900-NEXT:    ;;#ASMSTART9131; GFX900-NEXT:    ; def s[4:5]9132; GFX900-NEXT:    ;;#ASMEND9133; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s49134; GFX900-NEXT:    s_mov_b32 s9, s49135; GFX900-NEXT:    ;;#ASMSTART9136; GFX900-NEXT:    ; use s[8:9]9137; GFX900-NEXT:    ;;#ASMEND9138; GFX900-NEXT:    s_setpc_b64 s[30:31]9139;9140; GFX90A-LABEL: s_shuffle_v3f16_v4f16__0_0_0:9141; GFX90A:       ; %bb.0:9142; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9143; GFX90A-NEXT:    ;;#ASMSTART9144; GFX90A-NEXT:    ; def s[4:5]9145; GFX90A-NEXT:    ;;#ASMEND9146; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s49147; GFX90A-NEXT:    s_mov_b32 s9, s49148; GFX90A-NEXT:    ;;#ASMSTART9149; GFX90A-NEXT:    ; use s[8:9]9150; GFX90A-NEXT:    ;;#ASMEND9151; GFX90A-NEXT:    s_setpc_b64 s[30:31]9152;9153; GFX942-LABEL: s_shuffle_v3f16_v4f16__0_0_0:9154; GFX942:       ; %bb.0:9155; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9156; GFX942-NEXT:    ;;#ASMSTART9157; GFX942-NEXT:    ; def s[0:1]9158; GFX942-NEXT:    ;;#ASMEND9159; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s09160; GFX942-NEXT:    s_mov_b32 s9, s09161; GFX942-NEXT:    ;;#ASMSTART9162; GFX942-NEXT:    ; use s[8:9]9163; GFX942-NEXT:    ;;#ASMEND9164; GFX942-NEXT:    s_setpc_b64 s[30:31]9165  %vec0 = call <4 x half> asm "; def $0", "=s"()9166  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> zeroinitializer9167  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9168  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)9169  ret void9170}9171 9172define void @s_shuffle_v3f16_v4f16__1_0_0() {9173; GFX900-LABEL: s_shuffle_v3f16_v4f16__1_0_0:9174; GFX900:       ; %bb.0:9175; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9176; GFX900-NEXT:    ;;#ASMSTART9177; GFX900-NEXT:    ; def s[4:5]9178; GFX900-NEXT:    ;;#ASMEND9179; GFX900-NEXT:    s_lshr_b32 s5, s4, 169180; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s49181; GFX900-NEXT:    s_mov_b32 s9, s49182; GFX900-NEXT:    ;;#ASMSTART9183; GFX900-NEXT:    ; use s[8:9]9184; GFX900-NEXT:    ;;#ASMEND9185; GFX900-NEXT:    s_setpc_b64 s[30:31]9186;9187; GFX90A-LABEL: s_shuffle_v3f16_v4f16__1_0_0:9188; GFX90A:       ; %bb.0:9189; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9190; GFX90A-NEXT:    ;;#ASMSTART9191; GFX90A-NEXT:    ; def s[4:5]9192; GFX90A-NEXT:    ;;#ASMEND9193; GFX90A-NEXT:    s_lshr_b32 s5, s4, 169194; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s49195; GFX90A-NEXT:    s_mov_b32 s9, s49196; GFX90A-NEXT:    ;;#ASMSTART9197; GFX90A-NEXT:    ; use s[8:9]9198; GFX90A-NEXT:    ;;#ASMEND9199; GFX90A-NEXT:    s_setpc_b64 s[30:31]9200;9201; GFX942-LABEL: s_shuffle_v3f16_v4f16__1_0_0:9202; GFX942:       ; %bb.0:9203; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9204; GFX942-NEXT:    ;;#ASMSTART9205; GFX942-NEXT:    ; def s[0:1]9206; GFX942-NEXT:    ;;#ASMEND9207; GFX942-NEXT:    s_lshr_b32 s1, s0, 169208; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s09209; GFX942-NEXT:    s_mov_b32 s9, s09210; GFX942-NEXT:    ;;#ASMSTART9211; GFX942-NEXT:    ; use s[8:9]9212; GFX942-NEXT:    ;;#ASMEND9213; GFX942-NEXT:    s_setpc_b64 s[30:31]9214  %vec0 = call <4 x half> asm "; def $0", "=s"()9215  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 1, i32 0, i32 0>9216  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9217  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)9218  ret void9219}9220 9221define void @s_shuffle_v3f16_v4f16__2_0_0() {9222; GFX900-LABEL: s_shuffle_v3f16_v4f16__2_0_0:9223; GFX900:       ; %bb.0:9224; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9225; GFX900-NEXT:    ;;#ASMSTART9226; GFX900-NEXT:    ; def s[4:5]9227; GFX900-NEXT:    ;;#ASMEND9228; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s49229; GFX900-NEXT:    s_mov_b32 s9, s49230; GFX900-NEXT:    ;;#ASMSTART9231; GFX900-NEXT:    ; use s[8:9]9232; GFX900-NEXT:    ;;#ASMEND9233; GFX900-NEXT:    s_setpc_b64 s[30:31]9234;9235; GFX90A-LABEL: s_shuffle_v3f16_v4f16__2_0_0:9236; GFX90A:       ; %bb.0:9237; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9238; GFX90A-NEXT:    ;;#ASMSTART9239; GFX90A-NEXT:    ; def s[4:5]9240; GFX90A-NEXT:    ;;#ASMEND9241; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s49242; GFX90A-NEXT:    s_mov_b32 s9, s49243; GFX90A-NEXT:    ;;#ASMSTART9244; GFX90A-NEXT:    ; use s[8:9]9245; GFX90A-NEXT:    ;;#ASMEND9246; GFX90A-NEXT:    s_setpc_b64 s[30:31]9247;9248; GFX942-LABEL: s_shuffle_v3f16_v4f16__2_0_0:9249; GFX942:       ; %bb.0:9250; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9251; GFX942-NEXT:    ;;#ASMSTART9252; GFX942-NEXT:    ; def s[0:1]9253; GFX942-NEXT:    ;;#ASMEND9254; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s09255; GFX942-NEXT:    s_mov_b32 s9, s09256; GFX942-NEXT:    ;;#ASMSTART9257; GFX942-NEXT:    ; use s[8:9]9258; GFX942-NEXT:    ;;#ASMEND9259; GFX942-NEXT:    s_setpc_b64 s[30:31]9260  %vec0 = call <4 x half> asm "; def $0", "=s"()9261  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 2, i32 0, i32 0>9262  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9263  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)9264  ret void9265}9266 9267define void @s_shuffle_v3f16_v4f16__3_0_0() {9268; GFX900-LABEL: s_shuffle_v3f16_v4f16__3_0_0:9269; GFX900:       ; %bb.0:9270; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9271; GFX900-NEXT:    ;;#ASMSTART9272; GFX900-NEXT:    ; def s[4:5]9273; GFX900-NEXT:    ;;#ASMEND9274; GFX900-NEXT:    s_lshr_b32 s5, s5, 169275; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s49276; GFX900-NEXT:    s_mov_b32 s9, s49277; GFX900-NEXT:    ;;#ASMSTART9278; GFX900-NEXT:    ; use s[8:9]9279; GFX900-NEXT:    ;;#ASMEND9280; GFX900-NEXT:    s_setpc_b64 s[30:31]9281;9282; GFX90A-LABEL: s_shuffle_v3f16_v4f16__3_0_0:9283; GFX90A:       ; %bb.0:9284; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9285; GFX90A-NEXT:    ;;#ASMSTART9286; GFX90A-NEXT:    ; def s[4:5]9287; GFX90A-NEXT:    ;;#ASMEND9288; GFX90A-NEXT:    s_lshr_b32 s5, s5, 169289; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s49290; GFX90A-NEXT:    s_mov_b32 s9, s49291; GFX90A-NEXT:    ;;#ASMSTART9292; GFX90A-NEXT:    ; use s[8:9]9293; GFX90A-NEXT:    ;;#ASMEND9294; GFX90A-NEXT:    s_setpc_b64 s[30:31]9295;9296; GFX942-LABEL: s_shuffle_v3f16_v4f16__3_0_0:9297; GFX942:       ; %bb.0:9298; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9299; GFX942-NEXT:    ;;#ASMSTART9300; GFX942-NEXT:    ; def s[0:1]9301; GFX942-NEXT:    ;;#ASMEND9302; GFX942-NEXT:    s_lshr_b32 s1, s1, 169303; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s09304; GFX942-NEXT:    s_mov_b32 s9, s09305; GFX942-NEXT:    ;;#ASMSTART9306; GFX942-NEXT:    ; use s[8:9]9307; GFX942-NEXT:    ;;#ASMEND9308; GFX942-NEXT:    s_setpc_b64 s[30:31]9309  %vec0 = call <4 x half> asm "; def $0", "=s"()9310  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 3, i32 0, i32 0>9311  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9312  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)9313  ret void9314}9315 9316define void @s_shuffle_v3f16_v4f16__4_0_0() {9317; GFX900-LABEL: s_shuffle_v3f16_v4f16__4_0_0:9318; GFX900:       ; %bb.0:9319; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9320; GFX900-NEXT:    ;;#ASMSTART9321; GFX900-NEXT:    ; def s[4:5]9322; GFX900-NEXT:    ;;#ASMEND9323; GFX900-NEXT:    s_lshl_b32 s8, s4, 169324; GFX900-NEXT:    s_mov_b32 s9, s49325; GFX900-NEXT:    ;;#ASMSTART9326; GFX900-NEXT:    ; use s[8:9]9327; GFX900-NEXT:    ;;#ASMEND9328; GFX900-NEXT:    s_setpc_b64 s[30:31]9329;9330; GFX90A-LABEL: s_shuffle_v3f16_v4f16__4_0_0:9331; GFX90A:       ; %bb.0:9332; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9333; GFX90A-NEXT:    ;;#ASMSTART9334; GFX90A-NEXT:    ; def s[4:5]9335; GFX90A-NEXT:    ;;#ASMEND9336; GFX90A-NEXT:    s_lshl_b32 s8, s4, 169337; GFX90A-NEXT:    s_mov_b32 s9, s49338; GFX90A-NEXT:    ;;#ASMSTART9339; GFX90A-NEXT:    ; use s[8:9]9340; GFX90A-NEXT:    ;;#ASMEND9341; GFX90A-NEXT:    s_setpc_b64 s[30:31]9342;9343; GFX942-LABEL: s_shuffle_v3f16_v4f16__4_0_0:9344; GFX942:       ; %bb.0:9345; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9346; GFX942-NEXT:    ;;#ASMSTART9347; GFX942-NEXT:    ; def s[0:1]9348; GFX942-NEXT:    ;;#ASMEND9349; GFX942-NEXT:    s_lshl_b32 s8, s0, 169350; GFX942-NEXT:    s_mov_b32 s9, s09351; GFX942-NEXT:    ;;#ASMSTART9352; GFX942-NEXT:    ; use s[8:9]9353; GFX942-NEXT:    ;;#ASMEND9354; GFX942-NEXT:    s_setpc_b64 s[30:31]9355  %vec0 = call <4 x half> asm "; def $0", "=s"()9356  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 4, i32 0, i32 0>9357  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9358  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)9359  ret void9360}9361 9362define void @s_shuffle_v3f16_v4f16__5_0_0() {9363; GFX900-LABEL: s_shuffle_v3f16_v4f16__5_0_0:9364; GFX900:       ; %bb.0:9365; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9366; GFX900-NEXT:    ;;#ASMSTART9367; GFX900-NEXT:    ; def s[4:5]9368; GFX900-NEXT:    ;;#ASMEND9369; GFX900-NEXT:    ;;#ASMSTART9370; GFX900-NEXT:    ; def s[6:7]9371; GFX900-NEXT:    ;;#ASMEND9372; GFX900-NEXT:    s_lshr_b32 s5, s6, 169373; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s49374; GFX900-NEXT:    s_mov_b32 s9, s49375; GFX900-NEXT:    ;;#ASMSTART9376; GFX900-NEXT:    ; use s[8:9]9377; GFX900-NEXT:    ;;#ASMEND9378; GFX900-NEXT:    s_setpc_b64 s[30:31]9379;9380; GFX90A-LABEL: s_shuffle_v3f16_v4f16__5_0_0:9381; GFX90A:       ; %bb.0:9382; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9383; GFX90A-NEXT:    ;;#ASMSTART9384; GFX90A-NEXT:    ; def s[4:5]9385; GFX90A-NEXT:    ;;#ASMEND9386; GFX90A-NEXT:    ;;#ASMSTART9387; GFX90A-NEXT:    ; def s[6:7]9388; GFX90A-NEXT:    ;;#ASMEND9389; GFX90A-NEXT:    s_lshr_b32 s5, s6, 169390; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s49391; GFX90A-NEXT:    s_mov_b32 s9, s49392; GFX90A-NEXT:    ;;#ASMSTART9393; GFX90A-NEXT:    ; use s[8:9]9394; GFX90A-NEXT:    ;;#ASMEND9395; GFX90A-NEXT:    s_setpc_b64 s[30:31]9396;9397; GFX942-LABEL: s_shuffle_v3f16_v4f16__5_0_0:9398; GFX942:       ; %bb.0:9399; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9400; GFX942-NEXT:    ;;#ASMSTART9401; GFX942-NEXT:    ; def s[0:1]9402; GFX942-NEXT:    ;;#ASMEND9403; GFX942-NEXT:    ;;#ASMSTART9404; GFX942-NEXT:    ; def s[2:3]9405; GFX942-NEXT:    ;;#ASMEND9406; GFX942-NEXT:    s_lshr_b32 s1, s2, 169407; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s09408; GFX942-NEXT:    s_mov_b32 s9, s09409; GFX942-NEXT:    ;;#ASMSTART9410; GFX942-NEXT:    ; use s[8:9]9411; GFX942-NEXT:    ;;#ASMEND9412; GFX942-NEXT:    s_setpc_b64 s[30:31]9413  %vec0 = call <4 x half> asm "; def $0", "=s"()9414  %vec1 = call <4 x half> asm "; def $0", "=s"()9415  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 5, i32 0, i32 0>9416  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9417  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)9418  ret void9419}9420 9421define void @s_shuffle_v3f16_v4f16__6_0_0() {9422; GFX900-LABEL: s_shuffle_v3f16_v4f16__6_0_0:9423; GFX900:       ; %bb.0:9424; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9425; GFX900-NEXT:    ;;#ASMSTART9426; GFX900-NEXT:    ; def s[4:5]9427; GFX900-NEXT:    ;;#ASMEND9428; GFX900-NEXT:    ;;#ASMSTART9429; GFX900-NEXT:    ; def s[6:7]9430; GFX900-NEXT:    ;;#ASMEND9431; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s49432; GFX900-NEXT:    s_mov_b32 s9, s49433; GFX900-NEXT:    ;;#ASMSTART9434; GFX900-NEXT:    ; use s[8:9]9435; GFX900-NEXT:    ;;#ASMEND9436; GFX900-NEXT:    s_setpc_b64 s[30:31]9437;9438; GFX90A-LABEL: s_shuffle_v3f16_v4f16__6_0_0:9439; GFX90A:       ; %bb.0:9440; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9441; GFX90A-NEXT:    ;;#ASMSTART9442; GFX90A-NEXT:    ; def s[4:5]9443; GFX90A-NEXT:    ;;#ASMEND9444; GFX90A-NEXT:    ;;#ASMSTART9445; GFX90A-NEXT:    ; def s[6:7]9446; GFX90A-NEXT:    ;;#ASMEND9447; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s49448; GFX90A-NEXT:    s_mov_b32 s9, s49449; GFX90A-NEXT:    ;;#ASMSTART9450; GFX90A-NEXT:    ; use s[8:9]9451; GFX90A-NEXT:    ;;#ASMEND9452; GFX90A-NEXT:    s_setpc_b64 s[30:31]9453;9454; GFX942-LABEL: s_shuffle_v3f16_v4f16__6_0_0:9455; GFX942:       ; %bb.0:9456; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9457; GFX942-NEXT:    ;;#ASMSTART9458; GFX942-NEXT:    ; def s[0:1]9459; GFX942-NEXT:    ;;#ASMEND9460; GFX942-NEXT:    ;;#ASMSTART9461; GFX942-NEXT:    ; def s[2:3]9462; GFX942-NEXT:    ;;#ASMEND9463; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s09464; GFX942-NEXT:    s_mov_b32 s9, s09465; GFX942-NEXT:    ;;#ASMSTART9466; GFX942-NEXT:    ; use s[8:9]9467; GFX942-NEXT:    ;;#ASMEND9468; GFX942-NEXT:    s_setpc_b64 s[30:31]9469  %vec0 = call <4 x half> asm "; def $0", "=s"()9470  %vec1 = call <4 x half> asm "; def $0", "=s"()9471  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 6, i32 0, i32 0>9472  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9473  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)9474  ret void9475}9476 9477define void @s_shuffle_v3f16_v4f16__7_0_0() {9478; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_0_0:9479; GFX900:       ; %bb.0:9480; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9481; GFX900-NEXT:    ;;#ASMSTART9482; GFX900-NEXT:    ; def s[4:5]9483; GFX900-NEXT:    ;;#ASMEND9484; GFX900-NEXT:    ;;#ASMSTART9485; GFX900-NEXT:    ; def s[6:7]9486; GFX900-NEXT:    ;;#ASMEND9487; GFX900-NEXT:    s_lshr_b32 s5, s7, 169488; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s49489; GFX900-NEXT:    s_mov_b32 s9, s49490; GFX900-NEXT:    ;;#ASMSTART9491; GFX900-NEXT:    ; use s[8:9]9492; GFX900-NEXT:    ;;#ASMEND9493; GFX900-NEXT:    s_setpc_b64 s[30:31]9494;9495; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_0_0:9496; GFX90A:       ; %bb.0:9497; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9498; GFX90A-NEXT:    ;;#ASMSTART9499; GFX90A-NEXT:    ; def s[4:5]9500; GFX90A-NEXT:    ;;#ASMEND9501; GFX90A-NEXT:    ;;#ASMSTART9502; GFX90A-NEXT:    ; def s[6:7]9503; GFX90A-NEXT:    ;;#ASMEND9504; GFX90A-NEXT:    s_lshr_b32 s5, s7, 169505; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s49506; GFX90A-NEXT:    s_mov_b32 s9, s49507; GFX90A-NEXT:    ;;#ASMSTART9508; GFX90A-NEXT:    ; use s[8:9]9509; GFX90A-NEXT:    ;;#ASMEND9510; GFX90A-NEXT:    s_setpc_b64 s[30:31]9511;9512; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_0_0:9513; GFX942:       ; %bb.0:9514; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9515; GFX942-NEXT:    ;;#ASMSTART9516; GFX942-NEXT:    ; def s[0:1]9517; GFX942-NEXT:    ;;#ASMEND9518; GFX942-NEXT:    ;;#ASMSTART9519; GFX942-NEXT:    ; def s[2:3]9520; GFX942-NEXT:    ;;#ASMEND9521; GFX942-NEXT:    s_lshr_b32 s1, s3, 169522; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s09523; GFX942-NEXT:    s_mov_b32 s9, s09524; GFX942-NEXT:    ;;#ASMSTART9525; GFX942-NEXT:    ; use s[8:9]9526; GFX942-NEXT:    ;;#ASMEND9527; GFX942-NEXT:    s_setpc_b64 s[30:31]9528  %vec0 = call <4 x half> asm "; def $0", "=s"()9529  %vec1 = call <4 x half> asm "; def $0", "=s"()9530  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 0, i32 0>9531  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9532  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)9533  ret void9534}9535 9536define void @s_shuffle_v3f16_v4f16__7_u_0() {9537; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_u_0:9538; GFX900:       ; %bb.0:9539; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9540; GFX900-NEXT:    ;;#ASMSTART9541; GFX900-NEXT:    ; def s[4:5]9542; GFX900-NEXT:    ;;#ASMEND9543; GFX900-NEXT:    ;;#ASMSTART9544; GFX900-NEXT:    ; def s[6:7]9545; GFX900-NEXT:    ;;#ASMEND9546; GFX900-NEXT:    s_lshr_b32 s8, s7, 169547; GFX900-NEXT:    s_mov_b32 s9, s49548; GFX900-NEXT:    ;;#ASMSTART9549; GFX900-NEXT:    ; use s[8:9]9550; GFX900-NEXT:    ;;#ASMEND9551; GFX900-NEXT:    s_setpc_b64 s[30:31]9552;9553; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_u_0:9554; GFX90A:       ; %bb.0:9555; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9556; GFX90A-NEXT:    ;;#ASMSTART9557; GFX90A-NEXT:    ; def s[4:5]9558; GFX90A-NEXT:    ;;#ASMEND9559; GFX90A-NEXT:    ;;#ASMSTART9560; GFX90A-NEXT:    ; def s[6:7]9561; GFX90A-NEXT:    ;;#ASMEND9562; GFX90A-NEXT:    s_lshr_b32 s8, s7, 169563; GFX90A-NEXT:    s_mov_b32 s9, s49564; GFX90A-NEXT:    ;;#ASMSTART9565; GFX90A-NEXT:    ; use s[8:9]9566; GFX90A-NEXT:    ;;#ASMEND9567; GFX90A-NEXT:    s_setpc_b64 s[30:31]9568;9569; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_u_0:9570; GFX942:       ; %bb.0:9571; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9572; GFX942-NEXT:    ;;#ASMSTART9573; GFX942-NEXT:    ; def s[0:1]9574; GFX942-NEXT:    ;;#ASMEND9575; GFX942-NEXT:    ;;#ASMSTART9576; GFX942-NEXT:    ; def s[2:3]9577; GFX942-NEXT:    ;;#ASMEND9578; GFX942-NEXT:    s_lshr_b32 s8, s3, 169579; GFX942-NEXT:    s_mov_b32 s9, s09580; GFX942-NEXT:    ;;#ASMSTART9581; GFX942-NEXT:    ; use s[8:9]9582; GFX942-NEXT:    ;;#ASMEND9583; GFX942-NEXT:    s_setpc_b64 s[30:31]9584  %vec0 = call <4 x half> asm "; def $0", "=s"()9585  %vec1 = call <4 x half> asm "; def $0", "=s"()9586  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 poison, i32 0>9587  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9588  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)9589  ret void9590}9591 9592define void @s_shuffle_v3f16_v4f16__7_1_0() {9593; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_1_0:9594; GFX900:       ; %bb.0:9595; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9596; GFX900-NEXT:    ;;#ASMSTART9597; GFX900-NEXT:    ; def s[4:5]9598; GFX900-NEXT:    ;;#ASMEND9599; GFX900-NEXT:    ;;#ASMSTART9600; GFX900-NEXT:    ; def s[6:7]9601; GFX900-NEXT:    ;;#ASMEND9602; GFX900-NEXT:    s_lshr_b32 s5, s4, 169603; GFX900-NEXT:    s_lshr_b32 s6, s7, 169604; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s6, s59605; GFX900-NEXT:    s_mov_b32 s9, s49606; GFX900-NEXT:    ;;#ASMSTART9607; GFX900-NEXT:    ; use s[8:9]9608; GFX900-NEXT:    ;;#ASMEND9609; GFX900-NEXT:    s_setpc_b64 s[30:31]9610;9611; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_1_0:9612; GFX90A:       ; %bb.0:9613; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9614; GFX90A-NEXT:    ;;#ASMSTART9615; GFX90A-NEXT:    ; def s[4:5]9616; GFX90A-NEXT:    ;;#ASMEND9617; GFX90A-NEXT:    ;;#ASMSTART9618; GFX90A-NEXT:    ; def s[6:7]9619; GFX90A-NEXT:    ;;#ASMEND9620; GFX90A-NEXT:    s_lshr_b32 s5, s4, 169621; GFX90A-NEXT:    s_lshr_b32 s6, s7, 169622; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s6, s59623; GFX90A-NEXT:    s_mov_b32 s9, s49624; GFX90A-NEXT:    ;;#ASMSTART9625; GFX90A-NEXT:    ; use s[8:9]9626; GFX90A-NEXT:    ;;#ASMEND9627; GFX90A-NEXT:    s_setpc_b64 s[30:31]9628;9629; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_1_0:9630; GFX942:       ; %bb.0:9631; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9632; GFX942-NEXT:    ;;#ASMSTART9633; GFX942-NEXT:    ; def s[0:1]9634; GFX942-NEXT:    ;;#ASMEND9635; GFX942-NEXT:    ;;#ASMSTART9636; GFX942-NEXT:    ; def s[2:3]9637; GFX942-NEXT:    ;;#ASMEND9638; GFX942-NEXT:    s_lshr_b32 s1, s0, 169639; GFX942-NEXT:    s_lshr_b32 s2, s3, 169640; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s2, s19641; GFX942-NEXT:    s_mov_b32 s9, s09642; GFX942-NEXT:    ;;#ASMSTART9643; GFX942-NEXT:    ; use s[8:9]9644; GFX942-NEXT:    ;;#ASMEND9645; GFX942-NEXT:    s_setpc_b64 s[30:31]9646  %vec0 = call <4 x half> asm "; def $0", "=s"()9647  %vec1 = call <4 x half> asm "; def $0", "=s"()9648  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 1, i32 0>9649  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9650  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)9651  ret void9652}9653 9654define void @s_shuffle_v3f16_v4f16__7_2_0() {9655; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_2_0:9656; GFX900:       ; %bb.0:9657; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9658; GFX900-NEXT:    ;;#ASMSTART9659; GFX900-NEXT:    ; def s[6:7]9660; GFX900-NEXT:    ;;#ASMEND9661; GFX900-NEXT:    s_lshr_b32 s6, s7, 169662; GFX900-NEXT:    ;;#ASMSTART9663; GFX900-NEXT:    ; def s[4:5]9664; GFX900-NEXT:    ;;#ASMEND9665; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s6, s59666; GFX900-NEXT:    s_mov_b32 s9, s49667; GFX900-NEXT:    ;;#ASMSTART9668; GFX900-NEXT:    ; use s[8:9]9669; GFX900-NEXT:    ;;#ASMEND9670; GFX900-NEXT:    s_setpc_b64 s[30:31]9671;9672; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_2_0:9673; GFX90A:       ; %bb.0:9674; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9675; GFX90A-NEXT:    ;;#ASMSTART9676; GFX90A-NEXT:    ; def s[6:7]9677; GFX90A-NEXT:    ;;#ASMEND9678; GFX90A-NEXT:    s_lshr_b32 s6, s7, 169679; GFX90A-NEXT:    ;;#ASMSTART9680; GFX90A-NEXT:    ; def s[4:5]9681; GFX90A-NEXT:    ;;#ASMEND9682; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s6, s59683; GFX90A-NEXT:    s_mov_b32 s9, s49684; GFX90A-NEXT:    ;;#ASMSTART9685; GFX90A-NEXT:    ; use s[8:9]9686; GFX90A-NEXT:    ;;#ASMEND9687; GFX90A-NEXT:    s_setpc_b64 s[30:31]9688;9689; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_2_0:9690; GFX942:       ; %bb.0:9691; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9692; GFX942-NEXT:    ;;#ASMSTART9693; GFX942-NEXT:    ; def s[2:3]9694; GFX942-NEXT:    ;;#ASMEND9695; GFX942-NEXT:    s_lshr_b32 s2, s3, 169696; GFX942-NEXT:    ;;#ASMSTART9697; GFX942-NEXT:    ; def s[0:1]9698; GFX942-NEXT:    ;;#ASMEND9699; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s2, s19700; GFX942-NEXT:    s_mov_b32 s9, s09701; GFX942-NEXT:    ;;#ASMSTART9702; GFX942-NEXT:    ; use s[8:9]9703; GFX942-NEXT:    ;;#ASMEND9704; GFX942-NEXT:    s_setpc_b64 s[30:31]9705  %vec0 = call <4 x half> asm "; def $0", "=s"()9706  %vec1 = call <4 x half> asm "; def $0", "=s"()9707  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 2, i32 0>9708  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9709  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)9710  ret void9711}9712 9713define void @s_shuffle_v3f16_v4f16__7_3_0() {9714; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_3_0:9715; GFX900:       ; %bb.0:9716; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9717; GFX900-NEXT:    ;;#ASMSTART9718; GFX900-NEXT:    ; def s[4:5]9719; GFX900-NEXT:    ;;#ASMEND9720; GFX900-NEXT:    ;;#ASMSTART9721; GFX900-NEXT:    ; def s[6:7]9722; GFX900-NEXT:    ;;#ASMEND9723; GFX900-NEXT:    s_lshr_b32 s5, s5, 169724; GFX900-NEXT:    s_lshr_b32 s6, s7, 169725; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s6, s59726; GFX900-NEXT:    s_mov_b32 s9, s49727; GFX900-NEXT:    ;;#ASMSTART9728; GFX900-NEXT:    ; use s[8:9]9729; GFX900-NEXT:    ;;#ASMEND9730; GFX900-NEXT:    s_setpc_b64 s[30:31]9731;9732; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_3_0:9733; GFX90A:       ; %bb.0:9734; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9735; GFX90A-NEXT:    ;;#ASMSTART9736; GFX90A-NEXT:    ; def s[4:5]9737; GFX90A-NEXT:    ;;#ASMEND9738; GFX90A-NEXT:    ;;#ASMSTART9739; GFX90A-NEXT:    ; def s[6:7]9740; GFX90A-NEXT:    ;;#ASMEND9741; GFX90A-NEXT:    s_lshr_b32 s5, s5, 169742; GFX90A-NEXT:    s_lshr_b32 s6, s7, 169743; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s6, s59744; GFX90A-NEXT:    s_mov_b32 s9, s49745; GFX90A-NEXT:    ;;#ASMSTART9746; GFX90A-NEXT:    ; use s[8:9]9747; GFX90A-NEXT:    ;;#ASMEND9748; GFX90A-NEXT:    s_setpc_b64 s[30:31]9749;9750; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_3_0:9751; GFX942:       ; %bb.0:9752; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9753; GFX942-NEXT:    ;;#ASMSTART9754; GFX942-NEXT:    ; def s[0:1]9755; GFX942-NEXT:    ;;#ASMEND9756; GFX942-NEXT:    ;;#ASMSTART9757; GFX942-NEXT:    ; def s[2:3]9758; GFX942-NEXT:    ;;#ASMEND9759; GFX942-NEXT:    s_lshr_b32 s1, s1, 169760; GFX942-NEXT:    s_lshr_b32 s2, s3, 169761; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s2, s19762; GFX942-NEXT:    s_mov_b32 s9, s09763; GFX942-NEXT:    ;;#ASMSTART9764; GFX942-NEXT:    ; use s[8:9]9765; GFX942-NEXT:    ;;#ASMEND9766; GFX942-NEXT:    s_setpc_b64 s[30:31]9767  %vec0 = call <4 x half> asm "; def $0", "=s"()9768  %vec1 = call <4 x half> asm "; def $0", "=s"()9769  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 3, i32 0>9770  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9771  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)9772  ret void9773}9774 9775define void @s_shuffle_v3f16_v4f16__7_4_0() {9776; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_4_0:9777; GFX900:       ; %bb.0:9778; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9779; GFX900-NEXT:    ;;#ASMSTART9780; GFX900-NEXT:    ; def s[4:5]9781; GFX900-NEXT:    ;;#ASMEND9782; GFX900-NEXT:    ;;#ASMSTART9783; GFX900-NEXT:    ; def s[6:7]9784; GFX900-NEXT:    ;;#ASMEND9785; GFX900-NEXT:    s_lshr_b32 s5, s7, 169786; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s69787; GFX900-NEXT:    s_mov_b32 s9, s49788; GFX900-NEXT:    ;;#ASMSTART9789; GFX900-NEXT:    ; use s[8:9]9790; GFX900-NEXT:    ;;#ASMEND9791; GFX900-NEXT:    s_setpc_b64 s[30:31]9792;9793; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_4_0:9794; GFX90A:       ; %bb.0:9795; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9796; GFX90A-NEXT:    ;;#ASMSTART9797; GFX90A-NEXT:    ; def s[4:5]9798; GFX90A-NEXT:    ;;#ASMEND9799; GFX90A-NEXT:    ;;#ASMSTART9800; GFX90A-NEXT:    ; def s[6:7]9801; GFX90A-NEXT:    ;;#ASMEND9802; GFX90A-NEXT:    s_lshr_b32 s5, s7, 169803; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s69804; GFX90A-NEXT:    s_mov_b32 s9, s49805; GFX90A-NEXT:    ;;#ASMSTART9806; GFX90A-NEXT:    ; use s[8:9]9807; GFX90A-NEXT:    ;;#ASMEND9808; GFX90A-NEXT:    s_setpc_b64 s[30:31]9809;9810; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_4_0:9811; GFX942:       ; %bb.0:9812; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9813; GFX942-NEXT:    ;;#ASMSTART9814; GFX942-NEXT:    ; def s[0:1]9815; GFX942-NEXT:    ;;#ASMEND9816; GFX942-NEXT:    ;;#ASMSTART9817; GFX942-NEXT:    ; def s[2:3]9818; GFX942-NEXT:    ;;#ASMEND9819; GFX942-NEXT:    s_lshr_b32 s1, s3, 169820; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s29821; GFX942-NEXT:    s_mov_b32 s9, s09822; GFX942-NEXT:    ;;#ASMSTART9823; GFX942-NEXT:    ; use s[8:9]9824; GFX942-NEXT:    ;;#ASMEND9825; GFX942-NEXT:    s_setpc_b64 s[30:31]9826  %vec0 = call <4 x half> asm "; def $0", "=s"()9827  %vec1 = call <4 x half> asm "; def $0", "=s"()9828  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 4, i32 0>9829  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9830  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)9831  ret void9832}9833 9834define void @s_shuffle_v3f16_v4f16__7_5_0() {9835; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_5_0:9836; GFX900:       ; %bb.0:9837; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9838; GFX900-NEXT:    ;;#ASMSTART9839; GFX900-NEXT:    ; def s[4:5]9840; GFX900-NEXT:    ;;#ASMEND9841; GFX900-NEXT:    ;;#ASMSTART9842; GFX900-NEXT:    ; def s[6:7]9843; GFX900-NEXT:    ;;#ASMEND9844; GFX900-NEXT:    s_lshr_b32 s5, s6, 169845; GFX900-NEXT:    s_lshr_b32 s6, s7, 169846; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s6, s59847; GFX900-NEXT:    s_mov_b32 s9, s49848; GFX900-NEXT:    ;;#ASMSTART9849; GFX900-NEXT:    ; use s[8:9]9850; GFX900-NEXT:    ;;#ASMEND9851; GFX900-NEXT:    s_setpc_b64 s[30:31]9852;9853; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_5_0:9854; GFX90A:       ; %bb.0:9855; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9856; GFX90A-NEXT:    ;;#ASMSTART9857; GFX90A-NEXT:    ; def s[4:5]9858; GFX90A-NEXT:    ;;#ASMEND9859; GFX90A-NEXT:    ;;#ASMSTART9860; GFX90A-NEXT:    ; def s[6:7]9861; GFX90A-NEXT:    ;;#ASMEND9862; GFX90A-NEXT:    s_lshr_b32 s5, s6, 169863; GFX90A-NEXT:    s_lshr_b32 s6, s7, 169864; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s6, s59865; GFX90A-NEXT:    s_mov_b32 s9, s49866; GFX90A-NEXT:    ;;#ASMSTART9867; GFX90A-NEXT:    ; use s[8:9]9868; GFX90A-NEXT:    ;;#ASMEND9869; GFX90A-NEXT:    s_setpc_b64 s[30:31]9870;9871; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_5_0:9872; GFX942:       ; %bb.0:9873; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9874; GFX942-NEXT:    ;;#ASMSTART9875; GFX942-NEXT:    ; def s[0:1]9876; GFX942-NEXT:    ;;#ASMEND9877; GFX942-NEXT:    ;;#ASMSTART9878; GFX942-NEXT:    ; def s[2:3]9879; GFX942-NEXT:    ;;#ASMEND9880; GFX942-NEXT:    s_lshr_b32 s1, s2, 169881; GFX942-NEXT:    s_lshr_b32 s2, s3, 169882; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s2, s19883; GFX942-NEXT:    s_mov_b32 s9, s09884; GFX942-NEXT:    ;;#ASMSTART9885; GFX942-NEXT:    ; use s[8:9]9886; GFX942-NEXT:    ;;#ASMEND9887; GFX942-NEXT:    s_setpc_b64 s[30:31]9888  %vec0 = call <4 x half> asm "; def $0", "=s"()9889  %vec1 = call <4 x half> asm "; def $0", "=s"()9890  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 5, i32 0>9891  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9892  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)9893  ret void9894}9895 9896define void @s_shuffle_v3f16_v4f16__7_6_0() {9897; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_6_0:9898; GFX900:       ; %bb.0:9899; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9900; GFX900-NEXT:    ;;#ASMSTART9901; GFX900-NEXT:    ; def s[4:5]9902; GFX900-NEXT:    ;;#ASMEND9903; GFX900-NEXT:    ;;#ASMSTART9904; GFX900-NEXT:    ; def s[6:7]9905; GFX900-NEXT:    ;;#ASMEND9906; GFX900-NEXT:    s_lshr_b32 s5, s7, 169907; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s79908; GFX900-NEXT:    s_mov_b32 s9, s49909; GFX900-NEXT:    ;;#ASMSTART9910; GFX900-NEXT:    ; use s[8:9]9911; GFX900-NEXT:    ;;#ASMEND9912; GFX900-NEXT:    s_setpc_b64 s[30:31]9913;9914; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_6_0:9915; GFX90A:       ; %bb.0:9916; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9917; GFX90A-NEXT:    ;;#ASMSTART9918; GFX90A-NEXT:    ; def s[4:5]9919; GFX90A-NEXT:    ;;#ASMEND9920; GFX90A-NEXT:    ;;#ASMSTART9921; GFX90A-NEXT:    ; def s[6:7]9922; GFX90A-NEXT:    ;;#ASMEND9923; GFX90A-NEXT:    s_lshr_b32 s5, s7, 169924; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s79925; GFX90A-NEXT:    s_mov_b32 s9, s49926; GFX90A-NEXT:    ;;#ASMSTART9927; GFX90A-NEXT:    ; use s[8:9]9928; GFX90A-NEXT:    ;;#ASMEND9929; GFX90A-NEXT:    s_setpc_b64 s[30:31]9930;9931; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_6_0:9932; GFX942:       ; %bb.0:9933; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9934; GFX942-NEXT:    ;;#ASMSTART9935; GFX942-NEXT:    ; def s[0:1]9936; GFX942-NEXT:    ;;#ASMEND9937; GFX942-NEXT:    ;;#ASMSTART9938; GFX942-NEXT:    ; def s[2:3]9939; GFX942-NEXT:    ;;#ASMEND9940; GFX942-NEXT:    s_lshr_b32 s1, s3, 169941; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s39942; GFX942-NEXT:    s_mov_b32 s9, s09943; GFX942-NEXT:    ;;#ASMSTART9944; GFX942-NEXT:    ; use s[8:9]9945; GFX942-NEXT:    ;;#ASMEND9946; GFX942-NEXT:    s_setpc_b64 s[30:31]9947  %vec0 = call <4 x half> asm "; def $0", "=s"()9948  %vec1 = call <4 x half> asm "; def $0", "=s"()9949  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 6, i32 0>9950  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9951  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)9952  ret void9953}9954 9955define void @s_shuffle_v3f16_v4f16__u_1_1() {9956; GFX9-LABEL: s_shuffle_v3f16_v4f16__u_1_1:9957; GFX9:       ; %bb.0:9958; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9959; GFX9-NEXT:    ;;#ASMSTART9960; GFX9-NEXT:    ; def s[8:9]9961; GFX9-NEXT:    ;;#ASMEND9962; GFX9-NEXT:    s_lshr_b32 s9, s8, 169963; GFX9-NEXT:    ;;#ASMSTART9964; GFX9-NEXT:    ; use s[8:9]9965; GFX9-NEXT:    ;;#ASMEND9966; GFX9-NEXT:    s_setpc_b64 s[30:31]9967  %vec0 = call <4 x half> asm "; def $0", "=s"()9968  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 poison, i32 1, i32 1>9969  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9970  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)9971  ret void9972}9973 9974define void @s_shuffle_v3f16_v4f16__0_1_1() {9975; GFX9-LABEL: s_shuffle_v3f16_v4f16__0_1_1:9976; GFX9:       ; %bb.0:9977; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9978; GFX9-NEXT:    ;;#ASMSTART9979; GFX9-NEXT:    ; def s[8:9]9980; GFX9-NEXT:    ;;#ASMEND9981; GFX9-NEXT:    s_lshr_b32 s9, s8, 169982; GFX9-NEXT:    ;;#ASMSTART9983; GFX9-NEXT:    ; use s[8:9]9984; GFX9-NEXT:    ;;#ASMEND9985; GFX9-NEXT:    s_setpc_b64 s[30:31]9986  %vec0 = call <4 x half> asm "; def $0", "=s"()9987  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 0, i32 1, i32 1>9988  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>9989  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)9990  ret void9991}9992 9993define void @s_shuffle_v3f16_v4f16__1_1_1() {9994; GFX900-LABEL: s_shuffle_v3f16_v4f16__1_1_1:9995; GFX900:       ; %bb.0:9996; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9997; GFX900-NEXT:    ;;#ASMSTART9998; GFX900-NEXT:    ; def s[4:5]9999; GFX900-NEXT:    ;;#ASMEND10000; GFX900-NEXT:    s_lshr_b32 s9, s4, 1610001; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s9, s910002; GFX900-NEXT:    ;;#ASMSTART10003; GFX900-NEXT:    ; use s[8:9]10004; GFX900-NEXT:    ;;#ASMEND10005; GFX900-NEXT:    s_setpc_b64 s[30:31]10006;10007; GFX90A-LABEL: s_shuffle_v3f16_v4f16__1_1_1:10008; GFX90A:       ; %bb.0:10009; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10010; GFX90A-NEXT:    ;;#ASMSTART10011; GFX90A-NEXT:    ; def s[4:5]10012; GFX90A-NEXT:    ;;#ASMEND10013; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1610014; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s9, s910015; GFX90A-NEXT:    ;;#ASMSTART10016; GFX90A-NEXT:    ; use s[8:9]10017; GFX90A-NEXT:    ;;#ASMEND10018; GFX90A-NEXT:    s_setpc_b64 s[30:31]10019;10020; GFX942-LABEL: s_shuffle_v3f16_v4f16__1_1_1:10021; GFX942:       ; %bb.0:10022; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10023; GFX942-NEXT:    ;;#ASMSTART10024; GFX942-NEXT:    ; def s[0:1]10025; GFX942-NEXT:    ;;#ASMEND10026; GFX942-NEXT:    s_lshr_b32 s9, s0, 1610027; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s9, s910028; GFX942-NEXT:    ;;#ASMSTART10029; GFX942-NEXT:    ; use s[8:9]10030; GFX942-NEXT:    ;;#ASMEND10031; GFX942-NEXT:    s_setpc_b64 s[30:31]10032  %vec0 = call <4 x half> asm "; def $0", "=s"()10033  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 1, i32 1, i32 1>10034  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10035  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)10036  ret void10037}10038 10039define void @s_shuffle_v3f16_v4f16__2_1_1() {10040; GFX900-LABEL: s_shuffle_v3f16_v4f16__2_1_1:10041; GFX900:       ; %bb.0:10042; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10043; GFX900-NEXT:    ;;#ASMSTART10044; GFX900-NEXT:    ; def s[4:5]10045; GFX900-NEXT:    ;;#ASMEND10046; GFX900-NEXT:    s_lshr_b32 s9, s4, 1610047; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s910048; GFX900-NEXT:    ;;#ASMSTART10049; GFX900-NEXT:    ; use s[8:9]10050; GFX900-NEXT:    ;;#ASMEND10051; GFX900-NEXT:    s_setpc_b64 s[30:31]10052;10053; GFX90A-LABEL: s_shuffle_v3f16_v4f16__2_1_1:10054; GFX90A:       ; %bb.0:10055; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10056; GFX90A-NEXT:    ;;#ASMSTART10057; GFX90A-NEXT:    ; def s[4:5]10058; GFX90A-NEXT:    ;;#ASMEND10059; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1610060; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s910061; GFX90A-NEXT:    ;;#ASMSTART10062; GFX90A-NEXT:    ; use s[8:9]10063; GFX90A-NEXT:    ;;#ASMEND10064; GFX90A-NEXT:    s_setpc_b64 s[30:31]10065;10066; GFX942-LABEL: s_shuffle_v3f16_v4f16__2_1_1:10067; GFX942:       ; %bb.0:10068; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10069; GFX942-NEXT:    ;;#ASMSTART10070; GFX942-NEXT:    ; def s[0:1]10071; GFX942-NEXT:    ;;#ASMEND10072; GFX942-NEXT:    s_lshr_b32 s9, s0, 1610073; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s910074; GFX942-NEXT:    ;;#ASMSTART10075; GFX942-NEXT:    ; use s[8:9]10076; GFX942-NEXT:    ;;#ASMEND10077; GFX942-NEXT:    s_setpc_b64 s[30:31]10078  %vec0 = call <4 x half> asm "; def $0", "=s"()10079  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 2, i32 1, i32 1>10080  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10081  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)10082  ret void10083}10084 10085define void @s_shuffle_v3f16_v4f16__3_1_1() {10086; GFX900-LABEL: s_shuffle_v3f16_v4f16__3_1_1:10087; GFX900:       ; %bb.0:10088; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10089; GFX900-NEXT:    ;;#ASMSTART10090; GFX900-NEXT:    ; def s[4:5]10091; GFX900-NEXT:    ;;#ASMEND10092; GFX900-NEXT:    s_lshr_b32 s9, s4, 1610093; GFX900-NEXT:    s_lshr_b32 s4, s5, 1610094; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s910095; GFX900-NEXT:    ;;#ASMSTART10096; GFX900-NEXT:    ; use s[8:9]10097; GFX900-NEXT:    ;;#ASMEND10098; GFX900-NEXT:    s_setpc_b64 s[30:31]10099;10100; GFX90A-LABEL: s_shuffle_v3f16_v4f16__3_1_1:10101; GFX90A:       ; %bb.0:10102; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10103; GFX90A-NEXT:    ;;#ASMSTART10104; GFX90A-NEXT:    ; def s[4:5]10105; GFX90A-NEXT:    ;;#ASMEND10106; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1610107; GFX90A-NEXT:    s_lshr_b32 s4, s5, 1610108; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s910109; GFX90A-NEXT:    ;;#ASMSTART10110; GFX90A-NEXT:    ; use s[8:9]10111; GFX90A-NEXT:    ;;#ASMEND10112; GFX90A-NEXT:    s_setpc_b64 s[30:31]10113;10114; GFX942-LABEL: s_shuffle_v3f16_v4f16__3_1_1:10115; GFX942:       ; %bb.0:10116; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10117; GFX942-NEXT:    ;;#ASMSTART10118; GFX942-NEXT:    ; def s[0:1]10119; GFX942-NEXT:    ;;#ASMEND10120; GFX942-NEXT:    s_lshr_b32 s9, s0, 1610121; GFX942-NEXT:    s_lshr_b32 s0, s1, 1610122; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s910123; GFX942-NEXT:    ;;#ASMSTART10124; GFX942-NEXT:    ; use s[8:9]10125; GFX942-NEXT:    ;;#ASMEND10126; GFX942-NEXT:    s_setpc_b64 s[30:31]10127  %vec0 = call <4 x half> asm "; def $0", "=s"()10128  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 3, i32 1, i32 1>10129  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10130  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)10131  ret void10132}10133 10134define void @s_shuffle_v3f16_v4f16__4_1_1() {10135; GFX9-LABEL: s_shuffle_v3f16_v4f16__4_1_1:10136; GFX9:       ; %bb.0:10137; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10138; GFX9-NEXT:    ;;#ASMSTART10139; GFX9-NEXT:    ; def s[8:9]10140; GFX9-NEXT:    ;;#ASMEND10141; GFX9-NEXT:    s_lshr_b32 s9, s8, 1610142; GFX9-NEXT:    ;;#ASMSTART10143; GFX9-NEXT:    ; use s[8:9]10144; GFX9-NEXT:    ;;#ASMEND10145; GFX9-NEXT:    s_setpc_b64 s[30:31]10146  %vec0 = call <4 x half> asm "; def $0", "=s"()10147  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 4, i32 1, i32 1>10148  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10149  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)10150  ret void10151}10152 10153define void @s_shuffle_v3f16_v4f16__5_1_1() {10154; GFX900-LABEL: s_shuffle_v3f16_v4f16__5_1_1:10155; GFX900:       ; %bb.0:10156; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10157; GFX900-NEXT:    ;;#ASMSTART10158; GFX900-NEXT:    ; def s[4:5]10159; GFX900-NEXT:    ;;#ASMEND10160; GFX900-NEXT:    ;;#ASMSTART10161; GFX900-NEXT:    ; def s[6:7]10162; GFX900-NEXT:    ;;#ASMEND10163; GFX900-NEXT:    s_lshr_b32 s9, s4, 1610164; GFX900-NEXT:    s_lshr_b32 s4, s6, 1610165; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s910166; GFX900-NEXT:    ;;#ASMSTART10167; GFX900-NEXT:    ; use s[8:9]10168; GFX900-NEXT:    ;;#ASMEND10169; GFX900-NEXT:    s_setpc_b64 s[30:31]10170;10171; GFX90A-LABEL: s_shuffle_v3f16_v4f16__5_1_1:10172; GFX90A:       ; %bb.0:10173; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10174; GFX90A-NEXT:    ;;#ASMSTART10175; GFX90A-NEXT:    ; def s[4:5]10176; GFX90A-NEXT:    ;;#ASMEND10177; GFX90A-NEXT:    ;;#ASMSTART10178; GFX90A-NEXT:    ; def s[6:7]10179; GFX90A-NEXT:    ;;#ASMEND10180; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1610181; GFX90A-NEXT:    s_lshr_b32 s4, s6, 1610182; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s910183; GFX90A-NEXT:    ;;#ASMSTART10184; GFX90A-NEXT:    ; use s[8:9]10185; GFX90A-NEXT:    ;;#ASMEND10186; GFX90A-NEXT:    s_setpc_b64 s[30:31]10187;10188; GFX942-LABEL: s_shuffle_v3f16_v4f16__5_1_1:10189; GFX942:       ; %bb.0:10190; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10191; GFX942-NEXT:    ;;#ASMSTART10192; GFX942-NEXT:    ; def s[0:1]10193; GFX942-NEXT:    ;;#ASMEND10194; GFX942-NEXT:    ;;#ASMSTART10195; GFX942-NEXT:    ; def s[2:3]10196; GFX942-NEXT:    ;;#ASMEND10197; GFX942-NEXT:    s_lshr_b32 s9, s0, 1610198; GFX942-NEXT:    s_lshr_b32 s0, s2, 1610199; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s910200; GFX942-NEXT:    ;;#ASMSTART10201; GFX942-NEXT:    ; use s[8:9]10202; GFX942-NEXT:    ;;#ASMEND10203; GFX942-NEXT:    s_setpc_b64 s[30:31]10204  %vec0 = call <4 x half> asm "; def $0", "=s"()10205  %vec1 = call <4 x half> asm "; def $0", "=s"()10206  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 5, i32 1, i32 1>10207  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10208  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)10209  ret void10210}10211 10212define void @s_shuffle_v3f16_v4f16__6_1_1() {10213; GFX900-LABEL: s_shuffle_v3f16_v4f16__6_1_1:10214; GFX900:       ; %bb.0:10215; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10216; GFX900-NEXT:    ;;#ASMSTART10217; GFX900-NEXT:    ; def s[4:5]10218; GFX900-NEXT:    ;;#ASMEND10219; GFX900-NEXT:    s_lshr_b32 s9, s4, 1610220; GFX900-NEXT:    ;;#ASMSTART10221; GFX900-NEXT:    ; def s[6:7]10222; GFX900-NEXT:    ;;#ASMEND10223; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s910224; GFX900-NEXT:    ;;#ASMSTART10225; GFX900-NEXT:    ; use s[8:9]10226; GFX900-NEXT:    ;;#ASMEND10227; GFX900-NEXT:    s_setpc_b64 s[30:31]10228;10229; GFX90A-LABEL: s_shuffle_v3f16_v4f16__6_1_1:10230; GFX90A:       ; %bb.0:10231; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10232; GFX90A-NEXT:    ;;#ASMSTART10233; GFX90A-NEXT:    ; def s[4:5]10234; GFX90A-NEXT:    ;;#ASMEND10235; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1610236; GFX90A-NEXT:    ;;#ASMSTART10237; GFX90A-NEXT:    ; def s[6:7]10238; GFX90A-NEXT:    ;;#ASMEND10239; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s910240; GFX90A-NEXT:    ;;#ASMSTART10241; GFX90A-NEXT:    ; use s[8:9]10242; GFX90A-NEXT:    ;;#ASMEND10243; GFX90A-NEXT:    s_setpc_b64 s[30:31]10244;10245; GFX942-LABEL: s_shuffle_v3f16_v4f16__6_1_1:10246; GFX942:       ; %bb.0:10247; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10248; GFX942-NEXT:    ;;#ASMSTART10249; GFX942-NEXT:    ; def s[0:1]10250; GFX942-NEXT:    ;;#ASMEND10251; GFX942-NEXT:    s_lshr_b32 s9, s0, 1610252; GFX942-NEXT:    ;;#ASMSTART10253; GFX942-NEXT:    ; def s[2:3]10254; GFX942-NEXT:    ;;#ASMEND10255; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s910256; GFX942-NEXT:    ;;#ASMSTART10257; GFX942-NEXT:    ; use s[8:9]10258; GFX942-NEXT:    ;;#ASMEND10259; GFX942-NEXT:    s_setpc_b64 s[30:31]10260  %vec0 = call <4 x half> asm "; def $0", "=s"()10261  %vec1 = call <4 x half> asm "; def $0", "=s"()10262  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 6, i32 1, i32 1>10263  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10264  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)10265  ret void10266}10267 10268define void @s_shuffle_v3f16_v4f16__7_1_1() {10269; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_1_1:10270; GFX900:       ; %bb.0:10271; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10272; GFX900-NEXT:    ;;#ASMSTART10273; GFX900-NEXT:    ; def s[4:5]10274; GFX900-NEXT:    ;;#ASMEND10275; GFX900-NEXT:    ;;#ASMSTART10276; GFX900-NEXT:    ; def s[6:7]10277; GFX900-NEXT:    ;;#ASMEND10278; GFX900-NEXT:    s_lshr_b32 s9, s4, 1610279; GFX900-NEXT:    s_lshr_b32 s4, s7, 1610280; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s910281; GFX900-NEXT:    ;;#ASMSTART10282; GFX900-NEXT:    ; use s[8:9]10283; GFX900-NEXT:    ;;#ASMEND10284; GFX900-NEXT:    s_setpc_b64 s[30:31]10285;10286; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_1_1:10287; GFX90A:       ; %bb.0:10288; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10289; GFX90A-NEXT:    ;;#ASMSTART10290; GFX90A-NEXT:    ; def s[4:5]10291; GFX90A-NEXT:    ;;#ASMEND10292; GFX90A-NEXT:    ;;#ASMSTART10293; GFX90A-NEXT:    ; def s[6:7]10294; GFX90A-NEXT:    ;;#ASMEND10295; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1610296; GFX90A-NEXT:    s_lshr_b32 s4, s7, 1610297; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s910298; GFX90A-NEXT:    ;;#ASMSTART10299; GFX90A-NEXT:    ; use s[8:9]10300; GFX90A-NEXT:    ;;#ASMEND10301; GFX90A-NEXT:    s_setpc_b64 s[30:31]10302;10303; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_1_1:10304; GFX942:       ; %bb.0:10305; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10306; GFX942-NEXT:    ;;#ASMSTART10307; GFX942-NEXT:    ; def s[0:1]10308; GFX942-NEXT:    ;;#ASMEND10309; GFX942-NEXT:    ;;#ASMSTART10310; GFX942-NEXT:    ; def s[2:3]10311; GFX942-NEXT:    ;;#ASMEND10312; GFX942-NEXT:    s_lshr_b32 s9, s0, 1610313; GFX942-NEXT:    s_lshr_b32 s0, s3, 1610314; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s910315; GFX942-NEXT:    ;;#ASMSTART10316; GFX942-NEXT:    ; use s[8:9]10317; GFX942-NEXT:    ;;#ASMEND10318; GFX942-NEXT:    s_setpc_b64 s[30:31]10319  %vec0 = call <4 x half> asm "; def $0", "=s"()10320  %vec1 = call <4 x half> asm "; def $0", "=s"()10321  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 1, i32 1>10322  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10323  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)10324  ret void10325}10326 10327define void @s_shuffle_v3f16_v4f16__7_u_1() {10328; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_u_1:10329; GFX900:       ; %bb.0:10330; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10331; GFX900-NEXT:    ;;#ASMSTART10332; GFX900-NEXT:    ; def s[4:5]10333; GFX900-NEXT:    ;;#ASMEND10334; GFX900-NEXT:    ;;#ASMSTART10335; GFX900-NEXT:    ; def s[6:7]10336; GFX900-NEXT:    ;;#ASMEND10337; GFX900-NEXT:    s_lshr_b32 s9, s4, 1610338; GFX900-NEXT:    s_lshr_b32 s8, s7, 1610339; GFX900-NEXT:    ;;#ASMSTART10340; GFX900-NEXT:    ; use s[8:9]10341; GFX900-NEXT:    ;;#ASMEND10342; GFX900-NEXT:    s_setpc_b64 s[30:31]10343;10344; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_u_1:10345; GFX90A:       ; %bb.0:10346; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10347; GFX90A-NEXT:    ;;#ASMSTART10348; GFX90A-NEXT:    ; def s[4:5]10349; GFX90A-NEXT:    ;;#ASMEND10350; GFX90A-NEXT:    ;;#ASMSTART10351; GFX90A-NEXT:    ; def s[6:7]10352; GFX90A-NEXT:    ;;#ASMEND10353; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1610354; GFX90A-NEXT:    s_lshr_b32 s8, s7, 1610355; GFX90A-NEXT:    ;;#ASMSTART10356; GFX90A-NEXT:    ; use s[8:9]10357; GFX90A-NEXT:    ;;#ASMEND10358; GFX90A-NEXT:    s_setpc_b64 s[30:31]10359;10360; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_u_1:10361; GFX942:       ; %bb.0:10362; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10363; GFX942-NEXT:    ;;#ASMSTART10364; GFX942-NEXT:    ; def s[0:1]10365; GFX942-NEXT:    ;;#ASMEND10366; GFX942-NEXT:    ;;#ASMSTART10367; GFX942-NEXT:    ; def s[2:3]10368; GFX942-NEXT:    ;;#ASMEND10369; GFX942-NEXT:    s_lshr_b32 s9, s0, 1610370; GFX942-NEXT:    s_lshr_b32 s8, s3, 1610371; GFX942-NEXT:    ;;#ASMSTART10372; GFX942-NEXT:    ; use s[8:9]10373; GFX942-NEXT:    ;;#ASMEND10374; GFX942-NEXT:    s_setpc_b64 s[30:31]10375  %vec0 = call <4 x half> asm "; def $0", "=s"()10376  %vec1 = call <4 x half> asm "; def $0", "=s"()10377  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 poison, i32 1>10378  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10379  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)10380  ret void10381}10382 10383define void @s_shuffle_v3f16_v4f16__7_0_1() {10384; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_0_1:10385; GFX900:       ; %bb.0:10386; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10387; GFX900-NEXT:    ;;#ASMSTART10388; GFX900-NEXT:    ; def s[4:5]10389; GFX900-NEXT:    ;;#ASMEND10390; GFX900-NEXT:    ;;#ASMSTART10391; GFX900-NEXT:    ; def s[6:7]10392; GFX900-NEXT:    ;;#ASMEND10393; GFX900-NEXT:    s_lshr_b32 s5, s7, 1610394; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s410395; GFX900-NEXT:    s_lshr_b32 s9, s4, 1610396; GFX900-NEXT:    ;;#ASMSTART10397; GFX900-NEXT:    ; use s[8:9]10398; GFX900-NEXT:    ;;#ASMEND10399; GFX900-NEXT:    s_setpc_b64 s[30:31]10400;10401; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_0_1:10402; GFX90A:       ; %bb.0:10403; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10404; GFX90A-NEXT:    ;;#ASMSTART10405; GFX90A-NEXT:    ; def s[4:5]10406; GFX90A-NEXT:    ;;#ASMEND10407; GFX90A-NEXT:    ;;#ASMSTART10408; GFX90A-NEXT:    ; def s[6:7]10409; GFX90A-NEXT:    ;;#ASMEND10410; GFX90A-NEXT:    s_lshr_b32 s5, s7, 1610411; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s410412; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1610413; GFX90A-NEXT:    ;;#ASMSTART10414; GFX90A-NEXT:    ; use s[8:9]10415; GFX90A-NEXT:    ;;#ASMEND10416; GFX90A-NEXT:    s_setpc_b64 s[30:31]10417;10418; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_0_1:10419; GFX942:       ; %bb.0:10420; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10421; GFX942-NEXT:    ;;#ASMSTART10422; GFX942-NEXT:    ; def s[0:1]10423; GFX942-NEXT:    ;;#ASMEND10424; GFX942-NEXT:    ;;#ASMSTART10425; GFX942-NEXT:    ; def s[2:3]10426; GFX942-NEXT:    ;;#ASMEND10427; GFX942-NEXT:    s_lshr_b32 s1, s3, 1610428; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s010429; GFX942-NEXT:    s_lshr_b32 s9, s0, 1610430; GFX942-NEXT:    ;;#ASMSTART10431; GFX942-NEXT:    ; use s[8:9]10432; GFX942-NEXT:    ;;#ASMEND10433; GFX942-NEXT:    s_setpc_b64 s[30:31]10434  %vec0 = call <4 x half> asm "; def $0", "=s"()10435  %vec1 = call <4 x half> asm "; def $0", "=s"()10436  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 0, i32 1>10437  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10438  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)10439  ret void10440}10441 10442define void @s_shuffle_v3f16_v4f16__7_2_1() {10443; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_2_1:10444; GFX900:       ; %bb.0:10445; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10446; GFX900-NEXT:    ;;#ASMSTART10447; GFX900-NEXT:    ; def s[6:7]10448; GFX900-NEXT:    ;;#ASMEND10449; GFX900-NEXT:    s_lshr_b32 s6, s7, 1610450; GFX900-NEXT:    ;;#ASMSTART10451; GFX900-NEXT:    ; def s[4:5]10452; GFX900-NEXT:    ;;#ASMEND10453; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s6, s510454; GFX900-NEXT:    s_lshr_b32 s9, s4, 1610455; GFX900-NEXT:    ;;#ASMSTART10456; GFX900-NEXT:    ; use s[8:9]10457; GFX900-NEXT:    ;;#ASMEND10458; GFX900-NEXT:    s_setpc_b64 s[30:31]10459;10460; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_2_1:10461; GFX90A:       ; %bb.0:10462; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10463; GFX90A-NEXT:    ;;#ASMSTART10464; GFX90A-NEXT:    ; def s[6:7]10465; GFX90A-NEXT:    ;;#ASMEND10466; GFX90A-NEXT:    s_lshr_b32 s6, s7, 1610467; GFX90A-NEXT:    ;;#ASMSTART10468; GFX90A-NEXT:    ; def s[4:5]10469; GFX90A-NEXT:    ;;#ASMEND10470; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s6, s510471; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1610472; GFX90A-NEXT:    ;;#ASMSTART10473; GFX90A-NEXT:    ; use s[8:9]10474; GFX90A-NEXT:    ;;#ASMEND10475; GFX90A-NEXT:    s_setpc_b64 s[30:31]10476;10477; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_2_1:10478; GFX942:       ; %bb.0:10479; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10480; GFX942-NEXT:    ;;#ASMSTART10481; GFX942-NEXT:    ; def s[2:3]10482; GFX942-NEXT:    ;;#ASMEND10483; GFX942-NEXT:    s_lshr_b32 s2, s3, 1610484; GFX942-NEXT:    ;;#ASMSTART10485; GFX942-NEXT:    ; def s[0:1]10486; GFX942-NEXT:    ;;#ASMEND10487; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s2, s110488; GFX942-NEXT:    s_lshr_b32 s9, s0, 1610489; GFX942-NEXT:    ;;#ASMSTART10490; GFX942-NEXT:    ; use s[8:9]10491; GFX942-NEXT:    ;;#ASMEND10492; GFX942-NEXT:    s_setpc_b64 s[30:31]10493  %vec0 = call <4 x half> asm "; def $0", "=s"()10494  %vec1 = call <4 x half> asm "; def $0", "=s"()10495  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 2, i32 1>10496  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10497  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)10498  ret void10499}10500 10501define void @s_shuffle_v3f16_v4f16__7_3_1() {10502; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_3_1:10503; GFX900:       ; %bb.0:10504; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10505; GFX900-NEXT:    ;;#ASMSTART10506; GFX900-NEXT:    ; def s[4:5]10507; GFX900-NEXT:    ;;#ASMEND10508; GFX900-NEXT:    ;;#ASMSTART10509; GFX900-NEXT:    ; def s[6:7]10510; GFX900-NEXT:    ;;#ASMEND10511; GFX900-NEXT:    s_lshr_b32 s5, s5, 1610512; GFX900-NEXT:    s_lshr_b32 s6, s7, 1610513; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s6, s510514; GFX900-NEXT:    s_lshr_b32 s9, s4, 1610515; GFX900-NEXT:    ;;#ASMSTART10516; GFX900-NEXT:    ; use s[8:9]10517; GFX900-NEXT:    ;;#ASMEND10518; GFX900-NEXT:    s_setpc_b64 s[30:31]10519;10520; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_3_1:10521; GFX90A:       ; %bb.0:10522; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10523; GFX90A-NEXT:    ;;#ASMSTART10524; GFX90A-NEXT:    ; def s[4:5]10525; GFX90A-NEXT:    ;;#ASMEND10526; GFX90A-NEXT:    ;;#ASMSTART10527; GFX90A-NEXT:    ; def s[6:7]10528; GFX90A-NEXT:    ;;#ASMEND10529; GFX90A-NEXT:    s_lshr_b32 s5, s5, 1610530; GFX90A-NEXT:    s_lshr_b32 s6, s7, 1610531; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s6, s510532; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1610533; GFX90A-NEXT:    ;;#ASMSTART10534; GFX90A-NEXT:    ; use s[8:9]10535; GFX90A-NEXT:    ;;#ASMEND10536; GFX90A-NEXT:    s_setpc_b64 s[30:31]10537;10538; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_3_1:10539; GFX942:       ; %bb.0:10540; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10541; GFX942-NEXT:    ;;#ASMSTART10542; GFX942-NEXT:    ; def s[0:1]10543; GFX942-NEXT:    ;;#ASMEND10544; GFX942-NEXT:    ;;#ASMSTART10545; GFX942-NEXT:    ; def s[2:3]10546; GFX942-NEXT:    ;;#ASMEND10547; GFX942-NEXT:    s_lshr_b32 s1, s1, 1610548; GFX942-NEXT:    s_lshr_b32 s2, s3, 1610549; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s2, s110550; GFX942-NEXT:    s_lshr_b32 s9, s0, 1610551; GFX942-NEXT:    ;;#ASMSTART10552; GFX942-NEXT:    ; use s[8:9]10553; GFX942-NEXT:    ;;#ASMEND10554; GFX942-NEXT:    s_setpc_b64 s[30:31]10555  %vec0 = call <4 x half> asm "; def $0", "=s"()10556  %vec1 = call <4 x half> asm "; def $0", "=s"()10557  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 3, i32 1>10558  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10559  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)10560  ret void10561}10562 10563define void @s_shuffle_v3f16_v4f16__7_4_1() {10564; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_4_1:10565; GFX900:       ; %bb.0:10566; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10567; GFX900-NEXT:    ;;#ASMSTART10568; GFX900-NEXT:    ; def s[4:5]10569; GFX900-NEXT:    ;;#ASMEND10570; GFX900-NEXT:    ;;#ASMSTART10571; GFX900-NEXT:    ; def s[6:7]10572; GFX900-NEXT:    ;;#ASMEND10573; GFX900-NEXT:    s_lshr_b32 s5, s7, 1610574; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s610575; GFX900-NEXT:    s_lshr_b32 s9, s4, 1610576; GFX900-NEXT:    ;;#ASMSTART10577; GFX900-NEXT:    ; use s[8:9]10578; GFX900-NEXT:    ;;#ASMEND10579; GFX900-NEXT:    s_setpc_b64 s[30:31]10580;10581; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_4_1:10582; GFX90A:       ; %bb.0:10583; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10584; GFX90A-NEXT:    ;;#ASMSTART10585; GFX90A-NEXT:    ; def s[4:5]10586; GFX90A-NEXT:    ;;#ASMEND10587; GFX90A-NEXT:    ;;#ASMSTART10588; GFX90A-NEXT:    ; def s[6:7]10589; GFX90A-NEXT:    ;;#ASMEND10590; GFX90A-NEXT:    s_lshr_b32 s5, s7, 1610591; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s610592; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1610593; GFX90A-NEXT:    ;;#ASMSTART10594; GFX90A-NEXT:    ; use s[8:9]10595; GFX90A-NEXT:    ;;#ASMEND10596; GFX90A-NEXT:    s_setpc_b64 s[30:31]10597;10598; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_4_1:10599; GFX942:       ; %bb.0:10600; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10601; GFX942-NEXT:    ;;#ASMSTART10602; GFX942-NEXT:    ; def s[0:1]10603; GFX942-NEXT:    ;;#ASMEND10604; GFX942-NEXT:    ;;#ASMSTART10605; GFX942-NEXT:    ; def s[2:3]10606; GFX942-NEXT:    ;;#ASMEND10607; GFX942-NEXT:    s_lshr_b32 s1, s3, 1610608; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s210609; GFX942-NEXT:    s_lshr_b32 s9, s0, 1610610; GFX942-NEXT:    ;;#ASMSTART10611; GFX942-NEXT:    ; use s[8:9]10612; GFX942-NEXT:    ;;#ASMEND10613; GFX942-NEXT:    s_setpc_b64 s[30:31]10614  %vec0 = call <4 x half> asm "; def $0", "=s"()10615  %vec1 = call <4 x half> asm "; def $0", "=s"()10616  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 4, i32 1>10617  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10618  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)10619  ret void10620}10621 10622define void @s_shuffle_v3f16_v4f16__7_5_1() {10623; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_5_1:10624; GFX900:       ; %bb.0:10625; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10626; GFX900-NEXT:    ;;#ASMSTART10627; GFX900-NEXT:    ; def s[4:5]10628; GFX900-NEXT:    ;;#ASMEND10629; GFX900-NEXT:    ;;#ASMSTART10630; GFX900-NEXT:    ; def s[6:7]10631; GFX900-NEXT:    ;;#ASMEND10632; GFX900-NEXT:    s_lshr_b32 s5, s6, 1610633; GFX900-NEXT:    s_lshr_b32 s6, s7, 1610634; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s6, s510635; GFX900-NEXT:    s_lshr_b32 s9, s4, 1610636; GFX900-NEXT:    ;;#ASMSTART10637; GFX900-NEXT:    ; use s[8:9]10638; GFX900-NEXT:    ;;#ASMEND10639; GFX900-NEXT:    s_setpc_b64 s[30:31]10640;10641; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_5_1:10642; GFX90A:       ; %bb.0:10643; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10644; GFX90A-NEXT:    ;;#ASMSTART10645; GFX90A-NEXT:    ; def s[4:5]10646; GFX90A-NEXT:    ;;#ASMEND10647; GFX90A-NEXT:    ;;#ASMSTART10648; GFX90A-NEXT:    ; def s[6:7]10649; GFX90A-NEXT:    ;;#ASMEND10650; GFX90A-NEXT:    s_lshr_b32 s5, s6, 1610651; GFX90A-NEXT:    s_lshr_b32 s6, s7, 1610652; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s6, s510653; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1610654; GFX90A-NEXT:    ;;#ASMSTART10655; GFX90A-NEXT:    ; use s[8:9]10656; GFX90A-NEXT:    ;;#ASMEND10657; GFX90A-NEXT:    s_setpc_b64 s[30:31]10658;10659; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_5_1:10660; GFX942:       ; %bb.0:10661; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10662; GFX942-NEXT:    ;;#ASMSTART10663; GFX942-NEXT:    ; def s[0:1]10664; GFX942-NEXT:    ;;#ASMEND10665; GFX942-NEXT:    ;;#ASMSTART10666; GFX942-NEXT:    ; def s[2:3]10667; GFX942-NEXT:    ;;#ASMEND10668; GFX942-NEXT:    s_lshr_b32 s1, s2, 1610669; GFX942-NEXT:    s_lshr_b32 s2, s3, 1610670; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s2, s110671; GFX942-NEXT:    s_lshr_b32 s9, s0, 1610672; GFX942-NEXT:    ;;#ASMSTART10673; GFX942-NEXT:    ; use s[8:9]10674; GFX942-NEXT:    ;;#ASMEND10675; GFX942-NEXT:    s_setpc_b64 s[30:31]10676  %vec0 = call <4 x half> asm "; def $0", "=s"()10677  %vec1 = call <4 x half> asm "; def $0", "=s"()10678  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 5, i32 1>10679  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10680  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)10681  ret void10682}10683 10684define void @s_shuffle_v3f16_v4f16__7_6_1() {10685; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_6_1:10686; GFX900:       ; %bb.0:10687; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10688; GFX900-NEXT:    ;;#ASMSTART10689; GFX900-NEXT:    ; def s[4:5]10690; GFX900-NEXT:    ;;#ASMEND10691; GFX900-NEXT:    ;;#ASMSTART10692; GFX900-NEXT:    ; def s[6:7]10693; GFX900-NEXT:    ;;#ASMEND10694; GFX900-NEXT:    s_lshr_b32 s5, s7, 1610695; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s710696; GFX900-NEXT:    s_lshr_b32 s9, s4, 1610697; GFX900-NEXT:    ;;#ASMSTART10698; GFX900-NEXT:    ; use s[8:9]10699; GFX900-NEXT:    ;;#ASMEND10700; GFX900-NEXT:    s_setpc_b64 s[30:31]10701;10702; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_6_1:10703; GFX90A:       ; %bb.0:10704; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10705; GFX90A-NEXT:    ;;#ASMSTART10706; GFX90A-NEXT:    ; def s[4:5]10707; GFX90A-NEXT:    ;;#ASMEND10708; GFX90A-NEXT:    ;;#ASMSTART10709; GFX90A-NEXT:    ; def s[6:7]10710; GFX90A-NEXT:    ;;#ASMEND10711; GFX90A-NEXT:    s_lshr_b32 s5, s7, 1610712; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s710713; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1610714; GFX90A-NEXT:    ;;#ASMSTART10715; GFX90A-NEXT:    ; use s[8:9]10716; GFX90A-NEXT:    ;;#ASMEND10717; GFX90A-NEXT:    s_setpc_b64 s[30:31]10718;10719; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_6_1:10720; GFX942:       ; %bb.0:10721; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10722; GFX942-NEXT:    ;;#ASMSTART10723; GFX942-NEXT:    ; def s[0:1]10724; GFX942-NEXT:    ;;#ASMEND10725; GFX942-NEXT:    ;;#ASMSTART10726; GFX942-NEXT:    ; def s[2:3]10727; GFX942-NEXT:    ;;#ASMEND10728; GFX942-NEXT:    s_lshr_b32 s1, s3, 1610729; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s310730; GFX942-NEXT:    s_lshr_b32 s9, s0, 1610731; GFX942-NEXT:    ;;#ASMSTART10732; GFX942-NEXT:    ; use s[8:9]10733; GFX942-NEXT:    ;;#ASMEND10734; GFX942-NEXT:    s_setpc_b64 s[30:31]10735  %vec0 = call <4 x half> asm "; def $0", "=s"()10736  %vec1 = call <4 x half> asm "; def $0", "=s"()10737  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 6, i32 1>10738  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10739  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)10740  ret void10741}10742 10743define void @s_shuffle_v3f16_v4f16__u_2_2() {10744; GFX9-LABEL: s_shuffle_v3f16_v4f16__u_2_2:10745; GFX9:       ; %bb.0:10746; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10747; GFX9-NEXT:    ;;#ASMSTART10748; GFX9-NEXT:    ; def s[8:9]10749; GFX9-NEXT:    ;;#ASMEND10750; GFX9-NEXT:    s_lshl_b32 s8, s9, 1610751; GFX9-NEXT:    ;;#ASMSTART10752; GFX9-NEXT:    ; use s[8:9]10753; GFX9-NEXT:    ;;#ASMEND10754; GFX9-NEXT:    s_setpc_b64 s[30:31]10755  %vec0 = call <4 x half> asm "; def $0", "=s"()10756  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 poison, i32 2, i32 2>10757  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10758  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)10759  ret void10760}10761 10762define void @s_shuffle_v3f16_v4f16__0_2_2() {10763; GFX9-LABEL: s_shuffle_v3f16_v4f16__0_2_2:10764; GFX9:       ; %bb.0:10765; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10766; GFX9-NEXT:    ;;#ASMSTART10767; GFX9-NEXT:    ; def s[8:9]10768; GFX9-NEXT:    ;;#ASMEND10769; GFX9-NEXT:    s_pack_ll_b32_b16 s8, s8, s910770; GFX9-NEXT:    ;;#ASMSTART10771; GFX9-NEXT:    ; use s[8:9]10772; GFX9-NEXT:    ;;#ASMEND10773; GFX9-NEXT:    s_setpc_b64 s[30:31]10774  %vec0 = call <4 x half> asm "; def $0", "=s"()10775  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 0, i32 2, i32 2>10776  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10777  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)10778  ret void10779}10780 10781define void @s_shuffle_v3f16_v4f16__1_2_2() {10782; GFX900-LABEL: s_shuffle_v3f16_v4f16__1_2_2:10783; GFX900:       ; %bb.0:10784; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10785; GFX900-NEXT:    ;;#ASMSTART10786; GFX900-NEXT:    ; def s[8:9]10787; GFX900-NEXT:    ;;#ASMEND10788; GFX900-NEXT:    s_lshr_b32 s4, s8, 1610789; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s910790; GFX900-NEXT:    ;;#ASMSTART10791; GFX900-NEXT:    ; use s[8:9]10792; GFX900-NEXT:    ;;#ASMEND10793; GFX900-NEXT:    s_setpc_b64 s[30:31]10794;10795; GFX90A-LABEL: s_shuffle_v3f16_v4f16__1_2_2:10796; GFX90A:       ; %bb.0:10797; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10798; GFX90A-NEXT:    ;;#ASMSTART10799; GFX90A-NEXT:    ; def s[8:9]10800; GFX90A-NEXT:    ;;#ASMEND10801; GFX90A-NEXT:    s_lshr_b32 s4, s8, 1610802; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s910803; GFX90A-NEXT:    ;;#ASMSTART10804; GFX90A-NEXT:    ; use s[8:9]10805; GFX90A-NEXT:    ;;#ASMEND10806; GFX90A-NEXT:    s_setpc_b64 s[30:31]10807;10808; GFX942-LABEL: s_shuffle_v3f16_v4f16__1_2_2:10809; GFX942:       ; %bb.0:10810; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10811; GFX942-NEXT:    ;;#ASMSTART10812; GFX942-NEXT:    ; def s[8:9]10813; GFX942-NEXT:    ;;#ASMEND10814; GFX942-NEXT:    s_lshr_b32 s0, s8, 1610815; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s910816; GFX942-NEXT:    ;;#ASMSTART10817; GFX942-NEXT:    ; use s[8:9]10818; GFX942-NEXT:    ;;#ASMEND10819; GFX942-NEXT:    s_setpc_b64 s[30:31]10820  %vec0 = call <4 x half> asm "; def $0", "=s"()10821  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 1, i32 2, i32 2>10822  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10823  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)10824  ret void10825}10826 10827define void @s_shuffle_v3f16_v4f16__2_2_2() {10828; GFX9-LABEL: s_shuffle_v3f16_v4f16__2_2_2:10829; GFX9:       ; %bb.0:10830; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10831; GFX9-NEXT:    ;;#ASMSTART10832; GFX9-NEXT:    ; def s[8:9]10833; GFX9-NEXT:    ;;#ASMEND10834; GFX9-NEXT:    s_pack_ll_b32_b16 s8, s9, s910835; GFX9-NEXT:    ;;#ASMSTART10836; GFX9-NEXT:    ; use s[8:9]10837; GFX9-NEXT:    ;;#ASMEND10838; GFX9-NEXT:    s_setpc_b64 s[30:31]10839  %vec0 = call <4 x half> asm "; def $0", "=s"()10840  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 2, i32 2, i32 2>10841  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10842  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)10843  ret void10844}10845 10846define void @s_shuffle_v3f16_v4f16__3_2_2() {10847; GFX900-LABEL: s_shuffle_v3f16_v4f16__3_2_2:10848; GFX900:       ; %bb.0:10849; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10850; GFX900-NEXT:    ;;#ASMSTART10851; GFX900-NEXT:    ; def s[8:9]10852; GFX900-NEXT:    ;;#ASMEND10853; GFX900-NEXT:    s_lshr_b32 s4, s9, 1610854; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s910855; GFX900-NEXT:    ;;#ASMSTART10856; GFX900-NEXT:    ; use s[8:9]10857; GFX900-NEXT:    ;;#ASMEND10858; GFX900-NEXT:    s_setpc_b64 s[30:31]10859;10860; GFX90A-LABEL: s_shuffle_v3f16_v4f16__3_2_2:10861; GFX90A:       ; %bb.0:10862; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10863; GFX90A-NEXT:    ;;#ASMSTART10864; GFX90A-NEXT:    ; def s[8:9]10865; GFX90A-NEXT:    ;;#ASMEND10866; GFX90A-NEXT:    s_lshr_b32 s4, s9, 1610867; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s910868; GFX90A-NEXT:    ;;#ASMSTART10869; GFX90A-NEXT:    ; use s[8:9]10870; GFX90A-NEXT:    ;;#ASMEND10871; GFX90A-NEXT:    s_setpc_b64 s[30:31]10872;10873; GFX942-LABEL: s_shuffle_v3f16_v4f16__3_2_2:10874; GFX942:       ; %bb.0:10875; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10876; GFX942-NEXT:    ;;#ASMSTART10877; GFX942-NEXT:    ; def s[8:9]10878; GFX942-NEXT:    ;;#ASMEND10879; GFX942-NEXT:    s_lshr_b32 s0, s9, 1610880; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s910881; GFX942-NEXT:    ;;#ASMSTART10882; GFX942-NEXT:    ; use s[8:9]10883; GFX942-NEXT:    ;;#ASMEND10884; GFX942-NEXT:    s_setpc_b64 s[30:31]10885  %vec0 = call <4 x half> asm "; def $0", "=s"()10886  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 3, i32 2, i32 2>10887  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10888  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)10889  ret void10890}10891 10892define void @s_shuffle_v3f16_v4f16__4_2_2() {10893; GFX9-LABEL: s_shuffle_v3f16_v4f16__4_2_2:10894; GFX9:       ; %bb.0:10895; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10896; GFX9-NEXT:    ;;#ASMSTART10897; GFX9-NEXT:    ; def s[8:9]10898; GFX9-NEXT:    ;;#ASMEND10899; GFX9-NEXT:    s_lshl_b32 s8, s9, 1610900; GFX9-NEXT:    ;;#ASMSTART10901; GFX9-NEXT:    ; use s[8:9]10902; GFX9-NEXT:    ;;#ASMEND10903; GFX9-NEXT:    s_setpc_b64 s[30:31]10904  %vec0 = call <4 x half> asm "; def $0", "=s"()10905  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 4, i32 2, i32 2>10906  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10907  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)10908  ret void10909}10910 10911define void @s_shuffle_v3f16_v4f16__5_2_2() {10912; GFX900-LABEL: s_shuffle_v3f16_v4f16__5_2_2:10913; GFX900:       ; %bb.0:10914; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10915; GFX900-NEXT:    ;;#ASMSTART10916; GFX900-NEXT:    ; def s[4:5]10917; GFX900-NEXT:    ;;#ASMEND10918; GFX900-NEXT:    ;;#ASMSTART10919; GFX900-NEXT:    ; def s[8:9]10920; GFX900-NEXT:    ;;#ASMEND10921; GFX900-NEXT:    s_lshr_b32 s4, s4, 1610922; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s910923; GFX900-NEXT:    ;;#ASMSTART10924; GFX900-NEXT:    ; use s[8:9]10925; GFX900-NEXT:    ;;#ASMEND10926; GFX900-NEXT:    s_setpc_b64 s[30:31]10927;10928; GFX90A-LABEL: s_shuffle_v3f16_v4f16__5_2_2:10929; GFX90A:       ; %bb.0:10930; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10931; GFX90A-NEXT:    ;;#ASMSTART10932; GFX90A-NEXT:    ; def s[4:5]10933; GFX90A-NEXT:    ;;#ASMEND10934; GFX90A-NEXT:    ;;#ASMSTART10935; GFX90A-NEXT:    ; def s[8:9]10936; GFX90A-NEXT:    ;;#ASMEND10937; GFX90A-NEXT:    s_lshr_b32 s4, s4, 1610938; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s910939; GFX90A-NEXT:    ;;#ASMSTART10940; GFX90A-NEXT:    ; use s[8:9]10941; GFX90A-NEXT:    ;;#ASMEND10942; GFX90A-NEXT:    s_setpc_b64 s[30:31]10943;10944; GFX942-LABEL: s_shuffle_v3f16_v4f16__5_2_2:10945; GFX942:       ; %bb.0:10946; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10947; GFX942-NEXT:    ;;#ASMSTART10948; GFX942-NEXT:    ; def s[0:1]10949; GFX942-NEXT:    ;;#ASMEND10950; GFX942-NEXT:    ;;#ASMSTART10951; GFX942-NEXT:    ; def s[8:9]10952; GFX942-NEXT:    ;;#ASMEND10953; GFX942-NEXT:    s_lshr_b32 s0, s0, 1610954; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s910955; GFX942-NEXT:    ;;#ASMSTART10956; GFX942-NEXT:    ; use s[8:9]10957; GFX942-NEXT:    ;;#ASMEND10958; GFX942-NEXT:    s_setpc_b64 s[30:31]10959  %vec0 = call <4 x half> asm "; def $0", "=s"()10960  %vec1 = call <4 x half> asm "; def $0", "=s"()10961  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 5, i32 2, i32 2>10962  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>10963  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)10964  ret void10965}10966 10967define void @s_shuffle_v3f16_v4f16__6_2_2() {10968; GFX900-LABEL: s_shuffle_v3f16_v4f16__6_2_2:10969; GFX900:       ; %bb.0:10970; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10971; GFX900-NEXT:    ;;#ASMSTART10972; GFX900-NEXT:    ; def s[8:9]10973; GFX900-NEXT:    ;;#ASMEND10974; GFX900-NEXT:    ;;#ASMSTART10975; GFX900-NEXT:    ; def s[4:5]10976; GFX900-NEXT:    ;;#ASMEND10977; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s910978; GFX900-NEXT:    ;;#ASMSTART10979; GFX900-NEXT:    ; use s[8:9]10980; GFX900-NEXT:    ;;#ASMEND10981; GFX900-NEXT:    s_setpc_b64 s[30:31]10982;10983; GFX90A-LABEL: s_shuffle_v3f16_v4f16__6_2_2:10984; GFX90A:       ; %bb.0:10985; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10986; GFX90A-NEXT:    ;;#ASMSTART10987; GFX90A-NEXT:    ; def s[8:9]10988; GFX90A-NEXT:    ;;#ASMEND10989; GFX90A-NEXT:    ;;#ASMSTART10990; GFX90A-NEXT:    ; def s[4:5]10991; GFX90A-NEXT:    ;;#ASMEND10992; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s910993; GFX90A-NEXT:    ;;#ASMSTART10994; GFX90A-NEXT:    ; use s[8:9]10995; GFX90A-NEXT:    ;;#ASMEND10996; GFX90A-NEXT:    s_setpc_b64 s[30:31]10997;10998; GFX942-LABEL: s_shuffle_v3f16_v4f16__6_2_2:10999; GFX942:       ; %bb.0:11000; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11001; GFX942-NEXT:    ;;#ASMSTART11002; GFX942-NEXT:    ; def s[8:9]11003; GFX942-NEXT:    ;;#ASMEND11004; GFX942-NEXT:    ;;#ASMSTART11005; GFX942-NEXT:    ; def s[0:1]11006; GFX942-NEXT:    ;;#ASMEND11007; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s911008; GFX942-NEXT:    ;;#ASMSTART11009; GFX942-NEXT:    ; use s[8:9]11010; GFX942-NEXT:    ;;#ASMEND11011; GFX942-NEXT:    s_setpc_b64 s[30:31]11012  %vec0 = call <4 x half> asm "; def $0", "=s"()11013  %vec1 = call <4 x half> asm "; def $0", "=s"()11014  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 6, i32 2, i32 2>11015  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11016  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)11017  ret void11018}11019 11020define void @s_shuffle_v3f16_v4f16__7_2_2() {11021; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_2_2:11022; GFX900:       ; %bb.0:11023; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11024; GFX900-NEXT:    ;;#ASMSTART11025; GFX900-NEXT:    ; def s[4:5]11026; GFX900-NEXT:    ;;#ASMEND11027; GFX900-NEXT:    ;;#ASMSTART11028; GFX900-NEXT:    ; def s[8:9]11029; GFX900-NEXT:    ;;#ASMEND11030; GFX900-NEXT:    s_lshr_b32 s4, s5, 1611031; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s911032; GFX900-NEXT:    ;;#ASMSTART11033; GFX900-NEXT:    ; use s[8:9]11034; GFX900-NEXT:    ;;#ASMEND11035; GFX900-NEXT:    s_setpc_b64 s[30:31]11036;11037; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_2_2:11038; GFX90A:       ; %bb.0:11039; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11040; GFX90A-NEXT:    ;;#ASMSTART11041; GFX90A-NEXT:    ; def s[4:5]11042; GFX90A-NEXT:    ;;#ASMEND11043; GFX90A-NEXT:    ;;#ASMSTART11044; GFX90A-NEXT:    ; def s[8:9]11045; GFX90A-NEXT:    ;;#ASMEND11046; GFX90A-NEXT:    s_lshr_b32 s4, s5, 1611047; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s911048; GFX90A-NEXT:    ;;#ASMSTART11049; GFX90A-NEXT:    ; use s[8:9]11050; GFX90A-NEXT:    ;;#ASMEND11051; GFX90A-NEXT:    s_setpc_b64 s[30:31]11052;11053; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_2_2:11054; GFX942:       ; %bb.0:11055; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11056; GFX942-NEXT:    ;;#ASMSTART11057; GFX942-NEXT:    ; def s[0:1]11058; GFX942-NEXT:    ;;#ASMEND11059; GFX942-NEXT:    ;;#ASMSTART11060; GFX942-NEXT:    ; def s[8:9]11061; GFX942-NEXT:    ;;#ASMEND11062; GFX942-NEXT:    s_lshr_b32 s0, s1, 1611063; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s911064; GFX942-NEXT:    ;;#ASMSTART11065; GFX942-NEXT:    ; use s[8:9]11066; GFX942-NEXT:    ;;#ASMEND11067; GFX942-NEXT:    s_setpc_b64 s[30:31]11068  %vec0 = call <4 x half> asm "; def $0", "=s"()11069  %vec1 = call <4 x half> asm "; def $0", "=s"()11070  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 2, i32 2>11071  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11072  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)11073  ret void11074}11075 11076define void @s_shuffle_v3f16_v4f16__7_u_2() {11077; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_u_2:11078; GFX900:       ; %bb.0:11079; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11080; GFX900-NEXT:    ;;#ASMSTART11081; GFX900-NEXT:    ; def s[8:9]11082; GFX900-NEXT:    ;;#ASMEND11083; GFX900-NEXT:    ;;#ASMSTART11084; GFX900-NEXT:    ; def s[4:5]11085; GFX900-NEXT:    ;;#ASMEND11086; GFX900-NEXT:    s_lshr_b32 s8, s5, 1611087; GFX900-NEXT:    ;;#ASMSTART11088; GFX900-NEXT:    ; use s[8:9]11089; GFX900-NEXT:    ;;#ASMEND11090; GFX900-NEXT:    s_setpc_b64 s[30:31]11091;11092; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_u_2:11093; GFX90A:       ; %bb.0:11094; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11095; GFX90A-NEXT:    ;;#ASMSTART11096; GFX90A-NEXT:    ; def s[8:9]11097; GFX90A-NEXT:    ;;#ASMEND11098; GFX90A-NEXT:    ;;#ASMSTART11099; GFX90A-NEXT:    ; def s[4:5]11100; GFX90A-NEXT:    ;;#ASMEND11101; GFX90A-NEXT:    s_lshr_b32 s8, s5, 1611102; GFX90A-NEXT:    ;;#ASMSTART11103; GFX90A-NEXT:    ; use s[8:9]11104; GFX90A-NEXT:    ;;#ASMEND11105; GFX90A-NEXT:    s_setpc_b64 s[30:31]11106;11107; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_u_2:11108; GFX942:       ; %bb.0:11109; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11110; GFX942-NEXT:    ;;#ASMSTART11111; GFX942-NEXT:    ; def s[8:9]11112; GFX942-NEXT:    ;;#ASMEND11113; GFX942-NEXT:    ;;#ASMSTART11114; GFX942-NEXT:    ; def s[0:1]11115; GFX942-NEXT:    ;;#ASMEND11116; GFX942-NEXT:    s_lshr_b32 s8, s1, 1611117; GFX942-NEXT:    ;;#ASMSTART11118; GFX942-NEXT:    ; use s[8:9]11119; GFX942-NEXT:    ;;#ASMEND11120; GFX942-NEXT:    s_setpc_b64 s[30:31]11121  %vec0 = call <4 x half> asm "; def $0", "=s"()11122  %vec1 = call <4 x half> asm "; def $0", "=s"()11123  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 poison, i32 2>11124  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11125  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)11126  ret void11127}11128 11129define void @s_shuffle_v3f16_v4f16__7_0_2() {11130; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_0_2:11131; GFX900:       ; %bb.0:11132; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11133; GFX900-NEXT:    ;;#ASMSTART11134; GFX900-NEXT:    ; def s[4:5]11135; GFX900-NEXT:    ;;#ASMEND11136; GFX900-NEXT:    ;;#ASMSTART11137; GFX900-NEXT:    ; def s[8:9]11138; GFX900-NEXT:    ;;#ASMEND11139; GFX900-NEXT:    s_lshr_b32 s4, s5, 1611140; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s811141; GFX900-NEXT:    ;;#ASMSTART11142; GFX900-NEXT:    ; use s[8:9]11143; GFX900-NEXT:    ;;#ASMEND11144; GFX900-NEXT:    s_setpc_b64 s[30:31]11145;11146; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_0_2:11147; GFX90A:       ; %bb.0:11148; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11149; GFX90A-NEXT:    ;;#ASMSTART11150; GFX90A-NEXT:    ; def s[4:5]11151; GFX90A-NEXT:    ;;#ASMEND11152; GFX90A-NEXT:    ;;#ASMSTART11153; GFX90A-NEXT:    ; def s[8:9]11154; GFX90A-NEXT:    ;;#ASMEND11155; GFX90A-NEXT:    s_lshr_b32 s4, s5, 1611156; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s811157; GFX90A-NEXT:    ;;#ASMSTART11158; GFX90A-NEXT:    ; use s[8:9]11159; GFX90A-NEXT:    ;;#ASMEND11160; GFX90A-NEXT:    s_setpc_b64 s[30:31]11161;11162; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_0_2:11163; GFX942:       ; %bb.0:11164; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11165; GFX942-NEXT:    ;;#ASMSTART11166; GFX942-NEXT:    ; def s[0:1]11167; GFX942-NEXT:    ;;#ASMEND11168; GFX942-NEXT:    ;;#ASMSTART11169; GFX942-NEXT:    ; def s[8:9]11170; GFX942-NEXT:    ;;#ASMEND11171; GFX942-NEXT:    s_lshr_b32 s0, s1, 1611172; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s811173; GFX942-NEXT:    ;;#ASMSTART11174; GFX942-NEXT:    ; use s[8:9]11175; GFX942-NEXT:    ;;#ASMEND11176; GFX942-NEXT:    s_setpc_b64 s[30:31]11177  %vec0 = call <4 x half> asm "; def $0", "=s"()11178  %vec1 = call <4 x half> asm "; def $0", "=s"()11179  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 0, i32 2>11180  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11181  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)11182  ret void11183}11184 11185define void @s_shuffle_v3f16_v4f16__7_1_2() {11186; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_1_2:11187; GFX900:       ; %bb.0:11188; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11189; GFX900-NEXT:    ;;#ASMSTART11190; GFX900-NEXT:    ; def s[4:5]11191; GFX900-NEXT:    ;;#ASMEND11192; GFX900-NEXT:    ;;#ASMSTART11193; GFX900-NEXT:    ; def s[8:9]11194; GFX900-NEXT:    ;;#ASMEND11195; GFX900-NEXT:    s_lshr_b32 s4, s8, 1611196; GFX900-NEXT:    s_lshr_b32 s5, s5, 1611197; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s411198; GFX900-NEXT:    ;;#ASMSTART11199; GFX900-NEXT:    ; use s[8:9]11200; GFX900-NEXT:    ;;#ASMEND11201; GFX900-NEXT:    s_setpc_b64 s[30:31]11202;11203; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_1_2:11204; GFX90A:       ; %bb.0:11205; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11206; GFX90A-NEXT:    ;;#ASMSTART11207; GFX90A-NEXT:    ; def s[4:5]11208; GFX90A-NEXT:    ;;#ASMEND11209; GFX90A-NEXT:    ;;#ASMSTART11210; GFX90A-NEXT:    ; def s[8:9]11211; GFX90A-NEXT:    ;;#ASMEND11212; GFX90A-NEXT:    s_lshr_b32 s4, s8, 1611213; GFX90A-NEXT:    s_lshr_b32 s5, s5, 1611214; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s411215; GFX90A-NEXT:    ;;#ASMSTART11216; GFX90A-NEXT:    ; use s[8:9]11217; GFX90A-NEXT:    ;;#ASMEND11218; GFX90A-NEXT:    s_setpc_b64 s[30:31]11219;11220; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_1_2:11221; GFX942:       ; %bb.0:11222; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11223; GFX942-NEXT:    ;;#ASMSTART11224; GFX942-NEXT:    ; def s[0:1]11225; GFX942-NEXT:    ;;#ASMEND11226; GFX942-NEXT:    ;;#ASMSTART11227; GFX942-NEXT:    ; def s[8:9]11228; GFX942-NEXT:    ;;#ASMEND11229; GFX942-NEXT:    s_lshr_b32 s0, s8, 1611230; GFX942-NEXT:    s_lshr_b32 s1, s1, 1611231; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s011232; GFX942-NEXT:    ;;#ASMSTART11233; GFX942-NEXT:    ; use s[8:9]11234; GFX942-NEXT:    ;;#ASMEND11235; GFX942-NEXT:    s_setpc_b64 s[30:31]11236  %vec0 = call <4 x half> asm "; def $0", "=s"()11237  %vec1 = call <4 x half> asm "; def $0", "=s"()11238  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 1, i32 2>11239  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11240  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)11241  ret void11242}11243 11244define void @s_shuffle_v3f16_v4f16__7_3_2() {11245; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_3_2:11246; GFX900:       ; %bb.0:11247; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11248; GFX900-NEXT:    ;;#ASMSTART11249; GFX900-NEXT:    ; def s[4:5]11250; GFX900-NEXT:    ;;#ASMEND11251; GFX900-NEXT:    ;;#ASMSTART11252; GFX900-NEXT:    ; def s[8:9]11253; GFX900-NEXT:    ;;#ASMEND11254; GFX900-NEXT:    s_lshr_b32 s4, s9, 1611255; GFX900-NEXT:    s_lshr_b32 s5, s5, 1611256; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s411257; GFX900-NEXT:    ;;#ASMSTART11258; GFX900-NEXT:    ; use s[8:9]11259; GFX900-NEXT:    ;;#ASMEND11260; GFX900-NEXT:    s_setpc_b64 s[30:31]11261;11262; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_3_2:11263; GFX90A:       ; %bb.0:11264; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11265; GFX90A-NEXT:    ;;#ASMSTART11266; GFX90A-NEXT:    ; def s[4:5]11267; GFX90A-NEXT:    ;;#ASMEND11268; GFX90A-NEXT:    ;;#ASMSTART11269; GFX90A-NEXT:    ; def s[8:9]11270; GFX90A-NEXT:    ;;#ASMEND11271; GFX90A-NEXT:    s_lshr_b32 s4, s9, 1611272; GFX90A-NEXT:    s_lshr_b32 s5, s5, 1611273; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s411274; GFX90A-NEXT:    ;;#ASMSTART11275; GFX90A-NEXT:    ; use s[8:9]11276; GFX90A-NEXT:    ;;#ASMEND11277; GFX90A-NEXT:    s_setpc_b64 s[30:31]11278;11279; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_3_2:11280; GFX942:       ; %bb.0:11281; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11282; GFX942-NEXT:    ;;#ASMSTART11283; GFX942-NEXT:    ; def s[0:1]11284; GFX942-NEXT:    ;;#ASMEND11285; GFX942-NEXT:    ;;#ASMSTART11286; GFX942-NEXT:    ; def s[8:9]11287; GFX942-NEXT:    ;;#ASMEND11288; GFX942-NEXT:    s_lshr_b32 s0, s9, 1611289; GFX942-NEXT:    s_lshr_b32 s1, s1, 1611290; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s011291; GFX942-NEXT:    ;;#ASMSTART11292; GFX942-NEXT:    ; use s[8:9]11293; GFX942-NEXT:    ;;#ASMEND11294; GFX942-NEXT:    s_setpc_b64 s[30:31]11295  %vec0 = call <4 x half> asm "; def $0", "=s"()11296  %vec1 = call <4 x half> asm "; def $0", "=s"()11297  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 3, i32 2>11298  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11299  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)11300  ret void11301}11302 11303define void @s_shuffle_v3f16_v4f16__7_4_2() {11304; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_4_2:11305; GFX900:       ; %bb.0:11306; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11307; GFX900-NEXT:    ;;#ASMSTART11308; GFX900-NEXT:    ; def s[4:5]11309; GFX900-NEXT:    ;;#ASMEND11310; GFX900-NEXT:    ;;#ASMSTART11311; GFX900-NEXT:    ; def s[8:9]11312; GFX900-NEXT:    ;;#ASMEND11313; GFX900-NEXT:    s_lshr_b32 s5, s5, 1611314; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s411315; GFX900-NEXT:    ;;#ASMSTART11316; GFX900-NEXT:    ; use s[8:9]11317; GFX900-NEXT:    ;;#ASMEND11318; GFX900-NEXT:    s_setpc_b64 s[30:31]11319;11320; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_4_2:11321; GFX90A:       ; %bb.0:11322; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11323; GFX90A-NEXT:    ;;#ASMSTART11324; GFX90A-NEXT:    ; def s[4:5]11325; GFX90A-NEXT:    ;;#ASMEND11326; GFX90A-NEXT:    ;;#ASMSTART11327; GFX90A-NEXT:    ; def s[8:9]11328; GFX90A-NEXT:    ;;#ASMEND11329; GFX90A-NEXT:    s_lshr_b32 s5, s5, 1611330; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s411331; GFX90A-NEXT:    ;;#ASMSTART11332; GFX90A-NEXT:    ; use s[8:9]11333; GFX90A-NEXT:    ;;#ASMEND11334; GFX90A-NEXT:    s_setpc_b64 s[30:31]11335;11336; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_4_2:11337; GFX942:       ; %bb.0:11338; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11339; GFX942-NEXT:    ;;#ASMSTART11340; GFX942-NEXT:    ; def s[0:1]11341; GFX942-NEXT:    ;;#ASMEND11342; GFX942-NEXT:    ;;#ASMSTART11343; GFX942-NEXT:    ; def s[8:9]11344; GFX942-NEXT:    ;;#ASMEND11345; GFX942-NEXT:    s_lshr_b32 s1, s1, 1611346; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s011347; GFX942-NEXT:    ;;#ASMSTART11348; GFX942-NEXT:    ; use s[8:9]11349; GFX942-NEXT:    ;;#ASMEND11350; GFX942-NEXT:    s_setpc_b64 s[30:31]11351  %vec0 = call <4 x half> asm "; def $0", "=s"()11352  %vec1 = call <4 x half> asm "; def $0", "=s"()11353  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 4, i32 2>11354  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11355  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)11356  ret void11357}11358 11359define void @s_shuffle_v3f16_v4f16__7_5_2() {11360; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_5_2:11361; GFX900:       ; %bb.0:11362; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11363; GFX900-NEXT:    ;;#ASMSTART11364; GFX900-NEXT:    ; def s[4:5]11365; GFX900-NEXT:    ;;#ASMEND11366; GFX900-NEXT:    ;;#ASMSTART11367; GFX900-NEXT:    ; def s[8:9]11368; GFX900-NEXT:    ;;#ASMEND11369; GFX900-NEXT:    s_lshr_b32 s4, s4, 1611370; GFX900-NEXT:    s_lshr_b32 s5, s5, 1611371; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s411372; GFX900-NEXT:    ;;#ASMSTART11373; GFX900-NEXT:    ; use s[8:9]11374; GFX900-NEXT:    ;;#ASMEND11375; GFX900-NEXT:    s_setpc_b64 s[30:31]11376;11377; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_5_2:11378; GFX90A:       ; %bb.0:11379; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11380; GFX90A-NEXT:    ;;#ASMSTART11381; GFX90A-NEXT:    ; def s[4:5]11382; GFX90A-NEXT:    ;;#ASMEND11383; GFX90A-NEXT:    ;;#ASMSTART11384; GFX90A-NEXT:    ; def s[8:9]11385; GFX90A-NEXT:    ;;#ASMEND11386; GFX90A-NEXT:    s_lshr_b32 s4, s4, 1611387; GFX90A-NEXT:    s_lshr_b32 s5, s5, 1611388; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s411389; GFX90A-NEXT:    ;;#ASMSTART11390; GFX90A-NEXT:    ; use s[8:9]11391; GFX90A-NEXT:    ;;#ASMEND11392; GFX90A-NEXT:    s_setpc_b64 s[30:31]11393;11394; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_5_2:11395; GFX942:       ; %bb.0:11396; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11397; GFX942-NEXT:    ;;#ASMSTART11398; GFX942-NEXT:    ; def s[0:1]11399; GFX942-NEXT:    ;;#ASMEND11400; GFX942-NEXT:    ;;#ASMSTART11401; GFX942-NEXT:    ; def s[8:9]11402; GFX942-NEXT:    ;;#ASMEND11403; GFX942-NEXT:    s_lshr_b32 s0, s0, 1611404; GFX942-NEXT:    s_lshr_b32 s1, s1, 1611405; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s011406; GFX942-NEXT:    ;;#ASMSTART11407; GFX942-NEXT:    ; use s[8:9]11408; GFX942-NEXT:    ;;#ASMEND11409; GFX942-NEXT:    s_setpc_b64 s[30:31]11410  %vec0 = call <4 x half> asm "; def $0", "=s"()11411  %vec1 = call <4 x half> asm "; def $0", "=s"()11412  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 5, i32 2>11413  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11414  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)11415  ret void11416}11417 11418define void @s_shuffle_v3f16_v4f16__7_6_2() {11419; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_6_2:11420; GFX900:       ; %bb.0:11421; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11422; GFX900-NEXT:    ;;#ASMSTART11423; GFX900-NEXT:    ; def s[4:5]11424; GFX900-NEXT:    ;;#ASMEND11425; GFX900-NEXT:    ;;#ASMSTART11426; GFX900-NEXT:    ; def s[8:9]11427; GFX900-NEXT:    ;;#ASMEND11428; GFX900-NEXT:    s_lshr_b32 s4, s5, 1611429; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s511430; GFX900-NEXT:    ;;#ASMSTART11431; GFX900-NEXT:    ; use s[8:9]11432; GFX900-NEXT:    ;;#ASMEND11433; GFX900-NEXT:    s_setpc_b64 s[30:31]11434;11435; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_6_2:11436; GFX90A:       ; %bb.0:11437; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11438; GFX90A-NEXT:    ;;#ASMSTART11439; GFX90A-NEXT:    ; def s[4:5]11440; GFX90A-NEXT:    ;;#ASMEND11441; GFX90A-NEXT:    ;;#ASMSTART11442; GFX90A-NEXT:    ; def s[8:9]11443; GFX90A-NEXT:    ;;#ASMEND11444; GFX90A-NEXT:    s_lshr_b32 s4, s5, 1611445; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s511446; GFX90A-NEXT:    ;;#ASMSTART11447; GFX90A-NEXT:    ; use s[8:9]11448; GFX90A-NEXT:    ;;#ASMEND11449; GFX90A-NEXT:    s_setpc_b64 s[30:31]11450;11451; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_6_2:11452; GFX942:       ; %bb.0:11453; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11454; GFX942-NEXT:    ;;#ASMSTART11455; GFX942-NEXT:    ; def s[0:1]11456; GFX942-NEXT:    ;;#ASMEND11457; GFX942-NEXT:    ;;#ASMSTART11458; GFX942-NEXT:    ; def s[8:9]11459; GFX942-NEXT:    ;;#ASMEND11460; GFX942-NEXT:    s_lshr_b32 s0, s1, 1611461; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s111462; GFX942-NEXT:    ;;#ASMSTART11463; GFX942-NEXT:    ; use s[8:9]11464; GFX942-NEXT:    ;;#ASMEND11465; GFX942-NEXT:    s_setpc_b64 s[30:31]11466  %vec0 = call <4 x half> asm "; def $0", "=s"()11467  %vec1 = call <4 x half> asm "; def $0", "=s"()11468  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 6, i32 2>11469  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11470  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)11471  ret void11472}11473 11474define void @s_shuffle_v3f16_v4f16__u_3_3() {11475; GFX900-LABEL: s_shuffle_v3f16_v4f16__u_3_3:11476; GFX900:       ; %bb.0:11477; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11478; GFX900-NEXT:    ;;#ASMSTART11479; GFX900-NEXT:    ; def s[4:5]11480; GFX900-NEXT:    ;;#ASMEND11481; GFX900-NEXT:    s_lshr_b32 s9, s5, 1611482; GFX900-NEXT:    s_mov_b32 s8, s511483; GFX900-NEXT:    ;;#ASMSTART11484; GFX900-NEXT:    ; use s[8:9]11485; GFX900-NEXT:    ;;#ASMEND11486; GFX900-NEXT:    s_setpc_b64 s[30:31]11487;11488; GFX90A-LABEL: s_shuffle_v3f16_v4f16__u_3_3:11489; GFX90A:       ; %bb.0:11490; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11491; GFX90A-NEXT:    ;;#ASMSTART11492; GFX90A-NEXT:    ; def s[4:5]11493; GFX90A-NEXT:    ;;#ASMEND11494; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1611495; GFX90A-NEXT:    s_mov_b32 s8, s511496; GFX90A-NEXT:    ;;#ASMSTART11497; GFX90A-NEXT:    ; use s[8:9]11498; GFX90A-NEXT:    ;;#ASMEND11499; GFX90A-NEXT:    s_setpc_b64 s[30:31]11500;11501; GFX942-LABEL: s_shuffle_v3f16_v4f16__u_3_3:11502; GFX942:       ; %bb.0:11503; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11504; GFX942-NEXT:    ;;#ASMSTART11505; GFX942-NEXT:    ; def s[0:1]11506; GFX942-NEXT:    ;;#ASMEND11507; GFX942-NEXT:    s_lshr_b32 s9, s1, 1611508; GFX942-NEXT:    s_mov_b32 s8, s111509; GFX942-NEXT:    ;;#ASMSTART11510; GFX942-NEXT:    ; use s[8:9]11511; GFX942-NEXT:    ;;#ASMEND11512; GFX942-NEXT:    s_setpc_b64 s[30:31]11513  %vec0 = call <4 x half> asm "; def $0", "=s"()11514  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 poison, i32 3, i32 3>11515  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11516  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)11517  ret void11518}11519 11520define void @s_shuffle_v3f16_v4f16__0_3_3() {11521; GFX900-LABEL: s_shuffle_v3f16_v4f16__0_3_3:11522; GFX900:       ; %bb.0:11523; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11524; GFX900-NEXT:    ;;#ASMSTART11525; GFX900-NEXT:    ; def s[4:5]11526; GFX900-NEXT:    ;;#ASMEND11527; GFX900-NEXT:    s_lshr_b32 s9, s5, 1611528; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s911529; GFX900-NEXT:    ;;#ASMSTART11530; GFX900-NEXT:    ; use s[8:9]11531; GFX900-NEXT:    ;;#ASMEND11532; GFX900-NEXT:    s_setpc_b64 s[30:31]11533;11534; GFX90A-LABEL: s_shuffle_v3f16_v4f16__0_3_3:11535; GFX90A:       ; %bb.0:11536; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11537; GFX90A-NEXT:    ;;#ASMSTART11538; GFX90A-NEXT:    ; def s[4:5]11539; GFX90A-NEXT:    ;;#ASMEND11540; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1611541; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s911542; GFX90A-NEXT:    ;;#ASMSTART11543; GFX90A-NEXT:    ; use s[8:9]11544; GFX90A-NEXT:    ;;#ASMEND11545; GFX90A-NEXT:    s_setpc_b64 s[30:31]11546;11547; GFX942-LABEL: s_shuffle_v3f16_v4f16__0_3_3:11548; GFX942:       ; %bb.0:11549; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11550; GFX942-NEXT:    ;;#ASMSTART11551; GFX942-NEXT:    ; def s[0:1]11552; GFX942-NEXT:    ;;#ASMEND11553; GFX942-NEXT:    s_lshr_b32 s9, s1, 1611554; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s911555; GFX942-NEXT:    ;;#ASMSTART11556; GFX942-NEXT:    ; use s[8:9]11557; GFX942-NEXT:    ;;#ASMEND11558; GFX942-NEXT:    s_setpc_b64 s[30:31]11559  %vec0 = call <4 x half> asm "; def $0", "=s"()11560  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 0, i32 3, i32 3>11561  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11562  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)11563  ret void11564}11565 11566define void @s_shuffle_v3f16_v4f16__1_3_3() {11567; GFX900-LABEL: s_shuffle_v3f16_v4f16__1_3_3:11568; GFX900:       ; %bb.0:11569; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11570; GFX900-NEXT:    ;;#ASMSTART11571; GFX900-NEXT:    ; def s[4:5]11572; GFX900-NEXT:    ;;#ASMEND11573; GFX900-NEXT:    s_lshr_b32 s9, s5, 1611574; GFX900-NEXT:    s_lshr_b32 s4, s4, 1611575; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s911576; GFX900-NEXT:    ;;#ASMSTART11577; GFX900-NEXT:    ; use s[8:9]11578; GFX900-NEXT:    ;;#ASMEND11579; GFX900-NEXT:    s_setpc_b64 s[30:31]11580;11581; GFX90A-LABEL: s_shuffle_v3f16_v4f16__1_3_3:11582; GFX90A:       ; %bb.0:11583; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11584; GFX90A-NEXT:    ;;#ASMSTART11585; GFX90A-NEXT:    ; def s[4:5]11586; GFX90A-NEXT:    ;;#ASMEND11587; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1611588; GFX90A-NEXT:    s_lshr_b32 s4, s4, 1611589; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s911590; GFX90A-NEXT:    ;;#ASMSTART11591; GFX90A-NEXT:    ; use s[8:9]11592; GFX90A-NEXT:    ;;#ASMEND11593; GFX90A-NEXT:    s_setpc_b64 s[30:31]11594;11595; GFX942-LABEL: s_shuffle_v3f16_v4f16__1_3_3:11596; GFX942:       ; %bb.0:11597; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11598; GFX942-NEXT:    ;;#ASMSTART11599; GFX942-NEXT:    ; def s[0:1]11600; GFX942-NEXT:    ;;#ASMEND11601; GFX942-NEXT:    s_lshr_b32 s9, s1, 1611602; GFX942-NEXT:    s_lshr_b32 s0, s0, 1611603; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s911604; GFX942-NEXT:    ;;#ASMSTART11605; GFX942-NEXT:    ; use s[8:9]11606; GFX942-NEXT:    ;;#ASMEND11607; GFX942-NEXT:    s_setpc_b64 s[30:31]11608  %vec0 = call <4 x half> asm "; def $0", "=s"()11609  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 1, i32 3, i32 3>11610  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11611  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)11612  ret void11613}11614 11615define void @s_shuffle_v3f16_v4f16__2_3_3() {11616; GFX900-LABEL: s_shuffle_v3f16_v4f16__2_3_3:11617; GFX900:       ; %bb.0:11618; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11619; GFX900-NEXT:    ;;#ASMSTART11620; GFX900-NEXT:    ; def s[4:5]11621; GFX900-NEXT:    ;;#ASMEND11622; GFX900-NEXT:    s_lshr_b32 s9, s5, 1611623; GFX900-NEXT:    s_mov_b32 s8, s511624; GFX900-NEXT:    ;;#ASMSTART11625; GFX900-NEXT:    ; use s[8:9]11626; GFX900-NEXT:    ;;#ASMEND11627; GFX900-NEXT:    s_setpc_b64 s[30:31]11628;11629; GFX90A-LABEL: s_shuffle_v3f16_v4f16__2_3_3:11630; GFX90A:       ; %bb.0:11631; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11632; GFX90A-NEXT:    ;;#ASMSTART11633; GFX90A-NEXT:    ; def s[4:5]11634; GFX90A-NEXT:    ;;#ASMEND11635; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1611636; GFX90A-NEXT:    s_mov_b32 s8, s511637; GFX90A-NEXT:    ;;#ASMSTART11638; GFX90A-NEXT:    ; use s[8:9]11639; GFX90A-NEXT:    ;;#ASMEND11640; GFX90A-NEXT:    s_setpc_b64 s[30:31]11641;11642; GFX942-LABEL: s_shuffle_v3f16_v4f16__2_3_3:11643; GFX942:       ; %bb.0:11644; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11645; GFX942-NEXT:    ;;#ASMSTART11646; GFX942-NEXT:    ; def s[0:1]11647; GFX942-NEXT:    ;;#ASMEND11648; GFX942-NEXT:    s_lshr_b32 s9, s1, 1611649; GFX942-NEXT:    s_mov_b32 s8, s111650; GFX942-NEXT:    ;;#ASMSTART11651; GFX942-NEXT:    ; use s[8:9]11652; GFX942-NEXT:    ;;#ASMEND11653; GFX942-NEXT:    s_setpc_b64 s[30:31]11654  %vec0 = call <4 x half> asm "; def $0", "=s"()11655  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 2, i32 3, i32 3>11656  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11657  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)11658  ret void11659}11660 11661define void @s_shuffle_v3f16_v4f16__3_3_3() {11662; GFX900-LABEL: s_shuffle_v3f16_v4f16__3_3_3:11663; GFX900:       ; %bb.0:11664; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11665; GFX900-NEXT:    ;;#ASMSTART11666; GFX900-NEXT:    ; def s[4:5]11667; GFX900-NEXT:    ;;#ASMEND11668; GFX900-NEXT:    s_lshr_b32 s9, s5, 1611669; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s9, s911670; GFX900-NEXT:    ;;#ASMSTART11671; GFX900-NEXT:    ; use s[8:9]11672; GFX900-NEXT:    ;;#ASMEND11673; GFX900-NEXT:    s_setpc_b64 s[30:31]11674;11675; GFX90A-LABEL: s_shuffle_v3f16_v4f16__3_3_3:11676; GFX90A:       ; %bb.0:11677; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11678; GFX90A-NEXT:    ;;#ASMSTART11679; GFX90A-NEXT:    ; def s[4:5]11680; GFX90A-NEXT:    ;;#ASMEND11681; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1611682; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s9, s911683; GFX90A-NEXT:    ;;#ASMSTART11684; GFX90A-NEXT:    ; use s[8:9]11685; GFX90A-NEXT:    ;;#ASMEND11686; GFX90A-NEXT:    s_setpc_b64 s[30:31]11687;11688; GFX942-LABEL: s_shuffle_v3f16_v4f16__3_3_3:11689; GFX942:       ; %bb.0:11690; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11691; GFX942-NEXT:    ;;#ASMSTART11692; GFX942-NEXT:    ; def s[0:1]11693; GFX942-NEXT:    ;;#ASMEND11694; GFX942-NEXT:    s_lshr_b32 s9, s1, 1611695; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s9, s911696; GFX942-NEXT:    ;;#ASMSTART11697; GFX942-NEXT:    ; use s[8:9]11698; GFX942-NEXT:    ;;#ASMEND11699; GFX942-NEXT:    s_setpc_b64 s[30:31]11700  %vec0 = call <4 x half> asm "; def $0", "=s"()11701  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 3, i32 3, i32 3>11702  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11703  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)11704  ret void11705}11706 11707define void @s_shuffle_v3f16_v4f16__4_3_3() {11708; GFX900-LABEL: s_shuffle_v3f16_v4f16__4_3_3:11709; GFX900:       ; %bb.0:11710; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11711; GFX900-NEXT:    ;;#ASMSTART11712; GFX900-NEXT:    ; def s[4:5]11713; GFX900-NEXT:    ;;#ASMEND11714; GFX900-NEXT:    s_lshr_b32 s9, s5, 1611715; GFX900-NEXT:    s_mov_b32 s8, s511716; GFX900-NEXT:    ;;#ASMSTART11717; GFX900-NEXT:    ; use s[8:9]11718; GFX900-NEXT:    ;;#ASMEND11719; GFX900-NEXT:    s_setpc_b64 s[30:31]11720;11721; GFX90A-LABEL: s_shuffle_v3f16_v4f16__4_3_3:11722; GFX90A:       ; %bb.0:11723; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11724; GFX90A-NEXT:    ;;#ASMSTART11725; GFX90A-NEXT:    ; def s[4:5]11726; GFX90A-NEXT:    ;;#ASMEND11727; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1611728; GFX90A-NEXT:    s_mov_b32 s8, s511729; GFX90A-NEXT:    ;;#ASMSTART11730; GFX90A-NEXT:    ; use s[8:9]11731; GFX90A-NEXT:    ;;#ASMEND11732; GFX90A-NEXT:    s_setpc_b64 s[30:31]11733;11734; GFX942-LABEL: s_shuffle_v3f16_v4f16__4_3_3:11735; GFX942:       ; %bb.0:11736; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11737; GFX942-NEXT:    ;;#ASMSTART11738; GFX942-NEXT:    ; def s[0:1]11739; GFX942-NEXT:    ;;#ASMEND11740; GFX942-NEXT:    s_lshr_b32 s9, s1, 1611741; GFX942-NEXT:    s_mov_b32 s8, s111742; GFX942-NEXT:    ;;#ASMSTART11743; GFX942-NEXT:    ; use s[8:9]11744; GFX942-NEXT:    ;;#ASMEND11745; GFX942-NEXT:    s_setpc_b64 s[30:31]11746  %vec0 = call <4 x half> asm "; def $0", "=s"()11747  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 4, i32 3, i32 3>11748  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11749  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)11750  ret void11751}11752 11753define void @s_shuffle_v3f16_v4f16__5_3_3() {11754; GFX900-LABEL: s_shuffle_v3f16_v4f16__5_3_3:11755; GFX900:       ; %bb.0:11756; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11757; GFX900-NEXT:    ;;#ASMSTART11758; GFX900-NEXT:    ; def s[4:5]11759; GFX900-NEXT:    ;;#ASMEND11760; GFX900-NEXT:    ;;#ASMSTART11761; GFX900-NEXT:    ; def s[6:7]11762; GFX900-NEXT:    ;;#ASMEND11763; GFX900-NEXT:    s_lshr_b32 s9, s5, 1611764; GFX900-NEXT:    s_lshr_b32 s4, s6, 1611765; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s911766; GFX900-NEXT:    ;;#ASMSTART11767; GFX900-NEXT:    ; use s[8:9]11768; GFX900-NEXT:    ;;#ASMEND11769; GFX900-NEXT:    s_setpc_b64 s[30:31]11770;11771; GFX90A-LABEL: s_shuffle_v3f16_v4f16__5_3_3:11772; GFX90A:       ; %bb.0:11773; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11774; GFX90A-NEXT:    ;;#ASMSTART11775; GFX90A-NEXT:    ; def s[4:5]11776; GFX90A-NEXT:    ;;#ASMEND11777; GFX90A-NEXT:    ;;#ASMSTART11778; GFX90A-NEXT:    ; def s[6:7]11779; GFX90A-NEXT:    ;;#ASMEND11780; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1611781; GFX90A-NEXT:    s_lshr_b32 s4, s6, 1611782; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s911783; GFX90A-NEXT:    ;;#ASMSTART11784; GFX90A-NEXT:    ; use s[8:9]11785; GFX90A-NEXT:    ;;#ASMEND11786; GFX90A-NEXT:    s_setpc_b64 s[30:31]11787;11788; GFX942-LABEL: s_shuffle_v3f16_v4f16__5_3_3:11789; GFX942:       ; %bb.0:11790; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11791; GFX942-NEXT:    ;;#ASMSTART11792; GFX942-NEXT:    ; def s[0:1]11793; GFX942-NEXT:    ;;#ASMEND11794; GFX942-NEXT:    ;;#ASMSTART11795; GFX942-NEXT:    ; def s[2:3]11796; GFX942-NEXT:    ;;#ASMEND11797; GFX942-NEXT:    s_lshr_b32 s9, s1, 1611798; GFX942-NEXT:    s_lshr_b32 s0, s2, 1611799; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s911800; GFX942-NEXT:    ;;#ASMSTART11801; GFX942-NEXT:    ; use s[8:9]11802; GFX942-NEXT:    ;;#ASMEND11803; GFX942-NEXT:    s_setpc_b64 s[30:31]11804  %vec0 = call <4 x half> asm "; def $0", "=s"()11805  %vec1 = call <4 x half> asm "; def $0", "=s"()11806  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 5, i32 3, i32 3>11807  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11808  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)11809  ret void11810}11811 11812define void @s_shuffle_v3f16_v4f16__6_3_3() {11813; GFX900-LABEL: s_shuffle_v3f16_v4f16__6_3_3:11814; GFX900:       ; %bb.0:11815; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11816; GFX900-NEXT:    ;;#ASMSTART11817; GFX900-NEXT:    ; def s[4:5]11818; GFX900-NEXT:    ;;#ASMEND11819; GFX900-NEXT:    s_lshr_b32 s9, s5, 1611820; GFX900-NEXT:    ;;#ASMSTART11821; GFX900-NEXT:    ; def s[6:7]11822; GFX900-NEXT:    ;;#ASMEND11823; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s7, s911824; GFX900-NEXT:    ;;#ASMSTART11825; GFX900-NEXT:    ; use s[8:9]11826; GFX900-NEXT:    ;;#ASMEND11827; GFX900-NEXT:    s_setpc_b64 s[30:31]11828;11829; GFX90A-LABEL: s_shuffle_v3f16_v4f16__6_3_3:11830; GFX90A:       ; %bb.0:11831; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11832; GFX90A-NEXT:    ;;#ASMSTART11833; GFX90A-NEXT:    ; def s[4:5]11834; GFX90A-NEXT:    ;;#ASMEND11835; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1611836; GFX90A-NEXT:    ;;#ASMSTART11837; GFX90A-NEXT:    ; def s[6:7]11838; GFX90A-NEXT:    ;;#ASMEND11839; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s7, s911840; GFX90A-NEXT:    ;;#ASMSTART11841; GFX90A-NEXT:    ; use s[8:9]11842; GFX90A-NEXT:    ;;#ASMEND11843; GFX90A-NEXT:    s_setpc_b64 s[30:31]11844;11845; GFX942-LABEL: s_shuffle_v3f16_v4f16__6_3_3:11846; GFX942:       ; %bb.0:11847; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11848; GFX942-NEXT:    ;;#ASMSTART11849; GFX942-NEXT:    ; def s[0:1]11850; GFX942-NEXT:    ;;#ASMEND11851; GFX942-NEXT:    s_lshr_b32 s9, s1, 1611852; GFX942-NEXT:    ;;#ASMSTART11853; GFX942-NEXT:    ; def s[2:3]11854; GFX942-NEXT:    ;;#ASMEND11855; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s3, s911856; GFX942-NEXT:    ;;#ASMSTART11857; GFX942-NEXT:    ; use s[8:9]11858; GFX942-NEXT:    ;;#ASMEND11859; GFX942-NEXT:    s_setpc_b64 s[30:31]11860  %vec0 = call <4 x half> asm "; def $0", "=s"()11861  %vec1 = call <4 x half> asm "; def $0", "=s"()11862  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 6, i32 3, i32 3>11863  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11864  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)11865  ret void11866}11867 11868define void @s_shuffle_v3f16_v4f16__7_3_3() {11869; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_3_3:11870; GFX900:       ; %bb.0:11871; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11872; GFX900-NEXT:    ;;#ASMSTART11873; GFX900-NEXT:    ; def s[4:5]11874; GFX900-NEXT:    ;;#ASMEND11875; GFX900-NEXT:    ;;#ASMSTART11876; GFX900-NEXT:    ; def s[6:7]11877; GFX900-NEXT:    ;;#ASMEND11878; GFX900-NEXT:    s_lshr_b32 s9, s5, 1611879; GFX900-NEXT:    s_lshr_b32 s4, s7, 1611880; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s911881; GFX900-NEXT:    ;;#ASMSTART11882; GFX900-NEXT:    ; use s[8:9]11883; GFX900-NEXT:    ;;#ASMEND11884; GFX900-NEXT:    s_setpc_b64 s[30:31]11885;11886; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_3_3:11887; GFX90A:       ; %bb.0:11888; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11889; GFX90A-NEXT:    ;;#ASMSTART11890; GFX90A-NEXT:    ; def s[4:5]11891; GFX90A-NEXT:    ;;#ASMEND11892; GFX90A-NEXT:    ;;#ASMSTART11893; GFX90A-NEXT:    ; def s[6:7]11894; GFX90A-NEXT:    ;;#ASMEND11895; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1611896; GFX90A-NEXT:    s_lshr_b32 s4, s7, 1611897; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s911898; GFX90A-NEXT:    ;;#ASMSTART11899; GFX90A-NEXT:    ; use s[8:9]11900; GFX90A-NEXT:    ;;#ASMEND11901; GFX90A-NEXT:    s_setpc_b64 s[30:31]11902;11903; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_3_3:11904; GFX942:       ; %bb.0:11905; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11906; GFX942-NEXT:    ;;#ASMSTART11907; GFX942-NEXT:    ; def s[0:1]11908; GFX942-NEXT:    ;;#ASMEND11909; GFX942-NEXT:    ;;#ASMSTART11910; GFX942-NEXT:    ; def s[2:3]11911; GFX942-NEXT:    ;;#ASMEND11912; GFX942-NEXT:    s_lshr_b32 s9, s1, 1611913; GFX942-NEXT:    s_lshr_b32 s0, s3, 1611914; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s911915; GFX942-NEXT:    ;;#ASMSTART11916; GFX942-NEXT:    ; use s[8:9]11917; GFX942-NEXT:    ;;#ASMEND11918; GFX942-NEXT:    s_setpc_b64 s[30:31]11919  %vec0 = call <4 x half> asm "; def $0", "=s"()11920  %vec1 = call <4 x half> asm "; def $0", "=s"()11921  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 3, i32 3>11922  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11923  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)11924  ret void11925}11926 11927define void @s_shuffle_v3f16_v4f16__7_u_3() {11928; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_u_3:11929; GFX900:       ; %bb.0:11930; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11931; GFX900-NEXT:    ;;#ASMSTART11932; GFX900-NEXT:    ; def s[4:5]11933; GFX900-NEXT:    ;;#ASMEND11934; GFX900-NEXT:    ;;#ASMSTART11935; GFX900-NEXT:    ; def s[6:7]11936; GFX900-NEXT:    ;;#ASMEND11937; GFX900-NEXT:    s_lshr_b32 s9, s5, 1611938; GFX900-NEXT:    s_lshr_b32 s8, s7, 1611939; GFX900-NEXT:    ;;#ASMSTART11940; GFX900-NEXT:    ; use s[8:9]11941; GFX900-NEXT:    ;;#ASMEND11942; GFX900-NEXT:    s_setpc_b64 s[30:31]11943;11944; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_u_3:11945; GFX90A:       ; %bb.0:11946; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11947; GFX90A-NEXT:    ;;#ASMSTART11948; GFX90A-NEXT:    ; def s[4:5]11949; GFX90A-NEXT:    ;;#ASMEND11950; GFX90A-NEXT:    ;;#ASMSTART11951; GFX90A-NEXT:    ; def s[6:7]11952; GFX90A-NEXT:    ;;#ASMEND11953; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1611954; GFX90A-NEXT:    s_lshr_b32 s8, s7, 1611955; GFX90A-NEXT:    ;;#ASMSTART11956; GFX90A-NEXT:    ; use s[8:9]11957; GFX90A-NEXT:    ;;#ASMEND11958; GFX90A-NEXT:    s_setpc_b64 s[30:31]11959;11960; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_u_3:11961; GFX942:       ; %bb.0:11962; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11963; GFX942-NEXT:    ;;#ASMSTART11964; GFX942-NEXT:    ; def s[0:1]11965; GFX942-NEXT:    ;;#ASMEND11966; GFX942-NEXT:    ;;#ASMSTART11967; GFX942-NEXT:    ; def s[2:3]11968; GFX942-NEXT:    ;;#ASMEND11969; GFX942-NEXT:    s_lshr_b32 s9, s1, 1611970; GFX942-NEXT:    s_lshr_b32 s8, s3, 1611971; GFX942-NEXT:    ;;#ASMSTART11972; GFX942-NEXT:    ; use s[8:9]11973; GFX942-NEXT:    ;;#ASMEND11974; GFX942-NEXT:    s_setpc_b64 s[30:31]11975  %vec0 = call <4 x half> asm "; def $0", "=s"()11976  %vec1 = call <4 x half> asm "; def $0", "=s"()11977  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 poison, i32 3>11978  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>11979  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)11980  ret void11981}11982 11983define void @s_shuffle_v3f16_v4f16__7_0_3() {11984; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_0_3:11985; GFX900:       ; %bb.0:11986; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11987; GFX900-NEXT:    ;;#ASMSTART11988; GFX900-NEXT:    ; def s[6:7]11989; GFX900-NEXT:    ;;#ASMEND11990; GFX900-NEXT:    s_lshr_b32 s6, s7, 1611991; GFX900-NEXT:    ;;#ASMSTART11992; GFX900-NEXT:    ; def s[4:5]11993; GFX900-NEXT:    ;;#ASMEND11994; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s6, s411995; GFX900-NEXT:    s_lshr_b32 s9, s5, 1611996; GFX900-NEXT:    ;;#ASMSTART11997; GFX900-NEXT:    ; use s[8:9]11998; GFX900-NEXT:    ;;#ASMEND11999; GFX900-NEXT:    s_setpc_b64 s[30:31]12000;12001; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_0_3:12002; GFX90A:       ; %bb.0:12003; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12004; GFX90A-NEXT:    ;;#ASMSTART12005; GFX90A-NEXT:    ; def s[6:7]12006; GFX90A-NEXT:    ;;#ASMEND12007; GFX90A-NEXT:    s_lshr_b32 s6, s7, 1612008; GFX90A-NEXT:    ;;#ASMSTART12009; GFX90A-NEXT:    ; def s[4:5]12010; GFX90A-NEXT:    ;;#ASMEND12011; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s6, s412012; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1612013; GFX90A-NEXT:    ;;#ASMSTART12014; GFX90A-NEXT:    ; use s[8:9]12015; GFX90A-NEXT:    ;;#ASMEND12016; GFX90A-NEXT:    s_setpc_b64 s[30:31]12017;12018; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_0_3:12019; GFX942:       ; %bb.0:12020; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12021; GFX942-NEXT:    ;;#ASMSTART12022; GFX942-NEXT:    ; def s[2:3]12023; GFX942-NEXT:    ;;#ASMEND12024; GFX942-NEXT:    s_lshr_b32 s2, s3, 1612025; GFX942-NEXT:    ;;#ASMSTART12026; GFX942-NEXT:    ; def s[0:1]12027; GFX942-NEXT:    ;;#ASMEND12028; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s2, s012029; GFX942-NEXT:    s_lshr_b32 s9, s1, 1612030; GFX942-NEXT:    ;;#ASMSTART12031; GFX942-NEXT:    ; use s[8:9]12032; GFX942-NEXT:    ;;#ASMEND12033; GFX942-NEXT:    s_setpc_b64 s[30:31]12034  %vec0 = call <4 x half> asm "; def $0", "=s"()12035  %vec1 = call <4 x half> asm "; def $0", "=s"()12036  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 0, i32 3>12037  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12038  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)12039  ret void12040}12041 12042define void @s_shuffle_v3f16_v4f16__7_1_3() {12043; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_1_3:12044; GFX900:       ; %bb.0:12045; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12046; GFX900-NEXT:    ;;#ASMSTART12047; GFX900-NEXT:    ; def s[4:5]12048; GFX900-NEXT:    ;;#ASMEND12049; GFX900-NEXT:    ;;#ASMSTART12050; GFX900-NEXT:    ; def s[6:7]12051; GFX900-NEXT:    ;;#ASMEND12052; GFX900-NEXT:    s_lshr_b32 s4, s4, 1612053; GFX900-NEXT:    s_lshr_b32 s6, s7, 1612054; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s6, s412055; GFX900-NEXT:    s_lshr_b32 s9, s5, 1612056; GFX900-NEXT:    ;;#ASMSTART12057; GFX900-NEXT:    ; use s[8:9]12058; GFX900-NEXT:    ;;#ASMEND12059; GFX900-NEXT:    s_setpc_b64 s[30:31]12060;12061; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_1_3:12062; GFX90A:       ; %bb.0:12063; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12064; GFX90A-NEXT:    ;;#ASMSTART12065; GFX90A-NEXT:    ; def s[4:5]12066; GFX90A-NEXT:    ;;#ASMEND12067; GFX90A-NEXT:    ;;#ASMSTART12068; GFX90A-NEXT:    ; def s[6:7]12069; GFX90A-NEXT:    ;;#ASMEND12070; GFX90A-NEXT:    s_lshr_b32 s4, s4, 1612071; GFX90A-NEXT:    s_lshr_b32 s6, s7, 1612072; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s6, s412073; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1612074; GFX90A-NEXT:    ;;#ASMSTART12075; GFX90A-NEXT:    ; use s[8:9]12076; GFX90A-NEXT:    ;;#ASMEND12077; GFX90A-NEXT:    s_setpc_b64 s[30:31]12078;12079; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_1_3:12080; GFX942:       ; %bb.0:12081; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12082; GFX942-NEXT:    ;;#ASMSTART12083; GFX942-NEXT:    ; def s[0:1]12084; GFX942-NEXT:    ;;#ASMEND12085; GFX942-NEXT:    ;;#ASMSTART12086; GFX942-NEXT:    ; def s[2:3]12087; GFX942-NEXT:    ;;#ASMEND12088; GFX942-NEXT:    s_lshr_b32 s0, s0, 1612089; GFX942-NEXT:    s_lshr_b32 s2, s3, 1612090; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s2, s012091; GFX942-NEXT:    s_lshr_b32 s9, s1, 1612092; GFX942-NEXT:    ;;#ASMSTART12093; GFX942-NEXT:    ; use s[8:9]12094; GFX942-NEXT:    ;;#ASMEND12095; GFX942-NEXT:    s_setpc_b64 s[30:31]12096  %vec0 = call <4 x half> asm "; def $0", "=s"()12097  %vec1 = call <4 x half> asm "; def $0", "=s"()12098  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 1, i32 3>12099  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12100  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)12101  ret void12102}12103 12104define void @s_shuffle_v3f16_v4f16__7_2_3() {12105; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_2_3:12106; GFX900:       ; %bb.0:12107; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12108; GFX900-NEXT:    ;;#ASMSTART12109; GFX900-NEXT:    ; def s[4:5]12110; GFX900-NEXT:    ;;#ASMEND12111; GFX900-NEXT:    ;;#ASMSTART12112; GFX900-NEXT:    ; def s[6:7]12113; GFX900-NEXT:    ;;#ASMEND12114; GFX900-NEXT:    s_lshr_b32 s4, s7, 1612115; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s512116; GFX900-NEXT:    s_lshr_b32 s9, s5, 1612117; GFX900-NEXT:    ;;#ASMSTART12118; GFX900-NEXT:    ; use s[8:9]12119; GFX900-NEXT:    ;;#ASMEND12120; GFX900-NEXT:    s_setpc_b64 s[30:31]12121;12122; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_2_3:12123; GFX90A:       ; %bb.0:12124; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12125; GFX90A-NEXT:    ;;#ASMSTART12126; GFX90A-NEXT:    ; def s[4:5]12127; GFX90A-NEXT:    ;;#ASMEND12128; GFX90A-NEXT:    ;;#ASMSTART12129; GFX90A-NEXT:    ; def s[6:7]12130; GFX90A-NEXT:    ;;#ASMEND12131; GFX90A-NEXT:    s_lshr_b32 s4, s7, 1612132; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s512133; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1612134; GFX90A-NEXT:    ;;#ASMSTART12135; GFX90A-NEXT:    ; use s[8:9]12136; GFX90A-NEXT:    ;;#ASMEND12137; GFX90A-NEXT:    s_setpc_b64 s[30:31]12138;12139; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_2_3:12140; GFX942:       ; %bb.0:12141; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12142; GFX942-NEXT:    ;;#ASMSTART12143; GFX942-NEXT:    ; def s[0:1]12144; GFX942-NEXT:    ;;#ASMEND12145; GFX942-NEXT:    ;;#ASMSTART12146; GFX942-NEXT:    ; def s[2:3]12147; GFX942-NEXT:    ;;#ASMEND12148; GFX942-NEXT:    s_lshr_b32 s0, s3, 1612149; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s112150; GFX942-NEXT:    s_lshr_b32 s9, s1, 1612151; GFX942-NEXT:    ;;#ASMSTART12152; GFX942-NEXT:    ; use s[8:9]12153; GFX942-NEXT:    ;;#ASMEND12154; GFX942-NEXT:    s_setpc_b64 s[30:31]12155  %vec0 = call <4 x half> asm "; def $0", "=s"()12156  %vec1 = call <4 x half> asm "; def $0", "=s"()12157  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 2, i32 3>12158  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12159  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)12160  ret void12161}12162 12163define void @s_shuffle_v3f16_v4f16__7_4_3() {12164; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_4_3:12165; GFX900:       ; %bb.0:12166; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12167; GFX900-NEXT:    ;;#ASMSTART12168; GFX900-NEXT:    ; def s[4:5]12169; GFX900-NEXT:    ;;#ASMEND12170; GFX900-NEXT:    ;;#ASMSTART12171; GFX900-NEXT:    ; def s[6:7]12172; GFX900-NEXT:    ;;#ASMEND12173; GFX900-NEXT:    s_lshr_b32 s4, s7, 1612174; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s612175; GFX900-NEXT:    s_lshr_b32 s9, s5, 1612176; GFX900-NEXT:    ;;#ASMSTART12177; GFX900-NEXT:    ; use s[8:9]12178; GFX900-NEXT:    ;;#ASMEND12179; GFX900-NEXT:    s_setpc_b64 s[30:31]12180;12181; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_4_3:12182; GFX90A:       ; %bb.0:12183; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12184; GFX90A-NEXT:    ;;#ASMSTART12185; GFX90A-NEXT:    ; def s[4:5]12186; GFX90A-NEXT:    ;;#ASMEND12187; GFX90A-NEXT:    ;;#ASMSTART12188; GFX90A-NEXT:    ; def s[6:7]12189; GFX90A-NEXT:    ;;#ASMEND12190; GFX90A-NEXT:    s_lshr_b32 s4, s7, 1612191; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s612192; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1612193; GFX90A-NEXT:    ;;#ASMSTART12194; GFX90A-NEXT:    ; use s[8:9]12195; GFX90A-NEXT:    ;;#ASMEND12196; GFX90A-NEXT:    s_setpc_b64 s[30:31]12197;12198; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_4_3:12199; GFX942:       ; %bb.0:12200; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12201; GFX942-NEXT:    ;;#ASMSTART12202; GFX942-NEXT:    ; def s[0:1]12203; GFX942-NEXT:    ;;#ASMEND12204; GFX942-NEXT:    ;;#ASMSTART12205; GFX942-NEXT:    ; def s[2:3]12206; GFX942-NEXT:    ;;#ASMEND12207; GFX942-NEXT:    s_lshr_b32 s0, s3, 1612208; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s212209; GFX942-NEXT:    s_lshr_b32 s9, s1, 1612210; GFX942-NEXT:    ;;#ASMSTART12211; GFX942-NEXT:    ; use s[8:9]12212; GFX942-NEXT:    ;;#ASMEND12213; GFX942-NEXT:    s_setpc_b64 s[30:31]12214  %vec0 = call <4 x half> asm "; def $0", "=s"()12215  %vec1 = call <4 x half> asm "; def $0", "=s"()12216  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 4, i32 3>12217  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12218  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)12219  ret void12220}12221 12222define void @s_shuffle_v3f16_v4f16__7_5_3() {12223; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_5_3:12224; GFX900:       ; %bb.0:12225; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12226; GFX900-NEXT:    ;;#ASMSTART12227; GFX900-NEXT:    ; def s[4:5]12228; GFX900-NEXT:    ;;#ASMEND12229; GFX900-NEXT:    ;;#ASMSTART12230; GFX900-NEXT:    ; def s[6:7]12231; GFX900-NEXT:    ;;#ASMEND12232; GFX900-NEXT:    s_lshr_b32 s4, s6, 1612233; GFX900-NEXT:    s_lshr_b32 s6, s7, 1612234; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s6, s412235; GFX900-NEXT:    s_lshr_b32 s9, s5, 1612236; GFX900-NEXT:    ;;#ASMSTART12237; GFX900-NEXT:    ; use s[8:9]12238; GFX900-NEXT:    ;;#ASMEND12239; GFX900-NEXT:    s_setpc_b64 s[30:31]12240;12241; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_5_3:12242; GFX90A:       ; %bb.0:12243; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12244; GFX90A-NEXT:    ;;#ASMSTART12245; GFX90A-NEXT:    ; def s[4:5]12246; GFX90A-NEXT:    ;;#ASMEND12247; GFX90A-NEXT:    ;;#ASMSTART12248; GFX90A-NEXT:    ; def s[6:7]12249; GFX90A-NEXT:    ;;#ASMEND12250; GFX90A-NEXT:    s_lshr_b32 s4, s6, 1612251; GFX90A-NEXT:    s_lshr_b32 s6, s7, 1612252; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s6, s412253; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1612254; GFX90A-NEXT:    ;;#ASMSTART12255; GFX90A-NEXT:    ; use s[8:9]12256; GFX90A-NEXT:    ;;#ASMEND12257; GFX90A-NEXT:    s_setpc_b64 s[30:31]12258;12259; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_5_3:12260; GFX942:       ; %bb.0:12261; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12262; GFX942-NEXT:    ;;#ASMSTART12263; GFX942-NEXT:    ; def s[0:1]12264; GFX942-NEXT:    ;;#ASMEND12265; GFX942-NEXT:    ;;#ASMSTART12266; GFX942-NEXT:    ; def s[2:3]12267; GFX942-NEXT:    ;;#ASMEND12268; GFX942-NEXT:    s_lshr_b32 s0, s2, 1612269; GFX942-NEXT:    s_lshr_b32 s2, s3, 1612270; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s2, s012271; GFX942-NEXT:    s_lshr_b32 s9, s1, 1612272; GFX942-NEXT:    ;;#ASMSTART12273; GFX942-NEXT:    ; use s[8:9]12274; GFX942-NEXT:    ;;#ASMEND12275; GFX942-NEXT:    s_setpc_b64 s[30:31]12276  %vec0 = call <4 x half> asm "; def $0", "=s"()12277  %vec1 = call <4 x half> asm "; def $0", "=s"()12278  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 5, i32 3>12279  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12280  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)12281  ret void12282}12283 12284define void @s_shuffle_v3f16_v4f16__7_6_3() {12285; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_6_3:12286; GFX900:       ; %bb.0:12287; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12288; GFX900-NEXT:    ;;#ASMSTART12289; GFX900-NEXT:    ; def s[4:5]12290; GFX900-NEXT:    ;;#ASMEND12291; GFX900-NEXT:    ;;#ASMSTART12292; GFX900-NEXT:    ; def s[6:7]12293; GFX900-NEXT:    ;;#ASMEND12294; GFX900-NEXT:    s_lshr_b32 s4, s7, 1612295; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s712296; GFX900-NEXT:    s_lshr_b32 s9, s5, 1612297; GFX900-NEXT:    ;;#ASMSTART12298; GFX900-NEXT:    ; use s[8:9]12299; GFX900-NEXT:    ;;#ASMEND12300; GFX900-NEXT:    s_setpc_b64 s[30:31]12301;12302; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_6_3:12303; GFX90A:       ; %bb.0:12304; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12305; GFX90A-NEXT:    ;;#ASMSTART12306; GFX90A-NEXT:    ; def s[4:5]12307; GFX90A-NEXT:    ;;#ASMEND12308; GFX90A-NEXT:    ;;#ASMSTART12309; GFX90A-NEXT:    ; def s[6:7]12310; GFX90A-NEXT:    ;;#ASMEND12311; GFX90A-NEXT:    s_lshr_b32 s4, s7, 1612312; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s712313; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1612314; GFX90A-NEXT:    ;;#ASMSTART12315; GFX90A-NEXT:    ; use s[8:9]12316; GFX90A-NEXT:    ;;#ASMEND12317; GFX90A-NEXT:    s_setpc_b64 s[30:31]12318;12319; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_6_3:12320; GFX942:       ; %bb.0:12321; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12322; GFX942-NEXT:    ;;#ASMSTART12323; GFX942-NEXT:    ; def s[0:1]12324; GFX942-NEXT:    ;;#ASMEND12325; GFX942-NEXT:    ;;#ASMSTART12326; GFX942-NEXT:    ; def s[2:3]12327; GFX942-NEXT:    ;;#ASMEND12328; GFX942-NEXT:    s_lshr_b32 s0, s3, 1612329; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s312330; GFX942-NEXT:    s_lshr_b32 s9, s1, 1612331; GFX942-NEXT:    ;;#ASMSTART12332; GFX942-NEXT:    ; use s[8:9]12333; GFX942-NEXT:    ;;#ASMEND12334; GFX942-NEXT:    s_setpc_b64 s[30:31]12335  %vec0 = call <4 x half> asm "; def $0", "=s"()12336  %vec1 = call <4 x half> asm "; def $0", "=s"()12337  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 6, i32 3>12338  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12339  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)12340  ret void12341}12342 12343define void @s_shuffle_v3f16_v4f16__u_4_4() {12344; GFX9-LABEL: s_shuffle_v3f16_v4f16__u_4_4:12345; GFX9:       ; %bb.0:12346; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12347; GFX9-NEXT:    ;;#ASMSTART12348; GFX9-NEXT:    ; use s[8:9]12349; GFX9-NEXT:    ;;#ASMEND12350; GFX9-NEXT:    s_setpc_b64 s[30:31]12351  %vec0 = call <4 x half> asm "; def $0", "=s"()12352  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 poison, i32 4, i32 4>12353  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12354  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)12355  ret void12356}12357 12358define void @s_shuffle_v3f16_v4f16__0_4_4() {12359; GFX900-LABEL: s_shuffle_v3f16_v4f16__0_4_4:12360; GFX900:       ; %bb.0:12361; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12362; GFX900-NEXT:    ;;#ASMSTART12363; GFX900-NEXT:    ; def s[8:9]12364; GFX900-NEXT:    ;;#ASMEND12365; GFX900-NEXT:    ;;#ASMSTART12366; GFX900-NEXT:    ; use s[8:9]12367; GFX900-NEXT:    ;;#ASMEND12368; GFX900-NEXT:    s_setpc_b64 s[30:31]12369;12370; GFX90A-LABEL: s_shuffle_v3f16_v4f16__0_4_4:12371; GFX90A:       ; %bb.0:12372; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12373; GFX90A-NEXT:    ;;#ASMSTART12374; GFX90A-NEXT:    ; def s[8:9]12375; GFX90A-NEXT:    ;;#ASMEND12376; GFX90A-NEXT:    ;;#ASMSTART12377; GFX90A-NEXT:    ; use s[8:9]12378; GFX90A-NEXT:    ;;#ASMEND12379; GFX90A-NEXT:    s_setpc_b64 s[30:31]12380;12381; GFX942-LABEL: s_shuffle_v3f16_v4f16__0_4_4:12382; GFX942:       ; %bb.0:12383; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12384; GFX942-NEXT:    ;;#ASMSTART12385; GFX942-NEXT:    ; def s[8:9]12386; GFX942-NEXT:    ;;#ASMEND12387; GFX942-NEXT:    s_nop 012388; GFX942-NEXT:    ;;#ASMSTART12389; GFX942-NEXT:    ; use s[8:9]12390; GFX942-NEXT:    ;;#ASMEND12391; GFX942-NEXT:    s_setpc_b64 s[30:31]12392  %vec0 = call <4 x half> asm "; def $0", "=s"()12393  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 0, i32 4, i32 4>12394  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12395  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)12396  ret void12397}12398 12399define void @s_shuffle_v3f16_v4f16__1_4_4() {12400; GFX900-LABEL: s_shuffle_v3f16_v4f16__1_4_4:12401; GFX900:       ; %bb.0:12402; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12403; GFX900-NEXT:    ;;#ASMSTART12404; GFX900-NEXT:    ; def s[4:5]12405; GFX900-NEXT:    ;;#ASMEND12406; GFX900-NEXT:    s_lshr_b32 s8, s4, 1612407; GFX900-NEXT:    ;;#ASMSTART12408; GFX900-NEXT:    ; use s[8:9]12409; GFX900-NEXT:    ;;#ASMEND12410; GFX900-NEXT:    s_setpc_b64 s[30:31]12411;12412; GFX90A-LABEL: s_shuffle_v3f16_v4f16__1_4_4:12413; GFX90A:       ; %bb.0:12414; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12415; GFX90A-NEXT:    ;;#ASMSTART12416; GFX90A-NEXT:    ; def s[4:5]12417; GFX90A-NEXT:    ;;#ASMEND12418; GFX90A-NEXT:    s_lshr_b32 s8, s4, 1612419; GFX90A-NEXT:    ;;#ASMSTART12420; GFX90A-NEXT:    ; use s[8:9]12421; GFX90A-NEXT:    ;;#ASMEND12422; GFX90A-NEXT:    s_setpc_b64 s[30:31]12423;12424; GFX942-LABEL: s_shuffle_v3f16_v4f16__1_4_4:12425; GFX942:       ; %bb.0:12426; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12427; GFX942-NEXT:    ;;#ASMSTART12428; GFX942-NEXT:    ; def s[0:1]12429; GFX942-NEXT:    ;;#ASMEND12430; GFX942-NEXT:    s_lshr_b32 s8, s0, 1612431; GFX942-NEXT:    ;;#ASMSTART12432; GFX942-NEXT:    ; use s[8:9]12433; GFX942-NEXT:    ;;#ASMEND12434; GFX942-NEXT:    s_setpc_b64 s[30:31]12435  %vec0 = call <4 x half> asm "; def $0", "=s"()12436  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 1, i32 4, i32 4>12437  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12438  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)12439  ret void12440}12441 12442define void @s_shuffle_v3f16_v4f16__2_4_4() {12443; GFX900-LABEL: s_shuffle_v3f16_v4f16__2_4_4:12444; GFX900:       ; %bb.0:12445; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12446; GFX900-NEXT:    ;;#ASMSTART12447; GFX900-NEXT:    ; def s[4:5]12448; GFX900-NEXT:    ;;#ASMEND12449; GFX900-NEXT:    s_mov_b32 s8, s512450; GFX900-NEXT:    ;;#ASMSTART12451; GFX900-NEXT:    ; use s[8:9]12452; GFX900-NEXT:    ;;#ASMEND12453; GFX900-NEXT:    s_setpc_b64 s[30:31]12454;12455; GFX90A-LABEL: s_shuffle_v3f16_v4f16__2_4_4:12456; GFX90A:       ; %bb.0:12457; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12458; GFX90A-NEXT:    ;;#ASMSTART12459; GFX90A-NEXT:    ; def s[4:5]12460; GFX90A-NEXT:    ;;#ASMEND12461; GFX90A-NEXT:    s_mov_b32 s8, s512462; GFX90A-NEXT:    ;;#ASMSTART12463; GFX90A-NEXT:    ; use s[8:9]12464; GFX90A-NEXT:    ;;#ASMEND12465; GFX90A-NEXT:    s_setpc_b64 s[30:31]12466;12467; GFX942-LABEL: s_shuffle_v3f16_v4f16__2_4_4:12468; GFX942:       ; %bb.0:12469; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12470; GFX942-NEXT:    ;;#ASMSTART12471; GFX942-NEXT:    ; def s[0:1]12472; GFX942-NEXT:    ;;#ASMEND12473; GFX942-NEXT:    s_mov_b32 s8, s112474; GFX942-NEXT:    ;;#ASMSTART12475; GFX942-NEXT:    ; use s[8:9]12476; GFX942-NEXT:    ;;#ASMEND12477; GFX942-NEXT:    s_setpc_b64 s[30:31]12478  %vec0 = call <4 x half> asm "; def $0", "=s"()12479  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 2, i32 4, i32 4>12480  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12481  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)12482  ret void12483}12484 12485define void @s_shuffle_v3f16_v4f16__3_4_4() {12486; GFX900-LABEL: s_shuffle_v3f16_v4f16__3_4_4:12487; GFX900:       ; %bb.0:12488; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12489; GFX900-NEXT:    ;;#ASMSTART12490; GFX900-NEXT:    ; def s[4:5]12491; GFX900-NEXT:    ;;#ASMEND12492; GFX900-NEXT:    s_lshr_b32 s8, s5, 1612493; GFX900-NEXT:    ;;#ASMSTART12494; GFX900-NEXT:    ; use s[8:9]12495; GFX900-NEXT:    ;;#ASMEND12496; GFX900-NEXT:    s_setpc_b64 s[30:31]12497;12498; GFX90A-LABEL: s_shuffle_v3f16_v4f16__3_4_4:12499; GFX90A:       ; %bb.0:12500; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12501; GFX90A-NEXT:    ;;#ASMSTART12502; GFX90A-NEXT:    ; def s[4:5]12503; GFX90A-NEXT:    ;;#ASMEND12504; GFX90A-NEXT:    s_lshr_b32 s8, s5, 1612505; GFX90A-NEXT:    ;;#ASMSTART12506; GFX90A-NEXT:    ; use s[8:9]12507; GFX90A-NEXT:    ;;#ASMEND12508; GFX90A-NEXT:    s_setpc_b64 s[30:31]12509;12510; GFX942-LABEL: s_shuffle_v3f16_v4f16__3_4_4:12511; GFX942:       ; %bb.0:12512; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12513; GFX942-NEXT:    ;;#ASMSTART12514; GFX942-NEXT:    ; def s[0:1]12515; GFX942-NEXT:    ;;#ASMEND12516; GFX942-NEXT:    s_lshr_b32 s8, s1, 1612517; GFX942-NEXT:    ;;#ASMSTART12518; GFX942-NEXT:    ; use s[8:9]12519; GFX942-NEXT:    ;;#ASMEND12520; GFX942-NEXT:    s_setpc_b64 s[30:31]12521  %vec0 = call <4 x half> asm "; def $0", "=s"()12522  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 3, i32 4, i32 4>12523  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12524  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)12525  ret void12526}12527 12528define void @s_shuffle_v3f16_v4f16__4_4_4() {12529; GFX9-LABEL: s_shuffle_v3f16_v4f16__4_4_4:12530; GFX9:       ; %bb.0:12531; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12532; GFX9-NEXT:    ;;#ASMSTART12533; GFX9-NEXT:    ; use s[8:9]12534; GFX9-NEXT:    ;;#ASMEND12535; GFX9-NEXT:    s_setpc_b64 s[30:31]12536  %vec0 = call <4 x half> asm "; def $0", "=s"()12537  %shuf = shufflevector <4 x half> %vec0, <4 x half> poison, <3 x i32> <i32 4, i32 4, i32 4>12538  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12539  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)12540  ret void12541}12542 12543define void @s_shuffle_v3f16_v4f16__5_4_4() {12544; GFX900-LABEL: s_shuffle_v3f16_v4f16__5_4_4:12545; GFX900:       ; %bb.0:12546; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12547; GFX900-NEXT:    ;;#ASMSTART12548; GFX900-NEXT:    ; def s[4:5]12549; GFX900-NEXT:    ;;#ASMEND12550; GFX900-NEXT:    s_lshr_b32 s5, s4, 1612551; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s412552; GFX900-NEXT:    s_mov_b32 s9, s412553; GFX900-NEXT:    ;;#ASMSTART12554; GFX900-NEXT:    ; use s[8:9]12555; GFX900-NEXT:    ;;#ASMEND12556; GFX900-NEXT:    s_setpc_b64 s[30:31]12557;12558; GFX90A-LABEL: s_shuffle_v3f16_v4f16__5_4_4:12559; GFX90A:       ; %bb.0:12560; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12561; GFX90A-NEXT:    ;;#ASMSTART12562; GFX90A-NEXT:    ; def s[4:5]12563; GFX90A-NEXT:    ;;#ASMEND12564; GFX90A-NEXT:    s_lshr_b32 s5, s4, 1612565; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s412566; GFX90A-NEXT:    s_mov_b32 s9, s412567; GFX90A-NEXT:    ;;#ASMSTART12568; GFX90A-NEXT:    ; use s[8:9]12569; GFX90A-NEXT:    ;;#ASMEND12570; GFX90A-NEXT:    s_setpc_b64 s[30:31]12571;12572; GFX942-LABEL: s_shuffle_v3f16_v4f16__5_4_4:12573; GFX942:       ; %bb.0:12574; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12575; GFX942-NEXT:    ;;#ASMSTART12576; GFX942-NEXT:    ; def s[0:1]12577; GFX942-NEXT:    ;;#ASMEND12578; GFX942-NEXT:    s_lshr_b32 s1, s0, 1612579; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s012580; GFX942-NEXT:    s_mov_b32 s9, s012581; GFX942-NEXT:    ;;#ASMSTART12582; GFX942-NEXT:    ; use s[8:9]12583; GFX942-NEXT:    ;;#ASMEND12584; GFX942-NEXT:    s_setpc_b64 s[30:31]12585  %vec0 = call <4 x half> asm "; def $0", "=s"()12586  %vec1 = call <4 x half> asm "; def $0", "=s"()12587  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 5, i32 4, i32 4>12588  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12589  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)12590  ret void12591}12592 12593define void @s_shuffle_v3f16_v4f16__6_4_4() {12594; GFX900-LABEL: s_shuffle_v3f16_v4f16__6_4_4:12595; GFX900:       ; %bb.0:12596; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12597; GFX900-NEXT:    ;;#ASMSTART12598; GFX900-NEXT:    ; def s[4:5]12599; GFX900-NEXT:    ;;#ASMEND12600; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s412601; GFX900-NEXT:    s_mov_b32 s9, s412602; GFX900-NEXT:    ;;#ASMSTART12603; GFX900-NEXT:    ; use s[8:9]12604; GFX900-NEXT:    ;;#ASMEND12605; GFX900-NEXT:    s_setpc_b64 s[30:31]12606;12607; GFX90A-LABEL: s_shuffle_v3f16_v4f16__6_4_4:12608; GFX90A:       ; %bb.0:12609; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12610; GFX90A-NEXT:    ;;#ASMSTART12611; GFX90A-NEXT:    ; def s[4:5]12612; GFX90A-NEXT:    ;;#ASMEND12613; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s412614; GFX90A-NEXT:    s_mov_b32 s9, s412615; GFX90A-NEXT:    ;;#ASMSTART12616; GFX90A-NEXT:    ; use s[8:9]12617; GFX90A-NEXT:    ;;#ASMEND12618; GFX90A-NEXT:    s_setpc_b64 s[30:31]12619;12620; GFX942-LABEL: s_shuffle_v3f16_v4f16__6_4_4:12621; GFX942:       ; %bb.0:12622; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12623; GFX942-NEXT:    ;;#ASMSTART12624; GFX942-NEXT:    ; def s[0:1]12625; GFX942-NEXT:    ;;#ASMEND12626; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s012627; GFX942-NEXT:    s_mov_b32 s9, s012628; GFX942-NEXT:    ;;#ASMSTART12629; GFX942-NEXT:    ; use s[8:9]12630; GFX942-NEXT:    ;;#ASMEND12631; GFX942-NEXT:    s_setpc_b64 s[30:31]12632  %vec0 = call <4 x half> asm "; def $0", "=s"()12633  %vec1 = call <4 x half> asm "; def $0", "=s"()12634  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 6, i32 4, i32 4>12635  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12636  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)12637  ret void12638}12639 12640define void @s_shuffle_v3f16_v4f16__7_4_4() {12641; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_4_4:12642; GFX900:       ; %bb.0:12643; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12644; GFX900-NEXT:    ;;#ASMSTART12645; GFX900-NEXT:    ; def s[4:5]12646; GFX900-NEXT:    ;;#ASMEND12647; GFX900-NEXT:    s_lshr_b32 s5, s5, 1612648; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s412649; GFX900-NEXT:    s_mov_b32 s9, s412650; GFX900-NEXT:    ;;#ASMSTART12651; GFX900-NEXT:    ; use s[8:9]12652; GFX900-NEXT:    ;;#ASMEND12653; GFX900-NEXT:    s_setpc_b64 s[30:31]12654;12655; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_4_4:12656; GFX90A:       ; %bb.0:12657; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12658; GFX90A-NEXT:    ;;#ASMSTART12659; GFX90A-NEXT:    ; def s[4:5]12660; GFX90A-NEXT:    ;;#ASMEND12661; GFX90A-NEXT:    s_lshr_b32 s5, s5, 1612662; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s412663; GFX90A-NEXT:    s_mov_b32 s9, s412664; GFX90A-NEXT:    ;;#ASMSTART12665; GFX90A-NEXT:    ; use s[8:9]12666; GFX90A-NEXT:    ;;#ASMEND12667; GFX90A-NEXT:    s_setpc_b64 s[30:31]12668;12669; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_4_4:12670; GFX942:       ; %bb.0:12671; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12672; GFX942-NEXT:    ;;#ASMSTART12673; GFX942-NEXT:    ; def s[0:1]12674; GFX942-NEXT:    ;;#ASMEND12675; GFX942-NEXT:    s_lshr_b32 s1, s1, 1612676; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s012677; GFX942-NEXT:    s_mov_b32 s9, s012678; GFX942-NEXT:    ;;#ASMSTART12679; GFX942-NEXT:    ; use s[8:9]12680; GFX942-NEXT:    ;;#ASMEND12681; GFX942-NEXT:    s_setpc_b64 s[30:31]12682  %vec0 = call <4 x half> asm "; def $0", "=s"()12683  %vec1 = call <4 x half> asm "; def $0", "=s"()12684  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 4, i32 4>12685  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12686  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)12687  ret void12688}12689 12690define void @s_shuffle_v3f16_v4f16__7_u_4() {12691; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_u_4:12692; GFX900:       ; %bb.0:12693; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12694; GFX900-NEXT:    ;;#ASMSTART12695; GFX900-NEXT:    ; def s[4:5]12696; GFX900-NEXT:    ;;#ASMEND12697; GFX900-NEXT:    s_lshr_b32 s8, s5, 1612698; GFX900-NEXT:    s_mov_b32 s9, s412699; GFX900-NEXT:    ;;#ASMSTART12700; GFX900-NEXT:    ; use s[8:9]12701; GFX900-NEXT:    ;;#ASMEND12702; GFX900-NEXT:    s_setpc_b64 s[30:31]12703;12704; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_u_4:12705; GFX90A:       ; %bb.0:12706; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12707; GFX90A-NEXT:    ;;#ASMSTART12708; GFX90A-NEXT:    ; def s[4:5]12709; GFX90A-NEXT:    ;;#ASMEND12710; GFX90A-NEXT:    s_lshr_b32 s8, s5, 1612711; GFX90A-NEXT:    s_mov_b32 s9, s412712; GFX90A-NEXT:    ;;#ASMSTART12713; GFX90A-NEXT:    ; use s[8:9]12714; GFX90A-NEXT:    ;;#ASMEND12715; GFX90A-NEXT:    s_setpc_b64 s[30:31]12716;12717; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_u_4:12718; GFX942:       ; %bb.0:12719; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12720; GFX942-NEXT:    ;;#ASMSTART12721; GFX942-NEXT:    ; def s[0:1]12722; GFX942-NEXT:    ;;#ASMEND12723; GFX942-NEXT:    s_lshr_b32 s8, s1, 1612724; GFX942-NEXT:    s_mov_b32 s9, s012725; GFX942-NEXT:    ;;#ASMSTART12726; GFX942-NEXT:    ; use s[8:9]12727; GFX942-NEXT:    ;;#ASMEND12728; GFX942-NEXT:    s_setpc_b64 s[30:31]12729  %vec0 = call <4 x half> asm "; def $0", "=s"()12730  %vec1 = call <4 x half> asm "; def $0", "=s"()12731  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 poison, i32 4>12732  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12733  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)12734  ret void12735}12736 12737define void @s_shuffle_v3f16_v4f16__7_0_4() {12738; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_0_4:12739; GFX900:       ; %bb.0:12740; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12741; GFX900-NEXT:    ;;#ASMSTART12742; GFX900-NEXT:    ; def s[4:5]12743; GFX900-NEXT:    ;;#ASMEND12744; GFX900-NEXT:    ;;#ASMSTART12745; GFX900-NEXT:    ; def s[6:7]12746; GFX900-NEXT:    ;;#ASMEND12747; GFX900-NEXT:    s_lshr_b32 s5, s7, 1612748; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s412749; GFX900-NEXT:    s_mov_b32 s9, s612750; GFX900-NEXT:    ;;#ASMSTART12751; GFX900-NEXT:    ; use s[8:9]12752; GFX900-NEXT:    ;;#ASMEND12753; GFX900-NEXT:    s_setpc_b64 s[30:31]12754;12755; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_0_4:12756; GFX90A:       ; %bb.0:12757; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12758; GFX90A-NEXT:    ;;#ASMSTART12759; GFX90A-NEXT:    ; def s[4:5]12760; GFX90A-NEXT:    ;;#ASMEND12761; GFX90A-NEXT:    ;;#ASMSTART12762; GFX90A-NEXT:    ; def s[6:7]12763; GFX90A-NEXT:    ;;#ASMEND12764; GFX90A-NEXT:    s_lshr_b32 s5, s7, 1612765; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s412766; GFX90A-NEXT:    s_mov_b32 s9, s612767; GFX90A-NEXT:    ;;#ASMSTART12768; GFX90A-NEXT:    ; use s[8:9]12769; GFX90A-NEXT:    ;;#ASMEND12770; GFX90A-NEXT:    s_setpc_b64 s[30:31]12771;12772; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_0_4:12773; GFX942:       ; %bb.0:12774; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12775; GFX942-NEXT:    ;;#ASMSTART12776; GFX942-NEXT:    ; def s[0:1]12777; GFX942-NEXT:    ;;#ASMEND12778; GFX942-NEXT:    ;;#ASMSTART12779; GFX942-NEXT:    ; def s[2:3]12780; GFX942-NEXT:    ;;#ASMEND12781; GFX942-NEXT:    s_lshr_b32 s1, s3, 1612782; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s012783; GFX942-NEXT:    s_mov_b32 s9, s212784; GFX942-NEXT:    ;;#ASMSTART12785; GFX942-NEXT:    ; use s[8:9]12786; GFX942-NEXT:    ;;#ASMEND12787; GFX942-NEXT:    s_setpc_b64 s[30:31]12788  %vec0 = call <4 x half> asm "; def $0", "=s"()12789  %vec1 = call <4 x half> asm "; def $0", "=s"()12790  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 0, i32 4>12791  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12792  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)12793  ret void12794}12795 12796define void @s_shuffle_v3f16_v4f16__7_1_4() {12797; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_1_4:12798; GFX900:       ; %bb.0:12799; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12800; GFX900-NEXT:    ;;#ASMSTART12801; GFX900-NEXT:    ; def s[4:5]12802; GFX900-NEXT:    ;;#ASMEND12803; GFX900-NEXT:    ;;#ASMSTART12804; GFX900-NEXT:    ; def s[6:7]12805; GFX900-NEXT:    ;;#ASMEND12806; GFX900-NEXT:    s_lshr_b32 s4, s4, 1612807; GFX900-NEXT:    s_lshr_b32 s5, s7, 1612808; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s412809; GFX900-NEXT:    s_mov_b32 s9, s612810; GFX900-NEXT:    ;;#ASMSTART12811; GFX900-NEXT:    ; use s[8:9]12812; GFX900-NEXT:    ;;#ASMEND12813; GFX900-NEXT:    s_setpc_b64 s[30:31]12814;12815; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_1_4:12816; GFX90A:       ; %bb.0:12817; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12818; GFX90A-NEXT:    ;;#ASMSTART12819; GFX90A-NEXT:    ; def s[4:5]12820; GFX90A-NEXT:    ;;#ASMEND12821; GFX90A-NEXT:    ;;#ASMSTART12822; GFX90A-NEXT:    ; def s[6:7]12823; GFX90A-NEXT:    ;;#ASMEND12824; GFX90A-NEXT:    s_lshr_b32 s4, s4, 1612825; GFX90A-NEXT:    s_lshr_b32 s5, s7, 1612826; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s412827; GFX90A-NEXT:    s_mov_b32 s9, s612828; GFX90A-NEXT:    ;;#ASMSTART12829; GFX90A-NEXT:    ; use s[8:9]12830; GFX90A-NEXT:    ;;#ASMEND12831; GFX90A-NEXT:    s_setpc_b64 s[30:31]12832;12833; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_1_4:12834; GFX942:       ; %bb.0:12835; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12836; GFX942-NEXT:    ;;#ASMSTART12837; GFX942-NEXT:    ; def s[0:1]12838; GFX942-NEXT:    ;;#ASMEND12839; GFX942-NEXT:    ;;#ASMSTART12840; GFX942-NEXT:    ; def s[2:3]12841; GFX942-NEXT:    ;;#ASMEND12842; GFX942-NEXT:    s_lshr_b32 s0, s0, 1612843; GFX942-NEXT:    s_lshr_b32 s1, s3, 1612844; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s012845; GFX942-NEXT:    s_mov_b32 s9, s212846; GFX942-NEXT:    ;;#ASMSTART12847; GFX942-NEXT:    ; use s[8:9]12848; GFX942-NEXT:    ;;#ASMEND12849; GFX942-NEXT:    s_setpc_b64 s[30:31]12850  %vec0 = call <4 x half> asm "; def $0", "=s"()12851  %vec1 = call <4 x half> asm "; def $0", "=s"()12852  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 1, i32 4>12853  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12854  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)12855  ret void12856}12857 12858define void @s_shuffle_v3f16_v4f16__7_2_4() {12859; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_2_4:12860; GFX900:       ; %bb.0:12861; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12862; GFX900-NEXT:    ;;#ASMSTART12863; GFX900-NEXT:    ; def s[4:5]12864; GFX900-NEXT:    ;;#ASMEND12865; GFX900-NEXT:    ;;#ASMSTART12866; GFX900-NEXT:    ; def s[6:7]12867; GFX900-NEXT:    ;;#ASMEND12868; GFX900-NEXT:    s_lshr_b32 s4, s7, 1612869; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s512870; GFX900-NEXT:    s_mov_b32 s9, s612871; GFX900-NEXT:    ;;#ASMSTART12872; GFX900-NEXT:    ; use s[8:9]12873; GFX900-NEXT:    ;;#ASMEND12874; GFX900-NEXT:    s_setpc_b64 s[30:31]12875;12876; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_2_4:12877; GFX90A:       ; %bb.0:12878; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12879; GFX90A-NEXT:    ;;#ASMSTART12880; GFX90A-NEXT:    ; def s[4:5]12881; GFX90A-NEXT:    ;;#ASMEND12882; GFX90A-NEXT:    ;;#ASMSTART12883; GFX90A-NEXT:    ; def s[6:7]12884; GFX90A-NEXT:    ;;#ASMEND12885; GFX90A-NEXT:    s_lshr_b32 s4, s7, 1612886; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s512887; GFX90A-NEXT:    s_mov_b32 s9, s612888; GFX90A-NEXT:    ;;#ASMSTART12889; GFX90A-NEXT:    ; use s[8:9]12890; GFX90A-NEXT:    ;;#ASMEND12891; GFX90A-NEXT:    s_setpc_b64 s[30:31]12892;12893; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_2_4:12894; GFX942:       ; %bb.0:12895; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12896; GFX942-NEXT:    ;;#ASMSTART12897; GFX942-NEXT:    ; def s[0:1]12898; GFX942-NEXT:    ;;#ASMEND12899; GFX942-NEXT:    ;;#ASMSTART12900; GFX942-NEXT:    ; def s[2:3]12901; GFX942-NEXT:    ;;#ASMEND12902; GFX942-NEXT:    s_lshr_b32 s0, s3, 1612903; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s112904; GFX942-NEXT:    s_mov_b32 s9, s212905; GFX942-NEXT:    ;;#ASMSTART12906; GFX942-NEXT:    ; use s[8:9]12907; GFX942-NEXT:    ;;#ASMEND12908; GFX942-NEXT:    s_setpc_b64 s[30:31]12909  %vec0 = call <4 x half> asm "; def $0", "=s"()12910  %vec1 = call <4 x half> asm "; def $0", "=s"()12911  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 2, i32 4>12912  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12913  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)12914  ret void12915}12916 12917define void @s_shuffle_v3f16_v4f16__7_3_4() {12918; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_3_4:12919; GFX900:       ; %bb.0:12920; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12921; GFX900-NEXT:    ;;#ASMSTART12922; GFX900-NEXT:    ; def s[4:5]12923; GFX900-NEXT:    ;;#ASMEND12924; GFX900-NEXT:    ;;#ASMSTART12925; GFX900-NEXT:    ; def s[6:7]12926; GFX900-NEXT:    ;;#ASMEND12927; GFX900-NEXT:    s_lshr_b32 s4, s5, 1612928; GFX900-NEXT:    s_lshr_b32 s5, s7, 1612929; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s412930; GFX900-NEXT:    s_mov_b32 s9, s612931; GFX900-NEXT:    ;;#ASMSTART12932; GFX900-NEXT:    ; use s[8:9]12933; GFX900-NEXT:    ;;#ASMEND12934; GFX900-NEXT:    s_setpc_b64 s[30:31]12935;12936; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_3_4:12937; GFX90A:       ; %bb.0:12938; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12939; GFX90A-NEXT:    ;;#ASMSTART12940; GFX90A-NEXT:    ; def s[4:5]12941; GFX90A-NEXT:    ;;#ASMEND12942; GFX90A-NEXT:    ;;#ASMSTART12943; GFX90A-NEXT:    ; def s[6:7]12944; GFX90A-NEXT:    ;;#ASMEND12945; GFX90A-NEXT:    s_lshr_b32 s4, s5, 1612946; GFX90A-NEXT:    s_lshr_b32 s5, s7, 1612947; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s412948; GFX90A-NEXT:    s_mov_b32 s9, s612949; GFX90A-NEXT:    ;;#ASMSTART12950; GFX90A-NEXT:    ; use s[8:9]12951; GFX90A-NEXT:    ;;#ASMEND12952; GFX90A-NEXT:    s_setpc_b64 s[30:31]12953;12954; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_3_4:12955; GFX942:       ; %bb.0:12956; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12957; GFX942-NEXT:    ;;#ASMSTART12958; GFX942-NEXT:    ; def s[0:1]12959; GFX942-NEXT:    ;;#ASMEND12960; GFX942-NEXT:    ;;#ASMSTART12961; GFX942-NEXT:    ; def s[2:3]12962; GFX942-NEXT:    ;;#ASMEND12963; GFX942-NEXT:    s_lshr_b32 s0, s1, 1612964; GFX942-NEXT:    s_lshr_b32 s1, s3, 1612965; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s012966; GFX942-NEXT:    s_mov_b32 s9, s212967; GFX942-NEXT:    ;;#ASMSTART12968; GFX942-NEXT:    ; use s[8:9]12969; GFX942-NEXT:    ;;#ASMEND12970; GFX942-NEXT:    s_setpc_b64 s[30:31]12971  %vec0 = call <4 x half> asm "; def $0", "=s"()12972  %vec1 = call <4 x half> asm "; def $0", "=s"()12973  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 3, i32 4>12974  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>12975  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)12976  ret void12977}12978 12979define void @s_shuffle_v3f16_v4f16__7_5_4() {12980; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_5_4:12981; GFX900:       ; %bb.0:12982; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12983; GFX900-NEXT:    ;;#ASMSTART12984; GFX900-NEXT:    ; def s[4:5]12985; GFX900-NEXT:    ;;#ASMEND12986; GFX900-NEXT:    s_lshr_b32 s6, s4, 1612987; GFX900-NEXT:    s_lshr_b32 s5, s5, 1612988; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s612989; GFX900-NEXT:    s_mov_b32 s9, s412990; GFX900-NEXT:    ;;#ASMSTART12991; GFX900-NEXT:    ; use s[8:9]12992; GFX900-NEXT:    ;;#ASMEND12993; GFX900-NEXT:    s_setpc_b64 s[30:31]12994;12995; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_5_4:12996; GFX90A:       ; %bb.0:12997; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12998; GFX90A-NEXT:    ;;#ASMSTART12999; GFX90A-NEXT:    ; def s[4:5]13000; GFX90A-NEXT:    ;;#ASMEND13001; GFX90A-NEXT:    s_lshr_b32 s6, s4, 1613002; GFX90A-NEXT:    s_lshr_b32 s5, s5, 1613003; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s613004; GFX90A-NEXT:    s_mov_b32 s9, s413005; GFX90A-NEXT:    ;;#ASMSTART13006; GFX90A-NEXT:    ; use s[8:9]13007; GFX90A-NEXT:    ;;#ASMEND13008; GFX90A-NEXT:    s_setpc_b64 s[30:31]13009;13010; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_5_4:13011; GFX942:       ; %bb.0:13012; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13013; GFX942-NEXT:    ;;#ASMSTART13014; GFX942-NEXT:    ; def s[0:1]13015; GFX942-NEXT:    ;;#ASMEND13016; GFX942-NEXT:    s_lshr_b32 s2, s0, 1613017; GFX942-NEXT:    s_lshr_b32 s1, s1, 1613018; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s213019; GFX942-NEXT:    s_mov_b32 s9, s013020; GFX942-NEXT:    ;;#ASMSTART13021; GFX942-NEXT:    ; use s[8:9]13022; GFX942-NEXT:    ;;#ASMEND13023; GFX942-NEXT:    s_setpc_b64 s[30:31]13024  %vec0 = call <4 x half> asm "; def $0", "=s"()13025  %vec1 = call <4 x half> asm "; def $0", "=s"()13026  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 5, i32 4>13027  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13028  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)13029  ret void13030}13031 13032define void @s_shuffle_v3f16_v4f16__7_6_4() {13033; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_6_4:13034; GFX900:       ; %bb.0:13035; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13036; GFX900-NEXT:    ;;#ASMSTART13037; GFX900-NEXT:    ; def s[4:5]13038; GFX900-NEXT:    ;;#ASMEND13039; GFX900-NEXT:    s_lshr_b32 s6, s5, 1613040; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s6, s513041; GFX900-NEXT:    s_mov_b32 s9, s413042; GFX900-NEXT:    ;;#ASMSTART13043; GFX900-NEXT:    ; use s[8:9]13044; GFX900-NEXT:    ;;#ASMEND13045; GFX900-NEXT:    s_setpc_b64 s[30:31]13046;13047; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_6_4:13048; GFX90A:       ; %bb.0:13049; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13050; GFX90A-NEXT:    ;;#ASMSTART13051; GFX90A-NEXT:    ; def s[4:5]13052; GFX90A-NEXT:    ;;#ASMEND13053; GFX90A-NEXT:    s_lshr_b32 s6, s5, 1613054; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s6, s513055; GFX90A-NEXT:    s_mov_b32 s9, s413056; GFX90A-NEXT:    ;;#ASMSTART13057; GFX90A-NEXT:    ; use s[8:9]13058; GFX90A-NEXT:    ;;#ASMEND13059; GFX90A-NEXT:    s_setpc_b64 s[30:31]13060;13061; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_6_4:13062; GFX942:       ; %bb.0:13063; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13064; GFX942-NEXT:    ;;#ASMSTART13065; GFX942-NEXT:    ; def s[0:1]13066; GFX942-NEXT:    ;;#ASMEND13067; GFX942-NEXT:    s_lshr_b32 s2, s1, 1613068; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s2, s113069; GFX942-NEXT:    s_mov_b32 s9, s013070; GFX942-NEXT:    ;;#ASMSTART13071; GFX942-NEXT:    ; use s[8:9]13072; GFX942-NEXT:    ;;#ASMEND13073; GFX942-NEXT:    s_setpc_b64 s[30:31]13074  %vec0 = call <4 x half> asm "; def $0", "=s"()13075  %vec1 = call <4 x half> asm "; def $0", "=s"()13076  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 6, i32 4>13077  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13078  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)13079  ret void13080}13081 13082define void @s_shuffle_v3f16_v4f16__u_5_5() {13083; GFX9-LABEL: s_shuffle_v3f16_v4f16__u_5_5:13084; GFX9:       ; %bb.0:13085; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13086; GFX9-NEXT:    ;;#ASMSTART13087; GFX9-NEXT:    ; def s[8:9]13088; GFX9-NEXT:    ;;#ASMEND13089; GFX9-NEXT:    s_lshr_b32 s9, s8, 1613090; GFX9-NEXT:    ;;#ASMSTART13091; GFX9-NEXT:    ; use s[8:9]13092; GFX9-NEXT:    ;;#ASMEND13093; GFX9-NEXT:    s_setpc_b64 s[30:31]13094  %vec0 = call <4 x half> asm "; def $0", "=s"()13095  %vec1 = call <4 x half> asm "; def $0", "=s"()13096  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 poison, i32 5, i32 5>13097  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13098  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)13099  ret void13100}13101 13102define void @s_shuffle_v3f16_v4f16__0_5_5() {13103; GFX900-LABEL: s_shuffle_v3f16_v4f16__0_5_5:13104; GFX900:       ; %bb.0:13105; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13106; GFX900-NEXT:    ;;#ASMSTART13107; GFX900-NEXT:    ; def s[6:7]13108; GFX900-NEXT:    ;;#ASMEND13109; GFX900-NEXT:    s_lshr_b32 s9, s6, 1613110; GFX900-NEXT:    ;;#ASMSTART13111; GFX900-NEXT:    ; def s[4:5]13112; GFX900-NEXT:    ;;#ASMEND13113; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s913114; GFX900-NEXT:    ;;#ASMSTART13115; GFX900-NEXT:    ; use s[8:9]13116; GFX900-NEXT:    ;;#ASMEND13117; GFX900-NEXT:    s_setpc_b64 s[30:31]13118;13119; GFX90A-LABEL: s_shuffle_v3f16_v4f16__0_5_5:13120; GFX90A:       ; %bb.0:13121; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13122; GFX90A-NEXT:    ;;#ASMSTART13123; GFX90A-NEXT:    ; def s[6:7]13124; GFX90A-NEXT:    ;;#ASMEND13125; GFX90A-NEXT:    s_lshr_b32 s9, s6, 1613126; GFX90A-NEXT:    ;;#ASMSTART13127; GFX90A-NEXT:    ; def s[4:5]13128; GFX90A-NEXT:    ;;#ASMEND13129; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s913130; GFX90A-NEXT:    ;;#ASMSTART13131; GFX90A-NEXT:    ; use s[8:9]13132; GFX90A-NEXT:    ;;#ASMEND13133; GFX90A-NEXT:    s_setpc_b64 s[30:31]13134;13135; GFX942-LABEL: s_shuffle_v3f16_v4f16__0_5_5:13136; GFX942:       ; %bb.0:13137; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13138; GFX942-NEXT:    ;;#ASMSTART13139; GFX942-NEXT:    ; def s[2:3]13140; GFX942-NEXT:    ;;#ASMEND13141; GFX942-NEXT:    s_lshr_b32 s9, s2, 1613142; GFX942-NEXT:    ;;#ASMSTART13143; GFX942-NEXT:    ; def s[0:1]13144; GFX942-NEXT:    ;;#ASMEND13145; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s913146; GFX942-NEXT:    ;;#ASMSTART13147; GFX942-NEXT:    ; use s[8:9]13148; GFX942-NEXT:    ;;#ASMEND13149; GFX942-NEXT:    s_setpc_b64 s[30:31]13150  %vec0 = call <4 x half> asm "; def $0", "=s"()13151  %vec1 = call <4 x half> asm "; def $0", "=s"()13152  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 0, i32 5, i32 5>13153  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13154  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)13155  ret void13156}13157 13158define void @s_shuffle_v3f16_v4f16__1_5_5() {13159; GFX900-LABEL: s_shuffle_v3f16_v4f16__1_5_5:13160; GFX900:       ; %bb.0:13161; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13162; GFX900-NEXT:    ;;#ASMSTART13163; GFX900-NEXT:    ; def s[4:5]13164; GFX900-NEXT:    ;;#ASMEND13165; GFX900-NEXT:    ;;#ASMSTART13166; GFX900-NEXT:    ; def s[6:7]13167; GFX900-NEXT:    ;;#ASMEND13168; GFX900-NEXT:    s_lshr_b32 s9, s6, 1613169; GFX900-NEXT:    s_lshr_b32 s4, s4, 1613170; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s913171; GFX900-NEXT:    ;;#ASMSTART13172; GFX900-NEXT:    ; use s[8:9]13173; GFX900-NEXT:    ;;#ASMEND13174; GFX900-NEXT:    s_setpc_b64 s[30:31]13175;13176; GFX90A-LABEL: s_shuffle_v3f16_v4f16__1_5_5:13177; GFX90A:       ; %bb.0:13178; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13179; GFX90A-NEXT:    ;;#ASMSTART13180; GFX90A-NEXT:    ; def s[4:5]13181; GFX90A-NEXT:    ;;#ASMEND13182; GFX90A-NEXT:    ;;#ASMSTART13183; GFX90A-NEXT:    ; def s[6:7]13184; GFX90A-NEXT:    ;;#ASMEND13185; GFX90A-NEXT:    s_lshr_b32 s9, s6, 1613186; GFX90A-NEXT:    s_lshr_b32 s4, s4, 1613187; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s913188; GFX90A-NEXT:    ;;#ASMSTART13189; GFX90A-NEXT:    ; use s[8:9]13190; GFX90A-NEXT:    ;;#ASMEND13191; GFX90A-NEXT:    s_setpc_b64 s[30:31]13192;13193; GFX942-LABEL: s_shuffle_v3f16_v4f16__1_5_5:13194; GFX942:       ; %bb.0:13195; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13196; GFX942-NEXT:    ;;#ASMSTART13197; GFX942-NEXT:    ; def s[0:1]13198; GFX942-NEXT:    ;;#ASMEND13199; GFX942-NEXT:    ;;#ASMSTART13200; GFX942-NEXT:    ; def s[2:3]13201; GFX942-NEXT:    ;;#ASMEND13202; GFX942-NEXT:    s_lshr_b32 s9, s2, 1613203; GFX942-NEXT:    s_lshr_b32 s0, s0, 1613204; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s913205; GFX942-NEXT:    ;;#ASMSTART13206; GFX942-NEXT:    ; use s[8:9]13207; GFX942-NEXT:    ;;#ASMEND13208; GFX942-NEXT:    s_setpc_b64 s[30:31]13209  %vec0 = call <4 x half> asm "; def $0", "=s"()13210  %vec1 = call <4 x half> asm "; def $0", "=s"()13211  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 1, i32 5, i32 5>13212  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13213  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)13214  ret void13215}13216 13217define void @s_shuffle_v3f16_v4f16__2_5_5() {13218; GFX900-LABEL: s_shuffle_v3f16_v4f16__2_5_5:13219; GFX900:       ; %bb.0:13220; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13221; GFX900-NEXT:    ;;#ASMSTART13222; GFX900-NEXT:    ; def s[6:7]13223; GFX900-NEXT:    ;;#ASMEND13224; GFX900-NEXT:    s_lshr_b32 s9, s6, 1613225; GFX900-NEXT:    ;;#ASMSTART13226; GFX900-NEXT:    ; def s[4:5]13227; GFX900-NEXT:    ;;#ASMEND13228; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s913229; GFX900-NEXT:    ;;#ASMSTART13230; GFX900-NEXT:    ; use s[8:9]13231; GFX900-NEXT:    ;;#ASMEND13232; GFX900-NEXT:    s_setpc_b64 s[30:31]13233;13234; GFX90A-LABEL: s_shuffle_v3f16_v4f16__2_5_5:13235; GFX90A:       ; %bb.0:13236; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13237; GFX90A-NEXT:    ;;#ASMSTART13238; GFX90A-NEXT:    ; def s[6:7]13239; GFX90A-NEXT:    ;;#ASMEND13240; GFX90A-NEXT:    s_lshr_b32 s9, s6, 1613241; GFX90A-NEXT:    ;;#ASMSTART13242; GFX90A-NEXT:    ; def s[4:5]13243; GFX90A-NEXT:    ;;#ASMEND13244; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s913245; GFX90A-NEXT:    ;;#ASMSTART13246; GFX90A-NEXT:    ; use s[8:9]13247; GFX90A-NEXT:    ;;#ASMEND13248; GFX90A-NEXT:    s_setpc_b64 s[30:31]13249;13250; GFX942-LABEL: s_shuffle_v3f16_v4f16__2_5_5:13251; GFX942:       ; %bb.0:13252; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13253; GFX942-NEXT:    ;;#ASMSTART13254; GFX942-NEXT:    ; def s[2:3]13255; GFX942-NEXT:    ;;#ASMEND13256; GFX942-NEXT:    s_lshr_b32 s9, s2, 1613257; GFX942-NEXT:    ;;#ASMSTART13258; GFX942-NEXT:    ; def s[0:1]13259; GFX942-NEXT:    ;;#ASMEND13260; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s913261; GFX942-NEXT:    ;;#ASMSTART13262; GFX942-NEXT:    ; use s[8:9]13263; GFX942-NEXT:    ;;#ASMEND13264; GFX942-NEXT:    s_setpc_b64 s[30:31]13265  %vec0 = call <4 x half> asm "; def $0", "=s"()13266  %vec1 = call <4 x half> asm "; def $0", "=s"()13267  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 2, i32 5, i32 5>13268  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13269  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)13270  ret void13271}13272 13273define void @s_shuffle_v3f16_v4f16__3_5_5() {13274; GFX900-LABEL: s_shuffle_v3f16_v4f16__3_5_5:13275; GFX900:       ; %bb.0:13276; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13277; GFX900-NEXT:    ;;#ASMSTART13278; GFX900-NEXT:    ; def s[4:5]13279; GFX900-NEXT:    ;;#ASMEND13280; GFX900-NEXT:    ;;#ASMSTART13281; GFX900-NEXT:    ; def s[6:7]13282; GFX900-NEXT:    ;;#ASMEND13283; GFX900-NEXT:    s_lshr_b32 s9, s6, 1613284; GFX900-NEXT:    s_lshr_b32 s4, s5, 1613285; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s913286; GFX900-NEXT:    ;;#ASMSTART13287; GFX900-NEXT:    ; use s[8:9]13288; GFX900-NEXT:    ;;#ASMEND13289; GFX900-NEXT:    s_setpc_b64 s[30:31]13290;13291; GFX90A-LABEL: s_shuffle_v3f16_v4f16__3_5_5:13292; GFX90A:       ; %bb.0:13293; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13294; GFX90A-NEXT:    ;;#ASMSTART13295; GFX90A-NEXT:    ; def s[4:5]13296; GFX90A-NEXT:    ;;#ASMEND13297; GFX90A-NEXT:    ;;#ASMSTART13298; GFX90A-NEXT:    ; def s[6:7]13299; GFX90A-NEXT:    ;;#ASMEND13300; GFX90A-NEXT:    s_lshr_b32 s9, s6, 1613301; GFX90A-NEXT:    s_lshr_b32 s4, s5, 1613302; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s913303; GFX90A-NEXT:    ;;#ASMSTART13304; GFX90A-NEXT:    ; use s[8:9]13305; GFX90A-NEXT:    ;;#ASMEND13306; GFX90A-NEXT:    s_setpc_b64 s[30:31]13307;13308; GFX942-LABEL: s_shuffle_v3f16_v4f16__3_5_5:13309; GFX942:       ; %bb.0:13310; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13311; GFX942-NEXT:    ;;#ASMSTART13312; GFX942-NEXT:    ; def s[0:1]13313; GFX942-NEXT:    ;;#ASMEND13314; GFX942-NEXT:    ;;#ASMSTART13315; GFX942-NEXT:    ; def s[2:3]13316; GFX942-NEXT:    ;;#ASMEND13317; GFX942-NEXT:    s_lshr_b32 s9, s2, 1613318; GFX942-NEXT:    s_lshr_b32 s0, s1, 1613319; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s913320; GFX942-NEXT:    ;;#ASMSTART13321; GFX942-NEXT:    ; use s[8:9]13322; GFX942-NEXT:    ;;#ASMEND13323; GFX942-NEXT:    s_setpc_b64 s[30:31]13324  %vec0 = call <4 x half> asm "; def $0", "=s"()13325  %vec1 = call <4 x half> asm "; def $0", "=s"()13326  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 3, i32 5, i32 5>13327  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13328  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)13329  ret void13330}13331 13332define void @s_shuffle_v3f16_v4f16__4_5_5() {13333; GFX9-LABEL: s_shuffle_v3f16_v4f16__4_5_5:13334; GFX9:       ; %bb.0:13335; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13336; GFX9-NEXT:    ;;#ASMSTART13337; GFX9-NEXT:    ; def s[8:9]13338; GFX9-NEXT:    ;;#ASMEND13339; GFX9-NEXT:    s_lshr_b32 s9, s8, 1613340; GFX9-NEXT:    ;;#ASMSTART13341; GFX9-NEXT:    ; use s[8:9]13342; GFX9-NEXT:    ;;#ASMEND13343; GFX9-NEXT:    s_setpc_b64 s[30:31]13344  %vec0 = call <4 x half> asm "; def $0", "=s"()13345  %vec1 = call <4 x half> asm "; def $0", "=s"()13346  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 4, i32 5, i32 5>13347  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13348  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)13349  ret void13350}13351 13352define void @s_shuffle_v3f16_v4f16__5_5_5() {13353; GFX900-LABEL: s_shuffle_v3f16_v4f16__5_5_5:13354; GFX900:       ; %bb.0:13355; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13356; GFX900-NEXT:    ;;#ASMSTART13357; GFX900-NEXT:    ; def s[4:5]13358; GFX900-NEXT:    ;;#ASMEND13359; GFX900-NEXT:    s_lshr_b32 s9, s4, 1613360; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s9, s913361; GFX900-NEXT:    ;;#ASMSTART13362; GFX900-NEXT:    ; use s[8:9]13363; GFX900-NEXT:    ;;#ASMEND13364; GFX900-NEXT:    s_setpc_b64 s[30:31]13365;13366; GFX90A-LABEL: s_shuffle_v3f16_v4f16__5_5_5:13367; GFX90A:       ; %bb.0:13368; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13369; GFX90A-NEXT:    ;;#ASMSTART13370; GFX90A-NEXT:    ; def s[4:5]13371; GFX90A-NEXT:    ;;#ASMEND13372; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1613373; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s9, s913374; GFX90A-NEXT:    ;;#ASMSTART13375; GFX90A-NEXT:    ; use s[8:9]13376; GFX90A-NEXT:    ;;#ASMEND13377; GFX90A-NEXT:    s_setpc_b64 s[30:31]13378;13379; GFX942-LABEL: s_shuffle_v3f16_v4f16__5_5_5:13380; GFX942:       ; %bb.0:13381; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13382; GFX942-NEXT:    ;;#ASMSTART13383; GFX942-NEXT:    ; def s[0:1]13384; GFX942-NEXT:    ;;#ASMEND13385; GFX942-NEXT:    s_lshr_b32 s9, s0, 1613386; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s9, s913387; GFX942-NEXT:    ;;#ASMSTART13388; GFX942-NEXT:    ; use s[8:9]13389; GFX942-NEXT:    ;;#ASMEND13390; GFX942-NEXT:    s_setpc_b64 s[30:31]13391  %vec0 = call <4 x half> asm "; def $0", "=s"()13392  %vec1 = call <4 x half> asm "; def $0", "=s"()13393  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 5, i32 5, i32 5>13394  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13395  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)13396  ret void13397}13398 13399define void @s_shuffle_v3f16_v4f16__6_5_5() {13400; GFX900-LABEL: s_shuffle_v3f16_v4f16__6_5_5:13401; GFX900:       ; %bb.0:13402; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13403; GFX900-NEXT:    ;;#ASMSTART13404; GFX900-NEXT:    ; def s[4:5]13405; GFX900-NEXT:    ;;#ASMEND13406; GFX900-NEXT:    s_lshr_b32 s9, s4, 1613407; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s913408; GFX900-NEXT:    ;;#ASMSTART13409; GFX900-NEXT:    ; use s[8:9]13410; GFX900-NEXT:    ;;#ASMEND13411; GFX900-NEXT:    s_setpc_b64 s[30:31]13412;13413; GFX90A-LABEL: s_shuffle_v3f16_v4f16__6_5_5:13414; GFX90A:       ; %bb.0:13415; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13416; GFX90A-NEXT:    ;;#ASMSTART13417; GFX90A-NEXT:    ; def s[4:5]13418; GFX90A-NEXT:    ;;#ASMEND13419; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1613420; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s913421; GFX90A-NEXT:    ;;#ASMSTART13422; GFX90A-NEXT:    ; use s[8:9]13423; GFX90A-NEXT:    ;;#ASMEND13424; GFX90A-NEXT:    s_setpc_b64 s[30:31]13425;13426; GFX942-LABEL: s_shuffle_v3f16_v4f16__6_5_5:13427; GFX942:       ; %bb.0:13428; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13429; GFX942-NEXT:    ;;#ASMSTART13430; GFX942-NEXT:    ; def s[0:1]13431; GFX942-NEXT:    ;;#ASMEND13432; GFX942-NEXT:    s_lshr_b32 s9, s0, 1613433; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s913434; GFX942-NEXT:    ;;#ASMSTART13435; GFX942-NEXT:    ; use s[8:9]13436; GFX942-NEXT:    ;;#ASMEND13437; GFX942-NEXT:    s_setpc_b64 s[30:31]13438  %vec0 = call <4 x half> asm "; def $0", "=s"()13439  %vec1 = call <4 x half> asm "; def $0", "=s"()13440  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 6, i32 5, i32 5>13441  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13442  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)13443  ret void13444}13445 13446define void @s_shuffle_v3f16_v4f16__7_5_5() {13447; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_5_5:13448; GFX900:       ; %bb.0:13449; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13450; GFX900-NEXT:    ;;#ASMSTART13451; GFX900-NEXT:    ; def s[4:5]13452; GFX900-NEXT:    ;;#ASMEND13453; GFX900-NEXT:    s_lshr_b32 s9, s4, 1613454; GFX900-NEXT:    s_lshr_b32 s4, s5, 1613455; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s913456; GFX900-NEXT:    ;;#ASMSTART13457; GFX900-NEXT:    ; use s[8:9]13458; GFX900-NEXT:    ;;#ASMEND13459; GFX900-NEXT:    s_setpc_b64 s[30:31]13460;13461; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_5_5:13462; GFX90A:       ; %bb.0:13463; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13464; GFX90A-NEXT:    ;;#ASMSTART13465; GFX90A-NEXT:    ; def s[4:5]13466; GFX90A-NEXT:    ;;#ASMEND13467; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1613468; GFX90A-NEXT:    s_lshr_b32 s4, s5, 1613469; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s913470; GFX90A-NEXT:    ;;#ASMSTART13471; GFX90A-NEXT:    ; use s[8:9]13472; GFX90A-NEXT:    ;;#ASMEND13473; GFX90A-NEXT:    s_setpc_b64 s[30:31]13474;13475; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_5_5:13476; GFX942:       ; %bb.0:13477; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13478; GFX942-NEXT:    ;;#ASMSTART13479; GFX942-NEXT:    ; def s[0:1]13480; GFX942-NEXT:    ;;#ASMEND13481; GFX942-NEXT:    s_lshr_b32 s9, s0, 1613482; GFX942-NEXT:    s_lshr_b32 s0, s1, 1613483; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s913484; GFX942-NEXT:    ;;#ASMSTART13485; GFX942-NEXT:    ; use s[8:9]13486; GFX942-NEXT:    ;;#ASMEND13487; GFX942-NEXT:    s_setpc_b64 s[30:31]13488  %vec0 = call <4 x half> asm "; def $0", "=s"()13489  %vec1 = call <4 x half> asm "; def $0", "=s"()13490  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 5, i32 5>13491  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13492  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)13493  ret void13494}13495 13496define void @s_shuffle_v3f16_v4f16__7_u_5() {13497; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_u_5:13498; GFX900:       ; %bb.0:13499; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13500; GFX900-NEXT:    ;;#ASMSTART13501; GFX900-NEXT:    ; def s[4:5]13502; GFX900-NEXT:    ;;#ASMEND13503; GFX900-NEXT:    s_lshr_b32 s9, s4, 1613504; GFX900-NEXT:    s_lshr_b32 s8, s5, 1613505; GFX900-NEXT:    ;;#ASMSTART13506; GFX900-NEXT:    ; use s[8:9]13507; GFX900-NEXT:    ;;#ASMEND13508; GFX900-NEXT:    s_setpc_b64 s[30:31]13509;13510; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_u_5:13511; GFX90A:       ; %bb.0:13512; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13513; GFX90A-NEXT:    ;;#ASMSTART13514; GFX90A-NEXT:    ; def s[4:5]13515; GFX90A-NEXT:    ;;#ASMEND13516; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1613517; GFX90A-NEXT:    s_lshr_b32 s8, s5, 1613518; GFX90A-NEXT:    ;;#ASMSTART13519; GFX90A-NEXT:    ; use s[8:9]13520; GFX90A-NEXT:    ;;#ASMEND13521; GFX90A-NEXT:    s_setpc_b64 s[30:31]13522;13523; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_u_5:13524; GFX942:       ; %bb.0:13525; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13526; GFX942-NEXT:    ;;#ASMSTART13527; GFX942-NEXT:    ; def s[0:1]13528; GFX942-NEXT:    ;;#ASMEND13529; GFX942-NEXT:    s_lshr_b32 s9, s0, 1613530; GFX942-NEXT:    s_lshr_b32 s8, s1, 1613531; GFX942-NEXT:    ;;#ASMSTART13532; GFX942-NEXT:    ; use s[8:9]13533; GFX942-NEXT:    ;;#ASMEND13534; GFX942-NEXT:    s_setpc_b64 s[30:31]13535  %vec0 = call <4 x half> asm "; def $0", "=s"()13536  %vec1 = call <4 x half> asm "; def $0", "=s"()13537  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 poison, i32 5>13538  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13539  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)13540  ret void13541}13542 13543define void @s_shuffle_v3f16_v4f16__7_0_5() {13544; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_0_5:13545; GFX900:       ; %bb.0:13546; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13547; GFX900-NEXT:    ;;#ASMSTART13548; GFX900-NEXT:    ; def s[4:5]13549; GFX900-NEXT:    ;;#ASMEND13550; GFX900-NEXT:    ;;#ASMSTART13551; GFX900-NEXT:    ; def s[6:7]13552; GFX900-NEXT:    ;;#ASMEND13553; GFX900-NEXT:    s_lshr_b32 s5, s7, 1613554; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s413555; GFX900-NEXT:    s_lshr_b32 s9, s6, 1613556; GFX900-NEXT:    ;;#ASMSTART13557; GFX900-NEXT:    ; use s[8:9]13558; GFX900-NEXT:    ;;#ASMEND13559; GFX900-NEXT:    s_setpc_b64 s[30:31]13560;13561; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_0_5:13562; GFX90A:       ; %bb.0:13563; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13564; GFX90A-NEXT:    ;;#ASMSTART13565; GFX90A-NEXT:    ; def s[4:5]13566; GFX90A-NEXT:    ;;#ASMEND13567; GFX90A-NEXT:    ;;#ASMSTART13568; GFX90A-NEXT:    ; def s[6:7]13569; GFX90A-NEXT:    ;;#ASMEND13570; GFX90A-NEXT:    s_lshr_b32 s5, s7, 1613571; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s413572; GFX90A-NEXT:    s_lshr_b32 s9, s6, 1613573; GFX90A-NEXT:    ;;#ASMSTART13574; GFX90A-NEXT:    ; use s[8:9]13575; GFX90A-NEXT:    ;;#ASMEND13576; GFX90A-NEXT:    s_setpc_b64 s[30:31]13577;13578; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_0_5:13579; GFX942:       ; %bb.0:13580; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13581; GFX942-NEXT:    ;;#ASMSTART13582; GFX942-NEXT:    ; def s[0:1]13583; GFX942-NEXT:    ;;#ASMEND13584; GFX942-NEXT:    ;;#ASMSTART13585; GFX942-NEXT:    ; def s[2:3]13586; GFX942-NEXT:    ;;#ASMEND13587; GFX942-NEXT:    s_lshr_b32 s1, s3, 1613588; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s013589; GFX942-NEXT:    s_lshr_b32 s9, s2, 1613590; GFX942-NEXT:    ;;#ASMSTART13591; GFX942-NEXT:    ; use s[8:9]13592; GFX942-NEXT:    ;;#ASMEND13593; GFX942-NEXT:    s_setpc_b64 s[30:31]13594  %vec0 = call <4 x half> asm "; def $0", "=s"()13595  %vec1 = call <4 x half> asm "; def $0", "=s"()13596  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 0, i32 5>13597  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13598  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)13599  ret void13600}13601 13602define void @s_shuffle_v3f16_v4f16__7_1_5() {13603; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_1_5:13604; GFX900:       ; %bb.0:13605; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13606; GFX900-NEXT:    ;;#ASMSTART13607; GFX900-NEXT:    ; def s[4:5]13608; GFX900-NEXT:    ;;#ASMEND13609; GFX900-NEXT:    ;;#ASMSTART13610; GFX900-NEXT:    ; def s[6:7]13611; GFX900-NEXT:    ;;#ASMEND13612; GFX900-NEXT:    s_lshr_b32 s4, s4, 1613613; GFX900-NEXT:    s_lshr_b32 s5, s7, 1613614; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s413615; GFX900-NEXT:    s_lshr_b32 s9, s6, 1613616; GFX900-NEXT:    ;;#ASMSTART13617; GFX900-NEXT:    ; use s[8:9]13618; GFX900-NEXT:    ;;#ASMEND13619; GFX900-NEXT:    s_setpc_b64 s[30:31]13620;13621; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_1_5:13622; GFX90A:       ; %bb.0:13623; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13624; GFX90A-NEXT:    ;;#ASMSTART13625; GFX90A-NEXT:    ; def s[4:5]13626; GFX90A-NEXT:    ;;#ASMEND13627; GFX90A-NEXT:    ;;#ASMSTART13628; GFX90A-NEXT:    ; def s[6:7]13629; GFX90A-NEXT:    ;;#ASMEND13630; GFX90A-NEXT:    s_lshr_b32 s4, s4, 1613631; GFX90A-NEXT:    s_lshr_b32 s5, s7, 1613632; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s413633; GFX90A-NEXT:    s_lshr_b32 s9, s6, 1613634; GFX90A-NEXT:    ;;#ASMSTART13635; GFX90A-NEXT:    ; use s[8:9]13636; GFX90A-NEXT:    ;;#ASMEND13637; GFX90A-NEXT:    s_setpc_b64 s[30:31]13638;13639; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_1_5:13640; GFX942:       ; %bb.0:13641; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13642; GFX942-NEXT:    ;;#ASMSTART13643; GFX942-NEXT:    ; def s[0:1]13644; GFX942-NEXT:    ;;#ASMEND13645; GFX942-NEXT:    ;;#ASMSTART13646; GFX942-NEXT:    ; def s[2:3]13647; GFX942-NEXT:    ;;#ASMEND13648; GFX942-NEXT:    s_lshr_b32 s0, s0, 1613649; GFX942-NEXT:    s_lshr_b32 s1, s3, 1613650; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s013651; GFX942-NEXT:    s_lshr_b32 s9, s2, 1613652; GFX942-NEXT:    ;;#ASMSTART13653; GFX942-NEXT:    ; use s[8:9]13654; GFX942-NEXT:    ;;#ASMEND13655; GFX942-NEXT:    s_setpc_b64 s[30:31]13656  %vec0 = call <4 x half> asm "; def $0", "=s"()13657  %vec1 = call <4 x half> asm "; def $0", "=s"()13658  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 1, i32 5>13659  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13660  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)13661  ret void13662}13663 13664define void @s_shuffle_v3f16_v4f16__7_2_5() {13665; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_2_5:13666; GFX900:       ; %bb.0:13667; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13668; GFX900-NEXT:    ;;#ASMSTART13669; GFX900-NEXT:    ; def s[4:5]13670; GFX900-NEXT:    ;;#ASMEND13671; GFX900-NEXT:    ;;#ASMSTART13672; GFX900-NEXT:    ; def s[6:7]13673; GFX900-NEXT:    ;;#ASMEND13674; GFX900-NEXT:    s_lshr_b32 s4, s7, 1613675; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s513676; GFX900-NEXT:    s_lshr_b32 s9, s6, 1613677; GFX900-NEXT:    ;;#ASMSTART13678; GFX900-NEXT:    ; use s[8:9]13679; GFX900-NEXT:    ;;#ASMEND13680; GFX900-NEXT:    s_setpc_b64 s[30:31]13681;13682; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_2_5:13683; GFX90A:       ; %bb.0:13684; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13685; GFX90A-NEXT:    ;;#ASMSTART13686; GFX90A-NEXT:    ; def s[4:5]13687; GFX90A-NEXT:    ;;#ASMEND13688; GFX90A-NEXT:    ;;#ASMSTART13689; GFX90A-NEXT:    ; def s[6:7]13690; GFX90A-NEXT:    ;;#ASMEND13691; GFX90A-NEXT:    s_lshr_b32 s4, s7, 1613692; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s513693; GFX90A-NEXT:    s_lshr_b32 s9, s6, 1613694; GFX90A-NEXT:    ;;#ASMSTART13695; GFX90A-NEXT:    ; use s[8:9]13696; GFX90A-NEXT:    ;;#ASMEND13697; GFX90A-NEXT:    s_setpc_b64 s[30:31]13698;13699; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_2_5:13700; GFX942:       ; %bb.0:13701; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13702; GFX942-NEXT:    ;;#ASMSTART13703; GFX942-NEXT:    ; def s[0:1]13704; GFX942-NEXT:    ;;#ASMEND13705; GFX942-NEXT:    ;;#ASMSTART13706; GFX942-NEXT:    ; def s[2:3]13707; GFX942-NEXT:    ;;#ASMEND13708; GFX942-NEXT:    s_lshr_b32 s0, s3, 1613709; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s113710; GFX942-NEXT:    s_lshr_b32 s9, s2, 1613711; GFX942-NEXT:    ;;#ASMSTART13712; GFX942-NEXT:    ; use s[8:9]13713; GFX942-NEXT:    ;;#ASMEND13714; GFX942-NEXT:    s_setpc_b64 s[30:31]13715  %vec0 = call <4 x half> asm "; def $0", "=s"()13716  %vec1 = call <4 x half> asm "; def $0", "=s"()13717  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 2, i32 5>13718  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13719  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)13720  ret void13721}13722 13723define void @s_shuffle_v3f16_v4f16__7_3_5() {13724; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_3_5:13725; GFX900:       ; %bb.0:13726; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13727; GFX900-NEXT:    ;;#ASMSTART13728; GFX900-NEXT:    ; def s[4:5]13729; GFX900-NEXT:    ;;#ASMEND13730; GFX900-NEXT:    ;;#ASMSTART13731; GFX900-NEXT:    ; def s[6:7]13732; GFX900-NEXT:    ;;#ASMEND13733; GFX900-NEXT:    s_lshr_b32 s4, s5, 1613734; GFX900-NEXT:    s_lshr_b32 s5, s7, 1613735; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s413736; GFX900-NEXT:    s_lshr_b32 s9, s6, 1613737; GFX900-NEXT:    ;;#ASMSTART13738; GFX900-NEXT:    ; use s[8:9]13739; GFX900-NEXT:    ;;#ASMEND13740; GFX900-NEXT:    s_setpc_b64 s[30:31]13741;13742; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_3_5:13743; GFX90A:       ; %bb.0:13744; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13745; GFX90A-NEXT:    ;;#ASMSTART13746; GFX90A-NEXT:    ; def s[4:5]13747; GFX90A-NEXT:    ;;#ASMEND13748; GFX90A-NEXT:    ;;#ASMSTART13749; GFX90A-NEXT:    ; def s[6:7]13750; GFX90A-NEXT:    ;;#ASMEND13751; GFX90A-NEXT:    s_lshr_b32 s4, s5, 1613752; GFX90A-NEXT:    s_lshr_b32 s5, s7, 1613753; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s413754; GFX90A-NEXT:    s_lshr_b32 s9, s6, 1613755; GFX90A-NEXT:    ;;#ASMSTART13756; GFX90A-NEXT:    ; use s[8:9]13757; GFX90A-NEXT:    ;;#ASMEND13758; GFX90A-NEXT:    s_setpc_b64 s[30:31]13759;13760; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_3_5:13761; GFX942:       ; %bb.0:13762; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13763; GFX942-NEXT:    ;;#ASMSTART13764; GFX942-NEXT:    ; def s[0:1]13765; GFX942-NEXT:    ;;#ASMEND13766; GFX942-NEXT:    ;;#ASMSTART13767; GFX942-NEXT:    ; def s[2:3]13768; GFX942-NEXT:    ;;#ASMEND13769; GFX942-NEXT:    s_lshr_b32 s0, s1, 1613770; GFX942-NEXT:    s_lshr_b32 s1, s3, 1613771; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s013772; GFX942-NEXT:    s_lshr_b32 s9, s2, 1613773; GFX942-NEXT:    ;;#ASMSTART13774; GFX942-NEXT:    ; use s[8:9]13775; GFX942-NEXT:    ;;#ASMEND13776; GFX942-NEXT:    s_setpc_b64 s[30:31]13777  %vec0 = call <4 x half> asm "; def $0", "=s"()13778  %vec1 = call <4 x half> asm "; def $0", "=s"()13779  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 3, i32 5>13780  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13781  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)13782  ret void13783}13784 13785define void @s_shuffle_v3f16_v4f16__7_4_5() {13786; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_4_5:13787; GFX900:       ; %bb.0:13788; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13789; GFX900-NEXT:    ;;#ASMSTART13790; GFX900-NEXT:    ; def s[4:5]13791; GFX900-NEXT:    ;;#ASMEND13792; GFX900-NEXT:    s_lshr_b32 s5, s5, 1613793; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s413794; GFX900-NEXT:    s_lshr_b32 s9, s4, 1613795; GFX900-NEXT:    ;;#ASMSTART13796; GFX900-NEXT:    ; use s[8:9]13797; GFX900-NEXT:    ;;#ASMEND13798; GFX900-NEXT:    s_setpc_b64 s[30:31]13799;13800; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_4_5:13801; GFX90A:       ; %bb.0:13802; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13803; GFX90A-NEXT:    ;;#ASMSTART13804; GFX90A-NEXT:    ; def s[4:5]13805; GFX90A-NEXT:    ;;#ASMEND13806; GFX90A-NEXT:    s_lshr_b32 s5, s5, 1613807; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s413808; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1613809; GFX90A-NEXT:    ;;#ASMSTART13810; GFX90A-NEXT:    ; use s[8:9]13811; GFX90A-NEXT:    ;;#ASMEND13812; GFX90A-NEXT:    s_setpc_b64 s[30:31]13813;13814; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_4_5:13815; GFX942:       ; %bb.0:13816; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13817; GFX942-NEXT:    ;;#ASMSTART13818; GFX942-NEXT:    ; def s[0:1]13819; GFX942-NEXT:    ;;#ASMEND13820; GFX942-NEXT:    s_lshr_b32 s1, s1, 1613821; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s013822; GFX942-NEXT:    s_lshr_b32 s9, s0, 1613823; GFX942-NEXT:    ;;#ASMSTART13824; GFX942-NEXT:    ; use s[8:9]13825; GFX942-NEXT:    ;;#ASMEND13826; GFX942-NEXT:    s_setpc_b64 s[30:31]13827  %vec0 = call <4 x half> asm "; def $0", "=s"()13828  %vec1 = call <4 x half> asm "; def $0", "=s"()13829  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 4, i32 5>13830  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13831  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)13832  ret void13833}13834 13835define void @s_shuffle_v3f16_v4f16__7_6_5() {13836; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_6_5:13837; GFX900:       ; %bb.0:13838; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13839; GFX900-NEXT:    ;;#ASMSTART13840; GFX900-NEXT:    ; def s[4:5]13841; GFX900-NEXT:    ;;#ASMEND13842; GFX900-NEXT:    s_lshr_b32 s6, s5, 1613843; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s6, s513844; GFX900-NEXT:    s_lshr_b32 s9, s4, 1613845; GFX900-NEXT:    ;;#ASMSTART13846; GFX900-NEXT:    ; use s[8:9]13847; GFX900-NEXT:    ;;#ASMEND13848; GFX900-NEXT:    s_setpc_b64 s[30:31]13849;13850; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_6_5:13851; GFX90A:       ; %bb.0:13852; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13853; GFX90A-NEXT:    ;;#ASMSTART13854; GFX90A-NEXT:    ; def s[4:5]13855; GFX90A-NEXT:    ;;#ASMEND13856; GFX90A-NEXT:    s_lshr_b32 s6, s5, 1613857; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s6, s513858; GFX90A-NEXT:    s_lshr_b32 s9, s4, 1613859; GFX90A-NEXT:    ;;#ASMSTART13860; GFX90A-NEXT:    ; use s[8:9]13861; GFX90A-NEXT:    ;;#ASMEND13862; GFX90A-NEXT:    s_setpc_b64 s[30:31]13863;13864; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_6_5:13865; GFX942:       ; %bb.0:13866; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13867; GFX942-NEXT:    ;;#ASMSTART13868; GFX942-NEXT:    ; def s[0:1]13869; GFX942-NEXT:    ;;#ASMEND13870; GFX942-NEXT:    s_lshr_b32 s2, s1, 1613871; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s2, s113872; GFX942-NEXT:    s_lshr_b32 s9, s0, 1613873; GFX942-NEXT:    ;;#ASMSTART13874; GFX942-NEXT:    ; use s[8:9]13875; GFX942-NEXT:    ;;#ASMEND13876; GFX942-NEXT:    s_setpc_b64 s[30:31]13877  %vec0 = call <4 x half> asm "; def $0", "=s"()13878  %vec1 = call <4 x half> asm "; def $0", "=s"()13879  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 6, i32 5>13880  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13881  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)13882  ret void13883}13884 13885define void @s_shuffle_v3f16_v4f16__u_6_6() {13886; GFX9-LABEL: s_shuffle_v3f16_v4f16__u_6_6:13887; GFX9:       ; %bb.0:13888; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13889; GFX9-NEXT:    ;;#ASMSTART13890; GFX9-NEXT:    ; def s[8:9]13891; GFX9-NEXT:    ;;#ASMEND13892; GFX9-NEXT:    s_lshl_b32 s8, s9, 1613893; GFX9-NEXT:    ;;#ASMSTART13894; GFX9-NEXT:    ; use s[8:9]13895; GFX9-NEXT:    ;;#ASMEND13896; GFX9-NEXT:    s_setpc_b64 s[30:31]13897  %vec0 = call <4 x half> asm "; def $0", "=s"()13898  %vec1 = call <4 x half> asm "; def $0", "=s"()13899  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 poison, i32 6, i32 6>13900  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13901  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)13902  ret void13903}13904 13905define void @s_shuffle_v3f16_v4f16__0_6_6() {13906; GFX900-LABEL: s_shuffle_v3f16_v4f16__0_6_6:13907; GFX900:       ; %bb.0:13908; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13909; GFX900-NEXT:    ;;#ASMSTART13910; GFX900-NEXT:    ; def s[8:9]13911; GFX900-NEXT:    ;;#ASMEND13912; GFX900-NEXT:    ;;#ASMSTART13913; GFX900-NEXT:    ; def s[4:5]13914; GFX900-NEXT:    ;;#ASMEND13915; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s913916; GFX900-NEXT:    ;;#ASMSTART13917; GFX900-NEXT:    ; use s[8:9]13918; GFX900-NEXT:    ;;#ASMEND13919; GFX900-NEXT:    s_setpc_b64 s[30:31]13920;13921; GFX90A-LABEL: s_shuffle_v3f16_v4f16__0_6_6:13922; GFX90A:       ; %bb.0:13923; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13924; GFX90A-NEXT:    ;;#ASMSTART13925; GFX90A-NEXT:    ; def s[8:9]13926; GFX90A-NEXT:    ;;#ASMEND13927; GFX90A-NEXT:    ;;#ASMSTART13928; GFX90A-NEXT:    ; def s[4:5]13929; GFX90A-NEXT:    ;;#ASMEND13930; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s913931; GFX90A-NEXT:    ;;#ASMSTART13932; GFX90A-NEXT:    ; use s[8:9]13933; GFX90A-NEXT:    ;;#ASMEND13934; GFX90A-NEXT:    s_setpc_b64 s[30:31]13935;13936; GFX942-LABEL: s_shuffle_v3f16_v4f16__0_6_6:13937; GFX942:       ; %bb.0:13938; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13939; GFX942-NEXT:    ;;#ASMSTART13940; GFX942-NEXT:    ; def s[8:9]13941; GFX942-NEXT:    ;;#ASMEND13942; GFX942-NEXT:    ;;#ASMSTART13943; GFX942-NEXT:    ; def s[0:1]13944; GFX942-NEXT:    ;;#ASMEND13945; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s913946; GFX942-NEXT:    ;;#ASMSTART13947; GFX942-NEXT:    ; use s[8:9]13948; GFX942-NEXT:    ;;#ASMEND13949; GFX942-NEXT:    s_setpc_b64 s[30:31]13950  %vec0 = call <4 x half> asm "; def $0", "=s"()13951  %vec1 = call <4 x half> asm "; def $0", "=s"()13952  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 0, i32 6, i32 6>13953  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>13954  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)13955  ret void13956}13957 13958define void @s_shuffle_v3f16_v4f16__1_6_6() {13959; GFX900-LABEL: s_shuffle_v3f16_v4f16__1_6_6:13960; GFX900:       ; %bb.0:13961; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13962; GFX900-NEXT:    ;;#ASMSTART13963; GFX900-NEXT:    ; def s[4:5]13964; GFX900-NEXT:    ;;#ASMEND13965; GFX900-NEXT:    ;;#ASMSTART13966; GFX900-NEXT:    ; def s[8:9]13967; GFX900-NEXT:    ;;#ASMEND13968; GFX900-NEXT:    s_lshr_b32 s4, s4, 1613969; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s913970; GFX900-NEXT:    ;;#ASMSTART13971; GFX900-NEXT:    ; use s[8:9]13972; GFX900-NEXT:    ;;#ASMEND13973; GFX900-NEXT:    s_setpc_b64 s[30:31]13974;13975; GFX90A-LABEL: s_shuffle_v3f16_v4f16__1_6_6:13976; GFX90A:       ; %bb.0:13977; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13978; GFX90A-NEXT:    ;;#ASMSTART13979; GFX90A-NEXT:    ; def s[4:5]13980; GFX90A-NEXT:    ;;#ASMEND13981; GFX90A-NEXT:    ;;#ASMSTART13982; GFX90A-NEXT:    ; def s[8:9]13983; GFX90A-NEXT:    ;;#ASMEND13984; GFX90A-NEXT:    s_lshr_b32 s4, s4, 1613985; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s913986; GFX90A-NEXT:    ;;#ASMSTART13987; GFX90A-NEXT:    ; use s[8:9]13988; GFX90A-NEXT:    ;;#ASMEND13989; GFX90A-NEXT:    s_setpc_b64 s[30:31]13990;13991; GFX942-LABEL: s_shuffle_v3f16_v4f16__1_6_6:13992; GFX942:       ; %bb.0:13993; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13994; GFX942-NEXT:    ;;#ASMSTART13995; GFX942-NEXT:    ; def s[0:1]13996; GFX942-NEXT:    ;;#ASMEND13997; GFX942-NEXT:    ;;#ASMSTART13998; GFX942-NEXT:    ; def s[8:9]13999; GFX942-NEXT:    ;;#ASMEND14000; GFX942-NEXT:    s_lshr_b32 s0, s0, 1614001; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s914002; GFX942-NEXT:    ;;#ASMSTART14003; GFX942-NEXT:    ; use s[8:9]14004; GFX942-NEXT:    ;;#ASMEND14005; GFX942-NEXT:    s_setpc_b64 s[30:31]14006  %vec0 = call <4 x half> asm "; def $0", "=s"()14007  %vec1 = call <4 x half> asm "; def $0", "=s"()14008  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 1, i32 6, i32 6>14009  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14010  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)14011  ret void14012}14013 14014define void @s_shuffle_v3f16_v4f16__2_6_6() {14015; GFX900-LABEL: s_shuffle_v3f16_v4f16__2_6_6:14016; GFX900:       ; %bb.0:14017; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14018; GFX900-NEXT:    ;;#ASMSTART14019; GFX900-NEXT:    ; def s[8:9]14020; GFX900-NEXT:    ;;#ASMEND14021; GFX900-NEXT:    ;;#ASMSTART14022; GFX900-NEXT:    ; def s[4:5]14023; GFX900-NEXT:    ;;#ASMEND14024; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s914025; GFX900-NEXT:    ;;#ASMSTART14026; GFX900-NEXT:    ; use s[8:9]14027; GFX900-NEXT:    ;;#ASMEND14028; GFX900-NEXT:    s_setpc_b64 s[30:31]14029;14030; GFX90A-LABEL: s_shuffle_v3f16_v4f16__2_6_6:14031; GFX90A:       ; %bb.0:14032; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14033; GFX90A-NEXT:    ;;#ASMSTART14034; GFX90A-NEXT:    ; def s[8:9]14035; GFX90A-NEXT:    ;;#ASMEND14036; GFX90A-NEXT:    ;;#ASMSTART14037; GFX90A-NEXT:    ; def s[4:5]14038; GFX90A-NEXT:    ;;#ASMEND14039; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s914040; GFX90A-NEXT:    ;;#ASMSTART14041; GFX90A-NEXT:    ; use s[8:9]14042; GFX90A-NEXT:    ;;#ASMEND14043; GFX90A-NEXT:    s_setpc_b64 s[30:31]14044;14045; GFX942-LABEL: s_shuffle_v3f16_v4f16__2_6_6:14046; GFX942:       ; %bb.0:14047; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14048; GFX942-NEXT:    ;;#ASMSTART14049; GFX942-NEXT:    ; def s[8:9]14050; GFX942-NEXT:    ;;#ASMEND14051; GFX942-NEXT:    ;;#ASMSTART14052; GFX942-NEXT:    ; def s[0:1]14053; GFX942-NEXT:    ;;#ASMEND14054; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s914055; GFX942-NEXT:    ;;#ASMSTART14056; GFX942-NEXT:    ; use s[8:9]14057; GFX942-NEXT:    ;;#ASMEND14058; GFX942-NEXT:    s_setpc_b64 s[30:31]14059  %vec0 = call <4 x half> asm "; def $0", "=s"()14060  %vec1 = call <4 x half> asm "; def $0", "=s"()14061  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 2, i32 6, i32 6>14062  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14063  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)14064  ret void14065}14066 14067define void @s_shuffle_v3f16_v4f16__3_6_6() {14068; GFX900-LABEL: s_shuffle_v3f16_v4f16__3_6_6:14069; GFX900:       ; %bb.0:14070; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14071; GFX900-NEXT:    ;;#ASMSTART14072; GFX900-NEXT:    ; def s[4:5]14073; GFX900-NEXT:    ;;#ASMEND14074; GFX900-NEXT:    ;;#ASMSTART14075; GFX900-NEXT:    ; def s[8:9]14076; GFX900-NEXT:    ;;#ASMEND14077; GFX900-NEXT:    s_lshr_b32 s4, s5, 1614078; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s914079; GFX900-NEXT:    ;;#ASMSTART14080; GFX900-NEXT:    ; use s[8:9]14081; GFX900-NEXT:    ;;#ASMEND14082; GFX900-NEXT:    s_setpc_b64 s[30:31]14083;14084; GFX90A-LABEL: s_shuffle_v3f16_v4f16__3_6_6:14085; GFX90A:       ; %bb.0:14086; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14087; GFX90A-NEXT:    ;;#ASMSTART14088; GFX90A-NEXT:    ; def s[4:5]14089; GFX90A-NEXT:    ;;#ASMEND14090; GFX90A-NEXT:    ;;#ASMSTART14091; GFX90A-NEXT:    ; def s[8:9]14092; GFX90A-NEXT:    ;;#ASMEND14093; GFX90A-NEXT:    s_lshr_b32 s4, s5, 1614094; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s914095; GFX90A-NEXT:    ;;#ASMSTART14096; GFX90A-NEXT:    ; use s[8:9]14097; GFX90A-NEXT:    ;;#ASMEND14098; GFX90A-NEXT:    s_setpc_b64 s[30:31]14099;14100; GFX942-LABEL: s_shuffle_v3f16_v4f16__3_6_6:14101; GFX942:       ; %bb.0:14102; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14103; GFX942-NEXT:    ;;#ASMSTART14104; GFX942-NEXT:    ; def s[0:1]14105; GFX942-NEXT:    ;;#ASMEND14106; GFX942-NEXT:    ;;#ASMSTART14107; GFX942-NEXT:    ; def s[8:9]14108; GFX942-NEXT:    ;;#ASMEND14109; GFX942-NEXT:    s_lshr_b32 s0, s1, 1614110; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s914111; GFX942-NEXT:    ;;#ASMSTART14112; GFX942-NEXT:    ; use s[8:9]14113; GFX942-NEXT:    ;;#ASMEND14114; GFX942-NEXT:    s_setpc_b64 s[30:31]14115  %vec0 = call <4 x half> asm "; def $0", "=s"()14116  %vec1 = call <4 x half> asm "; def $0", "=s"()14117  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 3, i32 6, i32 6>14118  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14119  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)14120  ret void14121}14122 14123define void @s_shuffle_v3f16_v4f16__4_6_6() {14124; GFX9-LABEL: s_shuffle_v3f16_v4f16__4_6_6:14125; GFX9:       ; %bb.0:14126; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14127; GFX9-NEXT:    ;;#ASMSTART14128; GFX9-NEXT:    ; def s[8:9]14129; GFX9-NEXT:    ;;#ASMEND14130; GFX9-NEXT:    s_pack_ll_b32_b16 s8, s8, s914131; GFX9-NEXT:    ;;#ASMSTART14132; GFX9-NEXT:    ; use s[8:9]14133; GFX9-NEXT:    ;;#ASMEND14134; GFX9-NEXT:    s_setpc_b64 s[30:31]14135  %vec0 = call <4 x half> asm "; def $0", "=s"()14136  %vec1 = call <4 x half> asm "; def $0", "=s"()14137  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 4, i32 6, i32 6>14138  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14139  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)14140  ret void14141}14142 14143define void @s_shuffle_v3f16_v4f16__5_6_6() {14144; GFX900-LABEL: s_shuffle_v3f16_v4f16__5_6_6:14145; GFX900:       ; %bb.0:14146; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14147; GFX900-NEXT:    ;;#ASMSTART14148; GFX900-NEXT:    ; def s[8:9]14149; GFX900-NEXT:    ;;#ASMEND14150; GFX900-NEXT:    s_lshr_b32 s4, s8, 1614151; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s914152; GFX900-NEXT:    ;;#ASMSTART14153; GFX900-NEXT:    ; use s[8:9]14154; GFX900-NEXT:    ;;#ASMEND14155; GFX900-NEXT:    s_setpc_b64 s[30:31]14156;14157; GFX90A-LABEL: s_shuffle_v3f16_v4f16__5_6_6:14158; GFX90A:       ; %bb.0:14159; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14160; GFX90A-NEXT:    ;;#ASMSTART14161; GFX90A-NEXT:    ; def s[8:9]14162; GFX90A-NEXT:    ;;#ASMEND14163; GFX90A-NEXT:    s_lshr_b32 s4, s8, 1614164; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s914165; GFX90A-NEXT:    ;;#ASMSTART14166; GFX90A-NEXT:    ; use s[8:9]14167; GFX90A-NEXT:    ;;#ASMEND14168; GFX90A-NEXT:    s_setpc_b64 s[30:31]14169;14170; GFX942-LABEL: s_shuffle_v3f16_v4f16__5_6_6:14171; GFX942:       ; %bb.0:14172; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14173; GFX942-NEXT:    ;;#ASMSTART14174; GFX942-NEXT:    ; def s[8:9]14175; GFX942-NEXT:    ;;#ASMEND14176; GFX942-NEXT:    s_lshr_b32 s0, s8, 1614177; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s914178; GFX942-NEXT:    ;;#ASMSTART14179; GFX942-NEXT:    ; use s[8:9]14180; GFX942-NEXT:    ;;#ASMEND14181; GFX942-NEXT:    s_setpc_b64 s[30:31]14182  %vec0 = call <4 x half> asm "; def $0", "=s"()14183  %vec1 = call <4 x half> asm "; def $0", "=s"()14184  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 5, i32 6, i32 6>14185  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14186  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)14187  ret void14188}14189 14190define void @s_shuffle_v3f16_v4f16__6_6_6() {14191; GFX9-LABEL: s_shuffle_v3f16_v4f16__6_6_6:14192; GFX9:       ; %bb.0:14193; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14194; GFX9-NEXT:    ;;#ASMSTART14195; GFX9-NEXT:    ; def s[8:9]14196; GFX9-NEXT:    ;;#ASMEND14197; GFX9-NEXT:    s_pack_ll_b32_b16 s8, s9, s914198; GFX9-NEXT:    ;;#ASMSTART14199; GFX9-NEXT:    ; use s[8:9]14200; GFX9-NEXT:    ;;#ASMEND14201; GFX9-NEXT:    s_setpc_b64 s[30:31]14202  %vec0 = call <4 x half> asm "; def $0", "=s"()14203  %vec1 = call <4 x half> asm "; def $0", "=s"()14204  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 6, i32 6, i32 6>14205  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14206  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)14207  ret void14208}14209 14210define void @s_shuffle_v3f16_v4f16__7_6_6() {14211; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_6_6:14212; GFX900:       ; %bb.0:14213; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14214; GFX900-NEXT:    ;;#ASMSTART14215; GFX900-NEXT:    ; def s[8:9]14216; GFX900-NEXT:    ;;#ASMEND14217; GFX900-NEXT:    s_lshr_b32 s4, s9, 1614218; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s914219; GFX900-NEXT:    ;;#ASMSTART14220; GFX900-NEXT:    ; use s[8:9]14221; GFX900-NEXT:    ;;#ASMEND14222; GFX900-NEXT:    s_setpc_b64 s[30:31]14223;14224; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_6_6:14225; GFX90A:       ; %bb.0:14226; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14227; GFX90A-NEXT:    ;;#ASMSTART14228; GFX90A-NEXT:    ; def s[8:9]14229; GFX90A-NEXT:    ;;#ASMEND14230; GFX90A-NEXT:    s_lshr_b32 s4, s9, 1614231; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s914232; GFX90A-NEXT:    ;;#ASMSTART14233; GFX90A-NEXT:    ; use s[8:9]14234; GFX90A-NEXT:    ;;#ASMEND14235; GFX90A-NEXT:    s_setpc_b64 s[30:31]14236;14237; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_6_6:14238; GFX942:       ; %bb.0:14239; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14240; GFX942-NEXT:    ;;#ASMSTART14241; GFX942-NEXT:    ; def s[8:9]14242; GFX942-NEXT:    ;;#ASMEND14243; GFX942-NEXT:    s_lshr_b32 s0, s9, 1614244; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s914245; GFX942-NEXT:    ;;#ASMSTART14246; GFX942-NEXT:    ; use s[8:9]14247; GFX942-NEXT:    ;;#ASMEND14248; GFX942-NEXT:    s_setpc_b64 s[30:31]14249  %vec0 = call <4 x half> asm "; def $0", "=s"()14250  %vec1 = call <4 x half> asm "; def $0", "=s"()14251  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 6, i32 6>14252  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14253  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)14254  ret void14255}14256 14257define void @s_shuffle_v3f16_v4f16__7_u_6() {14258; GFX9-LABEL: s_shuffle_v3f16_v4f16__7_u_6:14259; GFX9:       ; %bb.0:14260; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14261; GFX9-NEXT:    ;;#ASMSTART14262; GFX9-NEXT:    ; def s[8:9]14263; GFX9-NEXT:    ;;#ASMEND14264; GFX9-NEXT:    s_lshr_b32 s8, s9, 1614265; GFX9-NEXT:    ;;#ASMSTART14266; GFX9-NEXT:    ; use s[8:9]14267; GFX9-NEXT:    ;;#ASMEND14268; GFX9-NEXT:    s_setpc_b64 s[30:31]14269  %vec0 = call <4 x half> asm "; def $0", "=s"()14270  %vec1 = call <4 x half> asm "; def $0", "=s"()14271  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 poison, i32 6>14272  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14273  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)14274  ret void14275}14276 14277define void @s_shuffle_v3f16_v4f16__7_0_6() {14278; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_0_6:14279; GFX900:       ; %bb.0:14280; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14281; GFX900-NEXT:    ;;#ASMSTART14282; GFX900-NEXT:    ; def s[4:5]14283; GFX900-NEXT:    ;;#ASMEND14284; GFX900-NEXT:    ;;#ASMSTART14285; GFX900-NEXT:    ; def s[8:9]14286; GFX900-NEXT:    ;;#ASMEND14287; GFX900-NEXT:    s_lshr_b32 s5, s9, 1614288; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s414289; GFX900-NEXT:    ;;#ASMSTART14290; GFX900-NEXT:    ; use s[8:9]14291; GFX900-NEXT:    ;;#ASMEND14292; GFX900-NEXT:    s_setpc_b64 s[30:31]14293;14294; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_0_6:14295; GFX90A:       ; %bb.0:14296; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14297; GFX90A-NEXT:    ;;#ASMSTART14298; GFX90A-NEXT:    ; def s[4:5]14299; GFX90A-NEXT:    ;;#ASMEND14300; GFX90A-NEXT:    ;;#ASMSTART14301; GFX90A-NEXT:    ; def s[8:9]14302; GFX90A-NEXT:    ;;#ASMEND14303; GFX90A-NEXT:    s_lshr_b32 s5, s9, 1614304; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s414305; GFX90A-NEXT:    ;;#ASMSTART14306; GFX90A-NEXT:    ; use s[8:9]14307; GFX90A-NEXT:    ;;#ASMEND14308; GFX90A-NEXT:    s_setpc_b64 s[30:31]14309;14310; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_0_6:14311; GFX942:       ; %bb.0:14312; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14313; GFX942-NEXT:    ;;#ASMSTART14314; GFX942-NEXT:    ; def s[0:1]14315; GFX942-NEXT:    ;;#ASMEND14316; GFX942-NEXT:    ;;#ASMSTART14317; GFX942-NEXT:    ; def s[8:9]14318; GFX942-NEXT:    ;;#ASMEND14319; GFX942-NEXT:    s_lshr_b32 s1, s9, 1614320; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s014321; GFX942-NEXT:    ;;#ASMSTART14322; GFX942-NEXT:    ; use s[8:9]14323; GFX942-NEXT:    ;;#ASMEND14324; GFX942-NEXT:    s_setpc_b64 s[30:31]14325  %vec0 = call <4 x half> asm "; def $0", "=s"()14326  %vec1 = call <4 x half> asm "; def $0", "=s"()14327  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 0, i32 6>14328  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14329  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)14330  ret void14331}14332 14333define void @s_shuffle_v3f16_v4f16__7_1_6() {14334; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_1_6:14335; GFX900:       ; %bb.0:14336; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14337; GFX900-NEXT:    ;;#ASMSTART14338; GFX900-NEXT:    ; def s[4:5]14339; GFX900-NEXT:    ;;#ASMEND14340; GFX900-NEXT:    ;;#ASMSTART14341; GFX900-NEXT:    ; def s[8:9]14342; GFX900-NEXT:    ;;#ASMEND14343; GFX900-NEXT:    s_lshr_b32 s4, s4, 1614344; GFX900-NEXT:    s_lshr_b32 s5, s9, 1614345; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s414346; GFX900-NEXT:    ;;#ASMSTART14347; GFX900-NEXT:    ; use s[8:9]14348; GFX900-NEXT:    ;;#ASMEND14349; GFX900-NEXT:    s_setpc_b64 s[30:31]14350;14351; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_1_6:14352; GFX90A:       ; %bb.0:14353; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14354; GFX90A-NEXT:    ;;#ASMSTART14355; GFX90A-NEXT:    ; def s[4:5]14356; GFX90A-NEXT:    ;;#ASMEND14357; GFX90A-NEXT:    ;;#ASMSTART14358; GFX90A-NEXT:    ; def s[8:9]14359; GFX90A-NEXT:    ;;#ASMEND14360; GFX90A-NEXT:    s_lshr_b32 s4, s4, 1614361; GFX90A-NEXT:    s_lshr_b32 s5, s9, 1614362; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s414363; GFX90A-NEXT:    ;;#ASMSTART14364; GFX90A-NEXT:    ; use s[8:9]14365; GFX90A-NEXT:    ;;#ASMEND14366; GFX90A-NEXT:    s_setpc_b64 s[30:31]14367;14368; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_1_6:14369; GFX942:       ; %bb.0:14370; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14371; GFX942-NEXT:    ;;#ASMSTART14372; GFX942-NEXT:    ; def s[0:1]14373; GFX942-NEXT:    ;;#ASMEND14374; GFX942-NEXT:    ;;#ASMSTART14375; GFX942-NEXT:    ; def s[8:9]14376; GFX942-NEXT:    ;;#ASMEND14377; GFX942-NEXT:    s_lshr_b32 s0, s0, 1614378; GFX942-NEXT:    s_lshr_b32 s1, s9, 1614379; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s014380; GFX942-NEXT:    ;;#ASMSTART14381; GFX942-NEXT:    ; use s[8:9]14382; GFX942-NEXT:    ;;#ASMEND14383; GFX942-NEXT:    s_setpc_b64 s[30:31]14384  %vec0 = call <4 x half> asm "; def $0", "=s"()14385  %vec1 = call <4 x half> asm "; def $0", "=s"()14386  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 1, i32 6>14387  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14388  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)14389  ret void14390}14391 14392define void @s_shuffle_v3f16_v4f16__7_2_6() {14393; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_2_6:14394; GFX900:       ; %bb.0:14395; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14396; GFX900-NEXT:    ;;#ASMSTART14397; GFX900-NEXT:    ; def s[4:5]14398; GFX900-NEXT:    ;;#ASMEND14399; GFX900-NEXT:    ;;#ASMSTART14400; GFX900-NEXT:    ; def s[8:9]14401; GFX900-NEXT:    ;;#ASMEND14402; GFX900-NEXT:    s_lshr_b32 s4, s9, 1614403; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s514404; GFX900-NEXT:    ;;#ASMSTART14405; GFX900-NEXT:    ; use s[8:9]14406; GFX900-NEXT:    ;;#ASMEND14407; GFX900-NEXT:    s_setpc_b64 s[30:31]14408;14409; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_2_6:14410; GFX90A:       ; %bb.0:14411; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14412; GFX90A-NEXT:    ;;#ASMSTART14413; GFX90A-NEXT:    ; def s[4:5]14414; GFX90A-NEXT:    ;;#ASMEND14415; GFX90A-NEXT:    ;;#ASMSTART14416; GFX90A-NEXT:    ; def s[8:9]14417; GFX90A-NEXT:    ;;#ASMEND14418; GFX90A-NEXT:    s_lshr_b32 s4, s9, 1614419; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s514420; GFX90A-NEXT:    ;;#ASMSTART14421; GFX90A-NEXT:    ; use s[8:9]14422; GFX90A-NEXT:    ;;#ASMEND14423; GFX90A-NEXT:    s_setpc_b64 s[30:31]14424;14425; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_2_6:14426; GFX942:       ; %bb.0:14427; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14428; GFX942-NEXT:    ;;#ASMSTART14429; GFX942-NEXT:    ; def s[0:1]14430; GFX942-NEXT:    ;;#ASMEND14431; GFX942-NEXT:    ;;#ASMSTART14432; GFX942-NEXT:    ; def s[8:9]14433; GFX942-NEXT:    ;;#ASMEND14434; GFX942-NEXT:    s_lshr_b32 s0, s9, 1614435; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s114436; GFX942-NEXT:    ;;#ASMSTART14437; GFX942-NEXT:    ; use s[8:9]14438; GFX942-NEXT:    ;;#ASMEND14439; GFX942-NEXT:    s_setpc_b64 s[30:31]14440  %vec0 = call <4 x half> asm "; def $0", "=s"()14441  %vec1 = call <4 x half> asm "; def $0", "=s"()14442  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 2, i32 6>14443  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14444  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)14445  ret void14446}14447 14448define void @s_shuffle_v3f16_v4f16__7_3_6() {14449; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_3_6:14450; GFX900:       ; %bb.0:14451; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14452; GFX900-NEXT:    ;;#ASMSTART14453; GFX900-NEXT:    ; def s[4:5]14454; GFX900-NEXT:    ;;#ASMEND14455; GFX900-NEXT:    ;;#ASMSTART14456; GFX900-NEXT:    ; def s[8:9]14457; GFX900-NEXT:    ;;#ASMEND14458; GFX900-NEXT:    s_lshr_b32 s4, s5, 1614459; GFX900-NEXT:    s_lshr_b32 s5, s9, 1614460; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s414461; GFX900-NEXT:    ;;#ASMSTART14462; GFX900-NEXT:    ; use s[8:9]14463; GFX900-NEXT:    ;;#ASMEND14464; GFX900-NEXT:    s_setpc_b64 s[30:31]14465;14466; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_3_6:14467; GFX90A:       ; %bb.0:14468; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14469; GFX90A-NEXT:    ;;#ASMSTART14470; GFX90A-NEXT:    ; def s[4:5]14471; GFX90A-NEXT:    ;;#ASMEND14472; GFX90A-NEXT:    ;;#ASMSTART14473; GFX90A-NEXT:    ; def s[8:9]14474; GFX90A-NEXT:    ;;#ASMEND14475; GFX90A-NEXT:    s_lshr_b32 s4, s5, 1614476; GFX90A-NEXT:    s_lshr_b32 s5, s9, 1614477; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s414478; GFX90A-NEXT:    ;;#ASMSTART14479; GFX90A-NEXT:    ; use s[8:9]14480; GFX90A-NEXT:    ;;#ASMEND14481; GFX90A-NEXT:    s_setpc_b64 s[30:31]14482;14483; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_3_6:14484; GFX942:       ; %bb.0:14485; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14486; GFX942-NEXT:    ;;#ASMSTART14487; GFX942-NEXT:    ; def s[0:1]14488; GFX942-NEXT:    ;;#ASMEND14489; GFX942-NEXT:    ;;#ASMSTART14490; GFX942-NEXT:    ; def s[8:9]14491; GFX942-NEXT:    ;;#ASMEND14492; GFX942-NEXT:    s_lshr_b32 s0, s1, 1614493; GFX942-NEXT:    s_lshr_b32 s1, s9, 1614494; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s014495; GFX942-NEXT:    ;;#ASMSTART14496; GFX942-NEXT:    ; use s[8:9]14497; GFX942-NEXT:    ;;#ASMEND14498; GFX942-NEXT:    s_setpc_b64 s[30:31]14499  %vec0 = call <4 x half> asm "; def $0", "=s"()14500  %vec1 = call <4 x half> asm "; def $0", "=s"()14501  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 3, i32 6>14502  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14503  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)14504  ret void14505}14506 14507define void @s_shuffle_v3f16_v4f16__7_4_6() {14508; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_4_6:14509; GFX900:       ; %bb.0:14510; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14511; GFX900-NEXT:    ;;#ASMSTART14512; GFX900-NEXT:    ; def s[8:9]14513; GFX900-NEXT:    ;;#ASMEND14514; GFX900-NEXT:    s_lshr_b32 s4, s9, 1614515; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s814516; GFX900-NEXT:    ;;#ASMSTART14517; GFX900-NEXT:    ; use s[8:9]14518; GFX900-NEXT:    ;;#ASMEND14519; GFX900-NEXT:    s_setpc_b64 s[30:31]14520;14521; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_4_6:14522; GFX90A:       ; %bb.0:14523; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14524; GFX90A-NEXT:    ;;#ASMSTART14525; GFX90A-NEXT:    ; def s[8:9]14526; GFX90A-NEXT:    ;;#ASMEND14527; GFX90A-NEXT:    s_lshr_b32 s4, s9, 1614528; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s814529; GFX90A-NEXT:    ;;#ASMSTART14530; GFX90A-NEXT:    ; use s[8:9]14531; GFX90A-NEXT:    ;;#ASMEND14532; GFX90A-NEXT:    s_setpc_b64 s[30:31]14533;14534; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_4_6:14535; GFX942:       ; %bb.0:14536; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14537; GFX942-NEXT:    ;;#ASMSTART14538; GFX942-NEXT:    ; def s[8:9]14539; GFX942-NEXT:    ;;#ASMEND14540; GFX942-NEXT:    s_lshr_b32 s0, s9, 1614541; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s814542; GFX942-NEXT:    ;;#ASMSTART14543; GFX942-NEXT:    ; use s[8:9]14544; GFX942-NEXT:    ;;#ASMEND14545; GFX942-NEXT:    s_setpc_b64 s[30:31]14546  %vec0 = call <4 x half> asm "; def $0", "=s"()14547  %vec1 = call <4 x half> asm "; def $0", "=s"()14548  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 4, i32 6>14549  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14550  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)14551  ret void14552}14553 14554define void @s_shuffle_v3f16_v4f16__7_5_6() {14555; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_5_6:14556; GFX900:       ; %bb.0:14557; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14558; GFX900-NEXT:    ;;#ASMSTART14559; GFX900-NEXT:    ; def s[8:9]14560; GFX900-NEXT:    ;;#ASMEND14561; GFX900-NEXT:    s_lshr_b32 s4, s8, 1614562; GFX900-NEXT:    s_lshr_b32 s5, s9, 1614563; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s414564; GFX900-NEXT:    ;;#ASMSTART14565; GFX900-NEXT:    ; use s[8:9]14566; GFX900-NEXT:    ;;#ASMEND14567; GFX900-NEXT:    s_setpc_b64 s[30:31]14568;14569; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_5_6:14570; GFX90A:       ; %bb.0:14571; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14572; GFX90A-NEXT:    ;;#ASMSTART14573; GFX90A-NEXT:    ; def s[8:9]14574; GFX90A-NEXT:    ;;#ASMEND14575; GFX90A-NEXT:    s_lshr_b32 s4, s8, 1614576; GFX90A-NEXT:    s_lshr_b32 s5, s9, 1614577; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s414578; GFX90A-NEXT:    ;;#ASMSTART14579; GFX90A-NEXT:    ; use s[8:9]14580; GFX90A-NEXT:    ;;#ASMEND14581; GFX90A-NEXT:    s_setpc_b64 s[30:31]14582;14583; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_5_6:14584; GFX942:       ; %bb.0:14585; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14586; GFX942-NEXT:    ;;#ASMSTART14587; GFX942-NEXT:    ; def s[8:9]14588; GFX942-NEXT:    ;;#ASMEND14589; GFX942-NEXT:    s_lshr_b32 s0, s8, 1614590; GFX942-NEXT:    s_lshr_b32 s1, s9, 1614591; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s014592; GFX942-NEXT:    ;;#ASMSTART14593; GFX942-NEXT:    ; use s[8:9]14594; GFX942-NEXT:    ;;#ASMEND14595; GFX942-NEXT:    s_setpc_b64 s[30:31]14596  %vec0 = call <4 x half> asm "; def $0", "=s"()14597  %vec1 = call <4 x half> asm "; def $0", "=s"()14598  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 5, i32 6>14599  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14600  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)14601  ret void14602}14603 14604define void @s_shuffle_v3f16_v4f16__u_7_7() {14605; GFX900-LABEL: s_shuffle_v3f16_v4f16__u_7_7:14606; GFX900:       ; %bb.0:14607; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14608; GFX900-NEXT:    ;;#ASMSTART14609; GFX900-NEXT:    ; def s[4:5]14610; GFX900-NEXT:    ;;#ASMEND14611; GFX900-NEXT:    s_lshr_b32 s9, s5, 1614612; GFX900-NEXT:    s_mov_b32 s8, s514613; GFX900-NEXT:    ;;#ASMSTART14614; GFX900-NEXT:    ; use s[8:9]14615; GFX900-NEXT:    ;;#ASMEND14616; GFX900-NEXT:    s_setpc_b64 s[30:31]14617;14618; GFX90A-LABEL: s_shuffle_v3f16_v4f16__u_7_7:14619; GFX90A:       ; %bb.0:14620; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14621; GFX90A-NEXT:    ;;#ASMSTART14622; GFX90A-NEXT:    ; def s[4:5]14623; GFX90A-NEXT:    ;;#ASMEND14624; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1614625; GFX90A-NEXT:    s_mov_b32 s8, s514626; GFX90A-NEXT:    ;;#ASMSTART14627; GFX90A-NEXT:    ; use s[8:9]14628; GFX90A-NEXT:    ;;#ASMEND14629; GFX90A-NEXT:    s_setpc_b64 s[30:31]14630;14631; GFX942-LABEL: s_shuffle_v3f16_v4f16__u_7_7:14632; GFX942:       ; %bb.0:14633; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14634; GFX942-NEXT:    ;;#ASMSTART14635; GFX942-NEXT:    ; def s[0:1]14636; GFX942-NEXT:    ;;#ASMEND14637; GFX942-NEXT:    s_lshr_b32 s9, s1, 1614638; GFX942-NEXT:    s_mov_b32 s8, s114639; GFX942-NEXT:    ;;#ASMSTART14640; GFX942-NEXT:    ; use s[8:9]14641; GFX942-NEXT:    ;;#ASMEND14642; GFX942-NEXT:    s_setpc_b64 s[30:31]14643  %vec0 = call <4 x half> asm "; def $0", "=s"()14644  %vec1 = call <4 x half> asm "; def $0", "=s"()14645  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 poison, i32 7, i32 7>14646  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14647  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)14648  ret void14649}14650 14651define void @s_shuffle_v3f16_v4f16__0_7_7() {14652; GFX900-LABEL: s_shuffle_v3f16_v4f16__0_7_7:14653; GFX900:       ; %bb.0:14654; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14655; GFX900-NEXT:    ;;#ASMSTART14656; GFX900-NEXT:    ; def s[6:7]14657; GFX900-NEXT:    ;;#ASMEND14658; GFX900-NEXT:    s_lshr_b32 s9, s7, 1614659; GFX900-NEXT:    ;;#ASMSTART14660; GFX900-NEXT:    ; def s[4:5]14661; GFX900-NEXT:    ;;#ASMEND14662; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s914663; GFX900-NEXT:    ;;#ASMSTART14664; GFX900-NEXT:    ; use s[8:9]14665; GFX900-NEXT:    ;;#ASMEND14666; GFX900-NEXT:    s_setpc_b64 s[30:31]14667;14668; GFX90A-LABEL: s_shuffle_v3f16_v4f16__0_7_7:14669; GFX90A:       ; %bb.0:14670; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14671; GFX90A-NEXT:    ;;#ASMSTART14672; GFX90A-NEXT:    ; def s[6:7]14673; GFX90A-NEXT:    ;;#ASMEND14674; GFX90A-NEXT:    s_lshr_b32 s9, s7, 1614675; GFX90A-NEXT:    ;;#ASMSTART14676; GFX90A-NEXT:    ; def s[4:5]14677; GFX90A-NEXT:    ;;#ASMEND14678; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s914679; GFX90A-NEXT:    ;;#ASMSTART14680; GFX90A-NEXT:    ; use s[8:9]14681; GFX90A-NEXT:    ;;#ASMEND14682; GFX90A-NEXT:    s_setpc_b64 s[30:31]14683;14684; GFX942-LABEL: s_shuffle_v3f16_v4f16__0_7_7:14685; GFX942:       ; %bb.0:14686; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14687; GFX942-NEXT:    ;;#ASMSTART14688; GFX942-NEXT:    ; def s[2:3]14689; GFX942-NEXT:    ;;#ASMEND14690; GFX942-NEXT:    s_lshr_b32 s9, s3, 1614691; GFX942-NEXT:    ;;#ASMSTART14692; GFX942-NEXT:    ; def s[0:1]14693; GFX942-NEXT:    ;;#ASMEND14694; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s914695; GFX942-NEXT:    ;;#ASMSTART14696; GFX942-NEXT:    ; use s[8:9]14697; GFX942-NEXT:    ;;#ASMEND14698; GFX942-NEXT:    s_setpc_b64 s[30:31]14699  %vec0 = call <4 x half> asm "; def $0", "=s"()14700  %vec1 = call <4 x half> asm "; def $0", "=s"()14701  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 0, i32 7, i32 7>14702  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14703  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)14704  ret void14705}14706 14707define void @s_shuffle_v3f16_v4f16__1_7_7() {14708; GFX900-LABEL: s_shuffle_v3f16_v4f16__1_7_7:14709; GFX900:       ; %bb.0:14710; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14711; GFX900-NEXT:    ;;#ASMSTART14712; GFX900-NEXT:    ; def s[4:5]14713; GFX900-NEXT:    ;;#ASMEND14714; GFX900-NEXT:    ;;#ASMSTART14715; GFX900-NEXT:    ; def s[6:7]14716; GFX900-NEXT:    ;;#ASMEND14717; GFX900-NEXT:    s_lshr_b32 s9, s7, 1614718; GFX900-NEXT:    s_lshr_b32 s4, s4, 1614719; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s914720; GFX900-NEXT:    ;;#ASMSTART14721; GFX900-NEXT:    ; use s[8:9]14722; GFX900-NEXT:    ;;#ASMEND14723; GFX900-NEXT:    s_setpc_b64 s[30:31]14724;14725; GFX90A-LABEL: s_shuffle_v3f16_v4f16__1_7_7:14726; GFX90A:       ; %bb.0:14727; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14728; GFX90A-NEXT:    ;;#ASMSTART14729; GFX90A-NEXT:    ; def s[4:5]14730; GFX90A-NEXT:    ;;#ASMEND14731; GFX90A-NEXT:    ;;#ASMSTART14732; GFX90A-NEXT:    ; def s[6:7]14733; GFX90A-NEXT:    ;;#ASMEND14734; GFX90A-NEXT:    s_lshr_b32 s9, s7, 1614735; GFX90A-NEXT:    s_lshr_b32 s4, s4, 1614736; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s914737; GFX90A-NEXT:    ;;#ASMSTART14738; GFX90A-NEXT:    ; use s[8:9]14739; GFX90A-NEXT:    ;;#ASMEND14740; GFX90A-NEXT:    s_setpc_b64 s[30:31]14741;14742; GFX942-LABEL: s_shuffle_v3f16_v4f16__1_7_7:14743; GFX942:       ; %bb.0:14744; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14745; GFX942-NEXT:    ;;#ASMSTART14746; GFX942-NEXT:    ; def s[0:1]14747; GFX942-NEXT:    ;;#ASMEND14748; GFX942-NEXT:    ;;#ASMSTART14749; GFX942-NEXT:    ; def s[2:3]14750; GFX942-NEXT:    ;;#ASMEND14751; GFX942-NEXT:    s_lshr_b32 s9, s3, 1614752; GFX942-NEXT:    s_lshr_b32 s0, s0, 1614753; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s914754; GFX942-NEXT:    ;;#ASMSTART14755; GFX942-NEXT:    ; use s[8:9]14756; GFX942-NEXT:    ;;#ASMEND14757; GFX942-NEXT:    s_setpc_b64 s[30:31]14758  %vec0 = call <4 x half> asm "; def $0", "=s"()14759  %vec1 = call <4 x half> asm "; def $0", "=s"()14760  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 1, i32 7, i32 7>14761  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14762  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)14763  ret void14764}14765 14766define void @s_shuffle_v3f16_v4f16__2_7_7() {14767; GFX900-LABEL: s_shuffle_v3f16_v4f16__2_7_7:14768; GFX900:       ; %bb.0:14769; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14770; GFX900-NEXT:    ;;#ASMSTART14771; GFX900-NEXT:    ; def s[6:7]14772; GFX900-NEXT:    ;;#ASMEND14773; GFX900-NEXT:    s_lshr_b32 s9, s7, 1614774; GFX900-NEXT:    ;;#ASMSTART14775; GFX900-NEXT:    ; def s[4:5]14776; GFX900-NEXT:    ;;#ASMEND14777; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s5, s914778; GFX900-NEXT:    ;;#ASMSTART14779; GFX900-NEXT:    ; use s[8:9]14780; GFX900-NEXT:    ;;#ASMEND14781; GFX900-NEXT:    s_setpc_b64 s[30:31]14782;14783; GFX90A-LABEL: s_shuffle_v3f16_v4f16__2_7_7:14784; GFX90A:       ; %bb.0:14785; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14786; GFX90A-NEXT:    ;;#ASMSTART14787; GFX90A-NEXT:    ; def s[6:7]14788; GFX90A-NEXT:    ;;#ASMEND14789; GFX90A-NEXT:    s_lshr_b32 s9, s7, 1614790; GFX90A-NEXT:    ;;#ASMSTART14791; GFX90A-NEXT:    ; def s[4:5]14792; GFX90A-NEXT:    ;;#ASMEND14793; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s5, s914794; GFX90A-NEXT:    ;;#ASMSTART14795; GFX90A-NEXT:    ; use s[8:9]14796; GFX90A-NEXT:    ;;#ASMEND14797; GFX90A-NEXT:    s_setpc_b64 s[30:31]14798;14799; GFX942-LABEL: s_shuffle_v3f16_v4f16__2_7_7:14800; GFX942:       ; %bb.0:14801; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14802; GFX942-NEXT:    ;;#ASMSTART14803; GFX942-NEXT:    ; def s[2:3]14804; GFX942-NEXT:    ;;#ASMEND14805; GFX942-NEXT:    s_lshr_b32 s9, s3, 1614806; GFX942-NEXT:    ;;#ASMSTART14807; GFX942-NEXT:    ; def s[0:1]14808; GFX942-NEXT:    ;;#ASMEND14809; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s1, s914810; GFX942-NEXT:    ;;#ASMSTART14811; GFX942-NEXT:    ; use s[8:9]14812; GFX942-NEXT:    ;;#ASMEND14813; GFX942-NEXT:    s_setpc_b64 s[30:31]14814  %vec0 = call <4 x half> asm "; def $0", "=s"()14815  %vec1 = call <4 x half> asm "; def $0", "=s"()14816  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 2, i32 7, i32 7>14817  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14818  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)14819  ret void14820}14821 14822define void @s_shuffle_v3f16_v4f16__3_7_7() {14823; GFX900-LABEL: s_shuffle_v3f16_v4f16__3_7_7:14824; GFX900:       ; %bb.0:14825; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14826; GFX900-NEXT:    ;;#ASMSTART14827; GFX900-NEXT:    ; def s[4:5]14828; GFX900-NEXT:    ;;#ASMEND14829; GFX900-NEXT:    ;;#ASMSTART14830; GFX900-NEXT:    ; def s[6:7]14831; GFX900-NEXT:    ;;#ASMEND14832; GFX900-NEXT:    s_lshr_b32 s9, s7, 1614833; GFX900-NEXT:    s_lshr_b32 s4, s5, 1614834; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s914835; GFX900-NEXT:    ;;#ASMSTART14836; GFX900-NEXT:    ; use s[8:9]14837; GFX900-NEXT:    ;;#ASMEND14838; GFX900-NEXT:    s_setpc_b64 s[30:31]14839;14840; GFX90A-LABEL: s_shuffle_v3f16_v4f16__3_7_7:14841; GFX90A:       ; %bb.0:14842; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14843; GFX90A-NEXT:    ;;#ASMSTART14844; GFX90A-NEXT:    ; def s[4:5]14845; GFX90A-NEXT:    ;;#ASMEND14846; GFX90A-NEXT:    ;;#ASMSTART14847; GFX90A-NEXT:    ; def s[6:7]14848; GFX90A-NEXT:    ;;#ASMEND14849; GFX90A-NEXT:    s_lshr_b32 s9, s7, 1614850; GFX90A-NEXT:    s_lshr_b32 s4, s5, 1614851; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s914852; GFX90A-NEXT:    ;;#ASMSTART14853; GFX90A-NEXT:    ; use s[8:9]14854; GFX90A-NEXT:    ;;#ASMEND14855; GFX90A-NEXT:    s_setpc_b64 s[30:31]14856;14857; GFX942-LABEL: s_shuffle_v3f16_v4f16__3_7_7:14858; GFX942:       ; %bb.0:14859; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14860; GFX942-NEXT:    ;;#ASMSTART14861; GFX942-NEXT:    ; def s[0:1]14862; GFX942-NEXT:    ;;#ASMEND14863; GFX942-NEXT:    ;;#ASMSTART14864; GFX942-NEXT:    ; def s[2:3]14865; GFX942-NEXT:    ;;#ASMEND14866; GFX942-NEXT:    s_lshr_b32 s9, s3, 1614867; GFX942-NEXT:    s_lshr_b32 s0, s1, 1614868; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s914869; GFX942-NEXT:    ;;#ASMSTART14870; GFX942-NEXT:    ; use s[8:9]14871; GFX942-NEXT:    ;;#ASMEND14872; GFX942-NEXT:    s_setpc_b64 s[30:31]14873  %vec0 = call <4 x half> asm "; def $0", "=s"()14874  %vec1 = call <4 x half> asm "; def $0", "=s"()14875  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 3, i32 7, i32 7>14876  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14877  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)14878  ret void14879}14880 14881define void @s_shuffle_v3f16_v4f16__4_7_7() {14882; GFX900-LABEL: s_shuffle_v3f16_v4f16__4_7_7:14883; GFX900:       ; %bb.0:14884; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14885; GFX900-NEXT:    ;;#ASMSTART14886; GFX900-NEXT:    ; def s[4:5]14887; GFX900-NEXT:    ;;#ASMEND14888; GFX900-NEXT:    s_lshr_b32 s9, s5, 1614889; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s914890; GFX900-NEXT:    ;;#ASMSTART14891; GFX900-NEXT:    ; use s[8:9]14892; GFX900-NEXT:    ;;#ASMEND14893; GFX900-NEXT:    s_setpc_b64 s[30:31]14894;14895; GFX90A-LABEL: s_shuffle_v3f16_v4f16__4_7_7:14896; GFX90A:       ; %bb.0:14897; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14898; GFX90A-NEXT:    ;;#ASMSTART14899; GFX90A-NEXT:    ; def s[4:5]14900; GFX90A-NEXT:    ;;#ASMEND14901; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1614902; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s914903; GFX90A-NEXT:    ;;#ASMSTART14904; GFX90A-NEXT:    ; use s[8:9]14905; GFX90A-NEXT:    ;;#ASMEND14906; GFX90A-NEXT:    s_setpc_b64 s[30:31]14907;14908; GFX942-LABEL: s_shuffle_v3f16_v4f16__4_7_7:14909; GFX942:       ; %bb.0:14910; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14911; GFX942-NEXT:    ;;#ASMSTART14912; GFX942-NEXT:    ; def s[0:1]14913; GFX942-NEXT:    ;;#ASMEND14914; GFX942-NEXT:    s_lshr_b32 s9, s1, 1614915; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s914916; GFX942-NEXT:    ;;#ASMSTART14917; GFX942-NEXT:    ; use s[8:9]14918; GFX942-NEXT:    ;;#ASMEND14919; GFX942-NEXT:    s_setpc_b64 s[30:31]14920  %vec0 = call <4 x half> asm "; def $0", "=s"()14921  %vec1 = call <4 x half> asm "; def $0", "=s"()14922  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 4, i32 7, i32 7>14923  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14924  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)14925  ret void14926}14927 14928define void @s_shuffle_v3f16_v4f16__5_7_7() {14929; GFX900-LABEL: s_shuffle_v3f16_v4f16__5_7_7:14930; GFX900:       ; %bb.0:14931; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14932; GFX900-NEXT:    ;;#ASMSTART14933; GFX900-NEXT:    ; def s[4:5]14934; GFX900-NEXT:    ;;#ASMEND14935; GFX900-NEXT:    s_lshr_b32 s9, s5, 1614936; GFX900-NEXT:    s_lshr_b32 s4, s4, 1614937; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s4, s914938; GFX900-NEXT:    ;;#ASMSTART14939; GFX900-NEXT:    ; use s[8:9]14940; GFX900-NEXT:    ;;#ASMEND14941; GFX900-NEXT:    s_setpc_b64 s[30:31]14942;14943; GFX90A-LABEL: s_shuffle_v3f16_v4f16__5_7_7:14944; GFX90A:       ; %bb.0:14945; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14946; GFX90A-NEXT:    ;;#ASMSTART14947; GFX90A-NEXT:    ; def s[4:5]14948; GFX90A-NEXT:    ;;#ASMEND14949; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1614950; GFX90A-NEXT:    s_lshr_b32 s4, s4, 1614951; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s4, s914952; GFX90A-NEXT:    ;;#ASMSTART14953; GFX90A-NEXT:    ; use s[8:9]14954; GFX90A-NEXT:    ;;#ASMEND14955; GFX90A-NEXT:    s_setpc_b64 s[30:31]14956;14957; GFX942-LABEL: s_shuffle_v3f16_v4f16__5_7_7:14958; GFX942:       ; %bb.0:14959; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14960; GFX942-NEXT:    ;;#ASMSTART14961; GFX942-NEXT:    ; def s[0:1]14962; GFX942-NEXT:    ;;#ASMEND14963; GFX942-NEXT:    s_lshr_b32 s9, s1, 1614964; GFX942-NEXT:    s_lshr_b32 s0, s0, 1614965; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s0, s914966; GFX942-NEXT:    ;;#ASMSTART14967; GFX942-NEXT:    ; use s[8:9]14968; GFX942-NEXT:    ;;#ASMEND14969; GFX942-NEXT:    s_setpc_b64 s[30:31]14970  %vec0 = call <4 x half> asm "; def $0", "=s"()14971  %vec1 = call <4 x half> asm "; def $0", "=s"()14972  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 5, i32 7, i32 7>14973  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>14974  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)14975  ret void14976}14977 14978define void @s_shuffle_v3f16_v4f16__6_7_7() {14979; GFX900-LABEL: s_shuffle_v3f16_v4f16__6_7_7:14980; GFX900:       ; %bb.0:14981; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14982; GFX900-NEXT:    ;;#ASMSTART14983; GFX900-NEXT:    ; def s[4:5]14984; GFX900-NEXT:    ;;#ASMEND14985; GFX900-NEXT:    s_lshr_b32 s9, s5, 1614986; GFX900-NEXT:    s_mov_b32 s8, s514987; GFX900-NEXT:    ;;#ASMSTART14988; GFX900-NEXT:    ; use s[8:9]14989; GFX900-NEXT:    ;;#ASMEND14990; GFX900-NEXT:    s_setpc_b64 s[30:31]14991;14992; GFX90A-LABEL: s_shuffle_v3f16_v4f16__6_7_7:14993; GFX90A:       ; %bb.0:14994; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14995; GFX90A-NEXT:    ;;#ASMSTART14996; GFX90A-NEXT:    ; def s[4:5]14997; GFX90A-NEXT:    ;;#ASMEND14998; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1614999; GFX90A-NEXT:    s_mov_b32 s8, s515000; GFX90A-NEXT:    ;;#ASMSTART15001; GFX90A-NEXT:    ; use s[8:9]15002; GFX90A-NEXT:    ;;#ASMEND15003; GFX90A-NEXT:    s_setpc_b64 s[30:31]15004;15005; GFX942-LABEL: s_shuffle_v3f16_v4f16__6_7_7:15006; GFX942:       ; %bb.0:15007; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15008; GFX942-NEXT:    ;;#ASMSTART15009; GFX942-NEXT:    ; def s[0:1]15010; GFX942-NEXT:    ;;#ASMEND15011; GFX942-NEXT:    s_lshr_b32 s9, s1, 1615012; GFX942-NEXT:    s_mov_b32 s8, s115013; GFX942-NEXT:    ;;#ASMSTART15014; GFX942-NEXT:    ; use s[8:9]15015; GFX942-NEXT:    ;;#ASMEND15016; GFX942-NEXT:    s_setpc_b64 s[30:31]15017  %vec0 = call <4 x half> asm "; def $0", "=s"()15018  %vec1 = call <4 x half> asm "; def $0", "=s"()15019  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 6, i32 7, i32 7>15020  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>15021  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)15022  ret void15023}15024 15025define void @s_shuffle_v3f16_v4f16__7_u_7() {15026; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_u_7:15027; GFX900:       ; %bb.0:15028; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15029; GFX900-NEXT:    ;;#ASMSTART15030; GFX900-NEXT:    ; def s[4:5]15031; GFX900-NEXT:    ;;#ASMEND15032; GFX900-NEXT:    s_lshr_b32 s8, s5, 1615033; GFX900-NEXT:    s_mov_b32 s9, s815034; GFX900-NEXT:    ;;#ASMSTART15035; GFX900-NEXT:    ; use s[8:9]15036; GFX900-NEXT:    ;;#ASMEND15037; GFX900-NEXT:    s_setpc_b64 s[30:31]15038;15039; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_u_7:15040; GFX90A:       ; %bb.0:15041; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15042; GFX90A-NEXT:    ;;#ASMSTART15043; GFX90A-NEXT:    ; def s[4:5]15044; GFX90A-NEXT:    ;;#ASMEND15045; GFX90A-NEXT:    s_lshr_b32 s8, s5, 1615046; GFX90A-NEXT:    s_mov_b32 s9, s815047; GFX90A-NEXT:    ;;#ASMSTART15048; GFX90A-NEXT:    ; use s[8:9]15049; GFX90A-NEXT:    ;;#ASMEND15050; GFX90A-NEXT:    s_setpc_b64 s[30:31]15051;15052; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_u_7:15053; GFX942:       ; %bb.0:15054; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15055; GFX942-NEXT:    ;;#ASMSTART15056; GFX942-NEXT:    ; def s[0:1]15057; GFX942-NEXT:    ;;#ASMEND15058; GFX942-NEXT:    s_lshr_b32 s8, s1, 1615059; GFX942-NEXT:    s_mov_b32 s9, s815060; GFX942-NEXT:    ;;#ASMSTART15061; GFX942-NEXT:    ; use s[8:9]15062; GFX942-NEXT:    ;;#ASMEND15063; GFX942-NEXT:    s_setpc_b64 s[30:31]15064  %vec0 = call <4 x half> asm "; def $0", "=s"()15065  %vec1 = call <4 x half> asm "; def $0", "=s"()15066  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 poison, i32 7>15067  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>15068  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)15069  ret void15070}15071 15072define void @s_shuffle_v3f16_v4f16__7_0_7() {15073; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_0_7:15074; GFX900:       ; %bb.0:15075; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15076; GFX900-NEXT:    ;;#ASMSTART15077; GFX900-NEXT:    ; def s[6:7]15078; GFX900-NEXT:    ;;#ASMEND15079; GFX900-NEXT:    s_lshr_b32 s9, s7, 1615080; GFX900-NEXT:    ;;#ASMSTART15081; GFX900-NEXT:    ; def s[4:5]15082; GFX900-NEXT:    ;;#ASMEND15083; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s9, s415084; GFX900-NEXT:    ;;#ASMSTART15085; GFX900-NEXT:    ; use s[8:9]15086; GFX900-NEXT:    ;;#ASMEND15087; GFX900-NEXT:    s_setpc_b64 s[30:31]15088;15089; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_0_7:15090; GFX90A:       ; %bb.0:15091; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15092; GFX90A-NEXT:    ;;#ASMSTART15093; GFX90A-NEXT:    ; def s[6:7]15094; GFX90A-NEXT:    ;;#ASMEND15095; GFX90A-NEXT:    s_lshr_b32 s9, s7, 1615096; GFX90A-NEXT:    ;;#ASMSTART15097; GFX90A-NEXT:    ; def s[4:5]15098; GFX90A-NEXT:    ;;#ASMEND15099; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s9, s415100; GFX90A-NEXT:    ;;#ASMSTART15101; GFX90A-NEXT:    ; use s[8:9]15102; GFX90A-NEXT:    ;;#ASMEND15103; GFX90A-NEXT:    s_setpc_b64 s[30:31]15104;15105; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_0_7:15106; GFX942:       ; %bb.0:15107; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15108; GFX942-NEXT:    ;;#ASMSTART15109; GFX942-NEXT:    ; def s[2:3]15110; GFX942-NEXT:    ;;#ASMEND15111; GFX942-NEXT:    s_lshr_b32 s9, s3, 1615112; GFX942-NEXT:    ;;#ASMSTART15113; GFX942-NEXT:    ; def s[0:1]15114; GFX942-NEXT:    ;;#ASMEND15115; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s9, s015116; GFX942-NEXT:    ;;#ASMSTART15117; GFX942-NEXT:    ; use s[8:9]15118; GFX942-NEXT:    ;;#ASMEND15119; GFX942-NEXT:    s_setpc_b64 s[30:31]15120  %vec0 = call <4 x half> asm "; def $0", "=s"()15121  %vec1 = call <4 x half> asm "; def $0", "=s"()15122  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 0, i32 7>15123  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>15124  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)15125  ret void15126}15127 15128define void @s_shuffle_v3f16_v4f16__7_1_7() {15129; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_1_7:15130; GFX900:       ; %bb.0:15131; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15132; GFX900-NEXT:    ;;#ASMSTART15133; GFX900-NEXT:    ; def s[4:5]15134; GFX900-NEXT:    ;;#ASMEND15135; GFX900-NEXT:    ;;#ASMSTART15136; GFX900-NEXT:    ; def s[6:7]15137; GFX900-NEXT:    ;;#ASMEND15138; GFX900-NEXT:    s_lshr_b32 s4, s4, 1615139; GFX900-NEXT:    s_lshr_b32 s9, s7, 1615140; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s9, s415141; GFX900-NEXT:    ;;#ASMSTART15142; GFX900-NEXT:    ; use s[8:9]15143; GFX900-NEXT:    ;;#ASMEND15144; GFX900-NEXT:    s_setpc_b64 s[30:31]15145;15146; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_1_7:15147; GFX90A:       ; %bb.0:15148; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15149; GFX90A-NEXT:    ;;#ASMSTART15150; GFX90A-NEXT:    ; def s[4:5]15151; GFX90A-NEXT:    ;;#ASMEND15152; GFX90A-NEXT:    ;;#ASMSTART15153; GFX90A-NEXT:    ; def s[6:7]15154; GFX90A-NEXT:    ;;#ASMEND15155; GFX90A-NEXT:    s_lshr_b32 s4, s4, 1615156; GFX90A-NEXT:    s_lshr_b32 s9, s7, 1615157; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s9, s415158; GFX90A-NEXT:    ;;#ASMSTART15159; GFX90A-NEXT:    ; use s[8:9]15160; GFX90A-NEXT:    ;;#ASMEND15161; GFX90A-NEXT:    s_setpc_b64 s[30:31]15162;15163; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_1_7:15164; GFX942:       ; %bb.0:15165; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15166; GFX942-NEXT:    ;;#ASMSTART15167; GFX942-NEXT:    ; def s[0:1]15168; GFX942-NEXT:    ;;#ASMEND15169; GFX942-NEXT:    ;;#ASMSTART15170; GFX942-NEXT:    ; def s[2:3]15171; GFX942-NEXT:    ;;#ASMEND15172; GFX942-NEXT:    s_lshr_b32 s0, s0, 1615173; GFX942-NEXT:    s_lshr_b32 s9, s3, 1615174; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s9, s015175; GFX942-NEXT:    ;;#ASMSTART15176; GFX942-NEXT:    ; use s[8:9]15177; GFX942-NEXT:    ;;#ASMEND15178; GFX942-NEXT:    s_setpc_b64 s[30:31]15179  %vec0 = call <4 x half> asm "; def $0", "=s"()15180  %vec1 = call <4 x half> asm "; def $0", "=s"()15181  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 1, i32 7>15182  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>15183  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)15184  ret void15185}15186 15187define void @s_shuffle_v3f16_v4f16__7_2_7() {15188; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_2_7:15189; GFX900:       ; %bb.0:15190; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15191; GFX900-NEXT:    ;;#ASMSTART15192; GFX900-NEXT:    ; def s[6:7]15193; GFX900-NEXT:    ;;#ASMEND15194; GFX900-NEXT:    s_lshr_b32 s9, s7, 1615195; GFX900-NEXT:    ;;#ASMSTART15196; GFX900-NEXT:    ; def s[4:5]15197; GFX900-NEXT:    ;;#ASMEND15198; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s9, s515199; GFX900-NEXT:    ;;#ASMSTART15200; GFX900-NEXT:    ; use s[8:9]15201; GFX900-NEXT:    ;;#ASMEND15202; GFX900-NEXT:    s_setpc_b64 s[30:31]15203;15204; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_2_7:15205; GFX90A:       ; %bb.0:15206; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15207; GFX90A-NEXT:    ;;#ASMSTART15208; GFX90A-NEXT:    ; def s[6:7]15209; GFX90A-NEXT:    ;;#ASMEND15210; GFX90A-NEXT:    s_lshr_b32 s9, s7, 1615211; GFX90A-NEXT:    ;;#ASMSTART15212; GFX90A-NEXT:    ; def s[4:5]15213; GFX90A-NEXT:    ;;#ASMEND15214; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s9, s515215; GFX90A-NEXT:    ;;#ASMSTART15216; GFX90A-NEXT:    ; use s[8:9]15217; GFX90A-NEXT:    ;;#ASMEND15218; GFX90A-NEXT:    s_setpc_b64 s[30:31]15219;15220; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_2_7:15221; GFX942:       ; %bb.0:15222; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15223; GFX942-NEXT:    ;;#ASMSTART15224; GFX942-NEXT:    ; def s[2:3]15225; GFX942-NEXT:    ;;#ASMEND15226; GFX942-NEXT:    s_lshr_b32 s9, s3, 1615227; GFX942-NEXT:    ;;#ASMSTART15228; GFX942-NEXT:    ; def s[0:1]15229; GFX942-NEXT:    ;;#ASMEND15230; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s9, s115231; GFX942-NEXT:    ;;#ASMSTART15232; GFX942-NEXT:    ; use s[8:9]15233; GFX942-NEXT:    ;;#ASMEND15234; GFX942-NEXT:    s_setpc_b64 s[30:31]15235  %vec0 = call <4 x half> asm "; def $0", "=s"()15236  %vec1 = call <4 x half> asm "; def $0", "=s"()15237  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 2, i32 7>15238  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>15239  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)15240  ret void15241}15242 15243define void @s_shuffle_v3f16_v4f16__7_3_7() {15244; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_3_7:15245; GFX900:       ; %bb.0:15246; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15247; GFX900-NEXT:    ;;#ASMSTART15248; GFX900-NEXT:    ; def s[4:5]15249; GFX900-NEXT:    ;;#ASMEND15250; GFX900-NEXT:    ;;#ASMSTART15251; GFX900-NEXT:    ; def s[6:7]15252; GFX900-NEXT:    ;;#ASMEND15253; GFX900-NEXT:    s_lshr_b32 s4, s5, 1615254; GFX900-NEXT:    s_lshr_b32 s9, s7, 1615255; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s9, s415256; GFX900-NEXT:    ;;#ASMSTART15257; GFX900-NEXT:    ; use s[8:9]15258; GFX900-NEXT:    ;;#ASMEND15259; GFX900-NEXT:    s_setpc_b64 s[30:31]15260;15261; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_3_7:15262; GFX90A:       ; %bb.0:15263; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15264; GFX90A-NEXT:    ;;#ASMSTART15265; GFX90A-NEXT:    ; def s[4:5]15266; GFX90A-NEXT:    ;;#ASMEND15267; GFX90A-NEXT:    ;;#ASMSTART15268; GFX90A-NEXT:    ; def s[6:7]15269; GFX90A-NEXT:    ;;#ASMEND15270; GFX90A-NEXT:    s_lshr_b32 s4, s5, 1615271; GFX90A-NEXT:    s_lshr_b32 s9, s7, 1615272; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s9, s415273; GFX90A-NEXT:    ;;#ASMSTART15274; GFX90A-NEXT:    ; use s[8:9]15275; GFX90A-NEXT:    ;;#ASMEND15276; GFX90A-NEXT:    s_setpc_b64 s[30:31]15277;15278; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_3_7:15279; GFX942:       ; %bb.0:15280; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15281; GFX942-NEXT:    ;;#ASMSTART15282; GFX942-NEXT:    ; def s[0:1]15283; GFX942-NEXT:    ;;#ASMEND15284; GFX942-NEXT:    ;;#ASMSTART15285; GFX942-NEXT:    ; def s[2:3]15286; GFX942-NEXT:    ;;#ASMEND15287; GFX942-NEXT:    s_lshr_b32 s0, s1, 1615288; GFX942-NEXT:    s_lshr_b32 s9, s3, 1615289; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s9, s015290; GFX942-NEXT:    ;;#ASMSTART15291; GFX942-NEXT:    ; use s[8:9]15292; GFX942-NEXT:    ;;#ASMEND15293; GFX942-NEXT:    s_setpc_b64 s[30:31]15294  %vec0 = call <4 x half> asm "; def $0", "=s"()15295  %vec1 = call <4 x half> asm "; def $0", "=s"()15296  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 3, i32 7>15297  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>15298  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)15299  ret void15300}15301 15302define void @s_shuffle_v3f16_v4f16__7_4_7() {15303; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_4_7:15304; GFX900:       ; %bb.0:15305; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15306; GFX900-NEXT:    ;;#ASMSTART15307; GFX900-NEXT:    ; def s[4:5]15308; GFX900-NEXT:    ;;#ASMEND15309; GFX900-NEXT:    s_lshr_b32 s9, s5, 1615310; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s9, s415311; GFX900-NEXT:    ;;#ASMSTART15312; GFX900-NEXT:    ; use s[8:9]15313; GFX900-NEXT:    ;;#ASMEND15314; GFX900-NEXT:    s_setpc_b64 s[30:31]15315;15316; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_4_7:15317; GFX90A:       ; %bb.0:15318; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15319; GFX90A-NEXT:    ;;#ASMSTART15320; GFX90A-NEXT:    ; def s[4:5]15321; GFX90A-NEXT:    ;;#ASMEND15322; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1615323; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s9, s415324; GFX90A-NEXT:    ;;#ASMSTART15325; GFX90A-NEXT:    ; use s[8:9]15326; GFX90A-NEXT:    ;;#ASMEND15327; GFX90A-NEXT:    s_setpc_b64 s[30:31]15328;15329; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_4_7:15330; GFX942:       ; %bb.0:15331; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15332; GFX942-NEXT:    ;;#ASMSTART15333; GFX942-NEXT:    ; def s[0:1]15334; GFX942-NEXT:    ;;#ASMEND15335; GFX942-NEXT:    s_lshr_b32 s9, s1, 1615336; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s9, s015337; GFX942-NEXT:    ;;#ASMSTART15338; GFX942-NEXT:    ; use s[8:9]15339; GFX942-NEXT:    ;;#ASMEND15340; GFX942-NEXT:    s_setpc_b64 s[30:31]15341  %vec0 = call <4 x half> asm "; def $0", "=s"()15342  %vec1 = call <4 x half> asm "; def $0", "=s"()15343  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 4, i32 7>15344  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>15345  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)15346  ret void15347}15348 15349define void @s_shuffle_v3f16_v4f16__7_5_7() {15350; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_5_7:15351; GFX900:       ; %bb.0:15352; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15353; GFX900-NEXT:    ;;#ASMSTART15354; GFX900-NEXT:    ; def s[4:5]15355; GFX900-NEXT:    ;;#ASMEND15356; GFX900-NEXT:    s_lshr_b32 s4, s4, 1615357; GFX900-NEXT:    s_lshr_b32 s9, s5, 1615358; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s9, s415359; GFX900-NEXT:    ;;#ASMSTART15360; GFX900-NEXT:    ; use s[8:9]15361; GFX900-NEXT:    ;;#ASMEND15362; GFX900-NEXT:    s_setpc_b64 s[30:31]15363;15364; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_5_7:15365; GFX90A:       ; %bb.0:15366; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15367; GFX90A-NEXT:    ;;#ASMSTART15368; GFX90A-NEXT:    ; def s[4:5]15369; GFX90A-NEXT:    ;;#ASMEND15370; GFX90A-NEXT:    s_lshr_b32 s4, s4, 1615371; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1615372; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s9, s415373; GFX90A-NEXT:    ;;#ASMSTART15374; GFX90A-NEXT:    ; use s[8:9]15375; GFX90A-NEXT:    ;;#ASMEND15376; GFX90A-NEXT:    s_setpc_b64 s[30:31]15377;15378; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_5_7:15379; GFX942:       ; %bb.0:15380; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15381; GFX942-NEXT:    ;;#ASMSTART15382; GFX942-NEXT:    ; def s[0:1]15383; GFX942-NEXT:    ;;#ASMEND15384; GFX942-NEXT:    s_lshr_b32 s0, s0, 1615385; GFX942-NEXT:    s_lshr_b32 s9, s1, 1615386; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s9, s015387; GFX942-NEXT:    ;;#ASMSTART15388; GFX942-NEXT:    ; use s[8:9]15389; GFX942-NEXT:    ;;#ASMEND15390; GFX942-NEXT:    s_setpc_b64 s[30:31]15391  %vec0 = call <4 x half> asm "; def $0", "=s"()15392  %vec1 = call <4 x half> asm "; def $0", "=s"()15393  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 5, i32 7>15394  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>15395  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)15396  ret void15397}15398 15399define void @s_shuffle_v3f16_v4f16__7_6_7() {15400; GFX900-LABEL: s_shuffle_v3f16_v4f16__7_6_7:15401; GFX900:       ; %bb.0:15402; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15403; GFX900-NEXT:    ;;#ASMSTART15404; GFX900-NEXT:    ; def s[4:5]15405; GFX900-NEXT:    ;;#ASMEND15406; GFX900-NEXT:    s_lshr_b32 s9, s5, 1615407; GFX900-NEXT:    s_pack_ll_b32_b16 s8, s9, s515408; GFX900-NEXT:    ;;#ASMSTART15409; GFX900-NEXT:    ; use s[8:9]15410; GFX900-NEXT:    ;;#ASMEND15411; GFX900-NEXT:    s_setpc_b64 s[30:31]15412;15413; GFX90A-LABEL: s_shuffle_v3f16_v4f16__7_6_7:15414; GFX90A:       ; %bb.0:15415; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15416; GFX90A-NEXT:    ;;#ASMSTART15417; GFX90A-NEXT:    ; def s[4:5]15418; GFX90A-NEXT:    ;;#ASMEND15419; GFX90A-NEXT:    s_lshr_b32 s9, s5, 1615420; GFX90A-NEXT:    s_pack_ll_b32_b16 s8, s9, s515421; GFX90A-NEXT:    ;;#ASMSTART15422; GFX90A-NEXT:    ; use s[8:9]15423; GFX90A-NEXT:    ;;#ASMEND15424; GFX90A-NEXT:    s_setpc_b64 s[30:31]15425;15426; GFX942-LABEL: s_shuffle_v3f16_v4f16__7_6_7:15427; GFX942:       ; %bb.0:15428; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)15429; GFX942-NEXT:    ;;#ASMSTART15430; GFX942-NEXT:    ; def s[0:1]15431; GFX942-NEXT:    ;;#ASMEND15432; GFX942-NEXT:    s_lshr_b32 s9, s1, 1615433; GFX942-NEXT:    s_pack_ll_b32_b16 s8, s9, s115434; GFX942-NEXT:    ;;#ASMSTART15435; GFX942-NEXT:    ; use s[8:9]15436; GFX942-NEXT:    ;;#ASMEND15437; GFX942-NEXT:    s_setpc_b64 s[30:31]15438  %vec0 = call <4 x half> asm "; def $0", "=s"()15439  %vec1 = call <4 x half> asm "; def $0", "=s"()15440  %shuf = shufflevector <4 x half> %vec0, <4 x half> %vec1, <3 x i32> <i32 7, i32 6, i32 7>15441  %extend3 = shufflevector <3 x half> %shuf, <3 x half> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 poison>15442  call void asm sideeffect "; use $0", "{s[8:9]}"(<4 x half> %extend3)15443  ret void15444}15445;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:15446; GFX90APLUS: {{.*}}15447