5450 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_v4p3_v2p3__u_u_u_u(ptr addrspace(1) inreg %ptr) {8; GFX9-LABEL: v_shuffle_v4p3_v2p3__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 ptr addrspace(3)> asm "; def $0", "=v"()13 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> poison14 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 1615 ret void16}17 18define void @v_shuffle_v4p3_v2p3__0_u_u_u(ptr addrspace(1) inreg %ptr) {19; GFX900-LABEL: v_shuffle_v4p3_v2p3__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_v4p3_v2p3__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_v4p3_v2p3__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 ptr addrspace(3)> asm "; def $0", "=v"()52 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>53 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 1654 ret void55}56 57define void @v_shuffle_v4p3_v2p3__1_u_u_u(ptr addrspace(1) inreg %ptr) {58; GFX900-LABEL: v_shuffle_v4p3_v2p3__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_v4p3_v2p3__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_v4p3_v2p3__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 ptr addrspace(3)> asm "; def $0", "=v"()93 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>94 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 1695 ret void96}97 98define void @v_shuffle_v4p3_v2p3__2_u_u_u(ptr addrspace(1) inreg %ptr) {99; GFX9-LABEL: v_shuffle_v4p3_v2p3__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 ptr addrspace(3)> asm "; def $0", "=v"()104 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison>105 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16106 ret void107}108 109define void @v_shuffle_v4p3_v2p3__3_u_u_u(ptr addrspace(1) inreg %ptr) {110; GFX900-LABEL: v_shuffle_v4p3_v2p3__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_v4p3_v2p3__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_v4p3_v2p3__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 ptr addrspace(3)> asm "; def $0", "=v"()145 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()146 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison>147 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16148 ret void149}150 151define void @v_shuffle_v4p3_v2p3__3_0_u_u(ptr addrspace(1) inreg %ptr) {152; GFX900-LABEL: v_shuffle_v4p3_v2p3__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_v4p3_v2p3__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_v4p3_v2p3__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 ptr addrspace(3)> asm "; def $0", "=v"()197 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()198 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 0, i32 poison, i32 poison>199 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16200 ret void201}202 203define void @v_shuffle_v4p3_v2p3__3_1_u_u(ptr addrspace(1) inreg %ptr) {204; GFX900-LABEL: v_shuffle_v4p3_v2p3__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_v4p3_v2p3__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_v4p3_v2p3__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 ptr addrspace(3)> asm "; def $0", "=v"()249 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()250 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 1, i32 poison, i32 poison>251 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16252 ret void253}254 255define void @v_shuffle_v4p3_v2p3__3_2_u_u(ptr addrspace(1) inreg %ptr) {256; GFX900-LABEL: v_shuffle_v4p3_v2p3__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_v4p3_v2p3__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_v4p3_v2p3__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 ptr addrspace(3)> asm "; def $0", "=v"()295 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()296 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 2, i32 poison, i32 poison>297 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16298 ret void299}300 301define void @v_shuffle_v4p3_v2p3__3_3_u_u(ptr addrspace(1) inreg %ptr) {302; GFX900-LABEL: v_shuffle_v4p3_v2p3__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_v4p3_v2p3__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_v4p3_v2p3__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 ptr addrspace(3)> asm "; def $0", "=v"()338 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()339 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 poison>340 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16341 ret void342}343 344define void @v_shuffle_v4p3_v2p3__3_3_0_u(ptr addrspace(1) inreg %ptr) {345; GFX900-LABEL: v_shuffle_v4p3_v2p3__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_v4p3_v2p3__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_v4p3_v2p3__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 ptr addrspace(3)> asm "; def $0", "=v"()390 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()391 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 poison>392 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16393 ret void394}395 396define void @v_shuffle_v4p3_v2p3__3_3_1_u(ptr addrspace(1) inreg %ptr) {397; GFX900-LABEL: v_shuffle_v4p3_v2p3__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_v4p3_v2p3__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_v4p3_v2p3__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 ptr addrspace(3)> asm "; def $0", "=v"()444 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()445 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 poison>446 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16447 ret void448}449 450define void @v_shuffle_v4p3_v2p3__3_3_2_u(ptr addrspace(1) inreg %ptr) {451; GFX900-LABEL: v_shuffle_v4p3_v2p3__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_v4p3_v2p3__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_v4p3_v2p3__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 ptr addrspace(3)> asm "; def $0", "=v"()491 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()492 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 poison>493 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16494 ret void495}496 497define void @v_shuffle_v4p3_v2p3__3_3_3_u(ptr addrspace(1) inreg %ptr) {498; GFX900-LABEL: v_shuffle_v4p3_v2p3__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_v4p3_v2p3__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_v4p3_v2p3__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 ptr addrspace(3)> asm "; def $0", "=v"()537 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()538 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 poison>539 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16540 ret void541}542 543define void @v_shuffle_v4p3_v2p3__3_3_3_0(ptr addrspace(1) inreg %ptr) {544; GFX900-LABEL: v_shuffle_v4p3_v2p3__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_v4p3_v2p3__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_v4p3_v2p3__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 ptr addrspace(3)> asm "; def $0", "=v"()592 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()593 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 0>594 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16595 ret void596}597 598define void @v_shuffle_v4p3_v2p3__3_3_3_1(ptr addrspace(1) inreg %ptr) {599; GFX900-LABEL: v_shuffle_v4p3_v2p3__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_v4p3_v2p3__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_v4p3_v2p3__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 ptr addrspace(3)> asm "; def $0", "=v"()647 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()648 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 1>649 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16650 ret void651}652 653define void @v_shuffle_v4p3_v2p3__3_3_3_2(ptr addrspace(1) inreg %ptr) {654; GFX900-LABEL: v_shuffle_v4p3_v2p3__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_v4p3_v2p3__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_v4p3_v2p3__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 ptr addrspace(3)> asm "; def $0", "=v"()694 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()695 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 2>696 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16697 ret void698}699 700define void @v_shuffle_v4p3_v2p3__3_3_3_3(ptr addrspace(1) inreg %ptr) {701; GFX900-LABEL: v_shuffle_v4p3_v2p3__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_v4p3_v2p3__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_v4p3_v2p3__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 ptr addrspace(3)> asm "; def $0", "=v"()743 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()744 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 3>745 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16746 ret void747}748 749define void @v_shuffle_v4p3_v2p3__u_0_0_0(ptr addrspace(1) inreg %ptr) {750; GFX900-LABEL: v_shuffle_v4p3_v2p3__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[0:1]755; GFX900-NEXT: ;;#ASMEND756; GFX900-NEXT: v_mov_b32_e32 v4, 0757; GFX900-NEXT: v_mov_b32_e32 v1, v0758; GFX900-NEXT: v_mov_b32_e32 v2, v0759; GFX900-NEXT: v_mov_b32_e32 v3, v0760; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]761; GFX900-NEXT: s_waitcnt vmcnt(0)762; GFX900-NEXT: s_setpc_b64 s[30:31]763;764; GFX90A-LABEL: v_shuffle_v4p3_v2p3__u_0_0_0:765; GFX90A: ; %bb.0:766; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)767; GFX90A-NEXT: ;;#ASMSTART768; GFX90A-NEXT: ; def v[0:1]769; GFX90A-NEXT: ;;#ASMEND770; GFX90A-NEXT: v_mov_b32_e32 v4, 0771; GFX90A-NEXT: v_mov_b32_e32 v1, v0772; GFX90A-NEXT: v_mov_b32_e32 v2, v0773; GFX90A-NEXT: v_mov_b32_e32 v3, v0774; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]775; GFX90A-NEXT: s_waitcnt vmcnt(0)776; GFX90A-NEXT: s_setpc_b64 s[30:31]777;778; GFX942-LABEL: v_shuffle_v4p3_v2p3__u_0_0_0:779; GFX942: ; %bb.0:780; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)781; GFX942-NEXT: ;;#ASMSTART782; GFX942-NEXT: ; def v[0:1]783; GFX942-NEXT: ;;#ASMEND784; GFX942-NEXT: v_mov_b32_e32 v4, 0785; GFX942-NEXT: v_mov_b32_e32 v1, v0786; GFX942-NEXT: v_mov_b32_e32 v2, v0787; GFX942-NEXT: v_mov_b32_e32 v3, v0788; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]789; GFX942-NEXT: s_waitcnt vmcnt(0)790; GFX942-NEXT: s_setpc_b64 s[30:31]791 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()792 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0>793 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16794 ret void795}796 797define void @v_shuffle_v4p3_v2p3__0_0_0_0(ptr addrspace(1) inreg %ptr) {798; GFX900-LABEL: v_shuffle_v4p3_v2p3__0_0_0_0:799; GFX900: ; %bb.0:800; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)801; GFX900-NEXT: ;;#ASMSTART802; GFX900-NEXT: ; def v[0:1]803; GFX900-NEXT: ;;#ASMEND804; GFX900-NEXT: v_mov_b32_e32 v4, 0805; GFX900-NEXT: v_mov_b32_e32 v1, v0806; GFX900-NEXT: v_mov_b32_e32 v2, v0807; GFX900-NEXT: v_mov_b32_e32 v3, v0808; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]809; GFX900-NEXT: s_waitcnt vmcnt(0)810; GFX900-NEXT: s_setpc_b64 s[30:31]811;812; GFX90A-LABEL: v_shuffle_v4p3_v2p3__0_0_0_0:813; GFX90A: ; %bb.0:814; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)815; GFX90A-NEXT: ;;#ASMSTART816; GFX90A-NEXT: ; def v[0:1]817; GFX90A-NEXT: ;;#ASMEND818; GFX90A-NEXT: v_mov_b32_e32 v4, 0819; GFX90A-NEXT: v_mov_b32_e32 v1, v0820; GFX90A-NEXT: v_mov_b32_e32 v2, v0821; GFX90A-NEXT: v_mov_b32_e32 v3, v0822; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]823; GFX90A-NEXT: s_waitcnt vmcnt(0)824; GFX90A-NEXT: s_setpc_b64 s[30:31]825;826; GFX942-LABEL: v_shuffle_v4p3_v2p3__0_0_0_0:827; GFX942: ; %bb.0:828; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)829; GFX942-NEXT: ;;#ASMSTART830; GFX942-NEXT: ; def v[0:1]831; GFX942-NEXT: ;;#ASMEND832; GFX942-NEXT: v_mov_b32_e32 v4, 0833; GFX942-NEXT: v_mov_b32_e32 v1, v0834; GFX942-NEXT: v_mov_b32_e32 v2, v0835; GFX942-NEXT: v_mov_b32_e32 v3, v0836; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]837; GFX942-NEXT: s_waitcnt vmcnt(0)838; GFX942-NEXT: s_setpc_b64 s[30:31]839 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()840 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> zeroinitializer841 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16842 ret void843}844 845define void @v_shuffle_v4p3_v2p3__1_0_0_0(ptr addrspace(1) inreg %ptr) {846; GFX900-LABEL: v_shuffle_v4p3_v2p3__1_0_0_0:847; GFX900: ; %bb.0:848; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)849; GFX900-NEXT: v_mov_b32_e32 v5, 0850; GFX900-NEXT: ;;#ASMSTART851; GFX900-NEXT: ; def v[0:1]852; GFX900-NEXT: ;;#ASMEND853; GFX900-NEXT: v_mov_b32_e32 v2, v0854; GFX900-NEXT: v_mov_b32_e32 v3, v0855; GFX900-NEXT: v_mov_b32_e32 v4, v0856; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]857; GFX900-NEXT: s_waitcnt vmcnt(0)858; GFX900-NEXT: s_setpc_b64 s[30:31]859;860; GFX90A-LABEL: v_shuffle_v4p3_v2p3__1_0_0_0:861; GFX90A: ; %bb.0:862; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)863; GFX90A-NEXT: ;;#ASMSTART864; GFX90A-NEXT: ; def v[2:3]865; GFX90A-NEXT: ;;#ASMEND866; GFX90A-NEXT: v_mov_b32_e32 v4, 0867; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]868; GFX90A-NEXT: v_mov_b32_e32 v3, v2869; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]870; GFX90A-NEXT: s_waitcnt vmcnt(0)871; GFX90A-NEXT: s_setpc_b64 s[30:31]872;873; GFX942-LABEL: v_shuffle_v4p3_v2p3__1_0_0_0:874; GFX942: ; %bb.0:875; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)876; GFX942-NEXT: ;;#ASMSTART877; GFX942-NEXT: ; def v[2:3]878; GFX942-NEXT: ;;#ASMEND879; GFX942-NEXT: v_mov_b32_e32 v4, 0880; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]881; GFX942-NEXT: v_mov_b32_e32 v3, v2882; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]883; GFX942-NEXT: s_waitcnt vmcnt(0)884; GFX942-NEXT: s_setpc_b64 s[30:31]885 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()886 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>887 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16888 ret void889}890 891define void @v_shuffle_v4p3_v2p3__2_0_0_0(ptr addrspace(1) inreg %ptr) {892; GFX900-LABEL: v_shuffle_v4p3_v2p3__2_0_0_0:893; GFX900: ; %bb.0:894; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)895; GFX900-NEXT: ;;#ASMSTART896; GFX900-NEXT: ; def v[0:1]897; GFX900-NEXT: ;;#ASMEND898; GFX900-NEXT: v_mov_b32_e32 v4, 0899; GFX900-NEXT: v_mov_b32_e32 v1, v0900; GFX900-NEXT: v_mov_b32_e32 v2, v0901; GFX900-NEXT: v_mov_b32_e32 v3, v0902; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]903; GFX900-NEXT: s_waitcnt vmcnt(0)904; GFX900-NEXT: s_setpc_b64 s[30:31]905;906; GFX90A-LABEL: v_shuffle_v4p3_v2p3__2_0_0_0:907; GFX90A: ; %bb.0:908; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)909; GFX90A-NEXT: ;;#ASMSTART910; GFX90A-NEXT: ; def v[0:1]911; GFX90A-NEXT: ;;#ASMEND912; GFX90A-NEXT: v_mov_b32_e32 v4, 0913; GFX90A-NEXT: v_mov_b32_e32 v1, v0914; GFX90A-NEXT: v_mov_b32_e32 v2, v0915; GFX90A-NEXT: v_mov_b32_e32 v3, v0916; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]917; GFX90A-NEXT: s_waitcnt vmcnt(0)918; GFX90A-NEXT: s_setpc_b64 s[30:31]919;920; GFX942-LABEL: v_shuffle_v4p3_v2p3__2_0_0_0:921; GFX942: ; %bb.0:922; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)923; GFX942-NEXT: ;;#ASMSTART924; GFX942-NEXT: ; def v[0:1]925; GFX942-NEXT: ;;#ASMEND926; GFX942-NEXT: v_mov_b32_e32 v4, 0927; GFX942-NEXT: v_mov_b32_e32 v1, v0928; GFX942-NEXT: v_mov_b32_e32 v2, v0929; GFX942-NEXT: v_mov_b32_e32 v3, v0930; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]931; GFX942-NEXT: s_waitcnt vmcnt(0)932; GFX942-NEXT: s_setpc_b64 s[30:31]933 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()934 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0>935 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16936 ret void937}938 939define void @v_shuffle_v4p3_v2p3__3_0_0_0(ptr addrspace(1) inreg %ptr) {940; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_0_0_0:941; GFX900: ; %bb.0:942; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)943; GFX900-NEXT: ;;#ASMSTART944; GFX900-NEXT: ; def v[2:3]945; GFX900-NEXT: ;;#ASMEND946; GFX900-NEXT: v_mov_b32_e32 v5, 0947; GFX900-NEXT: v_mov_b32_e32 v3, v2948; GFX900-NEXT: v_mov_b32_e32 v4, v2949; GFX900-NEXT: ;;#ASMSTART950; GFX900-NEXT: ; def v[0:1]951; GFX900-NEXT: ;;#ASMEND952; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]953; GFX900-NEXT: s_waitcnt vmcnt(0)954; GFX900-NEXT: s_setpc_b64 s[30:31]955;956; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_0_0_0:957; GFX90A: ; %bb.0:958; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)959; GFX90A-NEXT: ;;#ASMSTART960; GFX90A-NEXT: ; def v[2:3]961; GFX90A-NEXT: ;;#ASMEND962; GFX90A-NEXT: ;;#ASMSTART963; GFX90A-NEXT: ; def v[0:1]964; GFX90A-NEXT: ;;#ASMEND965; GFX90A-NEXT: v_mov_b32_e32 v4, 0966; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[2:3] op_sel:[1,0]967; GFX90A-NEXT: v_mov_b32_e32 v3, v2968; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]969; GFX90A-NEXT: s_waitcnt vmcnt(0)970; GFX90A-NEXT: s_setpc_b64 s[30:31]971;972; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_0_0_0:973; GFX942: ; %bb.0:974; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)975; GFX942-NEXT: ;;#ASMSTART976; GFX942-NEXT: ; def v[2:3]977; GFX942-NEXT: ;;#ASMEND978; GFX942-NEXT: ;;#ASMSTART979; GFX942-NEXT: ; def v[0:1]980; GFX942-NEXT: ;;#ASMEND981; GFX942-NEXT: v_mov_b32_e32 v4, 0982; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[2:3] op_sel:[1,0]983; GFX942-NEXT: v_mov_b32_e32 v3, v2984; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]985; GFX942-NEXT: s_waitcnt vmcnt(0)986; GFX942-NEXT: s_setpc_b64 s[30:31]987 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()988 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()989 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 0, i32 0, i32 0>990 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16991 ret void992}993 994define void @v_shuffle_v4p3_v2p3__3_u_0_0(ptr addrspace(1) inreg %ptr) {995; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_u_0_0:996; GFX900: ; %bb.0:997; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)998; GFX900-NEXT: ;;#ASMSTART999; GFX900-NEXT: ; def v[3:4]1000; GFX900-NEXT: ;;#ASMEND1001; GFX900-NEXT: v_mov_b32_e32 v2, 01002; GFX900-NEXT: v_mov_b32_e32 v4, v31003; GFX900-NEXT: ;;#ASMSTART1004; GFX900-NEXT: ; def v[0:1]1005; GFX900-NEXT: ;;#ASMEND1006; GFX900-NEXT: global_store_dwordx4 v2, v[1:4], s[16:17]1007; GFX900-NEXT: s_waitcnt vmcnt(0)1008; GFX900-NEXT: s_setpc_b64 s[30:31]1009;1010; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_u_0_0:1011; GFX90A: ; %bb.0:1012; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1013; GFX90A-NEXT: ;;#ASMSTART1014; GFX90A-NEXT: ; def v[2:3]1015; GFX90A-NEXT: ;;#ASMEND1016; GFX90A-NEXT: ;;#ASMSTART1017; GFX90A-NEXT: ; def v[0:1]1018; GFX90A-NEXT: ;;#ASMEND1019; GFX90A-NEXT: v_mov_b32_e32 v4, 01020; GFX90A-NEXT: v_mov_b32_e32 v0, v11021; GFX90A-NEXT: v_mov_b32_e32 v3, v21022; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]1023; GFX90A-NEXT: s_waitcnt vmcnt(0)1024; GFX90A-NEXT: s_setpc_b64 s[30:31]1025;1026; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_u_0_0:1027; GFX942: ; %bb.0:1028; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1029; GFX942-NEXT: ;;#ASMSTART1030; GFX942-NEXT: ; def v[2:3]1031; GFX942-NEXT: ;;#ASMEND1032; GFX942-NEXT: ;;#ASMSTART1033; GFX942-NEXT: ; def v[0:1]1034; GFX942-NEXT: ;;#ASMEND1035; GFX942-NEXT: v_mov_b32_e32 v4, 01036; GFX942-NEXT: v_mov_b32_e32 v0, v11037; GFX942-NEXT: v_mov_b32_e32 v3, v21038; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]1039; GFX942-NEXT: s_waitcnt vmcnt(0)1040; GFX942-NEXT: s_setpc_b64 s[30:31]1041 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1042 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1043 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 poison, i32 0, i32 0>1044 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161045 ret void1046}1047 1048define void @v_shuffle_v4p3_v2p3__3_1_0_0(ptr addrspace(1) inreg %ptr) {1049; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_1_0_0:1050; GFX900: ; %bb.0:1051; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1052; GFX900-NEXT: ;;#ASMSTART1053; GFX900-NEXT: ; def v[3:4]1054; GFX900-NEXT: ;;#ASMEND1055; GFX900-NEXT: v_mov_b32_e32 v5, 01056; GFX900-NEXT: v_mov_b32_e32 v2, v41057; GFX900-NEXT: v_mov_b32_e32 v4, v31058; GFX900-NEXT: ;;#ASMSTART1059; GFX900-NEXT: ; def v[0:1]1060; GFX900-NEXT: ;;#ASMEND1061; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]1062; GFX900-NEXT: s_waitcnt vmcnt(0)1063; GFX900-NEXT: s_setpc_b64 s[30:31]1064;1065; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_1_0_0:1066; GFX90A: ; %bb.0:1067; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1068; GFX90A-NEXT: ;;#ASMSTART1069; GFX90A-NEXT: ; def v[2:3]1070; GFX90A-NEXT: ;;#ASMEND1071; GFX90A-NEXT: ;;#ASMSTART1072; GFX90A-NEXT: ; def v[0:1]1073; GFX90A-NEXT: ;;#ASMEND1074; GFX90A-NEXT: v_mov_b32_e32 v4, 01075; GFX90A-NEXT: v_mov_b32_e32 v0, v11076; GFX90A-NEXT: v_mov_b32_e32 v1, v31077; GFX90A-NEXT: v_mov_b32_e32 v3, v21078; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]1079; GFX90A-NEXT: s_waitcnt vmcnt(0)1080; GFX90A-NEXT: s_setpc_b64 s[30:31]1081;1082; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_1_0_0:1083; GFX942: ; %bb.0:1084; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1085; GFX942-NEXT: ;;#ASMSTART1086; GFX942-NEXT: ; def v[2:3]1087; GFX942-NEXT: ;;#ASMEND1088; GFX942-NEXT: ;;#ASMSTART1089; GFX942-NEXT: ; def v[0:1]1090; GFX942-NEXT: ;;#ASMEND1091; GFX942-NEXT: v_mov_b32_e32 v4, 01092; GFX942-NEXT: v_mov_b32_e32 v0, v11093; GFX942-NEXT: v_mov_b32_e32 v1, v31094; GFX942-NEXT: v_mov_b32_e32 v3, v21095; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]1096; GFX942-NEXT: s_waitcnt vmcnt(0)1097; GFX942-NEXT: s_setpc_b64 s[30:31]1098 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1099 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1100 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 1, i32 0, i32 0>1101 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161102 ret void1103}1104 1105define void @v_shuffle_v4p3_v2p3__3_2_0_0(ptr addrspace(1) inreg %ptr) {1106; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_2_0_0:1107; GFX900: ; %bb.0:1108; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1109; GFX900-NEXT: ;;#ASMSTART1110; GFX900-NEXT: ; def v[3:4]1111; GFX900-NEXT: ;;#ASMEND1112; GFX900-NEXT: v_mov_b32_e32 v5, 01113; GFX900-NEXT: ;;#ASMSTART1114; GFX900-NEXT: ; def v[0:1]1115; GFX900-NEXT: ;;#ASMEND1116; GFX900-NEXT: v_mov_b32_e32 v2, v01117; GFX900-NEXT: v_mov_b32_e32 v4, v31118; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]1119; GFX900-NEXT: s_waitcnt vmcnt(0)1120; GFX900-NEXT: s_setpc_b64 s[30:31]1121;1122; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_2_0_0:1123; GFX90A: ; %bb.0:1124; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1125; GFX90A-NEXT: ;;#ASMSTART1126; GFX90A-NEXT: ; def v[2:3]1127; GFX90A-NEXT: ;;#ASMEND1128; GFX90A-NEXT: ;;#ASMSTART1129; GFX90A-NEXT: ; def v[0:1]1130; GFX90A-NEXT: ;;#ASMEND1131; GFX90A-NEXT: v_mov_b32_e32 v4, 01132; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]1133; GFX90A-NEXT: v_mov_b32_e32 v3, v21134; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]1135; GFX90A-NEXT: s_waitcnt vmcnt(0)1136; GFX90A-NEXT: s_setpc_b64 s[30:31]1137;1138; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_2_0_0:1139; GFX942: ; %bb.0:1140; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1141; GFX942-NEXT: ;;#ASMSTART1142; GFX942-NEXT: ; def v[2:3]1143; GFX942-NEXT: ;;#ASMEND1144; GFX942-NEXT: ;;#ASMSTART1145; GFX942-NEXT: ; def v[0:1]1146; GFX942-NEXT: ;;#ASMEND1147; GFX942-NEXT: v_mov_b32_e32 v4, 01148; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]1149; GFX942-NEXT: v_mov_b32_e32 v3, v21150; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]1151; GFX942-NEXT: s_waitcnt vmcnt(0)1152; GFX942-NEXT: s_setpc_b64 s[30:31]1153 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1154 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1155 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 2, i32 0, i32 0>1156 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161157 ret void1158}1159 1160define void @v_shuffle_v4p3_v2p3__3_3_0_0(ptr addrspace(1) inreg %ptr) {1161; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_0_0:1162; GFX900: ; %bb.0:1163; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1164; GFX900-NEXT: ;;#ASMSTART1165; GFX900-NEXT: ; def v[3:4]1166; GFX900-NEXT: ;;#ASMEND1167; GFX900-NEXT: v_mov_b32_e32 v5, 01168; GFX900-NEXT: ;;#ASMSTART1169; GFX900-NEXT: ; def v[0:1]1170; GFX900-NEXT: ;;#ASMEND1171; GFX900-NEXT: v_mov_b32_e32 v2, v11172; GFX900-NEXT: v_mov_b32_e32 v4, v31173; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]1174; GFX900-NEXT: s_waitcnt vmcnt(0)1175; GFX900-NEXT: s_setpc_b64 s[30:31]1176;1177; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_0_0:1178; GFX90A: ; %bb.0:1179; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1180; GFX90A-NEXT: ;;#ASMSTART1181; GFX90A-NEXT: ; def v[2:3]1182; GFX90A-NEXT: ;;#ASMEND1183; GFX90A-NEXT: ;;#ASMSTART1184; GFX90A-NEXT: ; def v[0:1]1185; GFX90A-NEXT: ;;#ASMEND1186; GFX90A-NEXT: v_mov_b32_e32 v4, 01187; GFX90A-NEXT: v_mov_b32_e32 v0, v11188; GFX90A-NEXT: v_mov_b32_e32 v3, v21189; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]1190; GFX90A-NEXT: s_waitcnt vmcnt(0)1191; GFX90A-NEXT: s_setpc_b64 s[30:31]1192;1193; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_0_0:1194; GFX942: ; %bb.0:1195; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1196; GFX942-NEXT: ;;#ASMSTART1197; GFX942-NEXT: ; def v[2:3]1198; GFX942-NEXT: ;;#ASMEND1199; GFX942-NEXT: ;;#ASMSTART1200; GFX942-NEXT: ; def v[0:1]1201; GFX942-NEXT: ;;#ASMEND1202; GFX942-NEXT: v_mov_b32_e32 v4, 01203; GFX942-NEXT: v_mov_b32_e32 v0, v11204; GFX942-NEXT: v_mov_b32_e32 v3, v21205; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]1206; GFX942-NEXT: s_waitcnt vmcnt(0)1207; GFX942-NEXT: s_setpc_b64 s[30:31]1208 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1209 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1210 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 0>1211 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161212 ret void1213}1214 1215define void @v_shuffle_v4p3_v2p3__3_3_u_0(ptr addrspace(1) inreg %ptr) {1216; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_u_0:1217; GFX900: ; %bb.0:1218; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1219; GFX900-NEXT: v_mov_b32_e32 v3, 01220; GFX900-NEXT: ;;#ASMSTART1221; GFX900-NEXT: ; def v[0:1]1222; GFX900-NEXT: ;;#ASMEND1223; GFX900-NEXT: v_mov_b32_e32 v2, v11224; GFX900-NEXT: ;;#ASMSTART1225; GFX900-NEXT: ; def v[4:5]1226; GFX900-NEXT: ;;#ASMEND1227; GFX900-NEXT: global_store_dwordx4 v3, v[1:4], s[16:17]1228; GFX900-NEXT: s_waitcnt vmcnt(0)1229; GFX900-NEXT: s_setpc_b64 s[30:31]1230;1231; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_u_0:1232; GFX90A: ; %bb.0:1233; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1234; GFX90A-NEXT: ;;#ASMSTART1235; GFX90A-NEXT: ; def v[2:3]1236; GFX90A-NEXT: ;;#ASMEND1237; GFX90A-NEXT: ;;#ASMSTART1238; GFX90A-NEXT: ; def v[0:1]1239; GFX90A-NEXT: ;;#ASMEND1240; GFX90A-NEXT: v_mov_b32_e32 v4, 01241; GFX90A-NEXT: v_mov_b32_e32 v0, v11242; GFX90A-NEXT: v_mov_b32_e32 v3, v21243; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]1244; GFX90A-NEXT: s_waitcnt vmcnt(0)1245; GFX90A-NEXT: s_setpc_b64 s[30:31]1246;1247; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_u_0:1248; GFX942: ; %bb.0:1249; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1250; GFX942-NEXT: ;;#ASMSTART1251; GFX942-NEXT: ; def v[2:3]1252; GFX942-NEXT: ;;#ASMEND1253; GFX942-NEXT: ;;#ASMSTART1254; GFX942-NEXT: ; def v[0:1]1255; GFX942-NEXT: ;;#ASMEND1256; GFX942-NEXT: v_mov_b32_e32 v4, 01257; GFX942-NEXT: v_mov_b32_e32 v0, v11258; GFX942-NEXT: v_mov_b32_e32 v3, v21259; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]1260; GFX942-NEXT: s_waitcnt vmcnt(0)1261; GFX942-NEXT: s_setpc_b64 s[30:31]1262 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1263 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1264 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 0>1265 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161266 ret void1267}1268 1269define void @v_shuffle_v4p3_v2p3__3_3_1_0(ptr addrspace(1) inreg %ptr) {1270; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_1_0:1271; GFX900: ; %bb.0:1272; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1273; GFX900-NEXT: v_mov_b32_e32 v6, 01274; GFX900-NEXT: ;;#ASMSTART1275; GFX900-NEXT: ; def v[4:5]1276; GFX900-NEXT: ;;#ASMEND1277; GFX900-NEXT: ;;#ASMSTART1278; GFX900-NEXT: ; def v[0:1]1279; GFX900-NEXT: ;;#ASMEND1280; GFX900-NEXT: v_mov_b32_e32 v2, v11281; GFX900-NEXT: v_mov_b32_e32 v3, v51282; GFX900-NEXT: global_store_dwordx4 v6, v[1:4], s[16:17]1283; GFX900-NEXT: s_waitcnt vmcnt(0)1284; GFX900-NEXT: s_setpc_b64 s[30:31]1285;1286; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_1_0:1287; GFX90A: ; %bb.0:1288; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1289; GFX90A-NEXT: ;;#ASMSTART1290; GFX90A-NEXT: ; def v[2:3]1291; GFX90A-NEXT: ;;#ASMEND1292; GFX90A-NEXT: ;;#ASMSTART1293; GFX90A-NEXT: ; def v[0:1]1294; GFX90A-NEXT: ;;#ASMEND1295; GFX90A-NEXT: v_mov_b32_e32 v4, 01296; GFX90A-NEXT: v_pk_mov_b32 v[2:3], v[2:3], v[2:3] op_sel:[1,0]1297; GFX90A-NEXT: v_mov_b32_e32 v0, v11298; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]1299; GFX90A-NEXT: s_waitcnt vmcnt(0)1300; GFX90A-NEXT: s_setpc_b64 s[30:31]1301;1302; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_1_0:1303; GFX942: ; %bb.0:1304; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1305; GFX942-NEXT: ;;#ASMSTART1306; GFX942-NEXT: ; def v[2:3]1307; GFX942-NEXT: ;;#ASMEND1308; GFX942-NEXT: ;;#ASMSTART1309; GFX942-NEXT: ; def v[0:1]1310; GFX942-NEXT: ;;#ASMEND1311; GFX942-NEXT: v_mov_b32_e32 v4, 01312; GFX942-NEXT: v_pk_mov_b32 v[2:3], v[2:3], v[2:3] op_sel:[1,0]1313; GFX942-NEXT: v_mov_b32_e32 v0, v11314; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]1315; GFX942-NEXT: s_waitcnt vmcnt(0)1316; GFX942-NEXT: s_setpc_b64 s[30:31]1317 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1318 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1319 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 0>1320 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161321 ret void1322}1323 1324define void @v_shuffle_v4p3_v2p3__3_3_2_0(ptr addrspace(1) inreg %ptr) {1325; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_2_0:1326; GFX900: ; %bb.0:1327; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1328; GFX900-NEXT: v_mov_b32_e32 v6, 01329; GFX900-NEXT: ;;#ASMSTART1330; GFX900-NEXT: ; def v[0:1]1331; GFX900-NEXT: ;;#ASMEND1332; GFX900-NEXT: v_mov_b32_e32 v2, v11333; GFX900-NEXT: v_mov_b32_e32 v3, v01334; GFX900-NEXT: ;;#ASMSTART1335; GFX900-NEXT: ; def v[4:5]1336; GFX900-NEXT: ;;#ASMEND1337; GFX900-NEXT: global_store_dwordx4 v6, v[1:4], s[16:17]1338; GFX900-NEXT: s_waitcnt vmcnt(0)1339; GFX900-NEXT: s_setpc_b64 s[30:31]1340;1341; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_2_0:1342; GFX90A: ; %bb.0:1343; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1344; GFX90A-NEXT: ;;#ASMSTART1345; GFX90A-NEXT: ; def v[2:3]1346; GFX90A-NEXT: ;;#ASMEND1347; GFX90A-NEXT: v_mov_b32_e32 v6, 01348; GFX90A-NEXT: ;;#ASMSTART1349; GFX90A-NEXT: ; def v[4:5]1350; GFX90A-NEXT: ;;#ASMEND1351; GFX90A-NEXT: v_mov_b32_e32 v0, v31352; GFX90A-NEXT: v_mov_b32_e32 v1, v31353; GFX90A-NEXT: v_mov_b32_e32 v3, v41354; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]1355; GFX90A-NEXT: s_waitcnt vmcnt(0)1356; GFX90A-NEXT: s_setpc_b64 s[30:31]1357;1358; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_2_0:1359; GFX942: ; %bb.0:1360; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1361; GFX942-NEXT: ;;#ASMSTART1362; GFX942-NEXT: ; def v[2:3]1363; GFX942-NEXT: ;;#ASMEND1364; GFX942-NEXT: v_mov_b32_e32 v6, 01365; GFX942-NEXT: ;;#ASMSTART1366; GFX942-NEXT: ; def v[4:5]1367; GFX942-NEXT: ;;#ASMEND1368; GFX942-NEXT: v_mov_b32_e32 v0, v31369; GFX942-NEXT: v_mov_b32_e32 v1, v31370; GFX942-NEXT: v_mov_b32_e32 v3, v41371; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]1372; GFX942-NEXT: s_waitcnt vmcnt(0)1373; GFX942-NEXT: s_setpc_b64 s[30:31]1374 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1375 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1376 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 0>1377 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161378 ret void1379}1380 1381define void @v_shuffle_v4p3_v2p3__u_1_1_1(ptr addrspace(1) inreg %ptr) {1382; GFX900-LABEL: v_shuffle_v4p3_v2p3__u_1_1_1:1383; GFX900: ; %bb.0:1384; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1385; GFX900-NEXT: v_mov_b32_e32 v4, 01386; GFX900-NEXT: ;;#ASMSTART1387; GFX900-NEXT: ; def v[0:1]1388; GFX900-NEXT: ;;#ASMEND1389; GFX900-NEXT: v_mov_b32_e32 v2, v11390; GFX900-NEXT: v_mov_b32_e32 v3, v11391; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]1392; GFX900-NEXT: s_waitcnt vmcnt(0)1393; GFX900-NEXT: s_setpc_b64 s[30:31]1394;1395; GFX90A-LABEL: v_shuffle_v4p3_v2p3__u_1_1_1:1396; GFX90A: ; %bb.0:1397; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1398; GFX90A-NEXT: v_mov_b32_e32 v4, 01399; GFX90A-NEXT: ;;#ASMSTART1400; GFX90A-NEXT: ; def v[0:1]1401; GFX90A-NEXT: ;;#ASMEND1402; GFX90A-NEXT: v_mov_b32_e32 v2, v11403; GFX90A-NEXT: v_mov_b32_e32 v3, v11404; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]1405; GFX90A-NEXT: s_waitcnt vmcnt(0)1406; GFX90A-NEXT: s_setpc_b64 s[30:31]1407;1408; GFX942-LABEL: v_shuffle_v4p3_v2p3__u_1_1_1:1409; GFX942: ; %bb.0:1410; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1411; GFX942-NEXT: v_mov_b32_e32 v4, 01412; GFX942-NEXT: ;;#ASMSTART1413; GFX942-NEXT: ; def v[0:1]1414; GFX942-NEXT: ;;#ASMEND1415; GFX942-NEXT: s_nop 01416; GFX942-NEXT: v_mov_b32_e32 v2, v11417; GFX942-NEXT: v_mov_b32_e32 v3, v11418; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]1419; GFX942-NEXT: s_waitcnt vmcnt(0)1420; GFX942-NEXT: s_setpc_b64 s[30:31]1421 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1422 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1>1423 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161424 ret void1425}1426 1427define void @v_shuffle_v4p3_v2p3__0_1_1_1(ptr addrspace(1) inreg %ptr) {1428; GFX900-LABEL: v_shuffle_v4p3_v2p3__0_1_1_1:1429; GFX900: ; %bb.0:1430; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1431; GFX900-NEXT: v_mov_b32_e32 v4, 01432; GFX900-NEXT: ;;#ASMSTART1433; GFX900-NEXT: ; def v[0:1]1434; GFX900-NEXT: ;;#ASMEND1435; GFX900-NEXT: v_mov_b32_e32 v2, v11436; GFX900-NEXT: v_mov_b32_e32 v3, v11437; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]1438; GFX900-NEXT: s_waitcnt vmcnt(0)1439; GFX900-NEXT: s_setpc_b64 s[30:31]1440;1441; GFX90A-LABEL: v_shuffle_v4p3_v2p3__0_1_1_1:1442; GFX90A: ; %bb.0:1443; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1444; GFX90A-NEXT: v_mov_b32_e32 v4, 01445; GFX90A-NEXT: ;;#ASMSTART1446; GFX90A-NEXT: ; def v[0:1]1447; GFX90A-NEXT: ;;#ASMEND1448; GFX90A-NEXT: v_mov_b32_e32 v2, v11449; GFX90A-NEXT: v_mov_b32_e32 v3, v11450; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]1451; GFX90A-NEXT: s_waitcnt vmcnt(0)1452; GFX90A-NEXT: s_setpc_b64 s[30:31]1453;1454; GFX942-LABEL: v_shuffle_v4p3_v2p3__0_1_1_1:1455; GFX942: ; %bb.0:1456; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1457; GFX942-NEXT: v_mov_b32_e32 v4, 01458; GFX942-NEXT: ;;#ASMSTART1459; GFX942-NEXT: ; def v[0:1]1460; GFX942-NEXT: ;;#ASMEND1461; GFX942-NEXT: s_nop 01462; GFX942-NEXT: v_mov_b32_e32 v2, v11463; GFX942-NEXT: v_mov_b32_e32 v3, v11464; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]1465; GFX942-NEXT: s_waitcnt vmcnt(0)1466; GFX942-NEXT: s_setpc_b64 s[30:31]1467 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1468 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1>1469 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161470 ret void1471}1472 1473define void @v_shuffle_v4p3_v2p3__1_1_1_1(ptr addrspace(1) inreg %ptr) {1474; GFX900-LABEL: v_shuffle_v4p3_v2p3__1_1_1_1:1475; GFX900: ; %bb.0:1476; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1477; GFX900-NEXT: v_mov_b32_e32 v5, 01478; GFX900-NEXT: ;;#ASMSTART1479; GFX900-NEXT: ; def v[0:1]1480; GFX900-NEXT: ;;#ASMEND1481; GFX900-NEXT: v_mov_b32_e32 v2, v11482; GFX900-NEXT: v_mov_b32_e32 v3, v11483; GFX900-NEXT: v_mov_b32_e32 v4, v11484; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]1485; GFX900-NEXT: s_waitcnt vmcnt(0)1486; GFX900-NEXT: s_setpc_b64 s[30:31]1487;1488; GFX90A-LABEL: v_shuffle_v4p3_v2p3__1_1_1_1:1489; GFX90A: ; %bb.0:1490; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1491; GFX90A-NEXT: ;;#ASMSTART1492; GFX90A-NEXT: ; def v[0:1]1493; GFX90A-NEXT: ;;#ASMEND1494; GFX90A-NEXT: v_mov_b32_e32 v4, 01495; GFX90A-NEXT: v_mov_b32_e32 v0, v11496; GFX90A-NEXT: v_mov_b32_e32 v2, v11497; GFX90A-NEXT: v_mov_b32_e32 v3, v11498; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]1499; GFX90A-NEXT: s_waitcnt vmcnt(0)1500; GFX90A-NEXT: s_setpc_b64 s[30:31]1501;1502; GFX942-LABEL: v_shuffle_v4p3_v2p3__1_1_1_1:1503; GFX942: ; %bb.0:1504; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1505; GFX942-NEXT: ;;#ASMSTART1506; GFX942-NEXT: ; def v[0:1]1507; GFX942-NEXT: ;;#ASMEND1508; GFX942-NEXT: v_mov_b32_e32 v4, 01509; GFX942-NEXT: v_mov_b32_e32 v0, v11510; GFX942-NEXT: v_mov_b32_e32 v2, v11511; GFX942-NEXT: v_mov_b32_e32 v3, v11512; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]1513; GFX942-NEXT: s_waitcnt vmcnt(0)1514; GFX942-NEXT: s_setpc_b64 s[30:31]1515 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1516 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>1517 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161518 ret void1519}1520 1521define void @v_shuffle_v4p3_v2p3__2_1_1_1(ptr addrspace(1) inreg %ptr) {1522; GFX900-LABEL: v_shuffle_v4p3_v2p3__2_1_1_1:1523; GFX900: ; %bb.0:1524; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1525; GFX900-NEXT: v_mov_b32_e32 v4, 01526; GFX900-NEXT: ;;#ASMSTART1527; GFX900-NEXT: ; def v[0:1]1528; GFX900-NEXT: ;;#ASMEND1529; GFX900-NEXT: v_mov_b32_e32 v2, v11530; GFX900-NEXT: v_mov_b32_e32 v3, v11531; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]1532; GFX900-NEXT: s_waitcnt vmcnt(0)1533; GFX900-NEXT: s_setpc_b64 s[30:31]1534;1535; GFX90A-LABEL: v_shuffle_v4p3_v2p3__2_1_1_1:1536; GFX90A: ; %bb.0:1537; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1538; GFX90A-NEXT: v_mov_b32_e32 v4, 01539; GFX90A-NEXT: ;;#ASMSTART1540; GFX90A-NEXT: ; def v[0:1]1541; GFX90A-NEXT: ;;#ASMEND1542; GFX90A-NEXT: v_mov_b32_e32 v2, v11543; GFX90A-NEXT: v_mov_b32_e32 v3, v11544; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]1545; GFX90A-NEXT: s_waitcnt vmcnt(0)1546; GFX90A-NEXT: s_setpc_b64 s[30:31]1547;1548; GFX942-LABEL: v_shuffle_v4p3_v2p3__2_1_1_1:1549; GFX942: ; %bb.0:1550; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1551; GFX942-NEXT: v_mov_b32_e32 v4, 01552; GFX942-NEXT: ;;#ASMSTART1553; GFX942-NEXT: ; def v[0:1]1554; GFX942-NEXT: ;;#ASMEND1555; GFX942-NEXT: s_nop 01556; GFX942-NEXT: v_mov_b32_e32 v2, v11557; GFX942-NEXT: v_mov_b32_e32 v3, v11558; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]1559; GFX942-NEXT: s_waitcnt vmcnt(0)1560; GFX942-NEXT: s_setpc_b64 s[30:31]1561 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1562 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1>1563 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161564 ret void1565}1566 1567define void @v_shuffle_v4p3_v2p3__3_1_1_1(ptr addrspace(1) inreg %ptr) {1568; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_1_1_1:1569; GFX900: ; %bb.0:1570; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1571; GFX900-NEXT: v_mov_b32_e32 v5, 01572; GFX900-NEXT: ;;#ASMSTART1573; GFX900-NEXT: ; def v[1:2]1574; GFX900-NEXT: ;;#ASMEND1575; GFX900-NEXT: v_mov_b32_e32 v3, v21576; GFX900-NEXT: v_mov_b32_e32 v4, v21577; GFX900-NEXT: ;;#ASMSTART1578; GFX900-NEXT: ; def v[0:1]1579; GFX900-NEXT: ;;#ASMEND1580; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]1581; GFX900-NEXT: s_waitcnt vmcnt(0)1582; GFX900-NEXT: s_setpc_b64 s[30:31]1583;1584; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_1_1_1:1585; GFX90A: ; %bb.0:1586; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1587; GFX90A-NEXT: ;;#ASMSTART1588; GFX90A-NEXT: ; def v[0:1]1589; GFX90A-NEXT: ;;#ASMEND1590; GFX90A-NEXT: ;;#ASMSTART1591; GFX90A-NEXT: ; def v[2:3]1592; GFX90A-NEXT: ;;#ASMEND1593; GFX90A-NEXT: v_mov_b32_e32 v4, 01594; GFX90A-NEXT: v_mov_b32_e32 v0, v31595; GFX90A-NEXT: v_mov_b32_e32 v2, v11596; GFX90A-NEXT: v_mov_b32_e32 v3, v11597; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]1598; GFX90A-NEXT: s_waitcnt vmcnt(0)1599; GFX90A-NEXT: s_setpc_b64 s[30:31]1600;1601; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_1_1_1:1602; GFX942: ; %bb.0:1603; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1604; GFX942-NEXT: ;;#ASMSTART1605; GFX942-NEXT: ; def v[0:1]1606; GFX942-NEXT: ;;#ASMEND1607; GFX942-NEXT: ;;#ASMSTART1608; GFX942-NEXT: ; def v[2:3]1609; GFX942-NEXT: ;;#ASMEND1610; GFX942-NEXT: v_mov_b32_e32 v4, 01611; GFX942-NEXT: v_mov_b32_e32 v0, v31612; GFX942-NEXT: v_mov_b32_e32 v2, v11613; GFX942-NEXT: v_mov_b32_e32 v3, v11614; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]1615; GFX942-NEXT: s_waitcnt vmcnt(0)1616; GFX942-NEXT: s_setpc_b64 s[30:31]1617 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1618 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1619 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 1, i32 1, i32 1>1620 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161621 ret void1622}1623 1624define void @v_shuffle_v4p3_v2p3__3_u_1_1(ptr addrspace(1) inreg %ptr) {1625; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_u_1_1:1626; GFX900: ; %bb.0:1627; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1628; GFX900-NEXT: v_mov_b32_e32 v5, 01629; GFX900-NEXT: ;;#ASMSTART1630; GFX900-NEXT: ; def v[2:3]1631; GFX900-NEXT: ;;#ASMEND1632; GFX900-NEXT: v_mov_b32_e32 v4, v31633; GFX900-NEXT: ;;#ASMSTART1634; GFX900-NEXT: ; def v[0:1]1635; GFX900-NEXT: ;;#ASMEND1636; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]1637; GFX900-NEXT: s_waitcnt vmcnt(0)1638; GFX900-NEXT: s_setpc_b64 s[30:31]1639;1640; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_u_1_1:1641; GFX90A: ; %bb.0:1642; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1643; GFX90A-NEXT: ;;#ASMSTART1644; GFX90A-NEXT: ; def v[2:3]1645; GFX90A-NEXT: ;;#ASMEND1646; GFX90A-NEXT: ;;#ASMSTART1647; GFX90A-NEXT: ; def v[0:1]1648; GFX90A-NEXT: ;;#ASMEND1649; GFX90A-NEXT: v_mov_b32_e32 v4, 01650; GFX90A-NEXT: v_mov_b32_e32 v0, v11651; GFX90A-NEXT: v_mov_b32_e32 v2, v31652; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]1653; GFX90A-NEXT: s_waitcnt vmcnt(0)1654; GFX90A-NEXT: s_setpc_b64 s[30:31]1655;1656; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_u_1_1:1657; GFX942: ; %bb.0:1658; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1659; GFX942-NEXT: ;;#ASMSTART1660; GFX942-NEXT: ; def v[2:3]1661; GFX942-NEXT: ;;#ASMEND1662; GFX942-NEXT: ;;#ASMSTART1663; GFX942-NEXT: ; def v[0:1]1664; GFX942-NEXT: ;;#ASMEND1665; GFX942-NEXT: v_mov_b32_e32 v4, 01666; GFX942-NEXT: v_mov_b32_e32 v0, v11667; GFX942-NEXT: v_mov_b32_e32 v2, v31668; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]1669; GFX942-NEXT: s_waitcnt vmcnt(0)1670; GFX942-NEXT: s_setpc_b64 s[30:31]1671 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1672 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1673 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 poison, i32 1, i32 1>1674 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161675 ret void1676}1677 1678define void @v_shuffle_v4p3_v2p3__3_0_1_1(ptr addrspace(1) inreg %ptr) {1679; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_0_1_1:1680; GFX900: ; %bb.0:1681; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1682; GFX900-NEXT: v_mov_b32_e32 v5, 01683; GFX900-NEXT: ;;#ASMSTART1684; GFX900-NEXT: ; def v[2:3]1685; GFX900-NEXT: ;;#ASMEND1686; GFX900-NEXT: v_mov_b32_e32 v4, v31687; GFX900-NEXT: ;;#ASMSTART1688; GFX900-NEXT: ; def v[0:1]1689; GFX900-NEXT: ;;#ASMEND1690; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]1691; GFX900-NEXT: s_waitcnt vmcnt(0)1692; GFX900-NEXT: s_setpc_b64 s[30:31]1693;1694; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_0_1_1:1695; GFX90A: ; %bb.0:1696; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1697; GFX90A-NEXT: ;;#ASMSTART1698; GFX90A-NEXT: ; def v[2:3]1699; GFX90A-NEXT: ;;#ASMEND1700; GFX90A-NEXT: ;;#ASMSTART1701; GFX90A-NEXT: ; def v[0:1]1702; GFX90A-NEXT: ;;#ASMEND1703; GFX90A-NEXT: v_mov_b32_e32 v4, 01704; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[2:3] op_sel:[1,0]1705; GFX90A-NEXT: v_mov_b32_e32 v2, v31706; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]1707; GFX90A-NEXT: s_waitcnt vmcnt(0)1708; GFX90A-NEXT: s_setpc_b64 s[30:31]1709;1710; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_0_1_1:1711; GFX942: ; %bb.0:1712; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1713; GFX942-NEXT: ;;#ASMSTART1714; GFX942-NEXT: ; def v[2:3]1715; GFX942-NEXT: ;;#ASMEND1716; GFX942-NEXT: ;;#ASMSTART1717; GFX942-NEXT: ; def v[0:1]1718; GFX942-NEXT: ;;#ASMEND1719; GFX942-NEXT: v_mov_b32_e32 v4, 01720; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[2:3] op_sel:[1,0]1721; GFX942-NEXT: v_mov_b32_e32 v2, v31722; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]1723; GFX942-NEXT: s_waitcnt vmcnt(0)1724; GFX942-NEXT: s_setpc_b64 s[30:31]1725 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1726 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1727 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 0, i32 1, i32 1>1728 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161729 ret void1730}1731 1732define void @v_shuffle_v4p3_v2p3__3_2_1_1(ptr addrspace(1) inreg %ptr) {1733; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_2_1_1:1734; GFX900: ; %bb.0:1735; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1736; GFX900-NEXT: ;;#ASMSTART1737; GFX900-NEXT: ; def v[2:3]1738; GFX900-NEXT: ;;#ASMEND1739; GFX900-NEXT: v_mov_b32_e32 v5, 01740; GFX900-NEXT: ;;#ASMSTART1741; GFX900-NEXT: ; def v[0:1]1742; GFX900-NEXT: ;;#ASMEND1743; GFX900-NEXT: v_mov_b32_e32 v2, v01744; GFX900-NEXT: v_mov_b32_e32 v4, v31745; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]1746; GFX900-NEXT: s_waitcnt vmcnt(0)1747; GFX900-NEXT: s_setpc_b64 s[30:31]1748;1749; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_2_1_1:1750; GFX90A: ; %bb.0:1751; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1752; GFX90A-NEXT: ;;#ASMSTART1753; GFX90A-NEXT: ; def v[2:3]1754; GFX90A-NEXT: ;;#ASMEND1755; GFX90A-NEXT: ;;#ASMSTART1756; GFX90A-NEXT: ; def v[0:1]1757; GFX90A-NEXT: ;;#ASMEND1758; GFX90A-NEXT: v_mov_b32_e32 v4, 01759; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]1760; GFX90A-NEXT: v_mov_b32_e32 v2, v31761; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]1762; GFX90A-NEXT: s_waitcnt vmcnt(0)1763; GFX90A-NEXT: s_setpc_b64 s[30:31]1764;1765; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_2_1_1:1766; GFX942: ; %bb.0:1767; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1768; GFX942-NEXT: ;;#ASMSTART1769; GFX942-NEXT: ; def v[2:3]1770; GFX942-NEXT: ;;#ASMEND1771; GFX942-NEXT: ;;#ASMSTART1772; GFX942-NEXT: ; def v[0:1]1773; GFX942-NEXT: ;;#ASMEND1774; GFX942-NEXT: v_mov_b32_e32 v4, 01775; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[0:1] op_sel:[1,0]1776; GFX942-NEXT: v_mov_b32_e32 v2, v31777; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]1778; GFX942-NEXT: s_waitcnt vmcnt(0)1779; GFX942-NEXT: s_setpc_b64 s[30:31]1780 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1781 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1782 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 2, i32 1, i32 1>1783 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161784 ret void1785}1786 1787define void @v_shuffle_v4p3_v2p3__3_3_1_1(ptr addrspace(1) inreg %ptr) {1788; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_1_1:1789; GFX900: ; %bb.0:1790; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1791; GFX900-NEXT: ;;#ASMSTART1792; GFX900-NEXT: ; def v[2:3]1793; GFX900-NEXT: ;;#ASMEND1794; GFX900-NEXT: v_mov_b32_e32 v5, 01795; GFX900-NEXT: ;;#ASMSTART1796; GFX900-NEXT: ; def v[0:1]1797; GFX900-NEXT: ;;#ASMEND1798; GFX900-NEXT: v_mov_b32_e32 v2, v11799; GFX900-NEXT: v_mov_b32_e32 v4, v31800; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]1801; GFX900-NEXT: s_waitcnt vmcnt(0)1802; GFX900-NEXT: s_setpc_b64 s[30:31]1803;1804; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_1_1:1805; GFX90A: ; %bb.0:1806; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1807; GFX90A-NEXT: ;;#ASMSTART1808; GFX90A-NEXT: ; def v[2:3]1809; GFX90A-NEXT: ;;#ASMEND1810; GFX90A-NEXT: ;;#ASMSTART1811; GFX90A-NEXT: ; def v[0:1]1812; GFX90A-NEXT: ;;#ASMEND1813; GFX90A-NEXT: v_mov_b32_e32 v4, 01814; GFX90A-NEXT: v_mov_b32_e32 v0, v11815; GFX90A-NEXT: v_mov_b32_e32 v2, v31816; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]1817; GFX90A-NEXT: s_waitcnt vmcnt(0)1818; GFX90A-NEXT: s_setpc_b64 s[30:31]1819;1820; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_1_1:1821; GFX942: ; %bb.0:1822; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1823; GFX942-NEXT: ;;#ASMSTART1824; GFX942-NEXT: ; def v[2:3]1825; GFX942-NEXT: ;;#ASMEND1826; GFX942-NEXT: ;;#ASMSTART1827; GFX942-NEXT: ; def v[0:1]1828; GFX942-NEXT: ;;#ASMEND1829; GFX942-NEXT: v_mov_b32_e32 v4, 01830; GFX942-NEXT: v_mov_b32_e32 v0, v11831; GFX942-NEXT: v_mov_b32_e32 v2, v31832; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]1833; GFX942-NEXT: s_waitcnt vmcnt(0)1834; GFX942-NEXT: s_setpc_b64 s[30:31]1835 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1836 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1837 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 1>1838 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161839 ret void1840}1841 1842define void @v_shuffle_v4p3_v2p3__3_3_u_1(ptr addrspace(1) inreg %ptr) {1843; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_u_1:1844; GFX900: ; %bb.0:1845; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1846; GFX900-NEXT: v_mov_b32_e32 v5, 01847; GFX900-NEXT: ;;#ASMSTART1848; GFX900-NEXT: ; def v[0:1]1849; GFX900-NEXT: ;;#ASMEND1850; GFX900-NEXT: v_mov_b32_e32 v2, v11851; GFX900-NEXT: ;;#ASMSTART1852; GFX900-NEXT: ; def v[3:4]1853; GFX900-NEXT: ;;#ASMEND1854; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]1855; GFX900-NEXT: s_waitcnt vmcnt(0)1856; GFX900-NEXT: s_setpc_b64 s[30:31]1857;1858; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_u_1:1859; GFX90A: ; %bb.0:1860; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1861; GFX90A-NEXT: ;;#ASMSTART1862; GFX90A-NEXT: ; def v[0:1]1863; GFX90A-NEXT: ;;#ASMEND1864; GFX90A-NEXT: v_mov_b32_e32 v4, 01865; GFX90A-NEXT: v_mov_b32_e32 v0, v11866; GFX90A-NEXT: ;;#ASMSTART1867; GFX90A-NEXT: ; def v[2:3]1868; GFX90A-NEXT: ;;#ASMEND1869; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]1870; GFX90A-NEXT: s_waitcnt vmcnt(0)1871; GFX90A-NEXT: s_setpc_b64 s[30:31]1872;1873; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_u_1:1874; GFX942: ; %bb.0:1875; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1876; GFX942-NEXT: ;;#ASMSTART1877; GFX942-NEXT: ; def v[0:1]1878; GFX942-NEXT: ;;#ASMEND1879; GFX942-NEXT: v_mov_b32_e32 v4, 01880; GFX942-NEXT: v_mov_b32_e32 v0, v11881; GFX942-NEXT: ;;#ASMSTART1882; GFX942-NEXT: ; def v[2:3]1883; GFX942-NEXT: ;;#ASMEND1884; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]1885; GFX942-NEXT: s_waitcnt vmcnt(0)1886; GFX942-NEXT: s_setpc_b64 s[30:31]1887 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1888 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1889 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 1>1890 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161891 ret void1892}1893 1894define void @v_shuffle_v4p3_v2p3__3_3_0_1(ptr addrspace(1) inreg %ptr) {1895; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_0_1:1896; GFX900: ; %bb.0:1897; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1898; GFX900-NEXT: v_mov_b32_e32 v5, 01899; GFX900-NEXT: ;;#ASMSTART1900; GFX900-NEXT: ; def v[0:1]1901; GFX900-NEXT: ;;#ASMEND1902; GFX900-NEXT: v_mov_b32_e32 v2, v11903; GFX900-NEXT: ;;#ASMSTART1904; GFX900-NEXT: ; def v[3:4]1905; GFX900-NEXT: ;;#ASMEND1906; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]1907; GFX900-NEXT: s_waitcnt vmcnt(0)1908; GFX900-NEXT: s_setpc_b64 s[30:31]1909;1910; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_0_1:1911; GFX90A: ; %bb.0:1912; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1913; GFX90A-NEXT: ;;#ASMSTART1914; GFX90A-NEXT: ; def v[0:1]1915; GFX90A-NEXT: ;;#ASMEND1916; GFX90A-NEXT: v_mov_b32_e32 v4, 01917; GFX90A-NEXT: v_mov_b32_e32 v0, v11918; GFX90A-NEXT: ;;#ASMSTART1919; GFX90A-NEXT: ; def v[2:3]1920; GFX90A-NEXT: ;;#ASMEND1921; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]1922; GFX90A-NEXT: s_waitcnt vmcnt(0)1923; GFX90A-NEXT: s_setpc_b64 s[30:31]1924;1925; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_0_1:1926; GFX942: ; %bb.0:1927; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1928; GFX942-NEXT: ;;#ASMSTART1929; GFX942-NEXT: ; def v[0:1]1930; GFX942-NEXT: ;;#ASMEND1931; GFX942-NEXT: v_mov_b32_e32 v4, 01932; GFX942-NEXT: v_mov_b32_e32 v0, v11933; GFX942-NEXT: ;;#ASMSTART1934; GFX942-NEXT: ; def v[2:3]1935; GFX942-NEXT: ;;#ASMEND1936; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]1937; GFX942-NEXT: s_waitcnt vmcnt(0)1938; GFX942-NEXT: s_setpc_b64 s[30:31]1939 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1940 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1941 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 1>1942 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161943 ret void1944}1945 1946define void @v_shuffle_v4p3_v2p3__3_3_2_1(ptr addrspace(1) inreg %ptr) {1947; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_2_1:1948; GFX900: ; %bb.0:1949; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1950; GFX900-NEXT: ;;#ASMSTART1951; GFX900-NEXT: ; def v[3:4]1952; GFX900-NEXT: ;;#ASMEND1953; GFX900-NEXT: v_mov_b32_e32 v5, 01954; GFX900-NEXT: ;;#ASMSTART1955; GFX900-NEXT: ; def v[0:1]1956; GFX900-NEXT: ;;#ASMEND1957; GFX900-NEXT: v_mov_b32_e32 v2, v11958; GFX900-NEXT: v_mov_b32_e32 v3, v01959; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]1960; GFX900-NEXT: s_waitcnt vmcnt(0)1961; GFX900-NEXT: s_setpc_b64 s[30:31]1962;1963; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_2_1:1964; GFX90A: ; %bb.0:1965; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1966; GFX90A-NEXT: ;;#ASMSTART1967; GFX90A-NEXT: ; def v[2:3]1968; GFX90A-NEXT: ;;#ASMEND1969; GFX90A-NEXT: v_mov_b32_e32 v6, 01970; GFX90A-NEXT: ;;#ASMSTART1971; GFX90A-NEXT: ; def v[4:5]1972; GFX90A-NEXT: ;;#ASMEND1973; GFX90A-NEXT: v_mov_b32_e32 v0, v31974; GFX90A-NEXT: v_mov_b32_e32 v1, v31975; GFX90A-NEXT: v_mov_b32_e32 v3, v51976; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]1977; GFX90A-NEXT: s_waitcnt vmcnt(0)1978; GFX90A-NEXT: s_setpc_b64 s[30:31]1979;1980; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_2_1:1981; GFX942: ; %bb.0:1982; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1983; GFX942-NEXT: ;;#ASMSTART1984; GFX942-NEXT: ; def v[2:3]1985; GFX942-NEXT: ;;#ASMEND1986; GFX942-NEXT: v_mov_b32_e32 v6, 01987; GFX942-NEXT: ;;#ASMSTART1988; GFX942-NEXT: ; def v[4:5]1989; GFX942-NEXT: ;;#ASMEND1990; GFX942-NEXT: v_mov_b32_e32 v0, v31991; GFX942-NEXT: v_mov_b32_e32 v1, v31992; GFX942-NEXT: v_mov_b32_e32 v3, v51993; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]1994; GFX942-NEXT: s_waitcnt vmcnt(0)1995; GFX942-NEXT: s_setpc_b64 s[30:31]1996 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1997 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()1998 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 1>1999 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162000 ret void2001}2002 2003define void @v_shuffle_v4p3_v2p3__u_2_2_2(ptr addrspace(1) inreg %ptr) {2004; GFX9-LABEL: v_shuffle_v4p3_v2p3__u_2_2_2:2005; GFX9: ; %bb.0:2006; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2007; GFX9-NEXT: s_setpc_b64 s[30:31]2008 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2009 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2>2010 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162011 ret void2012}2013 2014define void @v_shuffle_v4p3_v2p3__0_2_2_2(ptr addrspace(1) inreg %ptr) {2015; GFX900-LABEL: v_shuffle_v4p3_v2p3__0_2_2_2:2016; GFX900: ; %bb.0:2017; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2018; GFX900-NEXT: v_mov_b32_e32 v2, 02019; GFX900-NEXT: ;;#ASMSTART2020; GFX900-NEXT: ; def v[0:1]2021; GFX900-NEXT: ;;#ASMEND2022; GFX900-NEXT: global_store_dwordx4 v2, v[0:3], s[16:17]2023; GFX900-NEXT: s_waitcnt vmcnt(0)2024; GFX900-NEXT: s_setpc_b64 s[30:31]2025;2026; GFX90A-LABEL: v_shuffle_v4p3_v2p3__0_2_2_2:2027; GFX90A: ; %bb.0:2028; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2029; GFX90A-NEXT: v_mov_b32_e32 v2, 02030; GFX90A-NEXT: ;;#ASMSTART2031; GFX90A-NEXT: ; def v[0:1]2032; GFX90A-NEXT: ;;#ASMEND2033; GFX90A-NEXT: global_store_dwordx4 v2, v[0:3], s[16:17]2034; GFX90A-NEXT: s_waitcnt vmcnt(0)2035; GFX90A-NEXT: s_setpc_b64 s[30:31]2036;2037; GFX942-LABEL: v_shuffle_v4p3_v2p3__0_2_2_2:2038; GFX942: ; %bb.0:2039; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2040; GFX942-NEXT: v_mov_b32_e32 v2, 02041; GFX942-NEXT: ;;#ASMSTART2042; GFX942-NEXT: ; def v[0:1]2043; GFX942-NEXT: ;;#ASMEND2044; GFX942-NEXT: global_store_dwordx4 v2, v[0:3], s[0:1]2045; GFX942-NEXT: s_waitcnt vmcnt(0)2046; GFX942-NEXT: s_setpc_b64 s[30:31]2047 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2048 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2>2049 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162050 ret void2051}2052 2053define void @v_shuffle_v4p3_v2p3__1_2_2_2(ptr addrspace(1) inreg %ptr) {2054; GFX900-LABEL: v_shuffle_v4p3_v2p3__1_2_2_2:2055; GFX900: ; %bb.0:2056; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2057; GFX900-NEXT: v_mov_b32_e32 v2, 02058; GFX900-NEXT: ;;#ASMSTART2059; GFX900-NEXT: ; def v[0:1]2060; GFX900-NEXT: ;;#ASMEND2061; GFX900-NEXT: global_store_dwordx4 v2, v[1:4], s[16:17]2062; GFX900-NEXT: s_waitcnt vmcnt(0)2063; GFX900-NEXT: s_setpc_b64 s[30:31]2064;2065; GFX90A-LABEL: v_shuffle_v4p3_v2p3__1_2_2_2:2066; GFX90A: ; %bb.0:2067; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2068; GFX90A-NEXT: ;;#ASMSTART2069; GFX90A-NEXT: ; def v[0:1]2070; GFX90A-NEXT: ;;#ASMEND2071; GFX90A-NEXT: v_mov_b32_e32 v2, 02072; GFX90A-NEXT: v_mov_b32_e32 v0, v12073; GFX90A-NEXT: global_store_dwordx4 v2, v[0:3], s[16:17]2074; GFX90A-NEXT: s_waitcnt vmcnt(0)2075; GFX90A-NEXT: s_setpc_b64 s[30:31]2076;2077; GFX942-LABEL: v_shuffle_v4p3_v2p3__1_2_2_2:2078; GFX942: ; %bb.0:2079; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2080; GFX942-NEXT: ;;#ASMSTART2081; GFX942-NEXT: ; def v[0:1]2082; GFX942-NEXT: ;;#ASMEND2083; GFX942-NEXT: v_mov_b32_e32 v2, 02084; GFX942-NEXT: v_mov_b32_e32 v0, v12085; GFX942-NEXT: global_store_dwordx4 v2, v[0:3], s[0:1]2086; GFX942-NEXT: s_waitcnt vmcnt(0)2087; GFX942-NEXT: s_setpc_b64 s[30:31]2088 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2089 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2>2090 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162091 ret void2092}2093 2094define void @v_shuffle_v4p3_v2p3__2_2_2_2(ptr addrspace(1) inreg %ptr) {2095; GFX9-LABEL: v_shuffle_v4p3_v2p3__2_2_2_2:2096; GFX9: ; %bb.0:2097; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2098; GFX9-NEXT: s_setpc_b64 s[30:31]2099 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2100 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2>2101 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162102 ret void2103}2104 2105define void @v_shuffle_v4p3_v2p3__3_2_2_2(ptr addrspace(1) inreg %ptr) {2106; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_2_2_2:2107; GFX900: ; %bb.0:2108; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2109; GFX900-NEXT: v_mov_b32_e32 v5, 02110; GFX900-NEXT: ;;#ASMSTART2111; GFX900-NEXT: ; def v[0:1]2112; GFX900-NEXT: ;;#ASMEND2113; GFX900-NEXT: v_mov_b32_e32 v2, v02114; GFX900-NEXT: v_mov_b32_e32 v3, v02115; GFX900-NEXT: v_mov_b32_e32 v4, v02116; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]2117; GFX900-NEXT: s_waitcnt vmcnt(0)2118; GFX900-NEXT: s_setpc_b64 s[30:31]2119;2120; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_2_2_2:2121; GFX90A: ; %bb.0:2122; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2123; GFX90A-NEXT: ;;#ASMSTART2124; GFX90A-NEXT: ; def v[2:3]2125; GFX90A-NEXT: ;;#ASMEND2126; GFX90A-NEXT: v_mov_b32_e32 v4, 02127; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]2128; GFX90A-NEXT: v_mov_b32_e32 v3, v22129; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]2130; GFX90A-NEXT: s_waitcnt vmcnt(0)2131; GFX90A-NEXT: s_setpc_b64 s[30:31]2132;2133; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_2_2_2:2134; GFX942: ; %bb.0:2135; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2136; GFX942-NEXT: ;;#ASMSTART2137; GFX942-NEXT: ; def v[2:3]2138; GFX942-NEXT: ;;#ASMEND2139; GFX942-NEXT: v_mov_b32_e32 v4, 02140; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]2141; GFX942-NEXT: v_mov_b32_e32 v3, v22142; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]2143; GFX942-NEXT: s_waitcnt vmcnt(0)2144; GFX942-NEXT: s_setpc_b64 s[30:31]2145 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2146 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2147 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 2, i32 2, i32 2>2148 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162149 ret void2150}2151 2152define void @v_shuffle_v4p3_v2p3__3_u_2_2(ptr addrspace(1) inreg %ptr) {2153; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_u_2_2:2154; GFX900: ; %bb.0:2155; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2156; GFX900-NEXT: v_mov_b32_e32 v2, 02157; GFX900-NEXT: ;;#ASMSTART2158; GFX900-NEXT: ; def v[0:1]2159; GFX900-NEXT: ;;#ASMEND2160; GFX900-NEXT: v_mov_b32_e32 v3, v02161; GFX900-NEXT: v_mov_b32_e32 v4, v02162; GFX900-NEXT: global_store_dwordx4 v2, v[1:4], s[16:17]2163; GFX900-NEXT: s_waitcnt vmcnt(0)2164; GFX900-NEXT: s_setpc_b64 s[30:31]2165;2166; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_u_2_2:2167; GFX90A: ; %bb.0:2168; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2169; GFX90A-NEXT: ;;#ASMSTART2170; GFX90A-NEXT: ; def v[2:3]2171; GFX90A-NEXT: ;;#ASMEND2172; GFX90A-NEXT: v_mov_b32_e32 v1, 02173; GFX90A-NEXT: v_mov_b32_e32 v0, v32174; GFX90A-NEXT: v_mov_b32_e32 v3, v22175; GFX90A-NEXT: global_store_dwordx4 v1, v[0:3], s[16:17]2176; GFX90A-NEXT: s_waitcnt vmcnt(0)2177; GFX90A-NEXT: s_setpc_b64 s[30:31]2178;2179; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_u_2_2:2180; GFX942: ; %bb.0:2181; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2182; GFX942-NEXT: ;;#ASMSTART2183; GFX942-NEXT: ; def v[2:3]2184; GFX942-NEXT: ;;#ASMEND2185; GFX942-NEXT: v_mov_b32_e32 v1, 02186; GFX942-NEXT: v_mov_b32_e32 v0, v32187; GFX942-NEXT: v_mov_b32_e32 v3, v22188; GFX942-NEXT: global_store_dwordx4 v1, v[0:3], s[0:1]2189; GFX942-NEXT: s_waitcnt vmcnt(0)2190; GFX942-NEXT: s_setpc_b64 s[30:31]2191 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2192 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2193 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 poison, i32 2, i32 2>2194 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162195 ret void2196}2197 2198define void @v_shuffle_v4p3_v2p3__3_0_2_2(ptr addrspace(1) inreg %ptr) {2199; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_0_2_2:2200; GFX900: ; %bb.0:2201; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2202; GFX900-NEXT: ;;#ASMSTART2203; GFX900-NEXT: ; def v[2:3]2204; GFX900-NEXT: ;;#ASMEND2205; GFX900-NEXT: v_mov_b32_e32 v5, 02206; GFX900-NEXT: ;;#ASMSTART2207; GFX900-NEXT: ; def v[0:1]2208; GFX900-NEXT: ;;#ASMEND2209; GFX900-NEXT: v_mov_b32_e32 v3, v02210; GFX900-NEXT: v_mov_b32_e32 v4, v02211; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]2212; GFX900-NEXT: s_waitcnt vmcnt(0)2213; GFX900-NEXT: s_setpc_b64 s[30:31]2214;2215; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_0_2_2:2216; GFX90A: ; %bb.0:2217; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2218; GFX90A-NEXT: ;;#ASMSTART2219; GFX90A-NEXT: ; def v[0:1]2220; GFX90A-NEXT: ;;#ASMEND2221; GFX90A-NEXT: ;;#ASMSTART2222; GFX90A-NEXT: ; def v[2:3]2223; GFX90A-NEXT: ;;#ASMEND2224; GFX90A-NEXT: v_mov_b32_e32 v4, 02225; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]2226; GFX90A-NEXT: v_mov_b32_e32 v3, v22227; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]2228; GFX90A-NEXT: s_waitcnt vmcnt(0)2229; GFX90A-NEXT: s_setpc_b64 s[30:31]2230;2231; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_0_2_2:2232; GFX942: ; %bb.0:2233; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2234; GFX942-NEXT: ;;#ASMSTART2235; GFX942-NEXT: ; def v[0:1]2236; GFX942-NEXT: ;;#ASMEND2237; GFX942-NEXT: ;;#ASMSTART2238; GFX942-NEXT: ; def v[2:3]2239; GFX942-NEXT: ;;#ASMEND2240; GFX942-NEXT: v_mov_b32_e32 v4, 02241; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]2242; GFX942-NEXT: v_mov_b32_e32 v3, v22243; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]2244; GFX942-NEXT: s_waitcnt vmcnt(0)2245; GFX942-NEXT: s_setpc_b64 s[30:31]2246 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2247 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2248 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 0, i32 2, i32 2>2249 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162250 ret void2251}2252 2253define void @v_shuffle_v4p3_v2p3__3_1_2_2(ptr addrspace(1) inreg %ptr) {2254; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_1_2_2:2255; GFX900: ; %bb.0:2256; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2257; GFX900-NEXT: ;;#ASMSTART2258; GFX900-NEXT: ; def v[1:2]2259; GFX900-NEXT: ;;#ASMEND2260; GFX900-NEXT: v_mov_b32_e32 v5, 02261; GFX900-NEXT: ;;#ASMSTART2262; GFX900-NEXT: ; def v[0:1]2263; GFX900-NEXT: ;;#ASMEND2264; GFX900-NEXT: v_mov_b32_e32 v3, v02265; GFX900-NEXT: v_mov_b32_e32 v4, v02266; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]2267; GFX900-NEXT: s_waitcnt vmcnt(0)2268; GFX900-NEXT: s_setpc_b64 s[30:31]2269;2270; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_1_2_2:2271; GFX90A: ; %bb.0:2272; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2273; GFX90A-NEXT: ;;#ASMSTART2274; GFX90A-NEXT: ; def v[0:1]2275; GFX90A-NEXT: ;;#ASMEND2276; GFX90A-NEXT: ;;#ASMSTART2277; GFX90A-NEXT: ; def v[2:3]2278; GFX90A-NEXT: ;;#ASMEND2279; GFX90A-NEXT: v_mov_b32_e32 v4, 02280; GFX90A-NEXT: v_mov_b32_e32 v0, v32281; GFX90A-NEXT: v_mov_b32_e32 v3, v22282; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]2283; GFX90A-NEXT: s_waitcnt vmcnt(0)2284; GFX90A-NEXT: s_setpc_b64 s[30:31]2285;2286; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_1_2_2:2287; GFX942: ; %bb.0:2288; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2289; GFX942-NEXT: ;;#ASMSTART2290; GFX942-NEXT: ; def v[0:1]2291; GFX942-NEXT: ;;#ASMEND2292; GFX942-NEXT: ;;#ASMSTART2293; GFX942-NEXT: ; def v[2:3]2294; GFX942-NEXT: ;;#ASMEND2295; GFX942-NEXT: v_mov_b32_e32 v4, 02296; GFX942-NEXT: v_mov_b32_e32 v0, v32297; GFX942-NEXT: v_mov_b32_e32 v3, v22298; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]2299; GFX942-NEXT: s_waitcnt vmcnt(0)2300; GFX942-NEXT: s_setpc_b64 s[30:31]2301 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2302 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2303 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 1, i32 2, i32 2>2304 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162305 ret void2306}2307 2308define void @v_shuffle_v4p3_v2p3__3_3_2_2(ptr addrspace(1) inreg %ptr) {2309; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_2_2:2310; GFX900: ; %bb.0:2311; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2312; GFX900-NEXT: v_mov_b32_e32 v5, 02313; GFX900-NEXT: ;;#ASMSTART2314; GFX900-NEXT: ; def v[0:1]2315; GFX900-NEXT: ;;#ASMEND2316; GFX900-NEXT: v_mov_b32_e32 v2, v12317; GFX900-NEXT: v_mov_b32_e32 v3, v02318; GFX900-NEXT: v_mov_b32_e32 v4, v02319; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]2320; GFX900-NEXT: s_waitcnt vmcnt(0)2321; GFX900-NEXT: s_setpc_b64 s[30:31]2322;2323; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_2_2:2324; GFX90A: ; %bb.0:2325; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2326; GFX90A-NEXT: ;;#ASMSTART2327; GFX90A-NEXT: ; def v[2:3]2328; GFX90A-NEXT: ;;#ASMEND2329; GFX90A-NEXT: v_mov_b32_e32 v4, 02330; GFX90A-NEXT: v_mov_b32_e32 v0, v32331; GFX90A-NEXT: v_mov_b32_e32 v1, v32332; GFX90A-NEXT: v_mov_b32_e32 v3, v22333; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]2334; GFX90A-NEXT: s_waitcnt vmcnt(0)2335; GFX90A-NEXT: s_setpc_b64 s[30:31]2336;2337; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_2_2:2338; GFX942: ; %bb.0:2339; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2340; GFX942-NEXT: ;;#ASMSTART2341; GFX942-NEXT: ; def v[2:3]2342; GFX942-NEXT: ;;#ASMEND2343; GFX942-NEXT: v_mov_b32_e32 v4, 02344; GFX942-NEXT: v_mov_b32_e32 v0, v32345; GFX942-NEXT: v_mov_b32_e32 v1, v32346; GFX942-NEXT: v_mov_b32_e32 v3, v22347; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]2348; GFX942-NEXT: s_waitcnt vmcnt(0)2349; GFX942-NEXT: s_setpc_b64 s[30:31]2350 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2351 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2352 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 2>2353 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162354 ret void2355}2356 2357define void @v_shuffle_v4p3_v2p3__3_3_u_2(ptr addrspace(1) inreg %ptr) {2358; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_u_2:2359; GFX900: ; %bb.0:2360; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2361; GFX900-NEXT: v_mov_b32_e32 v3, 02362; GFX900-NEXT: ;;#ASMSTART2363; GFX900-NEXT: ; def v[0:1]2364; GFX900-NEXT: ;;#ASMEND2365; GFX900-NEXT: v_mov_b32_e32 v2, v12366; GFX900-NEXT: v_mov_b32_e32 v4, v02367; GFX900-NEXT: global_store_dwordx4 v3, v[1:4], s[16:17]2368; GFX900-NEXT: s_waitcnt vmcnt(0)2369; GFX900-NEXT: s_setpc_b64 s[30:31]2370;2371; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_u_2:2372; GFX90A: ; %bb.0:2373; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2374; GFX90A-NEXT: v_mov_b32_e32 v2, 02375; GFX90A-NEXT: ;;#ASMSTART2376; GFX90A-NEXT: ; def v[0:1]2377; GFX90A-NEXT: ;;#ASMEND2378; GFX90A-NEXT: v_mov_b32_e32 v4, v12379; GFX90A-NEXT: v_mov_b32_e32 v5, v12380; GFX90A-NEXT: v_mov_b32_e32 v7, v02381; GFX90A-NEXT: global_store_dwordx4 v2, v[4:7], s[16:17]2382; GFX90A-NEXT: s_waitcnt vmcnt(0)2383; GFX90A-NEXT: s_setpc_b64 s[30:31]2384;2385; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_u_2:2386; GFX942: ; %bb.0:2387; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2388; GFX942-NEXT: v_mov_b32_e32 v2, 02389; GFX942-NEXT: ;;#ASMSTART2390; GFX942-NEXT: ; def v[0:1]2391; GFX942-NEXT: ;;#ASMEND2392; GFX942-NEXT: s_nop 02393; GFX942-NEXT: v_mov_b32_e32 v4, v12394; GFX942-NEXT: v_mov_b32_e32 v5, v12395; GFX942-NEXT: v_mov_b32_e32 v7, v02396; GFX942-NEXT: global_store_dwordx4 v2, v[4:7], s[0:1]2397; GFX942-NEXT: s_waitcnt vmcnt(0)2398; GFX942-NEXT: s_setpc_b64 s[30:31]2399 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2400 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2401 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 2>2402 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162403 ret void2404}2405 2406define void @v_shuffle_v4p3_v2p3__3_3_0_2(ptr addrspace(1) inreg %ptr) {2407; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_0_2:2408; GFX900: ; %bb.0:2409; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2410; GFX900-NEXT: ;;#ASMSTART2411; GFX900-NEXT: ; def v[3:4]2412; GFX900-NEXT: ;;#ASMEND2413; GFX900-NEXT: v_mov_b32_e32 v5, 02414; GFX900-NEXT: ;;#ASMSTART2415; GFX900-NEXT: ; def v[0:1]2416; GFX900-NEXT: ;;#ASMEND2417; GFX900-NEXT: v_mov_b32_e32 v2, v12418; GFX900-NEXT: v_mov_b32_e32 v4, v02419; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]2420; GFX900-NEXT: s_waitcnt vmcnt(0)2421; GFX900-NEXT: s_setpc_b64 s[30:31]2422;2423; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_0_2:2424; GFX90A: ; %bb.0:2425; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2426; GFX90A-NEXT: ;;#ASMSTART2427; GFX90A-NEXT: ; def v[2:3]2428; GFX90A-NEXT: ;;#ASMEND2429; GFX90A-NEXT: v_mov_b32_e32 v6, 02430; GFX90A-NEXT: ;;#ASMSTART2431; GFX90A-NEXT: ; def v[4:5]2432; GFX90A-NEXT: ;;#ASMEND2433; GFX90A-NEXT: v_mov_b32_e32 v0, v52434; GFX90A-NEXT: v_mov_b32_e32 v1, v52435; GFX90A-NEXT: v_mov_b32_e32 v3, v42436; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]2437; GFX90A-NEXT: s_waitcnt vmcnt(0)2438; GFX90A-NEXT: s_setpc_b64 s[30:31]2439;2440; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_0_2:2441; GFX942: ; %bb.0:2442; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2443; GFX942-NEXT: ;;#ASMSTART2444; GFX942-NEXT: ; def v[2:3]2445; GFX942-NEXT: ;;#ASMEND2446; GFX942-NEXT: v_mov_b32_e32 v6, 02447; GFX942-NEXT: ;;#ASMSTART2448; GFX942-NEXT: ; def v[4:5]2449; GFX942-NEXT: ;;#ASMEND2450; GFX942-NEXT: s_nop 02451; GFX942-NEXT: v_mov_b32_e32 v0, v52452; GFX942-NEXT: v_mov_b32_e32 v1, v52453; GFX942-NEXT: v_mov_b32_e32 v3, v42454; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]2455; GFX942-NEXT: s_waitcnt vmcnt(0)2456; GFX942-NEXT: s_setpc_b64 s[30:31]2457 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2458 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2459 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 2>2460 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162461 ret void2462}2463 2464define void @v_shuffle_v4p3_v2p3__3_3_1_2(ptr addrspace(1) inreg %ptr) {2465; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_1_2:2466; GFX900: ; %bb.0:2467; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2468; GFX900-NEXT: ;;#ASMSTART2469; GFX900-NEXT: ; def v[2:3]2470; GFX900-NEXT: ;;#ASMEND2471; GFX900-NEXT: v_mov_b32_e32 v5, 02472; GFX900-NEXT: ;;#ASMSTART2473; GFX900-NEXT: ; def v[0:1]2474; GFX900-NEXT: ;;#ASMEND2475; GFX900-NEXT: v_mov_b32_e32 v2, v12476; GFX900-NEXT: v_mov_b32_e32 v4, v02477; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]2478; GFX900-NEXT: s_waitcnt vmcnt(0)2479; GFX900-NEXT: s_setpc_b64 s[30:31]2480;2481; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_1_2:2482; GFX90A: ; %bb.0:2483; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2484; GFX90A-NEXT: ;;#ASMSTART2485; GFX90A-NEXT: ; def v[2:3]2486; GFX90A-NEXT: ;;#ASMEND2487; GFX90A-NEXT: ;;#ASMSTART2488; GFX90A-NEXT: ; def v[0:1]2489; GFX90A-NEXT: ;;#ASMEND2490; GFX90A-NEXT: v_mov_b32_e32 v4, 02491; GFX90A-NEXT: v_pk_mov_b32 v[2:3], v[2:3], v[0:1] op_sel:[1,0]2492; GFX90A-NEXT: v_mov_b32_e32 v0, v12493; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]2494; GFX90A-NEXT: s_waitcnt vmcnt(0)2495; GFX90A-NEXT: s_setpc_b64 s[30:31]2496;2497; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_1_2:2498; GFX942: ; %bb.0:2499; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2500; GFX942-NEXT: ;;#ASMSTART2501; GFX942-NEXT: ; def v[2:3]2502; GFX942-NEXT: ;;#ASMEND2503; GFX942-NEXT: ;;#ASMSTART2504; GFX942-NEXT: ; def v[0:1]2505; GFX942-NEXT: ;;#ASMEND2506; GFX942-NEXT: v_mov_b32_e32 v4, 02507; GFX942-NEXT: v_pk_mov_b32 v[2:3], v[2:3], v[0:1] op_sel:[1,0]2508; GFX942-NEXT: v_mov_b32_e32 v0, v12509; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]2510; GFX942-NEXT: s_waitcnt vmcnt(0)2511; GFX942-NEXT: s_setpc_b64 s[30:31]2512 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2513 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2514 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 2>2515 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162516 ret void2517}2518 2519define void @v_shuffle_v4p3_v2p3__u_3_3_3(ptr addrspace(1) inreg %ptr) {2520; GFX900-LABEL: v_shuffle_v4p3_v2p3__u_3_3_3:2521; GFX900: ; %bb.0:2522; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2523; GFX900-NEXT: v_mov_b32_e32 v4, 02524; GFX900-NEXT: ;;#ASMSTART2525; GFX900-NEXT: ; def v[0:1]2526; GFX900-NEXT: ;;#ASMEND2527; GFX900-NEXT: v_mov_b32_e32 v2, v12528; GFX900-NEXT: v_mov_b32_e32 v3, v12529; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]2530; GFX900-NEXT: s_waitcnt vmcnt(0)2531; GFX900-NEXT: s_setpc_b64 s[30:31]2532;2533; GFX90A-LABEL: v_shuffle_v4p3_v2p3__u_3_3_3:2534; GFX90A: ; %bb.0:2535; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2536; GFX90A-NEXT: v_mov_b32_e32 v4, 02537; GFX90A-NEXT: ;;#ASMSTART2538; GFX90A-NEXT: ; def v[0:1]2539; GFX90A-NEXT: ;;#ASMEND2540; GFX90A-NEXT: v_mov_b32_e32 v2, v12541; GFX90A-NEXT: v_mov_b32_e32 v3, v12542; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]2543; GFX90A-NEXT: s_waitcnt vmcnt(0)2544; GFX90A-NEXT: s_setpc_b64 s[30:31]2545;2546; GFX942-LABEL: v_shuffle_v4p3_v2p3__u_3_3_3:2547; GFX942: ; %bb.0:2548; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2549; GFX942-NEXT: v_mov_b32_e32 v4, 02550; GFX942-NEXT: ;;#ASMSTART2551; GFX942-NEXT: ; def v[0:1]2552; GFX942-NEXT: ;;#ASMEND2553; GFX942-NEXT: s_nop 02554; GFX942-NEXT: v_mov_b32_e32 v2, v12555; GFX942-NEXT: v_mov_b32_e32 v3, v12556; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]2557; GFX942-NEXT: s_waitcnt vmcnt(0)2558; GFX942-NEXT: s_setpc_b64 s[30:31]2559 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2560 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2561 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 poison, i32 3, i32 3, i32 3>2562 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162563 ret void2564}2565 2566define void @v_shuffle_v4p3_v2p3__0_3_3_3(ptr addrspace(1) inreg %ptr) {2567; GFX900-LABEL: v_shuffle_v4p3_v2p3__0_3_3_3:2568; GFX900: ; %bb.0:2569; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2570; GFX900-NEXT: ;;#ASMSTART2571; GFX900-NEXT: ; def v[0:1]2572; GFX900-NEXT: ;;#ASMEND2573; GFX900-NEXT: ;;#ASMSTART2574; GFX900-NEXT: ; def v[1:2]2575; GFX900-NEXT: ;;#ASMEND2576; GFX900-NEXT: v_mov_b32_e32 v4, 02577; GFX900-NEXT: v_mov_b32_e32 v1, v22578; GFX900-NEXT: v_mov_b32_e32 v3, v22579; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]2580; GFX900-NEXT: s_waitcnt vmcnt(0)2581; GFX900-NEXT: s_setpc_b64 s[30:31]2582;2583; GFX90A-LABEL: v_shuffle_v4p3_v2p3__0_3_3_3:2584; GFX90A: ; %bb.0:2585; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2586; GFX90A-NEXT: ;;#ASMSTART2587; GFX90A-NEXT: ; def v[0:1]2588; GFX90A-NEXT: ;;#ASMEND2589; GFX90A-NEXT: ;;#ASMSTART2590; GFX90A-NEXT: ; def v[2:3]2591; GFX90A-NEXT: ;;#ASMEND2592; GFX90A-NEXT: v_mov_b32_e32 v4, 02593; GFX90A-NEXT: v_mov_b32_e32 v1, v32594; GFX90A-NEXT: v_mov_b32_e32 v2, v32595; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]2596; GFX90A-NEXT: s_waitcnt vmcnt(0)2597; GFX90A-NEXT: s_setpc_b64 s[30:31]2598;2599; GFX942-LABEL: v_shuffle_v4p3_v2p3__0_3_3_3:2600; GFX942: ; %bb.0:2601; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2602; GFX942-NEXT: ;;#ASMSTART2603; GFX942-NEXT: ; def v[0:1]2604; GFX942-NEXT: ;;#ASMEND2605; GFX942-NEXT: ;;#ASMSTART2606; GFX942-NEXT: ; def v[2:3]2607; GFX942-NEXT: ;;#ASMEND2608; GFX942-NEXT: v_mov_b32_e32 v4, 02609; GFX942-NEXT: v_mov_b32_e32 v1, v32610; GFX942-NEXT: v_mov_b32_e32 v2, v32611; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]2612; GFX942-NEXT: s_waitcnt vmcnt(0)2613; GFX942-NEXT: s_setpc_b64 s[30:31]2614 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2615 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2616 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 0, i32 3, i32 3, i32 3>2617 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162618 ret void2619}2620 2621define void @v_shuffle_v4p3_v2p3__1_3_3_3(ptr addrspace(1) inreg %ptr) {2622; GFX900-LABEL: v_shuffle_v4p3_v2p3__1_3_3_3:2623; GFX900: ; %bb.0:2624; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2625; GFX900-NEXT: ;;#ASMSTART2626; GFX900-NEXT: ; def v[2:3]2627; GFX900-NEXT: ;;#ASMEND2628; GFX900-NEXT: v_mov_b32_e32 v5, 02629; GFX900-NEXT: v_mov_b32_e32 v2, v32630; GFX900-NEXT: v_mov_b32_e32 v4, v32631; GFX900-NEXT: ;;#ASMSTART2632; GFX900-NEXT: ; def v[0:1]2633; GFX900-NEXT: ;;#ASMEND2634; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]2635; GFX900-NEXT: s_waitcnt vmcnt(0)2636; GFX900-NEXT: s_setpc_b64 s[30:31]2637;2638; GFX90A-LABEL: v_shuffle_v4p3_v2p3__1_3_3_3:2639; GFX90A: ; %bb.0:2640; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2641; GFX90A-NEXT: ;;#ASMSTART2642; GFX90A-NEXT: ; def v[2:3]2643; GFX90A-NEXT: ;;#ASMEND2644; GFX90A-NEXT: ;;#ASMSTART2645; GFX90A-NEXT: ; def v[0:1]2646; GFX90A-NEXT: ;;#ASMEND2647; GFX90A-NEXT: v_mov_b32_e32 v4, 02648; GFX90A-NEXT: v_mov_b32_e32 v0, v32649; GFX90A-NEXT: v_mov_b32_e32 v2, v12650; GFX90A-NEXT: v_mov_b32_e32 v3, v12651; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]2652; GFX90A-NEXT: s_waitcnt vmcnt(0)2653; GFX90A-NEXT: s_setpc_b64 s[30:31]2654;2655; GFX942-LABEL: v_shuffle_v4p3_v2p3__1_3_3_3:2656; GFX942: ; %bb.0:2657; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2658; GFX942-NEXT: ;;#ASMSTART2659; GFX942-NEXT: ; def v[2:3]2660; GFX942-NEXT: ;;#ASMEND2661; GFX942-NEXT: ;;#ASMSTART2662; GFX942-NEXT: ; def v[0:1]2663; GFX942-NEXT: ;;#ASMEND2664; GFX942-NEXT: v_mov_b32_e32 v4, 02665; GFX942-NEXT: v_mov_b32_e32 v0, v32666; GFX942-NEXT: v_mov_b32_e32 v2, v12667; GFX942-NEXT: v_mov_b32_e32 v3, v12668; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]2669; GFX942-NEXT: s_waitcnt vmcnt(0)2670; GFX942-NEXT: s_setpc_b64 s[30:31]2671 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2672 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2673 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 1, i32 3, i32 3, i32 3>2674 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162675 ret void2676}2677 2678define void @v_shuffle_v4p3_v2p3__2_3_3_3(ptr addrspace(1) inreg %ptr) {2679; GFX900-LABEL: v_shuffle_v4p3_v2p3__2_3_3_3:2680; GFX900: ; %bb.0:2681; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2682; GFX900-NEXT: v_mov_b32_e32 v4, 02683; GFX900-NEXT: ;;#ASMSTART2684; GFX900-NEXT: ; def v[0:1]2685; GFX900-NEXT: ;;#ASMEND2686; GFX900-NEXT: v_mov_b32_e32 v2, v12687; GFX900-NEXT: v_mov_b32_e32 v3, v12688; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]2689; GFX900-NEXT: s_waitcnt vmcnt(0)2690; GFX900-NEXT: s_setpc_b64 s[30:31]2691;2692; GFX90A-LABEL: v_shuffle_v4p3_v2p3__2_3_3_3:2693; GFX90A: ; %bb.0:2694; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2695; GFX90A-NEXT: v_mov_b32_e32 v4, 02696; GFX90A-NEXT: ;;#ASMSTART2697; GFX90A-NEXT: ; def v[0:1]2698; GFX90A-NEXT: ;;#ASMEND2699; GFX90A-NEXT: v_mov_b32_e32 v2, v12700; GFX90A-NEXT: v_mov_b32_e32 v3, v12701; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]2702; GFX90A-NEXT: s_waitcnt vmcnt(0)2703; GFX90A-NEXT: s_setpc_b64 s[30:31]2704;2705; GFX942-LABEL: v_shuffle_v4p3_v2p3__2_3_3_3:2706; GFX942: ; %bb.0:2707; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2708; GFX942-NEXT: v_mov_b32_e32 v4, 02709; GFX942-NEXT: ;;#ASMSTART2710; GFX942-NEXT: ; def v[0:1]2711; GFX942-NEXT: ;;#ASMEND2712; GFX942-NEXT: s_nop 02713; GFX942-NEXT: v_mov_b32_e32 v2, v12714; GFX942-NEXT: v_mov_b32_e32 v3, v12715; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]2716; GFX942-NEXT: s_waitcnt vmcnt(0)2717; GFX942-NEXT: s_setpc_b64 s[30:31]2718 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2719 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2720 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 2, i32 3, i32 3, i32 3>2721 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162722 ret void2723}2724 2725define void @v_shuffle_v4p3_v2p3__3_u_3_3(ptr addrspace(1) inreg %ptr) {2726; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_u_3_3:2727; GFX900: ; %bb.0:2728; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2729; GFX900-NEXT: v_mov_b32_e32 v2, 02730; GFX900-NEXT: ;;#ASMSTART2731; GFX900-NEXT: ; def v[0:1]2732; GFX900-NEXT: ;;#ASMEND2733; GFX900-NEXT: v_mov_b32_e32 v3, v12734; GFX900-NEXT: v_mov_b32_e32 v4, v12735; GFX900-NEXT: global_store_dwordx4 v2, v[1:4], s[16:17]2736; GFX900-NEXT: s_waitcnt vmcnt(0)2737; GFX900-NEXT: s_setpc_b64 s[30:31]2738;2739; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_u_3_3:2740; GFX90A: ; %bb.0:2741; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2742; GFX90A-NEXT: ;;#ASMSTART2743; GFX90A-NEXT: ; def v[2:3]2744; GFX90A-NEXT: ;;#ASMEND2745; GFX90A-NEXT: v_mov_b32_e32 v1, 02746; GFX90A-NEXT: v_mov_b32_e32 v0, v32747; GFX90A-NEXT: v_mov_b32_e32 v2, v32748; GFX90A-NEXT: global_store_dwordx4 v1, v[0:3], s[16:17]2749; GFX90A-NEXT: s_waitcnt vmcnt(0)2750; GFX90A-NEXT: s_setpc_b64 s[30:31]2751;2752; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_u_3_3:2753; GFX942: ; %bb.0:2754; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2755; GFX942-NEXT: ;;#ASMSTART2756; GFX942-NEXT: ; def v[2:3]2757; GFX942-NEXT: ;;#ASMEND2758; GFX942-NEXT: v_mov_b32_e32 v1, 02759; GFX942-NEXT: v_mov_b32_e32 v0, v32760; GFX942-NEXT: v_mov_b32_e32 v2, v32761; GFX942-NEXT: global_store_dwordx4 v1, v[0:3], s[0:1]2762; GFX942-NEXT: s_waitcnt vmcnt(0)2763; GFX942-NEXT: s_setpc_b64 s[30:31]2764 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2765 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2766 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 poison, i32 3, i32 3>2767 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162768 ret void2769}2770 2771define void @v_shuffle_v4p3_v2p3__3_0_3_3(ptr addrspace(1) inreg %ptr) {2772; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_0_3_3:2773; GFX900: ; %bb.0:2774; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2775; GFX900-NEXT: ;;#ASMSTART2776; GFX900-NEXT: ; def v[2:3]2777; GFX900-NEXT: ;;#ASMEND2778; GFX900-NEXT: v_mov_b32_e32 v5, 02779; GFX900-NEXT: ;;#ASMSTART2780; GFX900-NEXT: ; def v[0:1]2781; GFX900-NEXT: ;;#ASMEND2782; GFX900-NEXT: v_mov_b32_e32 v3, v12783; GFX900-NEXT: v_mov_b32_e32 v4, v12784; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]2785; GFX900-NEXT: s_waitcnt vmcnt(0)2786; GFX900-NEXT: s_setpc_b64 s[30:31]2787;2788; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_0_3_3:2789; GFX90A: ; %bb.0:2790; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2791; GFX90A-NEXT: ;;#ASMSTART2792; GFX90A-NEXT: ; def v[0:1]2793; GFX90A-NEXT: ;;#ASMEND2794; GFX90A-NEXT: ;;#ASMSTART2795; GFX90A-NEXT: ; def v[2:3]2796; GFX90A-NEXT: ;;#ASMEND2797; GFX90A-NEXT: v_mov_b32_e32 v4, 02798; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]2799; GFX90A-NEXT: v_mov_b32_e32 v2, v32800; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]2801; GFX90A-NEXT: s_waitcnt vmcnt(0)2802; GFX90A-NEXT: s_setpc_b64 s[30:31]2803;2804; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_0_3_3:2805; GFX942: ; %bb.0:2806; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2807; GFX942-NEXT: ;;#ASMSTART2808; GFX942-NEXT: ; def v[0:1]2809; GFX942-NEXT: ;;#ASMEND2810; GFX942-NEXT: ;;#ASMSTART2811; GFX942-NEXT: ; def v[2:3]2812; GFX942-NEXT: ;;#ASMEND2813; GFX942-NEXT: v_mov_b32_e32 v4, 02814; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[0:1] op_sel:[1,0]2815; GFX942-NEXT: v_mov_b32_e32 v2, v32816; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]2817; GFX942-NEXT: s_waitcnt vmcnt(0)2818; GFX942-NEXT: s_setpc_b64 s[30:31]2819 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2820 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2821 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 0, i32 3, i32 3>2822 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162823 ret void2824}2825 2826define void @v_shuffle_v4p3_v2p3__3_1_3_3(ptr addrspace(1) inreg %ptr) {2827; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_1_3_3:2828; GFX900: ; %bb.0:2829; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2830; GFX900-NEXT: ;;#ASMSTART2831; GFX900-NEXT: ; def v[1:2]2832; GFX900-NEXT: ;;#ASMEND2833; GFX900-NEXT: v_mov_b32_e32 v5, 02834; GFX900-NEXT: ;;#ASMSTART2835; GFX900-NEXT: ; def v[0:1]2836; GFX900-NEXT: ;;#ASMEND2837; GFX900-NEXT: v_mov_b32_e32 v3, v12838; GFX900-NEXT: v_mov_b32_e32 v4, v12839; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]2840; GFX900-NEXT: s_waitcnt vmcnt(0)2841; GFX900-NEXT: s_setpc_b64 s[30:31]2842;2843; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_1_3_3:2844; GFX90A: ; %bb.0:2845; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2846; GFX90A-NEXT: ;;#ASMSTART2847; GFX90A-NEXT: ; def v[0:1]2848; GFX90A-NEXT: ;;#ASMEND2849; GFX90A-NEXT: ;;#ASMSTART2850; GFX90A-NEXT: ; def v[2:3]2851; GFX90A-NEXT: ;;#ASMEND2852; GFX90A-NEXT: v_mov_b32_e32 v4, 02853; GFX90A-NEXT: v_mov_b32_e32 v0, v32854; GFX90A-NEXT: v_mov_b32_e32 v2, v32855; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]2856; GFX90A-NEXT: s_waitcnt vmcnt(0)2857; GFX90A-NEXT: s_setpc_b64 s[30:31]2858;2859; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_1_3_3:2860; GFX942: ; %bb.0:2861; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2862; GFX942-NEXT: ;;#ASMSTART2863; GFX942-NEXT: ; def v[0:1]2864; GFX942-NEXT: ;;#ASMEND2865; GFX942-NEXT: ;;#ASMSTART2866; GFX942-NEXT: ; def v[2:3]2867; GFX942-NEXT: ;;#ASMEND2868; GFX942-NEXT: v_mov_b32_e32 v4, 02869; GFX942-NEXT: v_mov_b32_e32 v0, v32870; GFX942-NEXT: v_mov_b32_e32 v2, v32871; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]2872; GFX942-NEXT: s_waitcnt vmcnt(0)2873; GFX942-NEXT: s_setpc_b64 s[30:31]2874 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2875 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2876 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 1, i32 3, i32 3>2877 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162878 ret void2879}2880 2881define void @v_shuffle_v4p3_v2p3__3_2_3_3(ptr addrspace(1) inreg %ptr) {2882; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_2_3_3:2883; GFX900: ; %bb.0:2884; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2885; GFX900-NEXT: v_mov_b32_e32 v5, 02886; GFX900-NEXT: ;;#ASMSTART2887; GFX900-NEXT: ; def v[0:1]2888; GFX900-NEXT: ;;#ASMEND2889; GFX900-NEXT: v_mov_b32_e32 v2, v02890; GFX900-NEXT: v_mov_b32_e32 v3, v12891; GFX900-NEXT: v_mov_b32_e32 v4, v12892; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]2893; GFX900-NEXT: s_waitcnt vmcnt(0)2894; GFX900-NEXT: s_setpc_b64 s[30:31]2895;2896; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_2_3_3:2897; GFX90A: ; %bb.0:2898; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2899; GFX90A-NEXT: ;;#ASMSTART2900; GFX90A-NEXT: ; def v[2:3]2901; GFX90A-NEXT: ;;#ASMEND2902; GFX90A-NEXT: v_mov_b32_e32 v4, 02903; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]2904; GFX90A-NEXT: v_mov_b32_e32 v2, v32905; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]2906; GFX90A-NEXT: s_waitcnt vmcnt(0)2907; GFX90A-NEXT: s_setpc_b64 s[30:31]2908;2909; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_2_3_3:2910; GFX942: ; %bb.0:2911; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2912; GFX942-NEXT: ;;#ASMSTART2913; GFX942-NEXT: ; def v[2:3]2914; GFX942-NEXT: ;;#ASMEND2915; GFX942-NEXT: v_mov_b32_e32 v4, 02916; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]2917; GFX942-NEXT: v_mov_b32_e32 v2, v32918; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]2919; GFX942-NEXT: s_waitcnt vmcnt(0)2920; GFX942-NEXT: s_setpc_b64 s[30:31]2921 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2922 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2923 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 2, i32 3, i32 3>2924 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162925 ret void2926}2927 2928define void @v_shuffle_v4p3_v2p3__3_3_u_3(ptr addrspace(1) inreg %ptr) {2929; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_u_3:2930; GFX900: ; %bb.0:2931; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2932; GFX900-NEXT: v_mov_b32_e32 v3, 02933; GFX900-NEXT: ;;#ASMSTART2934; GFX900-NEXT: ; def v[0:1]2935; GFX900-NEXT: ;;#ASMEND2936; GFX900-NEXT: v_mov_b32_e32 v2, v12937; GFX900-NEXT: v_mov_b32_e32 v4, v12938; GFX900-NEXT: global_store_dwordx4 v3, v[1:4], s[16:17]2939; GFX900-NEXT: s_waitcnt vmcnt(0)2940; GFX900-NEXT: s_setpc_b64 s[30:31]2941;2942; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_u_3:2943; GFX90A: ; %bb.0:2944; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2945; GFX90A-NEXT: ;;#ASMSTART2946; GFX90A-NEXT: ; def v[0:1]2947; GFX90A-NEXT: ;;#ASMEND2948; GFX90A-NEXT: v_mov_b32_e32 v2, 02949; GFX90A-NEXT: v_mov_b32_e32 v0, v12950; GFX90A-NEXT: v_mov_b32_e32 v3, v12951; GFX90A-NEXT: global_store_dwordx4 v2, v[0:3], s[16:17]2952; GFX90A-NEXT: s_waitcnt vmcnt(0)2953; GFX90A-NEXT: s_setpc_b64 s[30:31]2954;2955; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_u_3:2956; GFX942: ; %bb.0:2957; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2958; GFX942-NEXT: ;;#ASMSTART2959; GFX942-NEXT: ; def v[0:1]2960; GFX942-NEXT: ;;#ASMEND2961; GFX942-NEXT: v_mov_b32_e32 v2, 02962; GFX942-NEXT: v_mov_b32_e32 v0, v12963; GFX942-NEXT: v_mov_b32_e32 v3, v12964; GFX942-NEXT: global_store_dwordx4 v2, v[0:3], s[0:1]2965; GFX942-NEXT: s_waitcnt vmcnt(0)2966; GFX942-NEXT: s_setpc_b64 s[30:31]2967 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2968 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()2969 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 3>2970 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162971 ret void2972}2973 2974define void @v_shuffle_v4p3_v2p3__3_3_0_3(ptr addrspace(1) inreg %ptr) {2975; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_0_3:2976; GFX900: ; %bb.0:2977; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2978; GFX900-NEXT: ;;#ASMSTART2979; GFX900-NEXT: ; def v[3:4]2980; GFX900-NEXT: ;;#ASMEND2981; GFX900-NEXT: v_mov_b32_e32 v5, 02982; GFX900-NEXT: ;;#ASMSTART2983; GFX900-NEXT: ; def v[0:1]2984; GFX900-NEXT: ;;#ASMEND2985; GFX900-NEXT: v_mov_b32_e32 v2, v12986; GFX900-NEXT: v_mov_b32_e32 v4, v12987; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]2988; GFX900-NEXT: s_waitcnt vmcnt(0)2989; GFX900-NEXT: s_setpc_b64 s[30:31]2990;2991; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_0_3:2992; GFX90A: ; %bb.0:2993; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2994; GFX90A-NEXT: ;;#ASMSTART2995; GFX90A-NEXT: ; def v[2:3]2996; GFX90A-NEXT: ;;#ASMEND2997; GFX90A-NEXT: ;;#ASMSTART2998; GFX90A-NEXT: ; def v[0:1]2999; GFX90A-NEXT: ;;#ASMEND3000; GFX90A-NEXT: v_mov_b32_e32 v4, 03001; GFX90A-NEXT: v_mov_b32_e32 v0, v13002; GFX90A-NEXT: v_mov_b32_e32 v3, v13003; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]3004; GFX90A-NEXT: s_waitcnt vmcnt(0)3005; GFX90A-NEXT: s_setpc_b64 s[30:31]3006;3007; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_0_3:3008; GFX942: ; %bb.0:3009; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3010; GFX942-NEXT: ;;#ASMSTART3011; GFX942-NEXT: ; def v[2:3]3012; GFX942-NEXT: ;;#ASMEND3013; GFX942-NEXT: ;;#ASMSTART3014; GFX942-NEXT: ; def v[0:1]3015; GFX942-NEXT: ;;#ASMEND3016; GFX942-NEXT: v_mov_b32_e32 v4, 03017; GFX942-NEXT: v_mov_b32_e32 v0, v13018; GFX942-NEXT: v_mov_b32_e32 v3, v13019; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]3020; GFX942-NEXT: s_waitcnt vmcnt(0)3021; GFX942-NEXT: s_setpc_b64 s[30:31]3022 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()3023 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()3024 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 3>3025 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163026 ret void3027}3028 3029define void @v_shuffle_v4p3_v2p3__3_3_1_3(ptr addrspace(1) inreg %ptr) {3030; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_1_3:3031; GFX900: ; %bb.0:3032; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3033; GFX900-NEXT: ;;#ASMSTART3034; GFX900-NEXT: ; def v[2:3]3035; GFX900-NEXT: ;;#ASMEND3036; GFX900-NEXT: v_mov_b32_e32 v5, 03037; GFX900-NEXT: ;;#ASMSTART3038; GFX900-NEXT: ; def v[0:1]3039; GFX900-NEXT: ;;#ASMEND3040; GFX900-NEXT: v_mov_b32_e32 v2, v13041; GFX900-NEXT: v_mov_b32_e32 v4, v13042; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]3043; GFX900-NEXT: s_waitcnt vmcnt(0)3044; GFX900-NEXT: s_setpc_b64 s[30:31]3045;3046; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_1_3:3047; GFX90A: ; %bb.0:3048; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3049; GFX90A-NEXT: ;;#ASMSTART3050; GFX90A-NEXT: ; def v[2:3]3051; GFX90A-NEXT: ;;#ASMEND3052; GFX90A-NEXT: ;;#ASMSTART3053; GFX90A-NEXT: ; def v[0:1]3054; GFX90A-NEXT: ;;#ASMEND3055; GFX90A-NEXT: v_mov_b32_e32 v4, 03056; GFX90A-NEXT: v_mov_b32_e32 v0, v13057; GFX90A-NEXT: v_mov_b32_e32 v2, v33058; GFX90A-NEXT: v_mov_b32_e32 v3, v13059; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]3060; GFX90A-NEXT: s_waitcnt vmcnt(0)3061; GFX90A-NEXT: s_setpc_b64 s[30:31]3062;3063; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_1_3:3064; GFX942: ; %bb.0:3065; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3066; GFX942-NEXT: ;;#ASMSTART3067; GFX942-NEXT: ; def v[2:3]3068; GFX942-NEXT: ;;#ASMEND3069; GFX942-NEXT: ;;#ASMSTART3070; GFX942-NEXT: ; def v[0:1]3071; GFX942-NEXT: ;;#ASMEND3072; GFX942-NEXT: v_mov_b32_e32 v4, 03073; GFX942-NEXT: v_mov_b32_e32 v0, v13074; GFX942-NEXT: v_mov_b32_e32 v2, v33075; GFX942-NEXT: v_mov_b32_e32 v3, v13076; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]3077; GFX942-NEXT: s_waitcnt vmcnt(0)3078; GFX942-NEXT: s_setpc_b64 s[30:31]3079 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()3080 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()3081 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 3>3082 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163083 ret void3084}3085 3086define void @v_shuffle_v4p3_v2p3__3_3_2_3(ptr addrspace(1) inreg %ptr) {3087; GFX900-LABEL: v_shuffle_v4p3_v2p3__3_3_2_3:3088; GFX900: ; %bb.0:3089; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3090; GFX900-NEXT: v_mov_b32_e32 v5, 03091; GFX900-NEXT: ;;#ASMSTART3092; GFX900-NEXT: ; def v[0:1]3093; GFX900-NEXT: ;;#ASMEND3094; GFX900-NEXT: v_mov_b32_e32 v2, v13095; GFX900-NEXT: v_mov_b32_e32 v3, v03096; GFX900-NEXT: v_mov_b32_e32 v4, v13097; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]3098; GFX900-NEXT: s_waitcnt vmcnt(0)3099; GFX900-NEXT: s_setpc_b64 s[30:31]3100;3101; GFX90A-LABEL: v_shuffle_v4p3_v2p3__3_3_2_3:3102; GFX90A: ; %bb.0:3103; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3104; GFX90A-NEXT: v_mov_b32_e32 v4, 03105; GFX90A-NEXT: ;;#ASMSTART3106; GFX90A-NEXT: ; def v[2:3]3107; GFX90A-NEXT: ;;#ASMEND3108; GFX90A-NEXT: v_mov_b32_e32 v0, v33109; GFX90A-NEXT: v_mov_b32_e32 v1, v33110; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]3111; GFX90A-NEXT: s_waitcnt vmcnt(0)3112; GFX90A-NEXT: s_setpc_b64 s[30:31]3113;3114; GFX942-LABEL: v_shuffle_v4p3_v2p3__3_3_2_3:3115; GFX942: ; %bb.0:3116; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3117; GFX942-NEXT: v_mov_b32_e32 v4, 03118; GFX942-NEXT: ;;#ASMSTART3119; GFX942-NEXT: ; def v[2:3]3120; GFX942-NEXT: ;;#ASMEND3121; GFX942-NEXT: s_nop 03122; GFX942-NEXT: v_mov_b32_e32 v0, v33123; GFX942-NEXT: v_mov_b32_e32 v1, v33124; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]3125; GFX942-NEXT: s_waitcnt vmcnt(0)3126; GFX942-NEXT: s_setpc_b64 s[30:31]3127 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()3128 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=v"()3129 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 3>3130 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163131 ret void3132}3133 3134define void @s_shuffle_v4p3_v2p3__u_u_u_u() {3135; GFX9-LABEL: s_shuffle_v4p3_v2p3__u_u_u_u:3136; GFX9: ; %bb.0:3137; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3138; GFX9-NEXT: ;;#ASMSTART3139; GFX9-NEXT: ; use s[8:11]3140; GFX9-NEXT: ;;#ASMEND3141; GFX9-NEXT: s_setpc_b64 s[30:31]3142 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3143 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> poison3144 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3145 ret void3146}3147 3148define void @s_shuffle_v4p3_v2p3__0_u_u_u() {3149; GFX900-LABEL: s_shuffle_v4p3_v2p3__0_u_u_u:3150; GFX900: ; %bb.0:3151; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3152; GFX900-NEXT: ;;#ASMSTART3153; GFX900-NEXT: ; def s[8:9]3154; GFX900-NEXT: ;;#ASMEND3155; GFX900-NEXT: ;;#ASMSTART3156; GFX900-NEXT: ; use s[8:11]3157; GFX900-NEXT: ;;#ASMEND3158; GFX900-NEXT: s_setpc_b64 s[30:31]3159;3160; GFX90A-LABEL: s_shuffle_v4p3_v2p3__0_u_u_u:3161; GFX90A: ; %bb.0:3162; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3163; GFX90A-NEXT: ;;#ASMSTART3164; GFX90A-NEXT: ; def s[8:9]3165; GFX90A-NEXT: ;;#ASMEND3166; GFX90A-NEXT: ;;#ASMSTART3167; GFX90A-NEXT: ; use s[8:11]3168; GFX90A-NEXT: ;;#ASMEND3169; GFX90A-NEXT: s_setpc_b64 s[30:31]3170;3171; GFX942-LABEL: s_shuffle_v4p3_v2p3__0_u_u_u:3172; GFX942: ; %bb.0:3173; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3174; GFX942-NEXT: ;;#ASMSTART3175; GFX942-NEXT: ; def s[8:9]3176; GFX942-NEXT: ;;#ASMEND3177; GFX942-NEXT: s_nop 03178; GFX942-NEXT: ;;#ASMSTART3179; GFX942-NEXT: ; use s[8:11]3180; GFX942-NEXT: ;;#ASMEND3181; GFX942-NEXT: s_setpc_b64 s[30:31]3182 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3183 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>3184 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3185 ret void3186}3187 3188define void @s_shuffle_v4p3_v2p3__1_u_u_u() {3189; GFX900-LABEL: s_shuffle_v4p3_v2p3__1_u_u_u:3190; GFX900: ; %bb.0:3191; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3192; GFX900-NEXT: ;;#ASMSTART3193; GFX900-NEXT: ; def s[4:5]3194; GFX900-NEXT: ;;#ASMEND3195; GFX900-NEXT: s_mov_b32 s8, s53196; GFX900-NEXT: ;;#ASMSTART3197; GFX900-NEXT: ; use s[8:11]3198; GFX900-NEXT: ;;#ASMEND3199; GFX900-NEXT: s_setpc_b64 s[30:31]3200;3201; GFX90A-LABEL: s_shuffle_v4p3_v2p3__1_u_u_u:3202; GFX90A: ; %bb.0:3203; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3204; GFX90A-NEXT: ;;#ASMSTART3205; GFX90A-NEXT: ; def s[4:5]3206; GFX90A-NEXT: ;;#ASMEND3207; GFX90A-NEXT: s_mov_b32 s8, s53208; GFX90A-NEXT: ;;#ASMSTART3209; GFX90A-NEXT: ; use s[8:11]3210; GFX90A-NEXT: ;;#ASMEND3211; GFX90A-NEXT: s_setpc_b64 s[30:31]3212;3213; GFX942-LABEL: s_shuffle_v4p3_v2p3__1_u_u_u:3214; GFX942: ; %bb.0:3215; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3216; GFX942-NEXT: ;;#ASMSTART3217; GFX942-NEXT: ; def s[0:1]3218; GFX942-NEXT: ;;#ASMEND3219; GFX942-NEXT: s_mov_b32 s8, s13220; GFX942-NEXT: ;;#ASMSTART3221; GFX942-NEXT: ; use s[8:11]3222; GFX942-NEXT: ;;#ASMEND3223; GFX942-NEXT: s_setpc_b64 s[30:31]3224 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3225 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>3226 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3227 ret void3228}3229 3230define void @s_shuffle_v4p3_v2p3__2_u_u_u() {3231; GFX9-LABEL: s_shuffle_v4p3_v2p3__2_u_u_u:3232; GFX9: ; %bb.0:3233; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3234; GFX9-NEXT: ;;#ASMSTART3235; GFX9-NEXT: ; use s[8:11]3236; GFX9-NEXT: ;;#ASMEND3237; GFX9-NEXT: s_setpc_b64 s[30:31]3238 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3239 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison>3240 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3241 ret void3242}3243 3244define void @s_shuffle_v4p3_v2p3__3_u_u_u() {3245; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_u_u_u:3246; GFX900: ; %bb.0:3247; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3248; GFX900-NEXT: ;;#ASMSTART3249; GFX900-NEXT: ; def s[4:5]3250; GFX900-NEXT: ;;#ASMEND3251; GFX900-NEXT: s_mov_b32 s8, s53252; GFX900-NEXT: ;;#ASMSTART3253; GFX900-NEXT: ; use s[8:11]3254; GFX900-NEXT: ;;#ASMEND3255; GFX900-NEXT: s_setpc_b64 s[30:31]3256;3257; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_u_u_u:3258; GFX90A: ; %bb.0:3259; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3260; GFX90A-NEXT: ;;#ASMSTART3261; GFX90A-NEXT: ; def s[4:5]3262; GFX90A-NEXT: ;;#ASMEND3263; GFX90A-NEXT: s_mov_b32 s8, s53264; GFX90A-NEXT: ;;#ASMSTART3265; GFX90A-NEXT: ; use s[8:11]3266; GFX90A-NEXT: ;;#ASMEND3267; GFX90A-NEXT: s_setpc_b64 s[30:31]3268;3269; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_u_u_u:3270; GFX942: ; %bb.0:3271; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3272; GFX942-NEXT: ;;#ASMSTART3273; GFX942-NEXT: ; def s[0:1]3274; GFX942-NEXT: ;;#ASMEND3275; GFX942-NEXT: s_mov_b32 s8, s13276; GFX942-NEXT: ;;#ASMSTART3277; GFX942-NEXT: ; use s[8:11]3278; GFX942-NEXT: ;;#ASMEND3279; GFX942-NEXT: s_setpc_b64 s[30:31]3280 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3281 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3282 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison>3283 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3284 ret void3285}3286 3287define void @s_shuffle_v4p3_v2p3__3_0_u_u() {3288; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_0_u_u:3289; GFX900: ; %bb.0:3290; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3291; GFX900-NEXT: ;;#ASMSTART3292; GFX900-NEXT: ; def s[4:5]3293; GFX900-NEXT: ;;#ASMEND3294; GFX900-NEXT: ;;#ASMSTART3295; GFX900-NEXT: ; def s[6:7]3296; GFX900-NEXT: ;;#ASMEND3297; GFX900-NEXT: s_mov_b32 s8, s73298; GFX900-NEXT: s_mov_b32 s9, s43299; GFX900-NEXT: ;;#ASMSTART3300; GFX900-NEXT: ; use s[8:11]3301; GFX900-NEXT: ;;#ASMEND3302; GFX900-NEXT: s_setpc_b64 s[30:31]3303;3304; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_0_u_u:3305; GFX90A: ; %bb.0:3306; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3307; GFX90A-NEXT: ;;#ASMSTART3308; GFX90A-NEXT: ; def s[4:5]3309; GFX90A-NEXT: ;;#ASMEND3310; GFX90A-NEXT: ;;#ASMSTART3311; GFX90A-NEXT: ; def s[6:7]3312; GFX90A-NEXT: ;;#ASMEND3313; GFX90A-NEXT: s_mov_b32 s8, s73314; GFX90A-NEXT: s_mov_b32 s9, s43315; GFX90A-NEXT: ;;#ASMSTART3316; GFX90A-NEXT: ; use s[8:11]3317; GFX90A-NEXT: ;;#ASMEND3318; GFX90A-NEXT: s_setpc_b64 s[30:31]3319;3320; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_0_u_u:3321; GFX942: ; %bb.0:3322; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3323; GFX942-NEXT: ;;#ASMSTART3324; GFX942-NEXT: ; def s[0:1]3325; GFX942-NEXT: ;;#ASMEND3326; GFX942-NEXT: ;;#ASMSTART3327; GFX942-NEXT: ; def s[2:3]3328; GFX942-NEXT: ;;#ASMEND3329; GFX942-NEXT: s_mov_b32 s8, s33330; GFX942-NEXT: s_mov_b32 s9, s03331; GFX942-NEXT: ;;#ASMSTART3332; GFX942-NEXT: ; use s[8:11]3333; GFX942-NEXT: ;;#ASMEND3334; GFX942-NEXT: s_setpc_b64 s[30:31]3335 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3336 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3337 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 0, i32 poison, i32 poison>3338 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3339 ret void3340}3341 3342define void @s_shuffle_v4p3_v2p3__3_1_u_u() {3343; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_1_u_u:3344; GFX900: ; %bb.0:3345; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3346; GFX900-NEXT: ;;#ASMSTART3347; GFX900-NEXT: ; def s[8:9]3348; GFX900-NEXT: ;;#ASMEND3349; GFX900-NEXT: ;;#ASMSTART3350; GFX900-NEXT: ; def s[4:5]3351; GFX900-NEXT: ;;#ASMEND3352; GFX900-NEXT: s_mov_b32 s8, s53353; GFX900-NEXT: ;;#ASMSTART3354; GFX900-NEXT: ; use s[8:11]3355; GFX900-NEXT: ;;#ASMEND3356; GFX900-NEXT: s_setpc_b64 s[30:31]3357;3358; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_1_u_u:3359; GFX90A: ; %bb.0:3360; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3361; GFX90A-NEXT: ;;#ASMSTART3362; GFX90A-NEXT: ; def s[8:9]3363; GFX90A-NEXT: ;;#ASMEND3364; GFX90A-NEXT: ;;#ASMSTART3365; GFX90A-NEXT: ; def s[4:5]3366; GFX90A-NEXT: ;;#ASMEND3367; GFX90A-NEXT: s_mov_b32 s8, s53368; GFX90A-NEXT: ;;#ASMSTART3369; GFX90A-NEXT: ; use s[8:11]3370; GFX90A-NEXT: ;;#ASMEND3371; GFX90A-NEXT: s_setpc_b64 s[30:31]3372;3373; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_1_u_u:3374; GFX942: ; %bb.0:3375; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3376; GFX942-NEXT: ;;#ASMSTART3377; GFX942-NEXT: ; def s[8:9]3378; GFX942-NEXT: ;;#ASMEND3379; GFX942-NEXT: ;;#ASMSTART3380; GFX942-NEXT: ; def s[0:1]3381; GFX942-NEXT: ;;#ASMEND3382; GFX942-NEXT: s_mov_b32 s8, s13383; GFX942-NEXT: ;;#ASMSTART3384; GFX942-NEXT: ; use s[8:11]3385; GFX942-NEXT: ;;#ASMEND3386; GFX942-NEXT: s_setpc_b64 s[30:31]3387 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3388 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3389 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 1, i32 poison, i32 poison>3390 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3391 ret void3392}3393 3394define void @s_shuffle_v4p3_v2p3__3_2_u_u() {3395; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_2_u_u:3396; GFX900: ; %bb.0:3397; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3398; GFX900-NEXT: ;;#ASMSTART3399; GFX900-NEXT: ; def s[4:5]3400; GFX900-NEXT: ;;#ASMEND3401; GFX900-NEXT: s_mov_b32 s8, s53402; GFX900-NEXT: s_mov_b32 s9, s43403; GFX900-NEXT: ;;#ASMSTART3404; GFX900-NEXT: ; use s[8:11]3405; GFX900-NEXT: ;;#ASMEND3406; GFX900-NEXT: s_setpc_b64 s[30:31]3407;3408; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_2_u_u:3409; GFX90A: ; %bb.0:3410; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3411; GFX90A-NEXT: ;;#ASMSTART3412; GFX90A-NEXT: ; def s[4:5]3413; GFX90A-NEXT: ;;#ASMEND3414; GFX90A-NEXT: s_mov_b32 s8, s53415; GFX90A-NEXT: s_mov_b32 s9, s43416; GFX90A-NEXT: ;;#ASMSTART3417; GFX90A-NEXT: ; use s[8:11]3418; GFX90A-NEXT: ;;#ASMEND3419; GFX90A-NEXT: s_setpc_b64 s[30:31]3420;3421; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_2_u_u:3422; GFX942: ; %bb.0:3423; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3424; GFX942-NEXT: ;;#ASMSTART3425; GFX942-NEXT: ; def s[0:1]3426; GFX942-NEXT: ;;#ASMEND3427; GFX942-NEXT: s_mov_b32 s8, s13428; GFX942-NEXT: s_mov_b32 s9, s03429; GFX942-NEXT: ;;#ASMSTART3430; GFX942-NEXT: ; use s[8:11]3431; GFX942-NEXT: ;;#ASMEND3432; GFX942-NEXT: s_setpc_b64 s[30:31]3433 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3434 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3435 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 2, i32 poison, i32 poison>3436 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3437 ret void3438}3439 3440define void @s_shuffle_v4p3_v2p3__3_3_u_u() {3441; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_3_u_u:3442; GFX9: ; %bb.0:3443; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3444; GFX9-NEXT: ;;#ASMSTART3445; GFX9-NEXT: ; def s[8:9]3446; GFX9-NEXT: ;;#ASMEND3447; GFX9-NEXT: s_mov_b32 s8, s93448; GFX9-NEXT: ;;#ASMSTART3449; GFX9-NEXT: ; use s[8:11]3450; GFX9-NEXT: ;;#ASMEND3451; GFX9-NEXT: s_setpc_b64 s[30:31]3452 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3453 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3454 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 poison>3455 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3456 ret void3457}3458 3459define void @s_shuffle_v4p3_v2p3__3_3_0_u() {3460; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_3_0_u:3461; GFX9: ; %bb.0:3462; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3463; GFX9-NEXT: ;;#ASMSTART3464; GFX9-NEXT: ; def s[8:9]3465; GFX9-NEXT: ;;#ASMEND3466; GFX9-NEXT: ;;#ASMSTART3467; GFX9-NEXT: ; def s[10:11]3468; GFX9-NEXT: ;;#ASMEND3469; GFX9-NEXT: s_mov_b32 s8, s93470; GFX9-NEXT: ;;#ASMSTART3471; GFX9-NEXT: ; use s[8:11]3472; GFX9-NEXT: ;;#ASMEND3473; GFX9-NEXT: s_setpc_b64 s[30:31]3474 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3475 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3476 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 poison>3477 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3478 ret void3479}3480 3481define void @s_shuffle_v4p3_v2p3__3_3_1_u() {3482; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_3_1_u:3483; GFX900: ; %bb.0:3484; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3485; GFX900-NEXT: ;;#ASMSTART3486; GFX900-NEXT: ; def s[8:9]3487; GFX900-NEXT: ;;#ASMEND3488; GFX900-NEXT: ;;#ASMSTART3489; GFX900-NEXT: ; def s[4:5]3490; GFX900-NEXT: ;;#ASMEND3491; GFX900-NEXT: s_mov_b32 s8, s93492; GFX900-NEXT: s_mov_b32 s10, s53493; GFX900-NEXT: ;;#ASMSTART3494; GFX900-NEXT: ; use s[8:11]3495; GFX900-NEXT: ;;#ASMEND3496; GFX900-NEXT: s_setpc_b64 s[30:31]3497;3498; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_3_1_u:3499; GFX90A: ; %bb.0:3500; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3501; GFX90A-NEXT: ;;#ASMSTART3502; GFX90A-NEXT: ; def s[8:9]3503; GFX90A-NEXT: ;;#ASMEND3504; GFX90A-NEXT: ;;#ASMSTART3505; GFX90A-NEXT: ; def s[4:5]3506; GFX90A-NEXT: ;;#ASMEND3507; GFX90A-NEXT: s_mov_b32 s8, s93508; GFX90A-NEXT: s_mov_b32 s10, s53509; GFX90A-NEXT: ;;#ASMSTART3510; GFX90A-NEXT: ; use s[8:11]3511; GFX90A-NEXT: ;;#ASMEND3512; GFX90A-NEXT: s_setpc_b64 s[30:31]3513;3514; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_3_1_u:3515; GFX942: ; %bb.0:3516; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3517; GFX942-NEXT: ;;#ASMSTART3518; GFX942-NEXT: ; def s[8:9]3519; GFX942-NEXT: ;;#ASMEND3520; GFX942-NEXT: ;;#ASMSTART3521; GFX942-NEXT: ; def s[0:1]3522; GFX942-NEXT: ;;#ASMEND3523; GFX942-NEXT: s_mov_b32 s8, s93524; GFX942-NEXT: s_mov_b32 s10, s13525; GFX942-NEXT: ;;#ASMSTART3526; GFX942-NEXT: ; use s[8:11]3527; GFX942-NEXT: ;;#ASMEND3528; GFX942-NEXT: s_setpc_b64 s[30:31]3529 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3530 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3531 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 poison>3532 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3533 ret void3534}3535 3536define void @s_shuffle_v4p3_v2p3__3_3_2_u() {3537; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_3_2_u:3538; GFX9: ; %bb.0:3539; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3540; GFX9-NEXT: ;;#ASMSTART3541; GFX9-NEXT: ; def s[10:11]3542; GFX9-NEXT: ;;#ASMEND3543; GFX9-NEXT: s_mov_b32 s8, s113544; GFX9-NEXT: s_mov_b32 s9, s113545; GFX9-NEXT: ;;#ASMSTART3546; GFX9-NEXT: ; use s[8:11]3547; GFX9-NEXT: ;;#ASMEND3548; GFX9-NEXT: s_setpc_b64 s[30:31]3549 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3550 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3551 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 poison>3552 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3553 ret void3554}3555 3556define void @s_shuffle_v4p3_v2p3__3_3_3_u() {3557; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_3_3_u:3558; GFX9: ; %bb.0:3559; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3560; GFX9-NEXT: ;;#ASMSTART3561; GFX9-NEXT: ; def s[8:9]3562; GFX9-NEXT: ;;#ASMEND3563; GFX9-NEXT: s_mov_b32 s8, s93564; GFX9-NEXT: s_mov_b32 s10, s93565; GFX9-NEXT: ;;#ASMSTART3566; GFX9-NEXT: ; use s[8:11]3567; GFX9-NEXT: ;;#ASMEND3568; GFX9-NEXT: s_setpc_b64 s[30:31]3569 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3570 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3571 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 poison>3572 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3573 ret void3574}3575 3576define void @s_shuffle_v4p3_v2p3__3_3_3_0() {3577; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_3_3_0:3578; GFX900: ; %bb.0:3579; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3580; GFX900-NEXT: ;;#ASMSTART3581; GFX900-NEXT: ; def s[8:9]3582; GFX900-NEXT: ;;#ASMEND3583; GFX900-NEXT: ;;#ASMSTART3584; GFX900-NEXT: ; def s[4:5]3585; GFX900-NEXT: ;;#ASMEND3586; GFX900-NEXT: s_mov_b32 s8, s93587; GFX900-NEXT: s_mov_b32 s10, s93588; GFX900-NEXT: s_mov_b32 s11, s43589; GFX900-NEXT: ;;#ASMSTART3590; GFX900-NEXT: ; use s[8:11]3591; GFX900-NEXT: ;;#ASMEND3592; GFX900-NEXT: s_setpc_b64 s[30:31]3593;3594; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_3_3_0:3595; GFX90A: ; %bb.0:3596; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3597; GFX90A-NEXT: ;;#ASMSTART3598; GFX90A-NEXT: ; def s[8:9]3599; GFX90A-NEXT: ;;#ASMEND3600; GFX90A-NEXT: ;;#ASMSTART3601; GFX90A-NEXT: ; def s[4:5]3602; GFX90A-NEXT: ;;#ASMEND3603; GFX90A-NEXT: s_mov_b32 s8, s93604; GFX90A-NEXT: s_mov_b32 s10, s93605; GFX90A-NEXT: s_mov_b32 s11, s43606; GFX90A-NEXT: ;;#ASMSTART3607; GFX90A-NEXT: ; use s[8:11]3608; GFX90A-NEXT: ;;#ASMEND3609; GFX90A-NEXT: s_setpc_b64 s[30:31]3610;3611; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_3_3_0:3612; GFX942: ; %bb.0:3613; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3614; GFX942-NEXT: ;;#ASMSTART3615; GFX942-NEXT: ; def s[8:9]3616; GFX942-NEXT: ;;#ASMEND3617; GFX942-NEXT: ;;#ASMSTART3618; GFX942-NEXT: ; def s[0:1]3619; GFX942-NEXT: ;;#ASMEND3620; GFX942-NEXT: s_mov_b32 s8, s93621; GFX942-NEXT: s_mov_b32 s10, s93622; GFX942-NEXT: s_mov_b32 s11, s03623; GFX942-NEXT: ;;#ASMSTART3624; GFX942-NEXT: ; use s[8:11]3625; GFX942-NEXT: ;;#ASMEND3626; GFX942-NEXT: s_setpc_b64 s[30:31]3627 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3628 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3629 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 0>3630 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3631 ret void3632}3633 3634define void @s_shuffle_v4p3_v2p3__3_3_3_1() {3635; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_3_3_1:3636; GFX9: ; %bb.0:3637; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3638; GFX9-NEXT: ;;#ASMSTART3639; GFX9-NEXT: ; def s[10:11]3640; GFX9-NEXT: ;;#ASMEND3641; GFX9-NEXT: ;;#ASMSTART3642; GFX9-NEXT: ; def s[8:9]3643; GFX9-NEXT: ;;#ASMEND3644; GFX9-NEXT: s_mov_b32 s8, s93645; GFX9-NEXT: s_mov_b32 s10, s93646; GFX9-NEXT: ;;#ASMSTART3647; GFX9-NEXT: ; use s[8:11]3648; GFX9-NEXT: ;;#ASMEND3649; GFX9-NEXT: s_setpc_b64 s[30:31]3650 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3651 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3652 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 1>3653 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3654 ret void3655}3656 3657define void @s_shuffle_v4p3_v2p3__3_3_3_2() {3658; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_3_3_2:3659; GFX900: ; %bb.0:3660; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3661; GFX900-NEXT: ;;#ASMSTART3662; GFX900-NEXT: ; def s[4:5]3663; GFX900-NEXT: ;;#ASMEND3664; GFX900-NEXT: s_mov_b32 s8, s53665; GFX900-NEXT: s_mov_b32 s9, s53666; GFX900-NEXT: s_mov_b32 s10, s53667; GFX900-NEXT: s_mov_b32 s11, s43668; GFX900-NEXT: ;;#ASMSTART3669; GFX900-NEXT: ; use s[8:11]3670; GFX900-NEXT: ;;#ASMEND3671; GFX900-NEXT: s_setpc_b64 s[30:31]3672;3673; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_3_3_2:3674; GFX90A: ; %bb.0:3675; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3676; GFX90A-NEXT: ;;#ASMSTART3677; GFX90A-NEXT: ; def s[4:5]3678; GFX90A-NEXT: ;;#ASMEND3679; GFX90A-NEXT: s_mov_b32 s8, s53680; GFX90A-NEXT: s_mov_b32 s9, s53681; GFX90A-NEXT: s_mov_b32 s10, s53682; GFX90A-NEXT: s_mov_b32 s11, s43683; GFX90A-NEXT: ;;#ASMSTART3684; GFX90A-NEXT: ; use s[8:11]3685; GFX90A-NEXT: ;;#ASMEND3686; GFX90A-NEXT: s_setpc_b64 s[30:31]3687;3688; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_3_3_2:3689; GFX942: ; %bb.0:3690; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3691; GFX942-NEXT: ;;#ASMSTART3692; GFX942-NEXT: ; def s[0:1]3693; GFX942-NEXT: ;;#ASMEND3694; GFX942-NEXT: s_mov_b32 s8, s13695; GFX942-NEXT: s_mov_b32 s9, s13696; GFX942-NEXT: s_mov_b32 s10, s13697; GFX942-NEXT: s_mov_b32 s11, s03698; GFX942-NEXT: ;;#ASMSTART3699; GFX942-NEXT: ; use s[8:11]3700; GFX942-NEXT: ;;#ASMEND3701; GFX942-NEXT: s_setpc_b64 s[30:31]3702 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3703 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3704 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 2>3705 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3706 ret void3707}3708 3709define void @s_shuffle_v4p3_v2p3__3_3_3_3() {3710; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_3_3_3:3711; GFX9: ; %bb.0:3712; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3713; GFX9-NEXT: ;;#ASMSTART3714; GFX9-NEXT: ; def s[8:9]3715; GFX9-NEXT: ;;#ASMEND3716; GFX9-NEXT: s_mov_b32 s8, s93717; GFX9-NEXT: s_mov_b32 s10, s93718; GFX9-NEXT: s_mov_b32 s11, s93719; GFX9-NEXT: ;;#ASMSTART3720; GFX9-NEXT: ; use s[8:11]3721; GFX9-NEXT: ;;#ASMEND3722; GFX9-NEXT: s_setpc_b64 s[30:31]3723 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3724 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3725 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 3, i32 3>3726 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3727 ret void3728}3729 3730define void @s_shuffle_v4p3_v2p3__u_0_0_0() {3731; GFX9-LABEL: s_shuffle_v4p3_v2p3__u_0_0_0:3732; GFX9: ; %bb.0:3733; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3734; GFX9-NEXT: ;;#ASMSTART3735; GFX9-NEXT: ; def s[8:9]3736; GFX9-NEXT: ;;#ASMEND3737; GFX9-NEXT: s_mov_b32 s9, s83738; GFX9-NEXT: s_mov_b32 s10, s83739; GFX9-NEXT: s_mov_b32 s11, s83740; GFX9-NEXT: ;;#ASMSTART3741; GFX9-NEXT: ; use s[8:11]3742; GFX9-NEXT: ;;#ASMEND3743; GFX9-NEXT: s_setpc_b64 s[30:31]3744 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3745 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0>3746 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3747 ret void3748}3749 3750define void @s_shuffle_v4p3_v2p3__0_0_0_0() {3751; GFX9-LABEL: s_shuffle_v4p3_v2p3__0_0_0_0:3752; GFX9: ; %bb.0:3753; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3754; GFX9-NEXT: ;;#ASMSTART3755; GFX9-NEXT: ; def s[8:9]3756; GFX9-NEXT: ;;#ASMEND3757; GFX9-NEXT: s_mov_b32 s9, s83758; GFX9-NEXT: s_mov_b32 s10, s83759; GFX9-NEXT: s_mov_b32 s11, s83760; GFX9-NEXT: ;;#ASMSTART3761; GFX9-NEXT: ; use s[8:11]3762; GFX9-NEXT: ;;#ASMEND3763; GFX9-NEXT: s_setpc_b64 s[30:31]3764 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3765 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> zeroinitializer3766 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3767 ret void3768}3769 3770define void @s_shuffle_v4p3_v2p3__1_0_0_0() {3771; GFX9-LABEL: s_shuffle_v4p3_v2p3__1_0_0_0:3772; GFX9: ; %bb.0:3773; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3774; GFX9-NEXT: ;;#ASMSTART3775; GFX9-NEXT: ; def s[10:11]3776; GFX9-NEXT: ;;#ASMEND3777; GFX9-NEXT: s_mov_b32 s8, s113778; GFX9-NEXT: s_mov_b32 s9, s103779; GFX9-NEXT: s_mov_b32 s11, s103780; GFX9-NEXT: ;;#ASMSTART3781; GFX9-NEXT: ; use s[8:11]3782; GFX9-NEXT: ;;#ASMEND3783; GFX9-NEXT: s_setpc_b64 s[30:31]3784 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3785 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>3786 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3787 ret void3788}3789 3790define void @s_shuffle_v4p3_v2p3__2_0_0_0() {3791; GFX9-LABEL: s_shuffle_v4p3_v2p3__2_0_0_0:3792; GFX9: ; %bb.0:3793; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3794; GFX9-NEXT: ;;#ASMSTART3795; GFX9-NEXT: ; def s[8:9]3796; GFX9-NEXT: ;;#ASMEND3797; GFX9-NEXT: s_mov_b32 s9, s83798; GFX9-NEXT: s_mov_b32 s10, s83799; GFX9-NEXT: s_mov_b32 s11, s83800; GFX9-NEXT: ;;#ASMSTART3801; GFX9-NEXT: ; use s[8:11]3802; GFX9-NEXT: ;;#ASMEND3803; GFX9-NEXT: s_setpc_b64 s[30:31]3804 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3805 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0>3806 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3807 ret void3808}3809 3810define void @s_shuffle_v4p3_v2p3__3_0_0_0() {3811; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_0_0_0:3812; GFX900: ; %bb.0:3813; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3814; GFX900-NEXT: ;;#ASMSTART3815; GFX900-NEXT: ; def s[10:11]3816; GFX900-NEXT: ;;#ASMEND3817; GFX900-NEXT: ;;#ASMSTART3818; GFX900-NEXT: ; def s[4:5]3819; GFX900-NEXT: ;;#ASMEND3820; GFX900-NEXT: s_mov_b32 s8, s53821; GFX900-NEXT: s_mov_b32 s9, s103822; GFX900-NEXT: s_mov_b32 s11, s103823; GFX900-NEXT: ;;#ASMSTART3824; GFX900-NEXT: ; use s[8:11]3825; GFX900-NEXT: ;;#ASMEND3826; GFX900-NEXT: s_setpc_b64 s[30:31]3827;3828; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_0_0_0:3829; GFX90A: ; %bb.0:3830; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3831; GFX90A-NEXT: ;;#ASMSTART3832; GFX90A-NEXT: ; def s[10:11]3833; GFX90A-NEXT: ;;#ASMEND3834; GFX90A-NEXT: ;;#ASMSTART3835; GFX90A-NEXT: ; def s[4:5]3836; GFX90A-NEXT: ;;#ASMEND3837; GFX90A-NEXT: s_mov_b32 s8, s53838; GFX90A-NEXT: s_mov_b32 s9, s103839; GFX90A-NEXT: s_mov_b32 s11, s103840; GFX90A-NEXT: ;;#ASMSTART3841; GFX90A-NEXT: ; use s[8:11]3842; GFX90A-NEXT: ;;#ASMEND3843; GFX90A-NEXT: s_setpc_b64 s[30:31]3844;3845; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_0_0_0:3846; GFX942: ; %bb.0:3847; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3848; GFX942-NEXT: ;;#ASMSTART3849; GFX942-NEXT: ; def s[10:11]3850; GFX942-NEXT: ;;#ASMEND3851; GFX942-NEXT: ;;#ASMSTART3852; GFX942-NEXT: ; def s[0:1]3853; GFX942-NEXT: ;;#ASMEND3854; GFX942-NEXT: s_mov_b32 s8, s13855; GFX942-NEXT: s_mov_b32 s9, s103856; GFX942-NEXT: s_mov_b32 s11, s103857; GFX942-NEXT: ;;#ASMSTART3858; GFX942-NEXT: ; use s[8:11]3859; GFX942-NEXT: ;;#ASMEND3860; GFX942-NEXT: s_setpc_b64 s[30:31]3861 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3862 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3863 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 0, i32 0, i32 0>3864 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3865 ret void3866}3867 3868define void @s_shuffle_v4p3_v2p3__3_u_0_0() {3869; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_u_0_0:3870; GFX900: ; %bb.0:3871; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3872; GFX900-NEXT: ;;#ASMSTART3873; GFX900-NEXT: ; def s[10:11]3874; GFX900-NEXT: ;;#ASMEND3875; GFX900-NEXT: ;;#ASMSTART3876; GFX900-NEXT: ; def s[4:5]3877; GFX900-NEXT: ;;#ASMEND3878; GFX900-NEXT: s_mov_b32 s8, s53879; GFX900-NEXT: s_mov_b32 s11, s103880; GFX900-NEXT: ;;#ASMSTART3881; GFX900-NEXT: ; use s[8:11]3882; GFX900-NEXT: ;;#ASMEND3883; GFX900-NEXT: s_setpc_b64 s[30:31]3884;3885; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_u_0_0:3886; GFX90A: ; %bb.0:3887; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3888; GFX90A-NEXT: ;;#ASMSTART3889; GFX90A-NEXT: ; def s[10:11]3890; GFX90A-NEXT: ;;#ASMEND3891; GFX90A-NEXT: ;;#ASMSTART3892; GFX90A-NEXT: ; def s[4:5]3893; GFX90A-NEXT: ;;#ASMEND3894; GFX90A-NEXT: s_mov_b32 s8, s53895; GFX90A-NEXT: s_mov_b32 s11, s103896; GFX90A-NEXT: ;;#ASMSTART3897; GFX90A-NEXT: ; use s[8:11]3898; GFX90A-NEXT: ;;#ASMEND3899; GFX90A-NEXT: s_setpc_b64 s[30:31]3900;3901; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_u_0_0:3902; GFX942: ; %bb.0:3903; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3904; GFX942-NEXT: ;;#ASMSTART3905; GFX942-NEXT: ; def s[10:11]3906; GFX942-NEXT: ;;#ASMEND3907; GFX942-NEXT: ;;#ASMSTART3908; GFX942-NEXT: ; def s[0:1]3909; GFX942-NEXT: ;;#ASMEND3910; GFX942-NEXT: s_mov_b32 s8, s13911; GFX942-NEXT: s_mov_b32 s11, s103912; GFX942-NEXT: ;;#ASMSTART3913; GFX942-NEXT: ; use s[8:11]3914; GFX942-NEXT: ;;#ASMEND3915; GFX942-NEXT: s_setpc_b64 s[30:31]3916 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3917 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3918 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 poison, i32 0, i32 0>3919 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3920 ret void3921}3922 3923define void @s_shuffle_v4p3_v2p3__3_1_0_0() {3924; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_1_0_0:3925; GFX900: ; %bb.0:3926; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3927; GFX900-NEXT: ;;#ASMSTART3928; GFX900-NEXT: ; def s[10:11]3929; GFX900-NEXT: ;;#ASMEND3930; GFX900-NEXT: ;;#ASMSTART3931; GFX900-NEXT: ; def s[4:5]3932; GFX900-NEXT: ;;#ASMEND3933; GFX900-NEXT: s_mov_b32 s8, s53934; GFX900-NEXT: s_mov_b32 s9, s113935; GFX900-NEXT: s_mov_b32 s11, s103936; GFX900-NEXT: ;;#ASMSTART3937; GFX900-NEXT: ; use s[8:11]3938; GFX900-NEXT: ;;#ASMEND3939; GFX900-NEXT: s_setpc_b64 s[30:31]3940;3941; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_1_0_0:3942; GFX90A: ; %bb.0:3943; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3944; GFX90A-NEXT: ;;#ASMSTART3945; GFX90A-NEXT: ; def s[10:11]3946; GFX90A-NEXT: ;;#ASMEND3947; GFX90A-NEXT: ;;#ASMSTART3948; GFX90A-NEXT: ; def s[4:5]3949; GFX90A-NEXT: ;;#ASMEND3950; GFX90A-NEXT: s_mov_b32 s8, s53951; GFX90A-NEXT: s_mov_b32 s9, s113952; GFX90A-NEXT: s_mov_b32 s11, s103953; GFX90A-NEXT: ;;#ASMSTART3954; GFX90A-NEXT: ; use s[8:11]3955; GFX90A-NEXT: ;;#ASMEND3956; GFX90A-NEXT: s_setpc_b64 s[30:31]3957;3958; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_1_0_0:3959; GFX942: ; %bb.0:3960; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3961; GFX942-NEXT: ;;#ASMSTART3962; GFX942-NEXT: ; def s[10:11]3963; GFX942-NEXT: ;;#ASMEND3964; GFX942-NEXT: ;;#ASMSTART3965; GFX942-NEXT: ; def s[0:1]3966; GFX942-NEXT: ;;#ASMEND3967; GFX942-NEXT: s_mov_b32 s8, s13968; GFX942-NEXT: s_mov_b32 s9, s113969; GFX942-NEXT: s_mov_b32 s11, s103970; GFX942-NEXT: ;;#ASMSTART3971; GFX942-NEXT: ; use s[8:11]3972; GFX942-NEXT: ;;#ASMEND3973; GFX942-NEXT: s_setpc_b64 s[30:31]3974 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3975 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()3976 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 1, i32 0, i32 0>3977 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)3978 ret void3979}3980 3981define void @s_shuffle_v4p3_v2p3__3_2_0_0() {3982; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_2_0_0:3983; GFX900: ; %bb.0:3984; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3985; GFX900-NEXT: ;;#ASMSTART3986; GFX900-NEXT: ; def s[10:11]3987; GFX900-NEXT: ;;#ASMEND3988; GFX900-NEXT: ;;#ASMSTART3989; GFX900-NEXT: ; def s[4:5]3990; GFX900-NEXT: ;;#ASMEND3991; GFX900-NEXT: s_mov_b32 s8, s53992; GFX900-NEXT: s_mov_b32 s9, s43993; GFX900-NEXT: s_mov_b32 s11, s103994; GFX900-NEXT: ;;#ASMSTART3995; GFX900-NEXT: ; use s[8:11]3996; GFX900-NEXT: ;;#ASMEND3997; GFX900-NEXT: s_setpc_b64 s[30:31]3998;3999; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_2_0_0:4000; GFX90A: ; %bb.0:4001; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4002; GFX90A-NEXT: ;;#ASMSTART4003; GFX90A-NEXT: ; def s[10:11]4004; GFX90A-NEXT: ;;#ASMEND4005; GFX90A-NEXT: ;;#ASMSTART4006; GFX90A-NEXT: ; def s[4:5]4007; GFX90A-NEXT: ;;#ASMEND4008; GFX90A-NEXT: s_mov_b32 s8, s54009; GFX90A-NEXT: s_mov_b32 s9, s44010; GFX90A-NEXT: s_mov_b32 s11, s104011; GFX90A-NEXT: ;;#ASMSTART4012; GFX90A-NEXT: ; use s[8:11]4013; GFX90A-NEXT: ;;#ASMEND4014; GFX90A-NEXT: s_setpc_b64 s[30:31]4015;4016; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_2_0_0:4017; GFX942: ; %bb.0:4018; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4019; GFX942-NEXT: ;;#ASMSTART4020; GFX942-NEXT: ; def s[10:11]4021; GFX942-NEXT: ;;#ASMEND4022; GFX942-NEXT: ;;#ASMSTART4023; GFX942-NEXT: ; def s[0:1]4024; GFX942-NEXT: ;;#ASMEND4025; GFX942-NEXT: s_mov_b32 s8, s14026; GFX942-NEXT: s_mov_b32 s9, s04027; GFX942-NEXT: s_mov_b32 s11, s104028; GFX942-NEXT: ;;#ASMSTART4029; GFX942-NEXT: ; use s[8:11]4030; GFX942-NEXT: ;;#ASMEND4031; GFX942-NEXT: s_setpc_b64 s[30:31]4032 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4033 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4034 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 2, i32 0, i32 0>4035 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4036 ret void4037}4038 4039define void @s_shuffle_v4p3_v2p3__3_3_0_0() {4040; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_3_0_0:4041; GFX9: ; %bb.0:4042; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4043; GFX9-NEXT: ;;#ASMSTART4044; GFX9-NEXT: ; def s[10:11]4045; GFX9-NEXT: ;;#ASMEND4046; GFX9-NEXT: ;;#ASMSTART4047; GFX9-NEXT: ; def s[8:9]4048; GFX9-NEXT: ;;#ASMEND4049; GFX9-NEXT: s_mov_b32 s8, s94050; GFX9-NEXT: s_mov_b32 s11, s104051; GFX9-NEXT: ;;#ASMSTART4052; GFX9-NEXT: ; use s[8:11]4053; GFX9-NEXT: ;;#ASMEND4054; GFX9-NEXT: s_setpc_b64 s[30:31]4055 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4056 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4057 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 0>4058 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4059 ret void4060}4061 4062define void @s_shuffle_v4p3_v2p3__3_3_u_0() {4063; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_3_u_0:4064; GFX900: ; %bb.0:4065; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4066; GFX900-NEXT: ;;#ASMSTART4067; GFX900-NEXT: ; def s[8:9]4068; GFX900-NEXT: ;;#ASMEND4069; GFX900-NEXT: ;;#ASMSTART4070; GFX900-NEXT: ; def s[4:5]4071; GFX900-NEXT: ;;#ASMEND4072; GFX900-NEXT: s_mov_b32 s8, s94073; GFX900-NEXT: s_mov_b32 s11, s44074; GFX900-NEXT: ;;#ASMSTART4075; GFX900-NEXT: ; use s[8:11]4076; GFX900-NEXT: ;;#ASMEND4077; GFX900-NEXT: s_setpc_b64 s[30:31]4078;4079; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_3_u_0:4080; GFX90A: ; %bb.0:4081; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4082; GFX90A-NEXT: ;;#ASMSTART4083; GFX90A-NEXT: ; def s[8:9]4084; GFX90A-NEXT: ;;#ASMEND4085; GFX90A-NEXT: ;;#ASMSTART4086; GFX90A-NEXT: ; def s[4:5]4087; GFX90A-NEXT: ;;#ASMEND4088; GFX90A-NEXT: s_mov_b32 s8, s94089; GFX90A-NEXT: s_mov_b32 s11, s44090; GFX90A-NEXT: ;;#ASMSTART4091; GFX90A-NEXT: ; use s[8:11]4092; GFX90A-NEXT: ;;#ASMEND4093; GFX90A-NEXT: s_setpc_b64 s[30:31]4094;4095; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_3_u_0:4096; GFX942: ; %bb.0:4097; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4098; GFX942-NEXT: ;;#ASMSTART4099; GFX942-NEXT: ; def s[8:9]4100; GFX942-NEXT: ;;#ASMEND4101; GFX942-NEXT: ;;#ASMSTART4102; GFX942-NEXT: ; def s[0:1]4103; GFX942-NEXT: ;;#ASMEND4104; GFX942-NEXT: s_mov_b32 s8, s94105; GFX942-NEXT: s_mov_b32 s11, s04106; GFX942-NEXT: ;;#ASMSTART4107; GFX942-NEXT: ; use s[8:11]4108; GFX942-NEXT: ;;#ASMEND4109; GFX942-NEXT: s_setpc_b64 s[30:31]4110 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4111 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4112 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 0>4113 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4114 ret void4115}4116 4117define void @s_shuffle_v4p3_v2p3__3_3_1_0() {4118; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_3_1_0:4119; GFX900: ; %bb.0:4120; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4121; GFX900-NEXT: ;;#ASMSTART4122; GFX900-NEXT: ; def s[8:9]4123; GFX900-NEXT: ;;#ASMEND4124; GFX900-NEXT: ;;#ASMSTART4125; GFX900-NEXT: ; def s[4:5]4126; GFX900-NEXT: ;;#ASMEND4127; GFX900-NEXT: s_mov_b32 s8, s94128; GFX900-NEXT: s_mov_b32 s10, s54129; GFX900-NEXT: s_mov_b32 s11, s44130; GFX900-NEXT: ;;#ASMSTART4131; GFX900-NEXT: ; use s[8:11]4132; GFX900-NEXT: ;;#ASMEND4133; GFX900-NEXT: s_setpc_b64 s[30:31]4134;4135; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_3_1_0:4136; GFX90A: ; %bb.0:4137; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4138; GFX90A-NEXT: ;;#ASMSTART4139; GFX90A-NEXT: ; def s[8:9]4140; GFX90A-NEXT: ;;#ASMEND4141; GFX90A-NEXT: ;;#ASMSTART4142; GFX90A-NEXT: ; def s[4:5]4143; GFX90A-NEXT: ;;#ASMEND4144; GFX90A-NEXT: s_mov_b32 s8, s94145; GFX90A-NEXT: s_mov_b32 s10, s54146; GFX90A-NEXT: s_mov_b32 s11, s44147; GFX90A-NEXT: ;;#ASMSTART4148; GFX90A-NEXT: ; use s[8:11]4149; GFX90A-NEXT: ;;#ASMEND4150; GFX90A-NEXT: s_setpc_b64 s[30:31]4151;4152; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_3_1_0:4153; GFX942: ; %bb.0:4154; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4155; GFX942-NEXT: ;;#ASMSTART4156; GFX942-NEXT: ; def s[8:9]4157; GFX942-NEXT: ;;#ASMEND4158; GFX942-NEXT: ;;#ASMSTART4159; GFX942-NEXT: ; def s[0:1]4160; GFX942-NEXT: ;;#ASMEND4161; GFX942-NEXT: s_mov_b32 s8, s94162; GFX942-NEXT: s_mov_b32 s10, s14163; GFX942-NEXT: s_mov_b32 s11, s04164; GFX942-NEXT: ;;#ASMSTART4165; GFX942-NEXT: ; use s[8:11]4166; GFX942-NEXT: ;;#ASMEND4167; GFX942-NEXT: s_setpc_b64 s[30:31]4168 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4169 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4170 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 0>4171 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4172 ret void4173}4174 4175define void @s_shuffle_v4p3_v2p3__3_3_2_0() {4176; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_3_2_0:4177; GFX900: ; %bb.0:4178; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4179; GFX900-NEXT: ;;#ASMSTART4180; GFX900-NEXT: ; def s[10:11]4181; GFX900-NEXT: ;;#ASMEND4182; GFX900-NEXT: ;;#ASMSTART4183; GFX900-NEXT: ; def s[4:5]4184; GFX900-NEXT: ;;#ASMEND4185; GFX900-NEXT: s_mov_b32 s8, s114186; GFX900-NEXT: s_mov_b32 s9, s114187; GFX900-NEXT: s_mov_b32 s11, s44188; GFX900-NEXT: ;;#ASMSTART4189; GFX900-NEXT: ; use s[8:11]4190; GFX900-NEXT: ;;#ASMEND4191; GFX900-NEXT: s_setpc_b64 s[30:31]4192;4193; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_3_2_0:4194; GFX90A: ; %bb.0:4195; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4196; GFX90A-NEXT: ;;#ASMSTART4197; GFX90A-NEXT: ; def s[10:11]4198; GFX90A-NEXT: ;;#ASMEND4199; GFX90A-NEXT: ;;#ASMSTART4200; GFX90A-NEXT: ; def s[4:5]4201; GFX90A-NEXT: ;;#ASMEND4202; GFX90A-NEXT: s_mov_b32 s8, s114203; GFX90A-NEXT: s_mov_b32 s9, s114204; GFX90A-NEXT: s_mov_b32 s11, s44205; GFX90A-NEXT: ;;#ASMSTART4206; GFX90A-NEXT: ; use s[8:11]4207; GFX90A-NEXT: ;;#ASMEND4208; GFX90A-NEXT: s_setpc_b64 s[30:31]4209;4210; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_3_2_0:4211; GFX942: ; %bb.0:4212; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4213; GFX942-NEXT: ;;#ASMSTART4214; GFX942-NEXT: ; def s[10:11]4215; GFX942-NEXT: ;;#ASMEND4216; GFX942-NEXT: ;;#ASMSTART4217; GFX942-NEXT: ; def s[0:1]4218; GFX942-NEXT: ;;#ASMEND4219; GFX942-NEXT: s_mov_b32 s8, s114220; GFX942-NEXT: s_mov_b32 s9, s114221; GFX942-NEXT: s_mov_b32 s11, s04222; GFX942-NEXT: ;;#ASMSTART4223; GFX942-NEXT: ; use s[8:11]4224; GFX942-NEXT: ;;#ASMEND4225; GFX942-NEXT: s_setpc_b64 s[30:31]4226 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4227 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4228 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 0>4229 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4230 ret void4231}4232 4233define void @s_shuffle_v4p3_v2p3__u_1_1_1() {4234; GFX9-LABEL: s_shuffle_v4p3_v2p3__u_1_1_1:4235; GFX9: ; %bb.0:4236; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4237; GFX9-NEXT: ;;#ASMSTART4238; GFX9-NEXT: ; def s[8:9]4239; GFX9-NEXT: ;;#ASMEND4240; GFX9-NEXT: s_mov_b32 s10, s94241; GFX9-NEXT: s_mov_b32 s11, s94242; GFX9-NEXT: ;;#ASMSTART4243; GFX9-NEXT: ; use s[8:11]4244; GFX9-NEXT: ;;#ASMEND4245; GFX9-NEXT: s_setpc_b64 s[30:31]4246 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4247 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1>4248 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4249 ret void4250}4251 4252define void @s_shuffle_v4p3_v2p3__0_1_1_1() {4253; GFX9-LABEL: s_shuffle_v4p3_v2p3__0_1_1_1:4254; GFX9: ; %bb.0:4255; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4256; GFX9-NEXT: ;;#ASMSTART4257; GFX9-NEXT: ; def s[8:9]4258; GFX9-NEXT: ;;#ASMEND4259; GFX9-NEXT: s_mov_b32 s10, s94260; GFX9-NEXT: s_mov_b32 s11, s94261; GFX9-NEXT: ;;#ASMSTART4262; GFX9-NEXT: ; use s[8:11]4263; GFX9-NEXT: ;;#ASMEND4264; GFX9-NEXT: s_setpc_b64 s[30:31]4265 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4266 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1>4267 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4268 ret void4269}4270 4271define void @s_shuffle_v4p3_v2p3__1_1_1_1() {4272; GFX9-LABEL: s_shuffle_v4p3_v2p3__1_1_1_1:4273; GFX9: ; %bb.0:4274; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4275; GFX9-NEXT: ;;#ASMSTART4276; GFX9-NEXT: ; def s[8:9]4277; GFX9-NEXT: ;;#ASMEND4278; GFX9-NEXT: s_mov_b32 s8, s94279; GFX9-NEXT: s_mov_b32 s10, s94280; GFX9-NEXT: s_mov_b32 s11, s94281; GFX9-NEXT: ;;#ASMSTART4282; GFX9-NEXT: ; use s[8:11]4283; GFX9-NEXT: ;;#ASMEND4284; GFX9-NEXT: s_setpc_b64 s[30:31]4285 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4286 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>4287 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4288 ret void4289}4290 4291define void @s_shuffle_v4p3_v2p3__2_1_1_1() {4292; GFX9-LABEL: s_shuffle_v4p3_v2p3__2_1_1_1:4293; GFX9: ; %bb.0:4294; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4295; GFX9-NEXT: ;;#ASMSTART4296; GFX9-NEXT: ; def s[8:9]4297; GFX9-NEXT: ;;#ASMEND4298; GFX9-NEXT: s_mov_b32 s10, s94299; GFX9-NEXT: s_mov_b32 s11, s94300; GFX9-NEXT: ;;#ASMSTART4301; GFX9-NEXT: ; use s[8:11]4302; GFX9-NEXT: ;;#ASMEND4303; GFX9-NEXT: s_setpc_b64 s[30:31]4304 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4305 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1>4306 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4307 ret void4308}4309 4310define void @s_shuffle_v4p3_v2p3__3_1_1_1() {4311; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_1_1_1:4312; GFX900: ; %bb.0:4313; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4314; GFX900-NEXT: ;;#ASMSTART4315; GFX900-NEXT: ; def s[8:9]4316; GFX900-NEXT: ;;#ASMEND4317; GFX900-NEXT: ;;#ASMSTART4318; GFX900-NEXT: ; def s[4:5]4319; GFX900-NEXT: ;;#ASMEND4320; GFX900-NEXT: s_mov_b32 s8, s54321; GFX900-NEXT: s_mov_b32 s10, s94322; GFX900-NEXT: s_mov_b32 s11, s94323; GFX900-NEXT: ;;#ASMSTART4324; GFX900-NEXT: ; use s[8:11]4325; GFX900-NEXT: ;;#ASMEND4326; GFX900-NEXT: s_setpc_b64 s[30:31]4327;4328; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_1_1_1:4329; GFX90A: ; %bb.0:4330; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4331; GFX90A-NEXT: ;;#ASMSTART4332; GFX90A-NEXT: ; def s[8:9]4333; GFX90A-NEXT: ;;#ASMEND4334; GFX90A-NEXT: ;;#ASMSTART4335; GFX90A-NEXT: ; def s[4:5]4336; GFX90A-NEXT: ;;#ASMEND4337; GFX90A-NEXT: s_mov_b32 s8, s54338; GFX90A-NEXT: s_mov_b32 s10, s94339; GFX90A-NEXT: s_mov_b32 s11, s94340; GFX90A-NEXT: ;;#ASMSTART4341; GFX90A-NEXT: ; use s[8:11]4342; GFX90A-NEXT: ;;#ASMEND4343; GFX90A-NEXT: s_setpc_b64 s[30:31]4344;4345; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_1_1_1:4346; GFX942: ; %bb.0:4347; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4348; GFX942-NEXT: ;;#ASMSTART4349; GFX942-NEXT: ; def s[8:9]4350; GFX942-NEXT: ;;#ASMEND4351; GFX942-NEXT: ;;#ASMSTART4352; GFX942-NEXT: ; def s[0:1]4353; GFX942-NEXT: ;;#ASMEND4354; GFX942-NEXT: s_mov_b32 s8, s14355; GFX942-NEXT: s_mov_b32 s10, s94356; GFX942-NEXT: s_mov_b32 s11, s94357; GFX942-NEXT: ;;#ASMSTART4358; GFX942-NEXT: ; use s[8:11]4359; GFX942-NEXT: ;;#ASMEND4360; GFX942-NEXT: s_setpc_b64 s[30:31]4361 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4362 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4363 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 1, i32 1, i32 1>4364 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4365 ret void4366}4367 4368define void @s_shuffle_v4p3_v2p3__3_u_1_1() {4369; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_u_1_1:4370; GFX900: ; %bb.0:4371; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4372; GFX900-NEXT: ;;#ASMSTART4373; GFX900-NEXT: ; def s[10:11]4374; GFX900-NEXT: ;;#ASMEND4375; GFX900-NEXT: ;;#ASMSTART4376; GFX900-NEXT: ; def s[4:5]4377; GFX900-NEXT: ;;#ASMEND4378; GFX900-NEXT: s_mov_b32 s8, s54379; GFX900-NEXT: s_mov_b32 s10, s114380; GFX900-NEXT: ;;#ASMSTART4381; GFX900-NEXT: ; use s[8:11]4382; GFX900-NEXT: ;;#ASMEND4383; GFX900-NEXT: s_setpc_b64 s[30:31]4384;4385; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_u_1_1:4386; GFX90A: ; %bb.0:4387; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4388; GFX90A-NEXT: ;;#ASMSTART4389; GFX90A-NEXT: ; def s[10:11]4390; GFX90A-NEXT: ;;#ASMEND4391; GFX90A-NEXT: ;;#ASMSTART4392; GFX90A-NEXT: ; def s[4:5]4393; GFX90A-NEXT: ;;#ASMEND4394; GFX90A-NEXT: s_mov_b32 s8, s54395; GFX90A-NEXT: s_mov_b32 s10, s114396; GFX90A-NEXT: ;;#ASMSTART4397; GFX90A-NEXT: ; use s[8:11]4398; GFX90A-NEXT: ;;#ASMEND4399; GFX90A-NEXT: s_setpc_b64 s[30:31]4400;4401; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_u_1_1:4402; GFX942: ; %bb.0:4403; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4404; GFX942-NEXT: ;;#ASMSTART4405; GFX942-NEXT: ; def s[10:11]4406; GFX942-NEXT: ;;#ASMEND4407; GFX942-NEXT: ;;#ASMSTART4408; GFX942-NEXT: ; def s[0:1]4409; GFX942-NEXT: ;;#ASMEND4410; GFX942-NEXT: s_mov_b32 s8, s14411; GFX942-NEXT: s_mov_b32 s10, s114412; GFX942-NEXT: ;;#ASMSTART4413; GFX942-NEXT: ; use s[8:11]4414; GFX942-NEXT: ;;#ASMEND4415; GFX942-NEXT: s_setpc_b64 s[30:31]4416 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4417 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4418 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 poison, i32 1, i32 1>4419 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4420 ret void4421}4422 4423define void @s_shuffle_v4p3_v2p3__3_0_1_1() {4424; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_0_1_1:4425; GFX900: ; %bb.0:4426; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4427; GFX900-NEXT: ;;#ASMSTART4428; GFX900-NEXT: ; def s[10:11]4429; GFX900-NEXT: ;;#ASMEND4430; GFX900-NEXT: ;;#ASMSTART4431; GFX900-NEXT: ; def s[4:5]4432; GFX900-NEXT: ;;#ASMEND4433; GFX900-NEXT: s_mov_b32 s8, s54434; GFX900-NEXT: s_mov_b32 s9, s104435; GFX900-NEXT: s_mov_b32 s10, s114436; GFX900-NEXT: ;;#ASMSTART4437; GFX900-NEXT: ; use s[8:11]4438; GFX900-NEXT: ;;#ASMEND4439; GFX900-NEXT: s_setpc_b64 s[30:31]4440;4441; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_0_1_1:4442; GFX90A: ; %bb.0:4443; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4444; GFX90A-NEXT: ;;#ASMSTART4445; GFX90A-NEXT: ; def s[10:11]4446; GFX90A-NEXT: ;;#ASMEND4447; GFX90A-NEXT: ;;#ASMSTART4448; GFX90A-NEXT: ; def s[4:5]4449; GFX90A-NEXT: ;;#ASMEND4450; GFX90A-NEXT: s_mov_b32 s8, s54451; GFX90A-NEXT: s_mov_b32 s9, s104452; GFX90A-NEXT: s_mov_b32 s10, s114453; GFX90A-NEXT: ;;#ASMSTART4454; GFX90A-NEXT: ; use s[8:11]4455; GFX90A-NEXT: ;;#ASMEND4456; GFX90A-NEXT: s_setpc_b64 s[30:31]4457;4458; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_0_1_1:4459; GFX942: ; %bb.0:4460; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4461; GFX942-NEXT: ;;#ASMSTART4462; GFX942-NEXT: ; def s[10:11]4463; GFX942-NEXT: ;;#ASMEND4464; GFX942-NEXT: ;;#ASMSTART4465; GFX942-NEXT: ; def s[0:1]4466; GFX942-NEXT: ;;#ASMEND4467; GFX942-NEXT: s_mov_b32 s8, s14468; GFX942-NEXT: s_mov_b32 s9, s104469; GFX942-NEXT: s_mov_b32 s10, s114470; GFX942-NEXT: ;;#ASMSTART4471; GFX942-NEXT: ; use s[8:11]4472; GFX942-NEXT: ;;#ASMEND4473; GFX942-NEXT: s_setpc_b64 s[30:31]4474 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4475 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4476 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 0, i32 1, i32 1>4477 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4478 ret void4479}4480 4481define void @s_shuffle_v4p3_v2p3__3_2_1_1() {4482; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_2_1_1:4483; GFX900: ; %bb.0:4484; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4485; GFX900-NEXT: ;;#ASMSTART4486; GFX900-NEXT: ; def s[10:11]4487; GFX900-NEXT: ;;#ASMEND4488; GFX900-NEXT: ;;#ASMSTART4489; GFX900-NEXT: ; def s[4:5]4490; GFX900-NEXT: ;;#ASMEND4491; GFX900-NEXT: s_mov_b32 s8, s54492; GFX900-NEXT: s_mov_b32 s9, s44493; GFX900-NEXT: s_mov_b32 s10, s114494; GFX900-NEXT: ;;#ASMSTART4495; GFX900-NEXT: ; use s[8:11]4496; GFX900-NEXT: ;;#ASMEND4497; GFX900-NEXT: s_setpc_b64 s[30:31]4498;4499; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_2_1_1:4500; GFX90A: ; %bb.0:4501; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4502; GFX90A-NEXT: ;;#ASMSTART4503; GFX90A-NEXT: ; def s[10:11]4504; GFX90A-NEXT: ;;#ASMEND4505; GFX90A-NEXT: ;;#ASMSTART4506; GFX90A-NEXT: ; def s[4:5]4507; GFX90A-NEXT: ;;#ASMEND4508; GFX90A-NEXT: s_mov_b32 s8, s54509; GFX90A-NEXT: s_mov_b32 s9, s44510; GFX90A-NEXT: s_mov_b32 s10, s114511; GFX90A-NEXT: ;;#ASMSTART4512; GFX90A-NEXT: ; use s[8:11]4513; GFX90A-NEXT: ;;#ASMEND4514; GFX90A-NEXT: s_setpc_b64 s[30:31]4515;4516; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_2_1_1:4517; GFX942: ; %bb.0:4518; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4519; GFX942-NEXT: ;;#ASMSTART4520; GFX942-NEXT: ; def s[10:11]4521; GFX942-NEXT: ;;#ASMEND4522; GFX942-NEXT: ;;#ASMSTART4523; GFX942-NEXT: ; def s[0:1]4524; GFX942-NEXT: ;;#ASMEND4525; GFX942-NEXT: s_mov_b32 s8, s14526; GFX942-NEXT: s_mov_b32 s9, s04527; GFX942-NEXT: s_mov_b32 s10, s114528; GFX942-NEXT: ;;#ASMSTART4529; GFX942-NEXT: ; use s[8:11]4530; GFX942-NEXT: ;;#ASMEND4531; GFX942-NEXT: s_setpc_b64 s[30:31]4532 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4533 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4534 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 2, i32 1, i32 1>4535 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4536 ret void4537}4538 4539define void @s_shuffle_v4p3_v2p3__3_3_1_1() {4540; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_3_1_1:4541; GFX9: ; %bb.0:4542; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4543; GFX9-NEXT: ;;#ASMSTART4544; GFX9-NEXT: ; def s[10:11]4545; GFX9-NEXT: ;;#ASMEND4546; GFX9-NEXT: ;;#ASMSTART4547; GFX9-NEXT: ; def s[8:9]4548; GFX9-NEXT: ;;#ASMEND4549; GFX9-NEXT: s_mov_b32 s8, s94550; GFX9-NEXT: s_mov_b32 s10, s114551; GFX9-NEXT: ;;#ASMSTART4552; GFX9-NEXT: ; use s[8:11]4553; GFX9-NEXT: ;;#ASMEND4554; GFX9-NEXT: s_setpc_b64 s[30:31]4555 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4556 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4557 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 1>4558 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4559 ret void4560}4561 4562define void @s_shuffle_v4p3_v2p3__3_3_u_1() {4563; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_3_u_1:4564; GFX9: ; %bb.0:4565; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4566; GFX9-NEXT: ;;#ASMSTART4567; GFX9-NEXT: ; def s[8:9]4568; GFX9-NEXT: ;;#ASMEND4569; GFX9-NEXT: ;;#ASMSTART4570; GFX9-NEXT: ; def s[10:11]4571; GFX9-NEXT: ;;#ASMEND4572; GFX9-NEXT: s_mov_b32 s8, s94573; GFX9-NEXT: ;;#ASMSTART4574; GFX9-NEXT: ; use s[8:11]4575; GFX9-NEXT: ;;#ASMEND4576; GFX9-NEXT: s_setpc_b64 s[30:31]4577 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4578 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4579 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 1>4580 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4581 ret void4582}4583 4584define void @s_shuffle_v4p3_v2p3__3_3_0_1() {4585; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_3_0_1:4586; GFX9: ; %bb.0:4587; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4588; GFX9-NEXT: ;;#ASMSTART4589; GFX9-NEXT: ; def s[8:9]4590; GFX9-NEXT: ;;#ASMEND4591; GFX9-NEXT: ;;#ASMSTART4592; GFX9-NEXT: ; def s[10:11]4593; GFX9-NEXT: ;;#ASMEND4594; GFX9-NEXT: s_mov_b32 s8, s94595; GFX9-NEXT: ;;#ASMSTART4596; GFX9-NEXT: ; use s[8:11]4597; GFX9-NEXT: ;;#ASMEND4598; GFX9-NEXT: s_setpc_b64 s[30:31]4599 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4600 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4601 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 1>4602 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4603 ret void4604}4605 4606define void @s_shuffle_v4p3_v2p3__3_3_2_1() {4607; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_3_2_1:4608; GFX900: ; %bb.0:4609; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4610; GFX900-NEXT: ;;#ASMSTART4611; GFX900-NEXT: ; def s[10:11]4612; GFX900-NEXT: ;;#ASMEND4613; GFX900-NEXT: ;;#ASMSTART4614; GFX900-NEXT: ; def s[4:5]4615; GFX900-NEXT: ;;#ASMEND4616; GFX900-NEXT: s_mov_b32 s8, s114617; GFX900-NEXT: s_mov_b32 s9, s114618; GFX900-NEXT: s_mov_b32 s11, s54619; GFX900-NEXT: ;;#ASMSTART4620; GFX900-NEXT: ; use s[8:11]4621; GFX900-NEXT: ;;#ASMEND4622; GFX900-NEXT: s_setpc_b64 s[30:31]4623;4624; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_3_2_1:4625; GFX90A: ; %bb.0:4626; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4627; GFX90A-NEXT: ;;#ASMSTART4628; GFX90A-NEXT: ; def s[10:11]4629; GFX90A-NEXT: ;;#ASMEND4630; GFX90A-NEXT: ;;#ASMSTART4631; GFX90A-NEXT: ; def s[4:5]4632; GFX90A-NEXT: ;;#ASMEND4633; GFX90A-NEXT: s_mov_b32 s8, s114634; GFX90A-NEXT: s_mov_b32 s9, s114635; GFX90A-NEXT: s_mov_b32 s11, s54636; GFX90A-NEXT: ;;#ASMSTART4637; GFX90A-NEXT: ; use s[8:11]4638; GFX90A-NEXT: ;;#ASMEND4639; GFX90A-NEXT: s_setpc_b64 s[30:31]4640;4641; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_3_2_1:4642; GFX942: ; %bb.0:4643; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4644; GFX942-NEXT: ;;#ASMSTART4645; GFX942-NEXT: ; def s[10:11]4646; GFX942-NEXT: ;;#ASMEND4647; GFX942-NEXT: ;;#ASMSTART4648; GFX942-NEXT: ; def s[0:1]4649; GFX942-NEXT: ;;#ASMEND4650; GFX942-NEXT: s_mov_b32 s8, s114651; GFX942-NEXT: s_mov_b32 s9, s114652; GFX942-NEXT: s_mov_b32 s11, s14653; GFX942-NEXT: ;;#ASMSTART4654; GFX942-NEXT: ; use s[8:11]4655; GFX942-NEXT: ;;#ASMEND4656; GFX942-NEXT: s_setpc_b64 s[30:31]4657 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4658 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4659 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 1>4660 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4661 ret void4662}4663 4664define void @s_shuffle_v4p3_v2p3__u_2_2_2() {4665; GFX9-LABEL: s_shuffle_v4p3_v2p3__u_2_2_2:4666; GFX9: ; %bb.0:4667; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4668; GFX9-NEXT: ;;#ASMSTART4669; GFX9-NEXT: ; use s[8:11]4670; GFX9-NEXT: ;;#ASMEND4671; GFX9-NEXT: s_setpc_b64 s[30:31]4672 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4673 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2>4674 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4675 ret void4676}4677 4678define void @s_shuffle_v4p3_v2p3__0_2_2_2() {4679; GFX900-LABEL: s_shuffle_v4p3_v2p3__0_2_2_2:4680; GFX900: ; %bb.0:4681; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4682; GFX900-NEXT: ;;#ASMSTART4683; GFX900-NEXT: ; def s[8:9]4684; GFX900-NEXT: ;;#ASMEND4685; GFX900-NEXT: ;;#ASMSTART4686; GFX900-NEXT: ; use s[8:11]4687; GFX900-NEXT: ;;#ASMEND4688; GFX900-NEXT: s_setpc_b64 s[30:31]4689;4690; GFX90A-LABEL: s_shuffle_v4p3_v2p3__0_2_2_2:4691; GFX90A: ; %bb.0:4692; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4693; GFX90A-NEXT: ;;#ASMSTART4694; GFX90A-NEXT: ; def s[8:9]4695; GFX90A-NEXT: ;;#ASMEND4696; GFX90A-NEXT: ;;#ASMSTART4697; GFX90A-NEXT: ; use s[8:11]4698; GFX90A-NEXT: ;;#ASMEND4699; GFX90A-NEXT: s_setpc_b64 s[30:31]4700;4701; GFX942-LABEL: s_shuffle_v4p3_v2p3__0_2_2_2:4702; GFX942: ; %bb.0:4703; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4704; GFX942-NEXT: ;;#ASMSTART4705; GFX942-NEXT: ; def s[8:9]4706; GFX942-NEXT: ;;#ASMEND4707; GFX942-NEXT: s_nop 04708; GFX942-NEXT: ;;#ASMSTART4709; GFX942-NEXT: ; use s[8:11]4710; GFX942-NEXT: ;;#ASMEND4711; GFX942-NEXT: s_setpc_b64 s[30:31]4712 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4713 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2>4714 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4715 ret void4716}4717 4718define void @s_shuffle_v4p3_v2p3__1_2_2_2() {4719; GFX900-LABEL: s_shuffle_v4p3_v2p3__1_2_2_2:4720; GFX900: ; %bb.0:4721; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4722; GFX900-NEXT: ;;#ASMSTART4723; GFX900-NEXT: ; def s[4:5]4724; GFX900-NEXT: ;;#ASMEND4725; GFX900-NEXT: s_mov_b32 s8, s54726; GFX900-NEXT: ;;#ASMSTART4727; GFX900-NEXT: ; use s[8:11]4728; GFX900-NEXT: ;;#ASMEND4729; GFX900-NEXT: s_setpc_b64 s[30:31]4730;4731; GFX90A-LABEL: s_shuffle_v4p3_v2p3__1_2_2_2:4732; GFX90A: ; %bb.0:4733; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4734; GFX90A-NEXT: ;;#ASMSTART4735; GFX90A-NEXT: ; def s[4:5]4736; GFX90A-NEXT: ;;#ASMEND4737; GFX90A-NEXT: s_mov_b32 s8, s54738; GFX90A-NEXT: ;;#ASMSTART4739; GFX90A-NEXT: ; use s[8:11]4740; GFX90A-NEXT: ;;#ASMEND4741; GFX90A-NEXT: s_setpc_b64 s[30:31]4742;4743; GFX942-LABEL: s_shuffle_v4p3_v2p3__1_2_2_2:4744; GFX942: ; %bb.0:4745; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4746; GFX942-NEXT: ;;#ASMSTART4747; GFX942-NEXT: ; def s[0:1]4748; GFX942-NEXT: ;;#ASMEND4749; GFX942-NEXT: s_mov_b32 s8, s14750; GFX942-NEXT: ;;#ASMSTART4751; GFX942-NEXT: ; use s[8:11]4752; GFX942-NEXT: ;;#ASMEND4753; GFX942-NEXT: s_setpc_b64 s[30:31]4754 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4755 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2>4756 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4757 ret void4758}4759 4760define void @s_shuffle_v4p3_v2p3__2_2_2_2() {4761; GFX9-LABEL: s_shuffle_v4p3_v2p3__2_2_2_2:4762; GFX9: ; %bb.0:4763; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4764; GFX9-NEXT: ;;#ASMSTART4765; GFX9-NEXT: ; use s[8:11]4766; GFX9-NEXT: ;;#ASMEND4767; GFX9-NEXT: s_setpc_b64 s[30:31]4768 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4769 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2>4770 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4771 ret void4772}4773 4774define void @s_shuffle_v4p3_v2p3__3_2_2_2() {4775; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_2_2_2:4776; GFX9: ; %bb.0:4777; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4778; GFX9-NEXT: ;;#ASMSTART4779; GFX9-NEXT: ; def s[10:11]4780; GFX9-NEXT: ;;#ASMEND4781; GFX9-NEXT: s_mov_b32 s8, s114782; GFX9-NEXT: s_mov_b32 s9, s104783; GFX9-NEXT: s_mov_b32 s11, s104784; GFX9-NEXT: ;;#ASMSTART4785; GFX9-NEXT: ; use s[8:11]4786; GFX9-NEXT: ;;#ASMEND4787; GFX9-NEXT: s_setpc_b64 s[30:31]4788 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4789 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4790 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 2, i32 2, i32 2>4791 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4792 ret void4793}4794 4795define void @s_shuffle_v4p3_v2p3__3_u_2_2() {4796; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_u_2_2:4797; GFX9: ; %bb.0:4798; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4799; GFX9-NEXT: ;;#ASMSTART4800; GFX9-NEXT: ; def s[10:11]4801; GFX9-NEXT: ;;#ASMEND4802; GFX9-NEXT: s_mov_b32 s8, s114803; GFX9-NEXT: s_mov_b32 s11, s104804; GFX9-NEXT: ;;#ASMSTART4805; GFX9-NEXT: ; use s[8:11]4806; GFX9-NEXT: ;;#ASMEND4807; GFX9-NEXT: s_setpc_b64 s[30:31]4808 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4809 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4810 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 poison, i32 2, i32 2>4811 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4812 ret void4813}4814 4815define void @s_shuffle_v4p3_v2p3__3_0_2_2() {4816; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_0_2_2:4817; GFX900: ; %bb.0:4818; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4819; GFX900-NEXT: ;;#ASMSTART4820; GFX900-NEXT: ; def s[10:11]4821; GFX900-NEXT: ;;#ASMEND4822; GFX900-NEXT: ;;#ASMSTART4823; GFX900-NEXT: ; def s[4:5]4824; GFX900-NEXT: ;;#ASMEND4825; GFX900-NEXT: s_mov_b32 s8, s114826; GFX900-NEXT: s_mov_b32 s9, s44827; GFX900-NEXT: s_mov_b32 s11, s104828; GFX900-NEXT: ;;#ASMSTART4829; GFX900-NEXT: ; use s[8:11]4830; GFX900-NEXT: ;;#ASMEND4831; GFX900-NEXT: s_setpc_b64 s[30:31]4832;4833; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_0_2_2:4834; GFX90A: ; %bb.0:4835; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4836; GFX90A-NEXT: ;;#ASMSTART4837; GFX90A-NEXT: ; def s[10:11]4838; GFX90A-NEXT: ;;#ASMEND4839; GFX90A-NEXT: ;;#ASMSTART4840; GFX90A-NEXT: ; def s[4:5]4841; GFX90A-NEXT: ;;#ASMEND4842; GFX90A-NEXT: s_mov_b32 s8, s114843; GFX90A-NEXT: s_mov_b32 s9, s44844; GFX90A-NEXT: s_mov_b32 s11, s104845; GFX90A-NEXT: ;;#ASMSTART4846; GFX90A-NEXT: ; use s[8:11]4847; GFX90A-NEXT: ;;#ASMEND4848; GFX90A-NEXT: s_setpc_b64 s[30:31]4849;4850; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_0_2_2:4851; GFX942: ; %bb.0:4852; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4853; GFX942-NEXT: ;;#ASMSTART4854; GFX942-NEXT: ; def s[10:11]4855; GFX942-NEXT: ;;#ASMEND4856; GFX942-NEXT: ;;#ASMSTART4857; GFX942-NEXT: ; def s[0:1]4858; GFX942-NEXT: ;;#ASMEND4859; GFX942-NEXT: s_mov_b32 s8, s114860; GFX942-NEXT: s_mov_b32 s9, s04861; GFX942-NEXT: s_mov_b32 s11, s104862; GFX942-NEXT: ;;#ASMSTART4863; GFX942-NEXT: ; use s[8:11]4864; GFX942-NEXT: ;;#ASMEND4865; GFX942-NEXT: s_setpc_b64 s[30:31]4866 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4867 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4868 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 0, i32 2, i32 2>4869 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4870 ret void4871}4872 4873define void @s_shuffle_v4p3_v2p3__3_1_2_2() {4874; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_1_2_2:4875; GFX9: ; %bb.0:4876; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4877; GFX9-NEXT: ;;#ASMSTART4878; GFX9-NEXT: ; def s[8:9]4879; GFX9-NEXT: ;;#ASMEND4880; GFX9-NEXT: ;;#ASMSTART4881; GFX9-NEXT: ; def s[10:11]4882; GFX9-NEXT: ;;#ASMEND4883; GFX9-NEXT: s_mov_b32 s8, s114884; GFX9-NEXT: s_mov_b32 s11, s104885; GFX9-NEXT: ;;#ASMSTART4886; GFX9-NEXT: ; use s[8:11]4887; GFX9-NEXT: ;;#ASMEND4888; GFX9-NEXT: s_setpc_b64 s[30:31]4889 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4890 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4891 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 1, i32 2, i32 2>4892 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4893 ret void4894}4895 4896define void @s_shuffle_v4p3_v2p3__3_3_2_2() {4897; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_3_2_2:4898; GFX9: ; %bb.0:4899; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4900; GFX9-NEXT: ;;#ASMSTART4901; GFX9-NEXT: ; def s[10:11]4902; GFX9-NEXT: ;;#ASMEND4903; GFX9-NEXT: s_mov_b32 s8, s114904; GFX9-NEXT: s_mov_b32 s9, s114905; GFX9-NEXT: s_mov_b32 s11, s104906; GFX9-NEXT: ;;#ASMSTART4907; GFX9-NEXT: ; use s[8:11]4908; GFX9-NEXT: ;;#ASMEND4909; GFX9-NEXT: s_setpc_b64 s[30:31]4910 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4911 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4912 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 2>4913 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4914 ret void4915}4916 4917define void @s_shuffle_v4p3_v2p3__3_3_u_2() {4918; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_3_u_2:4919; GFX900: ; %bb.0:4920; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4921; GFX900-NEXT: ;;#ASMSTART4922; GFX900-NEXT: ; def s[4:5]4923; GFX900-NEXT: ;;#ASMEND4924; GFX900-NEXT: s_mov_b32 s8, s54925; GFX900-NEXT: s_mov_b32 s9, s54926; GFX900-NEXT: s_mov_b32 s11, s44927; GFX900-NEXT: ;;#ASMSTART4928; GFX900-NEXT: ; use s[8:11]4929; GFX900-NEXT: ;;#ASMEND4930; GFX900-NEXT: s_setpc_b64 s[30:31]4931;4932; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_3_u_2:4933; GFX90A: ; %bb.0:4934; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4935; GFX90A-NEXT: ;;#ASMSTART4936; GFX90A-NEXT: ; def s[4:5]4937; GFX90A-NEXT: ;;#ASMEND4938; GFX90A-NEXT: s_mov_b32 s8, s54939; GFX90A-NEXT: s_mov_b32 s9, s54940; GFX90A-NEXT: s_mov_b32 s11, s44941; GFX90A-NEXT: ;;#ASMSTART4942; GFX90A-NEXT: ; use s[8:11]4943; GFX90A-NEXT: ;;#ASMEND4944; GFX90A-NEXT: s_setpc_b64 s[30:31]4945;4946; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_3_u_2:4947; GFX942: ; %bb.0:4948; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4949; GFX942-NEXT: ;;#ASMSTART4950; GFX942-NEXT: ; def s[0:1]4951; GFX942-NEXT: ;;#ASMEND4952; GFX942-NEXT: s_mov_b32 s8, s14953; GFX942-NEXT: s_mov_b32 s9, s14954; GFX942-NEXT: s_mov_b32 s11, s04955; GFX942-NEXT: ;;#ASMSTART4956; GFX942-NEXT: ; use s[8:11]4957; GFX942-NEXT: ;;#ASMEND4958; GFX942-NEXT: s_setpc_b64 s[30:31]4959 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4960 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()4961 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 2>4962 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)4963 ret void4964}4965 4966define void @s_shuffle_v4p3_v2p3__3_3_0_2() {4967; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_3_0_2:4968; GFX900: ; %bb.0:4969; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4970; GFX900-NEXT: ;;#ASMSTART4971; GFX900-NEXT: ; def s[10:11]4972; GFX900-NEXT: ;;#ASMEND4973; GFX900-NEXT: ;;#ASMSTART4974; GFX900-NEXT: ; def s[4:5]4975; GFX900-NEXT: ;;#ASMEND4976; GFX900-NEXT: s_mov_b32 s8, s54977; GFX900-NEXT: s_mov_b32 s9, s54978; GFX900-NEXT: s_mov_b32 s11, s44979; GFX900-NEXT: ;;#ASMSTART4980; GFX900-NEXT: ; use s[8:11]4981; GFX900-NEXT: ;;#ASMEND4982; GFX900-NEXT: s_setpc_b64 s[30:31]4983;4984; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_3_0_2:4985; GFX90A: ; %bb.0:4986; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4987; GFX90A-NEXT: ;;#ASMSTART4988; GFX90A-NEXT: ; def s[10:11]4989; GFX90A-NEXT: ;;#ASMEND4990; GFX90A-NEXT: ;;#ASMSTART4991; GFX90A-NEXT: ; def s[4:5]4992; GFX90A-NEXT: ;;#ASMEND4993; GFX90A-NEXT: s_mov_b32 s8, s54994; GFX90A-NEXT: s_mov_b32 s9, s54995; GFX90A-NEXT: s_mov_b32 s11, s44996; GFX90A-NEXT: ;;#ASMSTART4997; GFX90A-NEXT: ; use s[8:11]4998; GFX90A-NEXT: ;;#ASMEND4999; GFX90A-NEXT: s_setpc_b64 s[30:31]5000;5001; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_3_0_2:5002; GFX942: ; %bb.0:5003; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5004; GFX942-NEXT: ;;#ASMSTART5005; GFX942-NEXT: ; def s[10:11]5006; GFX942-NEXT: ;;#ASMEND5007; GFX942-NEXT: ;;#ASMSTART5008; GFX942-NEXT: ; def s[0:1]5009; GFX942-NEXT: ;;#ASMEND5010; GFX942-NEXT: s_mov_b32 s8, s15011; GFX942-NEXT: s_mov_b32 s9, s15012; GFX942-NEXT: s_mov_b32 s11, s05013; GFX942-NEXT: ;;#ASMSTART5014; GFX942-NEXT: ; use s[8:11]5015; GFX942-NEXT: ;;#ASMEND5016; GFX942-NEXT: s_setpc_b64 s[30:31]5017 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5018 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5019 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 2>5020 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)5021 ret void5022}5023 5024define void @s_shuffle_v4p3_v2p3__3_3_1_2() {5025; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_3_1_2:5026; GFX900: ; %bb.0:5027; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5028; GFX900-NEXT: ;;#ASMSTART5029; GFX900-NEXT: ; def s[4:5]5030; GFX900-NEXT: ;;#ASMEND5031; GFX900-NEXT: ;;#ASMSTART5032; GFX900-NEXT: ; def s[6:7]5033; GFX900-NEXT: ;;#ASMEND5034; GFX900-NEXT: s_mov_b32 s8, s75035; GFX900-NEXT: s_mov_b32 s9, s75036; GFX900-NEXT: s_mov_b32 s10, s55037; GFX900-NEXT: s_mov_b32 s11, s65038; GFX900-NEXT: ;;#ASMSTART5039; GFX900-NEXT: ; use s[8:11]5040; GFX900-NEXT: ;;#ASMEND5041; GFX900-NEXT: s_setpc_b64 s[30:31]5042;5043; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_3_1_2:5044; GFX90A: ; %bb.0:5045; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5046; GFX90A-NEXT: ;;#ASMSTART5047; GFX90A-NEXT: ; def s[4:5]5048; GFX90A-NEXT: ;;#ASMEND5049; GFX90A-NEXT: ;;#ASMSTART5050; GFX90A-NEXT: ; def s[6:7]5051; GFX90A-NEXT: ;;#ASMEND5052; GFX90A-NEXT: s_mov_b32 s8, s75053; GFX90A-NEXT: s_mov_b32 s9, s75054; GFX90A-NEXT: s_mov_b32 s10, s55055; GFX90A-NEXT: s_mov_b32 s11, s65056; GFX90A-NEXT: ;;#ASMSTART5057; GFX90A-NEXT: ; use s[8:11]5058; GFX90A-NEXT: ;;#ASMEND5059; GFX90A-NEXT: s_setpc_b64 s[30:31]5060;5061; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_3_1_2:5062; GFX942: ; %bb.0:5063; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5064; GFX942-NEXT: ;;#ASMSTART5065; GFX942-NEXT: ; def s[0:1]5066; GFX942-NEXT: ;;#ASMEND5067; GFX942-NEXT: ;;#ASMSTART5068; GFX942-NEXT: ; def s[2:3]5069; GFX942-NEXT: ;;#ASMEND5070; GFX942-NEXT: s_mov_b32 s8, s35071; GFX942-NEXT: s_mov_b32 s9, s35072; GFX942-NEXT: s_mov_b32 s10, s15073; GFX942-NEXT: s_mov_b32 s11, s25074; GFX942-NEXT: ;;#ASMSTART5075; GFX942-NEXT: ; use s[8:11]5076; GFX942-NEXT: ;;#ASMEND5077; GFX942-NEXT: s_setpc_b64 s[30:31]5078 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5079 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5080 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 2>5081 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)5082 ret void5083}5084 5085define void @s_shuffle_v4p3_v2p3__u_3_3_3() {5086; GFX9-LABEL: s_shuffle_v4p3_v2p3__u_3_3_3:5087; GFX9: ; %bb.0:5088; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5089; GFX9-NEXT: ;;#ASMSTART5090; GFX9-NEXT: ; def s[8:9]5091; GFX9-NEXT: ;;#ASMEND5092; GFX9-NEXT: s_mov_b32 s10, s95093; GFX9-NEXT: s_mov_b32 s11, s95094; GFX9-NEXT: ;;#ASMSTART5095; GFX9-NEXT: ; use s[8:11]5096; GFX9-NEXT: ;;#ASMEND5097; GFX9-NEXT: s_setpc_b64 s[30:31]5098 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5099 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5100 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 poison, i32 3, i32 3, i32 3>5101 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)5102 ret void5103}5104 5105define void @s_shuffle_v4p3_v2p3__0_3_3_3() {5106; GFX9-LABEL: s_shuffle_v4p3_v2p3__0_3_3_3:5107; GFX9: ; %bb.0:5108; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5109; GFX9-NEXT: ;;#ASMSTART5110; GFX9-NEXT: ; def s[8:9]5111; GFX9-NEXT: ;;#ASMEND5112; GFX9-NEXT: ;;#ASMSTART5113; GFX9-NEXT: ; def s[10:11]5114; GFX9-NEXT: ;;#ASMEND5115; GFX9-NEXT: s_mov_b32 s9, s115116; GFX9-NEXT: s_mov_b32 s10, s115117; GFX9-NEXT: ;;#ASMSTART5118; GFX9-NEXT: ; use s[8:11]5119; GFX9-NEXT: ;;#ASMEND5120; GFX9-NEXT: s_setpc_b64 s[30:31]5121 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5122 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5123 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 0, i32 3, i32 3, i32 3>5124 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)5125 ret void5126}5127 5128define void @s_shuffle_v4p3_v2p3__1_3_3_3() {5129; GFX900-LABEL: s_shuffle_v4p3_v2p3__1_3_3_3:5130; GFX900: ; %bb.0:5131; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5132; GFX900-NEXT: ;;#ASMSTART5133; GFX900-NEXT: ; def s[8:9]5134; GFX900-NEXT: ;;#ASMEND5135; GFX900-NEXT: ;;#ASMSTART5136; GFX900-NEXT: ; def s[4:5]5137; GFX900-NEXT: ;;#ASMEND5138; GFX900-NEXT: s_mov_b32 s8, s55139; GFX900-NEXT: s_mov_b32 s10, s95140; GFX900-NEXT: s_mov_b32 s11, s95141; GFX900-NEXT: ;;#ASMSTART5142; GFX900-NEXT: ; use s[8:11]5143; GFX900-NEXT: ;;#ASMEND5144; GFX900-NEXT: s_setpc_b64 s[30:31]5145;5146; GFX90A-LABEL: s_shuffle_v4p3_v2p3__1_3_3_3:5147; GFX90A: ; %bb.0:5148; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5149; GFX90A-NEXT: ;;#ASMSTART5150; GFX90A-NEXT: ; def s[8:9]5151; GFX90A-NEXT: ;;#ASMEND5152; GFX90A-NEXT: ;;#ASMSTART5153; GFX90A-NEXT: ; def s[4:5]5154; GFX90A-NEXT: ;;#ASMEND5155; GFX90A-NEXT: s_mov_b32 s8, s55156; GFX90A-NEXT: s_mov_b32 s10, s95157; GFX90A-NEXT: s_mov_b32 s11, s95158; GFX90A-NEXT: ;;#ASMSTART5159; GFX90A-NEXT: ; use s[8:11]5160; GFX90A-NEXT: ;;#ASMEND5161; GFX90A-NEXT: s_setpc_b64 s[30:31]5162;5163; GFX942-LABEL: s_shuffle_v4p3_v2p3__1_3_3_3:5164; GFX942: ; %bb.0:5165; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5166; GFX942-NEXT: ;;#ASMSTART5167; GFX942-NEXT: ; def s[8:9]5168; GFX942-NEXT: ;;#ASMEND5169; GFX942-NEXT: ;;#ASMSTART5170; GFX942-NEXT: ; def s[0:1]5171; GFX942-NEXT: ;;#ASMEND5172; GFX942-NEXT: s_mov_b32 s8, s15173; GFX942-NEXT: s_mov_b32 s10, s95174; GFX942-NEXT: s_mov_b32 s11, s95175; GFX942-NEXT: ;;#ASMSTART5176; GFX942-NEXT: ; use s[8:11]5177; GFX942-NEXT: ;;#ASMEND5178; GFX942-NEXT: s_setpc_b64 s[30:31]5179 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5180 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5181 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 1, i32 3, i32 3, i32 3>5182 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)5183 ret void5184}5185 5186define void @s_shuffle_v4p3_v2p3__2_3_3_3() {5187; GFX9-LABEL: s_shuffle_v4p3_v2p3__2_3_3_3:5188; GFX9: ; %bb.0:5189; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5190; GFX9-NEXT: ;;#ASMSTART5191; GFX9-NEXT: ; def s[8:9]5192; GFX9-NEXT: ;;#ASMEND5193; GFX9-NEXT: s_mov_b32 s10, s95194; GFX9-NEXT: s_mov_b32 s11, s95195; GFX9-NEXT: ;;#ASMSTART5196; GFX9-NEXT: ; use s[8:11]5197; GFX9-NEXT: ;;#ASMEND5198; GFX9-NEXT: s_setpc_b64 s[30:31]5199 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5200 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5201 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 2, i32 3, i32 3, i32 3>5202 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)5203 ret void5204}5205 5206define void @s_shuffle_v4p3_v2p3__3_u_3_3() {5207; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_u_3_3:5208; GFX9: ; %bb.0:5209; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5210; GFX9-NEXT: ;;#ASMSTART5211; GFX9-NEXT: ; def s[10:11]5212; GFX9-NEXT: ;;#ASMEND5213; GFX9-NEXT: s_mov_b32 s8, s115214; GFX9-NEXT: s_mov_b32 s10, s115215; GFX9-NEXT: ;;#ASMSTART5216; GFX9-NEXT: ; use s[8:11]5217; GFX9-NEXT: ;;#ASMEND5218; GFX9-NEXT: s_setpc_b64 s[30:31]5219 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5220 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5221 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 poison, i32 3, i32 3>5222 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)5223 ret void5224}5225 5226define void @s_shuffle_v4p3_v2p3__3_0_3_3() {5227; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_0_3_3:5228; GFX900: ; %bb.0:5229; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5230; GFX900-NEXT: ;;#ASMSTART5231; GFX900-NEXT: ; def s[10:11]5232; GFX900-NEXT: ;;#ASMEND5233; GFX900-NEXT: ;;#ASMSTART5234; GFX900-NEXT: ; def s[4:5]5235; GFX900-NEXT: ;;#ASMEND5236; GFX900-NEXT: s_mov_b32 s8, s115237; GFX900-NEXT: s_mov_b32 s9, s45238; GFX900-NEXT: s_mov_b32 s10, s115239; GFX900-NEXT: ;;#ASMSTART5240; GFX900-NEXT: ; use s[8:11]5241; GFX900-NEXT: ;;#ASMEND5242; GFX900-NEXT: s_setpc_b64 s[30:31]5243;5244; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_0_3_3:5245; GFX90A: ; %bb.0:5246; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5247; GFX90A-NEXT: ;;#ASMSTART5248; GFX90A-NEXT: ; def s[10:11]5249; GFX90A-NEXT: ;;#ASMEND5250; GFX90A-NEXT: ;;#ASMSTART5251; GFX90A-NEXT: ; def s[4:5]5252; GFX90A-NEXT: ;;#ASMEND5253; GFX90A-NEXT: s_mov_b32 s8, s115254; GFX90A-NEXT: s_mov_b32 s9, s45255; GFX90A-NEXT: s_mov_b32 s10, s115256; GFX90A-NEXT: ;;#ASMSTART5257; GFX90A-NEXT: ; use s[8:11]5258; GFX90A-NEXT: ;;#ASMEND5259; GFX90A-NEXT: s_setpc_b64 s[30:31]5260;5261; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_0_3_3:5262; GFX942: ; %bb.0:5263; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5264; GFX942-NEXT: ;;#ASMSTART5265; GFX942-NEXT: ; def s[10:11]5266; GFX942-NEXT: ;;#ASMEND5267; GFX942-NEXT: ;;#ASMSTART5268; GFX942-NEXT: ; def s[0:1]5269; GFX942-NEXT: ;;#ASMEND5270; GFX942-NEXT: s_mov_b32 s8, s115271; GFX942-NEXT: s_mov_b32 s9, s05272; GFX942-NEXT: s_mov_b32 s10, s115273; GFX942-NEXT: ;;#ASMSTART5274; GFX942-NEXT: ; use s[8:11]5275; GFX942-NEXT: ;;#ASMEND5276; GFX942-NEXT: s_setpc_b64 s[30:31]5277 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5278 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5279 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 0, i32 3, i32 3>5280 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)5281 ret void5282}5283 5284define void @s_shuffle_v4p3_v2p3__3_1_3_3() {5285; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_1_3_3:5286; GFX9: ; %bb.0:5287; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5288; GFX9-NEXT: ;;#ASMSTART5289; GFX9-NEXT: ; def s[8:9]5290; GFX9-NEXT: ;;#ASMEND5291; GFX9-NEXT: ;;#ASMSTART5292; GFX9-NEXT: ; def s[10:11]5293; GFX9-NEXT: ;;#ASMEND5294; GFX9-NEXT: s_mov_b32 s8, s115295; GFX9-NEXT: s_mov_b32 s10, s115296; GFX9-NEXT: ;;#ASMSTART5297; GFX9-NEXT: ; use s[8:11]5298; GFX9-NEXT: ;;#ASMEND5299; GFX9-NEXT: s_setpc_b64 s[30:31]5300 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5301 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5302 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 1, i32 3, i32 3>5303 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)5304 ret void5305}5306 5307define void @s_shuffle_v4p3_v2p3__3_2_3_3() {5308; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_2_3_3:5309; GFX9: ; %bb.0:5310; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5311; GFX9-NEXT: ;;#ASMSTART5312; GFX9-NEXT: ; def s[10:11]5313; GFX9-NEXT: ;;#ASMEND5314; GFX9-NEXT: s_mov_b32 s8, s115315; GFX9-NEXT: s_mov_b32 s9, s105316; GFX9-NEXT: s_mov_b32 s10, s115317; GFX9-NEXT: ;;#ASMSTART5318; GFX9-NEXT: ; use s[8:11]5319; GFX9-NEXT: ;;#ASMEND5320; GFX9-NEXT: s_setpc_b64 s[30:31]5321 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5322 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5323 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 2, i32 3, i32 3>5324 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)5325 ret void5326}5327 5328define void @s_shuffle_v4p3_v2p3__3_3_u_3() {5329; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_3_u_3:5330; GFX9: ; %bb.0:5331; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5332; GFX9-NEXT: ;;#ASMSTART5333; GFX9-NEXT: ; def s[8:9]5334; GFX9-NEXT: ;;#ASMEND5335; GFX9-NEXT: s_mov_b32 s8, s95336; GFX9-NEXT: s_mov_b32 s11, s95337; GFX9-NEXT: ;;#ASMSTART5338; GFX9-NEXT: ; use s[8:11]5339; GFX9-NEXT: ;;#ASMEND5340; GFX9-NEXT: s_setpc_b64 s[30:31]5341 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5342 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5343 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 poison, i32 3>5344 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)5345 ret void5346}5347 5348define void @s_shuffle_v4p3_v2p3__3_3_0_3() {5349; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_3_0_3:5350; GFX9: ; %bb.0:5351; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5352; GFX9-NEXT: ;;#ASMSTART5353; GFX9-NEXT: ; def s[10:11]5354; GFX9-NEXT: ;;#ASMEND5355; GFX9-NEXT: ;;#ASMSTART5356; GFX9-NEXT: ; def s[8:9]5357; GFX9-NEXT: ;;#ASMEND5358; GFX9-NEXT: s_mov_b32 s8, s95359; GFX9-NEXT: s_mov_b32 s11, s95360; GFX9-NEXT: ;;#ASMSTART5361; GFX9-NEXT: ; use s[8:11]5362; GFX9-NEXT: ;;#ASMEND5363; GFX9-NEXT: s_setpc_b64 s[30:31]5364 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5365 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5366 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 0, i32 3>5367 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)5368 ret void5369}5370 5371define void @s_shuffle_v4p3_v2p3__3_3_1_3() {5372; GFX900-LABEL: s_shuffle_v4p3_v2p3__3_3_1_3:5373; GFX900: ; %bb.0:5374; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5375; GFX900-NEXT: ;;#ASMSTART5376; GFX900-NEXT: ; def s[8:9]5377; GFX900-NEXT: ;;#ASMEND5378; GFX900-NEXT: ;;#ASMSTART5379; GFX900-NEXT: ; def s[4:5]5380; GFX900-NEXT: ;;#ASMEND5381; GFX900-NEXT: s_mov_b32 s8, s95382; GFX900-NEXT: s_mov_b32 s10, s55383; GFX900-NEXT: s_mov_b32 s11, s95384; GFX900-NEXT: ;;#ASMSTART5385; GFX900-NEXT: ; use s[8:11]5386; GFX900-NEXT: ;;#ASMEND5387; GFX900-NEXT: s_setpc_b64 s[30:31]5388;5389; GFX90A-LABEL: s_shuffle_v4p3_v2p3__3_3_1_3:5390; GFX90A: ; %bb.0:5391; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5392; GFX90A-NEXT: ;;#ASMSTART5393; GFX90A-NEXT: ; def s[8:9]5394; GFX90A-NEXT: ;;#ASMEND5395; GFX90A-NEXT: ;;#ASMSTART5396; GFX90A-NEXT: ; def s[4:5]5397; GFX90A-NEXT: ;;#ASMEND5398; GFX90A-NEXT: s_mov_b32 s8, s95399; GFX90A-NEXT: s_mov_b32 s10, s55400; GFX90A-NEXT: s_mov_b32 s11, s95401; GFX90A-NEXT: ;;#ASMSTART5402; GFX90A-NEXT: ; use s[8:11]5403; GFX90A-NEXT: ;;#ASMEND5404; GFX90A-NEXT: s_setpc_b64 s[30:31]5405;5406; GFX942-LABEL: s_shuffle_v4p3_v2p3__3_3_1_3:5407; GFX942: ; %bb.0:5408; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5409; GFX942-NEXT: ;;#ASMSTART5410; GFX942-NEXT: ; def s[8:9]5411; GFX942-NEXT: ;;#ASMEND5412; GFX942-NEXT: ;;#ASMSTART5413; GFX942-NEXT: ; def s[0:1]5414; GFX942-NEXT: ;;#ASMEND5415; GFX942-NEXT: s_mov_b32 s8, s95416; GFX942-NEXT: s_mov_b32 s10, s15417; GFX942-NEXT: s_mov_b32 s11, s95418; GFX942-NEXT: ;;#ASMSTART5419; GFX942-NEXT: ; use s[8:11]5420; GFX942-NEXT: ;;#ASMEND5421; GFX942-NEXT: s_setpc_b64 s[30:31]5422 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5423 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5424 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 1, i32 3>5425 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)5426 ret void5427}5428 5429define void @s_shuffle_v4p3_v2p3__3_3_2_3() {5430; GFX9-LABEL: s_shuffle_v4p3_v2p3__3_3_2_3:5431; GFX9: ; %bb.0:5432; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5433; GFX9-NEXT: ;;#ASMSTART5434; GFX9-NEXT: ; def s[10:11]5435; GFX9-NEXT: ;;#ASMEND5436; GFX9-NEXT: s_mov_b32 s8, s115437; GFX9-NEXT: s_mov_b32 s9, s115438; GFX9-NEXT: ;;#ASMSTART5439; GFX9-NEXT: ; use s[8:11]5440; GFX9-NEXT: ;;#ASMEND5441; GFX9-NEXT: s_setpc_b64 s[30:31]5442 %vec0 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5443 %vec1 = call <2 x ptr addrspace(3)> asm "; def $0", "=s"()5444 %shuf = shufflevector <2 x ptr addrspace(3)> %vec0, <2 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 3, i32 2, i32 3>5445 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)5446 ret void5447}5448;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:5449; GFX90APLUS: {{.*}}5450