brintos

brintos / llvm-project-archived public Read only

0
0
Text · 194.5 KiB · 2a0344f Raw
5442 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_v4f32_v2f32__u_u_u_u(ptr addrspace(1) inreg %ptr) {8; GFX9-LABEL: v_shuffle_v4f32_v2f32__u_u_u_u:9; GFX9:       ; %bb.0:10; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11; GFX9-NEXT:    s_setpc_b64 s[30:31]12  %vec0 = call <2 x float> asm "; def $0", "=v"()13  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> poison14  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1615  ret void16}17 18define void @v_shuffle_v4f32_v2f32__0_u_u_u(ptr addrspace(1) inreg %ptr) {19; GFX900-LABEL: v_shuffle_v4f32_v2f32__0_u_u_u:20; GFX900:       ; %bb.0:21; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22; GFX900-NEXT:    v_mov_b32_e32 v2, 023; GFX900-NEXT:    ;;#ASMSTART24; GFX900-NEXT:    ; def v[0:1]25; GFX900-NEXT:    ;;#ASMEND26; GFX900-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]27; GFX900-NEXT:    s_waitcnt vmcnt(0)28; GFX900-NEXT:    s_setpc_b64 s[30:31]29;30; GFX90A-LABEL: v_shuffle_v4f32_v2f32__0_u_u_u:31; GFX90A:       ; %bb.0:32; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)33; GFX90A-NEXT:    v_mov_b32_e32 v2, 034; GFX90A-NEXT:    ;;#ASMSTART35; GFX90A-NEXT:    ; def v[0:1]36; GFX90A-NEXT:    ;;#ASMEND37; GFX90A-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]38; GFX90A-NEXT:    s_waitcnt vmcnt(0)39; GFX90A-NEXT:    s_setpc_b64 s[30:31]40;41; GFX942-LABEL: v_shuffle_v4f32_v2f32__0_u_u_u:42; GFX942:       ; %bb.0:43; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)44; GFX942-NEXT:    v_mov_b32_e32 v2, 045; GFX942-NEXT:    ;;#ASMSTART46; GFX942-NEXT:    ; def v[0:1]47; GFX942-NEXT:    ;;#ASMEND48; GFX942-NEXT:    global_store_dwordx4 v2, v[0:3], s[0:1]49; GFX942-NEXT:    s_waitcnt vmcnt(0)50; GFX942-NEXT:    s_setpc_b64 s[30:31]51  %vec0 = call <2 x float> asm "; def $0", "=v"()52  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>53  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1654  ret void55}56 57define void @v_shuffle_v4f32_v2f32__1_u_u_u(ptr addrspace(1) inreg %ptr) {58; GFX900-LABEL: v_shuffle_v4f32_v2f32__1_u_u_u:59; GFX900:       ; %bb.0:60; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)61; GFX900-NEXT:    v_mov_b32_e32 v2, 062; GFX900-NEXT:    ;;#ASMSTART63; GFX900-NEXT:    ; def v[0:1]64; GFX900-NEXT:    ;;#ASMEND65; GFX900-NEXT:    global_store_dwordx4 v2, v[1:4], s[16:17]66; GFX900-NEXT:    s_waitcnt vmcnt(0)67; GFX900-NEXT:    s_setpc_b64 s[30:31]68;69; GFX90A-LABEL: v_shuffle_v4f32_v2f32__1_u_u_u:70; GFX90A:       ; %bb.0:71; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)72; GFX90A-NEXT:    ;;#ASMSTART73; GFX90A-NEXT:    ; def v[0:1]74; GFX90A-NEXT:    ;;#ASMEND75; GFX90A-NEXT:    v_mov_b32_e32 v2, 076; GFX90A-NEXT:    v_mov_b32_e32 v0, v177; GFX90A-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]78; GFX90A-NEXT:    s_waitcnt vmcnt(0)79; GFX90A-NEXT:    s_setpc_b64 s[30:31]80;81; GFX942-LABEL: v_shuffle_v4f32_v2f32__1_u_u_u:82; GFX942:       ; %bb.0:83; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)84; GFX942-NEXT:    ;;#ASMSTART85; GFX942-NEXT:    ; def v[0:1]86; GFX942-NEXT:    ;;#ASMEND87; GFX942-NEXT:    v_mov_b32_e32 v2, 088; GFX942-NEXT:    v_mov_b32_e32 v0, v189; GFX942-NEXT:    global_store_dwordx4 v2, v[0:3], s[0:1]90; GFX942-NEXT:    s_waitcnt vmcnt(0)91; GFX942-NEXT:    s_setpc_b64 s[30:31]92  %vec0 = call <2 x float> asm "; def $0", "=v"()93  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>94  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 1695  ret void96}97 98define void @v_shuffle_v4f32_v2f32__2_u_u_u(ptr addrspace(1) inreg %ptr) {99; GFX9-LABEL: v_shuffle_v4f32_v2f32__2_u_u_u:100; GFX9:       ; %bb.0:101; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)102; GFX9-NEXT:    s_setpc_b64 s[30:31]103  %vec0 = call <2 x float> asm "; def $0", "=v"()104  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison>105  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16106  ret void107}108 109define void @v_shuffle_v4f32_v2f32__3_u_u_u(ptr addrspace(1) inreg %ptr) {110; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_u_u_u:111; GFX900:       ; %bb.0:112; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)113; GFX900-NEXT:    v_mov_b32_e32 v2, 0114; GFX900-NEXT:    ;;#ASMSTART115; GFX900-NEXT:    ; def v[0:1]116; GFX900-NEXT:    ;;#ASMEND117; GFX900-NEXT:    global_store_dwordx4 v2, v[1:4], s[16:17]118; GFX900-NEXT:    s_waitcnt vmcnt(0)119; GFX900-NEXT:    s_setpc_b64 s[30:31]120;121; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_u_u_u:122; GFX90A:       ; %bb.0:123; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)124; GFX90A-NEXT:    ;;#ASMSTART125; GFX90A-NEXT:    ; def v[0:1]126; GFX90A-NEXT:    ;;#ASMEND127; GFX90A-NEXT:    v_mov_b32_e32 v2, 0128; GFX90A-NEXT:    v_mov_b32_e32 v0, v1129; GFX90A-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]130; GFX90A-NEXT:    s_waitcnt vmcnt(0)131; GFX90A-NEXT:    s_setpc_b64 s[30:31]132;133; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_u_u_u:134; GFX942:       ; %bb.0:135; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)136; GFX942-NEXT:    ;;#ASMSTART137; GFX942-NEXT:    ; def v[0:1]138; GFX942-NEXT:    ;;#ASMEND139; GFX942-NEXT:    v_mov_b32_e32 v2, 0140; GFX942-NEXT:    v_mov_b32_e32 v0, v1141; GFX942-NEXT:    global_store_dwordx4 v2, v[0:3], s[0:1]142; GFX942-NEXT:    s_waitcnt vmcnt(0)143; GFX942-NEXT:    s_setpc_b64 s[30:31]144  %vec0 = call <2 x float> asm "; def $0", "=v"()145  %vec1 = call <2 x float> asm "; def $0", "=v"()146  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison>147  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16148  ret void149}150 151define void @v_shuffle_v4f32_v2f32__3_0_u_u(ptr addrspace(1) inreg %ptr) {152; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_0_u_u:153; GFX900:       ; %bb.0:154; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)155; GFX900-NEXT:    v_mov_b32_e32 v4, 0156; GFX900-NEXT:    ;;#ASMSTART157; GFX900-NEXT:    ; def v[2:3]158; GFX900-NEXT:    ;;#ASMEND159; GFX900-NEXT:    ;;#ASMSTART160; GFX900-NEXT:    ; def v[0:1]161; GFX900-NEXT:    ;;#ASMEND162; GFX900-NEXT:    global_store_dwordx4 v4, v[1:4], s[16:17]163; GFX900-NEXT:    s_waitcnt vmcnt(0)164; GFX900-NEXT:    s_setpc_b64 s[30:31]165;166; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_0_u_u:167; GFX90A:       ; %bb.0:168; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)169; GFX90A-NEXT:    ;;#ASMSTART170; GFX90A-NEXT:    ; def v[0:1]171; GFX90A-NEXT:    ;;#ASMEND172; GFX90A-NEXT:    v_mov_b32_e32 v4, 0173; GFX90A-NEXT:    ;;#ASMSTART174; GFX90A-NEXT:    ; def v[2:3]175; GFX90A-NEXT:    ;;#ASMEND176; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]177; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]178; GFX90A-NEXT:    s_waitcnt vmcnt(0)179; GFX90A-NEXT:    s_setpc_b64 s[30:31]180;181; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_0_u_u:182; GFX942:       ; %bb.0:183; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)184; GFX942-NEXT:    ;;#ASMSTART185; GFX942-NEXT:    ; def v[0:1]186; GFX942-NEXT:    ;;#ASMEND187; GFX942-NEXT:    v_mov_b32_e32 v4, 0188; GFX942-NEXT:    ;;#ASMSTART189; GFX942-NEXT:    ; def v[2:3]190; GFX942-NEXT:    ;;#ASMEND191; GFX942-NEXT:    s_nop 0192; GFX942-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]193; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]194; GFX942-NEXT:    s_waitcnt vmcnt(0)195; GFX942-NEXT:    s_setpc_b64 s[30:31]196  %vec0 = call <2 x float> asm "; def $0", "=v"()197  %vec1 = call <2 x float> asm "; def $0", "=v"()198  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 0, i32 poison, i32 poison>199  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16200  ret void201}202 203define void @v_shuffle_v4f32_v2f32__3_1_u_u(ptr addrspace(1) inreg %ptr) {204; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_1_u_u:205; GFX900:       ; %bb.0:206; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)207; GFX900-NEXT:    v_mov_b32_e32 v3, 0208; GFX900-NEXT:    ;;#ASMSTART209; GFX900-NEXT:    ; def v[1:2]210; GFX900-NEXT:    ;;#ASMEND211; GFX900-NEXT:    ;;#ASMSTART212; GFX900-NEXT:    ; def v[0:1]213; GFX900-NEXT:    ;;#ASMEND214; GFX900-NEXT:    global_store_dwordx4 v3, v[1:4], s[16:17]215; GFX900-NEXT:    s_waitcnt vmcnt(0)216; GFX900-NEXT:    s_setpc_b64 s[30:31]217;218; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_1_u_u:219; GFX90A:       ; %bb.0:220; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)221; GFX90A-NEXT:    ;;#ASMSTART222; GFX90A-NEXT:    ; def v[0:1]223; GFX90A-NEXT:    ;;#ASMEND224; GFX90A-NEXT:    v_mov_b32_e32 v4, 0225; GFX90A-NEXT:    ;;#ASMSTART226; GFX90A-NEXT:    ; def v[2:3]227; GFX90A-NEXT:    ;;#ASMEND228; GFX90A-NEXT:    v_mov_b32_e32 v0, v3229; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]230; GFX90A-NEXT:    s_waitcnt vmcnt(0)231; GFX90A-NEXT:    s_setpc_b64 s[30:31]232;233; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_1_u_u:234; GFX942:       ; %bb.0:235; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)236; GFX942-NEXT:    ;;#ASMSTART237; GFX942-NEXT:    ; def v[0:1]238; GFX942-NEXT:    ;;#ASMEND239; GFX942-NEXT:    v_mov_b32_e32 v4, 0240; GFX942-NEXT:    ;;#ASMSTART241; GFX942-NEXT:    ; def v[2:3]242; GFX942-NEXT:    ;;#ASMEND243; GFX942-NEXT:    s_nop 0244; GFX942-NEXT:    v_mov_b32_e32 v0, v3245; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]246; GFX942-NEXT:    s_waitcnt vmcnt(0)247; GFX942-NEXT:    s_setpc_b64 s[30:31]248  %vec0 = call <2 x float> asm "; def $0", "=v"()249  %vec1 = call <2 x float> asm "; def $0", "=v"()250  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 1, i32 poison, i32 poison>251  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16252  ret void253}254 255define void @v_shuffle_v4f32_v2f32__3_2_u_u(ptr addrspace(1) inreg %ptr) {256; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_2_u_u:257; GFX900:       ; %bb.0:258; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)259; GFX900-NEXT:    v_mov_b32_e32 v3, 0260; GFX900-NEXT:    ;;#ASMSTART261; GFX900-NEXT:    ; def v[0:1]262; GFX900-NEXT:    ;;#ASMEND263; GFX900-NEXT:    v_mov_b32_e32 v2, v0264; GFX900-NEXT:    global_store_dwordx4 v3, v[1:4], s[16:17]265; GFX900-NEXT:    s_waitcnt vmcnt(0)266; GFX900-NEXT:    s_setpc_b64 s[30:31]267;268; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_2_u_u:269; GFX90A:       ; %bb.0:270; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)271; GFX90A-NEXT:    v_mov_b32_e32 v2, 0272; GFX90A-NEXT:    ;;#ASMSTART273; GFX90A-NEXT:    ; def v[0:1]274; GFX90A-NEXT:    ;;#ASMEND275; GFX90A-NEXT:    v_mov_b32_e32 v4, v1276; GFX90A-NEXT:    v_mov_b32_e32 v5, v0277; GFX90A-NEXT:    global_store_dwordx4 v2, v[4:7], s[16:17]278; GFX90A-NEXT:    s_waitcnt vmcnt(0)279; GFX90A-NEXT:    s_setpc_b64 s[30:31]280;281; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_2_u_u:282; GFX942:       ; %bb.0:283; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)284; GFX942-NEXT:    v_mov_b32_e32 v2, 0285; GFX942-NEXT:    ;;#ASMSTART286; GFX942-NEXT:    ; def v[0:1]287; GFX942-NEXT:    ;;#ASMEND288; GFX942-NEXT:    s_nop 0289; GFX942-NEXT:    v_mov_b32_e32 v4, v1290; GFX942-NEXT:    v_mov_b32_e32 v5, v0291; GFX942-NEXT:    global_store_dwordx4 v2, v[4:7], s[0:1]292; GFX942-NEXT:    s_waitcnt vmcnt(0)293; GFX942-NEXT:    s_setpc_b64 s[30:31]294  %vec0 = call <2 x float> asm "; def $0", "=v"()295  %vec1 = call <2 x float> asm "; def $0", "=v"()296  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 2, i32 poison, i32 poison>297  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16298  ret void299}300 301define void @v_shuffle_v4f32_v2f32__3_3_u_u(ptr addrspace(1) inreg %ptr) {302; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_u_u:303; GFX900:       ; %bb.0:304; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)305; GFX900-NEXT:    v_mov_b32_e32 v3, 0306; GFX900-NEXT:    ;;#ASMSTART307; GFX900-NEXT:    ; def v[0:1]308; GFX900-NEXT:    ;;#ASMEND309; GFX900-NEXT:    v_mov_b32_e32 v2, v1310; GFX900-NEXT:    global_store_dwordx4 v3, v[1:4], s[16:17]311; GFX900-NEXT:    s_waitcnt vmcnt(0)312; GFX900-NEXT:    s_setpc_b64 s[30:31]313;314; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_u_u:315; GFX90A:       ; %bb.0:316; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)317; GFX90A-NEXT:    ;;#ASMSTART318; GFX90A-NEXT:    ; def v[0:1]319; GFX90A-NEXT:    ;;#ASMEND320; GFX90A-NEXT:    v_mov_b32_e32 v2, 0321; GFX90A-NEXT:    v_mov_b32_e32 v0, v1322; GFX90A-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]323; GFX90A-NEXT:    s_waitcnt vmcnt(0)324; GFX90A-NEXT:    s_setpc_b64 s[30:31]325;326; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_3_u_u:327; GFX942:       ; %bb.0:328; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)329; GFX942-NEXT:    ;;#ASMSTART330; GFX942-NEXT:    ; def v[0:1]331; GFX942-NEXT:    ;;#ASMEND332; GFX942-NEXT:    v_mov_b32_e32 v2, 0333; GFX942-NEXT:    v_mov_b32_e32 v0, v1334; GFX942-NEXT:    global_store_dwordx4 v2, v[0:3], s[0:1]335; GFX942-NEXT:    s_waitcnt vmcnt(0)336; GFX942-NEXT:    s_setpc_b64 s[30:31]337  %vec0 = call <2 x float> asm "; def $0", "=v"()338  %vec1 = call <2 x float> asm "; def $0", "=v"()339  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 poison>340  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16341  ret void342}343 344define void @v_shuffle_v4f32_v2f32__3_3_0_u(ptr addrspace(1) inreg %ptr) {345; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_0_u:346; GFX900:       ; %bb.0:347; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)348; GFX900-NEXT:    v_mov_b32_e32 v5, 0349; GFX900-NEXT:    ;;#ASMSTART350; GFX900-NEXT:    ; def v[0:1]351; GFX900-NEXT:    ;;#ASMEND352; GFX900-NEXT:    v_mov_b32_e32 v2, v1353; GFX900-NEXT:    ;;#ASMSTART354; GFX900-NEXT:    ; def v[3:4]355; GFX900-NEXT:    ;;#ASMEND356; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]357; GFX900-NEXT:    s_waitcnt vmcnt(0)358; GFX900-NEXT:    s_setpc_b64 s[30:31]359;360; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_0_u:361; GFX90A:       ; %bb.0:362; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)363; GFX90A-NEXT:    ;;#ASMSTART364; GFX90A-NEXT:    ; def v[0:1]365; GFX90A-NEXT:    ;;#ASMEND366; GFX90A-NEXT:    v_mov_b32_e32 v4, 0367; GFX90A-NEXT:    v_mov_b32_e32 v0, v1368; GFX90A-NEXT:    ;;#ASMSTART369; GFX90A-NEXT:    ; def v[2:3]370; GFX90A-NEXT:    ;;#ASMEND371; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]372; GFX90A-NEXT:    s_waitcnt vmcnt(0)373; GFX90A-NEXT:    s_setpc_b64 s[30:31]374;375; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_3_0_u:376; GFX942:       ; %bb.0:377; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)378; GFX942-NEXT:    ;;#ASMSTART379; GFX942-NEXT:    ; def v[0:1]380; GFX942-NEXT:    ;;#ASMEND381; GFX942-NEXT:    v_mov_b32_e32 v4, 0382; GFX942-NEXT:    v_mov_b32_e32 v0, v1383; GFX942-NEXT:    ;;#ASMSTART384; GFX942-NEXT:    ; def v[2:3]385; GFX942-NEXT:    ;;#ASMEND386; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]387; GFX942-NEXT:    s_waitcnt vmcnt(0)388; GFX942-NEXT:    s_setpc_b64 s[30:31]389  %vec0 = call <2 x float> asm "; def $0", "=v"()390  %vec1 = call <2 x float> asm "; def $0", "=v"()391  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 poison>392  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16393  ret void394}395 396define void @v_shuffle_v4f32_v2f32__3_3_1_u(ptr addrspace(1) inreg %ptr) {397; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_1_u:398; GFX900:       ; %bb.0:399; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)400; GFX900-NEXT:    ;;#ASMSTART401; GFX900-NEXT:    ; def v[2:3]402; GFX900-NEXT:    ;;#ASMEND403; GFX900-NEXT:    v_mov_b32_e32 v4, 0404; GFX900-NEXT:    ;;#ASMSTART405; GFX900-NEXT:    ; def v[0:1]406; GFX900-NEXT:    ;;#ASMEND407; GFX900-NEXT:    v_mov_b32_e32 v2, v1408; GFX900-NEXT:    global_store_dwordx4 v4, v[1:4], s[16:17]409; GFX900-NEXT:    s_waitcnt vmcnt(0)410; GFX900-NEXT:    s_setpc_b64 s[30:31]411;412; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_1_u:413; GFX90A:       ; %bb.0:414; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)415; GFX90A-NEXT:    ;;#ASMSTART416; GFX90A-NEXT:    ; def v[2:3]417; GFX90A-NEXT:    ;;#ASMEND418; GFX90A-NEXT:    ;;#ASMSTART419; GFX90A-NEXT:    ; def v[0:1]420; GFX90A-NEXT:    ;;#ASMEND421; GFX90A-NEXT:    v_mov_b32_e32 v4, 0422; GFX90A-NEXT:    v_mov_b32_e32 v0, v1423; GFX90A-NEXT:    v_mov_b32_e32 v2, v3424; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]425; GFX90A-NEXT:    s_waitcnt vmcnt(0)426; GFX90A-NEXT:    s_setpc_b64 s[30:31]427;428; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_3_1_u:429; GFX942:       ; %bb.0:430; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)431; GFX942-NEXT:    ;;#ASMSTART432; GFX942-NEXT:    ; def v[2:3]433; GFX942-NEXT:    ;;#ASMEND434; GFX942-NEXT:    ;;#ASMSTART435; GFX942-NEXT:    ; def v[0:1]436; GFX942-NEXT:    ;;#ASMEND437; GFX942-NEXT:    v_mov_b32_e32 v4, 0438; GFX942-NEXT:    v_mov_b32_e32 v0, v1439; GFX942-NEXT:    v_mov_b32_e32 v2, v3440; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]441; GFX942-NEXT:    s_waitcnt vmcnt(0)442; GFX942-NEXT:    s_setpc_b64 s[30:31]443  %vec0 = call <2 x float> asm "; def $0", "=v"()444  %vec1 = call <2 x float> asm "; def $0", "=v"()445  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 poison>446  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16447  ret void448}449 450define void @v_shuffle_v4f32_v2f32__3_3_2_u(ptr addrspace(1) inreg %ptr) {451; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_2_u:452; GFX900:       ; %bb.0:453; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)454; GFX900-NEXT:    v_mov_b32_e32 v4, 0455; GFX900-NEXT:    ;;#ASMSTART456; GFX900-NEXT:    ; def v[0:1]457; GFX900-NEXT:    ;;#ASMEND458; GFX900-NEXT:    v_mov_b32_e32 v2, v1459; GFX900-NEXT:    v_mov_b32_e32 v3, v0460; GFX900-NEXT:    global_store_dwordx4 v4, v[1:4], s[16:17]461; GFX900-NEXT:    s_waitcnt vmcnt(0)462; GFX900-NEXT:    s_setpc_b64 s[30:31]463;464; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_2_u:465; GFX90A:       ; %bb.0:466; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)467; GFX90A-NEXT:    v_mov_b32_e32 v4, 0468; GFX90A-NEXT:    ;;#ASMSTART469; GFX90A-NEXT:    ; def v[2:3]470; GFX90A-NEXT:    ;;#ASMEND471; GFX90A-NEXT:    v_mov_b32_e32 v0, v3472; GFX90A-NEXT:    v_mov_b32_e32 v1, v3473; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]474; GFX90A-NEXT:    s_waitcnt vmcnt(0)475; GFX90A-NEXT:    s_setpc_b64 s[30:31]476;477; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_3_2_u:478; GFX942:       ; %bb.0:479; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)480; GFX942-NEXT:    v_mov_b32_e32 v4, 0481; GFX942-NEXT:    ;;#ASMSTART482; GFX942-NEXT:    ; def v[2:3]483; GFX942-NEXT:    ;;#ASMEND484; GFX942-NEXT:    s_nop 0485; GFX942-NEXT:    v_mov_b32_e32 v0, v3486; GFX942-NEXT:    v_mov_b32_e32 v1, v3487; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]488; GFX942-NEXT:    s_waitcnt vmcnt(0)489; GFX942-NEXT:    s_setpc_b64 s[30:31]490  %vec0 = call <2 x float> asm "; def $0", "=v"()491  %vec1 = call <2 x float> asm "; def $0", "=v"()492  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 poison>493  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16494  ret void495}496 497define void @v_shuffle_v4f32_v2f32__3_3_3_u(ptr addrspace(1) inreg %ptr) {498; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_3_u:499; GFX900:       ; %bb.0:500; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)501; GFX900-NEXT:    v_mov_b32_e32 v4, 0502; GFX900-NEXT:    ;;#ASMSTART503; GFX900-NEXT:    ; def v[0:1]504; GFX900-NEXT:    ;;#ASMEND505; GFX900-NEXT:    v_mov_b32_e32 v2, v1506; GFX900-NEXT:    v_mov_b32_e32 v3, v1507; GFX900-NEXT:    global_store_dwordx4 v4, v[1:4], s[16:17]508; GFX900-NEXT:    s_waitcnt vmcnt(0)509; GFX900-NEXT:    s_setpc_b64 s[30:31]510;511; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_3_u:512; GFX90A:       ; %bb.0:513; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)514; GFX90A-NEXT:    ;;#ASMSTART515; GFX90A-NEXT:    ; def v[0:1]516; GFX90A-NEXT:    ;;#ASMEND517; GFX90A-NEXT:    v_mov_b32_e32 v3, 0518; GFX90A-NEXT:    v_mov_b32_e32 v0, v1519; GFX90A-NEXT:    v_mov_b32_e32 v2, v1520; GFX90A-NEXT:    global_store_dwordx4 v3, v[0:3], s[16:17]521; GFX90A-NEXT:    s_waitcnt vmcnt(0)522; GFX90A-NEXT:    s_setpc_b64 s[30:31]523;524; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_3_3_u:525; GFX942:       ; %bb.0:526; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)527; GFX942-NEXT:    ;;#ASMSTART528; GFX942-NEXT:    ; def v[0:1]529; GFX942-NEXT:    ;;#ASMEND530; GFX942-NEXT:    v_mov_b32_e32 v3, 0531; GFX942-NEXT:    v_mov_b32_e32 v0, v1532; GFX942-NEXT:    v_mov_b32_e32 v2, v1533; GFX942-NEXT:    global_store_dwordx4 v3, v[0:3], s[0:1]534; GFX942-NEXT:    s_waitcnt vmcnt(0)535; GFX942-NEXT:    s_setpc_b64 s[30:31]536  %vec0 = call <2 x float> asm "; def $0", "=v"()537  %vec1 = call <2 x float> asm "; def $0", "=v"()538  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 poison>539  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16540  ret void541}542 543define void @v_shuffle_v4f32_v2f32__3_3_3_0(ptr addrspace(1) inreg %ptr) {544; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_3_0:545; GFX900:       ; %bb.0:546; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)547; GFX900-NEXT:    v_mov_b32_e32 v6, 0548; GFX900-NEXT:    ;;#ASMSTART549; GFX900-NEXT:    ; def v[0:1]550; GFX900-NEXT:    ;;#ASMEND551; GFX900-NEXT:    v_mov_b32_e32 v2, v1552; GFX900-NEXT:    v_mov_b32_e32 v3, v1553; GFX900-NEXT:    ;;#ASMSTART554; GFX900-NEXT:    ; def v[4:5]555; GFX900-NEXT:    ;;#ASMEND556; GFX900-NEXT:    global_store_dwordx4 v6, v[1:4], s[16:17]557; GFX900-NEXT:    s_waitcnt vmcnt(0)558; GFX900-NEXT:    s_setpc_b64 s[30:31]559;560; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_3_0:561; GFX90A:       ; %bb.0:562; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)563; GFX90A-NEXT:    ;;#ASMSTART564; GFX90A-NEXT:    ; def v[2:3]565; GFX90A-NEXT:    ;;#ASMEND566; GFX90A-NEXT:    ;;#ASMSTART567; GFX90A-NEXT:    ; def v[0:1]568; GFX90A-NEXT:    ;;#ASMEND569; GFX90A-NEXT:    v_mov_b32_e32 v4, 0570; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], v[0:1], v[2:3] op_sel:[1,0]571; GFX90A-NEXT:    v_mov_b32_e32 v0, v1572; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]573; GFX90A-NEXT:    s_waitcnt vmcnt(0)574; GFX90A-NEXT:    s_setpc_b64 s[30:31]575;576; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_3_3_0:577; GFX942:       ; %bb.0:578; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)579; GFX942-NEXT:    ;;#ASMSTART580; GFX942-NEXT:    ; def v[2:3]581; GFX942-NEXT:    ;;#ASMEND582; GFX942-NEXT:    ;;#ASMSTART583; GFX942-NEXT:    ; def v[0:1]584; GFX942-NEXT:    ;;#ASMEND585; GFX942-NEXT:    v_mov_b32_e32 v4, 0586; GFX942-NEXT:    v_pk_mov_b32 v[2:3], v[0:1], v[2:3] op_sel:[1,0]587; GFX942-NEXT:    v_mov_b32_e32 v0, v1588; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]589; GFX942-NEXT:    s_waitcnt vmcnt(0)590; GFX942-NEXT:    s_setpc_b64 s[30:31]591  %vec0 = call <2 x float> asm "; def $0", "=v"()592  %vec1 = call <2 x float> asm "; def $0", "=v"()593  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 0>594  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16595  ret void596}597 598define void @v_shuffle_v4f32_v2f32__3_3_3_1(ptr addrspace(1) inreg %ptr) {599; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_3_1:600; GFX900:       ; %bb.0:601; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)602; GFX900-NEXT:    ;;#ASMSTART603; GFX900-NEXT:    ; def v[3:4]604; GFX900-NEXT:    ;;#ASMEND605; GFX900-NEXT:    v_mov_b32_e32 v5, 0606; GFX900-NEXT:    ;;#ASMSTART607; GFX900-NEXT:    ; def v[0:1]608; GFX900-NEXT:    ;;#ASMEND609; GFX900-NEXT:    v_mov_b32_e32 v2, v1610; GFX900-NEXT:    v_mov_b32_e32 v3, v1611; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]612; GFX900-NEXT:    s_waitcnt vmcnt(0)613; GFX900-NEXT:    s_setpc_b64 s[30:31]614;615; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_3_1:616; GFX90A:       ; %bb.0:617; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)618; GFX90A-NEXT:    ;;#ASMSTART619; GFX90A-NEXT:    ; def v[2:3]620; GFX90A-NEXT:    ;;#ASMEND621; GFX90A-NEXT:    ;;#ASMSTART622; GFX90A-NEXT:    ; def v[0:1]623; GFX90A-NEXT:    ;;#ASMEND624; GFX90A-NEXT:    v_mov_b32_e32 v4, 0625; GFX90A-NEXT:    v_mov_b32_e32 v0, v1626; GFX90A-NEXT:    v_mov_b32_e32 v2, v1627; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]628; GFX90A-NEXT:    s_waitcnt vmcnt(0)629; GFX90A-NEXT:    s_setpc_b64 s[30:31]630;631; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_3_3_1:632; GFX942:       ; %bb.0:633; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)634; GFX942-NEXT:    ;;#ASMSTART635; GFX942-NEXT:    ; def v[2:3]636; GFX942-NEXT:    ;;#ASMEND637; GFX942-NEXT:    ;;#ASMSTART638; GFX942-NEXT:    ; def v[0:1]639; GFX942-NEXT:    ;;#ASMEND640; GFX942-NEXT:    v_mov_b32_e32 v4, 0641; GFX942-NEXT:    v_mov_b32_e32 v0, v1642; GFX942-NEXT:    v_mov_b32_e32 v2, v1643; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]644; GFX942-NEXT:    s_waitcnt vmcnt(0)645; GFX942-NEXT:    s_setpc_b64 s[30:31]646  %vec0 = call <2 x float> asm "; def $0", "=v"()647  %vec1 = call <2 x float> asm "; def $0", "=v"()648  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 1>649  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16650  ret void651}652 653define void @v_shuffle_v4f32_v2f32__3_3_3_2(ptr addrspace(1) inreg %ptr) {654; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_3_2:655; GFX900:       ; %bb.0:656; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)657; GFX900-NEXT:    v_mov_b32_e32 v5, 0658; GFX900-NEXT:    ;;#ASMSTART659; GFX900-NEXT:    ; def v[0:1]660; GFX900-NEXT:    ;;#ASMEND661; GFX900-NEXT:    v_mov_b32_e32 v2, v1662; GFX900-NEXT:    v_mov_b32_e32 v3, v1663; GFX900-NEXT:    v_mov_b32_e32 v4, v0664; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]665; GFX900-NEXT:    s_waitcnt vmcnt(0)666; GFX900-NEXT:    s_setpc_b64 s[30:31]667;668; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_3_2:669; GFX90A:       ; %bb.0:670; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)671; GFX90A-NEXT:    ;;#ASMSTART672; GFX90A-NEXT:    ; def v[0:1]673; GFX90A-NEXT:    ;;#ASMEND674; GFX90A-NEXT:    v_mov_b32_e32 v4, 0675; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], v[0:1], v[0:1] op_sel:[1,0]676; GFX90A-NEXT:    v_mov_b32_e32 v0, v1677; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]678; GFX90A-NEXT:    s_waitcnt vmcnt(0)679; GFX90A-NEXT:    s_setpc_b64 s[30:31]680;681; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_3_3_2:682; GFX942:       ; %bb.0:683; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)684; GFX942-NEXT:    ;;#ASMSTART685; GFX942-NEXT:    ; def v[0:1]686; GFX942-NEXT:    ;;#ASMEND687; GFX942-NEXT:    v_mov_b32_e32 v4, 0688; GFX942-NEXT:    v_pk_mov_b32 v[2:3], v[0:1], v[0:1] op_sel:[1,0]689; GFX942-NEXT:    v_mov_b32_e32 v0, v1690; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]691; GFX942-NEXT:    s_waitcnt vmcnt(0)692; GFX942-NEXT:    s_setpc_b64 s[30:31]693  %vec0 = call <2 x float> asm "; def $0", "=v"()694  %vec1 = call <2 x float> asm "; def $0", "=v"()695  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 2>696  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16697  ret void698}699 700define void @v_shuffle_v4f32_v2f32__3_3_3_3(ptr addrspace(1) inreg %ptr) {701; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_3_3:702; GFX900:       ; %bb.0:703; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)704; GFX900-NEXT:    v_mov_b32_e32 v5, 0705; GFX900-NEXT:    ;;#ASMSTART706; GFX900-NEXT:    ; def v[0:1]707; GFX900-NEXT:    ;;#ASMEND708; GFX900-NEXT:    v_mov_b32_e32 v2, v1709; GFX900-NEXT:    v_mov_b32_e32 v3, v1710; GFX900-NEXT:    v_mov_b32_e32 v4, v1711; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]712; GFX900-NEXT:    s_waitcnt vmcnt(0)713; GFX900-NEXT:    s_setpc_b64 s[30:31]714;715; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_3_3:716; GFX90A:       ; %bb.0:717; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)718; GFX90A-NEXT:    ;;#ASMSTART719; GFX90A-NEXT:    ; def v[0:1]720; GFX90A-NEXT:    ;;#ASMEND721; GFX90A-NEXT:    v_mov_b32_e32 v4, 0722; GFX90A-NEXT:    v_mov_b32_e32 v0, v1723; GFX90A-NEXT:    v_mov_b32_e32 v2, v1724; GFX90A-NEXT:    v_mov_b32_e32 v3, v1725; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]726; GFX90A-NEXT:    s_waitcnt vmcnt(0)727; GFX90A-NEXT:    s_setpc_b64 s[30:31]728;729; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_3_3_3:730; GFX942:       ; %bb.0:731; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)732; GFX942-NEXT:    ;;#ASMSTART733; GFX942-NEXT:    ; def v[0:1]734; GFX942-NEXT:    ;;#ASMEND735; GFX942-NEXT:    v_mov_b32_e32 v4, 0736; GFX942-NEXT:    v_mov_b32_e32 v0, v1737; GFX942-NEXT:    v_mov_b32_e32 v2, v1738; GFX942-NEXT:    v_mov_b32_e32 v3, v1739; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]740; GFX942-NEXT:    s_waitcnt vmcnt(0)741; GFX942-NEXT:    s_setpc_b64 s[30:31]742  %vec0 = call <2 x float> asm "; def $0", "=v"()743  %vec1 = call <2 x float> asm "; def $0", "=v"()744  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 3>745  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16746  ret void747}748 749define void @v_shuffle_v4f32_v2f32__u_0_0_0(ptr addrspace(1) inreg %ptr) {750; GFX900-LABEL: v_shuffle_v4f32_v2f32__u_0_0_0:751; GFX900:       ; %bb.0:752; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)753; GFX900-NEXT:    ;;#ASMSTART754; GFX900-NEXT:    ; def v[1:2]755; GFX900-NEXT:    ;;#ASMEND756; GFX900-NEXT:    v_mov_b32_e32 v0, 0757; GFX900-NEXT:    v_mov_b32_e32 v2, v1758; GFX900-NEXT:    v_mov_b32_e32 v3, v1759; GFX900-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17]760; GFX900-NEXT:    s_waitcnt vmcnt(0)761; GFX900-NEXT:    s_setpc_b64 s[30:31]762;763; GFX90A-LABEL: v_shuffle_v4f32_v2f32__u_0_0_0:764; GFX90A:       ; %bb.0:765; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)766; GFX90A-NEXT:    ;;#ASMSTART767; GFX90A-NEXT:    ; def v[2:3]768; GFX90A-NEXT:    ;;#ASMEND769; GFX90A-NEXT:    v_mov_b32_e32 v0, 0770; GFX90A-NEXT:    v_mov_b32_e32 v1, v2771; GFX90A-NEXT:    v_mov_b32_e32 v3, v2772; GFX90A-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17]773; GFX90A-NEXT:    s_waitcnt vmcnt(0)774; GFX90A-NEXT:    s_setpc_b64 s[30:31]775;776; GFX942-LABEL: v_shuffle_v4f32_v2f32__u_0_0_0:777; GFX942:       ; %bb.0:778; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)779; GFX942-NEXT:    ;;#ASMSTART780; GFX942-NEXT:    ; def v[2:3]781; GFX942-NEXT:    ;;#ASMEND782; GFX942-NEXT:    v_mov_b32_e32 v0, 0783; GFX942-NEXT:    v_mov_b32_e32 v1, v2784; GFX942-NEXT:    v_mov_b32_e32 v3, v2785; GFX942-NEXT:    global_store_dwordx4 v0, v[0:3], s[0:1]786; GFX942-NEXT:    s_waitcnt vmcnt(0)787; GFX942-NEXT:    s_setpc_b64 s[30:31]788  %vec0 = call <2 x float> asm "; def $0", "=v"()789  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0>790  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16791  ret void792}793 794define void @v_shuffle_v4f32_v2f32__0_0_0_0(ptr addrspace(1) inreg %ptr) {795; GFX900-LABEL: v_shuffle_v4f32_v2f32__0_0_0_0:796; GFX900:       ; %bb.0:797; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)798; GFX900-NEXT:    ;;#ASMSTART799; GFX900-NEXT:    ; def v[0:1]800; GFX900-NEXT:    ;;#ASMEND801; GFX900-NEXT:    v_mov_b32_e32 v4, 0802; GFX900-NEXT:    v_mov_b32_e32 v1, v0803; GFX900-NEXT:    v_mov_b32_e32 v2, v0804; GFX900-NEXT:    v_mov_b32_e32 v3, v0805; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]806; GFX900-NEXT:    s_waitcnt vmcnt(0)807; GFX900-NEXT:    s_setpc_b64 s[30:31]808;809; GFX90A-LABEL: v_shuffle_v4f32_v2f32__0_0_0_0:810; GFX90A:       ; %bb.0:811; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)812; GFX90A-NEXT:    ;;#ASMSTART813; GFX90A-NEXT:    ; def v[0:1]814; GFX90A-NEXT:    ;;#ASMEND815; GFX90A-NEXT:    v_mov_b32_e32 v4, 0816; GFX90A-NEXT:    v_mov_b32_e32 v1, v0817; GFX90A-NEXT:    v_mov_b32_e32 v2, v0818; GFX90A-NEXT:    v_mov_b32_e32 v3, v0819; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]820; GFX90A-NEXT:    s_waitcnt vmcnt(0)821; GFX90A-NEXT:    s_setpc_b64 s[30:31]822;823; GFX942-LABEL: v_shuffle_v4f32_v2f32__0_0_0_0:824; GFX942:       ; %bb.0:825; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)826; GFX942-NEXT:    ;;#ASMSTART827; GFX942-NEXT:    ; def v[0:1]828; GFX942-NEXT:    ;;#ASMEND829; GFX942-NEXT:    v_mov_b32_e32 v4, 0830; GFX942-NEXT:    v_mov_b32_e32 v1, v0831; GFX942-NEXT:    v_mov_b32_e32 v2, v0832; GFX942-NEXT:    v_mov_b32_e32 v3, v0833; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]834; GFX942-NEXT:    s_waitcnt vmcnt(0)835; GFX942-NEXT:    s_setpc_b64 s[30:31]836  %vec0 = call <2 x float> asm "; def $0", "=v"()837  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> zeroinitializer838  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16839  ret void840}841 842define void @v_shuffle_v4f32_v2f32__1_0_0_0(ptr addrspace(1) inreg %ptr) {843; GFX900-LABEL: v_shuffle_v4f32_v2f32__1_0_0_0:844; GFX900:       ; %bb.0:845; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)846; GFX900-NEXT:    v_mov_b32_e32 v5, 0847; GFX900-NEXT:    ;;#ASMSTART848; GFX900-NEXT:    ; def v[0:1]849; GFX900-NEXT:    ;;#ASMEND850; GFX900-NEXT:    v_mov_b32_e32 v2, v0851; GFX900-NEXT:    v_mov_b32_e32 v3, v0852; GFX900-NEXT:    v_mov_b32_e32 v4, v0853; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]854; GFX900-NEXT:    s_waitcnt vmcnt(0)855; GFX900-NEXT:    s_setpc_b64 s[30:31]856;857; GFX90A-LABEL: v_shuffle_v4f32_v2f32__1_0_0_0:858; GFX90A:       ; %bb.0:859; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)860; GFX90A-NEXT:    ;;#ASMSTART861; GFX90A-NEXT:    ; def v[2:3]862; GFX90A-NEXT:    ;;#ASMEND863; GFX90A-NEXT:    v_mov_b32_e32 v4, 0864; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]865; GFX90A-NEXT:    v_mov_b32_e32 v3, v2866; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]867; GFX90A-NEXT:    s_waitcnt vmcnt(0)868; GFX90A-NEXT:    s_setpc_b64 s[30:31]869;870; GFX942-LABEL: v_shuffle_v4f32_v2f32__1_0_0_0:871; GFX942:       ; %bb.0:872; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)873; GFX942-NEXT:    ;;#ASMSTART874; GFX942-NEXT:    ; def v[2:3]875; GFX942-NEXT:    ;;#ASMEND876; GFX942-NEXT:    v_mov_b32_e32 v4, 0877; GFX942-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]878; GFX942-NEXT:    v_mov_b32_e32 v3, v2879; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]880; GFX942-NEXT:    s_waitcnt vmcnt(0)881; GFX942-NEXT:    s_setpc_b64 s[30:31]882  %vec0 = call <2 x float> asm "; def $0", "=v"()883  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>884  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16885  ret void886}887 888define void @v_shuffle_v4f32_v2f32__2_0_0_0(ptr addrspace(1) inreg %ptr) {889; GFX900-LABEL: v_shuffle_v4f32_v2f32__2_0_0_0:890; GFX900:       ; %bb.0:891; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)892; GFX900-NEXT:    ;;#ASMSTART893; GFX900-NEXT:    ; def v[1:2]894; GFX900-NEXT:    ;;#ASMEND895; GFX900-NEXT:    v_mov_b32_e32 v0, 0896; GFX900-NEXT:    v_mov_b32_e32 v2, v1897; GFX900-NEXT:    v_mov_b32_e32 v3, v1898; GFX900-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17]899; GFX900-NEXT:    s_waitcnt vmcnt(0)900; GFX900-NEXT:    s_setpc_b64 s[30:31]901;902; GFX90A-LABEL: v_shuffle_v4f32_v2f32__2_0_0_0:903; GFX90A:       ; %bb.0:904; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)905; GFX90A-NEXT:    ;;#ASMSTART906; GFX90A-NEXT:    ; def v[2:3]907; GFX90A-NEXT:    ;;#ASMEND908; GFX90A-NEXT:    v_mov_b32_e32 v0, 0909; GFX90A-NEXT:    v_mov_b32_e32 v1, v2910; GFX90A-NEXT:    v_mov_b32_e32 v3, v2911; GFX90A-NEXT:    global_store_dwordx4 v0, v[0:3], s[16:17]912; GFX90A-NEXT:    s_waitcnt vmcnt(0)913; GFX90A-NEXT:    s_setpc_b64 s[30:31]914;915; GFX942-LABEL: v_shuffle_v4f32_v2f32__2_0_0_0:916; GFX942:       ; %bb.0:917; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)918; GFX942-NEXT:    ;;#ASMSTART919; GFX942-NEXT:    ; def v[2:3]920; GFX942-NEXT:    ;;#ASMEND921; GFX942-NEXT:    v_mov_b32_e32 v0, 0922; GFX942-NEXT:    v_mov_b32_e32 v1, v2923; GFX942-NEXT:    v_mov_b32_e32 v3, v2924; GFX942-NEXT:    global_store_dwordx4 v0, v[0:3], s[0:1]925; GFX942-NEXT:    s_waitcnt vmcnt(0)926; GFX942-NEXT:    s_setpc_b64 s[30:31]927  %vec0 = call <2 x float> asm "; def $0", "=v"()928  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0>929  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16930  ret void931}932 933define void @v_shuffle_v4f32_v2f32__3_0_0_0(ptr addrspace(1) inreg %ptr) {934; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_0_0_0:935; GFX900:       ; %bb.0:936; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)937; GFX900-NEXT:    ;;#ASMSTART938; GFX900-NEXT:    ; def v[2:3]939; GFX900-NEXT:    ;;#ASMEND940; GFX900-NEXT:    v_mov_b32_e32 v5, 0941; GFX900-NEXT:    v_mov_b32_e32 v3, v2942; GFX900-NEXT:    v_mov_b32_e32 v4, v2943; GFX900-NEXT:    ;;#ASMSTART944; GFX900-NEXT:    ; def v[0:1]945; GFX900-NEXT:    ;;#ASMEND946; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]947; GFX900-NEXT:    s_waitcnt vmcnt(0)948; GFX900-NEXT:    s_setpc_b64 s[30:31]949;950; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_0_0_0:951; GFX90A:       ; %bb.0:952; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)953; GFX90A-NEXT:    ;;#ASMSTART954; GFX90A-NEXT:    ; def v[2:3]955; GFX90A-NEXT:    ;;#ASMEND956; GFX90A-NEXT:    ;;#ASMSTART957; GFX90A-NEXT:    ; def v[0:1]958; GFX90A-NEXT:    ;;#ASMEND959; GFX90A-NEXT:    v_mov_b32_e32 v4, 0960; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[2:3] op_sel:[1,0]961; GFX90A-NEXT:    v_mov_b32_e32 v3, v2962; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]963; GFX90A-NEXT:    s_waitcnt vmcnt(0)964; GFX90A-NEXT:    s_setpc_b64 s[30:31]965;966; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_0_0_0:967; GFX942:       ; %bb.0:968; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)969; GFX942-NEXT:    ;;#ASMSTART970; GFX942-NEXT:    ; def v[2:3]971; GFX942-NEXT:    ;;#ASMEND972; GFX942-NEXT:    ;;#ASMSTART973; GFX942-NEXT:    ; def v[0:1]974; GFX942-NEXT:    ;;#ASMEND975; GFX942-NEXT:    v_mov_b32_e32 v4, 0976; GFX942-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[2:3] op_sel:[1,0]977; GFX942-NEXT:    v_mov_b32_e32 v3, v2978; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]979; GFX942-NEXT:    s_waitcnt vmcnt(0)980; GFX942-NEXT:    s_setpc_b64 s[30:31]981  %vec0 = call <2 x float> asm "; def $0", "=v"()982  %vec1 = call <2 x float> asm "; def $0", "=v"()983  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 0, i32 0, i32 0>984  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 16985  ret void986}987 988define void @v_shuffle_v4f32_v2f32__3_u_0_0(ptr addrspace(1) inreg %ptr) {989; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_u_0_0:990; GFX900:       ; %bb.0:991; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)992; GFX900-NEXT:    ;;#ASMSTART993; GFX900-NEXT:    ; def v[3:4]994; GFX900-NEXT:    ;;#ASMEND995; GFX900-NEXT:    v_mov_b32_e32 v2, 0996; GFX900-NEXT:    v_mov_b32_e32 v4, v3997; GFX900-NEXT:    ;;#ASMSTART998; GFX900-NEXT:    ; def v[0:1]999; GFX900-NEXT:    ;;#ASMEND1000; GFX900-NEXT:    global_store_dwordx4 v2, v[1:4], s[16:17]1001; GFX900-NEXT:    s_waitcnt vmcnt(0)1002; GFX900-NEXT:    s_setpc_b64 s[30:31]1003;1004; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_u_0_0:1005; GFX90A:       ; %bb.0:1006; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1007; GFX90A-NEXT:    ;;#ASMSTART1008; GFX90A-NEXT:    ; def v[2:3]1009; GFX90A-NEXT:    ;;#ASMEND1010; GFX90A-NEXT:    ;;#ASMSTART1011; GFX90A-NEXT:    ; def v[0:1]1012; GFX90A-NEXT:    ;;#ASMEND1013; GFX90A-NEXT:    v_mov_b32_e32 v4, 01014; GFX90A-NEXT:    v_mov_b32_e32 v0, v11015; GFX90A-NEXT:    v_mov_b32_e32 v3, v21016; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1017; GFX90A-NEXT:    s_waitcnt vmcnt(0)1018; GFX90A-NEXT:    s_setpc_b64 s[30:31]1019;1020; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_u_0_0:1021; GFX942:       ; %bb.0:1022; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1023; GFX942-NEXT:    ;;#ASMSTART1024; GFX942-NEXT:    ; def v[2:3]1025; GFX942-NEXT:    ;;#ASMEND1026; GFX942-NEXT:    ;;#ASMSTART1027; GFX942-NEXT:    ; def v[0:1]1028; GFX942-NEXT:    ;;#ASMEND1029; GFX942-NEXT:    v_mov_b32_e32 v4, 01030; GFX942-NEXT:    v_mov_b32_e32 v0, v11031; GFX942-NEXT:    v_mov_b32_e32 v3, v21032; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1033; GFX942-NEXT:    s_waitcnt vmcnt(0)1034; GFX942-NEXT:    s_setpc_b64 s[30:31]1035  %vec0 = call <2 x float> asm "; def $0", "=v"()1036  %vec1 = call <2 x float> asm "; def $0", "=v"()1037  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 poison, i32 0, i32 0>1038  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161039  ret void1040}1041 1042define void @v_shuffle_v4f32_v2f32__3_1_0_0(ptr addrspace(1) inreg %ptr) {1043; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_1_0_0:1044; GFX900:       ; %bb.0:1045; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1046; GFX900-NEXT:    ;;#ASMSTART1047; GFX900-NEXT:    ; def v[3:4]1048; GFX900-NEXT:    ;;#ASMEND1049; GFX900-NEXT:    v_mov_b32_e32 v5, 01050; GFX900-NEXT:    v_mov_b32_e32 v2, v41051; GFX900-NEXT:    v_mov_b32_e32 v4, v31052; GFX900-NEXT:    ;;#ASMSTART1053; GFX900-NEXT:    ; def v[0:1]1054; GFX900-NEXT:    ;;#ASMEND1055; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]1056; GFX900-NEXT:    s_waitcnt vmcnt(0)1057; GFX900-NEXT:    s_setpc_b64 s[30:31]1058;1059; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_1_0_0:1060; GFX90A:       ; %bb.0:1061; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1062; GFX90A-NEXT:    ;;#ASMSTART1063; GFX90A-NEXT:    ; def v[2:3]1064; GFX90A-NEXT:    ;;#ASMEND1065; GFX90A-NEXT:    ;;#ASMSTART1066; GFX90A-NEXT:    ; def v[0:1]1067; GFX90A-NEXT:    ;;#ASMEND1068; GFX90A-NEXT:    v_mov_b32_e32 v4, 01069; GFX90A-NEXT:    v_mov_b32_e32 v0, v11070; GFX90A-NEXT:    v_mov_b32_e32 v1, v31071; GFX90A-NEXT:    v_mov_b32_e32 v3, v21072; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1073; GFX90A-NEXT:    s_waitcnt vmcnt(0)1074; GFX90A-NEXT:    s_setpc_b64 s[30:31]1075;1076; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_1_0_0:1077; GFX942:       ; %bb.0:1078; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1079; GFX942-NEXT:    ;;#ASMSTART1080; GFX942-NEXT:    ; def v[2:3]1081; GFX942-NEXT:    ;;#ASMEND1082; GFX942-NEXT:    ;;#ASMSTART1083; GFX942-NEXT:    ; def v[0:1]1084; GFX942-NEXT:    ;;#ASMEND1085; GFX942-NEXT:    v_mov_b32_e32 v4, 01086; GFX942-NEXT:    v_mov_b32_e32 v0, v11087; GFX942-NEXT:    v_mov_b32_e32 v1, v31088; GFX942-NEXT:    v_mov_b32_e32 v3, v21089; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1090; GFX942-NEXT:    s_waitcnt vmcnt(0)1091; GFX942-NEXT:    s_setpc_b64 s[30:31]1092  %vec0 = call <2 x float> asm "; def $0", "=v"()1093  %vec1 = call <2 x float> asm "; def $0", "=v"()1094  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 1, i32 0, i32 0>1095  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161096  ret void1097}1098 1099define void @v_shuffle_v4f32_v2f32__3_2_0_0(ptr addrspace(1) inreg %ptr) {1100; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_2_0_0:1101; GFX900:       ; %bb.0:1102; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1103; GFX900-NEXT:    ;;#ASMSTART1104; GFX900-NEXT:    ; def v[3:4]1105; GFX900-NEXT:    ;;#ASMEND1106; GFX900-NEXT:    v_mov_b32_e32 v5, 01107; GFX900-NEXT:    ;;#ASMSTART1108; GFX900-NEXT:    ; def v[0:1]1109; GFX900-NEXT:    ;;#ASMEND1110; GFX900-NEXT:    v_mov_b32_e32 v2, v01111; GFX900-NEXT:    v_mov_b32_e32 v4, v31112; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]1113; GFX900-NEXT:    s_waitcnt vmcnt(0)1114; GFX900-NEXT:    s_setpc_b64 s[30:31]1115;1116; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_2_0_0:1117; GFX90A:       ; %bb.0:1118; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1119; GFX90A-NEXT:    ;;#ASMSTART1120; GFX90A-NEXT:    ; def v[2:3]1121; GFX90A-NEXT:    ;;#ASMEND1122; GFX90A-NEXT:    ;;#ASMSTART1123; GFX90A-NEXT:    ; def v[0:1]1124; GFX90A-NEXT:    ;;#ASMEND1125; GFX90A-NEXT:    v_mov_b32_e32 v4, 01126; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]1127; GFX90A-NEXT:    v_mov_b32_e32 v3, v21128; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1129; GFX90A-NEXT:    s_waitcnt vmcnt(0)1130; GFX90A-NEXT:    s_setpc_b64 s[30:31]1131;1132; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_2_0_0:1133; GFX942:       ; %bb.0:1134; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1135; GFX942-NEXT:    ;;#ASMSTART1136; GFX942-NEXT:    ; def v[2:3]1137; GFX942-NEXT:    ;;#ASMEND1138; GFX942-NEXT:    ;;#ASMSTART1139; GFX942-NEXT:    ; def v[0:1]1140; GFX942-NEXT:    ;;#ASMEND1141; GFX942-NEXT:    v_mov_b32_e32 v4, 01142; GFX942-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]1143; GFX942-NEXT:    v_mov_b32_e32 v3, v21144; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1145; GFX942-NEXT:    s_waitcnt vmcnt(0)1146; GFX942-NEXT:    s_setpc_b64 s[30:31]1147  %vec0 = call <2 x float> asm "; def $0", "=v"()1148  %vec1 = call <2 x float> asm "; def $0", "=v"()1149  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 2, i32 0, i32 0>1150  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161151  ret void1152}1153 1154define void @v_shuffle_v4f32_v2f32__3_3_0_0(ptr addrspace(1) inreg %ptr) {1155; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_0_0:1156; GFX900:       ; %bb.0:1157; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1158; GFX900-NEXT:    ;;#ASMSTART1159; GFX900-NEXT:    ; def v[3:4]1160; GFX900-NEXT:    ;;#ASMEND1161; GFX900-NEXT:    v_mov_b32_e32 v5, 01162; GFX900-NEXT:    ;;#ASMSTART1163; GFX900-NEXT:    ; def v[0:1]1164; GFX900-NEXT:    ;;#ASMEND1165; GFX900-NEXT:    v_mov_b32_e32 v2, v11166; GFX900-NEXT:    v_mov_b32_e32 v4, v31167; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]1168; GFX900-NEXT:    s_waitcnt vmcnt(0)1169; GFX900-NEXT:    s_setpc_b64 s[30:31]1170;1171; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_0_0:1172; GFX90A:       ; %bb.0:1173; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1174; GFX90A-NEXT:    ;;#ASMSTART1175; GFX90A-NEXT:    ; def v[2:3]1176; GFX90A-NEXT:    ;;#ASMEND1177; GFX90A-NEXT:    ;;#ASMSTART1178; GFX90A-NEXT:    ; def v[0:1]1179; GFX90A-NEXT:    ;;#ASMEND1180; GFX90A-NEXT:    v_mov_b32_e32 v4, 01181; GFX90A-NEXT:    v_mov_b32_e32 v0, v11182; GFX90A-NEXT:    v_mov_b32_e32 v3, v21183; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1184; GFX90A-NEXT:    s_waitcnt vmcnt(0)1185; GFX90A-NEXT:    s_setpc_b64 s[30:31]1186;1187; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_3_0_0:1188; GFX942:       ; %bb.0:1189; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1190; GFX942-NEXT:    ;;#ASMSTART1191; GFX942-NEXT:    ; def v[2:3]1192; GFX942-NEXT:    ;;#ASMEND1193; GFX942-NEXT:    ;;#ASMSTART1194; GFX942-NEXT:    ; def v[0:1]1195; GFX942-NEXT:    ;;#ASMEND1196; GFX942-NEXT:    v_mov_b32_e32 v4, 01197; GFX942-NEXT:    v_mov_b32_e32 v0, v11198; GFX942-NEXT:    v_mov_b32_e32 v3, v21199; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1200; GFX942-NEXT:    s_waitcnt vmcnt(0)1201; GFX942-NEXT:    s_setpc_b64 s[30:31]1202  %vec0 = call <2 x float> asm "; def $0", "=v"()1203  %vec1 = call <2 x float> asm "; def $0", "=v"()1204  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 0>1205  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161206  ret void1207}1208 1209define void @v_shuffle_v4f32_v2f32__3_3_u_0(ptr addrspace(1) inreg %ptr) {1210; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_u_0:1211; GFX900:       ; %bb.0:1212; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1213; GFX900-NEXT:    v_mov_b32_e32 v3, 01214; GFX900-NEXT:    ;;#ASMSTART1215; GFX900-NEXT:    ; def v[0:1]1216; GFX900-NEXT:    ;;#ASMEND1217; GFX900-NEXT:    v_mov_b32_e32 v2, v11218; GFX900-NEXT:    ;;#ASMSTART1219; GFX900-NEXT:    ; def v[4:5]1220; GFX900-NEXT:    ;;#ASMEND1221; GFX900-NEXT:    global_store_dwordx4 v3, v[1:4], s[16:17]1222; GFX900-NEXT:    s_waitcnt vmcnt(0)1223; GFX900-NEXT:    s_setpc_b64 s[30:31]1224;1225; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_u_0:1226; GFX90A:       ; %bb.0:1227; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1228; GFX90A-NEXT:    ;;#ASMSTART1229; GFX90A-NEXT:    ; def v[2:3]1230; GFX90A-NEXT:    ;;#ASMEND1231; GFX90A-NEXT:    ;;#ASMSTART1232; GFX90A-NEXT:    ; def v[0:1]1233; GFX90A-NEXT:    ;;#ASMEND1234; GFX90A-NEXT:    v_mov_b32_e32 v4, 01235; GFX90A-NEXT:    v_mov_b32_e32 v0, v11236; GFX90A-NEXT:    v_mov_b32_e32 v3, v21237; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1238; GFX90A-NEXT:    s_waitcnt vmcnt(0)1239; GFX90A-NEXT:    s_setpc_b64 s[30:31]1240;1241; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_3_u_0:1242; GFX942:       ; %bb.0:1243; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1244; GFX942-NEXT:    ;;#ASMSTART1245; GFX942-NEXT:    ; def v[2:3]1246; GFX942-NEXT:    ;;#ASMEND1247; GFX942-NEXT:    ;;#ASMSTART1248; GFX942-NEXT:    ; def v[0:1]1249; GFX942-NEXT:    ;;#ASMEND1250; GFX942-NEXT:    v_mov_b32_e32 v4, 01251; GFX942-NEXT:    v_mov_b32_e32 v0, v11252; GFX942-NEXT:    v_mov_b32_e32 v3, v21253; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1254; GFX942-NEXT:    s_waitcnt vmcnt(0)1255; GFX942-NEXT:    s_setpc_b64 s[30:31]1256  %vec0 = call <2 x float> asm "; def $0", "=v"()1257  %vec1 = call <2 x float> asm "; def $0", "=v"()1258  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 0>1259  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161260  ret void1261}1262 1263define void @v_shuffle_v4f32_v2f32__3_3_1_0(ptr addrspace(1) inreg %ptr) {1264; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_1_0:1265; GFX900:       ; %bb.0:1266; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1267; GFX900-NEXT:    v_mov_b32_e32 v6, 01268; GFX900-NEXT:    ;;#ASMSTART1269; GFX900-NEXT:    ; def v[4:5]1270; GFX900-NEXT:    ;;#ASMEND1271; GFX900-NEXT:    ;;#ASMSTART1272; GFX900-NEXT:    ; def v[0:1]1273; GFX900-NEXT:    ;;#ASMEND1274; GFX900-NEXT:    v_mov_b32_e32 v2, v11275; GFX900-NEXT:    v_mov_b32_e32 v3, v51276; GFX900-NEXT:    global_store_dwordx4 v6, v[1:4], s[16:17]1277; GFX900-NEXT:    s_waitcnt vmcnt(0)1278; GFX900-NEXT:    s_setpc_b64 s[30:31]1279;1280; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_1_0:1281; GFX90A:       ; %bb.0:1282; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1283; GFX90A-NEXT:    ;;#ASMSTART1284; GFX90A-NEXT:    ; def v[2:3]1285; GFX90A-NEXT:    ;;#ASMEND1286; GFX90A-NEXT:    ;;#ASMSTART1287; GFX90A-NEXT:    ; def v[0:1]1288; GFX90A-NEXT:    ;;#ASMEND1289; GFX90A-NEXT:    v_mov_b32_e32 v4, 01290; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], v[2:3], v[2:3] op_sel:[1,0]1291; GFX90A-NEXT:    v_mov_b32_e32 v0, v11292; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1293; GFX90A-NEXT:    s_waitcnt vmcnt(0)1294; GFX90A-NEXT:    s_setpc_b64 s[30:31]1295;1296; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_3_1_0:1297; GFX942:       ; %bb.0:1298; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1299; GFX942-NEXT:    ;;#ASMSTART1300; GFX942-NEXT:    ; def v[2:3]1301; GFX942-NEXT:    ;;#ASMEND1302; GFX942-NEXT:    ;;#ASMSTART1303; GFX942-NEXT:    ; def v[0:1]1304; GFX942-NEXT:    ;;#ASMEND1305; GFX942-NEXT:    v_mov_b32_e32 v4, 01306; GFX942-NEXT:    v_pk_mov_b32 v[2:3], v[2:3], v[2:3] op_sel:[1,0]1307; GFX942-NEXT:    v_mov_b32_e32 v0, v11308; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1309; GFX942-NEXT:    s_waitcnt vmcnt(0)1310; GFX942-NEXT:    s_setpc_b64 s[30:31]1311  %vec0 = call <2 x float> asm "; def $0", "=v"()1312  %vec1 = call <2 x float> asm "; def $0", "=v"()1313  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 0>1314  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161315  ret void1316}1317 1318define void @v_shuffle_v4f32_v2f32__3_3_2_0(ptr addrspace(1) inreg %ptr) {1319; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_2_0:1320; GFX900:       ; %bb.0:1321; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1322; GFX900-NEXT:    v_mov_b32_e32 v6, 01323; GFX900-NEXT:    ;;#ASMSTART1324; GFX900-NEXT:    ; def v[0:1]1325; GFX900-NEXT:    ;;#ASMEND1326; GFX900-NEXT:    v_mov_b32_e32 v2, v11327; GFX900-NEXT:    v_mov_b32_e32 v3, v01328; GFX900-NEXT:    ;;#ASMSTART1329; GFX900-NEXT:    ; def v[4:5]1330; GFX900-NEXT:    ;;#ASMEND1331; GFX900-NEXT:    global_store_dwordx4 v6, v[1:4], s[16:17]1332; GFX900-NEXT:    s_waitcnt vmcnt(0)1333; GFX900-NEXT:    s_setpc_b64 s[30:31]1334;1335; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_2_0:1336; GFX90A:       ; %bb.0:1337; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1338; GFX90A-NEXT:    ;;#ASMSTART1339; GFX90A-NEXT:    ; def v[2:3]1340; GFX90A-NEXT:    ;;#ASMEND1341; GFX90A-NEXT:    v_mov_b32_e32 v6, 01342; GFX90A-NEXT:    ;;#ASMSTART1343; GFX90A-NEXT:    ; def v[4:5]1344; GFX90A-NEXT:    ;;#ASMEND1345; GFX90A-NEXT:    v_mov_b32_e32 v0, v31346; GFX90A-NEXT:    v_mov_b32_e32 v1, v31347; GFX90A-NEXT:    v_mov_b32_e32 v3, v41348; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]1349; GFX90A-NEXT:    s_waitcnt vmcnt(0)1350; GFX90A-NEXT:    s_setpc_b64 s[30:31]1351;1352; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_3_2_0:1353; GFX942:       ; %bb.0:1354; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1355; GFX942-NEXT:    ;;#ASMSTART1356; GFX942-NEXT:    ; def v[2:3]1357; GFX942-NEXT:    ;;#ASMEND1358; GFX942-NEXT:    v_mov_b32_e32 v6, 01359; GFX942-NEXT:    ;;#ASMSTART1360; GFX942-NEXT:    ; def v[4:5]1361; GFX942-NEXT:    ;;#ASMEND1362; GFX942-NEXT:    v_mov_b32_e32 v0, v31363; GFX942-NEXT:    v_mov_b32_e32 v1, v31364; GFX942-NEXT:    v_mov_b32_e32 v3, v41365; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]1366; GFX942-NEXT:    s_waitcnt vmcnt(0)1367; GFX942-NEXT:    s_setpc_b64 s[30:31]1368  %vec0 = call <2 x float> asm "; def $0", "=v"()1369  %vec1 = call <2 x float> asm "; def $0", "=v"()1370  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 0>1371  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161372  ret void1373}1374 1375define void @v_shuffle_v4f32_v2f32__u_1_1_1(ptr addrspace(1) inreg %ptr) {1376; GFX900-LABEL: v_shuffle_v4f32_v2f32__u_1_1_1:1377; GFX900:       ; %bb.0:1378; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1379; GFX900-NEXT:    v_mov_b32_e32 v4, 01380; GFX900-NEXT:    ;;#ASMSTART1381; GFX900-NEXT:    ; def v[0:1]1382; GFX900-NEXT:    ;;#ASMEND1383; GFX900-NEXT:    v_mov_b32_e32 v2, v11384; GFX900-NEXT:    v_mov_b32_e32 v3, v11385; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1386; GFX900-NEXT:    s_waitcnt vmcnt(0)1387; GFX900-NEXT:    s_setpc_b64 s[30:31]1388;1389; GFX90A-LABEL: v_shuffle_v4f32_v2f32__u_1_1_1:1390; GFX90A:       ; %bb.0:1391; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1392; GFX90A-NEXT:    v_mov_b32_e32 v4, 01393; GFX90A-NEXT:    ;;#ASMSTART1394; GFX90A-NEXT:    ; def v[0:1]1395; GFX90A-NEXT:    ;;#ASMEND1396; GFX90A-NEXT:    v_mov_b32_e32 v2, v11397; GFX90A-NEXT:    v_mov_b32_e32 v3, v11398; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1399; GFX90A-NEXT:    s_waitcnt vmcnt(0)1400; GFX90A-NEXT:    s_setpc_b64 s[30:31]1401;1402; GFX942-LABEL: v_shuffle_v4f32_v2f32__u_1_1_1:1403; GFX942:       ; %bb.0:1404; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1405; GFX942-NEXT:    v_mov_b32_e32 v4, 01406; GFX942-NEXT:    ;;#ASMSTART1407; GFX942-NEXT:    ; def v[0:1]1408; GFX942-NEXT:    ;;#ASMEND1409; GFX942-NEXT:    s_nop 01410; GFX942-NEXT:    v_mov_b32_e32 v2, v11411; GFX942-NEXT:    v_mov_b32_e32 v3, v11412; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1413; GFX942-NEXT:    s_waitcnt vmcnt(0)1414; GFX942-NEXT:    s_setpc_b64 s[30:31]1415  %vec0 = call <2 x float> asm "; def $0", "=v"()1416  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1>1417  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161418  ret void1419}1420 1421define void @v_shuffle_v4f32_v2f32__0_1_1_1(ptr addrspace(1) inreg %ptr) {1422; GFX900-LABEL: v_shuffle_v4f32_v2f32__0_1_1_1:1423; GFX900:       ; %bb.0:1424; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1425; GFX900-NEXT:    v_mov_b32_e32 v4, 01426; GFX900-NEXT:    ;;#ASMSTART1427; GFX900-NEXT:    ; def v[0:1]1428; GFX900-NEXT:    ;;#ASMEND1429; GFX900-NEXT:    v_mov_b32_e32 v2, v11430; GFX900-NEXT:    v_mov_b32_e32 v3, v11431; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1432; GFX900-NEXT:    s_waitcnt vmcnt(0)1433; GFX900-NEXT:    s_setpc_b64 s[30:31]1434;1435; GFX90A-LABEL: v_shuffle_v4f32_v2f32__0_1_1_1:1436; GFX90A:       ; %bb.0:1437; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1438; GFX90A-NEXT:    v_mov_b32_e32 v4, 01439; GFX90A-NEXT:    ;;#ASMSTART1440; GFX90A-NEXT:    ; def v[0:1]1441; GFX90A-NEXT:    ;;#ASMEND1442; GFX90A-NEXT:    v_mov_b32_e32 v2, v11443; GFX90A-NEXT:    v_mov_b32_e32 v3, v11444; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1445; GFX90A-NEXT:    s_waitcnt vmcnt(0)1446; GFX90A-NEXT:    s_setpc_b64 s[30:31]1447;1448; GFX942-LABEL: v_shuffle_v4f32_v2f32__0_1_1_1:1449; GFX942:       ; %bb.0:1450; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1451; GFX942-NEXT:    v_mov_b32_e32 v4, 01452; GFX942-NEXT:    ;;#ASMSTART1453; GFX942-NEXT:    ; def v[0:1]1454; GFX942-NEXT:    ;;#ASMEND1455; GFX942-NEXT:    s_nop 01456; GFX942-NEXT:    v_mov_b32_e32 v2, v11457; GFX942-NEXT:    v_mov_b32_e32 v3, v11458; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1459; GFX942-NEXT:    s_waitcnt vmcnt(0)1460; GFX942-NEXT:    s_setpc_b64 s[30:31]1461  %vec0 = call <2 x float> asm "; def $0", "=v"()1462  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1>1463  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161464  ret void1465}1466 1467define void @v_shuffle_v4f32_v2f32__1_1_1_1(ptr addrspace(1) inreg %ptr) {1468; GFX900-LABEL: v_shuffle_v4f32_v2f32__1_1_1_1:1469; GFX900:       ; %bb.0:1470; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1471; GFX900-NEXT:    v_mov_b32_e32 v5, 01472; GFX900-NEXT:    ;;#ASMSTART1473; GFX900-NEXT:    ; def v[0:1]1474; GFX900-NEXT:    ;;#ASMEND1475; GFX900-NEXT:    v_mov_b32_e32 v2, v11476; GFX900-NEXT:    v_mov_b32_e32 v3, v11477; GFX900-NEXT:    v_mov_b32_e32 v4, v11478; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]1479; GFX900-NEXT:    s_waitcnt vmcnt(0)1480; GFX900-NEXT:    s_setpc_b64 s[30:31]1481;1482; GFX90A-LABEL: v_shuffle_v4f32_v2f32__1_1_1_1:1483; GFX90A:       ; %bb.0:1484; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1485; GFX90A-NEXT:    ;;#ASMSTART1486; GFX90A-NEXT:    ; def v[0:1]1487; GFX90A-NEXT:    ;;#ASMEND1488; GFX90A-NEXT:    v_mov_b32_e32 v4, 01489; GFX90A-NEXT:    v_mov_b32_e32 v0, v11490; GFX90A-NEXT:    v_mov_b32_e32 v2, v11491; GFX90A-NEXT:    v_mov_b32_e32 v3, v11492; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1493; GFX90A-NEXT:    s_waitcnt vmcnt(0)1494; GFX90A-NEXT:    s_setpc_b64 s[30:31]1495;1496; GFX942-LABEL: v_shuffle_v4f32_v2f32__1_1_1_1:1497; GFX942:       ; %bb.0:1498; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1499; GFX942-NEXT:    ;;#ASMSTART1500; GFX942-NEXT:    ; def v[0:1]1501; GFX942-NEXT:    ;;#ASMEND1502; GFX942-NEXT:    v_mov_b32_e32 v4, 01503; GFX942-NEXT:    v_mov_b32_e32 v0, v11504; GFX942-NEXT:    v_mov_b32_e32 v2, v11505; GFX942-NEXT:    v_mov_b32_e32 v3, v11506; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1507; GFX942-NEXT:    s_waitcnt vmcnt(0)1508; GFX942-NEXT:    s_setpc_b64 s[30:31]1509  %vec0 = call <2 x float> asm "; def $0", "=v"()1510  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>1511  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161512  ret void1513}1514 1515define void @v_shuffle_v4f32_v2f32__2_1_1_1(ptr addrspace(1) inreg %ptr) {1516; GFX900-LABEL: v_shuffle_v4f32_v2f32__2_1_1_1:1517; GFX900:       ; %bb.0:1518; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1519; GFX900-NEXT:    v_mov_b32_e32 v4, 01520; GFX900-NEXT:    ;;#ASMSTART1521; GFX900-NEXT:    ; def v[0:1]1522; GFX900-NEXT:    ;;#ASMEND1523; GFX900-NEXT:    v_mov_b32_e32 v2, v11524; GFX900-NEXT:    v_mov_b32_e32 v3, v11525; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1526; GFX900-NEXT:    s_waitcnt vmcnt(0)1527; GFX900-NEXT:    s_setpc_b64 s[30:31]1528;1529; GFX90A-LABEL: v_shuffle_v4f32_v2f32__2_1_1_1:1530; GFX90A:       ; %bb.0:1531; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1532; GFX90A-NEXT:    v_mov_b32_e32 v4, 01533; GFX90A-NEXT:    ;;#ASMSTART1534; GFX90A-NEXT:    ; def v[0:1]1535; GFX90A-NEXT:    ;;#ASMEND1536; GFX90A-NEXT:    v_mov_b32_e32 v2, v11537; GFX90A-NEXT:    v_mov_b32_e32 v3, v11538; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1539; GFX90A-NEXT:    s_waitcnt vmcnt(0)1540; GFX90A-NEXT:    s_setpc_b64 s[30:31]1541;1542; GFX942-LABEL: v_shuffle_v4f32_v2f32__2_1_1_1:1543; GFX942:       ; %bb.0:1544; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1545; GFX942-NEXT:    v_mov_b32_e32 v4, 01546; GFX942-NEXT:    ;;#ASMSTART1547; GFX942-NEXT:    ; def v[0:1]1548; GFX942-NEXT:    ;;#ASMEND1549; GFX942-NEXT:    s_nop 01550; GFX942-NEXT:    v_mov_b32_e32 v2, v11551; GFX942-NEXT:    v_mov_b32_e32 v3, v11552; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1553; GFX942-NEXT:    s_waitcnt vmcnt(0)1554; GFX942-NEXT:    s_setpc_b64 s[30:31]1555  %vec0 = call <2 x float> asm "; def $0", "=v"()1556  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1>1557  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161558  ret void1559}1560 1561define void @v_shuffle_v4f32_v2f32__3_1_1_1(ptr addrspace(1) inreg %ptr) {1562; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_1_1_1:1563; GFX900:       ; %bb.0:1564; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1565; GFX900-NEXT:    v_mov_b32_e32 v5, 01566; GFX900-NEXT:    ;;#ASMSTART1567; GFX900-NEXT:    ; def v[1:2]1568; GFX900-NEXT:    ;;#ASMEND1569; GFX900-NEXT:    v_mov_b32_e32 v3, v21570; GFX900-NEXT:    v_mov_b32_e32 v4, v21571; GFX900-NEXT:    ;;#ASMSTART1572; GFX900-NEXT:    ; def v[0:1]1573; GFX900-NEXT:    ;;#ASMEND1574; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]1575; GFX900-NEXT:    s_waitcnt vmcnt(0)1576; GFX900-NEXT:    s_setpc_b64 s[30:31]1577;1578; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_1_1_1:1579; GFX90A:       ; %bb.0:1580; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1581; GFX90A-NEXT:    ;;#ASMSTART1582; GFX90A-NEXT:    ; def v[0:1]1583; GFX90A-NEXT:    ;;#ASMEND1584; GFX90A-NEXT:    ;;#ASMSTART1585; GFX90A-NEXT:    ; def v[2:3]1586; GFX90A-NEXT:    ;;#ASMEND1587; GFX90A-NEXT:    v_mov_b32_e32 v4, 01588; GFX90A-NEXT:    v_mov_b32_e32 v0, v31589; GFX90A-NEXT:    v_mov_b32_e32 v2, v11590; GFX90A-NEXT:    v_mov_b32_e32 v3, v11591; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1592; GFX90A-NEXT:    s_waitcnt vmcnt(0)1593; GFX90A-NEXT:    s_setpc_b64 s[30:31]1594;1595; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_1_1_1:1596; GFX942:       ; %bb.0:1597; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1598; GFX942-NEXT:    ;;#ASMSTART1599; GFX942-NEXT:    ; def v[0:1]1600; GFX942-NEXT:    ;;#ASMEND1601; GFX942-NEXT:    ;;#ASMSTART1602; GFX942-NEXT:    ; def v[2:3]1603; GFX942-NEXT:    ;;#ASMEND1604; GFX942-NEXT:    v_mov_b32_e32 v4, 01605; GFX942-NEXT:    v_mov_b32_e32 v0, v31606; GFX942-NEXT:    v_mov_b32_e32 v2, v11607; GFX942-NEXT:    v_mov_b32_e32 v3, v11608; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1609; GFX942-NEXT:    s_waitcnt vmcnt(0)1610; GFX942-NEXT:    s_setpc_b64 s[30:31]1611  %vec0 = call <2 x float> asm "; def $0", "=v"()1612  %vec1 = call <2 x float> asm "; def $0", "=v"()1613  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 1, i32 1, i32 1>1614  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161615  ret void1616}1617 1618define void @v_shuffle_v4f32_v2f32__3_u_1_1(ptr addrspace(1) inreg %ptr) {1619; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_u_1_1:1620; GFX900:       ; %bb.0:1621; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1622; GFX900-NEXT:    v_mov_b32_e32 v5, 01623; GFX900-NEXT:    ;;#ASMSTART1624; GFX900-NEXT:    ; def v[2:3]1625; GFX900-NEXT:    ;;#ASMEND1626; GFX900-NEXT:    v_mov_b32_e32 v4, v31627; GFX900-NEXT:    ;;#ASMSTART1628; GFX900-NEXT:    ; def v[0:1]1629; GFX900-NEXT:    ;;#ASMEND1630; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]1631; GFX900-NEXT:    s_waitcnt vmcnt(0)1632; GFX900-NEXT:    s_setpc_b64 s[30:31]1633;1634; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_u_1_1:1635; GFX90A:       ; %bb.0:1636; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1637; GFX90A-NEXT:    ;;#ASMSTART1638; GFX90A-NEXT:    ; def v[2:3]1639; GFX90A-NEXT:    ;;#ASMEND1640; GFX90A-NEXT:    ;;#ASMSTART1641; GFX90A-NEXT:    ; def v[0:1]1642; GFX90A-NEXT:    ;;#ASMEND1643; GFX90A-NEXT:    v_mov_b32_e32 v4, 01644; GFX90A-NEXT:    v_mov_b32_e32 v0, v11645; GFX90A-NEXT:    v_mov_b32_e32 v2, v31646; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1647; GFX90A-NEXT:    s_waitcnt vmcnt(0)1648; GFX90A-NEXT:    s_setpc_b64 s[30:31]1649;1650; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_u_1_1:1651; GFX942:       ; %bb.0:1652; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1653; GFX942-NEXT:    ;;#ASMSTART1654; GFX942-NEXT:    ; def v[2:3]1655; GFX942-NEXT:    ;;#ASMEND1656; GFX942-NEXT:    ;;#ASMSTART1657; GFX942-NEXT:    ; def v[0:1]1658; GFX942-NEXT:    ;;#ASMEND1659; GFX942-NEXT:    v_mov_b32_e32 v4, 01660; GFX942-NEXT:    v_mov_b32_e32 v0, v11661; GFX942-NEXT:    v_mov_b32_e32 v2, v31662; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1663; GFX942-NEXT:    s_waitcnt vmcnt(0)1664; GFX942-NEXT:    s_setpc_b64 s[30:31]1665  %vec0 = call <2 x float> asm "; def $0", "=v"()1666  %vec1 = call <2 x float> asm "; def $0", "=v"()1667  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 poison, i32 1, i32 1>1668  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161669  ret void1670}1671 1672define void @v_shuffle_v4f32_v2f32__3_0_1_1(ptr addrspace(1) inreg %ptr) {1673; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_0_1_1:1674; GFX900:       ; %bb.0:1675; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1676; GFX900-NEXT:    v_mov_b32_e32 v5, 01677; GFX900-NEXT:    ;;#ASMSTART1678; GFX900-NEXT:    ; def v[2:3]1679; GFX900-NEXT:    ;;#ASMEND1680; GFX900-NEXT:    v_mov_b32_e32 v4, v31681; GFX900-NEXT:    ;;#ASMSTART1682; GFX900-NEXT:    ; def v[0:1]1683; GFX900-NEXT:    ;;#ASMEND1684; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]1685; GFX900-NEXT:    s_waitcnt vmcnt(0)1686; GFX900-NEXT:    s_setpc_b64 s[30:31]1687;1688; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_0_1_1:1689; GFX90A:       ; %bb.0:1690; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1691; GFX90A-NEXT:    ;;#ASMSTART1692; GFX90A-NEXT:    ; def v[2:3]1693; GFX90A-NEXT:    ;;#ASMEND1694; GFX90A-NEXT:    ;;#ASMSTART1695; GFX90A-NEXT:    ; def v[0:1]1696; GFX90A-NEXT:    ;;#ASMEND1697; GFX90A-NEXT:    v_mov_b32_e32 v4, 01698; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[2:3] op_sel:[1,0]1699; GFX90A-NEXT:    v_mov_b32_e32 v2, v31700; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1701; GFX90A-NEXT:    s_waitcnt vmcnt(0)1702; GFX90A-NEXT:    s_setpc_b64 s[30:31]1703;1704; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_0_1_1:1705; GFX942:       ; %bb.0:1706; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1707; GFX942-NEXT:    ;;#ASMSTART1708; GFX942-NEXT:    ; def v[2:3]1709; GFX942-NEXT:    ;;#ASMEND1710; GFX942-NEXT:    ;;#ASMSTART1711; GFX942-NEXT:    ; def v[0:1]1712; GFX942-NEXT:    ;;#ASMEND1713; GFX942-NEXT:    v_mov_b32_e32 v4, 01714; GFX942-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[2:3] op_sel:[1,0]1715; GFX942-NEXT:    v_mov_b32_e32 v2, v31716; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1717; GFX942-NEXT:    s_waitcnt vmcnt(0)1718; GFX942-NEXT:    s_setpc_b64 s[30:31]1719  %vec0 = call <2 x float> asm "; def $0", "=v"()1720  %vec1 = call <2 x float> asm "; def $0", "=v"()1721  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 0, i32 1, i32 1>1722  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161723  ret void1724}1725 1726define void @v_shuffle_v4f32_v2f32__3_2_1_1(ptr addrspace(1) inreg %ptr) {1727; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_2_1_1:1728; GFX900:       ; %bb.0:1729; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1730; GFX900-NEXT:    ;;#ASMSTART1731; GFX900-NEXT:    ; def v[2:3]1732; GFX900-NEXT:    ;;#ASMEND1733; GFX900-NEXT:    v_mov_b32_e32 v5, 01734; GFX900-NEXT:    ;;#ASMSTART1735; GFX900-NEXT:    ; def v[0:1]1736; GFX900-NEXT:    ;;#ASMEND1737; GFX900-NEXT:    v_mov_b32_e32 v2, v01738; GFX900-NEXT:    v_mov_b32_e32 v4, v31739; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]1740; GFX900-NEXT:    s_waitcnt vmcnt(0)1741; GFX900-NEXT:    s_setpc_b64 s[30:31]1742;1743; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_2_1_1:1744; GFX90A:       ; %bb.0:1745; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1746; GFX90A-NEXT:    ;;#ASMSTART1747; GFX90A-NEXT:    ; def v[2:3]1748; GFX90A-NEXT:    ;;#ASMEND1749; GFX90A-NEXT:    ;;#ASMSTART1750; GFX90A-NEXT:    ; def v[0:1]1751; GFX90A-NEXT:    ;;#ASMEND1752; GFX90A-NEXT:    v_mov_b32_e32 v4, 01753; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]1754; GFX90A-NEXT:    v_mov_b32_e32 v2, v31755; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1756; GFX90A-NEXT:    s_waitcnt vmcnt(0)1757; GFX90A-NEXT:    s_setpc_b64 s[30:31]1758;1759; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_2_1_1:1760; GFX942:       ; %bb.0:1761; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1762; GFX942-NEXT:    ;;#ASMSTART1763; GFX942-NEXT:    ; def v[2:3]1764; GFX942-NEXT:    ;;#ASMEND1765; GFX942-NEXT:    ;;#ASMSTART1766; GFX942-NEXT:    ; def v[0:1]1767; GFX942-NEXT:    ;;#ASMEND1768; GFX942-NEXT:    v_mov_b32_e32 v4, 01769; GFX942-NEXT:    v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]1770; GFX942-NEXT:    v_mov_b32_e32 v2, v31771; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1772; GFX942-NEXT:    s_waitcnt vmcnt(0)1773; GFX942-NEXT:    s_setpc_b64 s[30:31]1774  %vec0 = call <2 x float> asm "; def $0", "=v"()1775  %vec1 = call <2 x float> asm "; def $0", "=v"()1776  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 2, i32 1, i32 1>1777  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161778  ret void1779}1780 1781define void @v_shuffle_v4f32_v2f32__3_3_1_1(ptr addrspace(1) inreg %ptr) {1782; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_1_1:1783; GFX900:       ; %bb.0:1784; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1785; GFX900-NEXT:    ;;#ASMSTART1786; GFX900-NEXT:    ; def v[2:3]1787; GFX900-NEXT:    ;;#ASMEND1788; GFX900-NEXT:    v_mov_b32_e32 v5, 01789; GFX900-NEXT:    ;;#ASMSTART1790; GFX900-NEXT:    ; def v[0:1]1791; GFX900-NEXT:    ;;#ASMEND1792; GFX900-NEXT:    v_mov_b32_e32 v2, v11793; GFX900-NEXT:    v_mov_b32_e32 v4, v31794; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]1795; GFX900-NEXT:    s_waitcnt vmcnt(0)1796; GFX900-NEXT:    s_setpc_b64 s[30:31]1797;1798; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_1_1:1799; GFX90A:       ; %bb.0:1800; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1801; GFX90A-NEXT:    ;;#ASMSTART1802; GFX90A-NEXT:    ; def v[2:3]1803; GFX90A-NEXT:    ;;#ASMEND1804; GFX90A-NEXT:    ;;#ASMSTART1805; GFX90A-NEXT:    ; def v[0:1]1806; GFX90A-NEXT:    ;;#ASMEND1807; GFX90A-NEXT:    v_mov_b32_e32 v4, 01808; GFX90A-NEXT:    v_mov_b32_e32 v0, v11809; GFX90A-NEXT:    v_mov_b32_e32 v2, v31810; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1811; GFX90A-NEXT:    s_waitcnt vmcnt(0)1812; GFX90A-NEXT:    s_setpc_b64 s[30:31]1813;1814; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_3_1_1:1815; GFX942:       ; %bb.0:1816; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1817; GFX942-NEXT:    ;;#ASMSTART1818; GFX942-NEXT:    ; def v[2:3]1819; GFX942-NEXT:    ;;#ASMEND1820; GFX942-NEXT:    ;;#ASMSTART1821; GFX942-NEXT:    ; def v[0:1]1822; GFX942-NEXT:    ;;#ASMEND1823; GFX942-NEXT:    v_mov_b32_e32 v4, 01824; GFX942-NEXT:    v_mov_b32_e32 v0, v11825; GFX942-NEXT:    v_mov_b32_e32 v2, v31826; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1827; GFX942-NEXT:    s_waitcnt vmcnt(0)1828; GFX942-NEXT:    s_setpc_b64 s[30:31]1829  %vec0 = call <2 x float> asm "; def $0", "=v"()1830  %vec1 = call <2 x float> asm "; def $0", "=v"()1831  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 1>1832  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161833  ret void1834}1835 1836define void @v_shuffle_v4f32_v2f32__3_3_u_1(ptr addrspace(1) inreg %ptr) {1837; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_u_1:1838; GFX900:       ; %bb.0:1839; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1840; GFX900-NEXT:    v_mov_b32_e32 v5, 01841; GFX900-NEXT:    ;;#ASMSTART1842; GFX900-NEXT:    ; def v[0:1]1843; GFX900-NEXT:    ;;#ASMEND1844; GFX900-NEXT:    v_mov_b32_e32 v2, v11845; GFX900-NEXT:    ;;#ASMSTART1846; GFX900-NEXT:    ; def v[3:4]1847; GFX900-NEXT:    ;;#ASMEND1848; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]1849; GFX900-NEXT:    s_waitcnt vmcnt(0)1850; GFX900-NEXT:    s_setpc_b64 s[30:31]1851;1852; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_u_1:1853; GFX90A:       ; %bb.0:1854; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1855; GFX90A-NEXT:    ;;#ASMSTART1856; GFX90A-NEXT:    ; def v[0:1]1857; GFX90A-NEXT:    ;;#ASMEND1858; GFX90A-NEXT:    v_mov_b32_e32 v4, 01859; GFX90A-NEXT:    v_mov_b32_e32 v0, v11860; GFX90A-NEXT:    ;;#ASMSTART1861; GFX90A-NEXT:    ; def v[2:3]1862; GFX90A-NEXT:    ;;#ASMEND1863; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1864; GFX90A-NEXT:    s_waitcnt vmcnt(0)1865; GFX90A-NEXT:    s_setpc_b64 s[30:31]1866;1867; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_3_u_1:1868; GFX942:       ; %bb.0:1869; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1870; GFX942-NEXT:    ;;#ASMSTART1871; GFX942-NEXT:    ; def v[0:1]1872; GFX942-NEXT:    ;;#ASMEND1873; GFX942-NEXT:    v_mov_b32_e32 v4, 01874; GFX942-NEXT:    v_mov_b32_e32 v0, v11875; GFX942-NEXT:    ;;#ASMSTART1876; GFX942-NEXT:    ; def v[2:3]1877; GFX942-NEXT:    ;;#ASMEND1878; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1879; GFX942-NEXT:    s_waitcnt vmcnt(0)1880; GFX942-NEXT:    s_setpc_b64 s[30:31]1881  %vec0 = call <2 x float> asm "; def $0", "=v"()1882  %vec1 = call <2 x float> asm "; def $0", "=v"()1883  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 1>1884  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161885  ret void1886}1887 1888define void @v_shuffle_v4f32_v2f32__3_3_0_1(ptr addrspace(1) inreg %ptr) {1889; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_0_1:1890; GFX900:       ; %bb.0:1891; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1892; GFX900-NEXT:    v_mov_b32_e32 v5, 01893; GFX900-NEXT:    ;;#ASMSTART1894; GFX900-NEXT:    ; def v[0:1]1895; GFX900-NEXT:    ;;#ASMEND1896; GFX900-NEXT:    v_mov_b32_e32 v2, v11897; GFX900-NEXT:    ;;#ASMSTART1898; GFX900-NEXT:    ; def v[3:4]1899; GFX900-NEXT:    ;;#ASMEND1900; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]1901; GFX900-NEXT:    s_waitcnt vmcnt(0)1902; GFX900-NEXT:    s_setpc_b64 s[30:31]1903;1904; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_0_1:1905; GFX90A:       ; %bb.0:1906; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1907; GFX90A-NEXT:    ;;#ASMSTART1908; GFX90A-NEXT:    ; def v[0:1]1909; GFX90A-NEXT:    ;;#ASMEND1910; GFX90A-NEXT:    v_mov_b32_e32 v4, 01911; GFX90A-NEXT:    v_mov_b32_e32 v0, v11912; GFX90A-NEXT:    ;;#ASMSTART1913; GFX90A-NEXT:    ; def v[2:3]1914; GFX90A-NEXT:    ;;#ASMEND1915; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]1916; GFX90A-NEXT:    s_waitcnt vmcnt(0)1917; GFX90A-NEXT:    s_setpc_b64 s[30:31]1918;1919; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_3_0_1:1920; GFX942:       ; %bb.0:1921; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1922; GFX942-NEXT:    ;;#ASMSTART1923; GFX942-NEXT:    ; def v[0:1]1924; GFX942-NEXT:    ;;#ASMEND1925; GFX942-NEXT:    v_mov_b32_e32 v4, 01926; GFX942-NEXT:    v_mov_b32_e32 v0, v11927; GFX942-NEXT:    ;;#ASMSTART1928; GFX942-NEXT:    ; def v[2:3]1929; GFX942-NEXT:    ;;#ASMEND1930; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]1931; GFX942-NEXT:    s_waitcnt vmcnt(0)1932; GFX942-NEXT:    s_setpc_b64 s[30:31]1933  %vec0 = call <2 x float> asm "; def $0", "=v"()1934  %vec1 = call <2 x float> asm "; def $0", "=v"()1935  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 1>1936  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161937  ret void1938}1939 1940define void @v_shuffle_v4f32_v2f32__3_3_2_1(ptr addrspace(1) inreg %ptr) {1941; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_2_1:1942; GFX900:       ; %bb.0:1943; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1944; GFX900-NEXT:    ;;#ASMSTART1945; GFX900-NEXT:    ; def v[3:4]1946; GFX900-NEXT:    ;;#ASMEND1947; GFX900-NEXT:    v_mov_b32_e32 v5, 01948; GFX900-NEXT:    ;;#ASMSTART1949; GFX900-NEXT:    ; def v[0:1]1950; GFX900-NEXT:    ;;#ASMEND1951; GFX900-NEXT:    v_mov_b32_e32 v2, v11952; GFX900-NEXT:    v_mov_b32_e32 v3, v01953; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]1954; GFX900-NEXT:    s_waitcnt vmcnt(0)1955; GFX900-NEXT:    s_setpc_b64 s[30:31]1956;1957; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_2_1:1958; GFX90A:       ; %bb.0:1959; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1960; GFX90A-NEXT:    ;;#ASMSTART1961; GFX90A-NEXT:    ; def v[2:3]1962; GFX90A-NEXT:    ;;#ASMEND1963; GFX90A-NEXT:    v_mov_b32_e32 v6, 01964; GFX90A-NEXT:    ;;#ASMSTART1965; GFX90A-NEXT:    ; def v[4:5]1966; GFX90A-NEXT:    ;;#ASMEND1967; GFX90A-NEXT:    v_mov_b32_e32 v0, v31968; GFX90A-NEXT:    v_mov_b32_e32 v1, v31969; GFX90A-NEXT:    v_mov_b32_e32 v3, v51970; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]1971; GFX90A-NEXT:    s_waitcnt vmcnt(0)1972; GFX90A-NEXT:    s_setpc_b64 s[30:31]1973;1974; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_3_2_1:1975; GFX942:       ; %bb.0:1976; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1977; GFX942-NEXT:    ;;#ASMSTART1978; GFX942-NEXT:    ; def v[2:3]1979; GFX942-NEXT:    ;;#ASMEND1980; GFX942-NEXT:    v_mov_b32_e32 v6, 01981; GFX942-NEXT:    ;;#ASMSTART1982; GFX942-NEXT:    ; def v[4:5]1983; GFX942-NEXT:    ;;#ASMEND1984; GFX942-NEXT:    v_mov_b32_e32 v0, v31985; GFX942-NEXT:    v_mov_b32_e32 v1, v31986; GFX942-NEXT:    v_mov_b32_e32 v3, v51987; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]1988; GFX942-NEXT:    s_waitcnt vmcnt(0)1989; GFX942-NEXT:    s_setpc_b64 s[30:31]1990  %vec0 = call <2 x float> asm "; def $0", "=v"()1991  %vec1 = call <2 x float> asm "; def $0", "=v"()1992  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 1>1993  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 161994  ret void1995}1996 1997define void @v_shuffle_v4f32_v2f32__u_2_2_2(ptr addrspace(1) inreg %ptr) {1998; GFX9-LABEL: v_shuffle_v4f32_v2f32__u_2_2_2:1999; GFX9:       ; %bb.0:2000; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2001; GFX9-NEXT:    s_setpc_b64 s[30:31]2002  %vec0 = call <2 x float> asm "; def $0", "=v"()2003  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2>2004  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162005  ret void2006}2007 2008define void @v_shuffle_v4f32_v2f32__0_2_2_2(ptr addrspace(1) inreg %ptr) {2009; GFX900-LABEL: v_shuffle_v4f32_v2f32__0_2_2_2:2010; GFX900:       ; %bb.0:2011; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2012; GFX900-NEXT:    v_mov_b32_e32 v2, 02013; GFX900-NEXT:    ;;#ASMSTART2014; GFX900-NEXT:    ; def v[0:1]2015; GFX900-NEXT:    ;;#ASMEND2016; GFX900-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]2017; GFX900-NEXT:    s_waitcnt vmcnt(0)2018; GFX900-NEXT:    s_setpc_b64 s[30:31]2019;2020; GFX90A-LABEL: v_shuffle_v4f32_v2f32__0_2_2_2:2021; GFX90A:       ; %bb.0:2022; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2023; GFX90A-NEXT:    v_mov_b32_e32 v2, 02024; GFX90A-NEXT:    ;;#ASMSTART2025; GFX90A-NEXT:    ; def v[0:1]2026; GFX90A-NEXT:    ;;#ASMEND2027; GFX90A-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]2028; GFX90A-NEXT:    s_waitcnt vmcnt(0)2029; GFX90A-NEXT:    s_setpc_b64 s[30:31]2030;2031; GFX942-LABEL: v_shuffle_v4f32_v2f32__0_2_2_2:2032; GFX942:       ; %bb.0:2033; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2034; GFX942-NEXT:    v_mov_b32_e32 v2, 02035; GFX942-NEXT:    ;;#ASMSTART2036; GFX942-NEXT:    ; def v[0:1]2037; GFX942-NEXT:    ;;#ASMEND2038; GFX942-NEXT:    global_store_dwordx4 v2, v[0:3], s[0:1]2039; GFX942-NEXT:    s_waitcnt vmcnt(0)2040; GFX942-NEXT:    s_setpc_b64 s[30:31]2041  %vec0 = call <2 x float> asm "; def $0", "=v"()2042  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2>2043  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162044  ret void2045}2046 2047define void @v_shuffle_v4f32_v2f32__1_2_2_2(ptr addrspace(1) inreg %ptr) {2048; GFX900-LABEL: v_shuffle_v4f32_v2f32__1_2_2_2:2049; GFX900:       ; %bb.0:2050; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2051; GFX900-NEXT:    v_mov_b32_e32 v2, 02052; GFX900-NEXT:    ;;#ASMSTART2053; GFX900-NEXT:    ; def v[0:1]2054; GFX900-NEXT:    ;;#ASMEND2055; GFX900-NEXT:    global_store_dwordx4 v2, v[1:4], s[16:17]2056; GFX900-NEXT:    s_waitcnt vmcnt(0)2057; GFX900-NEXT:    s_setpc_b64 s[30:31]2058;2059; GFX90A-LABEL: v_shuffle_v4f32_v2f32__1_2_2_2:2060; GFX90A:       ; %bb.0:2061; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2062; GFX90A-NEXT:    ;;#ASMSTART2063; GFX90A-NEXT:    ; def v[0:1]2064; GFX90A-NEXT:    ;;#ASMEND2065; GFX90A-NEXT:    v_mov_b32_e32 v2, 02066; GFX90A-NEXT:    v_mov_b32_e32 v0, v12067; GFX90A-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]2068; GFX90A-NEXT:    s_waitcnt vmcnt(0)2069; GFX90A-NEXT:    s_setpc_b64 s[30:31]2070;2071; GFX942-LABEL: v_shuffle_v4f32_v2f32__1_2_2_2:2072; GFX942:       ; %bb.0:2073; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2074; GFX942-NEXT:    ;;#ASMSTART2075; GFX942-NEXT:    ; def v[0:1]2076; GFX942-NEXT:    ;;#ASMEND2077; GFX942-NEXT:    v_mov_b32_e32 v2, 02078; GFX942-NEXT:    v_mov_b32_e32 v0, v12079; GFX942-NEXT:    global_store_dwordx4 v2, v[0:3], s[0:1]2080; GFX942-NEXT:    s_waitcnt vmcnt(0)2081; GFX942-NEXT:    s_setpc_b64 s[30:31]2082  %vec0 = call <2 x float> asm "; def $0", "=v"()2083  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2>2084  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162085  ret void2086}2087 2088define void @v_shuffle_v4f32_v2f32__2_2_2_2(ptr addrspace(1) inreg %ptr) {2089; GFX9-LABEL: v_shuffle_v4f32_v2f32__2_2_2_2:2090; GFX9:       ; %bb.0:2091; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2092; GFX9-NEXT:    s_setpc_b64 s[30:31]2093  %vec0 = call <2 x float> asm "; def $0", "=v"()2094  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2>2095  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162096  ret void2097}2098 2099define void @v_shuffle_v4f32_v2f32__3_2_2_2(ptr addrspace(1) inreg %ptr) {2100; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_2_2_2:2101; GFX900:       ; %bb.0:2102; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2103; GFX900-NEXT:    v_mov_b32_e32 v5, 02104; GFX900-NEXT:    ;;#ASMSTART2105; GFX900-NEXT:    ; def v[0:1]2106; GFX900-NEXT:    ;;#ASMEND2107; GFX900-NEXT:    v_mov_b32_e32 v2, v02108; GFX900-NEXT:    v_mov_b32_e32 v3, v02109; GFX900-NEXT:    v_mov_b32_e32 v4, v02110; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]2111; GFX900-NEXT:    s_waitcnt vmcnt(0)2112; GFX900-NEXT:    s_setpc_b64 s[30:31]2113;2114; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_2_2_2:2115; GFX90A:       ; %bb.0:2116; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2117; GFX90A-NEXT:    ;;#ASMSTART2118; GFX90A-NEXT:    ; def v[2:3]2119; GFX90A-NEXT:    ;;#ASMEND2120; GFX90A-NEXT:    v_mov_b32_e32 v4, 02121; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]2122; GFX90A-NEXT:    v_mov_b32_e32 v3, v22123; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2124; GFX90A-NEXT:    s_waitcnt vmcnt(0)2125; GFX90A-NEXT:    s_setpc_b64 s[30:31]2126;2127; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_2_2_2:2128; GFX942:       ; %bb.0:2129; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2130; GFX942-NEXT:    ;;#ASMSTART2131; GFX942-NEXT:    ; def v[2:3]2132; GFX942-NEXT:    ;;#ASMEND2133; GFX942-NEXT:    v_mov_b32_e32 v4, 02134; GFX942-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]2135; GFX942-NEXT:    v_mov_b32_e32 v3, v22136; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]2137; GFX942-NEXT:    s_waitcnt vmcnt(0)2138; GFX942-NEXT:    s_setpc_b64 s[30:31]2139  %vec0 = call <2 x float> asm "; def $0", "=v"()2140  %vec1 = call <2 x float> asm "; def $0", "=v"()2141  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 2, i32 2, i32 2>2142  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162143  ret void2144}2145 2146define void @v_shuffle_v4f32_v2f32__3_u_2_2(ptr addrspace(1) inreg %ptr) {2147; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_u_2_2:2148; GFX900:       ; %bb.0:2149; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2150; GFX900-NEXT:    v_mov_b32_e32 v2, 02151; GFX900-NEXT:    ;;#ASMSTART2152; GFX900-NEXT:    ; def v[0:1]2153; GFX900-NEXT:    ;;#ASMEND2154; GFX900-NEXT:    v_mov_b32_e32 v3, v02155; GFX900-NEXT:    v_mov_b32_e32 v4, v02156; GFX900-NEXT:    global_store_dwordx4 v2, v[1:4], 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_v4f32_v2f32__3_u_2_2:2161; GFX90A:       ; %bb.0:2162; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2163; GFX90A-NEXT:    ;;#ASMSTART2164; GFX90A-NEXT:    ; def v[2:3]2165; GFX90A-NEXT:    ;;#ASMEND2166; GFX90A-NEXT:    v_mov_b32_e32 v1, 02167; GFX90A-NEXT:    v_mov_b32_e32 v0, v32168; GFX90A-NEXT:    v_mov_b32_e32 v3, v22169; GFX90A-NEXT:    global_store_dwordx4 v1, v[0:3], s[16:17]2170; GFX90A-NEXT:    s_waitcnt vmcnt(0)2171; GFX90A-NEXT:    s_setpc_b64 s[30:31]2172;2173; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_u_2_2:2174; GFX942:       ; %bb.0:2175; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2176; GFX942-NEXT:    ;;#ASMSTART2177; GFX942-NEXT:    ; def v[2:3]2178; GFX942-NEXT:    ;;#ASMEND2179; GFX942-NEXT:    v_mov_b32_e32 v1, 02180; GFX942-NEXT:    v_mov_b32_e32 v0, v32181; GFX942-NEXT:    v_mov_b32_e32 v3, v22182; GFX942-NEXT:    global_store_dwordx4 v1, v[0:3], s[0:1]2183; GFX942-NEXT:    s_waitcnt vmcnt(0)2184; GFX942-NEXT:    s_setpc_b64 s[30:31]2185  %vec0 = call <2 x float> asm "; def $0", "=v"()2186  %vec1 = call <2 x float> asm "; def $0", "=v"()2187  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 poison, i32 2, i32 2>2188  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162189  ret void2190}2191 2192define void @v_shuffle_v4f32_v2f32__3_0_2_2(ptr addrspace(1) inreg %ptr) {2193; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_0_2_2:2194; GFX900:       ; %bb.0:2195; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2196; GFX900-NEXT:    ;;#ASMSTART2197; GFX900-NEXT:    ; def v[2:3]2198; GFX900-NEXT:    ;;#ASMEND2199; GFX900-NEXT:    v_mov_b32_e32 v5, 02200; GFX900-NEXT:    ;;#ASMSTART2201; GFX900-NEXT:    ; def v[0:1]2202; GFX900-NEXT:    ;;#ASMEND2203; GFX900-NEXT:    v_mov_b32_e32 v3, v02204; GFX900-NEXT:    v_mov_b32_e32 v4, v02205; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]2206; GFX900-NEXT:    s_waitcnt vmcnt(0)2207; GFX900-NEXT:    s_setpc_b64 s[30:31]2208;2209; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_0_2_2:2210; GFX90A:       ; %bb.0:2211; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2212; GFX90A-NEXT:    ;;#ASMSTART2213; GFX90A-NEXT:    ; def v[0:1]2214; GFX90A-NEXT:    ;;#ASMEND2215; GFX90A-NEXT:    ;;#ASMSTART2216; GFX90A-NEXT:    ; def v[2:3]2217; GFX90A-NEXT:    ;;#ASMEND2218; GFX90A-NEXT:    v_mov_b32_e32 v4, 02219; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]2220; GFX90A-NEXT:    v_mov_b32_e32 v3, v22221; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2222; GFX90A-NEXT:    s_waitcnt vmcnt(0)2223; GFX90A-NEXT:    s_setpc_b64 s[30:31]2224;2225; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_0_2_2:2226; GFX942:       ; %bb.0:2227; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2228; GFX942-NEXT:    ;;#ASMSTART2229; GFX942-NEXT:    ; def v[0:1]2230; GFX942-NEXT:    ;;#ASMEND2231; GFX942-NEXT:    ;;#ASMSTART2232; GFX942-NEXT:    ; def v[2:3]2233; GFX942-NEXT:    ;;#ASMEND2234; GFX942-NEXT:    v_mov_b32_e32 v4, 02235; GFX942-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]2236; GFX942-NEXT:    v_mov_b32_e32 v3, v22237; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]2238; GFX942-NEXT:    s_waitcnt vmcnt(0)2239; GFX942-NEXT:    s_setpc_b64 s[30:31]2240  %vec0 = call <2 x float> asm "; def $0", "=v"()2241  %vec1 = call <2 x float> asm "; def $0", "=v"()2242  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 0, i32 2, i32 2>2243  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162244  ret void2245}2246 2247define void @v_shuffle_v4f32_v2f32__3_1_2_2(ptr addrspace(1) inreg %ptr) {2248; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_1_2_2:2249; GFX900:       ; %bb.0:2250; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2251; GFX900-NEXT:    ;;#ASMSTART2252; GFX900-NEXT:    ; def v[1:2]2253; GFX900-NEXT:    ;;#ASMEND2254; GFX900-NEXT:    v_mov_b32_e32 v5, 02255; GFX900-NEXT:    ;;#ASMSTART2256; GFX900-NEXT:    ; def v[0:1]2257; GFX900-NEXT:    ;;#ASMEND2258; GFX900-NEXT:    v_mov_b32_e32 v3, v02259; GFX900-NEXT:    v_mov_b32_e32 v4, v02260; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]2261; GFX900-NEXT:    s_waitcnt vmcnt(0)2262; GFX900-NEXT:    s_setpc_b64 s[30:31]2263;2264; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_1_2_2:2265; GFX90A:       ; %bb.0:2266; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2267; GFX90A-NEXT:    ;;#ASMSTART2268; GFX90A-NEXT:    ; def v[0:1]2269; GFX90A-NEXT:    ;;#ASMEND2270; GFX90A-NEXT:    ;;#ASMSTART2271; GFX90A-NEXT:    ; def v[2:3]2272; GFX90A-NEXT:    ;;#ASMEND2273; GFX90A-NEXT:    v_mov_b32_e32 v4, 02274; GFX90A-NEXT:    v_mov_b32_e32 v0, v32275; GFX90A-NEXT:    v_mov_b32_e32 v3, v22276; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2277; GFX90A-NEXT:    s_waitcnt vmcnt(0)2278; GFX90A-NEXT:    s_setpc_b64 s[30:31]2279;2280; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_1_2_2:2281; GFX942:       ; %bb.0:2282; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2283; GFX942-NEXT:    ;;#ASMSTART2284; GFX942-NEXT:    ; def v[0:1]2285; GFX942-NEXT:    ;;#ASMEND2286; GFX942-NEXT:    ;;#ASMSTART2287; GFX942-NEXT:    ; def v[2:3]2288; GFX942-NEXT:    ;;#ASMEND2289; GFX942-NEXT:    v_mov_b32_e32 v4, 02290; GFX942-NEXT:    v_mov_b32_e32 v0, v32291; GFX942-NEXT:    v_mov_b32_e32 v3, v22292; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]2293; GFX942-NEXT:    s_waitcnt vmcnt(0)2294; GFX942-NEXT:    s_setpc_b64 s[30:31]2295  %vec0 = call <2 x float> asm "; def $0", "=v"()2296  %vec1 = call <2 x float> asm "; def $0", "=v"()2297  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 1, i32 2, i32 2>2298  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162299  ret void2300}2301 2302define void @v_shuffle_v4f32_v2f32__3_3_2_2(ptr addrspace(1) inreg %ptr) {2303; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_2_2:2304; GFX900:       ; %bb.0:2305; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2306; GFX900-NEXT:    v_mov_b32_e32 v5, 02307; GFX900-NEXT:    ;;#ASMSTART2308; GFX900-NEXT:    ; def v[0:1]2309; GFX900-NEXT:    ;;#ASMEND2310; GFX900-NEXT:    v_mov_b32_e32 v2, v12311; GFX900-NEXT:    v_mov_b32_e32 v3, v02312; GFX900-NEXT:    v_mov_b32_e32 v4, v02313; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]2314; GFX900-NEXT:    s_waitcnt vmcnt(0)2315; GFX900-NEXT:    s_setpc_b64 s[30:31]2316;2317; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_2_2:2318; GFX90A:       ; %bb.0:2319; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2320; GFX90A-NEXT:    ;;#ASMSTART2321; GFX90A-NEXT:    ; def v[2:3]2322; GFX90A-NEXT:    ;;#ASMEND2323; GFX90A-NEXT:    v_mov_b32_e32 v4, 02324; GFX90A-NEXT:    v_mov_b32_e32 v0, v32325; GFX90A-NEXT:    v_mov_b32_e32 v1, v32326; GFX90A-NEXT:    v_mov_b32_e32 v3, v22327; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2328; GFX90A-NEXT:    s_waitcnt vmcnt(0)2329; GFX90A-NEXT:    s_setpc_b64 s[30:31]2330;2331; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_3_2_2:2332; GFX942:       ; %bb.0:2333; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2334; GFX942-NEXT:    ;;#ASMSTART2335; GFX942-NEXT:    ; def v[2:3]2336; GFX942-NEXT:    ;;#ASMEND2337; GFX942-NEXT:    v_mov_b32_e32 v4, 02338; GFX942-NEXT:    v_mov_b32_e32 v0, v32339; GFX942-NEXT:    v_mov_b32_e32 v1, v32340; GFX942-NEXT:    v_mov_b32_e32 v3, v22341; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]2342; GFX942-NEXT:    s_waitcnt vmcnt(0)2343; GFX942-NEXT:    s_setpc_b64 s[30:31]2344  %vec0 = call <2 x float> asm "; def $0", "=v"()2345  %vec1 = call <2 x float> asm "; def $0", "=v"()2346  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 2>2347  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162348  ret void2349}2350 2351define void @v_shuffle_v4f32_v2f32__3_3_u_2(ptr addrspace(1) inreg %ptr) {2352; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_u_2:2353; GFX900:       ; %bb.0:2354; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2355; GFX900-NEXT:    v_mov_b32_e32 v3, 02356; GFX900-NEXT:    ;;#ASMSTART2357; GFX900-NEXT:    ; def v[0:1]2358; GFX900-NEXT:    ;;#ASMEND2359; GFX900-NEXT:    v_mov_b32_e32 v2, v12360; GFX900-NEXT:    v_mov_b32_e32 v4, v02361; GFX900-NEXT:    global_store_dwordx4 v3, v[1:4], s[16:17]2362; GFX900-NEXT:    s_waitcnt vmcnt(0)2363; GFX900-NEXT:    s_setpc_b64 s[30:31]2364;2365; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_u_2:2366; GFX90A:       ; %bb.0:2367; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2368; GFX90A-NEXT:    v_mov_b32_e32 v2, 02369; GFX90A-NEXT:    ;;#ASMSTART2370; GFX90A-NEXT:    ; def v[0:1]2371; GFX90A-NEXT:    ;;#ASMEND2372; GFX90A-NEXT:    v_mov_b32_e32 v4, v12373; GFX90A-NEXT:    v_mov_b32_e32 v5, v12374; GFX90A-NEXT:    v_mov_b32_e32 v7, v02375; GFX90A-NEXT:    global_store_dwordx4 v2, v[4:7], s[16:17]2376; GFX90A-NEXT:    s_waitcnt vmcnt(0)2377; GFX90A-NEXT:    s_setpc_b64 s[30:31]2378;2379; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_3_u_2:2380; GFX942:       ; %bb.0:2381; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2382; GFX942-NEXT:    v_mov_b32_e32 v2, 02383; GFX942-NEXT:    ;;#ASMSTART2384; GFX942-NEXT:    ; def v[0:1]2385; GFX942-NEXT:    ;;#ASMEND2386; GFX942-NEXT:    s_nop 02387; GFX942-NEXT:    v_mov_b32_e32 v4, v12388; GFX942-NEXT:    v_mov_b32_e32 v5, v12389; GFX942-NEXT:    v_mov_b32_e32 v7, v02390; GFX942-NEXT:    global_store_dwordx4 v2, v[4:7], s[0:1]2391; GFX942-NEXT:    s_waitcnt vmcnt(0)2392; GFX942-NEXT:    s_setpc_b64 s[30:31]2393  %vec0 = call <2 x float> asm "; def $0", "=v"()2394  %vec1 = call <2 x float> asm "; def $0", "=v"()2395  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 2>2396  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162397  ret void2398}2399 2400define void @v_shuffle_v4f32_v2f32__3_3_0_2(ptr addrspace(1) inreg %ptr) {2401; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_0_2:2402; GFX900:       ; %bb.0:2403; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2404; GFX900-NEXT:    ;;#ASMSTART2405; GFX900-NEXT:    ; def v[3:4]2406; GFX900-NEXT:    ;;#ASMEND2407; GFX900-NEXT:    v_mov_b32_e32 v5, 02408; GFX900-NEXT:    ;;#ASMSTART2409; GFX900-NEXT:    ; def v[0:1]2410; GFX900-NEXT:    ;;#ASMEND2411; GFX900-NEXT:    v_mov_b32_e32 v2, v12412; GFX900-NEXT:    v_mov_b32_e32 v4, v02413; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]2414; GFX900-NEXT:    s_waitcnt vmcnt(0)2415; GFX900-NEXT:    s_setpc_b64 s[30:31]2416;2417; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_0_2:2418; GFX90A:       ; %bb.0:2419; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2420; GFX90A-NEXT:    ;;#ASMSTART2421; GFX90A-NEXT:    ; def v[2:3]2422; GFX90A-NEXT:    ;;#ASMEND2423; GFX90A-NEXT:    v_mov_b32_e32 v6, 02424; GFX90A-NEXT:    ;;#ASMSTART2425; GFX90A-NEXT:    ; def v[4:5]2426; GFX90A-NEXT:    ;;#ASMEND2427; GFX90A-NEXT:    v_mov_b32_e32 v0, v52428; GFX90A-NEXT:    v_mov_b32_e32 v1, v52429; GFX90A-NEXT:    v_mov_b32_e32 v3, v42430; GFX90A-NEXT:    global_store_dwordx4 v6, v[0:3], s[16:17]2431; GFX90A-NEXT:    s_waitcnt vmcnt(0)2432; GFX90A-NEXT:    s_setpc_b64 s[30:31]2433;2434; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_3_0_2:2435; GFX942:       ; %bb.0:2436; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2437; GFX942-NEXT:    ;;#ASMSTART2438; GFX942-NEXT:    ; def v[2:3]2439; GFX942-NEXT:    ;;#ASMEND2440; GFX942-NEXT:    v_mov_b32_e32 v6, 02441; GFX942-NEXT:    ;;#ASMSTART2442; GFX942-NEXT:    ; def v[4:5]2443; GFX942-NEXT:    ;;#ASMEND2444; GFX942-NEXT:    s_nop 02445; GFX942-NEXT:    v_mov_b32_e32 v0, v52446; GFX942-NEXT:    v_mov_b32_e32 v1, v52447; GFX942-NEXT:    v_mov_b32_e32 v3, v42448; GFX942-NEXT:    global_store_dwordx4 v6, v[0:3], s[0:1]2449; GFX942-NEXT:    s_waitcnt vmcnt(0)2450; GFX942-NEXT:    s_setpc_b64 s[30:31]2451  %vec0 = call <2 x float> asm "; def $0", "=v"()2452  %vec1 = call <2 x float> asm "; def $0", "=v"()2453  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 2>2454  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162455  ret void2456}2457 2458define void @v_shuffle_v4f32_v2f32__3_3_1_2(ptr addrspace(1) inreg %ptr) {2459; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_1_2:2460; GFX900:       ; %bb.0:2461; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2462; GFX900-NEXT:    ;;#ASMSTART2463; GFX900-NEXT:    ; def v[2:3]2464; GFX900-NEXT:    ;;#ASMEND2465; GFX900-NEXT:    v_mov_b32_e32 v5, 02466; GFX900-NEXT:    ;;#ASMSTART2467; GFX900-NEXT:    ; def v[0:1]2468; GFX900-NEXT:    ;;#ASMEND2469; GFX900-NEXT:    v_mov_b32_e32 v2, v12470; GFX900-NEXT:    v_mov_b32_e32 v4, v02471; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]2472; GFX900-NEXT:    s_waitcnt vmcnt(0)2473; GFX900-NEXT:    s_setpc_b64 s[30:31]2474;2475; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_1_2:2476; GFX90A:       ; %bb.0:2477; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2478; GFX90A-NEXT:    ;;#ASMSTART2479; GFX90A-NEXT:    ; def v[2:3]2480; GFX90A-NEXT:    ;;#ASMEND2481; GFX90A-NEXT:    ;;#ASMSTART2482; GFX90A-NEXT:    ; def v[0:1]2483; GFX90A-NEXT:    ;;#ASMEND2484; GFX90A-NEXT:    v_mov_b32_e32 v4, 02485; GFX90A-NEXT:    v_pk_mov_b32 v[2:3], v[2:3], v[0:1] op_sel:[1,0]2486; GFX90A-NEXT:    v_mov_b32_e32 v0, v12487; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2488; GFX90A-NEXT:    s_waitcnt vmcnt(0)2489; GFX90A-NEXT:    s_setpc_b64 s[30:31]2490;2491; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_3_1_2:2492; GFX942:       ; %bb.0:2493; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2494; GFX942-NEXT:    ;;#ASMSTART2495; GFX942-NEXT:    ; def v[2:3]2496; GFX942-NEXT:    ;;#ASMEND2497; GFX942-NEXT:    ;;#ASMSTART2498; GFX942-NEXT:    ; def v[0:1]2499; GFX942-NEXT:    ;;#ASMEND2500; GFX942-NEXT:    v_mov_b32_e32 v4, 02501; GFX942-NEXT:    v_pk_mov_b32 v[2:3], v[2:3], v[0:1] op_sel:[1,0]2502; GFX942-NEXT:    v_mov_b32_e32 v0, v12503; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]2504; GFX942-NEXT:    s_waitcnt vmcnt(0)2505; GFX942-NEXT:    s_setpc_b64 s[30:31]2506  %vec0 = call <2 x float> asm "; def $0", "=v"()2507  %vec1 = call <2 x float> asm "; def $0", "=v"()2508  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 2>2509  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162510  ret void2511}2512 2513define void @v_shuffle_v4f32_v2f32__u_3_3_3(ptr addrspace(1) inreg %ptr) {2514; GFX900-LABEL: v_shuffle_v4f32_v2f32__u_3_3_3:2515; GFX900:       ; %bb.0:2516; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2517; GFX900-NEXT:    v_mov_b32_e32 v4, 02518; GFX900-NEXT:    ;;#ASMSTART2519; GFX900-NEXT:    ; def v[0:1]2520; GFX900-NEXT:    ;;#ASMEND2521; GFX900-NEXT:    v_mov_b32_e32 v2, v12522; GFX900-NEXT:    v_mov_b32_e32 v3, v12523; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2524; GFX900-NEXT:    s_waitcnt vmcnt(0)2525; GFX900-NEXT:    s_setpc_b64 s[30:31]2526;2527; GFX90A-LABEL: v_shuffle_v4f32_v2f32__u_3_3_3:2528; GFX90A:       ; %bb.0:2529; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2530; GFX90A-NEXT:    v_mov_b32_e32 v4, 02531; GFX90A-NEXT:    ;;#ASMSTART2532; GFX90A-NEXT:    ; def v[0:1]2533; GFX90A-NEXT:    ;;#ASMEND2534; GFX90A-NEXT:    v_mov_b32_e32 v2, v12535; GFX90A-NEXT:    v_mov_b32_e32 v3, v12536; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2537; GFX90A-NEXT:    s_waitcnt vmcnt(0)2538; GFX90A-NEXT:    s_setpc_b64 s[30:31]2539;2540; GFX942-LABEL: v_shuffle_v4f32_v2f32__u_3_3_3:2541; GFX942:       ; %bb.0:2542; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2543; GFX942-NEXT:    v_mov_b32_e32 v4, 02544; GFX942-NEXT:    ;;#ASMSTART2545; GFX942-NEXT:    ; def v[0:1]2546; GFX942-NEXT:    ;;#ASMEND2547; GFX942-NEXT:    s_nop 02548; GFX942-NEXT:    v_mov_b32_e32 v2, v12549; GFX942-NEXT:    v_mov_b32_e32 v3, v12550; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]2551; GFX942-NEXT:    s_waitcnt vmcnt(0)2552; GFX942-NEXT:    s_setpc_b64 s[30:31]2553  %vec0 = call <2 x float> asm "; def $0", "=v"()2554  %vec1 = call <2 x float> asm "; def $0", "=v"()2555  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 poison, i32 3, i32 3, i32 3>2556  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162557  ret void2558}2559 2560define void @v_shuffle_v4f32_v2f32__0_3_3_3(ptr addrspace(1) inreg %ptr) {2561; GFX900-LABEL: v_shuffle_v4f32_v2f32__0_3_3_3:2562; GFX900:       ; %bb.0:2563; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2564; GFX900-NEXT:    ;;#ASMSTART2565; GFX900-NEXT:    ; def v[0:1]2566; GFX900-NEXT:    ;;#ASMEND2567; GFX900-NEXT:    ;;#ASMSTART2568; GFX900-NEXT:    ; def v[1:2]2569; GFX900-NEXT:    ;;#ASMEND2570; GFX900-NEXT:    v_mov_b32_e32 v4, 02571; GFX900-NEXT:    v_mov_b32_e32 v1, v22572; GFX900-NEXT:    v_mov_b32_e32 v3, v22573; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2574; GFX900-NEXT:    s_waitcnt vmcnt(0)2575; GFX900-NEXT:    s_setpc_b64 s[30:31]2576;2577; GFX90A-LABEL: v_shuffle_v4f32_v2f32__0_3_3_3:2578; GFX90A:       ; %bb.0:2579; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2580; GFX90A-NEXT:    ;;#ASMSTART2581; GFX90A-NEXT:    ; def v[0:1]2582; GFX90A-NEXT:    ;;#ASMEND2583; GFX90A-NEXT:    ;;#ASMSTART2584; GFX90A-NEXT:    ; def v[2:3]2585; GFX90A-NEXT:    ;;#ASMEND2586; GFX90A-NEXT:    v_mov_b32_e32 v4, 02587; GFX90A-NEXT:    v_mov_b32_e32 v1, v32588; GFX90A-NEXT:    v_mov_b32_e32 v2, v32589; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2590; GFX90A-NEXT:    s_waitcnt vmcnt(0)2591; GFX90A-NEXT:    s_setpc_b64 s[30:31]2592;2593; GFX942-LABEL: v_shuffle_v4f32_v2f32__0_3_3_3:2594; GFX942:       ; %bb.0:2595; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2596; GFX942-NEXT:    ;;#ASMSTART2597; GFX942-NEXT:    ; def v[0:1]2598; GFX942-NEXT:    ;;#ASMEND2599; GFX942-NEXT:    ;;#ASMSTART2600; GFX942-NEXT:    ; def v[2:3]2601; GFX942-NEXT:    ;;#ASMEND2602; GFX942-NEXT:    v_mov_b32_e32 v4, 02603; GFX942-NEXT:    v_mov_b32_e32 v1, v32604; GFX942-NEXT:    v_mov_b32_e32 v2, v32605; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]2606; GFX942-NEXT:    s_waitcnt vmcnt(0)2607; GFX942-NEXT:    s_setpc_b64 s[30:31]2608  %vec0 = call <2 x float> asm "; def $0", "=v"()2609  %vec1 = call <2 x float> asm "; def $0", "=v"()2610  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 0, i32 3, i32 3, i32 3>2611  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162612  ret void2613}2614 2615define void @v_shuffle_v4f32_v2f32__1_3_3_3(ptr addrspace(1) inreg %ptr) {2616; GFX900-LABEL: v_shuffle_v4f32_v2f32__1_3_3_3:2617; GFX900:       ; %bb.0:2618; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2619; GFX900-NEXT:    ;;#ASMSTART2620; GFX900-NEXT:    ; def v[2:3]2621; GFX900-NEXT:    ;;#ASMEND2622; GFX900-NEXT:    v_mov_b32_e32 v5, 02623; GFX900-NEXT:    v_mov_b32_e32 v2, v32624; GFX900-NEXT:    v_mov_b32_e32 v4, v32625; GFX900-NEXT:    ;;#ASMSTART2626; GFX900-NEXT:    ; def v[0:1]2627; GFX900-NEXT:    ;;#ASMEND2628; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]2629; GFX900-NEXT:    s_waitcnt vmcnt(0)2630; GFX900-NEXT:    s_setpc_b64 s[30:31]2631;2632; GFX90A-LABEL: v_shuffle_v4f32_v2f32__1_3_3_3:2633; GFX90A:       ; %bb.0:2634; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2635; GFX90A-NEXT:    ;;#ASMSTART2636; GFX90A-NEXT:    ; def v[2:3]2637; GFX90A-NEXT:    ;;#ASMEND2638; GFX90A-NEXT:    ;;#ASMSTART2639; GFX90A-NEXT:    ; def v[0:1]2640; GFX90A-NEXT:    ;;#ASMEND2641; GFX90A-NEXT:    v_mov_b32_e32 v4, 02642; GFX90A-NEXT:    v_mov_b32_e32 v0, v32643; GFX90A-NEXT:    v_mov_b32_e32 v2, v12644; GFX90A-NEXT:    v_mov_b32_e32 v3, v12645; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2646; GFX90A-NEXT:    s_waitcnt vmcnt(0)2647; GFX90A-NEXT:    s_setpc_b64 s[30:31]2648;2649; GFX942-LABEL: v_shuffle_v4f32_v2f32__1_3_3_3:2650; GFX942:       ; %bb.0:2651; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2652; GFX942-NEXT:    ;;#ASMSTART2653; GFX942-NEXT:    ; def v[2:3]2654; GFX942-NEXT:    ;;#ASMEND2655; GFX942-NEXT:    ;;#ASMSTART2656; GFX942-NEXT:    ; def v[0:1]2657; GFX942-NEXT:    ;;#ASMEND2658; GFX942-NEXT:    v_mov_b32_e32 v4, 02659; GFX942-NEXT:    v_mov_b32_e32 v0, v32660; GFX942-NEXT:    v_mov_b32_e32 v2, v12661; GFX942-NEXT:    v_mov_b32_e32 v3, v12662; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]2663; GFX942-NEXT:    s_waitcnt vmcnt(0)2664; GFX942-NEXT:    s_setpc_b64 s[30:31]2665  %vec0 = call <2 x float> asm "; def $0", "=v"()2666  %vec1 = call <2 x float> asm "; def $0", "=v"()2667  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 1, i32 3, i32 3, i32 3>2668  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162669  ret void2670}2671 2672define void @v_shuffle_v4f32_v2f32__2_3_3_3(ptr addrspace(1) inreg %ptr) {2673; GFX900-LABEL: v_shuffle_v4f32_v2f32__2_3_3_3:2674; GFX900:       ; %bb.0:2675; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2676; GFX900-NEXT:    v_mov_b32_e32 v4, 02677; GFX900-NEXT:    ;;#ASMSTART2678; GFX900-NEXT:    ; def v[0:1]2679; GFX900-NEXT:    ;;#ASMEND2680; GFX900-NEXT:    v_mov_b32_e32 v2, v12681; GFX900-NEXT:    v_mov_b32_e32 v3, v12682; GFX900-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2683; GFX900-NEXT:    s_waitcnt vmcnt(0)2684; GFX900-NEXT:    s_setpc_b64 s[30:31]2685;2686; GFX90A-LABEL: v_shuffle_v4f32_v2f32__2_3_3_3:2687; GFX90A:       ; %bb.0:2688; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2689; GFX90A-NEXT:    v_mov_b32_e32 v4, 02690; GFX90A-NEXT:    ;;#ASMSTART2691; GFX90A-NEXT:    ; def v[0:1]2692; GFX90A-NEXT:    ;;#ASMEND2693; GFX90A-NEXT:    v_mov_b32_e32 v2, v12694; GFX90A-NEXT:    v_mov_b32_e32 v3, v12695; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2696; GFX90A-NEXT:    s_waitcnt vmcnt(0)2697; GFX90A-NEXT:    s_setpc_b64 s[30:31]2698;2699; GFX942-LABEL: v_shuffle_v4f32_v2f32__2_3_3_3:2700; GFX942:       ; %bb.0:2701; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2702; GFX942-NEXT:    v_mov_b32_e32 v4, 02703; GFX942-NEXT:    ;;#ASMSTART2704; GFX942-NEXT:    ; def v[0:1]2705; GFX942-NEXT:    ;;#ASMEND2706; GFX942-NEXT:    s_nop 02707; GFX942-NEXT:    v_mov_b32_e32 v2, v12708; GFX942-NEXT:    v_mov_b32_e32 v3, v12709; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]2710; GFX942-NEXT:    s_waitcnt vmcnt(0)2711; GFX942-NEXT:    s_setpc_b64 s[30:31]2712  %vec0 = call <2 x float> asm "; def $0", "=v"()2713  %vec1 = call <2 x float> asm "; def $0", "=v"()2714  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 2, i32 3, i32 3, i32 3>2715  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162716  ret void2717}2718 2719define void @v_shuffle_v4f32_v2f32__3_u_3_3(ptr addrspace(1) inreg %ptr) {2720; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_u_3_3:2721; GFX900:       ; %bb.0:2722; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2723; GFX900-NEXT:    v_mov_b32_e32 v2, 02724; GFX900-NEXT:    ;;#ASMSTART2725; GFX900-NEXT:    ; def v[0:1]2726; GFX900-NEXT:    ;;#ASMEND2727; GFX900-NEXT:    v_mov_b32_e32 v3, v12728; GFX900-NEXT:    v_mov_b32_e32 v4, v12729; GFX900-NEXT:    global_store_dwordx4 v2, v[1:4], s[16:17]2730; GFX900-NEXT:    s_waitcnt vmcnt(0)2731; GFX900-NEXT:    s_setpc_b64 s[30:31]2732;2733; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_u_3_3:2734; GFX90A:       ; %bb.0:2735; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2736; GFX90A-NEXT:    ;;#ASMSTART2737; GFX90A-NEXT:    ; def v[2:3]2738; GFX90A-NEXT:    ;;#ASMEND2739; GFX90A-NEXT:    v_mov_b32_e32 v1, 02740; GFX90A-NEXT:    v_mov_b32_e32 v0, v32741; GFX90A-NEXT:    v_mov_b32_e32 v2, v32742; GFX90A-NEXT:    global_store_dwordx4 v1, v[0:3], s[16:17]2743; GFX90A-NEXT:    s_waitcnt vmcnt(0)2744; GFX90A-NEXT:    s_setpc_b64 s[30:31]2745;2746; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_u_3_3:2747; GFX942:       ; %bb.0:2748; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2749; GFX942-NEXT:    ;;#ASMSTART2750; GFX942-NEXT:    ; def v[2:3]2751; GFX942-NEXT:    ;;#ASMEND2752; GFX942-NEXT:    v_mov_b32_e32 v1, 02753; GFX942-NEXT:    v_mov_b32_e32 v0, v32754; GFX942-NEXT:    v_mov_b32_e32 v2, v32755; GFX942-NEXT:    global_store_dwordx4 v1, v[0:3], s[0:1]2756; GFX942-NEXT:    s_waitcnt vmcnt(0)2757; GFX942-NEXT:    s_setpc_b64 s[30:31]2758  %vec0 = call <2 x float> asm "; def $0", "=v"()2759  %vec1 = call <2 x float> asm "; def $0", "=v"()2760  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 poison, i32 3, i32 3>2761  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162762  ret void2763}2764 2765define void @v_shuffle_v4f32_v2f32__3_0_3_3(ptr addrspace(1) inreg %ptr) {2766; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_0_3_3:2767; GFX900:       ; %bb.0:2768; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2769; GFX900-NEXT:    ;;#ASMSTART2770; GFX900-NEXT:    ; def v[2:3]2771; GFX900-NEXT:    ;;#ASMEND2772; GFX900-NEXT:    v_mov_b32_e32 v5, 02773; GFX900-NEXT:    ;;#ASMSTART2774; GFX900-NEXT:    ; def v[0:1]2775; GFX900-NEXT:    ;;#ASMEND2776; GFX900-NEXT:    v_mov_b32_e32 v3, v12777; GFX900-NEXT:    v_mov_b32_e32 v4, v12778; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]2779; GFX900-NEXT:    s_waitcnt vmcnt(0)2780; GFX900-NEXT:    s_setpc_b64 s[30:31]2781;2782; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_0_3_3:2783; GFX90A:       ; %bb.0:2784; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2785; GFX90A-NEXT:    ;;#ASMSTART2786; GFX90A-NEXT:    ; def v[0:1]2787; GFX90A-NEXT:    ;;#ASMEND2788; GFX90A-NEXT:    ;;#ASMSTART2789; GFX90A-NEXT:    ; def v[2:3]2790; GFX90A-NEXT:    ;;#ASMEND2791; GFX90A-NEXT:    v_mov_b32_e32 v4, 02792; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]2793; GFX90A-NEXT:    v_mov_b32_e32 v2, v32794; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2795; GFX90A-NEXT:    s_waitcnt vmcnt(0)2796; GFX90A-NEXT:    s_setpc_b64 s[30:31]2797;2798; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_0_3_3:2799; GFX942:       ; %bb.0:2800; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2801; GFX942-NEXT:    ;;#ASMSTART2802; GFX942-NEXT:    ; def v[0:1]2803; GFX942-NEXT:    ;;#ASMEND2804; GFX942-NEXT:    ;;#ASMSTART2805; GFX942-NEXT:    ; def v[2:3]2806; GFX942-NEXT:    ;;#ASMEND2807; GFX942-NEXT:    v_mov_b32_e32 v4, 02808; GFX942-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]2809; GFX942-NEXT:    v_mov_b32_e32 v2, v32810; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]2811; GFX942-NEXT:    s_waitcnt vmcnt(0)2812; GFX942-NEXT:    s_setpc_b64 s[30:31]2813  %vec0 = call <2 x float> asm "; def $0", "=v"()2814  %vec1 = call <2 x float> asm "; def $0", "=v"()2815  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 0, i32 3, i32 3>2816  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162817  ret void2818}2819 2820define void @v_shuffle_v4f32_v2f32__3_1_3_3(ptr addrspace(1) inreg %ptr) {2821; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_1_3_3:2822; GFX900:       ; %bb.0:2823; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2824; GFX900-NEXT:    ;;#ASMSTART2825; GFX900-NEXT:    ; def v[1:2]2826; GFX900-NEXT:    ;;#ASMEND2827; GFX900-NEXT:    v_mov_b32_e32 v5, 02828; GFX900-NEXT:    ;;#ASMSTART2829; GFX900-NEXT:    ; def v[0:1]2830; GFX900-NEXT:    ;;#ASMEND2831; GFX900-NEXT:    v_mov_b32_e32 v3, v12832; GFX900-NEXT:    v_mov_b32_e32 v4, v12833; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]2834; GFX900-NEXT:    s_waitcnt vmcnt(0)2835; GFX900-NEXT:    s_setpc_b64 s[30:31]2836;2837; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_1_3_3:2838; GFX90A:       ; %bb.0:2839; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2840; 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_mov_b32_e32 v4, 02847; GFX90A-NEXT:    v_mov_b32_e32 v0, v32848; GFX90A-NEXT:    v_mov_b32_e32 v2, v32849; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2850; GFX90A-NEXT:    s_waitcnt vmcnt(0)2851; GFX90A-NEXT:    s_setpc_b64 s[30:31]2852;2853; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_1_3_3:2854; GFX942:       ; %bb.0:2855; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2856; 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:    v_mov_b32_e32 v4, 02863; GFX942-NEXT:    v_mov_b32_e32 v0, v32864; GFX942-NEXT:    v_mov_b32_e32 v2, v32865; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]2866; GFX942-NEXT:    s_waitcnt vmcnt(0)2867; GFX942-NEXT:    s_setpc_b64 s[30:31]2868  %vec0 = call <2 x float> asm "; def $0", "=v"()2869  %vec1 = call <2 x float> asm "; def $0", "=v"()2870  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 1, i32 3, i32 3>2871  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162872  ret void2873}2874 2875define void @v_shuffle_v4f32_v2f32__3_2_3_3(ptr addrspace(1) inreg %ptr) {2876; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_2_3_3:2877; GFX900:       ; %bb.0:2878; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2879; GFX900-NEXT:    v_mov_b32_e32 v5, 02880; GFX900-NEXT:    ;;#ASMSTART2881; GFX900-NEXT:    ; def v[0:1]2882; GFX900-NEXT:    ;;#ASMEND2883; GFX900-NEXT:    v_mov_b32_e32 v2, v02884; GFX900-NEXT:    v_mov_b32_e32 v3, v12885; GFX900-NEXT:    v_mov_b32_e32 v4, v12886; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]2887; GFX900-NEXT:    s_waitcnt vmcnt(0)2888; GFX900-NEXT:    s_setpc_b64 s[30:31]2889;2890; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_2_3_3:2891; GFX90A:       ; %bb.0:2892; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2893; GFX90A-NEXT:    ;;#ASMSTART2894; GFX90A-NEXT:    ; def v[2:3]2895; GFX90A-NEXT:    ;;#ASMEND2896; GFX90A-NEXT:    v_mov_b32_e32 v4, 02897; GFX90A-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]2898; GFX90A-NEXT:    v_mov_b32_e32 v2, v32899; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2900; GFX90A-NEXT:    s_waitcnt vmcnt(0)2901; GFX90A-NEXT:    s_setpc_b64 s[30:31]2902;2903; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_2_3_3:2904; GFX942:       ; %bb.0:2905; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2906; GFX942-NEXT:    ;;#ASMSTART2907; GFX942-NEXT:    ; def v[2:3]2908; GFX942-NEXT:    ;;#ASMEND2909; GFX942-NEXT:    v_mov_b32_e32 v4, 02910; GFX942-NEXT:    v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]2911; GFX942-NEXT:    v_mov_b32_e32 v2, v32912; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]2913; GFX942-NEXT:    s_waitcnt vmcnt(0)2914; GFX942-NEXT:    s_setpc_b64 s[30:31]2915  %vec0 = call <2 x float> asm "; def $0", "=v"()2916  %vec1 = call <2 x float> asm "; def $0", "=v"()2917  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 2, i32 3, i32 3>2918  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162919  ret void2920}2921 2922define void @v_shuffle_v4f32_v2f32__3_3_u_3(ptr addrspace(1) inreg %ptr) {2923; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_u_3:2924; GFX900:       ; %bb.0:2925; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2926; GFX900-NEXT:    v_mov_b32_e32 v3, 02927; GFX900-NEXT:    ;;#ASMSTART2928; GFX900-NEXT:    ; def v[0:1]2929; GFX900-NEXT:    ;;#ASMEND2930; GFX900-NEXT:    v_mov_b32_e32 v2, v12931; GFX900-NEXT:    v_mov_b32_e32 v4, v12932; GFX900-NEXT:    global_store_dwordx4 v3, v[1:4], 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_v4f32_v2f32__3_3_u_3:2937; GFX90A:       ; %bb.0:2938; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2939; GFX90A-NEXT:    ;;#ASMSTART2940; GFX90A-NEXT:    ; def v[0:1]2941; GFX90A-NEXT:    ;;#ASMEND2942; GFX90A-NEXT:    v_mov_b32_e32 v2, 02943; GFX90A-NEXT:    v_mov_b32_e32 v0, v12944; GFX90A-NEXT:    v_mov_b32_e32 v3, v12945; GFX90A-NEXT:    global_store_dwordx4 v2, v[0:3], s[16:17]2946; GFX90A-NEXT:    s_waitcnt vmcnt(0)2947; GFX90A-NEXT:    s_setpc_b64 s[30:31]2948;2949; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_3_u_3:2950; GFX942:       ; %bb.0:2951; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2952; GFX942-NEXT:    ;;#ASMSTART2953; GFX942-NEXT:    ; def v[0:1]2954; GFX942-NEXT:    ;;#ASMEND2955; GFX942-NEXT:    v_mov_b32_e32 v2, 02956; GFX942-NEXT:    v_mov_b32_e32 v0, v12957; GFX942-NEXT:    v_mov_b32_e32 v3, v12958; GFX942-NEXT:    global_store_dwordx4 v2, v[0:3], s[0:1]2959; GFX942-NEXT:    s_waitcnt vmcnt(0)2960; GFX942-NEXT:    s_setpc_b64 s[30:31]2961  %vec0 = call <2 x float> asm "; def $0", "=v"()2962  %vec1 = call <2 x float> asm "; def $0", "=v"()2963  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 3>2964  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 162965  ret void2966}2967 2968define void @v_shuffle_v4f32_v2f32__3_3_0_3(ptr addrspace(1) inreg %ptr) {2969; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_0_3:2970; GFX900:       ; %bb.0:2971; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2972; GFX900-NEXT:    ;;#ASMSTART2973; GFX900-NEXT:    ; def v[3:4]2974; GFX900-NEXT:    ;;#ASMEND2975; GFX900-NEXT:    v_mov_b32_e32 v5, 02976; GFX900-NEXT:    ;;#ASMSTART2977; GFX900-NEXT:    ; def v[0:1]2978; GFX900-NEXT:    ;;#ASMEND2979; GFX900-NEXT:    v_mov_b32_e32 v2, v12980; GFX900-NEXT:    v_mov_b32_e32 v4, v12981; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]2982; GFX900-NEXT:    s_waitcnt vmcnt(0)2983; GFX900-NEXT:    s_setpc_b64 s[30:31]2984;2985; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_0_3:2986; GFX90A:       ; %bb.0:2987; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2988; GFX90A-NEXT:    ;;#ASMSTART2989; GFX90A-NEXT:    ; def v[2:3]2990; GFX90A-NEXT:    ;;#ASMEND2991; GFX90A-NEXT:    ;;#ASMSTART2992; GFX90A-NEXT:    ; def v[0:1]2993; GFX90A-NEXT:    ;;#ASMEND2994; GFX90A-NEXT:    v_mov_b32_e32 v4, 02995; GFX90A-NEXT:    v_mov_b32_e32 v0, v12996; GFX90A-NEXT:    v_mov_b32_e32 v3, v12997; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]2998; GFX90A-NEXT:    s_waitcnt vmcnt(0)2999; GFX90A-NEXT:    s_setpc_b64 s[30:31]3000;3001; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_3_0_3:3002; GFX942:       ; %bb.0:3003; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3004; GFX942-NEXT:    ;;#ASMSTART3005; GFX942-NEXT:    ; def v[2:3]3006; GFX942-NEXT:    ;;#ASMEND3007; GFX942-NEXT:    ;;#ASMSTART3008; GFX942-NEXT:    ; def v[0:1]3009; GFX942-NEXT:    ;;#ASMEND3010; GFX942-NEXT:    v_mov_b32_e32 v4, 03011; GFX942-NEXT:    v_mov_b32_e32 v0, v13012; GFX942-NEXT:    v_mov_b32_e32 v3, v13013; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]3014; GFX942-NEXT:    s_waitcnt vmcnt(0)3015; GFX942-NEXT:    s_setpc_b64 s[30:31]3016  %vec0 = call <2 x float> asm "; def $0", "=v"()3017  %vec1 = call <2 x float> asm "; def $0", "=v"()3018  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 3>3019  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 163020  ret void3021}3022 3023define void @v_shuffle_v4f32_v2f32__3_3_1_3(ptr addrspace(1) inreg %ptr) {3024; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_1_3:3025; GFX900:       ; %bb.0:3026; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3027; GFX900-NEXT:    ;;#ASMSTART3028; GFX900-NEXT:    ; def v[2:3]3029; GFX900-NEXT:    ;;#ASMEND3030; GFX900-NEXT:    v_mov_b32_e32 v5, 03031; GFX900-NEXT:    ;;#ASMSTART3032; GFX900-NEXT:    ; def v[0:1]3033; GFX900-NEXT:    ;;#ASMEND3034; GFX900-NEXT:    v_mov_b32_e32 v2, v13035; GFX900-NEXT:    v_mov_b32_e32 v4, v13036; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]3037; GFX900-NEXT:    s_waitcnt vmcnt(0)3038; GFX900-NEXT:    s_setpc_b64 s[30:31]3039;3040; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_1_3:3041; GFX90A:       ; %bb.0:3042; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3043; GFX90A-NEXT:    ;;#ASMSTART3044; GFX90A-NEXT:    ; def v[2:3]3045; GFX90A-NEXT:    ;;#ASMEND3046; GFX90A-NEXT:    ;;#ASMSTART3047; GFX90A-NEXT:    ; def v[0:1]3048; GFX90A-NEXT:    ;;#ASMEND3049; GFX90A-NEXT:    v_mov_b32_e32 v4, 03050; GFX90A-NEXT:    v_mov_b32_e32 v0, v13051; GFX90A-NEXT:    v_mov_b32_e32 v2, v33052; GFX90A-NEXT:    v_mov_b32_e32 v3, v13053; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]3054; GFX90A-NEXT:    s_waitcnt vmcnt(0)3055; GFX90A-NEXT:    s_setpc_b64 s[30:31]3056;3057; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_3_1_3:3058; GFX942:       ; %bb.0:3059; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3060; GFX942-NEXT:    ;;#ASMSTART3061; GFX942-NEXT:    ; def v[2:3]3062; GFX942-NEXT:    ;;#ASMEND3063; GFX942-NEXT:    ;;#ASMSTART3064; GFX942-NEXT:    ; def v[0:1]3065; GFX942-NEXT:    ;;#ASMEND3066; GFX942-NEXT:    v_mov_b32_e32 v4, 03067; GFX942-NEXT:    v_mov_b32_e32 v0, v13068; GFX942-NEXT:    v_mov_b32_e32 v2, v33069; GFX942-NEXT:    v_mov_b32_e32 v3, v13070; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]3071; GFX942-NEXT:    s_waitcnt vmcnt(0)3072; GFX942-NEXT:    s_setpc_b64 s[30:31]3073  %vec0 = call <2 x float> asm "; def $0", "=v"()3074  %vec1 = call <2 x float> asm "; def $0", "=v"()3075  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 3>3076  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 163077  ret void3078}3079 3080define void @v_shuffle_v4f32_v2f32__3_3_2_3(ptr addrspace(1) inreg %ptr) {3081; GFX900-LABEL: v_shuffle_v4f32_v2f32__3_3_2_3:3082; GFX900:       ; %bb.0:3083; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3084; GFX900-NEXT:    v_mov_b32_e32 v5, 03085; GFX900-NEXT:    ;;#ASMSTART3086; GFX900-NEXT:    ; def v[0:1]3087; GFX900-NEXT:    ;;#ASMEND3088; GFX900-NEXT:    v_mov_b32_e32 v2, v13089; GFX900-NEXT:    v_mov_b32_e32 v3, v03090; GFX900-NEXT:    v_mov_b32_e32 v4, v13091; GFX900-NEXT:    global_store_dwordx4 v5, v[1:4], s[16:17]3092; GFX900-NEXT:    s_waitcnt vmcnt(0)3093; GFX900-NEXT:    s_setpc_b64 s[30:31]3094;3095; GFX90A-LABEL: v_shuffle_v4f32_v2f32__3_3_2_3:3096; GFX90A:       ; %bb.0:3097; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3098; GFX90A-NEXT:    v_mov_b32_e32 v4, 03099; GFX90A-NEXT:    ;;#ASMSTART3100; GFX90A-NEXT:    ; def v[2:3]3101; GFX90A-NEXT:    ;;#ASMEND3102; GFX90A-NEXT:    v_mov_b32_e32 v0, v33103; GFX90A-NEXT:    v_mov_b32_e32 v1, v33104; GFX90A-NEXT:    global_store_dwordx4 v4, v[0:3], s[16:17]3105; GFX90A-NEXT:    s_waitcnt vmcnt(0)3106; GFX90A-NEXT:    s_setpc_b64 s[30:31]3107;3108; GFX942-LABEL: v_shuffle_v4f32_v2f32__3_3_2_3:3109; GFX942:       ; %bb.0:3110; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3111; GFX942-NEXT:    v_mov_b32_e32 v4, 03112; GFX942-NEXT:    ;;#ASMSTART3113; GFX942-NEXT:    ; def v[2:3]3114; GFX942-NEXT:    ;;#ASMEND3115; GFX942-NEXT:    s_nop 03116; GFX942-NEXT:    v_mov_b32_e32 v0, v33117; GFX942-NEXT:    v_mov_b32_e32 v1, v33118; GFX942-NEXT:    global_store_dwordx4 v4, v[0:3], s[0:1]3119; GFX942-NEXT:    s_waitcnt vmcnt(0)3120; GFX942-NEXT:    s_setpc_b64 s[30:31]3121  %vec0 = call <2 x float> asm "; def $0", "=v"()3122  %vec1 = call <2 x float> asm "; def $0", "=v"()3123  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 3>3124  store <4 x float> %shuf, ptr addrspace(1) %ptr, align 163125  ret void3126}3127 3128define void @s_shuffle_v4f32_v2f32__u_u_u_u() {3129; GFX9-LABEL: s_shuffle_v4f32_v2f32__u_u_u_u:3130; GFX9:       ; %bb.0:3131; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3132; GFX9-NEXT:    ;;#ASMSTART3133; GFX9-NEXT:    ; use s[8:11]3134; GFX9-NEXT:    ;;#ASMEND3135; GFX9-NEXT:    s_setpc_b64 s[30:31]3136  %vec0 = call <2 x float> asm "; def $0", "=s"()3137  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> poison3138  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)3139  ret void3140}3141 3142define void @s_shuffle_v4f32_v2f32__0_u_u_u() {3143; GFX900-LABEL: s_shuffle_v4f32_v2f32__0_u_u_u:3144; GFX900:       ; %bb.0:3145; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3146; GFX900-NEXT:    ;;#ASMSTART3147; GFX900-NEXT:    ; def s[8:9]3148; GFX900-NEXT:    ;;#ASMEND3149; GFX900-NEXT:    ;;#ASMSTART3150; GFX900-NEXT:    ; use s[8:11]3151; GFX900-NEXT:    ;;#ASMEND3152; GFX900-NEXT:    s_setpc_b64 s[30:31]3153;3154; GFX90A-LABEL: s_shuffle_v4f32_v2f32__0_u_u_u:3155; GFX90A:       ; %bb.0:3156; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3157; GFX90A-NEXT:    ;;#ASMSTART3158; GFX90A-NEXT:    ; def s[8:9]3159; GFX90A-NEXT:    ;;#ASMEND3160; GFX90A-NEXT:    ;;#ASMSTART3161; GFX90A-NEXT:    ; use s[8:11]3162; GFX90A-NEXT:    ;;#ASMEND3163; GFX90A-NEXT:    s_setpc_b64 s[30:31]3164;3165; GFX942-LABEL: s_shuffle_v4f32_v2f32__0_u_u_u:3166; GFX942:       ; %bb.0:3167; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3168; GFX942-NEXT:    ;;#ASMSTART3169; GFX942-NEXT:    ; def s[8:9]3170; GFX942-NEXT:    ;;#ASMEND3171; GFX942-NEXT:    s_nop 03172; GFX942-NEXT:    ;;#ASMSTART3173; GFX942-NEXT:    ; use s[8:11]3174; GFX942-NEXT:    ;;#ASMEND3175; GFX942-NEXT:    s_setpc_b64 s[30:31]3176  %vec0 = call <2 x float> asm "; def $0", "=s"()3177  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>3178  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)3179  ret void3180}3181 3182define void @s_shuffle_v4f32_v2f32__1_u_u_u() {3183; GFX900-LABEL: s_shuffle_v4f32_v2f32__1_u_u_u:3184; GFX900:       ; %bb.0:3185; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3186; GFX900-NEXT:    ;;#ASMSTART3187; GFX900-NEXT:    ; def s[4:5]3188; GFX900-NEXT:    ;;#ASMEND3189; GFX900-NEXT:    s_mov_b32 s8, s53190; GFX900-NEXT:    ;;#ASMSTART3191; GFX900-NEXT:    ; use s[8:11]3192; GFX900-NEXT:    ;;#ASMEND3193; GFX900-NEXT:    s_setpc_b64 s[30:31]3194;3195; GFX90A-LABEL: s_shuffle_v4f32_v2f32__1_u_u_u:3196; GFX90A:       ; %bb.0:3197; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3198; GFX90A-NEXT:    ;;#ASMSTART3199; GFX90A-NEXT:    ; def s[4:5]3200; GFX90A-NEXT:    ;;#ASMEND3201; GFX90A-NEXT:    s_mov_b32 s8, s53202; GFX90A-NEXT:    ;;#ASMSTART3203; GFX90A-NEXT:    ; use s[8:11]3204; GFX90A-NEXT:    ;;#ASMEND3205; GFX90A-NEXT:    s_setpc_b64 s[30:31]3206;3207; GFX942-LABEL: s_shuffle_v4f32_v2f32__1_u_u_u:3208; GFX942:       ; %bb.0:3209; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3210; GFX942-NEXT:    ;;#ASMSTART3211; GFX942-NEXT:    ; def s[0:1]3212; GFX942-NEXT:    ;;#ASMEND3213; GFX942-NEXT:    s_mov_b32 s8, s13214; GFX942-NEXT:    ;;#ASMSTART3215; GFX942-NEXT:    ; use s[8:11]3216; GFX942-NEXT:    ;;#ASMEND3217; GFX942-NEXT:    s_setpc_b64 s[30:31]3218  %vec0 = call <2 x float> asm "; def $0", "=s"()3219  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>3220  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)3221  ret void3222}3223 3224define void @s_shuffle_v4f32_v2f32__2_u_u_u() {3225; GFX9-LABEL: s_shuffle_v4f32_v2f32__2_u_u_u:3226; GFX9:       ; %bb.0:3227; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3228; GFX9-NEXT:    ;;#ASMSTART3229; GFX9-NEXT:    ; use s[8:11]3230; GFX9-NEXT:    ;;#ASMEND3231; GFX9-NEXT:    s_setpc_b64 s[30:31]3232  %vec0 = call <2 x float> asm "; def $0", "=s"()3233  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison>3234  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)3235  ret void3236}3237 3238define void @s_shuffle_v4f32_v2f32__3_u_u_u() {3239; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_u_u_u:3240; GFX900:       ; %bb.0:3241; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3242; GFX900-NEXT:    ;;#ASMSTART3243; GFX900-NEXT:    ; def s[4:5]3244; GFX900-NEXT:    ;;#ASMEND3245; GFX900-NEXT:    s_mov_b32 s8, s53246; GFX900-NEXT:    ;;#ASMSTART3247; GFX900-NEXT:    ; use s[8:11]3248; GFX900-NEXT:    ;;#ASMEND3249; GFX900-NEXT:    s_setpc_b64 s[30:31]3250;3251; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_u_u_u:3252; GFX90A:       ; %bb.0:3253; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3254; GFX90A-NEXT:    ;;#ASMSTART3255; GFX90A-NEXT:    ; def s[4:5]3256; GFX90A-NEXT:    ;;#ASMEND3257; GFX90A-NEXT:    s_mov_b32 s8, s53258; GFX90A-NEXT:    ;;#ASMSTART3259; GFX90A-NEXT:    ; use s[8:11]3260; GFX90A-NEXT:    ;;#ASMEND3261; GFX90A-NEXT:    s_setpc_b64 s[30:31]3262;3263; GFX942-LABEL: s_shuffle_v4f32_v2f32__3_u_u_u:3264; GFX942:       ; %bb.0:3265; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3266; GFX942-NEXT:    ;;#ASMSTART3267; GFX942-NEXT:    ; def s[0:1]3268; GFX942-NEXT:    ;;#ASMEND3269; GFX942-NEXT:    s_mov_b32 s8, s13270; GFX942-NEXT:    ;;#ASMSTART3271; GFX942-NEXT:    ; use s[8:11]3272; GFX942-NEXT:    ;;#ASMEND3273; GFX942-NEXT:    s_setpc_b64 s[30:31]3274  %vec0 = call <2 x float> asm "; def $0", "=s"()3275  %vec1 = call <2 x float> asm "; def $0", "=s"()3276  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison>3277  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)3278  ret void3279}3280 3281define void @s_shuffle_v4f32_v2f32__3_0_u_u() {3282; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_0_u_u:3283; GFX900:       ; %bb.0:3284; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3285; GFX900-NEXT:    ;;#ASMSTART3286; GFX900-NEXT:    ; def s[4:5]3287; GFX900-NEXT:    ;;#ASMEND3288; GFX900-NEXT:    ;;#ASMSTART3289; GFX900-NEXT:    ; def s[6:7]3290; GFX900-NEXT:    ;;#ASMEND3291; GFX900-NEXT:    s_mov_b32 s8, s73292; GFX900-NEXT:    s_mov_b32 s9, s43293; GFX900-NEXT:    ;;#ASMSTART3294; GFX900-NEXT:    ; use s[8:11]3295; GFX900-NEXT:    ;;#ASMEND3296; GFX900-NEXT:    s_setpc_b64 s[30:31]3297;3298; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_0_u_u:3299; GFX90A:       ; %bb.0:3300; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3301; GFX90A-NEXT:    ;;#ASMSTART3302; GFX90A-NEXT:    ; def s[4:5]3303; GFX90A-NEXT:    ;;#ASMEND3304; GFX90A-NEXT:    ;;#ASMSTART3305; GFX90A-NEXT:    ; def s[6:7]3306; GFX90A-NEXT:    ;;#ASMEND3307; GFX90A-NEXT:    s_mov_b32 s8, s73308; GFX90A-NEXT:    s_mov_b32 s9, s43309; GFX90A-NEXT:    ;;#ASMSTART3310; GFX90A-NEXT:    ; use s[8:11]3311; GFX90A-NEXT:    ;;#ASMEND3312; GFX90A-NEXT:    s_setpc_b64 s[30:31]3313;3314; GFX942-LABEL: s_shuffle_v4f32_v2f32__3_0_u_u:3315; GFX942:       ; %bb.0:3316; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3317; GFX942-NEXT:    ;;#ASMSTART3318; GFX942-NEXT:    ; def s[0:1]3319; GFX942-NEXT:    ;;#ASMEND3320; GFX942-NEXT:    ;;#ASMSTART3321; GFX942-NEXT:    ; def s[2:3]3322; GFX942-NEXT:    ;;#ASMEND3323; GFX942-NEXT:    s_mov_b32 s8, s33324; GFX942-NEXT:    s_mov_b32 s9, s03325; GFX942-NEXT:    ;;#ASMSTART3326; GFX942-NEXT:    ; use s[8:11]3327; GFX942-NEXT:    ;;#ASMEND3328; GFX942-NEXT:    s_setpc_b64 s[30:31]3329  %vec0 = call <2 x float> asm "; def $0", "=s"()3330  %vec1 = call <2 x float> asm "; def $0", "=s"()3331  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 0, i32 poison, i32 poison>3332  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)3333  ret void3334}3335 3336define void @s_shuffle_v4f32_v2f32__3_1_u_u() {3337; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_1_u_u:3338; GFX900:       ; %bb.0:3339; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3340; GFX900-NEXT:    ;;#ASMSTART3341; GFX900-NEXT:    ; def s[8:9]3342; GFX900-NEXT:    ;;#ASMEND3343; GFX900-NEXT:    ;;#ASMSTART3344; GFX900-NEXT:    ; def s[4:5]3345; GFX900-NEXT:    ;;#ASMEND3346; GFX900-NEXT:    s_mov_b32 s8, s53347; GFX900-NEXT:    ;;#ASMSTART3348; GFX900-NEXT:    ; use s[8:11]3349; GFX900-NEXT:    ;;#ASMEND3350; GFX900-NEXT:    s_setpc_b64 s[30:31]3351;3352; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_1_u_u:3353; GFX90A:       ; %bb.0:3354; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3355; GFX90A-NEXT:    ;;#ASMSTART3356; GFX90A-NEXT:    ; def s[8:9]3357; GFX90A-NEXT:    ;;#ASMEND3358; GFX90A-NEXT:    ;;#ASMSTART3359; GFX90A-NEXT:    ; def s[4:5]3360; GFX90A-NEXT:    ;;#ASMEND3361; GFX90A-NEXT:    s_mov_b32 s8, s53362; GFX90A-NEXT:    ;;#ASMSTART3363; GFX90A-NEXT:    ; use s[8:11]3364; GFX90A-NEXT:    ;;#ASMEND3365; GFX90A-NEXT:    s_setpc_b64 s[30:31]3366;3367; GFX942-LABEL: s_shuffle_v4f32_v2f32__3_1_u_u:3368; GFX942:       ; %bb.0:3369; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3370; GFX942-NEXT:    ;;#ASMSTART3371; GFX942-NEXT:    ; def s[8:9]3372; GFX942-NEXT:    ;;#ASMEND3373; GFX942-NEXT:    ;;#ASMSTART3374; GFX942-NEXT:    ; def s[0:1]3375; GFX942-NEXT:    ;;#ASMEND3376; GFX942-NEXT:    s_mov_b32 s8, s13377; GFX942-NEXT:    ;;#ASMSTART3378; GFX942-NEXT:    ; use s[8:11]3379; GFX942-NEXT:    ;;#ASMEND3380; GFX942-NEXT:    s_setpc_b64 s[30:31]3381  %vec0 = call <2 x float> asm "; def $0", "=s"()3382  %vec1 = call <2 x float> asm "; def $0", "=s"()3383  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 1, i32 poison, i32 poison>3384  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)3385  ret void3386}3387 3388define void @s_shuffle_v4f32_v2f32__3_2_u_u() {3389; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_2_u_u:3390; GFX900:       ; %bb.0:3391; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3392; GFX900-NEXT:    ;;#ASMSTART3393; GFX900-NEXT:    ; def s[4:5]3394; GFX900-NEXT:    ;;#ASMEND3395; GFX900-NEXT:    s_mov_b32 s8, s53396; GFX900-NEXT:    s_mov_b32 s9, s43397; GFX900-NEXT:    ;;#ASMSTART3398; GFX900-NEXT:    ; use s[8:11]3399; GFX900-NEXT:    ;;#ASMEND3400; GFX900-NEXT:    s_setpc_b64 s[30:31]3401;3402; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_2_u_u:3403; GFX90A:       ; %bb.0:3404; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3405; GFX90A-NEXT:    ;;#ASMSTART3406; GFX90A-NEXT:    ; def s[4:5]3407; GFX90A-NEXT:    ;;#ASMEND3408; GFX90A-NEXT:    s_mov_b32 s8, s53409; GFX90A-NEXT:    s_mov_b32 s9, s43410; GFX90A-NEXT:    ;;#ASMSTART3411; GFX90A-NEXT:    ; use s[8:11]3412; GFX90A-NEXT:    ;;#ASMEND3413; GFX90A-NEXT:    s_setpc_b64 s[30:31]3414;3415; GFX942-LABEL: s_shuffle_v4f32_v2f32__3_2_u_u:3416; GFX942:       ; %bb.0:3417; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3418; GFX942-NEXT:    ;;#ASMSTART3419; GFX942-NEXT:    ; def s[0:1]3420; GFX942-NEXT:    ;;#ASMEND3421; GFX942-NEXT:    s_mov_b32 s8, s13422; GFX942-NEXT:    s_mov_b32 s9, s03423; GFX942-NEXT:    ;;#ASMSTART3424; GFX942-NEXT:    ; use s[8:11]3425; GFX942-NEXT:    ;;#ASMEND3426; GFX942-NEXT:    s_setpc_b64 s[30:31]3427  %vec0 = call <2 x float> asm "; def $0", "=s"()3428  %vec1 = call <2 x float> asm "; def $0", "=s"()3429  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 2, i32 poison, i32 poison>3430  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)3431  ret void3432}3433 3434define void @s_shuffle_v4f32_v2f32__3_3_u_u() {3435; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_u_u:3436; GFX9:       ; %bb.0:3437; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3438; GFX9-NEXT:    ;;#ASMSTART3439; GFX9-NEXT:    ; def s[8:9]3440; GFX9-NEXT:    ;;#ASMEND3441; GFX9-NEXT:    s_mov_b32 s8, s93442; GFX9-NEXT:    ;;#ASMSTART3443; GFX9-NEXT:    ; use s[8:11]3444; GFX9-NEXT:    ;;#ASMEND3445; GFX9-NEXT:    s_setpc_b64 s[30:31]3446  %vec0 = call <2 x float> asm "; def $0", "=s"()3447  %vec1 = call <2 x float> asm "; def $0", "=s"()3448  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 poison>3449  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)3450  ret void3451}3452 3453define void @s_shuffle_v4f32_v2f32__3_3_0_u() {3454; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_0_u:3455; GFX9:       ; %bb.0:3456; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3457; GFX9-NEXT:    ;;#ASMSTART3458; GFX9-NEXT:    ; def s[8:9]3459; GFX9-NEXT:    ;;#ASMEND3460; GFX9-NEXT:    ;;#ASMSTART3461; GFX9-NEXT:    ; def s[10:11]3462; GFX9-NEXT:    ;;#ASMEND3463; GFX9-NEXT:    s_mov_b32 s8, s93464; GFX9-NEXT:    ;;#ASMSTART3465; GFX9-NEXT:    ; use s[8:11]3466; GFX9-NEXT:    ;;#ASMEND3467; GFX9-NEXT:    s_setpc_b64 s[30:31]3468  %vec0 = call <2 x float> asm "; def $0", "=s"()3469  %vec1 = call <2 x float> asm "; def $0", "=s"()3470  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 poison>3471  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)3472  ret void3473}3474 3475define void @s_shuffle_v4f32_v2f32__3_3_1_u() {3476; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_1_u:3477; GFX900:       ; %bb.0:3478; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3479; GFX900-NEXT:    ;;#ASMSTART3480; GFX900-NEXT:    ; def s[8:9]3481; GFX900-NEXT:    ;;#ASMEND3482; GFX900-NEXT:    ;;#ASMSTART3483; GFX900-NEXT:    ; def s[4:5]3484; GFX900-NEXT:    ;;#ASMEND3485; GFX900-NEXT:    s_mov_b32 s8, s93486; GFX900-NEXT:    s_mov_b32 s10, s53487; GFX900-NEXT:    ;;#ASMSTART3488; GFX900-NEXT:    ; use s[8:11]3489; GFX900-NEXT:    ;;#ASMEND3490; GFX900-NEXT:    s_setpc_b64 s[30:31]3491;3492; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_1_u:3493; GFX90A:       ; %bb.0:3494; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3495; GFX90A-NEXT:    ;;#ASMSTART3496; GFX90A-NEXT:    ; def s[8:9]3497; GFX90A-NEXT:    ;;#ASMEND3498; GFX90A-NEXT:    ;;#ASMSTART3499; GFX90A-NEXT:    ; def s[4:5]3500; GFX90A-NEXT:    ;;#ASMEND3501; GFX90A-NEXT:    s_mov_b32 s8, s93502; GFX90A-NEXT:    s_mov_b32 s10, s53503; GFX90A-NEXT:    ;;#ASMSTART3504; GFX90A-NEXT:    ; use s[8:11]3505; GFX90A-NEXT:    ;;#ASMEND3506; GFX90A-NEXT:    s_setpc_b64 s[30:31]3507;3508; GFX942-LABEL: s_shuffle_v4f32_v2f32__3_3_1_u:3509; GFX942:       ; %bb.0:3510; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3511; GFX942-NEXT:    ;;#ASMSTART3512; GFX942-NEXT:    ; def s[8:9]3513; GFX942-NEXT:    ;;#ASMEND3514; GFX942-NEXT:    ;;#ASMSTART3515; GFX942-NEXT:    ; def s[0:1]3516; GFX942-NEXT:    ;;#ASMEND3517; GFX942-NEXT:    s_mov_b32 s8, s93518; GFX942-NEXT:    s_mov_b32 s10, s13519; GFX942-NEXT:    ;;#ASMSTART3520; GFX942-NEXT:    ; use s[8:11]3521; GFX942-NEXT:    ;;#ASMEND3522; GFX942-NEXT:    s_setpc_b64 s[30:31]3523  %vec0 = call <2 x float> asm "; def $0", "=s"()3524  %vec1 = call <2 x float> asm "; def $0", "=s"()3525  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 poison>3526  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)3527  ret void3528}3529 3530define void @s_shuffle_v4f32_v2f32__3_3_2_u() {3531; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_2_u:3532; GFX9:       ; %bb.0:3533; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3534; GFX9-NEXT:    ;;#ASMSTART3535; GFX9-NEXT:    ; def s[10:11]3536; GFX9-NEXT:    ;;#ASMEND3537; GFX9-NEXT:    s_mov_b32 s8, s113538; GFX9-NEXT:    s_mov_b32 s9, s113539; GFX9-NEXT:    ;;#ASMSTART3540; GFX9-NEXT:    ; use s[8:11]3541; GFX9-NEXT:    ;;#ASMEND3542; GFX9-NEXT:    s_setpc_b64 s[30:31]3543  %vec0 = call <2 x float> asm "; def $0", "=s"()3544  %vec1 = call <2 x float> asm "; def $0", "=s"()3545  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 poison>3546  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)3547  ret void3548}3549 3550define void @s_shuffle_v4f32_v2f32__3_3_3_u() {3551; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_3_u:3552; GFX9:       ; %bb.0:3553; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3554; GFX9-NEXT:    ;;#ASMSTART3555; GFX9-NEXT:    ; def s[8:9]3556; GFX9-NEXT:    ;;#ASMEND3557; GFX9-NEXT:    s_mov_b32 s8, s93558; GFX9-NEXT:    s_mov_b32 s10, s93559; GFX9-NEXT:    ;;#ASMSTART3560; GFX9-NEXT:    ; use s[8:11]3561; GFX9-NEXT:    ;;#ASMEND3562; GFX9-NEXT:    s_setpc_b64 s[30:31]3563  %vec0 = call <2 x float> asm "; def $0", "=s"()3564  %vec1 = call <2 x float> asm "; def $0", "=s"()3565  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 poison>3566  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)3567  ret void3568}3569 3570define void @s_shuffle_v4f32_v2f32__3_3_3_0() {3571; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_3_0:3572; GFX900:       ; %bb.0:3573; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3574; GFX900-NEXT:    ;;#ASMSTART3575; GFX900-NEXT:    ; def s[8:9]3576; GFX900-NEXT:    ;;#ASMEND3577; GFX900-NEXT:    ;;#ASMSTART3578; GFX900-NEXT:    ; def s[4:5]3579; GFX900-NEXT:    ;;#ASMEND3580; GFX900-NEXT:    s_mov_b32 s8, s93581; GFX900-NEXT:    s_mov_b32 s10, s93582; GFX900-NEXT:    s_mov_b32 s11, s43583; GFX900-NEXT:    ;;#ASMSTART3584; GFX900-NEXT:    ; use s[8:11]3585; GFX900-NEXT:    ;;#ASMEND3586; GFX900-NEXT:    s_setpc_b64 s[30:31]3587;3588; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_3_0:3589; GFX90A:       ; %bb.0:3590; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3591; GFX90A-NEXT:    ;;#ASMSTART3592; GFX90A-NEXT:    ; def s[8:9]3593; GFX90A-NEXT:    ;;#ASMEND3594; GFX90A-NEXT:    ;;#ASMSTART3595; GFX90A-NEXT:    ; def s[4:5]3596; GFX90A-NEXT:    ;;#ASMEND3597; GFX90A-NEXT:    s_mov_b32 s8, s93598; GFX90A-NEXT:    s_mov_b32 s10, s93599; GFX90A-NEXT:    s_mov_b32 s11, s43600; GFX90A-NEXT:    ;;#ASMSTART3601; GFX90A-NEXT:    ; use s[8:11]3602; GFX90A-NEXT:    ;;#ASMEND3603; GFX90A-NEXT:    s_setpc_b64 s[30:31]3604;3605; GFX942-LABEL: s_shuffle_v4f32_v2f32__3_3_3_0:3606; GFX942:       ; %bb.0:3607; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3608; GFX942-NEXT:    ;;#ASMSTART3609; GFX942-NEXT:    ; def s[8:9]3610; GFX942-NEXT:    ;;#ASMEND3611; GFX942-NEXT:    ;;#ASMSTART3612; GFX942-NEXT:    ; def s[0:1]3613; GFX942-NEXT:    ;;#ASMEND3614; GFX942-NEXT:    s_mov_b32 s8, s93615; GFX942-NEXT:    s_mov_b32 s10, s93616; GFX942-NEXT:    s_mov_b32 s11, s03617; GFX942-NEXT:    ;;#ASMSTART3618; GFX942-NEXT:    ; use s[8:11]3619; GFX942-NEXT:    ;;#ASMEND3620; GFX942-NEXT:    s_setpc_b64 s[30:31]3621  %vec0 = call <2 x float> asm "; def $0", "=s"()3622  %vec1 = call <2 x float> asm "; def $0", "=s"()3623  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 0>3624  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)3625  ret void3626}3627 3628define void @s_shuffle_v4f32_v2f32__3_3_3_1() {3629; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_3_1:3630; GFX9:       ; %bb.0:3631; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3632; GFX9-NEXT:    ;;#ASMSTART3633; GFX9-NEXT:    ; def s[10:11]3634; GFX9-NEXT:    ;;#ASMEND3635; GFX9-NEXT:    ;;#ASMSTART3636; GFX9-NEXT:    ; def s[8:9]3637; GFX9-NEXT:    ;;#ASMEND3638; GFX9-NEXT:    s_mov_b32 s8, s93639; GFX9-NEXT:    s_mov_b32 s10, s93640; GFX9-NEXT:    ;;#ASMSTART3641; GFX9-NEXT:    ; use s[8:11]3642; GFX9-NEXT:    ;;#ASMEND3643; GFX9-NEXT:    s_setpc_b64 s[30:31]3644  %vec0 = call <2 x float> asm "; def $0", "=s"()3645  %vec1 = call <2 x float> asm "; def $0", "=s"()3646  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 1>3647  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)3648  ret void3649}3650 3651define void @s_shuffle_v4f32_v2f32__3_3_3_2() {3652; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_3_2:3653; GFX900:       ; %bb.0:3654; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3655; GFX900-NEXT:    ;;#ASMSTART3656; GFX900-NEXT:    ; def s[4:5]3657; GFX900-NEXT:    ;;#ASMEND3658; GFX900-NEXT:    s_mov_b32 s8, s53659; GFX900-NEXT:    s_mov_b32 s9, s53660; GFX900-NEXT:    s_mov_b32 s10, s53661; GFX900-NEXT:    s_mov_b32 s11, s43662; GFX900-NEXT:    ;;#ASMSTART3663; GFX900-NEXT:    ; use s[8:11]3664; GFX900-NEXT:    ;;#ASMEND3665; GFX900-NEXT:    s_setpc_b64 s[30:31]3666;3667; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_3_2:3668; GFX90A:       ; %bb.0:3669; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3670; GFX90A-NEXT:    ;;#ASMSTART3671; GFX90A-NEXT:    ; def s[4:5]3672; GFX90A-NEXT:    ;;#ASMEND3673; GFX90A-NEXT:    s_mov_b32 s8, s53674; GFX90A-NEXT:    s_mov_b32 s9, s53675; GFX90A-NEXT:    s_mov_b32 s10, s53676; GFX90A-NEXT:    s_mov_b32 s11, s43677; GFX90A-NEXT:    ;;#ASMSTART3678; GFX90A-NEXT:    ; use s[8:11]3679; GFX90A-NEXT:    ;;#ASMEND3680; GFX90A-NEXT:    s_setpc_b64 s[30:31]3681;3682; GFX942-LABEL: s_shuffle_v4f32_v2f32__3_3_3_2:3683; GFX942:       ; %bb.0:3684; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3685; GFX942-NEXT:    ;;#ASMSTART3686; GFX942-NEXT:    ; def s[0:1]3687; GFX942-NEXT:    ;;#ASMEND3688; GFX942-NEXT:    s_mov_b32 s8, s13689; GFX942-NEXT:    s_mov_b32 s9, s13690; GFX942-NEXT:    s_mov_b32 s10, s13691; GFX942-NEXT:    s_mov_b32 s11, s03692; GFX942-NEXT:    ;;#ASMSTART3693; GFX942-NEXT:    ; use s[8:11]3694; GFX942-NEXT:    ;;#ASMEND3695; GFX942-NEXT:    s_setpc_b64 s[30:31]3696  %vec0 = call <2 x float> asm "; def $0", "=s"()3697  %vec1 = call <2 x float> asm "; def $0", "=s"()3698  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 2>3699  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)3700  ret void3701}3702 3703define void @s_shuffle_v4f32_v2f32__3_3_3_3() {3704; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_3_3:3705; GFX9:       ; %bb.0:3706; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3707; GFX9-NEXT:    ;;#ASMSTART3708; GFX9-NEXT:    ; def s[8:9]3709; GFX9-NEXT:    ;;#ASMEND3710; GFX9-NEXT:    s_mov_b32 s8, s93711; GFX9-NEXT:    s_mov_b32 s10, s93712; GFX9-NEXT:    s_mov_b32 s11, s93713; GFX9-NEXT:    ;;#ASMSTART3714; GFX9-NEXT:    ; use s[8:11]3715; GFX9-NEXT:    ;;#ASMEND3716; GFX9-NEXT:    s_setpc_b64 s[30:31]3717  %vec0 = call <2 x float> asm "; def $0", "=s"()3718  %vec1 = call <2 x float> asm "; def $0", "=s"()3719  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 3>3720  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)3721  ret void3722}3723 3724define void @s_shuffle_v4f32_v2f32__u_0_0_0() {3725; GFX9-LABEL: s_shuffle_v4f32_v2f32__u_0_0_0:3726; GFX9:       ; %bb.0:3727; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3728; GFX9-NEXT:    ;;#ASMSTART3729; GFX9-NEXT:    ; def s[10:11]3730; GFX9-NEXT:    ;;#ASMEND3731; GFX9-NEXT:    s_mov_b32 s9, s103732; GFX9-NEXT:    s_mov_b32 s11, s103733; GFX9-NEXT:    ;;#ASMSTART3734; GFX9-NEXT:    ; use s[8:11]3735; GFX9-NEXT:    ;;#ASMEND3736; GFX9-NEXT:    s_setpc_b64 s[30:31]3737  %vec0 = call <2 x float> asm "; def $0", "=s"()3738  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0>3739  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)3740  ret void3741}3742 3743define void @s_shuffle_v4f32_v2f32__0_0_0_0() {3744; GFX9-LABEL: s_shuffle_v4f32_v2f32__0_0_0_0:3745; GFX9:       ; %bb.0:3746; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3747; GFX9-NEXT:    ;;#ASMSTART3748; GFX9-NEXT:    ; def s[8:9]3749; GFX9-NEXT:    ;;#ASMEND3750; GFX9-NEXT:    s_mov_b32 s9, s83751; GFX9-NEXT:    s_mov_b32 s10, s83752; GFX9-NEXT:    s_mov_b32 s11, s83753; GFX9-NEXT:    ;;#ASMSTART3754; GFX9-NEXT:    ; use s[8:11]3755; GFX9-NEXT:    ;;#ASMEND3756; GFX9-NEXT:    s_setpc_b64 s[30:31]3757  %vec0 = call <2 x float> asm "; def $0", "=s"()3758  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> zeroinitializer3759  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)3760  ret void3761}3762 3763define void @s_shuffle_v4f32_v2f32__1_0_0_0() {3764; GFX9-LABEL: s_shuffle_v4f32_v2f32__1_0_0_0:3765; GFX9:       ; %bb.0:3766; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3767; GFX9-NEXT:    ;;#ASMSTART3768; GFX9-NEXT:    ; def s[10:11]3769; GFX9-NEXT:    ;;#ASMEND3770; GFX9-NEXT:    s_mov_b32 s8, s113771; GFX9-NEXT:    s_mov_b32 s9, s103772; GFX9-NEXT:    s_mov_b32 s11, s103773; GFX9-NEXT:    ;;#ASMSTART3774; GFX9-NEXT:    ; use s[8:11]3775; GFX9-NEXT:    ;;#ASMEND3776; GFX9-NEXT:    s_setpc_b64 s[30:31]3777  %vec0 = call <2 x float> asm "; def $0", "=s"()3778  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>3779  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)3780  ret void3781}3782 3783define void @s_shuffle_v4f32_v2f32__2_0_0_0() {3784; GFX9-LABEL: s_shuffle_v4f32_v2f32__2_0_0_0:3785; GFX9:       ; %bb.0:3786; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3787; GFX9-NEXT:    ;;#ASMSTART3788; GFX9-NEXT:    ; def s[10:11]3789; GFX9-NEXT:    ;;#ASMEND3790; GFX9-NEXT:    s_mov_b32 s9, s103791; GFX9-NEXT:    s_mov_b32 s11, s103792; GFX9-NEXT:    ;;#ASMSTART3793; GFX9-NEXT:    ; use s[8:11]3794; GFX9-NEXT:    ;;#ASMEND3795; GFX9-NEXT:    s_setpc_b64 s[30:31]3796  %vec0 = call <2 x float> asm "; def $0", "=s"()3797  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0>3798  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)3799  ret void3800}3801 3802define void @s_shuffle_v4f32_v2f32__3_0_0_0() {3803; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_0_0_0:3804; GFX900:       ; %bb.0:3805; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3806; GFX900-NEXT:    ;;#ASMSTART3807; GFX900-NEXT:    ; def s[10:11]3808; GFX900-NEXT:    ;;#ASMEND3809; GFX900-NEXT:    ;;#ASMSTART3810; GFX900-NEXT:    ; def s[4:5]3811; GFX900-NEXT:    ;;#ASMEND3812; GFX900-NEXT:    s_mov_b32 s8, s53813; GFX900-NEXT:    s_mov_b32 s9, s103814; GFX900-NEXT:    s_mov_b32 s11, s103815; GFX900-NEXT:    ;;#ASMSTART3816; GFX900-NEXT:    ; use s[8:11]3817; GFX900-NEXT:    ;;#ASMEND3818; GFX900-NEXT:    s_setpc_b64 s[30:31]3819;3820; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_0_0_0:3821; GFX90A:       ; %bb.0:3822; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3823; GFX90A-NEXT:    ;;#ASMSTART3824; GFX90A-NEXT:    ; def s[10:11]3825; GFX90A-NEXT:    ;;#ASMEND3826; GFX90A-NEXT:    ;;#ASMSTART3827; GFX90A-NEXT:    ; def s[4:5]3828; GFX90A-NEXT:    ;;#ASMEND3829; GFX90A-NEXT:    s_mov_b32 s8, s53830; GFX90A-NEXT:    s_mov_b32 s9, s103831; GFX90A-NEXT:    s_mov_b32 s11, s103832; GFX90A-NEXT:    ;;#ASMSTART3833; GFX90A-NEXT:    ; use s[8:11]3834; GFX90A-NEXT:    ;;#ASMEND3835; GFX90A-NEXT:    s_setpc_b64 s[30:31]3836;3837; GFX942-LABEL: s_shuffle_v4f32_v2f32__3_0_0_0:3838; GFX942:       ; %bb.0:3839; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3840; GFX942-NEXT:    ;;#ASMSTART3841; GFX942-NEXT:    ; def s[10:11]3842; GFX942-NEXT:    ;;#ASMEND3843; GFX942-NEXT:    ;;#ASMSTART3844; GFX942-NEXT:    ; def s[0:1]3845; GFX942-NEXT:    ;;#ASMEND3846; GFX942-NEXT:    s_mov_b32 s8, s13847; GFX942-NEXT:    s_mov_b32 s9, s103848; GFX942-NEXT:    s_mov_b32 s11, s103849; GFX942-NEXT:    ;;#ASMSTART3850; GFX942-NEXT:    ; use s[8:11]3851; GFX942-NEXT:    ;;#ASMEND3852; GFX942-NEXT:    s_setpc_b64 s[30:31]3853  %vec0 = call <2 x float> asm "; def $0", "=s"()3854  %vec1 = call <2 x float> asm "; def $0", "=s"()3855  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 0, i32 0, i32 0>3856  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)3857  ret void3858}3859 3860define void @s_shuffle_v4f32_v2f32__3_u_0_0() {3861; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_u_0_0:3862; GFX900:       ; %bb.0:3863; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3864; GFX900-NEXT:    ;;#ASMSTART3865; GFX900-NEXT:    ; def s[10:11]3866; GFX900-NEXT:    ;;#ASMEND3867; GFX900-NEXT:    ;;#ASMSTART3868; GFX900-NEXT:    ; def s[4:5]3869; GFX900-NEXT:    ;;#ASMEND3870; GFX900-NEXT:    s_mov_b32 s8, s53871; GFX900-NEXT:    s_mov_b32 s11, s103872; GFX900-NEXT:    ;;#ASMSTART3873; GFX900-NEXT:    ; use s[8:11]3874; GFX900-NEXT:    ;;#ASMEND3875; GFX900-NEXT:    s_setpc_b64 s[30:31]3876;3877; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_u_0_0:3878; GFX90A:       ; %bb.0:3879; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3880; GFX90A-NEXT:    ;;#ASMSTART3881; GFX90A-NEXT:    ; def s[10:11]3882; GFX90A-NEXT:    ;;#ASMEND3883; GFX90A-NEXT:    ;;#ASMSTART3884; GFX90A-NEXT:    ; def s[4:5]3885; GFX90A-NEXT:    ;;#ASMEND3886; GFX90A-NEXT:    s_mov_b32 s8, s53887; GFX90A-NEXT:    s_mov_b32 s11, s103888; GFX90A-NEXT:    ;;#ASMSTART3889; GFX90A-NEXT:    ; use s[8:11]3890; GFX90A-NEXT:    ;;#ASMEND3891; GFX90A-NEXT:    s_setpc_b64 s[30:31]3892;3893; GFX942-LABEL: s_shuffle_v4f32_v2f32__3_u_0_0:3894; GFX942:       ; %bb.0:3895; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3896; GFX942-NEXT:    ;;#ASMSTART3897; GFX942-NEXT:    ; def s[10:11]3898; GFX942-NEXT:    ;;#ASMEND3899; GFX942-NEXT:    ;;#ASMSTART3900; GFX942-NEXT:    ; def s[0:1]3901; GFX942-NEXT:    ;;#ASMEND3902; GFX942-NEXT:    s_mov_b32 s8, s13903; GFX942-NEXT:    s_mov_b32 s11, s103904; GFX942-NEXT:    ;;#ASMSTART3905; GFX942-NEXT:    ; use s[8:11]3906; GFX942-NEXT:    ;;#ASMEND3907; GFX942-NEXT:    s_setpc_b64 s[30:31]3908  %vec0 = call <2 x float> asm "; def $0", "=s"()3909  %vec1 = call <2 x float> asm "; def $0", "=s"()3910  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 poison, i32 0, i32 0>3911  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)3912  ret void3913}3914 3915define void @s_shuffle_v4f32_v2f32__3_1_0_0() {3916; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_1_0_0:3917; GFX900:       ; %bb.0:3918; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3919; GFX900-NEXT:    ;;#ASMSTART3920; GFX900-NEXT:    ; def s[10:11]3921; GFX900-NEXT:    ;;#ASMEND3922; GFX900-NEXT:    ;;#ASMSTART3923; GFX900-NEXT:    ; def s[4:5]3924; GFX900-NEXT:    ;;#ASMEND3925; GFX900-NEXT:    s_mov_b32 s8, s53926; GFX900-NEXT:    s_mov_b32 s9, s113927; GFX900-NEXT:    s_mov_b32 s11, s103928; GFX900-NEXT:    ;;#ASMSTART3929; GFX900-NEXT:    ; use s[8:11]3930; GFX900-NEXT:    ;;#ASMEND3931; GFX900-NEXT:    s_setpc_b64 s[30:31]3932;3933; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_1_0_0:3934; GFX90A:       ; %bb.0:3935; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3936; GFX90A-NEXT:    ;;#ASMSTART3937; GFX90A-NEXT:    ; def s[10:11]3938; GFX90A-NEXT:    ;;#ASMEND3939; GFX90A-NEXT:    ;;#ASMSTART3940; GFX90A-NEXT:    ; def s[4:5]3941; GFX90A-NEXT:    ;;#ASMEND3942; GFX90A-NEXT:    s_mov_b32 s8, s53943; GFX90A-NEXT:    s_mov_b32 s9, s113944; GFX90A-NEXT:    s_mov_b32 s11, s103945; GFX90A-NEXT:    ;;#ASMSTART3946; GFX90A-NEXT:    ; use s[8:11]3947; GFX90A-NEXT:    ;;#ASMEND3948; GFX90A-NEXT:    s_setpc_b64 s[30:31]3949;3950; GFX942-LABEL: s_shuffle_v4f32_v2f32__3_1_0_0:3951; GFX942:       ; %bb.0:3952; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3953; GFX942-NEXT:    ;;#ASMSTART3954; GFX942-NEXT:    ; def s[10:11]3955; GFX942-NEXT:    ;;#ASMEND3956; GFX942-NEXT:    ;;#ASMSTART3957; GFX942-NEXT:    ; def s[0:1]3958; GFX942-NEXT:    ;;#ASMEND3959; GFX942-NEXT:    s_mov_b32 s8, s13960; GFX942-NEXT:    s_mov_b32 s9, s113961; GFX942-NEXT:    s_mov_b32 s11, s103962; GFX942-NEXT:    ;;#ASMSTART3963; GFX942-NEXT:    ; use s[8:11]3964; GFX942-NEXT:    ;;#ASMEND3965; GFX942-NEXT:    s_setpc_b64 s[30:31]3966  %vec0 = call <2 x float> asm "; def $0", "=s"()3967  %vec1 = call <2 x float> asm "; def $0", "=s"()3968  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 1, i32 0, i32 0>3969  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)3970  ret void3971}3972 3973define void @s_shuffle_v4f32_v2f32__3_2_0_0() {3974; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_2_0_0:3975; GFX900:       ; %bb.0:3976; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3977; GFX900-NEXT:    ;;#ASMSTART3978; GFX900-NEXT:    ; def s[10:11]3979; GFX900-NEXT:    ;;#ASMEND3980; GFX900-NEXT:    ;;#ASMSTART3981; GFX900-NEXT:    ; def s[4:5]3982; GFX900-NEXT:    ;;#ASMEND3983; GFX900-NEXT:    s_mov_b32 s8, s53984; GFX900-NEXT:    s_mov_b32 s9, s43985; GFX900-NEXT:    s_mov_b32 s11, s103986; GFX900-NEXT:    ;;#ASMSTART3987; GFX900-NEXT:    ; use s[8:11]3988; GFX900-NEXT:    ;;#ASMEND3989; GFX900-NEXT:    s_setpc_b64 s[30:31]3990;3991; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_2_0_0:3992; GFX90A:       ; %bb.0:3993; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3994; GFX90A-NEXT:    ;;#ASMSTART3995; GFX90A-NEXT:    ; def s[10:11]3996; GFX90A-NEXT:    ;;#ASMEND3997; GFX90A-NEXT:    ;;#ASMSTART3998; GFX90A-NEXT:    ; def s[4:5]3999; GFX90A-NEXT:    ;;#ASMEND4000; GFX90A-NEXT:    s_mov_b32 s8, s54001; GFX90A-NEXT:    s_mov_b32 s9, s44002; GFX90A-NEXT:    s_mov_b32 s11, s104003; GFX90A-NEXT:    ;;#ASMSTART4004; GFX90A-NEXT:    ; use s[8:11]4005; GFX90A-NEXT:    ;;#ASMEND4006; GFX90A-NEXT:    s_setpc_b64 s[30:31]4007;4008; GFX942-LABEL: s_shuffle_v4f32_v2f32__3_2_0_0:4009; GFX942:       ; %bb.0:4010; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4011; GFX942-NEXT:    ;;#ASMSTART4012; GFX942-NEXT:    ; def s[10:11]4013; GFX942-NEXT:    ;;#ASMEND4014; GFX942-NEXT:    ;;#ASMSTART4015; GFX942-NEXT:    ; def s[0:1]4016; GFX942-NEXT:    ;;#ASMEND4017; GFX942-NEXT:    s_mov_b32 s8, s14018; GFX942-NEXT:    s_mov_b32 s9, s04019; GFX942-NEXT:    s_mov_b32 s11, s104020; GFX942-NEXT:    ;;#ASMSTART4021; GFX942-NEXT:    ; use s[8:11]4022; GFX942-NEXT:    ;;#ASMEND4023; GFX942-NEXT:    s_setpc_b64 s[30:31]4024  %vec0 = call <2 x float> asm "; def $0", "=s"()4025  %vec1 = call <2 x float> asm "; def $0", "=s"()4026  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 2, i32 0, i32 0>4027  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)4028  ret void4029}4030 4031define void @s_shuffle_v4f32_v2f32__3_3_0_0() {4032; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_0_0:4033; GFX9:       ; %bb.0:4034; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4035; GFX9-NEXT:    ;;#ASMSTART4036; GFX9-NEXT:    ; def s[10:11]4037; GFX9-NEXT:    ;;#ASMEND4038; GFX9-NEXT:    ;;#ASMSTART4039; GFX9-NEXT:    ; def s[8:9]4040; GFX9-NEXT:    ;;#ASMEND4041; GFX9-NEXT:    s_mov_b32 s8, s94042; GFX9-NEXT:    s_mov_b32 s11, s104043; GFX9-NEXT:    ;;#ASMSTART4044; GFX9-NEXT:    ; use s[8:11]4045; GFX9-NEXT:    ;;#ASMEND4046; GFX9-NEXT:    s_setpc_b64 s[30:31]4047  %vec0 = call <2 x float> asm "; def $0", "=s"()4048  %vec1 = call <2 x float> asm "; def $0", "=s"()4049  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 0>4050  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)4051  ret void4052}4053 4054define void @s_shuffle_v4f32_v2f32__3_3_u_0() {4055; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_u_0:4056; GFX900:       ; %bb.0:4057; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4058; GFX900-NEXT:    ;;#ASMSTART4059; GFX900-NEXT:    ; def s[8:9]4060; GFX900-NEXT:    ;;#ASMEND4061; GFX900-NEXT:    ;;#ASMSTART4062; GFX900-NEXT:    ; def s[4:5]4063; GFX900-NEXT:    ;;#ASMEND4064; GFX900-NEXT:    s_mov_b32 s8, s94065; GFX900-NEXT:    s_mov_b32 s11, s44066; GFX900-NEXT:    ;;#ASMSTART4067; GFX900-NEXT:    ; use s[8:11]4068; GFX900-NEXT:    ;;#ASMEND4069; GFX900-NEXT:    s_setpc_b64 s[30:31]4070;4071; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_u_0:4072; GFX90A:       ; %bb.0:4073; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4074; GFX90A-NEXT:    ;;#ASMSTART4075; GFX90A-NEXT:    ; def s[8:9]4076; GFX90A-NEXT:    ;;#ASMEND4077; GFX90A-NEXT:    ;;#ASMSTART4078; GFX90A-NEXT:    ; def s[4:5]4079; GFX90A-NEXT:    ;;#ASMEND4080; GFX90A-NEXT:    s_mov_b32 s8, s94081; GFX90A-NEXT:    s_mov_b32 s11, s44082; GFX90A-NEXT:    ;;#ASMSTART4083; GFX90A-NEXT:    ; use s[8:11]4084; GFX90A-NEXT:    ;;#ASMEND4085; GFX90A-NEXT:    s_setpc_b64 s[30:31]4086;4087; GFX942-LABEL: s_shuffle_v4f32_v2f32__3_3_u_0:4088; GFX942:       ; %bb.0:4089; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4090; GFX942-NEXT:    ;;#ASMSTART4091; GFX942-NEXT:    ; def s[8:9]4092; GFX942-NEXT:    ;;#ASMEND4093; GFX942-NEXT:    ;;#ASMSTART4094; GFX942-NEXT:    ; def s[0:1]4095; GFX942-NEXT:    ;;#ASMEND4096; GFX942-NEXT:    s_mov_b32 s8, s94097; GFX942-NEXT:    s_mov_b32 s11, s04098; GFX942-NEXT:    ;;#ASMSTART4099; GFX942-NEXT:    ; use s[8:11]4100; GFX942-NEXT:    ;;#ASMEND4101; GFX942-NEXT:    s_setpc_b64 s[30:31]4102  %vec0 = call <2 x float> asm "; def $0", "=s"()4103  %vec1 = call <2 x float> asm "; def $0", "=s"()4104  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 0>4105  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)4106  ret void4107}4108 4109define void @s_shuffle_v4f32_v2f32__3_3_1_0() {4110; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_1_0:4111; GFX900:       ; %bb.0:4112; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4113; GFX900-NEXT:    ;;#ASMSTART4114; GFX900-NEXT:    ; def s[8:9]4115; GFX900-NEXT:    ;;#ASMEND4116; GFX900-NEXT:    ;;#ASMSTART4117; GFX900-NEXT:    ; def s[4:5]4118; GFX900-NEXT:    ;;#ASMEND4119; GFX900-NEXT:    s_mov_b32 s8, s94120; GFX900-NEXT:    s_mov_b32 s10, s54121; GFX900-NEXT:    s_mov_b32 s11, s44122; GFX900-NEXT:    ;;#ASMSTART4123; GFX900-NEXT:    ; use s[8:11]4124; GFX900-NEXT:    ;;#ASMEND4125; GFX900-NEXT:    s_setpc_b64 s[30:31]4126;4127; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_1_0:4128; GFX90A:       ; %bb.0:4129; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4130; GFX90A-NEXT:    ;;#ASMSTART4131; GFX90A-NEXT:    ; def s[8:9]4132; GFX90A-NEXT:    ;;#ASMEND4133; GFX90A-NEXT:    ;;#ASMSTART4134; GFX90A-NEXT:    ; def s[4:5]4135; GFX90A-NEXT:    ;;#ASMEND4136; GFX90A-NEXT:    s_mov_b32 s8, s94137; GFX90A-NEXT:    s_mov_b32 s10, s54138; GFX90A-NEXT:    s_mov_b32 s11, s44139; GFX90A-NEXT:    ;;#ASMSTART4140; GFX90A-NEXT:    ; use s[8:11]4141; GFX90A-NEXT:    ;;#ASMEND4142; GFX90A-NEXT:    s_setpc_b64 s[30:31]4143;4144; GFX942-LABEL: s_shuffle_v4f32_v2f32__3_3_1_0:4145; GFX942:       ; %bb.0:4146; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4147; GFX942-NEXT:    ;;#ASMSTART4148; GFX942-NEXT:    ; def s[8:9]4149; GFX942-NEXT:    ;;#ASMEND4150; GFX942-NEXT:    ;;#ASMSTART4151; GFX942-NEXT:    ; def s[0:1]4152; GFX942-NEXT:    ;;#ASMEND4153; GFX942-NEXT:    s_mov_b32 s8, s94154; GFX942-NEXT:    s_mov_b32 s10, s14155; GFX942-NEXT:    s_mov_b32 s11, s04156; GFX942-NEXT:    ;;#ASMSTART4157; GFX942-NEXT:    ; use s[8:11]4158; GFX942-NEXT:    ;;#ASMEND4159; GFX942-NEXT:    s_setpc_b64 s[30:31]4160  %vec0 = call <2 x float> asm "; def $0", "=s"()4161  %vec1 = call <2 x float> asm "; def $0", "=s"()4162  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 0>4163  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)4164  ret void4165}4166 4167define void @s_shuffle_v4f32_v2f32__3_3_2_0() {4168; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_2_0:4169; GFX900:       ; %bb.0:4170; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4171; GFX900-NEXT:    ;;#ASMSTART4172; GFX900-NEXT:    ; def s[10:11]4173; GFX900-NEXT:    ;;#ASMEND4174; GFX900-NEXT:    ;;#ASMSTART4175; GFX900-NEXT:    ; def s[4:5]4176; GFX900-NEXT:    ;;#ASMEND4177; GFX900-NEXT:    s_mov_b32 s8, s114178; GFX900-NEXT:    s_mov_b32 s9, s114179; GFX900-NEXT:    s_mov_b32 s11, s44180; GFX900-NEXT:    ;;#ASMSTART4181; GFX900-NEXT:    ; use s[8:11]4182; GFX900-NEXT:    ;;#ASMEND4183; GFX900-NEXT:    s_setpc_b64 s[30:31]4184;4185; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_2_0:4186; GFX90A:       ; %bb.0:4187; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4188; GFX90A-NEXT:    ;;#ASMSTART4189; GFX90A-NEXT:    ; def s[10:11]4190; GFX90A-NEXT:    ;;#ASMEND4191; GFX90A-NEXT:    ;;#ASMSTART4192; GFX90A-NEXT:    ; def s[4:5]4193; GFX90A-NEXT:    ;;#ASMEND4194; GFX90A-NEXT:    s_mov_b32 s8, s114195; GFX90A-NEXT:    s_mov_b32 s9, s114196; GFX90A-NEXT:    s_mov_b32 s11, s44197; GFX90A-NEXT:    ;;#ASMSTART4198; GFX90A-NEXT:    ; use s[8:11]4199; GFX90A-NEXT:    ;;#ASMEND4200; GFX90A-NEXT:    s_setpc_b64 s[30:31]4201;4202; GFX942-LABEL: s_shuffle_v4f32_v2f32__3_3_2_0:4203; GFX942:       ; %bb.0:4204; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4205; GFX942-NEXT:    ;;#ASMSTART4206; GFX942-NEXT:    ; def s[10:11]4207; GFX942-NEXT:    ;;#ASMEND4208; GFX942-NEXT:    ;;#ASMSTART4209; GFX942-NEXT:    ; def s[0:1]4210; GFX942-NEXT:    ;;#ASMEND4211; GFX942-NEXT:    s_mov_b32 s8, s114212; GFX942-NEXT:    s_mov_b32 s9, s114213; GFX942-NEXT:    s_mov_b32 s11, s04214; GFX942-NEXT:    ;;#ASMSTART4215; GFX942-NEXT:    ; use s[8:11]4216; GFX942-NEXT:    ;;#ASMEND4217; GFX942-NEXT:    s_setpc_b64 s[30:31]4218  %vec0 = call <2 x float> asm "; def $0", "=s"()4219  %vec1 = call <2 x float> asm "; def $0", "=s"()4220  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 0>4221  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)4222  ret void4223}4224 4225define void @s_shuffle_v4f32_v2f32__u_1_1_1() {4226; GFX9-LABEL: s_shuffle_v4f32_v2f32__u_1_1_1:4227; GFX9:       ; %bb.0:4228; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4229; GFX9-NEXT:    ;;#ASMSTART4230; GFX9-NEXT:    ; def s[8:9]4231; GFX9-NEXT:    ;;#ASMEND4232; GFX9-NEXT:    s_mov_b32 s10, s94233; GFX9-NEXT:    s_mov_b32 s11, s94234; GFX9-NEXT:    ;;#ASMSTART4235; GFX9-NEXT:    ; use s[8:11]4236; GFX9-NEXT:    ;;#ASMEND4237; GFX9-NEXT:    s_setpc_b64 s[30:31]4238  %vec0 = call <2 x float> asm "; def $0", "=s"()4239  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1>4240  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)4241  ret void4242}4243 4244define void @s_shuffle_v4f32_v2f32__0_1_1_1() {4245; GFX9-LABEL: s_shuffle_v4f32_v2f32__0_1_1_1:4246; GFX9:       ; %bb.0:4247; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4248; GFX9-NEXT:    ;;#ASMSTART4249; GFX9-NEXT:    ; def s[8:9]4250; GFX9-NEXT:    ;;#ASMEND4251; GFX9-NEXT:    s_mov_b32 s10, s94252; GFX9-NEXT:    s_mov_b32 s11, s94253; GFX9-NEXT:    ;;#ASMSTART4254; GFX9-NEXT:    ; use s[8:11]4255; GFX9-NEXT:    ;;#ASMEND4256; GFX9-NEXT:    s_setpc_b64 s[30:31]4257  %vec0 = call <2 x float> asm "; def $0", "=s"()4258  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1>4259  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)4260  ret void4261}4262 4263define void @s_shuffle_v4f32_v2f32__1_1_1_1() {4264; GFX9-LABEL: s_shuffle_v4f32_v2f32__1_1_1_1:4265; GFX9:       ; %bb.0:4266; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4267; GFX9-NEXT:    ;;#ASMSTART4268; GFX9-NEXT:    ; def s[8:9]4269; GFX9-NEXT:    ;;#ASMEND4270; GFX9-NEXT:    s_mov_b32 s8, s94271; GFX9-NEXT:    s_mov_b32 s10, s94272; GFX9-NEXT:    s_mov_b32 s11, s94273; GFX9-NEXT:    ;;#ASMSTART4274; GFX9-NEXT:    ; use s[8:11]4275; GFX9-NEXT:    ;;#ASMEND4276; GFX9-NEXT:    s_setpc_b64 s[30:31]4277  %vec0 = call <2 x float> asm "; def $0", "=s"()4278  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>4279  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)4280  ret void4281}4282 4283define void @s_shuffle_v4f32_v2f32__2_1_1_1() {4284; GFX9-LABEL: s_shuffle_v4f32_v2f32__2_1_1_1:4285; GFX9:       ; %bb.0:4286; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4287; GFX9-NEXT:    ;;#ASMSTART4288; GFX9-NEXT:    ; def s[8:9]4289; GFX9-NEXT:    ;;#ASMEND4290; GFX9-NEXT:    s_mov_b32 s10, s94291; GFX9-NEXT:    s_mov_b32 s11, s94292; GFX9-NEXT:    ;;#ASMSTART4293; GFX9-NEXT:    ; use s[8:11]4294; GFX9-NEXT:    ;;#ASMEND4295; GFX9-NEXT:    s_setpc_b64 s[30:31]4296  %vec0 = call <2 x float> asm "; def $0", "=s"()4297  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1>4298  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)4299  ret void4300}4301 4302define void @s_shuffle_v4f32_v2f32__3_1_1_1() {4303; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_1_1_1:4304; GFX900:       ; %bb.0:4305; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4306; GFX900-NEXT:    ;;#ASMSTART4307; GFX900-NEXT:    ; def s[8:9]4308; GFX900-NEXT:    ;;#ASMEND4309; GFX900-NEXT:    ;;#ASMSTART4310; GFX900-NEXT:    ; def s[4:5]4311; GFX900-NEXT:    ;;#ASMEND4312; GFX900-NEXT:    s_mov_b32 s8, s54313; GFX900-NEXT:    s_mov_b32 s10, s94314; GFX900-NEXT:    s_mov_b32 s11, s94315; GFX900-NEXT:    ;;#ASMSTART4316; GFX900-NEXT:    ; use s[8:11]4317; GFX900-NEXT:    ;;#ASMEND4318; GFX900-NEXT:    s_setpc_b64 s[30:31]4319;4320; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_1_1_1:4321; GFX90A:       ; %bb.0:4322; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4323; GFX90A-NEXT:    ;;#ASMSTART4324; GFX90A-NEXT:    ; def s[8:9]4325; GFX90A-NEXT:    ;;#ASMEND4326; GFX90A-NEXT:    ;;#ASMSTART4327; GFX90A-NEXT:    ; def s[4:5]4328; GFX90A-NEXT:    ;;#ASMEND4329; GFX90A-NEXT:    s_mov_b32 s8, s54330; GFX90A-NEXT:    s_mov_b32 s10, s94331; GFX90A-NEXT:    s_mov_b32 s11, s94332; GFX90A-NEXT:    ;;#ASMSTART4333; GFX90A-NEXT:    ; use s[8:11]4334; GFX90A-NEXT:    ;;#ASMEND4335; GFX90A-NEXT:    s_setpc_b64 s[30:31]4336;4337; GFX942-LABEL: s_shuffle_v4f32_v2f32__3_1_1_1:4338; GFX942:       ; %bb.0:4339; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4340; GFX942-NEXT:    ;;#ASMSTART4341; GFX942-NEXT:    ; def s[8:9]4342; GFX942-NEXT:    ;;#ASMEND4343; GFX942-NEXT:    ;;#ASMSTART4344; GFX942-NEXT:    ; def s[0:1]4345; GFX942-NEXT:    ;;#ASMEND4346; GFX942-NEXT:    s_mov_b32 s8, s14347; GFX942-NEXT:    s_mov_b32 s10, s94348; GFX942-NEXT:    s_mov_b32 s11, s94349; GFX942-NEXT:    ;;#ASMSTART4350; GFX942-NEXT:    ; use s[8:11]4351; GFX942-NEXT:    ;;#ASMEND4352; GFX942-NEXT:    s_setpc_b64 s[30:31]4353  %vec0 = call <2 x float> asm "; def $0", "=s"()4354  %vec1 = call <2 x float> asm "; def $0", "=s"()4355  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 1, i32 1, i32 1>4356  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)4357  ret void4358}4359 4360define void @s_shuffle_v4f32_v2f32__3_u_1_1() {4361; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_u_1_1:4362; GFX900:       ; %bb.0:4363; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4364; GFX900-NEXT:    ;;#ASMSTART4365; GFX900-NEXT:    ; def s[10:11]4366; GFX900-NEXT:    ;;#ASMEND4367; GFX900-NEXT:    ;;#ASMSTART4368; GFX900-NEXT:    ; def s[4:5]4369; GFX900-NEXT:    ;;#ASMEND4370; GFX900-NEXT:    s_mov_b32 s8, s54371; GFX900-NEXT:    s_mov_b32 s10, s114372; GFX900-NEXT:    ;;#ASMSTART4373; GFX900-NEXT:    ; use s[8:11]4374; GFX900-NEXT:    ;;#ASMEND4375; GFX900-NEXT:    s_setpc_b64 s[30:31]4376;4377; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_u_1_1:4378; GFX90A:       ; %bb.0:4379; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4380; GFX90A-NEXT:    ;;#ASMSTART4381; GFX90A-NEXT:    ; def s[10:11]4382; GFX90A-NEXT:    ;;#ASMEND4383; GFX90A-NEXT:    ;;#ASMSTART4384; GFX90A-NEXT:    ; def s[4:5]4385; GFX90A-NEXT:    ;;#ASMEND4386; GFX90A-NEXT:    s_mov_b32 s8, s54387; GFX90A-NEXT:    s_mov_b32 s10, s114388; GFX90A-NEXT:    ;;#ASMSTART4389; GFX90A-NEXT:    ; use s[8:11]4390; GFX90A-NEXT:    ;;#ASMEND4391; GFX90A-NEXT:    s_setpc_b64 s[30:31]4392;4393; GFX942-LABEL: s_shuffle_v4f32_v2f32__3_u_1_1:4394; GFX942:       ; %bb.0:4395; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4396; GFX942-NEXT:    ;;#ASMSTART4397; GFX942-NEXT:    ; def s[10:11]4398; GFX942-NEXT:    ;;#ASMEND4399; GFX942-NEXT:    ;;#ASMSTART4400; GFX942-NEXT:    ; def s[0:1]4401; GFX942-NEXT:    ;;#ASMEND4402; GFX942-NEXT:    s_mov_b32 s8, s14403; GFX942-NEXT:    s_mov_b32 s10, s114404; GFX942-NEXT:    ;;#ASMSTART4405; GFX942-NEXT:    ; use s[8:11]4406; GFX942-NEXT:    ;;#ASMEND4407; GFX942-NEXT:    s_setpc_b64 s[30:31]4408  %vec0 = call <2 x float> asm "; def $0", "=s"()4409  %vec1 = call <2 x float> asm "; def $0", "=s"()4410  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 poison, i32 1, i32 1>4411  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)4412  ret void4413}4414 4415define void @s_shuffle_v4f32_v2f32__3_0_1_1() {4416; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_0_1_1:4417; GFX900:       ; %bb.0:4418; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4419; GFX900-NEXT:    ;;#ASMSTART4420; GFX900-NEXT:    ; def s[10:11]4421; GFX900-NEXT:    ;;#ASMEND4422; GFX900-NEXT:    ;;#ASMSTART4423; GFX900-NEXT:    ; def s[4:5]4424; GFX900-NEXT:    ;;#ASMEND4425; GFX900-NEXT:    s_mov_b32 s8, s54426; GFX900-NEXT:    s_mov_b32 s9, s104427; GFX900-NEXT:    s_mov_b32 s10, s114428; GFX900-NEXT:    ;;#ASMSTART4429; GFX900-NEXT:    ; use s[8:11]4430; GFX900-NEXT:    ;;#ASMEND4431; GFX900-NEXT:    s_setpc_b64 s[30:31]4432;4433; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_0_1_1:4434; GFX90A:       ; %bb.0:4435; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4436; GFX90A-NEXT:    ;;#ASMSTART4437; GFX90A-NEXT:    ; def s[10:11]4438; GFX90A-NEXT:    ;;#ASMEND4439; GFX90A-NEXT:    ;;#ASMSTART4440; GFX90A-NEXT:    ; def s[4:5]4441; GFX90A-NEXT:    ;;#ASMEND4442; GFX90A-NEXT:    s_mov_b32 s8, s54443; GFX90A-NEXT:    s_mov_b32 s9, s104444; GFX90A-NEXT:    s_mov_b32 s10, s114445; GFX90A-NEXT:    ;;#ASMSTART4446; GFX90A-NEXT:    ; use s[8:11]4447; GFX90A-NEXT:    ;;#ASMEND4448; GFX90A-NEXT:    s_setpc_b64 s[30:31]4449;4450; GFX942-LABEL: s_shuffle_v4f32_v2f32__3_0_1_1:4451; GFX942:       ; %bb.0:4452; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4453; GFX942-NEXT:    ;;#ASMSTART4454; GFX942-NEXT:    ; def s[10:11]4455; GFX942-NEXT:    ;;#ASMEND4456; GFX942-NEXT:    ;;#ASMSTART4457; GFX942-NEXT:    ; def s[0:1]4458; GFX942-NEXT:    ;;#ASMEND4459; GFX942-NEXT:    s_mov_b32 s8, s14460; GFX942-NEXT:    s_mov_b32 s9, s104461; GFX942-NEXT:    s_mov_b32 s10, s114462; GFX942-NEXT:    ;;#ASMSTART4463; GFX942-NEXT:    ; use s[8:11]4464; GFX942-NEXT:    ;;#ASMEND4465; GFX942-NEXT:    s_setpc_b64 s[30:31]4466  %vec0 = call <2 x float> asm "; def $0", "=s"()4467  %vec1 = call <2 x float> asm "; def $0", "=s"()4468  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 0, i32 1, i32 1>4469  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)4470  ret void4471}4472 4473define void @s_shuffle_v4f32_v2f32__3_2_1_1() {4474; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_2_1_1:4475; GFX900:       ; %bb.0:4476; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4477; GFX900-NEXT:    ;;#ASMSTART4478; GFX900-NEXT:    ; def s[10:11]4479; GFX900-NEXT:    ;;#ASMEND4480; GFX900-NEXT:    ;;#ASMSTART4481; GFX900-NEXT:    ; def s[4:5]4482; GFX900-NEXT:    ;;#ASMEND4483; GFX900-NEXT:    s_mov_b32 s8, s54484; GFX900-NEXT:    s_mov_b32 s9, s44485; GFX900-NEXT:    s_mov_b32 s10, s114486; GFX900-NEXT:    ;;#ASMSTART4487; GFX900-NEXT:    ; use s[8:11]4488; GFX900-NEXT:    ;;#ASMEND4489; GFX900-NEXT:    s_setpc_b64 s[30:31]4490;4491; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_2_1_1:4492; GFX90A:       ; %bb.0:4493; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4494; GFX90A-NEXT:    ;;#ASMSTART4495; GFX90A-NEXT:    ; def s[10:11]4496; GFX90A-NEXT:    ;;#ASMEND4497; GFX90A-NEXT:    ;;#ASMSTART4498; GFX90A-NEXT:    ; def s[4:5]4499; GFX90A-NEXT:    ;;#ASMEND4500; GFX90A-NEXT:    s_mov_b32 s8, s54501; GFX90A-NEXT:    s_mov_b32 s9, s44502; GFX90A-NEXT:    s_mov_b32 s10, s114503; GFX90A-NEXT:    ;;#ASMSTART4504; GFX90A-NEXT:    ; use s[8:11]4505; GFX90A-NEXT:    ;;#ASMEND4506; GFX90A-NEXT:    s_setpc_b64 s[30:31]4507;4508; GFX942-LABEL: s_shuffle_v4f32_v2f32__3_2_1_1:4509; GFX942:       ; %bb.0:4510; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4511; GFX942-NEXT:    ;;#ASMSTART4512; GFX942-NEXT:    ; def s[10:11]4513; GFX942-NEXT:    ;;#ASMEND4514; GFX942-NEXT:    ;;#ASMSTART4515; GFX942-NEXT:    ; def s[0:1]4516; GFX942-NEXT:    ;;#ASMEND4517; GFX942-NEXT:    s_mov_b32 s8, s14518; GFX942-NEXT:    s_mov_b32 s9, s04519; GFX942-NEXT:    s_mov_b32 s10, s114520; GFX942-NEXT:    ;;#ASMSTART4521; GFX942-NEXT:    ; use s[8:11]4522; GFX942-NEXT:    ;;#ASMEND4523; GFX942-NEXT:    s_setpc_b64 s[30:31]4524  %vec0 = call <2 x float> asm "; def $0", "=s"()4525  %vec1 = call <2 x float> asm "; def $0", "=s"()4526  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 2, i32 1, i32 1>4527  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)4528  ret void4529}4530 4531define void @s_shuffle_v4f32_v2f32__3_3_1_1() {4532; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_1_1:4533; GFX9:       ; %bb.0:4534; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4535; GFX9-NEXT:    ;;#ASMSTART4536; GFX9-NEXT:    ; def s[10:11]4537; GFX9-NEXT:    ;;#ASMEND4538; GFX9-NEXT:    ;;#ASMSTART4539; GFX9-NEXT:    ; def s[8:9]4540; GFX9-NEXT:    ;;#ASMEND4541; GFX9-NEXT:    s_mov_b32 s8, s94542; GFX9-NEXT:    s_mov_b32 s10, s114543; GFX9-NEXT:    ;;#ASMSTART4544; GFX9-NEXT:    ; use s[8:11]4545; GFX9-NEXT:    ;;#ASMEND4546; GFX9-NEXT:    s_setpc_b64 s[30:31]4547  %vec0 = call <2 x float> asm "; def $0", "=s"()4548  %vec1 = call <2 x float> asm "; def $0", "=s"()4549  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 1>4550  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)4551  ret void4552}4553 4554define void @s_shuffle_v4f32_v2f32__3_3_u_1() {4555; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_u_1:4556; GFX9:       ; %bb.0:4557; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4558; GFX9-NEXT:    ;;#ASMSTART4559; GFX9-NEXT:    ; def s[8:9]4560; GFX9-NEXT:    ;;#ASMEND4561; GFX9-NEXT:    ;;#ASMSTART4562; GFX9-NEXT:    ; def s[10:11]4563; GFX9-NEXT:    ;;#ASMEND4564; GFX9-NEXT:    s_mov_b32 s8, s94565; GFX9-NEXT:    ;;#ASMSTART4566; GFX9-NEXT:    ; use s[8:11]4567; GFX9-NEXT:    ;;#ASMEND4568; GFX9-NEXT:    s_setpc_b64 s[30:31]4569  %vec0 = call <2 x float> asm "; def $0", "=s"()4570  %vec1 = call <2 x float> asm "; def $0", "=s"()4571  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 1>4572  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)4573  ret void4574}4575 4576define void @s_shuffle_v4f32_v2f32__3_3_0_1() {4577; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_0_1:4578; GFX9:       ; %bb.0:4579; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4580; GFX9-NEXT:    ;;#ASMSTART4581; GFX9-NEXT:    ; def s[8:9]4582; GFX9-NEXT:    ;;#ASMEND4583; GFX9-NEXT:    ;;#ASMSTART4584; GFX9-NEXT:    ; def s[10:11]4585; GFX9-NEXT:    ;;#ASMEND4586; GFX9-NEXT:    s_mov_b32 s8, s94587; GFX9-NEXT:    ;;#ASMSTART4588; GFX9-NEXT:    ; use s[8:11]4589; GFX9-NEXT:    ;;#ASMEND4590; GFX9-NEXT:    s_setpc_b64 s[30:31]4591  %vec0 = call <2 x float> asm "; def $0", "=s"()4592  %vec1 = call <2 x float> asm "; def $0", "=s"()4593  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 1>4594  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)4595  ret void4596}4597 4598define void @s_shuffle_v4f32_v2f32__3_3_2_1() {4599; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_2_1:4600; GFX900:       ; %bb.0:4601; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4602; GFX900-NEXT:    ;;#ASMSTART4603; GFX900-NEXT:    ; def s[10:11]4604; GFX900-NEXT:    ;;#ASMEND4605; GFX900-NEXT:    ;;#ASMSTART4606; GFX900-NEXT:    ; def s[4:5]4607; GFX900-NEXT:    ;;#ASMEND4608; GFX900-NEXT:    s_mov_b32 s8, s114609; GFX900-NEXT:    s_mov_b32 s9, s114610; GFX900-NEXT:    s_mov_b32 s11, s54611; GFX900-NEXT:    ;;#ASMSTART4612; GFX900-NEXT:    ; use s[8:11]4613; GFX900-NEXT:    ;;#ASMEND4614; GFX900-NEXT:    s_setpc_b64 s[30:31]4615;4616; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_2_1:4617; GFX90A:       ; %bb.0:4618; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4619; GFX90A-NEXT:    ;;#ASMSTART4620; GFX90A-NEXT:    ; def s[10:11]4621; GFX90A-NEXT:    ;;#ASMEND4622; GFX90A-NEXT:    ;;#ASMSTART4623; GFX90A-NEXT:    ; def s[4:5]4624; GFX90A-NEXT:    ;;#ASMEND4625; GFX90A-NEXT:    s_mov_b32 s8, s114626; GFX90A-NEXT:    s_mov_b32 s9, s114627; GFX90A-NEXT:    s_mov_b32 s11, s54628; GFX90A-NEXT:    ;;#ASMSTART4629; GFX90A-NEXT:    ; use s[8:11]4630; GFX90A-NEXT:    ;;#ASMEND4631; GFX90A-NEXT:    s_setpc_b64 s[30:31]4632;4633; GFX942-LABEL: s_shuffle_v4f32_v2f32__3_3_2_1:4634; GFX942:       ; %bb.0:4635; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4636; GFX942-NEXT:    ;;#ASMSTART4637; GFX942-NEXT:    ; def s[10:11]4638; GFX942-NEXT:    ;;#ASMEND4639; GFX942-NEXT:    ;;#ASMSTART4640; GFX942-NEXT:    ; def s[0:1]4641; GFX942-NEXT:    ;;#ASMEND4642; GFX942-NEXT:    s_mov_b32 s8, s114643; GFX942-NEXT:    s_mov_b32 s9, s114644; GFX942-NEXT:    s_mov_b32 s11, s14645; GFX942-NEXT:    ;;#ASMSTART4646; GFX942-NEXT:    ; use s[8:11]4647; GFX942-NEXT:    ;;#ASMEND4648; GFX942-NEXT:    s_setpc_b64 s[30:31]4649  %vec0 = call <2 x float> asm "; def $0", "=s"()4650  %vec1 = call <2 x float> asm "; def $0", "=s"()4651  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 1>4652  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)4653  ret void4654}4655 4656define void @s_shuffle_v4f32_v2f32__u_2_2_2() {4657; GFX9-LABEL: s_shuffle_v4f32_v2f32__u_2_2_2:4658; GFX9:       ; %bb.0:4659; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4660; GFX9-NEXT:    ;;#ASMSTART4661; GFX9-NEXT:    ; use s[8:11]4662; GFX9-NEXT:    ;;#ASMEND4663; GFX9-NEXT:    s_setpc_b64 s[30:31]4664  %vec0 = call <2 x float> asm "; def $0", "=s"()4665  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2>4666  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)4667  ret void4668}4669 4670define void @s_shuffle_v4f32_v2f32__0_2_2_2() {4671; GFX900-LABEL: s_shuffle_v4f32_v2f32__0_2_2_2:4672; GFX900:       ; %bb.0:4673; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4674; GFX900-NEXT:    ;;#ASMSTART4675; GFX900-NEXT:    ; def s[8:9]4676; GFX900-NEXT:    ;;#ASMEND4677; GFX900-NEXT:    ;;#ASMSTART4678; GFX900-NEXT:    ; use s[8:11]4679; GFX900-NEXT:    ;;#ASMEND4680; GFX900-NEXT:    s_setpc_b64 s[30:31]4681;4682; GFX90A-LABEL: s_shuffle_v4f32_v2f32__0_2_2_2:4683; GFX90A:       ; %bb.0:4684; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4685; GFX90A-NEXT:    ;;#ASMSTART4686; GFX90A-NEXT:    ; def s[8:9]4687; GFX90A-NEXT:    ;;#ASMEND4688; GFX90A-NEXT:    ;;#ASMSTART4689; GFX90A-NEXT:    ; use s[8:11]4690; GFX90A-NEXT:    ;;#ASMEND4691; GFX90A-NEXT:    s_setpc_b64 s[30:31]4692;4693; GFX942-LABEL: s_shuffle_v4f32_v2f32__0_2_2_2:4694; GFX942:       ; %bb.0:4695; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4696; GFX942-NEXT:    ;;#ASMSTART4697; GFX942-NEXT:    ; def s[8:9]4698; GFX942-NEXT:    ;;#ASMEND4699; GFX942-NEXT:    s_nop 04700; GFX942-NEXT:    ;;#ASMSTART4701; GFX942-NEXT:    ; use s[8:11]4702; GFX942-NEXT:    ;;#ASMEND4703; GFX942-NEXT:    s_setpc_b64 s[30:31]4704  %vec0 = call <2 x float> asm "; def $0", "=s"()4705  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2>4706  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)4707  ret void4708}4709 4710define void @s_shuffle_v4f32_v2f32__1_2_2_2() {4711; GFX900-LABEL: s_shuffle_v4f32_v2f32__1_2_2_2:4712; GFX900:       ; %bb.0:4713; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4714; GFX900-NEXT:    ;;#ASMSTART4715; GFX900-NEXT:    ; def s[4:5]4716; GFX900-NEXT:    ;;#ASMEND4717; GFX900-NEXT:    s_mov_b32 s8, s54718; GFX900-NEXT:    ;;#ASMSTART4719; GFX900-NEXT:    ; use s[8:11]4720; GFX900-NEXT:    ;;#ASMEND4721; GFX900-NEXT:    s_setpc_b64 s[30:31]4722;4723; GFX90A-LABEL: s_shuffle_v4f32_v2f32__1_2_2_2:4724; GFX90A:       ; %bb.0:4725; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4726; GFX90A-NEXT:    ;;#ASMSTART4727; GFX90A-NEXT:    ; def s[4:5]4728; GFX90A-NEXT:    ;;#ASMEND4729; GFX90A-NEXT:    s_mov_b32 s8, s54730; GFX90A-NEXT:    ;;#ASMSTART4731; GFX90A-NEXT:    ; use s[8:11]4732; GFX90A-NEXT:    ;;#ASMEND4733; GFX90A-NEXT:    s_setpc_b64 s[30:31]4734;4735; GFX942-LABEL: s_shuffle_v4f32_v2f32__1_2_2_2:4736; GFX942:       ; %bb.0:4737; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4738; GFX942-NEXT:    ;;#ASMSTART4739; GFX942-NEXT:    ; def s[0:1]4740; GFX942-NEXT:    ;;#ASMEND4741; GFX942-NEXT:    s_mov_b32 s8, s14742; GFX942-NEXT:    ;;#ASMSTART4743; GFX942-NEXT:    ; use s[8:11]4744; GFX942-NEXT:    ;;#ASMEND4745; GFX942-NEXT:    s_setpc_b64 s[30:31]4746  %vec0 = call <2 x float> asm "; def $0", "=s"()4747  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2>4748  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)4749  ret void4750}4751 4752define void @s_shuffle_v4f32_v2f32__2_2_2_2() {4753; GFX9-LABEL: s_shuffle_v4f32_v2f32__2_2_2_2:4754; GFX9:       ; %bb.0:4755; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4756; GFX9-NEXT:    ;;#ASMSTART4757; GFX9-NEXT:    ; use s[8:11]4758; GFX9-NEXT:    ;;#ASMEND4759; GFX9-NEXT:    s_setpc_b64 s[30:31]4760  %vec0 = call <2 x float> asm "; def $0", "=s"()4761  %shuf = shufflevector <2 x float> %vec0, <2 x float> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2>4762  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)4763  ret void4764}4765 4766define void @s_shuffle_v4f32_v2f32__3_2_2_2() {4767; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_2_2_2:4768; GFX9:       ; %bb.0:4769; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4770; GFX9-NEXT:    ;;#ASMSTART4771; GFX9-NEXT:    ; def s[10:11]4772; GFX9-NEXT:    ;;#ASMEND4773; GFX9-NEXT:    s_mov_b32 s8, s114774; GFX9-NEXT:    s_mov_b32 s9, s104775; GFX9-NEXT:    s_mov_b32 s11, s104776; GFX9-NEXT:    ;;#ASMSTART4777; GFX9-NEXT:    ; use s[8:11]4778; GFX9-NEXT:    ;;#ASMEND4779; GFX9-NEXT:    s_setpc_b64 s[30:31]4780  %vec0 = call <2 x float> asm "; def $0", "=s"()4781  %vec1 = call <2 x float> asm "; def $0", "=s"()4782  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 2, i32 2, i32 2>4783  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)4784  ret void4785}4786 4787define void @s_shuffle_v4f32_v2f32__3_u_2_2() {4788; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_u_2_2:4789; GFX9:       ; %bb.0:4790; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4791; GFX9-NEXT:    ;;#ASMSTART4792; GFX9-NEXT:    ; def s[10:11]4793; GFX9-NEXT:    ;;#ASMEND4794; GFX9-NEXT:    s_mov_b32 s8, s114795; GFX9-NEXT:    s_mov_b32 s11, s104796; GFX9-NEXT:    ;;#ASMSTART4797; GFX9-NEXT:    ; use s[8:11]4798; GFX9-NEXT:    ;;#ASMEND4799; GFX9-NEXT:    s_setpc_b64 s[30:31]4800  %vec0 = call <2 x float> asm "; def $0", "=s"()4801  %vec1 = call <2 x float> asm "; def $0", "=s"()4802  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 poison, i32 2, i32 2>4803  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)4804  ret void4805}4806 4807define void @s_shuffle_v4f32_v2f32__3_0_2_2() {4808; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_0_2_2:4809; GFX900:       ; %bb.0:4810; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4811; GFX900-NEXT:    ;;#ASMSTART4812; GFX900-NEXT:    ; def s[10:11]4813; GFX900-NEXT:    ;;#ASMEND4814; GFX900-NEXT:    ;;#ASMSTART4815; GFX900-NEXT:    ; def s[4:5]4816; GFX900-NEXT:    ;;#ASMEND4817; GFX900-NEXT:    s_mov_b32 s8, s114818; GFX900-NEXT:    s_mov_b32 s9, s44819; GFX900-NEXT:    s_mov_b32 s11, s104820; GFX900-NEXT:    ;;#ASMSTART4821; GFX900-NEXT:    ; use s[8:11]4822; GFX900-NEXT:    ;;#ASMEND4823; GFX900-NEXT:    s_setpc_b64 s[30:31]4824;4825; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_0_2_2:4826; GFX90A:       ; %bb.0:4827; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4828; GFX90A-NEXT:    ;;#ASMSTART4829; GFX90A-NEXT:    ; def s[10:11]4830; GFX90A-NEXT:    ;;#ASMEND4831; GFX90A-NEXT:    ;;#ASMSTART4832; GFX90A-NEXT:    ; def s[4:5]4833; GFX90A-NEXT:    ;;#ASMEND4834; GFX90A-NEXT:    s_mov_b32 s8, s114835; GFX90A-NEXT:    s_mov_b32 s9, s44836; GFX90A-NEXT:    s_mov_b32 s11, s104837; GFX90A-NEXT:    ;;#ASMSTART4838; GFX90A-NEXT:    ; use s[8:11]4839; GFX90A-NEXT:    ;;#ASMEND4840; GFX90A-NEXT:    s_setpc_b64 s[30:31]4841;4842; GFX942-LABEL: s_shuffle_v4f32_v2f32__3_0_2_2:4843; GFX942:       ; %bb.0:4844; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4845; GFX942-NEXT:    ;;#ASMSTART4846; GFX942-NEXT:    ; def s[10:11]4847; GFX942-NEXT:    ;;#ASMEND4848; GFX942-NEXT:    ;;#ASMSTART4849; GFX942-NEXT:    ; def s[0:1]4850; GFX942-NEXT:    ;;#ASMEND4851; GFX942-NEXT:    s_mov_b32 s8, s114852; GFX942-NEXT:    s_mov_b32 s9, s04853; GFX942-NEXT:    s_mov_b32 s11, s104854; GFX942-NEXT:    ;;#ASMSTART4855; GFX942-NEXT:    ; use s[8:11]4856; GFX942-NEXT:    ;;#ASMEND4857; GFX942-NEXT:    s_setpc_b64 s[30:31]4858  %vec0 = call <2 x float> asm "; def $0", "=s"()4859  %vec1 = call <2 x float> asm "; def $0", "=s"()4860  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 0, i32 2, i32 2>4861  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)4862  ret void4863}4864 4865define void @s_shuffle_v4f32_v2f32__3_1_2_2() {4866; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_1_2_2:4867; GFX9:       ; %bb.0:4868; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4869; GFX9-NEXT:    ;;#ASMSTART4870; GFX9-NEXT:    ; def s[8:9]4871; GFX9-NEXT:    ;;#ASMEND4872; GFX9-NEXT:    ;;#ASMSTART4873; GFX9-NEXT:    ; def s[10:11]4874; GFX9-NEXT:    ;;#ASMEND4875; GFX9-NEXT:    s_mov_b32 s8, s114876; GFX9-NEXT:    s_mov_b32 s11, s104877; GFX9-NEXT:    ;;#ASMSTART4878; GFX9-NEXT:    ; use s[8:11]4879; GFX9-NEXT:    ;;#ASMEND4880; GFX9-NEXT:    s_setpc_b64 s[30:31]4881  %vec0 = call <2 x float> asm "; def $0", "=s"()4882  %vec1 = call <2 x float> asm "; def $0", "=s"()4883  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 1, i32 2, i32 2>4884  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)4885  ret void4886}4887 4888define void @s_shuffle_v4f32_v2f32__3_3_2_2() {4889; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_2_2:4890; GFX9:       ; %bb.0:4891; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4892; GFX9-NEXT:    ;;#ASMSTART4893; GFX9-NEXT:    ; def s[10:11]4894; GFX9-NEXT:    ;;#ASMEND4895; GFX9-NEXT:    s_mov_b32 s8, s114896; GFX9-NEXT:    s_mov_b32 s9, s114897; GFX9-NEXT:    s_mov_b32 s11, s104898; GFX9-NEXT:    ;;#ASMSTART4899; GFX9-NEXT:    ; use s[8:11]4900; GFX9-NEXT:    ;;#ASMEND4901; GFX9-NEXT:    s_setpc_b64 s[30:31]4902  %vec0 = call <2 x float> asm "; def $0", "=s"()4903  %vec1 = call <2 x float> asm "; def $0", "=s"()4904  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 2>4905  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)4906  ret void4907}4908 4909define void @s_shuffle_v4f32_v2f32__3_3_u_2() {4910; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_u_2:4911; GFX900:       ; %bb.0:4912; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4913; GFX900-NEXT:    ;;#ASMSTART4914; GFX900-NEXT:    ; def s[4:5]4915; GFX900-NEXT:    ;;#ASMEND4916; GFX900-NEXT:    s_mov_b32 s8, s54917; GFX900-NEXT:    s_mov_b32 s9, s54918; GFX900-NEXT:    s_mov_b32 s11, s44919; GFX900-NEXT:    ;;#ASMSTART4920; GFX900-NEXT:    ; use s[8:11]4921; GFX900-NEXT:    ;;#ASMEND4922; GFX900-NEXT:    s_setpc_b64 s[30:31]4923;4924; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_u_2:4925; GFX90A:       ; %bb.0:4926; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4927; GFX90A-NEXT:    ;;#ASMSTART4928; GFX90A-NEXT:    ; def s[4:5]4929; GFX90A-NEXT:    ;;#ASMEND4930; GFX90A-NEXT:    s_mov_b32 s8, s54931; GFX90A-NEXT:    s_mov_b32 s9, s54932; GFX90A-NEXT:    s_mov_b32 s11, s44933; GFX90A-NEXT:    ;;#ASMSTART4934; GFX90A-NEXT:    ; use s[8:11]4935; GFX90A-NEXT:    ;;#ASMEND4936; GFX90A-NEXT:    s_setpc_b64 s[30:31]4937;4938; GFX942-LABEL: s_shuffle_v4f32_v2f32__3_3_u_2:4939; GFX942:       ; %bb.0:4940; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4941; GFX942-NEXT:    ;;#ASMSTART4942; GFX942-NEXT:    ; def s[0:1]4943; GFX942-NEXT:    ;;#ASMEND4944; GFX942-NEXT:    s_mov_b32 s8, s14945; GFX942-NEXT:    s_mov_b32 s9, s14946; GFX942-NEXT:    s_mov_b32 s11, s04947; GFX942-NEXT:    ;;#ASMSTART4948; GFX942-NEXT:    ; use s[8:11]4949; GFX942-NEXT:    ;;#ASMEND4950; GFX942-NEXT:    s_setpc_b64 s[30:31]4951  %vec0 = call <2 x float> asm "; def $0", "=s"()4952  %vec1 = call <2 x float> asm "; def $0", "=s"()4953  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 2>4954  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)4955  ret void4956}4957 4958define void @s_shuffle_v4f32_v2f32__3_3_0_2() {4959; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_0_2:4960; GFX900:       ; %bb.0:4961; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4962; GFX900-NEXT:    ;;#ASMSTART4963; GFX900-NEXT:    ; def s[10:11]4964; GFX900-NEXT:    ;;#ASMEND4965; GFX900-NEXT:    ;;#ASMSTART4966; GFX900-NEXT:    ; def s[4:5]4967; GFX900-NEXT:    ;;#ASMEND4968; GFX900-NEXT:    s_mov_b32 s8, s54969; GFX900-NEXT:    s_mov_b32 s9, s54970; GFX900-NEXT:    s_mov_b32 s11, s44971; GFX900-NEXT:    ;;#ASMSTART4972; GFX900-NEXT:    ; use s[8:11]4973; GFX900-NEXT:    ;;#ASMEND4974; GFX900-NEXT:    s_setpc_b64 s[30:31]4975;4976; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_0_2:4977; GFX90A:       ; %bb.0:4978; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4979; GFX90A-NEXT:    ;;#ASMSTART4980; GFX90A-NEXT:    ; def s[10:11]4981; GFX90A-NEXT:    ;;#ASMEND4982; GFX90A-NEXT:    ;;#ASMSTART4983; GFX90A-NEXT:    ; def s[4:5]4984; GFX90A-NEXT:    ;;#ASMEND4985; GFX90A-NEXT:    s_mov_b32 s8, s54986; GFX90A-NEXT:    s_mov_b32 s9, s54987; GFX90A-NEXT:    s_mov_b32 s11, s44988; GFX90A-NEXT:    ;;#ASMSTART4989; GFX90A-NEXT:    ; use s[8:11]4990; GFX90A-NEXT:    ;;#ASMEND4991; GFX90A-NEXT:    s_setpc_b64 s[30:31]4992;4993; GFX942-LABEL: s_shuffle_v4f32_v2f32__3_3_0_2:4994; GFX942:       ; %bb.0:4995; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4996; GFX942-NEXT:    ;;#ASMSTART4997; GFX942-NEXT:    ; def s[10:11]4998; GFX942-NEXT:    ;;#ASMEND4999; GFX942-NEXT:    ;;#ASMSTART5000; GFX942-NEXT:    ; def s[0:1]5001; GFX942-NEXT:    ;;#ASMEND5002; GFX942-NEXT:    s_mov_b32 s8, s15003; GFX942-NEXT:    s_mov_b32 s9, s15004; GFX942-NEXT:    s_mov_b32 s11, s05005; GFX942-NEXT:    ;;#ASMSTART5006; GFX942-NEXT:    ; use s[8:11]5007; GFX942-NEXT:    ;;#ASMEND5008; GFX942-NEXT:    s_setpc_b64 s[30:31]5009  %vec0 = call <2 x float> asm "; def $0", "=s"()5010  %vec1 = call <2 x float> asm "; def $0", "=s"()5011  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 2>5012  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)5013  ret void5014}5015 5016define void @s_shuffle_v4f32_v2f32__3_3_1_2() {5017; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_1_2:5018; GFX900:       ; %bb.0:5019; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5020; GFX900-NEXT:    ;;#ASMSTART5021; GFX900-NEXT:    ; def s[4:5]5022; GFX900-NEXT:    ;;#ASMEND5023; GFX900-NEXT:    ;;#ASMSTART5024; GFX900-NEXT:    ; def s[6:7]5025; GFX900-NEXT:    ;;#ASMEND5026; GFX900-NEXT:    s_mov_b32 s8, s75027; GFX900-NEXT:    s_mov_b32 s9, s75028; GFX900-NEXT:    s_mov_b32 s10, s55029; GFX900-NEXT:    s_mov_b32 s11, s65030; GFX900-NEXT:    ;;#ASMSTART5031; GFX900-NEXT:    ; use s[8:11]5032; GFX900-NEXT:    ;;#ASMEND5033; GFX900-NEXT:    s_setpc_b64 s[30:31]5034;5035; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_1_2:5036; GFX90A:       ; %bb.0:5037; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5038; GFX90A-NEXT:    ;;#ASMSTART5039; GFX90A-NEXT:    ; def s[4:5]5040; GFX90A-NEXT:    ;;#ASMEND5041; GFX90A-NEXT:    ;;#ASMSTART5042; GFX90A-NEXT:    ; def s[6:7]5043; GFX90A-NEXT:    ;;#ASMEND5044; GFX90A-NEXT:    s_mov_b32 s8, s75045; GFX90A-NEXT:    s_mov_b32 s9, s75046; GFX90A-NEXT:    s_mov_b32 s10, s55047; GFX90A-NEXT:    s_mov_b32 s11, s65048; GFX90A-NEXT:    ;;#ASMSTART5049; GFX90A-NEXT:    ; use s[8:11]5050; GFX90A-NEXT:    ;;#ASMEND5051; GFX90A-NEXT:    s_setpc_b64 s[30:31]5052;5053; GFX942-LABEL: s_shuffle_v4f32_v2f32__3_3_1_2:5054; GFX942:       ; %bb.0:5055; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5056; GFX942-NEXT:    ;;#ASMSTART5057; GFX942-NEXT:    ; def s[0:1]5058; GFX942-NEXT:    ;;#ASMEND5059; GFX942-NEXT:    ;;#ASMSTART5060; GFX942-NEXT:    ; def s[2:3]5061; GFX942-NEXT:    ;;#ASMEND5062; GFX942-NEXT:    s_mov_b32 s8, s35063; GFX942-NEXT:    s_mov_b32 s9, s35064; GFX942-NEXT:    s_mov_b32 s10, s15065; GFX942-NEXT:    s_mov_b32 s11, s25066; GFX942-NEXT:    ;;#ASMSTART5067; GFX942-NEXT:    ; use s[8:11]5068; GFX942-NEXT:    ;;#ASMEND5069; GFX942-NEXT:    s_setpc_b64 s[30:31]5070  %vec0 = call <2 x float> asm "; def $0", "=s"()5071  %vec1 = call <2 x float> asm "; def $0", "=s"()5072  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 2>5073  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)5074  ret void5075}5076 5077define void @s_shuffle_v4f32_v2f32__u_3_3_3() {5078; GFX9-LABEL: s_shuffle_v4f32_v2f32__u_3_3_3:5079; GFX9:       ; %bb.0:5080; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5081; GFX9-NEXT:    ;;#ASMSTART5082; GFX9-NEXT:    ; def s[8:9]5083; GFX9-NEXT:    ;;#ASMEND5084; GFX9-NEXT:    s_mov_b32 s10, s95085; GFX9-NEXT:    s_mov_b32 s11, s95086; GFX9-NEXT:    ;;#ASMSTART5087; GFX9-NEXT:    ; use s[8:11]5088; GFX9-NEXT:    ;;#ASMEND5089; GFX9-NEXT:    s_setpc_b64 s[30:31]5090  %vec0 = call <2 x float> asm "; def $0", "=s"()5091  %vec1 = call <2 x float> asm "; def $0", "=s"()5092  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 poison, i32 3, i32 3, i32 3>5093  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)5094  ret void5095}5096 5097define void @s_shuffle_v4f32_v2f32__0_3_3_3() {5098; GFX9-LABEL: s_shuffle_v4f32_v2f32__0_3_3_3:5099; GFX9:       ; %bb.0:5100; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5101; GFX9-NEXT:    ;;#ASMSTART5102; GFX9-NEXT:    ; def s[8:9]5103; GFX9-NEXT:    ;;#ASMEND5104; GFX9-NEXT:    ;;#ASMSTART5105; GFX9-NEXT:    ; def s[10:11]5106; GFX9-NEXT:    ;;#ASMEND5107; GFX9-NEXT:    s_mov_b32 s9, s115108; GFX9-NEXT:    s_mov_b32 s10, s115109; GFX9-NEXT:    ;;#ASMSTART5110; GFX9-NEXT:    ; use s[8:11]5111; GFX9-NEXT:    ;;#ASMEND5112; GFX9-NEXT:    s_setpc_b64 s[30:31]5113  %vec0 = call <2 x float> asm "; def $0", "=s"()5114  %vec1 = call <2 x float> asm "; def $0", "=s"()5115  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 0, i32 3, i32 3, i32 3>5116  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)5117  ret void5118}5119 5120define void @s_shuffle_v4f32_v2f32__1_3_3_3() {5121; GFX900-LABEL: s_shuffle_v4f32_v2f32__1_3_3_3:5122; GFX900:       ; %bb.0:5123; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5124; GFX900-NEXT:    ;;#ASMSTART5125; GFX900-NEXT:    ; def s[8:9]5126; GFX900-NEXT:    ;;#ASMEND5127; GFX900-NEXT:    ;;#ASMSTART5128; GFX900-NEXT:    ; def s[4:5]5129; GFX900-NEXT:    ;;#ASMEND5130; GFX900-NEXT:    s_mov_b32 s8, s55131; GFX900-NEXT:    s_mov_b32 s10, s95132; GFX900-NEXT:    s_mov_b32 s11, s95133; GFX900-NEXT:    ;;#ASMSTART5134; GFX900-NEXT:    ; use s[8:11]5135; GFX900-NEXT:    ;;#ASMEND5136; GFX900-NEXT:    s_setpc_b64 s[30:31]5137;5138; GFX90A-LABEL: s_shuffle_v4f32_v2f32__1_3_3_3:5139; GFX90A:       ; %bb.0:5140; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5141; GFX90A-NEXT:    ;;#ASMSTART5142; GFX90A-NEXT:    ; def s[8:9]5143; GFX90A-NEXT:    ;;#ASMEND5144; GFX90A-NEXT:    ;;#ASMSTART5145; GFX90A-NEXT:    ; def s[4:5]5146; GFX90A-NEXT:    ;;#ASMEND5147; GFX90A-NEXT:    s_mov_b32 s8, s55148; GFX90A-NEXT:    s_mov_b32 s10, s95149; GFX90A-NEXT:    s_mov_b32 s11, s95150; GFX90A-NEXT:    ;;#ASMSTART5151; GFX90A-NEXT:    ; use s[8:11]5152; GFX90A-NEXT:    ;;#ASMEND5153; GFX90A-NEXT:    s_setpc_b64 s[30:31]5154;5155; GFX942-LABEL: s_shuffle_v4f32_v2f32__1_3_3_3:5156; GFX942:       ; %bb.0:5157; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5158; GFX942-NEXT:    ;;#ASMSTART5159; GFX942-NEXT:    ; def s[8:9]5160; GFX942-NEXT:    ;;#ASMEND5161; GFX942-NEXT:    ;;#ASMSTART5162; GFX942-NEXT:    ; def s[0:1]5163; GFX942-NEXT:    ;;#ASMEND5164; GFX942-NEXT:    s_mov_b32 s8, s15165; GFX942-NEXT:    s_mov_b32 s10, s95166; GFX942-NEXT:    s_mov_b32 s11, s95167; GFX942-NEXT:    ;;#ASMSTART5168; GFX942-NEXT:    ; use s[8:11]5169; GFX942-NEXT:    ;;#ASMEND5170; GFX942-NEXT:    s_setpc_b64 s[30:31]5171  %vec0 = call <2 x float> asm "; def $0", "=s"()5172  %vec1 = call <2 x float> asm "; def $0", "=s"()5173  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 1, i32 3, i32 3, i32 3>5174  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)5175  ret void5176}5177 5178define void @s_shuffle_v4f32_v2f32__2_3_3_3() {5179; GFX9-LABEL: s_shuffle_v4f32_v2f32__2_3_3_3:5180; GFX9:       ; %bb.0:5181; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5182; GFX9-NEXT:    ;;#ASMSTART5183; GFX9-NEXT:    ; def s[8:9]5184; GFX9-NEXT:    ;;#ASMEND5185; GFX9-NEXT:    s_mov_b32 s10, s95186; GFX9-NEXT:    s_mov_b32 s11, s95187; GFX9-NEXT:    ;;#ASMSTART5188; GFX9-NEXT:    ; use s[8:11]5189; GFX9-NEXT:    ;;#ASMEND5190; GFX9-NEXT:    s_setpc_b64 s[30:31]5191  %vec0 = call <2 x float> asm "; def $0", "=s"()5192  %vec1 = call <2 x float> asm "; def $0", "=s"()5193  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 2, i32 3, i32 3, i32 3>5194  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)5195  ret void5196}5197 5198define void @s_shuffle_v4f32_v2f32__3_u_3_3() {5199; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_u_3_3:5200; GFX9:       ; %bb.0:5201; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5202; GFX9-NEXT:    ;;#ASMSTART5203; GFX9-NEXT:    ; def s[10:11]5204; GFX9-NEXT:    ;;#ASMEND5205; GFX9-NEXT:    s_mov_b32 s8, s115206; GFX9-NEXT:    s_mov_b32 s10, s115207; GFX9-NEXT:    ;;#ASMSTART5208; GFX9-NEXT:    ; use s[8:11]5209; GFX9-NEXT:    ;;#ASMEND5210; GFX9-NEXT:    s_setpc_b64 s[30:31]5211  %vec0 = call <2 x float> asm "; def $0", "=s"()5212  %vec1 = call <2 x float> asm "; def $0", "=s"()5213  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 poison, i32 3, i32 3>5214  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)5215  ret void5216}5217 5218define void @s_shuffle_v4f32_v2f32__3_0_3_3() {5219; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_0_3_3:5220; GFX900:       ; %bb.0:5221; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5222; GFX900-NEXT:    ;;#ASMSTART5223; GFX900-NEXT:    ; def s[10:11]5224; GFX900-NEXT:    ;;#ASMEND5225; GFX900-NEXT:    ;;#ASMSTART5226; GFX900-NEXT:    ; def s[4:5]5227; GFX900-NEXT:    ;;#ASMEND5228; GFX900-NEXT:    s_mov_b32 s8, s115229; GFX900-NEXT:    s_mov_b32 s9, s45230; GFX900-NEXT:    s_mov_b32 s10, s115231; GFX900-NEXT:    ;;#ASMSTART5232; GFX900-NEXT:    ; use s[8:11]5233; GFX900-NEXT:    ;;#ASMEND5234; GFX900-NEXT:    s_setpc_b64 s[30:31]5235;5236; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_0_3_3:5237; GFX90A:       ; %bb.0:5238; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5239; GFX90A-NEXT:    ;;#ASMSTART5240; GFX90A-NEXT:    ; def s[10:11]5241; GFX90A-NEXT:    ;;#ASMEND5242; GFX90A-NEXT:    ;;#ASMSTART5243; GFX90A-NEXT:    ; def s[4:5]5244; GFX90A-NEXT:    ;;#ASMEND5245; GFX90A-NEXT:    s_mov_b32 s8, s115246; GFX90A-NEXT:    s_mov_b32 s9, s45247; GFX90A-NEXT:    s_mov_b32 s10, s115248; GFX90A-NEXT:    ;;#ASMSTART5249; GFX90A-NEXT:    ; use s[8:11]5250; GFX90A-NEXT:    ;;#ASMEND5251; GFX90A-NEXT:    s_setpc_b64 s[30:31]5252;5253; GFX942-LABEL: s_shuffle_v4f32_v2f32__3_0_3_3:5254; GFX942:       ; %bb.0:5255; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5256; GFX942-NEXT:    ;;#ASMSTART5257; GFX942-NEXT:    ; def s[10:11]5258; GFX942-NEXT:    ;;#ASMEND5259; GFX942-NEXT:    ;;#ASMSTART5260; GFX942-NEXT:    ; def s[0:1]5261; GFX942-NEXT:    ;;#ASMEND5262; GFX942-NEXT:    s_mov_b32 s8, s115263; GFX942-NEXT:    s_mov_b32 s9, s05264; GFX942-NEXT:    s_mov_b32 s10, s115265; GFX942-NEXT:    ;;#ASMSTART5266; GFX942-NEXT:    ; use s[8:11]5267; GFX942-NEXT:    ;;#ASMEND5268; GFX942-NEXT:    s_setpc_b64 s[30:31]5269  %vec0 = call <2 x float> asm "; def $0", "=s"()5270  %vec1 = call <2 x float> asm "; def $0", "=s"()5271  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 0, i32 3, i32 3>5272  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)5273  ret void5274}5275 5276define void @s_shuffle_v4f32_v2f32__3_1_3_3() {5277; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_1_3_3:5278; GFX9:       ; %bb.0:5279; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5280; GFX9-NEXT:    ;;#ASMSTART5281; GFX9-NEXT:    ; def s[8:9]5282; GFX9-NEXT:    ;;#ASMEND5283; GFX9-NEXT:    ;;#ASMSTART5284; GFX9-NEXT:    ; def s[10:11]5285; GFX9-NEXT:    ;;#ASMEND5286; GFX9-NEXT:    s_mov_b32 s8, s115287; GFX9-NEXT:    s_mov_b32 s10, s115288; GFX9-NEXT:    ;;#ASMSTART5289; GFX9-NEXT:    ; use s[8:11]5290; GFX9-NEXT:    ;;#ASMEND5291; GFX9-NEXT:    s_setpc_b64 s[30:31]5292  %vec0 = call <2 x float> asm "; def $0", "=s"()5293  %vec1 = call <2 x float> asm "; def $0", "=s"()5294  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 1, i32 3, i32 3>5295  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)5296  ret void5297}5298 5299define void @s_shuffle_v4f32_v2f32__3_2_3_3() {5300; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_2_3_3:5301; GFX9:       ; %bb.0:5302; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5303; GFX9-NEXT:    ;;#ASMSTART5304; GFX9-NEXT:    ; def s[10:11]5305; GFX9-NEXT:    ;;#ASMEND5306; GFX9-NEXT:    s_mov_b32 s8, s115307; GFX9-NEXT:    s_mov_b32 s9, s105308; GFX9-NEXT:    s_mov_b32 s10, s115309; GFX9-NEXT:    ;;#ASMSTART5310; GFX9-NEXT:    ; use s[8:11]5311; GFX9-NEXT:    ;;#ASMEND5312; GFX9-NEXT:    s_setpc_b64 s[30:31]5313  %vec0 = call <2 x float> asm "; def $0", "=s"()5314  %vec1 = call <2 x float> asm "; def $0", "=s"()5315  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 2, i32 3, i32 3>5316  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)5317  ret void5318}5319 5320define void @s_shuffle_v4f32_v2f32__3_3_u_3() {5321; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_u_3:5322; GFX9:       ; %bb.0:5323; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5324; GFX9-NEXT:    ;;#ASMSTART5325; GFX9-NEXT:    ; def s[8:9]5326; GFX9-NEXT:    ;;#ASMEND5327; GFX9-NEXT:    s_mov_b32 s8, s95328; GFX9-NEXT:    s_mov_b32 s11, s95329; GFX9-NEXT:    ;;#ASMSTART5330; GFX9-NEXT:    ; use s[8:11]5331; GFX9-NEXT:    ;;#ASMEND5332; GFX9-NEXT:    s_setpc_b64 s[30:31]5333  %vec0 = call <2 x float> asm "; def $0", "=s"()5334  %vec1 = call <2 x float> asm "; def $0", "=s"()5335  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 3>5336  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)5337  ret void5338}5339 5340define void @s_shuffle_v4f32_v2f32__3_3_0_3() {5341; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_0_3:5342; GFX9:       ; %bb.0:5343; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5344; GFX9-NEXT:    ;;#ASMSTART5345; GFX9-NEXT:    ; def s[10:11]5346; GFX9-NEXT:    ;;#ASMEND5347; GFX9-NEXT:    ;;#ASMSTART5348; GFX9-NEXT:    ; def s[8:9]5349; GFX9-NEXT:    ;;#ASMEND5350; GFX9-NEXT:    s_mov_b32 s8, s95351; GFX9-NEXT:    s_mov_b32 s11, s95352; GFX9-NEXT:    ;;#ASMSTART5353; GFX9-NEXT:    ; use s[8:11]5354; GFX9-NEXT:    ;;#ASMEND5355; GFX9-NEXT:    s_setpc_b64 s[30:31]5356  %vec0 = call <2 x float> asm "; def $0", "=s"()5357  %vec1 = call <2 x float> asm "; def $0", "=s"()5358  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 3>5359  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)5360  ret void5361}5362 5363define void @s_shuffle_v4f32_v2f32__3_3_1_3() {5364; GFX900-LABEL: s_shuffle_v4f32_v2f32__3_3_1_3:5365; GFX900:       ; %bb.0:5366; GFX900-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5367; GFX900-NEXT:    ;;#ASMSTART5368; GFX900-NEXT:    ; def s[8:9]5369; GFX900-NEXT:    ;;#ASMEND5370; GFX900-NEXT:    ;;#ASMSTART5371; GFX900-NEXT:    ; def s[4:5]5372; GFX900-NEXT:    ;;#ASMEND5373; GFX900-NEXT:    s_mov_b32 s8, s95374; GFX900-NEXT:    s_mov_b32 s10, s55375; GFX900-NEXT:    s_mov_b32 s11, s95376; GFX900-NEXT:    ;;#ASMSTART5377; GFX900-NEXT:    ; use s[8:11]5378; GFX900-NEXT:    ;;#ASMEND5379; GFX900-NEXT:    s_setpc_b64 s[30:31]5380;5381; GFX90A-LABEL: s_shuffle_v4f32_v2f32__3_3_1_3:5382; GFX90A:       ; %bb.0:5383; GFX90A-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5384; GFX90A-NEXT:    ;;#ASMSTART5385; GFX90A-NEXT:    ; def s[8:9]5386; GFX90A-NEXT:    ;;#ASMEND5387; GFX90A-NEXT:    ;;#ASMSTART5388; GFX90A-NEXT:    ; def s[4:5]5389; GFX90A-NEXT:    ;;#ASMEND5390; GFX90A-NEXT:    s_mov_b32 s8, s95391; GFX90A-NEXT:    s_mov_b32 s10, s55392; GFX90A-NEXT:    s_mov_b32 s11, s95393; GFX90A-NEXT:    ;;#ASMSTART5394; GFX90A-NEXT:    ; use s[8:11]5395; GFX90A-NEXT:    ;;#ASMEND5396; GFX90A-NEXT:    s_setpc_b64 s[30:31]5397;5398; GFX942-LABEL: s_shuffle_v4f32_v2f32__3_3_1_3:5399; GFX942:       ; %bb.0:5400; GFX942-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5401; GFX942-NEXT:    ;;#ASMSTART5402; GFX942-NEXT:    ; def s[8:9]5403; GFX942-NEXT:    ;;#ASMEND5404; GFX942-NEXT:    ;;#ASMSTART5405; GFX942-NEXT:    ; def s[0:1]5406; GFX942-NEXT:    ;;#ASMEND5407; GFX942-NEXT:    s_mov_b32 s8, s95408; GFX942-NEXT:    s_mov_b32 s10, s15409; GFX942-NEXT:    s_mov_b32 s11, s95410; GFX942-NEXT:    ;;#ASMSTART5411; GFX942-NEXT:    ; use s[8:11]5412; GFX942-NEXT:    ;;#ASMEND5413; GFX942-NEXT:    s_setpc_b64 s[30:31]5414  %vec0 = call <2 x float> asm "; def $0", "=s"()5415  %vec1 = call <2 x float> asm "; def $0", "=s"()5416  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 3>5417  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)5418  ret void5419}5420 5421define void @s_shuffle_v4f32_v2f32__3_3_2_3() {5422; GFX9-LABEL: s_shuffle_v4f32_v2f32__3_3_2_3:5423; GFX9:       ; %bb.0:5424; GFX9-NEXT:    s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5425; GFX9-NEXT:    ;;#ASMSTART5426; GFX9-NEXT:    ; def s[10:11]5427; GFX9-NEXT:    ;;#ASMEND5428; GFX9-NEXT:    s_mov_b32 s8, s115429; GFX9-NEXT:    s_mov_b32 s9, s115430; GFX9-NEXT:    ;;#ASMSTART5431; GFX9-NEXT:    ; use s[8:11]5432; GFX9-NEXT:    ;;#ASMEND5433; GFX9-NEXT:    s_setpc_b64 s[30:31]5434  %vec0 = call <2 x float> asm "; def $0", "=s"()5435  %vec1 = call <2 x float> asm "; def $0", "=s"()5436  %shuf = shufflevector <2 x float> %vec0, <2 x float> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 3>5437  call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x float> %shuf)5438  ret void5439}5440;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:5441; GFX90APLUS: {{.*}}5442