14317 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_v3p3_v4p3__u_u_u(ptr addrspace(1) inreg %ptr) {8; GFX9-LABEL: v_shuffle_v3p3_v4p3__u_u_u:9; GFX9: ; %bb.0:10; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11; GFX9-NEXT: s_setpc_b64 s[30:31]12 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()13 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> poison14 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 1615 ret void16}17 18define void @v_shuffle_v3p3_v4p3__0_u_u(ptr addrspace(1) inreg %ptr) {19; GFX900-LABEL: v_shuffle_v3p3_v4p3__0_u_u:20; GFX900: ; %bb.0:21; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22; GFX900-NEXT: v_mov_b32_e32 v4, 023; GFX900-NEXT: ;;#ASMSTART24; GFX900-NEXT: ; def v[0:3]25; GFX900-NEXT: ;;#ASMEND26; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], 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_v3p3_v4p3__0_u_u:31; GFX90A: ; %bb.0:32; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)33; GFX90A-NEXT: v_mov_b32_e32 v4, 034; GFX90A-NEXT: ;;#ASMSTART35; GFX90A-NEXT: ; def v[0:3]36; GFX90A-NEXT: ;;#ASMEND37; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], 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_v3p3_v4p3__0_u_u:42; GFX942: ; %bb.0:43; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)44; GFX942-NEXT: v_mov_b32_e32 v4, 045; GFX942-NEXT: ;;#ASMSTART46; GFX942-NEXT: ; def v[0:3]47; GFX942-NEXT: ;;#ASMEND48; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]49; GFX942-NEXT: s_waitcnt vmcnt(0)50; GFX942-NEXT: s_setpc_b64 s[30:31]51 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()52 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 0, i32 poison, i32 poison>53 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 1654 ret void55}56 57define void @v_shuffle_v3p3_v4p3__1_u_u(ptr addrspace(1) inreg %ptr) {58; GFX900-LABEL: v_shuffle_v3p3_v4p3__1_u_u:59; GFX900: ; %bb.0:60; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)61; GFX900-NEXT: v_mov_b32_e32 v4, 062; GFX900-NEXT: ;;#ASMSTART63; GFX900-NEXT: ; def v[0:3]64; GFX900-NEXT: ;;#ASMEND65; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], 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_v3p3_v4p3__1_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:3]74; GFX90A-NEXT: ;;#ASMEND75; GFX90A-NEXT: v_mov_b32_e32 v4, 076; GFX90A-NEXT: v_mov_b32_e32 v0, v177; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], 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_v3p3_v4p3__1_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:3]86; GFX942-NEXT: ;;#ASMEND87; GFX942-NEXT: v_mov_b32_e32 v4, 088; GFX942-NEXT: v_mov_b32_e32 v0, v189; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]90; GFX942-NEXT: s_waitcnt vmcnt(0)91; GFX942-NEXT: s_setpc_b64 s[30:31]92 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()93 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 poison, i32 poison>94 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 1695 ret void96}97 98define void @v_shuffle_v3p3_v4p3__2_u_u(ptr addrspace(1) inreg %ptr) {99; GFX900-LABEL: v_shuffle_v3p3_v4p3__2_u_u:100; GFX900: ; %bb.0:101; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)102; GFX900-NEXT: v_mov_b32_e32 v4, 0103; GFX900-NEXT: ;;#ASMSTART104; GFX900-NEXT: ; def v[0:3]105; GFX900-NEXT: ;;#ASMEND106; GFX900-NEXT: global_store_dwordx3 v4, v[2:4], s[16:17]107; GFX900-NEXT: s_waitcnt vmcnt(0)108; GFX900-NEXT: s_setpc_b64 s[30:31]109;110; GFX90A-LABEL: v_shuffle_v3p3_v4p3__2_u_u:111; GFX90A: ; %bb.0:112; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)113; GFX90A-NEXT: v_mov_b32_e32 v4, 0114; GFX90A-NEXT: ;;#ASMSTART115; GFX90A-NEXT: ; def v[0:3]116; GFX90A-NEXT: ;;#ASMEND117; GFX90A-NEXT: global_store_dwordx3 v4, v[2:4], s[16:17]118; GFX90A-NEXT: s_waitcnt vmcnt(0)119; GFX90A-NEXT: s_setpc_b64 s[30:31]120;121; GFX942-LABEL: v_shuffle_v3p3_v4p3__2_u_u:122; GFX942: ; %bb.0:123; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)124; GFX942-NEXT: v_mov_b32_e32 v4, 0125; GFX942-NEXT: ;;#ASMSTART126; GFX942-NEXT: ; def v[0:3]127; GFX942-NEXT: ;;#ASMEND128; GFX942-NEXT: global_store_dwordx3 v4, v[2:4], s[0:1]129; GFX942-NEXT: s_waitcnt vmcnt(0)130; GFX942-NEXT: s_setpc_b64 s[30:31]131 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()132 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 poison, i32 poison>133 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16134 ret void135}136 137define void @v_shuffle_v3p3_v4p3__3_u_u(ptr addrspace(1) inreg %ptr) {138; GFX900-LABEL: v_shuffle_v3p3_v4p3__3_u_u:139; GFX900: ; %bb.0:140; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)141; GFX900-NEXT: v_mov_b32_e32 v4, 0142; GFX900-NEXT: ;;#ASMSTART143; GFX900-NEXT: ; def v[0:3]144; GFX900-NEXT: ;;#ASMEND145; GFX900-NEXT: global_store_dwordx3 v4, v[3:5], s[16:17]146; GFX900-NEXT: s_waitcnt vmcnt(0)147; GFX900-NEXT: s_setpc_b64 s[30:31]148;149; GFX90A-LABEL: v_shuffle_v3p3_v4p3__3_u_u:150; GFX90A: ; %bb.0:151; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)152; GFX90A-NEXT: ;;#ASMSTART153; GFX90A-NEXT: ; def v[0:3]154; GFX90A-NEXT: ;;#ASMEND155; GFX90A-NEXT: v_mov_b32_e32 v4, 0156; GFX90A-NEXT: v_mov_b32_e32 v0, v3157; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]158; GFX90A-NEXT: s_waitcnt vmcnt(0)159; GFX90A-NEXT: s_setpc_b64 s[30:31]160;161; GFX942-LABEL: v_shuffle_v3p3_v4p3__3_u_u:162; GFX942: ; %bb.0:163; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)164; GFX942-NEXT: ;;#ASMSTART165; GFX942-NEXT: ; def v[0:3]166; GFX942-NEXT: ;;#ASMEND167; GFX942-NEXT: v_mov_b32_e32 v4, 0168; GFX942-NEXT: v_mov_b32_e32 v0, v3169; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]170; GFX942-NEXT: s_waitcnt vmcnt(0)171; GFX942-NEXT: s_setpc_b64 s[30:31]172 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()173 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 3, i32 poison, i32 poison>174 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16175 ret void176}177 178define void @v_shuffle_v3p3_v4p3__4_u_u(ptr addrspace(1) inreg %ptr) {179; GFX9-LABEL: v_shuffle_v3p3_v4p3__4_u_u:180; GFX9: ; %bb.0:181; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)182; GFX9-NEXT: s_setpc_b64 s[30:31]183 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()184 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 4, i32 poison, i32 poison>185 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16186 ret void187}188 189define void @v_shuffle_v3p3_v4p3__5_u_u(ptr addrspace(1) inreg %ptr) {190; GFX900-LABEL: v_shuffle_v3p3_v4p3__5_u_u:191; GFX900: ; %bb.0:192; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)193; GFX900-NEXT: v_mov_b32_e32 v4, 0194; GFX900-NEXT: ;;#ASMSTART195; GFX900-NEXT: ; def v[0:3]196; GFX900-NEXT: ;;#ASMEND197; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]198; GFX900-NEXT: s_waitcnt vmcnt(0)199; GFX900-NEXT: s_setpc_b64 s[30:31]200;201; GFX90A-LABEL: v_shuffle_v3p3_v4p3__5_u_u:202; GFX90A: ; %bb.0:203; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)204; GFX90A-NEXT: ;;#ASMSTART205; GFX90A-NEXT: ; def v[0:3]206; GFX90A-NEXT: ;;#ASMEND207; GFX90A-NEXT: v_mov_b32_e32 v4, 0208; GFX90A-NEXT: v_mov_b32_e32 v0, v1209; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]210; GFX90A-NEXT: s_waitcnt vmcnt(0)211; GFX90A-NEXT: s_setpc_b64 s[30:31]212;213; GFX942-LABEL: v_shuffle_v3p3_v4p3__5_u_u:214; GFX942: ; %bb.0:215; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)216; GFX942-NEXT: ;;#ASMSTART217; GFX942-NEXT: ; def v[0:3]218; GFX942-NEXT: ;;#ASMEND219; GFX942-NEXT: v_mov_b32_e32 v4, 0220; GFX942-NEXT: v_mov_b32_e32 v0, v1221; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]222; GFX942-NEXT: s_waitcnt vmcnt(0)223; GFX942-NEXT: s_setpc_b64 s[30:31]224 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()225 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()226 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 poison, i32 poison>227 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16228 ret void229}230 231define void @v_shuffle_v3p3_v4p3__6_u_u(ptr addrspace(1) inreg %ptr) {232; GFX900-LABEL: v_shuffle_v3p3_v4p3__6_u_u:233; GFX900: ; %bb.0:234; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)235; GFX900-NEXT: v_mov_b32_e32 v4, 0236; GFX900-NEXT: ;;#ASMSTART237; GFX900-NEXT: ; def v[0:3]238; GFX900-NEXT: ;;#ASMEND239; GFX900-NEXT: global_store_dwordx3 v4, v[2:4], s[16:17]240; GFX900-NEXT: s_waitcnt vmcnt(0)241; GFX900-NEXT: s_setpc_b64 s[30:31]242;243; GFX90A-LABEL: v_shuffle_v3p3_v4p3__6_u_u:244; GFX90A: ; %bb.0:245; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)246; GFX90A-NEXT: v_mov_b32_e32 v4, 0247; GFX90A-NEXT: ;;#ASMSTART248; GFX90A-NEXT: ; def v[0:3]249; GFX90A-NEXT: ;;#ASMEND250; GFX90A-NEXT: global_store_dwordx3 v4, v[2:4], s[16:17]251; GFX90A-NEXT: s_waitcnt vmcnt(0)252; GFX90A-NEXT: s_setpc_b64 s[30:31]253;254; GFX942-LABEL: v_shuffle_v3p3_v4p3__6_u_u:255; GFX942: ; %bb.0:256; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)257; GFX942-NEXT: v_mov_b32_e32 v4, 0258; GFX942-NEXT: ;;#ASMSTART259; GFX942-NEXT: ; def v[0:3]260; GFX942-NEXT: ;;#ASMEND261; GFX942-NEXT: global_store_dwordx3 v4, v[2:4], s[0:1]262; GFX942-NEXT: s_waitcnt vmcnt(0)263; GFX942-NEXT: s_setpc_b64 s[30:31]264 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()265 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()266 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 poison, i32 poison>267 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16268 ret void269}270 271define void @v_shuffle_v3p3_v4p3__7_u_u(ptr addrspace(1) inreg %ptr) {272; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_u_u:273; GFX900: ; %bb.0:274; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)275; GFX900-NEXT: v_mov_b32_e32 v4, 0276; GFX900-NEXT: ;;#ASMSTART277; GFX900-NEXT: ; def v[0:3]278; GFX900-NEXT: ;;#ASMEND279; GFX900-NEXT: global_store_dwordx3 v4, v[3:5], s[16:17]280; GFX900-NEXT: s_waitcnt vmcnt(0)281; GFX900-NEXT: s_setpc_b64 s[30:31]282;283; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_u_u:284; GFX90A: ; %bb.0:285; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)286; GFX90A-NEXT: ;;#ASMSTART287; GFX90A-NEXT: ; def v[0:3]288; GFX90A-NEXT: ;;#ASMEND289; GFX90A-NEXT: v_mov_b32_e32 v4, 0290; GFX90A-NEXT: v_mov_b32_e32 v0, v3291; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]292; GFX90A-NEXT: s_waitcnt vmcnt(0)293; GFX90A-NEXT: s_setpc_b64 s[30:31]294;295; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_u_u:296; GFX942: ; %bb.0:297; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)298; GFX942-NEXT: ;;#ASMSTART299; GFX942-NEXT: ; def v[0:3]300; GFX942-NEXT: ;;#ASMEND301; GFX942-NEXT: v_mov_b32_e32 v4, 0302; GFX942-NEXT: v_mov_b32_e32 v0, v3303; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]304; GFX942-NEXT: s_waitcnt vmcnt(0)305; GFX942-NEXT: s_setpc_b64 s[30:31]306 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()307 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()308 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 poison>309 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16310 ret void311}312 313define void @v_shuffle_v3p3_v4p3__7_0_u(ptr addrspace(1) inreg %ptr) {314; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_0_u:315; GFX900: ; %bb.0:316; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)317; GFX900-NEXT: v_mov_b32_e32 v8, 0318; GFX900-NEXT: ;;#ASMSTART319; GFX900-NEXT: ; def v[4:7]320; GFX900-NEXT: ;;#ASMEND321; GFX900-NEXT: ;;#ASMSTART322; GFX900-NEXT: ; def v[0:3]323; GFX900-NEXT: ;;#ASMEND324; GFX900-NEXT: global_store_dwordx3 v8, v[3:5], s[16:17]325; GFX900-NEXT: s_waitcnt vmcnt(0)326; GFX900-NEXT: s_setpc_b64 s[30:31]327;328; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_0_u:329; GFX90A: ; %bb.0:330; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)331; GFX90A-NEXT: ;;#ASMSTART332; GFX90A-NEXT: ; def v[0:3]333; GFX90A-NEXT: ;;#ASMEND334; GFX90A-NEXT: ;;#ASMSTART335; GFX90A-NEXT: ; def v[2:5]336; GFX90A-NEXT: ;;#ASMEND337; GFX90A-NEXT: v_mov_b32_e32 v6, 0338; GFX90A-NEXT: v_mov_b32_e32 v2, v5339; GFX90A-NEXT: v_mov_b32_e32 v3, v0340; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]341; GFX90A-NEXT: s_waitcnt vmcnt(0)342; GFX90A-NEXT: s_setpc_b64 s[30:31]343;344; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_0_u:345; GFX942: ; %bb.0:346; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)347; GFX942-NEXT: ;;#ASMSTART348; GFX942-NEXT: ; def v[0:3]349; GFX942-NEXT: ;;#ASMEND350; GFX942-NEXT: v_mov_b32_e32 v6, 0351; GFX942-NEXT: ;;#ASMSTART352; GFX942-NEXT: ; def v[2:5]353; GFX942-NEXT: ;;#ASMEND354; GFX942-NEXT: s_nop 0355; GFX942-NEXT: v_mov_b32_e32 v2, v5356; GFX942-NEXT: v_mov_b32_e32 v3, v0357; GFX942-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1]358; GFX942-NEXT: s_waitcnt vmcnt(0)359; GFX942-NEXT: s_setpc_b64 s[30:31]360 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()361 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()362 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 poison>363 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16364 ret void365}366 367define void @v_shuffle_v3p3_v4p3__7_1_u(ptr addrspace(1) inreg %ptr) {368; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_1_u:369; GFX900: ; %bb.0:370; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)371; GFX900-NEXT: v_mov_b32_e32 v7, 0372; GFX900-NEXT: ;;#ASMSTART373; GFX900-NEXT: ; def v[3:6]374; GFX900-NEXT: ;;#ASMEND375; GFX900-NEXT: ;;#ASMSTART376; GFX900-NEXT: ; def v[0:3]377; GFX900-NEXT: ;;#ASMEND378; GFX900-NEXT: global_store_dwordx3 v7, v[3:5], s[16:17]379; GFX900-NEXT: s_waitcnt vmcnt(0)380; GFX900-NEXT: s_setpc_b64 s[30:31]381;382; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_1_u:383; GFX90A: ; %bb.0:384; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)385; GFX90A-NEXT: ;;#ASMSTART386; GFX90A-NEXT: ; def v[0:3]387; GFX90A-NEXT: ;;#ASMEND388; GFX90A-NEXT: v_mov_b32_e32 v6, 0389; GFX90A-NEXT: ;;#ASMSTART390; GFX90A-NEXT: ; def v[2:5]391; GFX90A-NEXT: ;;#ASMEND392; GFX90A-NEXT: v_mov_b32_e32 v0, v5393; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]394; GFX90A-NEXT: s_waitcnt vmcnt(0)395; GFX90A-NEXT: s_setpc_b64 s[30:31]396;397; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_1_u:398; GFX942: ; %bb.0:399; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)400; GFX942-NEXT: ;;#ASMSTART401; GFX942-NEXT: ; def v[0:3]402; GFX942-NEXT: ;;#ASMEND403; GFX942-NEXT: v_mov_b32_e32 v6, 0404; GFX942-NEXT: ;;#ASMSTART405; GFX942-NEXT: ; def v[2:5]406; GFX942-NEXT: ;;#ASMEND407; GFX942-NEXT: s_nop 0408; GFX942-NEXT: v_mov_b32_e32 v0, v5409; GFX942-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1]410; GFX942-NEXT: s_waitcnt vmcnt(0)411; GFX942-NEXT: s_setpc_b64 s[30:31]412 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()413 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()414 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 poison>415 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16416 ret void417}418 419define void @v_shuffle_v3p3_v4p3__7_2_u(ptr addrspace(1) inreg %ptr) {420; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_2_u:421; GFX900: ; %bb.0:422; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)423; GFX900-NEXT: v_mov_b32_e32 v6, 0424; GFX900-NEXT: ;;#ASMSTART425; GFX900-NEXT: ; def v[2:5]426; GFX900-NEXT: ;;#ASMEND427; GFX900-NEXT: ;;#ASMSTART428; GFX900-NEXT: ; def v[0:3]429; GFX900-NEXT: ;;#ASMEND430; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]431; GFX900-NEXT: s_waitcnt vmcnt(0)432; GFX900-NEXT: s_setpc_b64 s[30:31]433;434; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_2_u:435; GFX90A: ; %bb.0:436; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)437; GFX90A-NEXT: ;;#ASMSTART438; GFX90A-NEXT: ; def v[0:3]439; GFX90A-NEXT: ;;#ASMEND440; GFX90A-NEXT: v_mov_b32_e32 v8, 0441; GFX90A-NEXT: ;;#ASMSTART442; GFX90A-NEXT: ; def v[4:7]443; GFX90A-NEXT: ;;#ASMEND444; GFX90A-NEXT: v_mov_b32_e32 v0, v7445; GFX90A-NEXT: v_mov_b32_e32 v1, v2446; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]447; GFX90A-NEXT: s_waitcnt vmcnt(0)448; GFX90A-NEXT: s_setpc_b64 s[30:31]449;450; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_2_u:451; GFX942: ; %bb.0:452; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)453; GFX942-NEXT: ;;#ASMSTART454; GFX942-NEXT: ; def v[0:3]455; GFX942-NEXT: ;;#ASMEND456; GFX942-NEXT: v_mov_b32_e32 v8, 0457; GFX942-NEXT: ;;#ASMSTART458; GFX942-NEXT: ; def v[4:7]459; GFX942-NEXT: ;;#ASMEND460; GFX942-NEXT: v_mov_b32_e32 v1, v2461; GFX942-NEXT: v_mov_b32_e32 v0, v7462; GFX942-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1]463; GFX942-NEXT: s_waitcnt vmcnt(0)464; GFX942-NEXT: s_setpc_b64 s[30:31]465 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()466 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()467 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 poison>468 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16469 ret void470}471 472define void @v_shuffle_v3p3_v4p3__7_3_u(ptr addrspace(1) inreg %ptr) {473; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_3_u:474; GFX900: ; %bb.0:475; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)476; GFX900-NEXT: v_mov_b32_e32 v5, 0477; GFX900-NEXT: ;;#ASMSTART478; GFX900-NEXT: ; def v[1:4]479; GFX900-NEXT: ;;#ASMEND480; GFX900-NEXT: ;;#ASMSTART481; GFX900-NEXT: ; def v[0:3]482; GFX900-NEXT: ;;#ASMEND483; GFX900-NEXT: global_store_dwordx3 v5, v[3:5], s[16:17]484; GFX900-NEXT: s_waitcnt vmcnt(0)485; GFX900-NEXT: s_setpc_b64 s[30:31]486;487; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_3_u:488; GFX90A: ; %bb.0:489; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)490; GFX90A-NEXT: ;;#ASMSTART491; GFX90A-NEXT: ; def v[0:3]492; GFX90A-NEXT: ;;#ASMEND493; GFX90A-NEXT: v_mov_b32_e32 v8, 0494; GFX90A-NEXT: ;;#ASMSTART495; GFX90A-NEXT: ; def v[4:7]496; GFX90A-NEXT: ;;#ASMEND497; GFX90A-NEXT: v_mov_b32_e32 v2, v7498; GFX90A-NEXT: global_store_dwordx3 v8, v[2:4], s[16:17]499; GFX90A-NEXT: s_waitcnt vmcnt(0)500; GFX90A-NEXT: s_setpc_b64 s[30:31]501;502; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_3_u:503; GFX942: ; %bb.0:504; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)505; GFX942-NEXT: ;;#ASMSTART506; GFX942-NEXT: ; def v[0:3]507; GFX942-NEXT: ;;#ASMEND508; GFX942-NEXT: v_mov_b32_e32 v8, 0509; GFX942-NEXT: ;;#ASMSTART510; GFX942-NEXT: ; def v[4:7]511; GFX942-NEXT: ;;#ASMEND512; GFX942-NEXT: s_nop 0513; GFX942-NEXT: v_mov_b32_e32 v2, v7514; GFX942-NEXT: global_store_dwordx3 v8, v[2:4], s[0:1]515; GFX942-NEXT: s_waitcnt vmcnt(0)516; GFX942-NEXT: s_setpc_b64 s[30:31]517 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()518 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()519 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 poison>520 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16521 ret void522}523 524define void @v_shuffle_v3p3_v4p3__7_4_u(ptr addrspace(1) inreg %ptr) {525; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_4_u:526; GFX900: ; %bb.0:527; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)528; GFX900-NEXT: v_mov_b32_e32 v5, 0529; GFX900-NEXT: ;;#ASMSTART530; GFX900-NEXT: ; def v[0:3]531; GFX900-NEXT: ;;#ASMEND532; GFX900-NEXT: v_mov_b32_e32 v4, v0533; GFX900-NEXT: global_store_dwordx3 v5, v[3:5], s[16:17]534; GFX900-NEXT: s_waitcnt vmcnt(0)535; GFX900-NEXT: s_setpc_b64 s[30:31]536;537; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_4_u:538; GFX90A: ; %bb.0:539; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)540; GFX90A-NEXT: ;;#ASMSTART541; GFX90A-NEXT: ; def v[0:3]542; GFX90A-NEXT: ;;#ASMEND543; GFX90A-NEXT: v_mov_b32_e32 v4, 0544; GFX90A-NEXT: v_mov_b32_e32 v2, v3545; GFX90A-NEXT: v_mov_b32_e32 v3, v0546; GFX90A-NEXT: global_store_dwordx3 v4, v[2:4], s[16:17]547; GFX90A-NEXT: s_waitcnt vmcnt(0)548; GFX90A-NEXT: s_setpc_b64 s[30:31]549;550; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_4_u:551; GFX942: ; %bb.0:552; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)553; GFX942-NEXT: ;;#ASMSTART554; GFX942-NEXT: ; def v[0:3]555; GFX942-NEXT: ;;#ASMEND556; GFX942-NEXT: v_mov_b32_e32 v4, 0557; GFX942-NEXT: v_mov_b32_e32 v2, v3558; GFX942-NEXT: v_mov_b32_e32 v3, v0559; GFX942-NEXT: global_store_dwordx3 v4, v[2:4], s[0:1]560; GFX942-NEXT: s_waitcnt vmcnt(0)561; GFX942-NEXT: s_setpc_b64 s[30:31]562 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()563 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()564 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 poison>565 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16566 ret void567}568 569define void @v_shuffle_v3p3_v4p3__7_5_u(ptr addrspace(1) inreg %ptr) {570; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_5_u:571; GFX900: ; %bb.0:572; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)573; GFX900-NEXT: v_mov_b32_e32 v5, 0574; GFX900-NEXT: ;;#ASMSTART575; GFX900-NEXT: ; def v[0:3]576; GFX900-NEXT: ;;#ASMEND577; GFX900-NEXT: v_mov_b32_e32 v4, v1578; GFX900-NEXT: global_store_dwordx3 v5, v[3:5], s[16:17]579; GFX900-NEXT: s_waitcnt vmcnt(0)580; GFX900-NEXT: s_setpc_b64 s[30:31]581;582; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_5_u:583; GFX90A: ; %bb.0:584; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)585; GFX90A-NEXT: ;;#ASMSTART586; GFX90A-NEXT: ; def v[0:3]587; GFX90A-NEXT: ;;#ASMEND588; GFX90A-NEXT: v_mov_b32_e32 v4, 0589; GFX90A-NEXT: v_mov_b32_e32 v0, v3590; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]591; GFX90A-NEXT: s_waitcnt vmcnt(0)592; GFX90A-NEXT: s_setpc_b64 s[30:31]593;594; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_5_u:595; GFX942: ; %bb.0:596; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)597; GFX942-NEXT: ;;#ASMSTART598; GFX942-NEXT: ; def v[0:3]599; GFX942-NEXT: ;;#ASMEND600; GFX942-NEXT: v_mov_b32_e32 v4, 0601; GFX942-NEXT: v_mov_b32_e32 v0, v3602; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]603; GFX942-NEXT: s_waitcnt vmcnt(0)604; GFX942-NEXT: s_setpc_b64 s[30:31]605 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()606 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()607 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 poison>608 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16609 ret void610}611 612define void @v_shuffle_v3p3_v4p3__7_6_u(ptr addrspace(1) inreg %ptr) {613; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_6_u:614; GFX900: ; %bb.0:615; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)616; GFX900-NEXT: v_mov_b32_e32 v5, 0617; GFX900-NEXT: ;;#ASMSTART618; GFX900-NEXT: ; def v[0:3]619; GFX900-NEXT: ;;#ASMEND620; GFX900-NEXT: v_mov_b32_e32 v4, v2621; GFX900-NEXT: global_store_dwordx3 v5, v[3:5], s[16:17]622; GFX900-NEXT: s_waitcnt vmcnt(0)623; GFX900-NEXT: s_setpc_b64 s[30:31]624;625; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_6_u:626; GFX90A: ; %bb.0:627; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)628; GFX90A-NEXT: ;;#ASMSTART629; GFX90A-NEXT: ; def v[0:3]630; GFX90A-NEXT: ;;#ASMEND631; GFX90A-NEXT: v_mov_b32_e32 v4, 0632; GFX90A-NEXT: v_mov_b32_e32 v0, v3633; GFX90A-NEXT: v_mov_b32_e32 v1, v2634; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]635; GFX90A-NEXT: s_waitcnt vmcnt(0)636; GFX90A-NEXT: s_setpc_b64 s[30:31]637;638; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_6_u:639; GFX942: ; %bb.0:640; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)641; GFX942-NEXT: ;;#ASMSTART642; GFX942-NEXT: ; def v[0:3]643; GFX942-NEXT: ;;#ASMEND644; GFX942-NEXT: v_mov_b32_e32 v4, 0645; GFX942-NEXT: v_mov_b32_e32 v0, v3646; GFX942-NEXT: v_mov_b32_e32 v1, v2647; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]648; GFX942-NEXT: s_waitcnt vmcnt(0)649; GFX942-NEXT: s_setpc_b64 s[30:31]650 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()651 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()652 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 poison>653 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16654 ret void655}656 657define void @v_shuffle_v3p3_v4p3__7_7_u(ptr addrspace(1) inreg %ptr) {658; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_7_u:659; GFX900: ; %bb.0:660; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)661; GFX900-NEXT: v_mov_b32_e32 v5, 0662; GFX900-NEXT: ;;#ASMSTART663; GFX900-NEXT: ; def v[0:3]664; GFX900-NEXT: ;;#ASMEND665; GFX900-NEXT: v_mov_b32_e32 v4, v3666; GFX900-NEXT: global_store_dwordx3 v5, v[3:5], s[16:17]667; GFX900-NEXT: s_waitcnt vmcnt(0)668; GFX900-NEXT: s_setpc_b64 s[30:31]669;670; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_7_u:671; GFX90A: ; %bb.0:672; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)673; GFX90A-NEXT: ;;#ASMSTART674; GFX90A-NEXT: ; def v[0:3]675; GFX90A-NEXT: ;;#ASMEND676; GFX90A-NEXT: v_mov_b32_e32 v4, 0677; GFX90A-NEXT: v_mov_b32_e32 v2, v3678; GFX90A-NEXT: global_store_dwordx3 v4, v[2:4], s[16:17]679; GFX90A-NEXT: s_waitcnt vmcnt(0)680; GFX90A-NEXT: s_setpc_b64 s[30:31]681;682; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_7_u:683; GFX942: ; %bb.0:684; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)685; GFX942-NEXT: ;;#ASMSTART686; GFX942-NEXT: ; def v[0:3]687; GFX942-NEXT: ;;#ASMEND688; GFX942-NEXT: v_mov_b32_e32 v4, 0689; GFX942-NEXT: v_mov_b32_e32 v2, v3690; GFX942-NEXT: global_store_dwordx3 v4, v[2:4], s[0:1]691; GFX942-NEXT: s_waitcnt vmcnt(0)692; GFX942-NEXT: s_setpc_b64 s[30:31]693 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()694 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()695 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 poison>696 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16697 ret void698}699 700define void @v_shuffle_v3p3_v4p3__7_7_0(ptr addrspace(1) inreg %ptr) {701; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_7_0:702; GFX900: ; %bb.0:703; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)704; GFX900-NEXT: v_mov_b32_e32 v9, 0705; GFX900-NEXT: ;;#ASMSTART706; GFX900-NEXT: ; def v[0:3]707; GFX900-NEXT: ;;#ASMEND708; GFX900-NEXT: v_mov_b32_e32 v4, v3709; GFX900-NEXT: ;;#ASMSTART710; GFX900-NEXT: ; def v[5:8]711; GFX900-NEXT: ;;#ASMEND712; GFX900-NEXT: global_store_dwordx3 v9, v[3:5], s[16:17]713; GFX900-NEXT: s_waitcnt vmcnt(0)714; GFX900-NEXT: s_setpc_b64 s[30:31]715;716; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_7_0:717; GFX90A: ; %bb.0:718; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)719; GFX90A-NEXT: ;;#ASMSTART720; GFX90A-NEXT: ; def v[0:3]721; GFX90A-NEXT: ;;#ASMEND722; GFX90A-NEXT: v_mov_b32_e32 v8, 0723; GFX90A-NEXT: v_mov_b32_e32 v2, v3724; GFX90A-NEXT: ;;#ASMSTART725; GFX90A-NEXT: ; def v[4:7]726; GFX90A-NEXT: ;;#ASMEND727; GFX90A-NEXT: global_store_dwordx3 v8, v[2:4], s[16:17]728; GFX90A-NEXT: s_waitcnt vmcnt(0)729; GFX90A-NEXT: s_setpc_b64 s[30:31]730;731; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_7_0:732; GFX942: ; %bb.0:733; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)734; GFX942-NEXT: ;;#ASMSTART735; GFX942-NEXT: ; def v[0:3]736; GFX942-NEXT: ;;#ASMEND737; GFX942-NEXT: v_mov_b32_e32 v8, 0738; GFX942-NEXT: v_mov_b32_e32 v2, v3739; GFX942-NEXT: ;;#ASMSTART740; GFX942-NEXT: ; def v[4:7]741; GFX942-NEXT: ;;#ASMEND742; GFX942-NEXT: global_store_dwordx3 v8, v[2:4], s[0:1]743; GFX942-NEXT: s_waitcnt vmcnt(0)744; GFX942-NEXT: s_setpc_b64 s[30:31]745 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()746 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()747 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 0>748 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16749 ret void750}751 752define void @v_shuffle_v3p3_v4p3__7_7_1(ptr addrspace(1) inreg %ptr) {753; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_7_1:754; GFX900: ; %bb.0:755; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)756; GFX900-NEXT: ;;#ASMSTART757; GFX900-NEXT: ; def v[4:7]758; GFX900-NEXT: ;;#ASMEND759; GFX900-NEXT: v_mov_b32_e32 v8, 0760; GFX900-NEXT: ;;#ASMSTART761; GFX900-NEXT: ; def v[0:3]762; GFX900-NEXT: ;;#ASMEND763; GFX900-NEXT: v_mov_b32_e32 v4, v3764; GFX900-NEXT: global_store_dwordx3 v8, v[3:5], s[16:17]765; GFX900-NEXT: s_waitcnt vmcnt(0)766; GFX900-NEXT: s_setpc_b64 s[30:31]767;768; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_7_1:769; GFX90A: ; %bb.0:770; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)771; GFX90A-NEXT: ;;#ASMSTART772; GFX90A-NEXT: ; def v[4:7]773; GFX90A-NEXT: ;;#ASMEND774; GFX90A-NEXT: ;;#ASMSTART775; GFX90A-NEXT: ; def v[0:3]776; GFX90A-NEXT: ;;#ASMEND777; GFX90A-NEXT: v_mov_b32_e32 v8, 0778; GFX90A-NEXT: v_mov_b32_e32 v2, v3779; GFX90A-NEXT: v_mov_b32_e32 v4, v5780; GFX90A-NEXT: global_store_dwordx3 v8, v[2:4], s[16:17]781; GFX90A-NEXT: s_waitcnt vmcnt(0)782; GFX90A-NEXT: s_setpc_b64 s[30:31]783;784; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_7_1:785; GFX942: ; %bb.0:786; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)787; GFX942-NEXT: ;;#ASMSTART788; GFX942-NEXT: ; def v[4:7]789; GFX942-NEXT: ;;#ASMEND790; GFX942-NEXT: ;;#ASMSTART791; GFX942-NEXT: ; def v[0:3]792; GFX942-NEXT: ;;#ASMEND793; GFX942-NEXT: v_mov_b32_e32 v8, 0794; GFX942-NEXT: v_mov_b32_e32 v2, v3795; GFX942-NEXT: v_mov_b32_e32 v4, v5796; GFX942-NEXT: global_store_dwordx3 v8, v[2:4], s[0:1]797; GFX942-NEXT: s_waitcnt vmcnt(0)798; GFX942-NEXT: s_setpc_b64 s[30:31]799 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()800 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()801 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 1>802 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16803 ret void804}805 806define void @v_shuffle_v3p3_v4p3__7_7_2(ptr addrspace(1) inreg %ptr) {807; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_7_2:808; GFX900: ; %bb.0:809; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)810; GFX900-NEXT: ;;#ASMSTART811; GFX900-NEXT: ; def v[3:6]812; GFX900-NEXT: ;;#ASMEND813; GFX900-NEXT: v_mov_b32_e32 v7, 0814; GFX900-NEXT: ;;#ASMSTART815; GFX900-NEXT: ; def v[0:3]816; GFX900-NEXT: ;;#ASMEND817; GFX900-NEXT: v_mov_b32_e32 v4, v3818; GFX900-NEXT: global_store_dwordx3 v7, v[3:5], s[16:17]819; GFX900-NEXT: s_waitcnt vmcnt(0)820; GFX900-NEXT: s_setpc_b64 s[30:31]821;822; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_7_2:823; GFX90A: ; %bb.0:824; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)825; GFX90A-NEXT: ;;#ASMSTART826; GFX90A-NEXT: ; def v[2:5]827; GFX90A-NEXT: ;;#ASMEND828; GFX90A-NEXT: ;;#ASMSTART829; GFX90A-NEXT: ; def v[0:3]830; GFX90A-NEXT: ;;#ASMEND831; GFX90A-NEXT: v_mov_b32_e32 v6, 0832; GFX90A-NEXT: v_mov_b32_e32 v2, v3833; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]834; GFX90A-NEXT: s_waitcnt vmcnt(0)835; GFX90A-NEXT: s_setpc_b64 s[30:31]836;837; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_7_2:838; GFX942: ; %bb.0:839; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)840; GFX942-NEXT: ;;#ASMSTART841; GFX942-NEXT: ; def v[2:5]842; GFX942-NEXT: ;;#ASMEND843; GFX942-NEXT: v_mov_b32_e32 v6, 0844; GFX942-NEXT: ;;#ASMSTART845; GFX942-NEXT: ; def v[0:3]846; GFX942-NEXT: ;;#ASMEND847; GFX942-NEXT: s_nop 0848; GFX942-NEXT: v_mov_b32_e32 v2, v3849; GFX942-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1]850; GFX942-NEXT: s_waitcnt vmcnt(0)851; GFX942-NEXT: s_setpc_b64 s[30:31]852 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()853 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()854 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 2>855 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16856 ret void857}858 859define void @v_shuffle_v3p3_v4p3__7_7_3(ptr addrspace(1) inreg %ptr) {860; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_7_3:861; GFX900: ; %bb.0:862; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)863; GFX900-NEXT: ;;#ASMSTART864; GFX900-NEXT: ; def v[2:5]865; GFX900-NEXT: ;;#ASMEND866; GFX900-NEXT: v_mov_b32_e32 v6, 0867; GFX900-NEXT: ;;#ASMSTART868; GFX900-NEXT: ; def v[0:3]869; GFX900-NEXT: ;;#ASMEND870; GFX900-NEXT: v_mov_b32_e32 v4, v3871; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]872; GFX900-NEXT: s_waitcnt vmcnt(0)873; GFX900-NEXT: s_setpc_b64 s[30:31]874;875; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_7_3:876; GFX90A: ; %bb.0:877; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)878; GFX90A-NEXT: ;;#ASMSTART879; GFX90A-NEXT: ; def v[2:5]880; GFX90A-NEXT: ;;#ASMEND881; GFX90A-NEXT: ;;#ASMSTART882; GFX90A-NEXT: ; def v[0:3]883; GFX90A-NEXT: ;;#ASMEND884; GFX90A-NEXT: v_mov_b32_e32 v6, 0885; GFX90A-NEXT: v_mov_b32_e32 v2, v3886; GFX90A-NEXT: v_mov_b32_e32 v4, v5887; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]888; GFX90A-NEXT: s_waitcnt vmcnt(0)889; GFX90A-NEXT: s_setpc_b64 s[30:31]890;891; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_7_3:892; GFX942: ; %bb.0:893; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)894; GFX942-NEXT: ;;#ASMSTART895; GFX942-NEXT: ; def v[2:5]896; GFX942-NEXT: ;;#ASMEND897; GFX942-NEXT: v_mov_b32_e32 v6, 0898; GFX942-NEXT: ;;#ASMSTART899; GFX942-NEXT: ; def v[0:3]900; GFX942-NEXT: ;;#ASMEND901; GFX942-NEXT: v_mov_b32_e32 v4, v5902; GFX942-NEXT: v_mov_b32_e32 v2, v3903; GFX942-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1]904; GFX942-NEXT: s_waitcnt vmcnt(0)905; GFX942-NEXT: s_setpc_b64 s[30:31]906 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()907 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()908 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 3>909 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16910 ret void911}912 913define void @v_shuffle_v3p3_v4p3__7_7_4(ptr addrspace(1) inreg %ptr) {914; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_7_4:915; GFX900: ; %bb.0:916; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)917; GFX900-NEXT: v_mov_b32_e32 v6, 0918; GFX900-NEXT: ;;#ASMSTART919; GFX900-NEXT: ; def v[0:3]920; GFX900-NEXT: ;;#ASMEND921; GFX900-NEXT: v_mov_b32_e32 v4, v3922; GFX900-NEXT: v_mov_b32_e32 v5, v0923; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]924; GFX900-NEXT: s_waitcnt vmcnt(0)925; GFX900-NEXT: s_setpc_b64 s[30:31]926;927; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_7_4:928; GFX90A: ; %bb.0:929; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)930; GFX90A-NEXT: ;;#ASMSTART931; GFX90A-NEXT: ; def v[0:3]932; GFX90A-NEXT: ;;#ASMEND933; GFX90A-NEXT: v_mov_b32_e32 v5, 0934; GFX90A-NEXT: v_mov_b32_e32 v2, v3935; GFX90A-NEXT: v_mov_b32_e32 v4, v0936; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]937; GFX90A-NEXT: s_waitcnt vmcnt(0)938; GFX90A-NEXT: s_setpc_b64 s[30:31]939;940; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_7_4:941; GFX942: ; %bb.0:942; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)943; GFX942-NEXT: ;;#ASMSTART944; GFX942-NEXT: ; def v[0:3]945; GFX942-NEXT: ;;#ASMEND946; GFX942-NEXT: v_mov_b32_e32 v5, 0947; GFX942-NEXT: v_mov_b32_e32 v2, v3948; GFX942-NEXT: v_mov_b32_e32 v4, v0949; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]950; GFX942-NEXT: s_waitcnt vmcnt(0)951; GFX942-NEXT: s_setpc_b64 s[30:31]952 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()953 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()954 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 4>955 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16956 ret void957}958 959define void @v_shuffle_v3p3_v4p3__7_7_5(ptr addrspace(1) inreg %ptr) {960; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_7_5:961; GFX900: ; %bb.0:962; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)963; GFX900-NEXT: v_mov_b32_e32 v6, 0964; GFX900-NEXT: ;;#ASMSTART965; GFX900-NEXT: ; def v[0:3]966; GFX900-NEXT: ;;#ASMEND967; GFX900-NEXT: v_mov_b32_e32 v4, v3968; GFX900-NEXT: v_mov_b32_e32 v5, v1969; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]970; GFX900-NEXT: s_waitcnt vmcnt(0)971; GFX900-NEXT: s_setpc_b64 s[30:31]972;973; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_7_5:974; GFX90A: ; %bb.0:975; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)976; GFX90A-NEXT: ;;#ASMSTART977; GFX90A-NEXT: ; def v[0:3]978; GFX90A-NEXT: ;;#ASMEND979; GFX90A-NEXT: v_mov_b32_e32 v5, 0980; GFX90A-NEXT: v_mov_b32_e32 v2, v3981; GFX90A-NEXT: v_mov_b32_e32 v4, v1982; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]983; GFX90A-NEXT: s_waitcnt vmcnt(0)984; GFX90A-NEXT: s_setpc_b64 s[30:31]985;986; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_7_5:987; GFX942: ; %bb.0:988; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)989; GFX942-NEXT: ;;#ASMSTART990; GFX942-NEXT: ; def v[0:3]991; GFX942-NEXT: ;;#ASMEND992; GFX942-NEXT: v_mov_b32_e32 v5, 0993; GFX942-NEXT: v_mov_b32_e32 v2, v3994; GFX942-NEXT: v_mov_b32_e32 v4, v1995; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]996; GFX942-NEXT: s_waitcnt vmcnt(0)997; GFX942-NEXT: s_setpc_b64 s[30:31]998 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()999 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1000 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 5>1001 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161002 ret void1003}1004 1005define void @v_shuffle_v3p3_v4p3__7_7_6(ptr addrspace(1) inreg %ptr) {1006; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_7_6:1007; GFX900: ; %bb.0:1008; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1009; GFX900-NEXT: v_mov_b32_e32 v6, 01010; GFX900-NEXT: ;;#ASMSTART1011; GFX900-NEXT: ; def v[0:3]1012; GFX900-NEXT: ;;#ASMEND1013; GFX900-NEXT: v_mov_b32_e32 v4, v31014; GFX900-NEXT: v_mov_b32_e32 v5, v21015; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]1016; GFX900-NEXT: s_waitcnt vmcnt(0)1017; GFX900-NEXT: s_setpc_b64 s[30:31]1018;1019; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_7_6:1020; GFX90A: ; %bb.0:1021; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1022; GFX90A-NEXT: ;;#ASMSTART1023; GFX90A-NEXT: ; def v[0:3]1024; GFX90A-NEXT: ;;#ASMEND1025; GFX90A-NEXT: v_mov_b32_e32 v4, 01026; GFX90A-NEXT: v_mov_b32_e32 v0, v31027; GFX90A-NEXT: v_mov_b32_e32 v1, v31028; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]1029; GFX90A-NEXT: s_waitcnt vmcnt(0)1030; GFX90A-NEXT: s_setpc_b64 s[30:31]1031;1032; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_7_6:1033; GFX942: ; %bb.0:1034; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1035; GFX942-NEXT: ;;#ASMSTART1036; GFX942-NEXT: ; def v[0:3]1037; GFX942-NEXT: ;;#ASMEND1038; GFX942-NEXT: v_mov_b32_e32 v4, 01039; GFX942-NEXT: v_mov_b32_e32 v0, v31040; GFX942-NEXT: v_mov_b32_e32 v1, v31041; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]1042; GFX942-NEXT: s_waitcnt vmcnt(0)1043; GFX942-NEXT: s_setpc_b64 s[30:31]1044 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1045 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1046 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 6>1047 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161048 ret void1049}1050 1051define void @v_shuffle_v3p3_v4p3__7_7_7(ptr addrspace(1) inreg %ptr) {1052; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_7_7:1053; GFX900: ; %bb.0:1054; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1055; GFX900-NEXT: v_mov_b32_e32 v6, 01056; GFX900-NEXT: ;;#ASMSTART1057; GFX900-NEXT: ; def v[0:3]1058; GFX900-NEXT: ;;#ASMEND1059; GFX900-NEXT: v_mov_b32_e32 v4, v31060; GFX900-NEXT: v_mov_b32_e32 v5, v31061; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], 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_v3p3_v4p3__7_7_7:1066; GFX90A: ; %bb.0:1067; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1068; GFX90A-NEXT: ;;#ASMSTART1069; GFX90A-NEXT: ; def v[0:3]1070; GFX90A-NEXT: ;;#ASMEND1071; GFX90A-NEXT: v_mov_b32_e32 v5, 01072; GFX90A-NEXT: v_mov_b32_e32 v2, v31073; GFX90A-NEXT: v_mov_b32_e32 v4, v31074; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]1075; GFX90A-NEXT: s_waitcnt vmcnt(0)1076; GFX90A-NEXT: s_setpc_b64 s[30:31]1077;1078; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_7_7:1079; GFX942: ; %bb.0:1080; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1081; GFX942-NEXT: ;;#ASMSTART1082; GFX942-NEXT: ; def v[0:3]1083; GFX942-NEXT: ;;#ASMEND1084; GFX942-NEXT: v_mov_b32_e32 v5, 01085; GFX942-NEXT: v_mov_b32_e32 v2, v31086; GFX942-NEXT: v_mov_b32_e32 v4, v31087; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]1088; GFX942-NEXT: s_waitcnt vmcnt(0)1089; GFX942-NEXT: s_setpc_b64 s[30:31]1090 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1091 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1092 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 7>1093 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161094 ret void1095}1096 1097define void @v_shuffle_v3p3_v4p3__u_0_0(ptr addrspace(1) inreg %ptr) {1098; GFX900-LABEL: v_shuffle_v3p3_v4p3__u_0_0:1099; GFX900: ; %bb.0:1100; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1101; GFX900-NEXT: ;;#ASMSTART1102; GFX900-NEXT: ; def v[1:4]1103; GFX900-NEXT: ;;#ASMEND1104; GFX900-NEXT: v_mov_b32_e32 v0, 01105; GFX900-NEXT: v_mov_b32_e32 v2, v11106; GFX900-NEXT: global_store_dwordx3 v0, v[0:2], s[16:17]1107; GFX900-NEXT: s_waitcnt vmcnt(0)1108; GFX900-NEXT: s_setpc_b64 s[30:31]1109;1110; GFX90A-LABEL: v_shuffle_v3p3_v4p3__u_0_0:1111; GFX90A: ; %bb.0:1112; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1113; GFX90A-NEXT: v_mov_b32_e32 v0, 01114; GFX90A-NEXT: ;;#ASMSTART1115; GFX90A-NEXT: ; def v[2:5]1116; GFX90A-NEXT: ;;#ASMEND1117; GFX90A-NEXT: v_mov_b32_e32 v1, v21118; GFX90A-NEXT: global_store_dwordx3 v0, v[0:2], s[16:17]1119; GFX90A-NEXT: s_waitcnt vmcnt(0)1120; GFX90A-NEXT: s_setpc_b64 s[30:31]1121;1122; GFX942-LABEL: v_shuffle_v3p3_v4p3__u_0_0:1123; GFX942: ; %bb.0:1124; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1125; GFX942-NEXT: v_mov_b32_e32 v0, 01126; GFX942-NEXT: ;;#ASMSTART1127; GFX942-NEXT: ; def v[2:5]1128; GFX942-NEXT: ;;#ASMEND1129; GFX942-NEXT: s_nop 01130; GFX942-NEXT: v_mov_b32_e32 v1, v21131; GFX942-NEXT: global_store_dwordx3 v0, v[0:2], s[0:1]1132; GFX942-NEXT: s_waitcnt vmcnt(0)1133; GFX942-NEXT: s_setpc_b64 s[30:31]1134 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1135 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 poison, i32 0, i32 0>1136 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161137 ret void1138}1139 1140define void @v_shuffle_v3p3_v4p3__0_0_0(ptr addrspace(1) inreg %ptr) {1141; GFX900-LABEL: v_shuffle_v3p3_v4p3__0_0_0:1142; GFX900: ; %bb.0:1143; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1144; GFX900-NEXT: ;;#ASMSTART1145; GFX900-NEXT: ; def v[0:3]1146; GFX900-NEXT: ;;#ASMEND1147; GFX900-NEXT: v_mov_b32_e32 v4, 01148; GFX900-NEXT: v_mov_b32_e32 v1, v01149; GFX900-NEXT: v_mov_b32_e32 v2, v01150; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]1151; GFX900-NEXT: s_waitcnt vmcnt(0)1152; GFX900-NEXT: s_setpc_b64 s[30:31]1153;1154; GFX90A-LABEL: v_shuffle_v3p3_v4p3__0_0_0:1155; GFX90A: ; %bb.0:1156; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1157; GFX90A-NEXT: ;;#ASMSTART1158; GFX90A-NEXT: ; def v[0:3]1159; GFX90A-NEXT: ;;#ASMEND1160; GFX90A-NEXT: v_mov_b32_e32 v4, 01161; GFX90A-NEXT: v_mov_b32_e32 v1, v01162; GFX90A-NEXT: v_mov_b32_e32 v2, v01163; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]1164; GFX90A-NEXT: s_waitcnt vmcnt(0)1165; GFX90A-NEXT: s_setpc_b64 s[30:31]1166;1167; GFX942-LABEL: v_shuffle_v3p3_v4p3__0_0_0:1168; GFX942: ; %bb.0:1169; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1170; GFX942-NEXT: ;;#ASMSTART1171; GFX942-NEXT: ; def v[0:3]1172; GFX942-NEXT: ;;#ASMEND1173; GFX942-NEXT: v_mov_b32_e32 v4, 01174; GFX942-NEXT: v_mov_b32_e32 v1, v01175; GFX942-NEXT: v_mov_b32_e32 v2, v01176; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]1177; GFX942-NEXT: s_waitcnt vmcnt(0)1178; GFX942-NEXT: s_setpc_b64 s[30:31]1179 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1180 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> zeroinitializer1181 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161182 ret void1183}1184 1185define void @v_shuffle_v3p3_v4p3__1_0_0(ptr addrspace(1) inreg %ptr) {1186; GFX900-LABEL: v_shuffle_v3p3_v4p3__1_0_0:1187; GFX900: ; %bb.0:1188; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1189; GFX900-NEXT: ;;#ASMSTART1190; GFX900-NEXT: ; def v[0:3]1191; GFX900-NEXT: ;;#ASMEND1192; GFX900-NEXT: v_mov_b32_e32 v4, 01193; GFX900-NEXT: v_mov_b32_e32 v2, v01194; GFX900-NEXT: v_mov_b32_e32 v3, v01195; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]1196; GFX900-NEXT: s_waitcnt vmcnt(0)1197; GFX900-NEXT: s_setpc_b64 s[30:31]1198;1199; GFX90A-LABEL: v_shuffle_v3p3_v4p3__1_0_0:1200; GFX90A: ; %bb.0:1201; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1202; GFX90A-NEXT: v_mov_b32_e32 v6, 01203; GFX90A-NEXT: ;;#ASMSTART1204; GFX90A-NEXT: ; def v[2:5]1205; GFX90A-NEXT: ;;#ASMEND1206; GFX90A-NEXT: v_mov_b32_e32 v0, v31207; GFX90A-NEXT: v_mov_b32_e32 v1, v21208; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]1209; GFX90A-NEXT: s_waitcnt vmcnt(0)1210; GFX90A-NEXT: s_setpc_b64 s[30:31]1211;1212; GFX942-LABEL: v_shuffle_v3p3_v4p3__1_0_0:1213; GFX942: ; %bb.0:1214; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1215; GFX942-NEXT: v_mov_b32_e32 v6, 01216; GFX942-NEXT: ;;#ASMSTART1217; GFX942-NEXT: ; def v[2:5]1218; GFX942-NEXT: ;;#ASMEND1219; GFX942-NEXT: s_nop 01220; GFX942-NEXT: v_mov_b32_e32 v0, v31221; GFX942-NEXT: v_mov_b32_e32 v1, v21222; GFX942-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1]1223; GFX942-NEXT: s_waitcnt vmcnt(0)1224; GFX942-NEXT: s_setpc_b64 s[30:31]1225 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1226 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 0, i32 0>1227 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161228 ret void1229}1230 1231define void @v_shuffle_v3p3_v4p3__2_0_0(ptr addrspace(1) inreg %ptr) {1232; GFX900-LABEL: v_shuffle_v3p3_v4p3__2_0_0:1233; GFX900: ; %bb.0:1234; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1235; GFX900-NEXT: ;;#ASMSTART1236; GFX900-NEXT: ; def v[0:3]1237; GFX900-NEXT: ;;#ASMEND1238; GFX900-NEXT: v_mov_b32_e32 v5, 01239; GFX900-NEXT: v_mov_b32_e32 v3, v01240; GFX900-NEXT: v_mov_b32_e32 v4, v01241; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]1242; GFX900-NEXT: s_waitcnt vmcnt(0)1243; GFX900-NEXT: s_setpc_b64 s[30:31]1244;1245; GFX90A-LABEL: v_shuffle_v3p3_v4p3__2_0_0:1246; GFX90A: ; %bb.0:1247; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1248; GFX90A-NEXT: ;;#ASMSTART1249; GFX90A-NEXT: ; def v[0:3]1250; GFX90A-NEXT: ;;#ASMEND1251; GFX90A-NEXT: v_mov_b32_e32 v5, 01252; GFX90A-NEXT: v_mov_b32_e32 v3, v01253; GFX90A-NEXT: v_mov_b32_e32 v4, v01254; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]1255; GFX90A-NEXT: s_waitcnt vmcnt(0)1256; GFX90A-NEXT: s_setpc_b64 s[30:31]1257;1258; GFX942-LABEL: v_shuffle_v3p3_v4p3__2_0_0:1259; GFX942: ; %bb.0:1260; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1261; GFX942-NEXT: ;;#ASMSTART1262; GFX942-NEXT: ; def v[0:3]1263; GFX942-NEXT: ;;#ASMEND1264; GFX942-NEXT: v_mov_b32_e32 v5, 01265; GFX942-NEXT: v_mov_b32_e32 v3, v01266; GFX942-NEXT: v_mov_b32_e32 v4, v01267; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]1268; GFX942-NEXT: s_waitcnt vmcnt(0)1269; GFX942-NEXT: s_setpc_b64 s[30:31]1270 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1271 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 0, i32 0>1272 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161273 ret void1274}1275 1276define void @v_shuffle_v3p3_v4p3__3_0_0(ptr addrspace(1) inreg %ptr) {1277; GFX900-LABEL: v_shuffle_v3p3_v4p3__3_0_0:1278; GFX900: ; %bb.0:1279; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1280; GFX900-NEXT: v_mov_b32_e32 v6, 01281; GFX900-NEXT: ;;#ASMSTART1282; GFX900-NEXT: ; def v[0:3]1283; GFX900-NEXT: ;;#ASMEND1284; GFX900-NEXT: v_mov_b32_e32 v4, v01285; GFX900-NEXT: v_mov_b32_e32 v5, v01286; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]1287; GFX900-NEXT: s_waitcnt vmcnt(0)1288; GFX900-NEXT: s_setpc_b64 s[30:31]1289;1290; GFX90A-LABEL: v_shuffle_v3p3_v4p3__3_0_0:1291; GFX90A: ; %bb.0:1292; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1293; GFX90A-NEXT: v_mov_b32_e32 v6, 01294; GFX90A-NEXT: ;;#ASMSTART1295; GFX90A-NEXT: ; def v[2:5]1296; GFX90A-NEXT: ;;#ASMEND1297; GFX90A-NEXT: v_mov_b32_e32 v0, v51298; GFX90A-NEXT: v_mov_b32_e32 v1, v21299; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]1300; GFX90A-NEXT: s_waitcnt vmcnt(0)1301; GFX90A-NEXT: s_setpc_b64 s[30:31]1302;1303; GFX942-LABEL: v_shuffle_v3p3_v4p3__3_0_0:1304; GFX942: ; %bb.0:1305; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1306; GFX942-NEXT: v_mov_b32_e32 v6, 01307; GFX942-NEXT: ;;#ASMSTART1308; GFX942-NEXT: ; def v[2:5]1309; GFX942-NEXT: ;;#ASMEND1310; GFX942-NEXT: s_nop 01311; GFX942-NEXT: v_mov_b32_e32 v0, v51312; GFX942-NEXT: v_mov_b32_e32 v1, v21313; GFX942-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1]1314; GFX942-NEXT: s_waitcnt vmcnt(0)1315; GFX942-NEXT: s_setpc_b64 s[30:31]1316 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1317 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 3, i32 0, i32 0>1318 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161319 ret void1320}1321 1322define void @v_shuffle_v3p3_v4p3__4_0_0(ptr addrspace(1) inreg %ptr) {1323; GFX900-LABEL: v_shuffle_v3p3_v4p3__4_0_0:1324; GFX900: ; %bb.0:1325; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1326; GFX900-NEXT: ;;#ASMSTART1327; GFX900-NEXT: ; def v[1:4]1328; GFX900-NEXT: ;;#ASMEND1329; GFX900-NEXT: v_mov_b32_e32 v0, 01330; GFX900-NEXT: v_mov_b32_e32 v2, v11331; GFX900-NEXT: global_store_dwordx3 v0, v[0:2], s[16:17]1332; GFX900-NEXT: s_waitcnt vmcnt(0)1333; GFX900-NEXT: s_setpc_b64 s[30:31]1334;1335; GFX90A-LABEL: v_shuffle_v3p3_v4p3__4_0_0:1336; GFX90A: ; %bb.0:1337; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1338; GFX90A-NEXT: v_mov_b32_e32 v0, 01339; GFX90A-NEXT: ;;#ASMSTART1340; GFX90A-NEXT: ; def v[2:5]1341; GFX90A-NEXT: ;;#ASMEND1342; GFX90A-NEXT: v_mov_b32_e32 v1, v21343; GFX90A-NEXT: global_store_dwordx3 v0, v[0:2], s[16:17]1344; GFX90A-NEXT: s_waitcnt vmcnt(0)1345; GFX90A-NEXT: s_setpc_b64 s[30:31]1346;1347; GFX942-LABEL: v_shuffle_v3p3_v4p3__4_0_0:1348; GFX942: ; %bb.0:1349; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1350; GFX942-NEXT: v_mov_b32_e32 v0, 01351; GFX942-NEXT: ;;#ASMSTART1352; GFX942-NEXT: ; def v[2:5]1353; GFX942-NEXT: ;;#ASMEND1354; GFX942-NEXT: s_nop 01355; GFX942-NEXT: v_mov_b32_e32 v1, v21356; GFX942-NEXT: global_store_dwordx3 v0, v[0:2], s[0:1]1357; GFX942-NEXT: s_waitcnt vmcnt(0)1358; GFX942-NEXT: s_setpc_b64 s[30:31]1359 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1360 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 4, i32 0, i32 0>1361 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161362 ret void1363}1364 1365define void @v_shuffle_v3p3_v4p3__5_0_0(ptr addrspace(1) inreg %ptr) {1366; GFX900-LABEL: v_shuffle_v3p3_v4p3__5_0_0:1367; GFX900: ; %bb.0:1368; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1369; GFX900-NEXT: ;;#ASMSTART1370; GFX900-NEXT: ; def v[0:3]1371; GFX900-NEXT: ;;#ASMEND1372; GFX900-NEXT: ;;#ASMSTART1373; GFX900-NEXT: ; def v[1:4]1374; GFX900-NEXT: ;;#ASMEND1375; GFX900-NEXT: v_mov_b32_e32 v5, 01376; GFX900-NEXT: v_mov_b32_e32 v3, v01377; GFX900-NEXT: v_mov_b32_e32 v4, v01378; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]1379; GFX900-NEXT: s_waitcnt vmcnt(0)1380; GFX900-NEXT: s_setpc_b64 s[30:31]1381;1382; GFX90A-LABEL: v_shuffle_v3p3_v4p3__5_0_0:1383; GFX90A: ; %bb.0:1384; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1385; GFX90A-NEXT: ;;#ASMSTART1386; GFX90A-NEXT: ; def v[2:5]1387; GFX90A-NEXT: ;;#ASMEND1388; GFX90A-NEXT: v_mov_b32_e32 v8, 01389; GFX90A-NEXT: ;;#ASMSTART1390; GFX90A-NEXT: ; def v[4:7]1391; GFX90A-NEXT: ;;#ASMEND1392; GFX90A-NEXT: v_mov_b32_e32 v0, v51393; GFX90A-NEXT: v_mov_b32_e32 v1, v21394; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]1395; GFX90A-NEXT: s_waitcnt vmcnt(0)1396; GFX90A-NEXT: s_setpc_b64 s[30:31]1397;1398; GFX942-LABEL: v_shuffle_v3p3_v4p3__5_0_0:1399; GFX942: ; %bb.0:1400; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1401; GFX942-NEXT: ;;#ASMSTART1402; GFX942-NEXT: ; def v[2:5]1403; GFX942-NEXT: ;;#ASMEND1404; GFX942-NEXT: v_mov_b32_e32 v8, 01405; GFX942-NEXT: ;;#ASMSTART1406; GFX942-NEXT: ; def v[4:7]1407; GFX942-NEXT: ;;#ASMEND1408; GFX942-NEXT: v_mov_b32_e32 v1, v21409; GFX942-NEXT: v_mov_b32_e32 v0, v51410; GFX942-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1]1411; GFX942-NEXT: s_waitcnt vmcnt(0)1412; GFX942-NEXT: s_setpc_b64 s[30:31]1413 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1414 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1415 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 0, i32 0>1416 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161417 ret void1418}1419 1420define void @v_shuffle_v3p3_v4p3__6_0_0(ptr addrspace(1) inreg %ptr) {1421; GFX900-LABEL: v_shuffle_v3p3_v4p3__6_0_0:1422; GFX900: ; %bb.0:1423; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1424; GFX900-NEXT: ;;#ASMSTART1425; GFX900-NEXT: ; def v[0:3]1426; GFX900-NEXT: ;;#ASMEND1427; GFX900-NEXT: v_mov_b32_e32 v8, 01428; GFX900-NEXT: ;;#ASMSTART1429; GFX900-NEXT: ; def v[4:7]1430; GFX900-NEXT: ;;#ASMEND1431; GFX900-NEXT: v_mov_b32_e32 v3, v41432; GFX900-NEXT: global_store_dwordx3 v8, v[2:4], s[16:17]1433; GFX900-NEXT: s_waitcnt vmcnt(0)1434; GFX900-NEXT: s_setpc_b64 s[30:31]1435;1436; GFX90A-LABEL: v_shuffle_v3p3_v4p3__6_0_0:1437; GFX90A: ; %bb.0:1438; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1439; GFX90A-NEXT: ;;#ASMSTART1440; GFX90A-NEXT: ; def v[0:3]1441; GFX90A-NEXT: ;;#ASMEND1442; GFX90A-NEXT: v_mov_b32_e32 v8, 01443; GFX90A-NEXT: ;;#ASMSTART1444; GFX90A-NEXT: ; def v[4:7]1445; GFX90A-NEXT: ;;#ASMEND1446; GFX90A-NEXT: v_mov_b32_e32 v3, v41447; GFX90A-NEXT: global_store_dwordx3 v8, v[2:4], s[16:17]1448; GFX90A-NEXT: s_waitcnt vmcnt(0)1449; GFX90A-NEXT: s_setpc_b64 s[30:31]1450;1451; GFX942-LABEL: v_shuffle_v3p3_v4p3__6_0_0:1452; GFX942: ; %bb.0:1453; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1454; GFX942-NEXT: ;;#ASMSTART1455; GFX942-NEXT: ; def v[0:3]1456; GFX942-NEXT: ;;#ASMEND1457; GFX942-NEXT: v_mov_b32_e32 v8, 01458; GFX942-NEXT: ;;#ASMSTART1459; GFX942-NEXT: ; def v[4:7]1460; GFX942-NEXT: ;;#ASMEND1461; GFX942-NEXT: s_nop 01462; GFX942-NEXT: v_mov_b32_e32 v3, v41463; GFX942-NEXT: global_store_dwordx3 v8, v[2:4], s[0:1]1464; GFX942-NEXT: s_waitcnt vmcnt(0)1465; GFX942-NEXT: s_setpc_b64 s[30:31]1466 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1467 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1468 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 0, i32 0>1469 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161470 ret void1471}1472 1473define void @v_shuffle_v3p3_v4p3__7_0_0(ptr addrspace(1) inreg %ptr) {1474; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_0_0:1475; GFX900: ; %bb.0:1476; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1477; GFX900-NEXT: ;;#ASMSTART1478; GFX900-NEXT: ; def v[4:7]1479; GFX900-NEXT: ;;#ASMEND1480; GFX900-NEXT: v_mov_b32_e32 v8, 01481; GFX900-NEXT: v_mov_b32_e32 v5, v41482; GFX900-NEXT: ;;#ASMSTART1483; GFX900-NEXT: ; def v[0:3]1484; GFX900-NEXT: ;;#ASMEND1485; GFX900-NEXT: global_store_dwordx3 v8, v[3:5], s[16:17]1486; GFX900-NEXT: s_waitcnt vmcnt(0)1487; GFX900-NEXT: s_setpc_b64 s[30:31]1488;1489; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_0_0:1490; GFX90A: ; %bb.0:1491; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1492; GFX90A-NEXT: ;;#ASMSTART1493; GFX90A-NEXT: ; def v[2:5]1494; GFX90A-NEXT: ;;#ASMEND1495; GFX90A-NEXT: v_mov_b32_e32 v8, 01496; GFX90A-NEXT: ;;#ASMSTART1497; GFX90A-NEXT: ; def v[4:7]1498; GFX90A-NEXT: ;;#ASMEND1499; GFX90A-NEXT: v_mov_b32_e32 v0, v71500; GFX90A-NEXT: v_mov_b32_e32 v1, v21501; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]1502; GFX90A-NEXT: s_waitcnt vmcnt(0)1503; GFX90A-NEXT: s_setpc_b64 s[30:31]1504;1505; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_0_0:1506; GFX942: ; %bb.0:1507; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1508; GFX942-NEXT: ;;#ASMSTART1509; GFX942-NEXT: ; def v[2:5]1510; GFX942-NEXT: ;;#ASMEND1511; GFX942-NEXT: v_mov_b32_e32 v8, 01512; GFX942-NEXT: ;;#ASMSTART1513; GFX942-NEXT: ; def v[4:7]1514; GFX942-NEXT: ;;#ASMEND1515; GFX942-NEXT: v_mov_b32_e32 v1, v21516; GFX942-NEXT: v_mov_b32_e32 v0, v71517; GFX942-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1]1518; GFX942-NEXT: s_waitcnt vmcnt(0)1519; GFX942-NEXT: s_setpc_b64 s[30:31]1520 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1521 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1522 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 0>1523 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161524 ret void1525}1526 1527define void @v_shuffle_v3p3_v4p3__7_u_0(ptr addrspace(1) inreg %ptr) {1528; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_u_0:1529; GFX900: ; %bb.0:1530; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1531; GFX900-NEXT: v_mov_b32_e32 v4, 01532; GFX900-NEXT: ;;#ASMSTART1533; GFX900-NEXT: ; def v[5:8]1534; GFX900-NEXT: ;;#ASMEND1535; GFX900-NEXT: ;;#ASMSTART1536; GFX900-NEXT: ; def v[0:3]1537; GFX900-NEXT: ;;#ASMEND1538; GFX900-NEXT: global_store_dwordx3 v4, v[3:5], s[16:17]1539; GFX900-NEXT: s_waitcnt vmcnt(0)1540; GFX900-NEXT: s_setpc_b64 s[30:31]1541;1542; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_u_0:1543; GFX90A: ; %bb.0:1544; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1545; GFX90A-NEXT: ;;#ASMSTART1546; GFX90A-NEXT: ; def v[2:5]1547; GFX90A-NEXT: ;;#ASMEND1548; GFX90A-NEXT: v_mov_b32_e32 v1, 01549; GFX90A-NEXT: ;;#ASMSTART1550; GFX90A-NEXT: ; def v[4:7]1551; GFX90A-NEXT: ;;#ASMEND1552; GFX90A-NEXT: v_mov_b32_e32 v0, v71553; GFX90A-NEXT: global_store_dwordx3 v1, v[0:2], s[16:17]1554; GFX90A-NEXT: s_waitcnt vmcnt(0)1555; GFX90A-NEXT: s_setpc_b64 s[30:31]1556;1557; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_u_0:1558; GFX942: ; %bb.0:1559; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1560; GFX942-NEXT: ;;#ASMSTART1561; GFX942-NEXT: ; def v[2:5]1562; GFX942-NEXT: ;;#ASMEND1563; GFX942-NEXT: v_mov_b32_e32 v1, 01564; GFX942-NEXT: ;;#ASMSTART1565; GFX942-NEXT: ; def v[4:7]1566; GFX942-NEXT: ;;#ASMEND1567; GFX942-NEXT: s_nop 01568; GFX942-NEXT: v_mov_b32_e32 v0, v71569; GFX942-NEXT: global_store_dwordx3 v1, v[0:2], s[0:1]1570; GFX942-NEXT: s_waitcnt vmcnt(0)1571; GFX942-NEXT: s_setpc_b64 s[30:31]1572 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1573 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1574 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 0>1575 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161576 ret void1577}1578 1579define void @v_shuffle_v3p3_v4p3__7_1_0(ptr addrspace(1) inreg %ptr) {1580; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_1_0:1581; GFX900: ; %bb.0:1582; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1583; GFX900-NEXT: v_mov_b32_e32 v9, 01584; GFX900-NEXT: ;;#ASMSTART1585; GFX900-NEXT: ; def v[5:8]1586; GFX900-NEXT: ;;#ASMEND1587; GFX900-NEXT: v_mov_b32_e32 v4, v61588; GFX900-NEXT: ;;#ASMSTART1589; GFX900-NEXT: ; def v[0:3]1590; GFX900-NEXT: ;;#ASMEND1591; GFX900-NEXT: global_store_dwordx3 v9, v[3:5], s[16:17]1592; GFX900-NEXT: s_waitcnt vmcnt(0)1593; GFX900-NEXT: s_setpc_b64 s[30:31]1594;1595; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_1_0:1596; GFX90A: ; %bb.0:1597; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1598; GFX90A-NEXT: ;;#ASMSTART1599; GFX90A-NEXT: ; def v[2:5]1600; GFX90A-NEXT: ;;#ASMEND1601; GFX90A-NEXT: v_mov_b32_e32 v8, 01602; GFX90A-NEXT: ;;#ASMSTART1603; GFX90A-NEXT: ; def v[4:7]1604; GFX90A-NEXT: ;;#ASMEND1605; GFX90A-NEXT: v_mov_b32_e32 v0, v71606; GFX90A-NEXT: v_mov_b32_e32 v1, v31607; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]1608; GFX90A-NEXT: s_waitcnt vmcnt(0)1609; GFX90A-NEXT: s_setpc_b64 s[30:31]1610;1611; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_1_0:1612; GFX942: ; %bb.0:1613; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1614; GFX942-NEXT: ;;#ASMSTART1615; GFX942-NEXT: ; def v[2:5]1616; GFX942-NEXT: ;;#ASMEND1617; GFX942-NEXT: v_mov_b32_e32 v8, 01618; GFX942-NEXT: ;;#ASMSTART1619; GFX942-NEXT: ; def v[4:7]1620; GFX942-NEXT: ;;#ASMEND1621; GFX942-NEXT: v_mov_b32_e32 v1, v31622; GFX942-NEXT: v_mov_b32_e32 v0, v71623; GFX942-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1]1624; GFX942-NEXT: s_waitcnt vmcnt(0)1625; GFX942-NEXT: s_setpc_b64 s[30:31]1626 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1627 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1628 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 0>1629 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161630 ret void1631}1632 1633define void @v_shuffle_v3p3_v4p3__7_2_0(ptr addrspace(1) inreg %ptr) {1634; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_2_0:1635; GFX900: ; %bb.0:1636; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1637; GFX900-NEXT: v_mov_b32_e32 v9, 01638; GFX900-NEXT: ;;#ASMSTART1639; GFX900-NEXT: ; def v[5:8]1640; GFX900-NEXT: ;;#ASMEND1641; GFX900-NEXT: v_mov_b32_e32 v4, v71642; GFX900-NEXT: ;;#ASMSTART1643; GFX900-NEXT: ; def v[0:3]1644; GFX900-NEXT: ;;#ASMEND1645; GFX900-NEXT: global_store_dwordx3 v9, v[3:5], s[16:17]1646; GFX900-NEXT: s_waitcnt vmcnt(0)1647; GFX900-NEXT: s_setpc_b64 s[30:31]1648;1649; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_2_0:1650; GFX90A: ; %bb.0:1651; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1652; GFX90A-NEXT: v_mov_b32_e32 v10, 01653; GFX90A-NEXT: ;;#ASMSTART1654; GFX90A-NEXT: ; def v[2:5]1655; GFX90A-NEXT: ;;#ASMEND1656; GFX90A-NEXT: ;;#ASMSTART1657; GFX90A-NEXT: ; def v[6:9]1658; GFX90A-NEXT: ;;#ASMEND1659; GFX90A-NEXT: v_mov_b32_e32 v0, v91660; GFX90A-NEXT: v_mov_b32_e32 v1, v41661; GFX90A-NEXT: global_store_dwordx3 v10, v[0:2], s[16:17]1662; GFX90A-NEXT: s_waitcnt vmcnt(0)1663; GFX90A-NEXT: s_setpc_b64 s[30:31]1664;1665; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_2_0:1666; GFX942: ; %bb.0:1667; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1668; GFX942-NEXT: v_mov_b32_e32 v10, 01669; GFX942-NEXT: ;;#ASMSTART1670; GFX942-NEXT: ; def v[2:5]1671; GFX942-NEXT: ;;#ASMEND1672; GFX942-NEXT: ;;#ASMSTART1673; GFX942-NEXT: ; def v[6:9]1674; GFX942-NEXT: ;;#ASMEND1675; GFX942-NEXT: s_nop 01676; GFX942-NEXT: v_mov_b32_e32 v0, v91677; GFX942-NEXT: v_mov_b32_e32 v1, v41678; GFX942-NEXT: global_store_dwordx3 v10, v[0:2], s[0:1]1679; GFX942-NEXT: s_waitcnt vmcnt(0)1680; GFX942-NEXT: s_setpc_b64 s[30:31]1681 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1682 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1683 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 0>1684 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161685 ret void1686}1687 1688define void @v_shuffle_v3p3_v4p3__7_3_0(ptr addrspace(1) inreg %ptr) {1689; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_3_0:1690; GFX900: ; %bb.0:1691; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1692; GFX900-NEXT: v_mov_b32_e32 v9, 01693; GFX900-NEXT: ;;#ASMSTART1694; GFX900-NEXT: ; def v[5:8]1695; GFX900-NEXT: ;;#ASMEND1696; GFX900-NEXT: v_mov_b32_e32 v4, v81697; GFX900-NEXT: ;;#ASMSTART1698; GFX900-NEXT: ; def v[0:3]1699; GFX900-NEXT: ;;#ASMEND1700; GFX900-NEXT: global_store_dwordx3 v9, v[3:5], s[16:17]1701; GFX900-NEXT: s_waitcnt vmcnt(0)1702; GFX900-NEXT: s_setpc_b64 s[30:31]1703;1704; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_3_0:1705; GFX90A: ; %bb.0:1706; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1707; GFX90A-NEXT: ;;#ASMSTART1708; GFX90A-NEXT: ; def v[0:3]1709; GFX90A-NEXT: ;;#ASMEND1710; GFX90A-NEXT: ;;#ASMSTART1711; GFX90A-NEXT: ; def v[4:7]1712; GFX90A-NEXT: ;;#ASMEND1713; GFX90A-NEXT: v_mov_b32_e32 v8, 01714; GFX90A-NEXT: v_mov_b32_e32 v2, v71715; GFX90A-NEXT: v_mov_b32_e32 v4, v01716; GFX90A-NEXT: global_store_dwordx3 v8, v[2:4], s[16:17]1717; GFX90A-NEXT: s_waitcnt vmcnt(0)1718; GFX90A-NEXT: s_setpc_b64 s[30:31]1719;1720; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_3_0:1721; GFX942: ; %bb.0:1722; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1723; GFX942-NEXT: ;;#ASMSTART1724; GFX942-NEXT: ; def v[0:3]1725; GFX942-NEXT: ;;#ASMEND1726; GFX942-NEXT: ;;#ASMSTART1727; GFX942-NEXT: ; def v[4:7]1728; GFX942-NEXT: ;;#ASMEND1729; GFX942-NEXT: v_mov_b32_e32 v8, 01730; GFX942-NEXT: v_mov_b32_e32 v2, v71731; GFX942-NEXT: v_mov_b32_e32 v4, v01732; GFX942-NEXT: global_store_dwordx3 v8, v[2:4], s[0:1]1733; GFX942-NEXT: s_waitcnt vmcnt(0)1734; GFX942-NEXT: s_setpc_b64 s[30:31]1735 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1736 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1737 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 0>1738 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161739 ret void1740}1741 1742define void @v_shuffle_v3p3_v4p3__7_4_0(ptr addrspace(1) inreg %ptr) {1743; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_4_0:1744; GFX900: ; %bb.0:1745; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1746; GFX900-NEXT: v_mov_b32_e32 v9, 01747; GFX900-NEXT: ;;#ASMSTART1748; GFX900-NEXT: ; def v[0:3]1749; GFX900-NEXT: ;;#ASMEND1750; GFX900-NEXT: v_mov_b32_e32 v4, v01751; GFX900-NEXT: ;;#ASMSTART1752; GFX900-NEXT: ; def v[5:8]1753; GFX900-NEXT: ;;#ASMEND1754; GFX900-NEXT: global_store_dwordx3 v9, v[3:5], s[16:17]1755; GFX900-NEXT: s_waitcnt vmcnt(0)1756; GFX900-NEXT: s_setpc_b64 s[30:31]1757;1758; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_4_0:1759; GFX90A: ; %bb.0:1760; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1761; GFX90A-NEXT: ;;#ASMSTART1762; GFX90A-NEXT: ; def v[2:5]1763; GFX90A-NEXT: ;;#ASMEND1764; GFX90A-NEXT: v_mov_b32_e32 v8, 01765; GFX90A-NEXT: ;;#ASMSTART1766; GFX90A-NEXT: ; def v[4:7]1767; GFX90A-NEXT: ;;#ASMEND1768; GFX90A-NEXT: v_mov_b32_e32 v0, v71769; GFX90A-NEXT: v_mov_b32_e32 v1, v41770; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]1771; GFX90A-NEXT: s_waitcnt vmcnt(0)1772; GFX90A-NEXT: s_setpc_b64 s[30:31]1773;1774; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_4_0:1775; GFX942: ; %bb.0:1776; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1777; GFX942-NEXT: ;;#ASMSTART1778; GFX942-NEXT: ; def v[2:5]1779; GFX942-NEXT: ;;#ASMEND1780; GFX942-NEXT: v_mov_b32_e32 v8, 01781; GFX942-NEXT: ;;#ASMSTART1782; GFX942-NEXT: ; def v[4:7]1783; GFX942-NEXT: ;;#ASMEND1784; GFX942-NEXT: s_nop 01785; GFX942-NEXT: v_mov_b32_e32 v0, v71786; GFX942-NEXT: v_mov_b32_e32 v1, v41787; GFX942-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1]1788; GFX942-NEXT: s_waitcnt vmcnt(0)1789; GFX942-NEXT: s_setpc_b64 s[30:31]1790 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1791 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1792 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 0>1793 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161794 ret void1795}1796 1797define void @v_shuffle_v3p3_v4p3__7_5_0(ptr addrspace(1) inreg %ptr) {1798; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_5_0:1799; GFX900: ; %bb.0:1800; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1801; GFX900-NEXT: v_mov_b32_e32 v9, 01802; GFX900-NEXT: ;;#ASMSTART1803; GFX900-NEXT: ; def v[0:3]1804; GFX900-NEXT: ;;#ASMEND1805; GFX900-NEXT: v_mov_b32_e32 v4, v11806; GFX900-NEXT: ;;#ASMSTART1807; GFX900-NEXT: ; def v[5:8]1808; GFX900-NEXT: ;;#ASMEND1809; GFX900-NEXT: global_store_dwordx3 v9, v[3:5], s[16:17]1810; GFX900-NEXT: s_waitcnt vmcnt(0)1811; GFX900-NEXT: s_setpc_b64 s[30:31]1812;1813; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_5_0:1814; GFX90A: ; %bb.0:1815; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1816; GFX90A-NEXT: ;;#ASMSTART1817; GFX90A-NEXT: ; def v[0:3]1818; GFX90A-NEXT: ;;#ASMEND1819; GFX90A-NEXT: ;;#ASMSTART1820; GFX90A-NEXT: ; def v[2:5]1821; GFX90A-NEXT: ;;#ASMEND1822; GFX90A-NEXT: v_mov_b32_e32 v6, 01823; GFX90A-NEXT: v_mov_b32_e32 v2, v51824; GFX90A-NEXT: v_mov_b32_e32 v4, v01825; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]1826; GFX90A-NEXT: s_waitcnt vmcnt(0)1827; GFX90A-NEXT: s_setpc_b64 s[30:31]1828;1829; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_5_0:1830; GFX942: ; %bb.0:1831; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1832; GFX942-NEXT: ;;#ASMSTART1833; GFX942-NEXT: ; def v[0:3]1834; GFX942-NEXT: ;;#ASMEND1835; GFX942-NEXT: v_mov_b32_e32 v6, 01836; GFX942-NEXT: ;;#ASMSTART1837; GFX942-NEXT: ; def v[2:5]1838; GFX942-NEXT: ;;#ASMEND1839; GFX942-NEXT: s_nop 01840; GFX942-NEXT: v_mov_b32_e32 v2, v51841; GFX942-NEXT: v_mov_b32_e32 v4, v01842; GFX942-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1]1843; GFX942-NEXT: s_waitcnt vmcnt(0)1844; GFX942-NEXT: s_setpc_b64 s[30:31]1845 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1846 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1847 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 0>1848 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161849 ret void1850}1851 1852define void @v_shuffle_v3p3_v4p3__7_6_0(ptr addrspace(1) inreg %ptr) {1853; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_6_0:1854; GFX900: ; %bb.0:1855; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1856; GFX900-NEXT: v_mov_b32_e32 v9, 01857; GFX900-NEXT: ;;#ASMSTART1858; GFX900-NEXT: ; def v[0:3]1859; GFX900-NEXT: ;;#ASMEND1860; GFX900-NEXT: v_mov_b32_e32 v4, v21861; GFX900-NEXT: ;;#ASMSTART1862; GFX900-NEXT: ; def v[5:8]1863; GFX900-NEXT: ;;#ASMEND1864; GFX900-NEXT: global_store_dwordx3 v9, v[3:5], s[16:17]1865; GFX900-NEXT: s_waitcnt vmcnt(0)1866; GFX900-NEXT: s_setpc_b64 s[30:31]1867;1868; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_6_0:1869; GFX90A: ; %bb.0:1870; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1871; GFX90A-NEXT: ;;#ASMSTART1872; GFX90A-NEXT: ; def v[2:5]1873; GFX90A-NEXT: ;;#ASMEND1874; GFX90A-NEXT: v_mov_b32_e32 v8, 01875; GFX90A-NEXT: ;;#ASMSTART1876; GFX90A-NEXT: ; def v[4:7]1877; GFX90A-NEXT: ;;#ASMEND1878; GFX90A-NEXT: v_mov_b32_e32 v0, v71879; GFX90A-NEXT: v_mov_b32_e32 v1, v61880; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]1881; GFX90A-NEXT: s_waitcnt vmcnt(0)1882; GFX90A-NEXT: s_setpc_b64 s[30:31]1883;1884; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_6_0:1885; GFX942: ; %bb.0:1886; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1887; GFX942-NEXT: ;;#ASMSTART1888; GFX942-NEXT: ; def v[2:5]1889; GFX942-NEXT: ;;#ASMEND1890; GFX942-NEXT: v_mov_b32_e32 v8, 01891; GFX942-NEXT: ;;#ASMSTART1892; GFX942-NEXT: ; def v[4:7]1893; GFX942-NEXT: ;;#ASMEND1894; GFX942-NEXT: s_nop 01895; GFX942-NEXT: v_mov_b32_e32 v0, v71896; GFX942-NEXT: v_mov_b32_e32 v1, v61897; GFX942-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1]1898; GFX942-NEXT: s_waitcnt vmcnt(0)1899; GFX942-NEXT: s_setpc_b64 s[30:31]1900 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1901 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1902 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 0>1903 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161904 ret void1905}1906 1907define void @v_shuffle_v3p3_v4p3__u_1_1(ptr addrspace(1) inreg %ptr) {1908; GFX900-LABEL: v_shuffle_v3p3_v4p3__u_1_1:1909; GFX900: ; %bb.0:1910; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1911; GFX900-NEXT: ;;#ASMSTART1912; GFX900-NEXT: ; def v[0:3]1913; GFX900-NEXT: ;;#ASMEND1914; GFX900-NEXT: v_mov_b32_e32 v4, 01915; GFX900-NEXT: v_mov_b32_e32 v2, v11916; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]1917; GFX900-NEXT: s_waitcnt vmcnt(0)1918; GFX900-NEXT: s_setpc_b64 s[30:31]1919;1920; GFX90A-LABEL: v_shuffle_v3p3_v4p3__u_1_1:1921; GFX90A: ; %bb.0:1922; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1923; GFX90A-NEXT: ;;#ASMSTART1924; GFX90A-NEXT: ; def v[0:3]1925; GFX90A-NEXT: ;;#ASMEND1926; GFX90A-NEXT: v_mov_b32_e32 v4, 01927; GFX90A-NEXT: v_mov_b32_e32 v2, v11928; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]1929; GFX90A-NEXT: s_waitcnt vmcnt(0)1930; GFX90A-NEXT: s_setpc_b64 s[30:31]1931;1932; GFX942-LABEL: v_shuffle_v3p3_v4p3__u_1_1:1933; GFX942: ; %bb.0:1934; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1935; GFX942-NEXT: ;;#ASMSTART1936; GFX942-NEXT: ; def v[0:3]1937; GFX942-NEXT: ;;#ASMEND1938; GFX942-NEXT: v_mov_b32_e32 v4, 01939; GFX942-NEXT: v_mov_b32_e32 v2, v11940; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]1941; GFX942-NEXT: s_waitcnt vmcnt(0)1942; GFX942-NEXT: s_setpc_b64 s[30:31]1943 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1944 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 poison, i32 1, i32 1>1945 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161946 ret void1947}1948 1949define void @v_shuffle_v3p3_v4p3__0_1_1(ptr addrspace(1) inreg %ptr) {1950; GFX900-LABEL: v_shuffle_v3p3_v4p3__0_1_1:1951; GFX900: ; %bb.0:1952; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1953; GFX900-NEXT: ;;#ASMSTART1954; GFX900-NEXT: ; def v[0:3]1955; GFX900-NEXT: ;;#ASMEND1956; GFX900-NEXT: v_mov_b32_e32 v4, 01957; GFX900-NEXT: v_mov_b32_e32 v2, v11958; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]1959; GFX900-NEXT: s_waitcnt vmcnt(0)1960; GFX900-NEXT: s_setpc_b64 s[30:31]1961;1962; GFX90A-LABEL: v_shuffle_v3p3_v4p3__0_1_1:1963; GFX90A: ; %bb.0:1964; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1965; GFX90A-NEXT: ;;#ASMSTART1966; GFX90A-NEXT: ; def v[0:3]1967; GFX90A-NEXT: ;;#ASMEND1968; GFX90A-NEXT: v_mov_b32_e32 v4, 01969; GFX90A-NEXT: v_mov_b32_e32 v2, v11970; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]1971; GFX90A-NEXT: s_waitcnt vmcnt(0)1972; GFX90A-NEXT: s_setpc_b64 s[30:31]1973;1974; GFX942-LABEL: v_shuffle_v3p3_v4p3__0_1_1:1975; GFX942: ; %bb.0:1976; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1977; GFX942-NEXT: ;;#ASMSTART1978; GFX942-NEXT: ; def v[0:3]1979; GFX942-NEXT: ;;#ASMEND1980; GFX942-NEXT: v_mov_b32_e32 v4, 01981; GFX942-NEXT: v_mov_b32_e32 v2, v11982; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]1983; GFX942-NEXT: s_waitcnt vmcnt(0)1984; GFX942-NEXT: s_setpc_b64 s[30:31]1985 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()1986 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 0, i32 1, i32 1>1987 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161988 ret void1989}1990 1991define void @v_shuffle_v3p3_v4p3__1_1_1(ptr addrspace(1) inreg %ptr) {1992; GFX900-LABEL: v_shuffle_v3p3_v4p3__1_1_1:1993; GFX900: ; %bb.0:1994; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1995; GFX900-NEXT: ;;#ASMSTART1996; GFX900-NEXT: ; def v[0:3]1997; GFX900-NEXT: ;;#ASMEND1998; GFX900-NEXT: v_mov_b32_e32 v4, 01999; GFX900-NEXT: v_mov_b32_e32 v2, v12000; GFX900-NEXT: v_mov_b32_e32 v3, v12001; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]2002; GFX900-NEXT: s_waitcnt vmcnt(0)2003; GFX900-NEXT: s_setpc_b64 s[30:31]2004;2005; GFX90A-LABEL: v_shuffle_v3p3_v4p3__1_1_1:2006; GFX90A: ; %bb.0:2007; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2008; GFX90A-NEXT: ;;#ASMSTART2009; GFX90A-NEXT: ; def v[0:3]2010; GFX90A-NEXT: ;;#ASMEND2011; GFX90A-NEXT: v_mov_b32_e32 v4, 02012; GFX90A-NEXT: v_mov_b32_e32 v0, v12013; GFX90A-NEXT: v_mov_b32_e32 v2, v12014; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]2015; GFX90A-NEXT: s_waitcnt vmcnt(0)2016; GFX90A-NEXT: s_setpc_b64 s[30:31]2017;2018; GFX942-LABEL: v_shuffle_v3p3_v4p3__1_1_1:2019; GFX942: ; %bb.0:2020; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2021; GFX942-NEXT: ;;#ASMSTART2022; GFX942-NEXT: ; def v[0:3]2023; GFX942-NEXT: ;;#ASMEND2024; GFX942-NEXT: v_mov_b32_e32 v4, 02025; GFX942-NEXT: v_mov_b32_e32 v0, v12026; GFX942-NEXT: v_mov_b32_e32 v2, v12027; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]2028; GFX942-NEXT: s_waitcnt vmcnt(0)2029; GFX942-NEXT: s_setpc_b64 s[30:31]2030 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()2031 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 1, i32 1>2032 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162033 ret void2034}2035 2036define void @v_shuffle_v3p3_v4p3__2_1_1(ptr addrspace(1) inreg %ptr) {2037; GFX900-LABEL: v_shuffle_v3p3_v4p3__2_1_1:2038; GFX900: ; %bb.0:2039; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2040; GFX900-NEXT: ;;#ASMSTART2041; GFX900-NEXT: ; def v[0:3]2042; GFX900-NEXT: ;;#ASMEND2043; GFX900-NEXT: v_mov_b32_e32 v5, 02044; GFX900-NEXT: v_mov_b32_e32 v3, v12045; GFX900-NEXT: v_mov_b32_e32 v4, v12046; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]2047; GFX900-NEXT: s_waitcnt vmcnt(0)2048; GFX900-NEXT: s_setpc_b64 s[30:31]2049;2050; GFX90A-LABEL: v_shuffle_v3p3_v4p3__2_1_1:2051; GFX90A: ; %bb.0:2052; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2053; GFX90A-NEXT: ;;#ASMSTART2054; GFX90A-NEXT: ; def v[0:3]2055; GFX90A-NEXT: ;;#ASMEND2056; GFX90A-NEXT: v_mov_b32_e32 v5, 02057; GFX90A-NEXT: v_mov_b32_e32 v3, v12058; GFX90A-NEXT: v_mov_b32_e32 v4, v12059; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]2060; GFX90A-NEXT: s_waitcnt vmcnt(0)2061; GFX90A-NEXT: s_setpc_b64 s[30:31]2062;2063; GFX942-LABEL: v_shuffle_v3p3_v4p3__2_1_1:2064; GFX942: ; %bb.0:2065; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2066; GFX942-NEXT: ;;#ASMSTART2067; GFX942-NEXT: ; def v[0:3]2068; GFX942-NEXT: ;;#ASMEND2069; GFX942-NEXT: v_mov_b32_e32 v5, 02070; GFX942-NEXT: v_mov_b32_e32 v3, v12071; GFX942-NEXT: v_mov_b32_e32 v4, v12072; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]2073; GFX942-NEXT: s_waitcnt vmcnt(0)2074; GFX942-NEXT: s_setpc_b64 s[30:31]2075 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()2076 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 1, i32 1>2077 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162078 ret void2079}2080 2081define void @v_shuffle_v3p3_v4p3__3_1_1(ptr addrspace(1) inreg %ptr) {2082; GFX900-LABEL: v_shuffle_v3p3_v4p3__3_1_1:2083; GFX900: ; %bb.0:2084; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2085; GFX900-NEXT: v_mov_b32_e32 v6, 02086; GFX900-NEXT: ;;#ASMSTART2087; GFX900-NEXT: ; def v[0:3]2088; GFX900-NEXT: ;;#ASMEND2089; GFX900-NEXT: v_mov_b32_e32 v4, v12090; GFX900-NEXT: v_mov_b32_e32 v5, v12091; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]2092; GFX900-NEXT: s_waitcnt vmcnt(0)2093; GFX900-NEXT: s_setpc_b64 s[30:31]2094;2095; GFX90A-LABEL: v_shuffle_v3p3_v4p3__3_1_1:2096; GFX90A: ; %bb.0:2097; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2098; GFX90A-NEXT: ;;#ASMSTART2099; GFX90A-NEXT: ; def v[0:3]2100; GFX90A-NEXT: ;;#ASMEND2101; GFX90A-NEXT: v_mov_b32_e32 v4, 02102; GFX90A-NEXT: v_mov_b32_e32 v0, v32103; GFX90A-NEXT: v_mov_b32_e32 v2, v12104; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]2105; GFX90A-NEXT: s_waitcnt vmcnt(0)2106; GFX90A-NEXT: s_setpc_b64 s[30:31]2107;2108; GFX942-LABEL: v_shuffle_v3p3_v4p3__3_1_1:2109; GFX942: ; %bb.0:2110; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2111; GFX942-NEXT: ;;#ASMSTART2112; GFX942-NEXT: ; def v[0:3]2113; GFX942-NEXT: ;;#ASMEND2114; GFX942-NEXT: v_mov_b32_e32 v4, 02115; GFX942-NEXT: v_mov_b32_e32 v0, v32116; GFX942-NEXT: v_mov_b32_e32 v2, v12117; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]2118; GFX942-NEXT: s_waitcnt vmcnt(0)2119; GFX942-NEXT: s_setpc_b64 s[30:31]2120 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()2121 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 3, i32 1, i32 1>2122 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162123 ret void2124}2125 2126define void @v_shuffle_v3p3_v4p3__4_1_1(ptr addrspace(1) inreg %ptr) {2127; GFX900-LABEL: v_shuffle_v3p3_v4p3__4_1_1:2128; GFX900: ; %bb.0:2129; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2130; GFX900-NEXT: ;;#ASMSTART2131; GFX900-NEXT: ; def v[0:3]2132; GFX900-NEXT: ;;#ASMEND2133; GFX900-NEXT: v_mov_b32_e32 v4, 02134; GFX900-NEXT: v_mov_b32_e32 v2, v12135; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]2136; GFX900-NEXT: s_waitcnt vmcnt(0)2137; GFX900-NEXT: s_setpc_b64 s[30:31]2138;2139; GFX90A-LABEL: v_shuffle_v3p3_v4p3__4_1_1:2140; GFX90A: ; %bb.0:2141; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2142; GFX90A-NEXT: ;;#ASMSTART2143; GFX90A-NEXT: ; def v[0:3]2144; GFX90A-NEXT: ;;#ASMEND2145; GFX90A-NEXT: v_mov_b32_e32 v4, 02146; GFX90A-NEXT: v_mov_b32_e32 v2, v12147; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]2148; GFX90A-NEXT: s_waitcnt vmcnt(0)2149; GFX90A-NEXT: s_setpc_b64 s[30:31]2150;2151; GFX942-LABEL: v_shuffle_v3p3_v4p3__4_1_1:2152; GFX942: ; %bb.0:2153; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2154; GFX942-NEXT: ;;#ASMSTART2155; GFX942-NEXT: ; def v[0:3]2156; GFX942-NEXT: ;;#ASMEND2157; GFX942-NEXT: v_mov_b32_e32 v4, 02158; GFX942-NEXT: v_mov_b32_e32 v2, v12159; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]2160; GFX942-NEXT: s_waitcnt vmcnt(0)2161; GFX942-NEXT: s_setpc_b64 s[30:31]2162 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()2163 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 4, i32 1, i32 1>2164 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162165 ret void2166}2167 2168define void @v_shuffle_v3p3_v4p3__5_1_1(ptr addrspace(1) inreg %ptr) {2169; GFX900-LABEL: v_shuffle_v3p3_v4p3__5_1_1:2170; GFX900: ; %bb.0:2171; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2172; GFX900-NEXT: ;;#ASMSTART2173; GFX900-NEXT: ; def v[0:3]2174; GFX900-NEXT: ;;#ASMEND2175; GFX900-NEXT: ;;#ASMSTART2176; GFX900-NEXT: ; def v[2:5]2177; GFX900-NEXT: ;;#ASMEND2178; GFX900-NEXT: v_mov_b32_e32 v6, 02179; GFX900-NEXT: v_mov_b32_e32 v4, v12180; GFX900-NEXT: v_mov_b32_e32 v5, v12181; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]2182; GFX900-NEXT: s_waitcnt vmcnt(0)2183; GFX900-NEXT: s_setpc_b64 s[30:31]2184;2185; GFX90A-LABEL: v_shuffle_v3p3_v4p3__5_1_1:2186; GFX90A: ; %bb.0:2187; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2188; GFX90A-NEXT: ;;#ASMSTART2189; GFX90A-NEXT: ; def v[0:3]2190; GFX90A-NEXT: ;;#ASMEND2191; GFX90A-NEXT: ;;#ASMSTART2192; GFX90A-NEXT: ; def v[2:5]2193; GFX90A-NEXT: ;;#ASMEND2194; GFX90A-NEXT: v_mov_b32_e32 v6, 02195; GFX90A-NEXT: v_mov_b32_e32 v0, v32196; GFX90A-NEXT: v_mov_b32_e32 v2, v12197; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]2198; GFX90A-NEXT: s_waitcnt vmcnt(0)2199; GFX90A-NEXT: s_setpc_b64 s[30:31]2200;2201; GFX942-LABEL: v_shuffle_v3p3_v4p3__5_1_1:2202; GFX942: ; %bb.0:2203; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2204; GFX942-NEXT: ;;#ASMSTART2205; GFX942-NEXT: ; def v[0:3]2206; GFX942-NEXT: ;;#ASMEND2207; GFX942-NEXT: v_mov_b32_e32 v6, 02208; GFX942-NEXT: ;;#ASMSTART2209; GFX942-NEXT: ; def v[2:5]2210; GFX942-NEXT: ;;#ASMEND2211; GFX942-NEXT: s_nop 02212; GFX942-NEXT: v_mov_b32_e32 v0, v32213; GFX942-NEXT: v_mov_b32_e32 v2, v12214; GFX942-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1]2215; GFX942-NEXT: s_waitcnt vmcnt(0)2216; GFX942-NEXT: s_setpc_b64 s[30:31]2217 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()2218 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()2219 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 1, i32 1>2220 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162221 ret void2222}2223 2224define void @v_shuffle_v3p3_v4p3__6_1_1(ptr addrspace(1) inreg %ptr) {2225; GFX900-LABEL: v_shuffle_v3p3_v4p3__6_1_1:2226; GFX900: ; %bb.0:2227; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2228; GFX900-NEXT: ;;#ASMSTART2229; GFX900-NEXT: ; def v[3:6]2230; GFX900-NEXT: ;;#ASMEND2231; GFX900-NEXT: ;;#ASMSTART2232; GFX900-NEXT: ; def v[0:3]2233; GFX900-NEXT: ;;#ASMEND2234; GFX900-NEXT: v_mov_b32_e32 v7, 02235; GFX900-NEXT: v_mov_b32_e32 v3, v42236; GFX900-NEXT: global_store_dwordx3 v7, v[2:4], s[16:17]2237; GFX900-NEXT: s_waitcnt vmcnt(0)2238; GFX900-NEXT: s_setpc_b64 s[30:31]2239;2240; GFX90A-LABEL: v_shuffle_v3p3_v4p3__6_1_1:2241; GFX90A: ; %bb.0:2242; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2243; GFX90A-NEXT: ;;#ASMSTART2244; GFX90A-NEXT: ; def v[4:7]2245; GFX90A-NEXT: ;;#ASMEND2246; GFX90A-NEXT: ;;#ASMSTART2247; GFX90A-NEXT: ; def v[0:3]2248; GFX90A-NEXT: ;;#ASMEND2249; GFX90A-NEXT: v_mov_b32_e32 v8, 02250; GFX90A-NEXT: v_mov_b32_e32 v3, v52251; GFX90A-NEXT: v_mov_b32_e32 v4, v52252; GFX90A-NEXT: global_store_dwordx3 v8, v[2:4], s[16:17]2253; GFX90A-NEXT: s_waitcnt vmcnt(0)2254; GFX90A-NEXT: s_setpc_b64 s[30:31]2255;2256; GFX942-LABEL: v_shuffle_v3p3_v4p3__6_1_1:2257; GFX942: ; %bb.0:2258; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2259; GFX942-NEXT: ;;#ASMSTART2260; GFX942-NEXT: ; def v[4:7]2261; GFX942-NEXT: ;;#ASMEND2262; GFX942-NEXT: ;;#ASMSTART2263; GFX942-NEXT: ; def v[0:3]2264; GFX942-NEXT: ;;#ASMEND2265; GFX942-NEXT: v_mov_b32_e32 v8, 02266; GFX942-NEXT: v_mov_b32_e32 v3, v52267; GFX942-NEXT: v_mov_b32_e32 v4, v52268; GFX942-NEXT: global_store_dwordx3 v8, v[2:4], s[0:1]2269; GFX942-NEXT: s_waitcnt vmcnt(0)2270; GFX942-NEXT: s_setpc_b64 s[30:31]2271 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()2272 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()2273 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 1, i32 1>2274 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162275 ret void2276}2277 2278define void @v_shuffle_v3p3_v4p3__7_1_1(ptr addrspace(1) inreg %ptr) {2279; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_1_1:2280; GFX900: ; %bb.0:2281; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2282; GFX900-NEXT: ;;#ASMSTART2283; GFX900-NEXT: ; def v[3:6]2284; GFX900-NEXT: ;;#ASMEND2285; GFX900-NEXT: v_mov_b32_e32 v7, 02286; GFX900-NEXT: v_mov_b32_e32 v5, v42287; GFX900-NEXT: ;;#ASMSTART2288; GFX900-NEXT: ; def v[0:3]2289; GFX900-NEXT: ;;#ASMEND2290; GFX900-NEXT: global_store_dwordx3 v7, v[3:5], s[16:17]2291; GFX900-NEXT: s_waitcnt vmcnt(0)2292; GFX900-NEXT: s_setpc_b64 s[30:31]2293;2294; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_1_1:2295; GFX90A: ; %bb.0:2296; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2297; GFX90A-NEXT: ;;#ASMSTART2298; GFX90A-NEXT: ; def v[0:3]2299; GFX90A-NEXT: ;;#ASMEND2300; GFX90A-NEXT: ;;#ASMSTART2301; GFX90A-NEXT: ; def v[2:5]2302; GFX90A-NEXT: ;;#ASMEND2303; GFX90A-NEXT: v_mov_b32_e32 v6, 02304; GFX90A-NEXT: v_mov_b32_e32 v0, v52305; GFX90A-NEXT: v_mov_b32_e32 v2, v12306; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]2307; GFX90A-NEXT: s_waitcnt vmcnt(0)2308; GFX90A-NEXT: s_setpc_b64 s[30:31]2309;2310; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_1_1:2311; GFX942: ; %bb.0:2312; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2313; GFX942-NEXT: ;;#ASMSTART2314; GFX942-NEXT: ; def v[0:3]2315; GFX942-NEXT: ;;#ASMEND2316; GFX942-NEXT: v_mov_b32_e32 v6, 02317; GFX942-NEXT: ;;#ASMSTART2318; GFX942-NEXT: ; def v[2:5]2319; GFX942-NEXT: ;;#ASMEND2320; GFX942-NEXT: s_nop 02321; GFX942-NEXT: v_mov_b32_e32 v0, v52322; GFX942-NEXT: v_mov_b32_e32 v2, v12323; GFX942-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1]2324; GFX942-NEXT: s_waitcnt vmcnt(0)2325; GFX942-NEXT: s_setpc_b64 s[30:31]2326 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()2327 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()2328 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 1>2329 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162330 ret void2331}2332 2333define void @v_shuffle_v3p3_v4p3__7_u_1(ptr addrspace(1) inreg %ptr) {2334; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_u_1:2335; GFX900: ; %bb.0:2336; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2337; GFX900-NEXT: v_mov_b32_e32 v8, 02338; GFX900-NEXT: ;;#ASMSTART2339; GFX900-NEXT: ; def v[4:7]2340; GFX900-NEXT: ;;#ASMEND2341; GFX900-NEXT: ;;#ASMSTART2342; GFX900-NEXT: ; def v[0:3]2343; GFX900-NEXT: ;;#ASMEND2344; GFX900-NEXT: global_store_dwordx3 v8, v[3:5], s[16:17]2345; GFX900-NEXT: s_waitcnt vmcnt(0)2346; GFX900-NEXT: s_setpc_b64 s[30:31]2347;2348; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_u_1:2349; GFX90A: ; %bb.0:2350; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2351; GFX90A-NEXT: ;;#ASMSTART2352; GFX90A-NEXT: ; def v[0:3]2353; GFX90A-NEXT: ;;#ASMEND2354; GFX90A-NEXT: ;;#ASMSTART2355; GFX90A-NEXT: ; def v[2:5]2356; GFX90A-NEXT: ;;#ASMEND2357; GFX90A-NEXT: v_mov_b32_e32 v6, 02358; GFX90A-NEXT: v_mov_b32_e32 v0, v52359; GFX90A-NEXT: v_mov_b32_e32 v2, v12360; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]2361; GFX90A-NEXT: s_waitcnt vmcnt(0)2362; GFX90A-NEXT: s_setpc_b64 s[30:31]2363;2364; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_u_1:2365; GFX942: ; %bb.0:2366; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2367; GFX942-NEXT: ;;#ASMSTART2368; GFX942-NEXT: ; def v[0:3]2369; GFX942-NEXT: ;;#ASMEND2370; GFX942-NEXT: v_mov_b32_e32 v6, 02371; GFX942-NEXT: ;;#ASMSTART2372; GFX942-NEXT: ; def v[2:5]2373; GFX942-NEXT: ;;#ASMEND2374; GFX942-NEXT: s_nop 02375; GFX942-NEXT: v_mov_b32_e32 v0, v52376; GFX942-NEXT: v_mov_b32_e32 v2, v12377; GFX942-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1]2378; GFX942-NEXT: s_waitcnt vmcnt(0)2379; GFX942-NEXT: s_setpc_b64 s[30:31]2380 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()2381 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()2382 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 1>2383 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162384 ret void2385}2386 2387define void @v_shuffle_v3p3_v4p3__7_0_1(ptr addrspace(1) inreg %ptr) {2388; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_0_1:2389; GFX900: ; %bb.0:2390; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2391; GFX900-NEXT: v_mov_b32_e32 v8, 02392; GFX900-NEXT: ;;#ASMSTART2393; GFX900-NEXT: ; def v[4:7]2394; GFX900-NEXT: ;;#ASMEND2395; GFX900-NEXT: ;;#ASMSTART2396; GFX900-NEXT: ; def v[0:3]2397; GFX900-NEXT: ;;#ASMEND2398; GFX900-NEXT: global_store_dwordx3 v8, v[3:5], s[16:17]2399; GFX900-NEXT: s_waitcnt vmcnt(0)2400; GFX900-NEXT: s_setpc_b64 s[30:31]2401;2402; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_0_1:2403; GFX90A: ; %bb.0:2404; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2405; GFX90A-NEXT: ;;#ASMSTART2406; GFX90A-NEXT: ; def v[0:3]2407; GFX90A-NEXT: ;;#ASMEND2408; GFX90A-NEXT: ;;#ASMSTART2409; GFX90A-NEXT: ; def v[2:5]2410; GFX90A-NEXT: ;;#ASMEND2411; GFX90A-NEXT: v_mov_b32_e32 v6, 02412; GFX90A-NEXT: v_mov_b32_e32 v2, v52413; GFX90A-NEXT: v_mov_b32_e32 v3, v02414; GFX90A-NEXT: v_mov_b32_e32 v4, v12415; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]2416; GFX90A-NEXT: s_waitcnt vmcnt(0)2417; GFX90A-NEXT: s_setpc_b64 s[30:31]2418;2419; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_0_1:2420; GFX942: ; %bb.0:2421; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2422; GFX942-NEXT: ;;#ASMSTART2423; GFX942-NEXT: ; def v[0:3]2424; GFX942-NEXT: ;;#ASMEND2425; GFX942-NEXT: v_mov_b32_e32 v6, 02426; GFX942-NEXT: ;;#ASMSTART2427; GFX942-NEXT: ; def v[2:5]2428; GFX942-NEXT: ;;#ASMEND2429; GFX942-NEXT: s_nop 02430; GFX942-NEXT: v_mov_b32_e32 v2, v52431; GFX942-NEXT: v_mov_b32_e32 v3, v02432; GFX942-NEXT: v_mov_b32_e32 v4, v12433; GFX942-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1]2434; GFX942-NEXT: s_waitcnt vmcnt(0)2435; GFX942-NEXT: s_setpc_b64 s[30:31]2436 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()2437 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()2438 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 1>2439 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162440 ret void2441}2442 2443define void @v_shuffle_v3p3_v4p3__7_2_1(ptr addrspace(1) inreg %ptr) {2444; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_2_1:2445; GFX900: ; %bb.0:2446; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2447; GFX900-NEXT: ;;#ASMSTART2448; GFX900-NEXT: ; def v[4:7]2449; GFX900-NEXT: ;;#ASMEND2450; GFX900-NEXT: v_mov_b32_e32 v8, 02451; GFX900-NEXT: v_mov_b32_e32 v4, v62452; GFX900-NEXT: ;;#ASMSTART2453; GFX900-NEXT: ; def v[0:3]2454; GFX900-NEXT: ;;#ASMEND2455; GFX900-NEXT: global_store_dwordx3 v8, v[3:5], s[16:17]2456; GFX900-NEXT: s_waitcnt vmcnt(0)2457; GFX900-NEXT: s_setpc_b64 s[30:31]2458;2459; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_2_1:2460; GFX90A: ; %bb.0:2461; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2462; GFX90A-NEXT: ;;#ASMSTART2463; GFX90A-NEXT: ; def v[4:7]2464; GFX90A-NEXT: ;;#ASMEND2465; GFX90A-NEXT: v_mov_b32_e32 v8, 02466; GFX90A-NEXT: ;;#ASMSTART2467; GFX90A-NEXT: ; def v[0:3]2468; GFX90A-NEXT: ;;#ASMEND2469; GFX90A-NEXT: v_mov_b32_e32 v4, v72470; GFX90A-NEXT: v_mov_b32_e32 v5, v22471; GFX90A-NEXT: v_mov_b32_e32 v6, v12472; GFX90A-NEXT: global_store_dwordx3 v8, v[4:6], s[16:17]2473; GFX90A-NEXT: s_waitcnt vmcnt(0)2474; GFX90A-NEXT: s_setpc_b64 s[30:31]2475;2476; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_2_1:2477; GFX942: ; %bb.0:2478; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2479; GFX942-NEXT: ;;#ASMSTART2480; GFX942-NEXT: ; def v[4:7]2481; GFX942-NEXT: ;;#ASMEND2482; GFX942-NEXT: v_mov_b32_e32 v8, 02483; GFX942-NEXT: ;;#ASMSTART2484; GFX942-NEXT: ; def v[0:3]2485; GFX942-NEXT: ;;#ASMEND2486; GFX942-NEXT: v_mov_b32_e32 v4, v72487; GFX942-NEXT: v_mov_b32_e32 v5, v22488; GFX942-NEXT: v_mov_b32_e32 v6, v12489; GFX942-NEXT: global_store_dwordx3 v8, v[4:6], s[0:1]2490; GFX942-NEXT: s_waitcnt vmcnt(0)2491; GFX942-NEXT: s_setpc_b64 s[30:31]2492 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()2493 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()2494 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 1>2495 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162496 ret void2497}2498 2499define void @v_shuffle_v3p3_v4p3__7_3_1(ptr addrspace(1) inreg %ptr) {2500; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_3_1:2501; GFX900: ; %bb.0:2502; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2503; GFX900-NEXT: ;;#ASMSTART2504; GFX900-NEXT: ; def v[4:7]2505; GFX900-NEXT: ;;#ASMEND2506; GFX900-NEXT: v_mov_b32_e32 v8, 02507; GFX900-NEXT: v_mov_b32_e32 v4, v72508; GFX900-NEXT: ;;#ASMSTART2509; GFX900-NEXT: ; def v[0:3]2510; GFX900-NEXT: ;;#ASMEND2511; GFX900-NEXT: global_store_dwordx3 v8, v[3:5], s[16:17]2512; GFX900-NEXT: s_waitcnt vmcnt(0)2513; GFX900-NEXT: s_setpc_b64 s[30:31]2514;2515; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_3_1:2516; GFX90A: ; %bb.0:2517; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2518; GFX90A-NEXT: ;;#ASMSTART2519; GFX90A-NEXT: ; def v[0:3]2520; GFX90A-NEXT: ;;#ASMEND2521; GFX90A-NEXT: ;;#ASMSTART2522; GFX90A-NEXT: ; def v[4:7]2523; GFX90A-NEXT: ;;#ASMEND2524; GFX90A-NEXT: v_mov_b32_e32 v8, 02525; GFX90A-NEXT: v_mov_b32_e32 v2, v72526; GFX90A-NEXT: v_mov_b32_e32 v4, v12527; GFX90A-NEXT: global_store_dwordx3 v8, v[2:4], s[16:17]2528; GFX90A-NEXT: s_waitcnt vmcnt(0)2529; GFX90A-NEXT: s_setpc_b64 s[30:31]2530;2531; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_3_1:2532; GFX942: ; %bb.0:2533; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2534; GFX942-NEXT: ;;#ASMSTART2535; GFX942-NEXT: ; def v[0:3]2536; GFX942-NEXT: ;;#ASMEND2537; GFX942-NEXT: ;;#ASMSTART2538; GFX942-NEXT: ; def v[4:7]2539; GFX942-NEXT: ;;#ASMEND2540; GFX942-NEXT: v_mov_b32_e32 v8, 02541; GFX942-NEXT: v_mov_b32_e32 v2, v72542; GFX942-NEXT: v_mov_b32_e32 v4, v12543; GFX942-NEXT: global_store_dwordx3 v8, v[2:4], s[0:1]2544; GFX942-NEXT: s_waitcnt vmcnt(0)2545; GFX942-NEXT: s_setpc_b64 s[30:31]2546 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()2547 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()2548 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 1>2549 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162550 ret void2551}2552 2553define void @v_shuffle_v3p3_v4p3__7_4_1(ptr addrspace(1) inreg %ptr) {2554; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_4_1:2555; GFX900: ; %bb.0:2556; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2557; GFX900-NEXT: ;;#ASMSTART2558; GFX900-NEXT: ; def v[4:7]2559; GFX900-NEXT: ;;#ASMEND2560; GFX900-NEXT: v_mov_b32_e32 v8, 02561; GFX900-NEXT: ;;#ASMSTART2562; GFX900-NEXT: ; def v[0:3]2563; GFX900-NEXT: ;;#ASMEND2564; GFX900-NEXT: v_mov_b32_e32 v4, v02565; GFX900-NEXT: global_store_dwordx3 v8, v[3:5], s[16:17]2566; GFX900-NEXT: s_waitcnt vmcnt(0)2567; GFX900-NEXT: s_setpc_b64 s[30:31]2568;2569; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_4_1:2570; GFX90A: ; %bb.0:2571; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2572; GFX90A-NEXT: ;;#ASMSTART2573; GFX90A-NEXT: ; def v[0:3]2574; GFX90A-NEXT: ;;#ASMEND2575; GFX90A-NEXT: v_mov_b32_e32 v6, 02576; GFX90A-NEXT: ;;#ASMSTART2577; GFX90A-NEXT: ; def v[2:5]2578; GFX90A-NEXT: ;;#ASMEND2579; GFX90A-NEXT: v_mov_b32_e32 v8, v52580; GFX90A-NEXT: v_mov_b32_e32 v9, v22581; GFX90A-NEXT: v_mov_b32_e32 v10, v12582; GFX90A-NEXT: global_store_dwordx3 v6, v[8:10], s[16:17]2583; GFX90A-NEXT: s_waitcnt vmcnt(0)2584; GFX90A-NEXT: s_setpc_b64 s[30:31]2585;2586; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_4_1:2587; GFX942: ; %bb.0:2588; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2589; GFX942-NEXT: ;;#ASMSTART2590; GFX942-NEXT: ; def v[0:3]2591; GFX942-NEXT: ;;#ASMEND2592; GFX942-NEXT: v_mov_b32_e32 v6, 02593; GFX942-NEXT: ;;#ASMSTART2594; GFX942-NEXT: ; def v[2:5]2595; GFX942-NEXT: ;;#ASMEND2596; GFX942-NEXT: v_mov_b32_e32 v10, v12597; GFX942-NEXT: v_mov_b32_e32 v8, v52598; GFX942-NEXT: v_mov_b32_e32 v9, v22599; GFX942-NEXT: global_store_dwordx3 v6, v[8:10], s[0:1]2600; GFX942-NEXT: s_waitcnt vmcnt(0)2601; GFX942-NEXT: s_setpc_b64 s[30:31]2602 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()2603 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()2604 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 1>2605 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162606 ret void2607}2608 2609define void @v_shuffle_v3p3_v4p3__7_5_1(ptr addrspace(1) inreg %ptr) {2610; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_5_1:2611; GFX900: ; %bb.0:2612; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2613; GFX900-NEXT: ;;#ASMSTART2614; GFX900-NEXT: ; def v[4:7]2615; GFX900-NEXT: ;;#ASMEND2616; GFX900-NEXT: v_mov_b32_e32 v8, 02617; GFX900-NEXT: ;;#ASMSTART2618; GFX900-NEXT: ; def v[0:3]2619; GFX900-NEXT: ;;#ASMEND2620; GFX900-NEXT: v_mov_b32_e32 v4, v12621; GFX900-NEXT: global_store_dwordx3 v8, v[3:5], s[16:17]2622; GFX900-NEXT: s_waitcnt vmcnt(0)2623; GFX900-NEXT: s_setpc_b64 s[30:31]2624;2625; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_5_1:2626; GFX90A: ; %bb.0:2627; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2628; GFX90A-NEXT: ;;#ASMSTART2629; GFX90A-NEXT: ; def v[0:3]2630; GFX90A-NEXT: ;;#ASMEND2631; GFX90A-NEXT: ;;#ASMSTART2632; GFX90A-NEXT: ; def v[2:5]2633; GFX90A-NEXT: ;;#ASMEND2634; GFX90A-NEXT: v_mov_b32_e32 v6, 02635; GFX90A-NEXT: v_mov_b32_e32 v2, v52636; GFX90A-NEXT: v_mov_b32_e32 v4, v12637; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]2638; GFX90A-NEXT: s_waitcnt vmcnt(0)2639; GFX90A-NEXT: s_setpc_b64 s[30:31]2640;2641; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_5_1:2642; GFX942: ; %bb.0:2643; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2644; GFX942-NEXT: ;;#ASMSTART2645; GFX942-NEXT: ; def v[0:3]2646; GFX942-NEXT: ;;#ASMEND2647; GFX942-NEXT: v_mov_b32_e32 v6, 02648; GFX942-NEXT: ;;#ASMSTART2649; GFX942-NEXT: ; def v[2:5]2650; GFX942-NEXT: ;;#ASMEND2651; GFX942-NEXT: s_nop 02652; GFX942-NEXT: v_mov_b32_e32 v2, v52653; GFX942-NEXT: v_mov_b32_e32 v4, v12654; GFX942-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1]2655; GFX942-NEXT: s_waitcnt vmcnt(0)2656; GFX942-NEXT: s_setpc_b64 s[30:31]2657 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()2658 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()2659 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 1>2660 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162661 ret void2662}2663 2664define void @v_shuffle_v3p3_v4p3__7_6_1(ptr addrspace(1) inreg %ptr) {2665; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_6_1:2666; GFX900: ; %bb.0:2667; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2668; GFX900-NEXT: ;;#ASMSTART2669; GFX900-NEXT: ; def v[4:7]2670; GFX900-NEXT: ;;#ASMEND2671; GFX900-NEXT: v_mov_b32_e32 v8, 02672; GFX900-NEXT: ;;#ASMSTART2673; GFX900-NEXT: ; def v[0:3]2674; GFX900-NEXT: ;;#ASMEND2675; GFX900-NEXT: v_mov_b32_e32 v4, v22676; GFX900-NEXT: global_store_dwordx3 v8, v[3:5], s[16:17]2677; GFX900-NEXT: s_waitcnt vmcnt(0)2678; GFX900-NEXT: s_setpc_b64 s[30:31]2679;2680; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_6_1:2681; GFX90A: ; %bb.0:2682; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2683; GFX90A-NEXT: ;;#ASMSTART2684; GFX90A-NEXT: ; def v[0:3]2685; GFX90A-NEXT: ;;#ASMEND2686; GFX90A-NEXT: ;;#ASMSTART2687; GFX90A-NEXT: ; def v[2:5]2688; GFX90A-NEXT: ;;#ASMEND2689; GFX90A-NEXT: v_mov_b32_e32 v6, 02690; GFX90A-NEXT: v_mov_b32_e32 v2, v52691; GFX90A-NEXT: v_mov_b32_e32 v3, v42692; GFX90A-NEXT: v_mov_b32_e32 v4, v12693; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]2694; GFX90A-NEXT: s_waitcnt vmcnt(0)2695; GFX90A-NEXT: s_setpc_b64 s[30:31]2696;2697; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_6_1:2698; GFX942: ; %bb.0:2699; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2700; GFX942-NEXT: ;;#ASMSTART2701; GFX942-NEXT: ; def v[0:3]2702; GFX942-NEXT: ;;#ASMEND2703; GFX942-NEXT: v_mov_b32_e32 v6, 02704; GFX942-NEXT: ;;#ASMSTART2705; GFX942-NEXT: ; def v[2:5]2706; GFX942-NEXT: ;;#ASMEND2707; GFX942-NEXT: s_nop 02708; GFX942-NEXT: v_mov_b32_e32 v2, v52709; GFX942-NEXT: v_mov_b32_e32 v3, v42710; GFX942-NEXT: v_mov_b32_e32 v4, v12711; GFX942-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1]2712; GFX942-NEXT: s_waitcnt vmcnt(0)2713; GFX942-NEXT: s_setpc_b64 s[30:31]2714 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()2715 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()2716 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 1>2717 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162718 ret void2719}2720 2721define void @v_shuffle_v3p3_v4p3__u_2_2(ptr addrspace(1) inreg %ptr) {2722; GFX900-LABEL: v_shuffle_v3p3_v4p3__u_2_2:2723; GFX900: ; %bb.0:2724; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2725; GFX900-NEXT: ;;#ASMSTART2726; GFX900-NEXT: ; def v[0:3]2727; GFX900-NEXT: ;;#ASMEND2728; GFX900-NEXT: v_mov_b32_e32 v4, 02729; GFX900-NEXT: v_mov_b32_e32 v3, v22730; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]2731; GFX900-NEXT: s_waitcnt vmcnt(0)2732; GFX900-NEXT: s_setpc_b64 s[30:31]2733;2734; GFX90A-LABEL: v_shuffle_v3p3_v4p3__u_2_2:2735; GFX90A: ; %bb.0:2736; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2737; GFX90A-NEXT: ;;#ASMSTART2738; GFX90A-NEXT: ; def v[0:3]2739; GFX90A-NEXT: ;;#ASMEND2740; GFX90A-NEXT: v_mov_b32_e32 v4, 02741; GFX90A-NEXT: v_mov_b32_e32 v1, v22742; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]2743; GFX90A-NEXT: s_waitcnt vmcnt(0)2744; GFX90A-NEXT: s_setpc_b64 s[30:31]2745;2746; GFX942-LABEL: v_shuffle_v3p3_v4p3__u_2_2:2747; GFX942: ; %bb.0:2748; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2749; GFX942-NEXT: ;;#ASMSTART2750; GFX942-NEXT: ; def v[0:3]2751; GFX942-NEXT: ;;#ASMEND2752; GFX942-NEXT: v_mov_b32_e32 v4, 02753; GFX942-NEXT: v_mov_b32_e32 v1, v22754; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]2755; GFX942-NEXT: s_waitcnt vmcnt(0)2756; GFX942-NEXT: s_setpc_b64 s[30:31]2757 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()2758 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 poison, i32 2, i32 2>2759 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162760 ret void2761}2762 2763define void @v_shuffle_v3p3_v4p3__0_2_2(ptr addrspace(1) inreg %ptr) {2764; GFX900-LABEL: v_shuffle_v3p3_v4p3__0_2_2:2765; GFX900: ; %bb.0:2766; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2767; GFX900-NEXT: ;;#ASMSTART2768; GFX900-NEXT: ; def v[0:3]2769; GFX900-NEXT: ;;#ASMEND2770; GFX900-NEXT: v_mov_b32_e32 v4, 02771; GFX900-NEXT: v_mov_b32_e32 v1, v22772; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]2773; GFX900-NEXT: s_waitcnt vmcnt(0)2774; GFX900-NEXT: s_setpc_b64 s[30:31]2775;2776; GFX90A-LABEL: v_shuffle_v3p3_v4p3__0_2_2:2777; GFX90A: ; %bb.0:2778; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2779; GFX90A-NEXT: ;;#ASMSTART2780; GFX90A-NEXT: ; def v[0:3]2781; GFX90A-NEXT: ;;#ASMEND2782; GFX90A-NEXT: v_mov_b32_e32 v4, 02783; GFX90A-NEXT: v_mov_b32_e32 v1, v22784; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]2785; GFX90A-NEXT: s_waitcnt vmcnt(0)2786; GFX90A-NEXT: s_setpc_b64 s[30:31]2787;2788; GFX942-LABEL: v_shuffle_v3p3_v4p3__0_2_2:2789; GFX942: ; %bb.0:2790; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2791; GFX942-NEXT: ;;#ASMSTART2792; GFX942-NEXT: ; def v[0:3]2793; GFX942-NEXT: ;;#ASMEND2794; GFX942-NEXT: v_mov_b32_e32 v4, 02795; GFX942-NEXT: v_mov_b32_e32 v1, v22796; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]2797; GFX942-NEXT: s_waitcnt vmcnt(0)2798; GFX942-NEXT: s_setpc_b64 s[30:31]2799 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()2800 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 0, i32 2, i32 2>2801 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162802 ret void2803}2804 2805define void @v_shuffle_v3p3_v4p3__1_2_2(ptr addrspace(1) inreg %ptr) {2806; GFX900-LABEL: v_shuffle_v3p3_v4p3__1_2_2:2807; GFX900: ; %bb.0:2808; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2809; GFX900-NEXT: ;;#ASMSTART2810; GFX900-NEXT: ; def v[0:3]2811; GFX900-NEXT: ;;#ASMEND2812; GFX900-NEXT: v_mov_b32_e32 v4, 02813; GFX900-NEXT: v_mov_b32_e32 v3, v22814; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]2815; GFX900-NEXT: s_waitcnt vmcnt(0)2816; GFX900-NEXT: s_setpc_b64 s[30:31]2817;2818; GFX90A-LABEL: v_shuffle_v3p3_v4p3__1_2_2:2819; GFX90A: ; %bb.0:2820; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2821; GFX90A-NEXT: ;;#ASMSTART2822; GFX90A-NEXT: ; def v[0:3]2823; GFX90A-NEXT: ;;#ASMEND2824; GFX90A-NEXT: v_mov_b32_e32 v4, 02825; GFX90A-NEXT: v_mov_b32_e32 v0, v12826; GFX90A-NEXT: v_mov_b32_e32 v1, v22827; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]2828; GFX90A-NEXT: s_waitcnt vmcnt(0)2829; GFX90A-NEXT: s_setpc_b64 s[30:31]2830;2831; GFX942-LABEL: v_shuffle_v3p3_v4p3__1_2_2:2832; GFX942: ; %bb.0:2833; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2834; GFX942-NEXT: ;;#ASMSTART2835; GFX942-NEXT: ; def v[0:3]2836; GFX942-NEXT: ;;#ASMEND2837; GFX942-NEXT: v_mov_b32_e32 v4, 02838; GFX942-NEXT: v_mov_b32_e32 v0, v12839; GFX942-NEXT: v_mov_b32_e32 v1, v22840; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]2841; GFX942-NEXT: s_waitcnt vmcnt(0)2842; GFX942-NEXT: s_setpc_b64 s[30:31]2843 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()2844 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 2, i32 2>2845 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162846 ret void2847}2848 2849define void @v_shuffle_v3p3_v4p3__2_2_2(ptr addrspace(1) inreg %ptr) {2850; GFX900-LABEL: v_shuffle_v3p3_v4p3__2_2_2:2851; GFX900: ; %bb.0:2852; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2853; GFX900-NEXT: ;;#ASMSTART2854; GFX900-NEXT: ; def v[0:3]2855; GFX900-NEXT: ;;#ASMEND2856; GFX900-NEXT: v_mov_b32_e32 v5, 02857; GFX900-NEXT: v_mov_b32_e32 v3, v22858; GFX900-NEXT: v_mov_b32_e32 v4, v22859; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]2860; GFX900-NEXT: s_waitcnt vmcnt(0)2861; GFX900-NEXT: s_setpc_b64 s[30:31]2862;2863; GFX90A-LABEL: v_shuffle_v3p3_v4p3__2_2_2:2864; GFX90A: ; %bb.0:2865; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2866; GFX90A-NEXT: ;;#ASMSTART2867; GFX90A-NEXT: ; def v[0:3]2868; GFX90A-NEXT: ;;#ASMEND2869; GFX90A-NEXT: v_mov_b32_e32 v5, 02870; GFX90A-NEXT: v_mov_b32_e32 v3, v22871; GFX90A-NEXT: v_mov_b32_e32 v4, v22872; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]2873; GFX90A-NEXT: s_waitcnt vmcnt(0)2874; GFX90A-NEXT: s_setpc_b64 s[30:31]2875;2876; GFX942-LABEL: v_shuffle_v3p3_v4p3__2_2_2:2877; GFX942: ; %bb.0:2878; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2879; GFX942-NEXT: ;;#ASMSTART2880; GFX942-NEXT: ; def v[0:3]2881; GFX942-NEXT: ;;#ASMEND2882; GFX942-NEXT: v_mov_b32_e32 v5, 02883; GFX942-NEXT: v_mov_b32_e32 v3, v22884; GFX942-NEXT: v_mov_b32_e32 v4, v22885; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]2886; GFX942-NEXT: s_waitcnt vmcnt(0)2887; GFX942-NEXT: s_setpc_b64 s[30:31]2888 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()2889 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 2, i32 2>2890 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162891 ret void2892}2893 2894define void @v_shuffle_v3p3_v4p3__3_2_2(ptr addrspace(1) inreg %ptr) {2895; GFX900-LABEL: v_shuffle_v3p3_v4p3__3_2_2:2896; GFX900: ; %bb.0:2897; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2898; GFX900-NEXT: v_mov_b32_e32 v6, 02899; GFX900-NEXT: ;;#ASMSTART2900; GFX900-NEXT: ; def v[0:3]2901; GFX900-NEXT: ;;#ASMEND2902; GFX900-NEXT: v_mov_b32_e32 v4, v22903; GFX900-NEXT: v_mov_b32_e32 v5, v22904; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]2905; GFX900-NEXT: s_waitcnt vmcnt(0)2906; GFX900-NEXT: s_setpc_b64 s[30:31]2907;2908; GFX90A-LABEL: v_shuffle_v3p3_v4p3__3_2_2:2909; GFX90A: ; %bb.0:2910; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2911; GFX90A-NEXT: ;;#ASMSTART2912; GFX90A-NEXT: ; def v[0:3]2913; GFX90A-NEXT: ;;#ASMEND2914; GFX90A-NEXT: v_mov_b32_e32 v4, 02915; GFX90A-NEXT: v_mov_b32_e32 v0, v32916; GFX90A-NEXT: v_mov_b32_e32 v1, v22917; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]2918; GFX90A-NEXT: s_waitcnt vmcnt(0)2919; GFX90A-NEXT: s_setpc_b64 s[30:31]2920;2921; GFX942-LABEL: v_shuffle_v3p3_v4p3__3_2_2:2922; GFX942: ; %bb.0:2923; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2924; GFX942-NEXT: ;;#ASMSTART2925; GFX942-NEXT: ; def v[0:3]2926; GFX942-NEXT: ;;#ASMEND2927; GFX942-NEXT: v_mov_b32_e32 v4, 02928; GFX942-NEXT: v_mov_b32_e32 v0, v32929; GFX942-NEXT: v_mov_b32_e32 v1, v22930; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]2931; GFX942-NEXT: s_waitcnt vmcnt(0)2932; GFX942-NEXT: s_setpc_b64 s[30:31]2933 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()2934 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 3, i32 2, i32 2>2935 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162936 ret void2937}2938 2939define void @v_shuffle_v3p3_v4p3__4_2_2(ptr addrspace(1) inreg %ptr) {2940; GFX900-LABEL: v_shuffle_v3p3_v4p3__4_2_2:2941; GFX900: ; %bb.0:2942; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2943; GFX900-NEXT: ;;#ASMSTART2944; GFX900-NEXT: ; def v[0:3]2945; GFX900-NEXT: ;;#ASMEND2946; GFX900-NEXT: v_mov_b32_e32 v4, 02947; GFX900-NEXT: v_mov_b32_e32 v3, v22948; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]2949; GFX900-NEXT: s_waitcnt vmcnt(0)2950; GFX900-NEXT: s_setpc_b64 s[30:31]2951;2952; GFX90A-LABEL: v_shuffle_v3p3_v4p3__4_2_2:2953; GFX90A: ; %bb.0:2954; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2955; GFX90A-NEXT: ;;#ASMSTART2956; GFX90A-NEXT: ; def v[0:3]2957; GFX90A-NEXT: ;;#ASMEND2958; GFX90A-NEXT: v_mov_b32_e32 v4, 02959; GFX90A-NEXT: v_mov_b32_e32 v1, v22960; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]2961; GFX90A-NEXT: s_waitcnt vmcnt(0)2962; GFX90A-NEXT: s_setpc_b64 s[30:31]2963;2964; GFX942-LABEL: v_shuffle_v3p3_v4p3__4_2_2:2965; GFX942: ; %bb.0:2966; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2967; GFX942-NEXT: ;;#ASMSTART2968; GFX942-NEXT: ; def v[0:3]2969; GFX942-NEXT: ;;#ASMEND2970; GFX942-NEXT: v_mov_b32_e32 v4, 02971; GFX942-NEXT: v_mov_b32_e32 v1, v22972; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]2973; GFX942-NEXT: s_waitcnt vmcnt(0)2974; GFX942-NEXT: s_setpc_b64 s[30:31]2975 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()2976 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 4, i32 2, i32 2>2977 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162978 ret void2979}2980 2981define void @v_shuffle_v3p3_v4p3__5_2_2(ptr addrspace(1) inreg %ptr) {2982; GFX900-LABEL: v_shuffle_v3p3_v4p3__5_2_2:2983; GFX900: ; %bb.0:2984; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2985; GFX900-NEXT: ;;#ASMSTART2986; GFX900-NEXT: ; def v[0:3]2987; GFX900-NEXT: ;;#ASMEND2988; GFX900-NEXT: ;;#ASMSTART2989; GFX900-NEXT: ; def v[3:6]2990; GFX900-NEXT: ;;#ASMEND2991; GFX900-NEXT: v_mov_b32_e32 v7, 02992; GFX900-NEXT: v_mov_b32_e32 v5, v22993; GFX900-NEXT: v_mov_b32_e32 v6, v22994; GFX900-NEXT: global_store_dwordx3 v7, v[4:6], s[16:17]2995; GFX900-NEXT: s_waitcnt vmcnt(0)2996; GFX900-NEXT: s_setpc_b64 s[30:31]2997;2998; GFX90A-LABEL: v_shuffle_v3p3_v4p3__5_2_2:2999; GFX90A: ; %bb.0:3000; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3001; GFX90A-NEXT: ;;#ASMSTART3002; GFX90A-NEXT: ; def v[0:3]3003; GFX90A-NEXT: ;;#ASMEND3004; GFX90A-NEXT: v_mov_b32_e32 v8, 03005; GFX90A-NEXT: ;;#ASMSTART3006; GFX90A-NEXT: ; def v[4:7]3007; GFX90A-NEXT: ;;#ASMEND3008; GFX90A-NEXT: v_mov_b32_e32 v0, v53009; GFX90A-NEXT: v_mov_b32_e32 v1, v23010; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]3011; GFX90A-NEXT: s_waitcnt vmcnt(0)3012; GFX90A-NEXT: s_setpc_b64 s[30:31]3013;3014; GFX942-LABEL: v_shuffle_v3p3_v4p3__5_2_2:3015; GFX942: ; %bb.0:3016; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3017; GFX942-NEXT: ;;#ASMSTART3018; GFX942-NEXT: ; def v[0:3]3019; GFX942-NEXT: ;;#ASMEND3020; GFX942-NEXT: v_mov_b32_e32 v8, 03021; GFX942-NEXT: ;;#ASMSTART3022; GFX942-NEXT: ; def v[4:7]3023; GFX942-NEXT: ;;#ASMEND3024; GFX942-NEXT: v_mov_b32_e32 v1, v23025; GFX942-NEXT: v_mov_b32_e32 v0, v53026; GFX942-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1]3027; GFX942-NEXT: s_waitcnt vmcnt(0)3028; GFX942-NEXT: s_setpc_b64 s[30:31]3029 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3030 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3031 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 2, i32 2>3032 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163033 ret void3034}3035 3036define void @v_shuffle_v3p3_v4p3__6_2_2(ptr addrspace(1) inreg %ptr) {3037; GFX900-LABEL: v_shuffle_v3p3_v4p3__6_2_2:3038; GFX900: ; %bb.0:3039; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3040; GFX900-NEXT: ;;#ASMSTART3041; GFX900-NEXT: ; def v[2:5]3042; GFX900-NEXT: ;;#ASMEND3043; GFX900-NEXT: ;;#ASMSTART3044; GFX900-NEXT: ; def v[0:3]3045; GFX900-NEXT: ;;#ASMEND3046; GFX900-NEXT: v_mov_b32_e32 v6, 03047; GFX900-NEXT: v_mov_b32_e32 v3, v43048; GFX900-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]3049; GFX900-NEXT: s_waitcnt vmcnt(0)3050; GFX900-NEXT: s_setpc_b64 s[30:31]3051;3052; GFX90A-LABEL: v_shuffle_v3p3_v4p3__6_2_2:3053; GFX90A: ; %bb.0:3054; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3055; GFX90A-NEXT: ;;#ASMSTART3056; GFX90A-NEXT: ; def v[2:5]3057; GFX90A-NEXT: ;;#ASMEND3058; GFX90A-NEXT: ;;#ASMSTART3059; GFX90A-NEXT: ; def v[0:3]3060; GFX90A-NEXT: ;;#ASMEND3061; GFX90A-NEXT: v_mov_b32_e32 v6, 03062; GFX90A-NEXT: v_mov_b32_e32 v3, v43063; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]3064; GFX90A-NEXT: s_waitcnt vmcnt(0)3065; GFX90A-NEXT: s_setpc_b64 s[30:31]3066;3067; GFX942-LABEL: v_shuffle_v3p3_v4p3__6_2_2:3068; GFX942: ; %bb.0:3069; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3070; GFX942-NEXT: ;;#ASMSTART3071; GFX942-NEXT: ; def v[2:5]3072; GFX942-NEXT: ;;#ASMEND3073; GFX942-NEXT: v_mov_b32_e32 v6, 03074; GFX942-NEXT: ;;#ASMSTART3075; GFX942-NEXT: ; def v[0:3]3076; GFX942-NEXT: ;;#ASMEND3077; GFX942-NEXT: s_nop 03078; GFX942-NEXT: v_mov_b32_e32 v3, v43079; GFX942-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1]3080; GFX942-NEXT: s_waitcnt vmcnt(0)3081; GFX942-NEXT: s_setpc_b64 s[30:31]3082 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3083 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3084 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 2, i32 2>3085 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163086 ret void3087}3088 3089define void @v_shuffle_v3p3_v4p3__7_2_2(ptr addrspace(1) inreg %ptr) {3090; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_2_2:3091; GFX900: ; %bb.0:3092; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3093; GFX900-NEXT: ;;#ASMSTART3094; GFX900-NEXT: ; def v[2:5]3095; GFX900-NEXT: ;;#ASMEND3096; GFX900-NEXT: v_mov_b32_e32 v6, 03097; GFX900-NEXT: v_mov_b32_e32 v5, v43098; GFX900-NEXT: ;;#ASMSTART3099; GFX900-NEXT: ; def v[0:3]3100; GFX900-NEXT: ;;#ASMEND3101; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]3102; GFX900-NEXT: s_waitcnt vmcnt(0)3103; GFX900-NEXT: s_setpc_b64 s[30:31]3104;3105; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_2_2:3106; GFX90A: ; %bb.0:3107; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3108; GFX90A-NEXT: ;;#ASMSTART3109; GFX90A-NEXT: ; def v[0:3]3110; GFX90A-NEXT: ;;#ASMEND3111; GFX90A-NEXT: v_mov_b32_e32 v8, 03112; GFX90A-NEXT: ;;#ASMSTART3113; GFX90A-NEXT: ; def v[4:7]3114; GFX90A-NEXT: ;;#ASMEND3115; GFX90A-NEXT: v_mov_b32_e32 v0, v73116; GFX90A-NEXT: v_mov_b32_e32 v1, v23117; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]3118; GFX90A-NEXT: s_waitcnt vmcnt(0)3119; GFX90A-NEXT: s_setpc_b64 s[30:31]3120;3121; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_2_2:3122; GFX942: ; %bb.0:3123; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3124; GFX942-NEXT: ;;#ASMSTART3125; GFX942-NEXT: ; def v[0:3]3126; GFX942-NEXT: ;;#ASMEND3127; GFX942-NEXT: v_mov_b32_e32 v8, 03128; GFX942-NEXT: ;;#ASMSTART3129; GFX942-NEXT: ; def v[4:7]3130; GFX942-NEXT: ;;#ASMEND3131; GFX942-NEXT: v_mov_b32_e32 v1, v23132; GFX942-NEXT: v_mov_b32_e32 v0, v73133; GFX942-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1]3134; GFX942-NEXT: s_waitcnt vmcnt(0)3135; GFX942-NEXT: s_setpc_b64 s[30:31]3136 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3137 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3138 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 2>3139 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163140 ret void3141}3142 3143define void @v_shuffle_v3p3_v4p3__7_u_2(ptr addrspace(1) inreg %ptr) {3144; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_u_2:3145; GFX900: ; %bb.0:3146; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3147; GFX900-NEXT: v_mov_b32_e32 v7, 03148; GFX900-NEXT: ;;#ASMSTART3149; GFX900-NEXT: ; def v[3:6]3150; GFX900-NEXT: ;;#ASMEND3151; GFX900-NEXT: ;;#ASMSTART3152; GFX900-NEXT: ; def v[0:3]3153; GFX900-NEXT: ;;#ASMEND3154; GFX900-NEXT: global_store_dwordx3 v7, v[3:5], s[16:17]3155; GFX900-NEXT: s_waitcnt vmcnt(0)3156; GFX900-NEXT: s_setpc_b64 s[30:31]3157;3158; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_u_2:3159; GFX90A: ; %bb.0:3160; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3161; GFX90A-NEXT: ;;#ASMSTART3162; GFX90A-NEXT: ; def v[0:3]3163; GFX90A-NEXT: ;;#ASMEND3164; GFX90A-NEXT: v_mov_b32_e32 v8, 03165; GFX90A-NEXT: ;;#ASMSTART3166; GFX90A-NEXT: ; def v[4:7]3167; GFX90A-NEXT: ;;#ASMEND3168; GFX90A-NEXT: v_mov_b32_e32 v0, v73169; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]3170; GFX90A-NEXT: s_waitcnt vmcnt(0)3171; GFX90A-NEXT: s_setpc_b64 s[30:31]3172;3173; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_u_2:3174; GFX942: ; %bb.0:3175; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3176; GFX942-NEXT: ;;#ASMSTART3177; GFX942-NEXT: ; def v[0:3]3178; GFX942-NEXT: ;;#ASMEND3179; GFX942-NEXT: v_mov_b32_e32 v8, 03180; GFX942-NEXT: ;;#ASMSTART3181; GFX942-NEXT: ; def v[4:7]3182; GFX942-NEXT: ;;#ASMEND3183; GFX942-NEXT: s_nop 03184; GFX942-NEXT: v_mov_b32_e32 v0, v73185; GFX942-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1]3186; GFX942-NEXT: s_waitcnt vmcnt(0)3187; GFX942-NEXT: s_setpc_b64 s[30:31]3188 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3189 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3190 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 2>3191 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163192 ret void3193}3194 3195define void @v_shuffle_v3p3_v4p3__7_0_2(ptr addrspace(1) inreg %ptr) {3196; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_0_2:3197; GFX900: ; %bb.0:3198; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3199; GFX900-NEXT: ;;#ASMSTART3200; GFX900-NEXT: ; def v[4:7]3201; GFX900-NEXT: ;;#ASMEND3202; GFX900-NEXT: v_mov_b32_e32 v8, 03203; GFX900-NEXT: v_mov_b32_e32 v5, v63204; GFX900-NEXT: ;;#ASMSTART3205; GFX900-NEXT: ; def v[0:3]3206; GFX900-NEXT: ;;#ASMEND3207; GFX900-NEXT: global_store_dwordx3 v8, v[3:5], s[16:17]3208; GFX900-NEXT: s_waitcnt vmcnt(0)3209; GFX900-NEXT: s_setpc_b64 s[30:31]3210;3211; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_0_2:3212; GFX90A: ; %bb.0:3213; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3214; GFX90A-NEXT: ;;#ASMSTART3215; GFX90A-NEXT: ; def v[4:7]3216; GFX90A-NEXT: ;;#ASMEND3217; GFX90A-NEXT: v_mov_b32_e32 v8, 03218; GFX90A-NEXT: ;;#ASMSTART3219; GFX90A-NEXT: ; def v[0:3]3220; GFX90A-NEXT: ;;#ASMEND3221; GFX90A-NEXT: v_mov_b32_e32 v4, v73222; GFX90A-NEXT: v_mov_b32_e32 v5, v03223; GFX90A-NEXT: v_mov_b32_e32 v6, v23224; GFX90A-NEXT: global_store_dwordx3 v8, v[4:6], s[16:17]3225; GFX90A-NEXT: s_waitcnt vmcnt(0)3226; GFX90A-NEXT: s_setpc_b64 s[30:31]3227;3228; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_0_2:3229; GFX942: ; %bb.0:3230; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3231; GFX942-NEXT: ;;#ASMSTART3232; GFX942-NEXT: ; def v[4:7]3233; GFX942-NEXT: ;;#ASMEND3234; GFX942-NEXT: v_mov_b32_e32 v8, 03235; GFX942-NEXT: ;;#ASMSTART3236; GFX942-NEXT: ; def v[0:3]3237; GFX942-NEXT: ;;#ASMEND3238; GFX942-NEXT: v_mov_b32_e32 v4, v73239; GFX942-NEXT: v_mov_b32_e32 v5, v03240; GFX942-NEXT: v_mov_b32_e32 v6, v23241; GFX942-NEXT: global_store_dwordx3 v8, v[4:6], s[0:1]3242; GFX942-NEXT: s_waitcnt vmcnt(0)3243; GFX942-NEXT: s_setpc_b64 s[30:31]3244 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3245 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3246 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 2>3247 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163248 ret void3249}3250 3251define void @v_shuffle_v3p3_v4p3__7_1_2(ptr addrspace(1) inreg %ptr) {3252; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_1_2:3253; GFX900: ; %bb.0:3254; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3255; GFX900-NEXT: v_mov_b32_e32 v7, 03256; GFX900-NEXT: ;;#ASMSTART3257; GFX900-NEXT: ; def v[3:6]3258; GFX900-NEXT: ;;#ASMEND3259; GFX900-NEXT: ;;#ASMSTART3260; GFX900-NEXT: ; def v[0:3]3261; GFX900-NEXT: ;;#ASMEND3262; GFX900-NEXT: global_store_dwordx3 v7, v[3:5], s[16:17]3263; GFX900-NEXT: s_waitcnt vmcnt(0)3264; GFX900-NEXT: s_setpc_b64 s[30:31]3265;3266; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_1_2:3267; GFX90A: ; %bb.0:3268; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3269; GFX90A-NEXT: ;;#ASMSTART3270; GFX90A-NEXT: ; def v[0:3]3271; GFX90A-NEXT: ;;#ASMEND3272; GFX90A-NEXT: v_mov_b32_e32 v8, 03273; GFX90A-NEXT: ;;#ASMSTART3274; GFX90A-NEXT: ; def v[4:7]3275; GFX90A-NEXT: ;;#ASMEND3276; GFX90A-NEXT: v_mov_b32_e32 v0, v73277; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]3278; GFX90A-NEXT: s_waitcnt vmcnt(0)3279; GFX90A-NEXT: s_setpc_b64 s[30:31]3280;3281; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_1_2:3282; GFX942: ; %bb.0:3283; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3284; GFX942-NEXT: ;;#ASMSTART3285; GFX942-NEXT: ; def v[0:3]3286; GFX942-NEXT: ;;#ASMEND3287; GFX942-NEXT: v_mov_b32_e32 v8, 03288; GFX942-NEXT: ;;#ASMSTART3289; GFX942-NEXT: ; def v[4:7]3290; GFX942-NEXT: ;;#ASMEND3291; GFX942-NEXT: s_nop 03292; GFX942-NEXT: v_mov_b32_e32 v0, v73293; GFX942-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1]3294; GFX942-NEXT: s_waitcnt vmcnt(0)3295; GFX942-NEXT: s_setpc_b64 s[30:31]3296 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3297 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3298 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 2>3299 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163300 ret void3301}3302 3303define void @v_shuffle_v3p3_v4p3__7_3_2(ptr addrspace(1) inreg %ptr) {3304; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_3_2:3305; GFX900: ; %bb.0:3306; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3307; GFX900-NEXT: ;;#ASMSTART3308; GFX900-NEXT: ; def v[3:6]3309; GFX900-NEXT: ;;#ASMEND3310; GFX900-NEXT: v_mov_b32_e32 v7, 03311; GFX900-NEXT: v_mov_b32_e32 v4, v63312; GFX900-NEXT: ;;#ASMSTART3313; GFX900-NEXT: ; def v[0:3]3314; GFX900-NEXT: ;;#ASMEND3315; GFX900-NEXT: global_store_dwordx3 v7, v[3:5], s[16:17]3316; GFX900-NEXT: s_waitcnt vmcnt(0)3317; GFX900-NEXT: s_setpc_b64 s[30:31]3318;3319; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_3_2:3320; GFX90A: ; %bb.0:3321; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3322; GFX90A-NEXT: ;;#ASMSTART3323; GFX90A-NEXT: ; def v[0:3]3324; GFX90A-NEXT: ;;#ASMEND3325; GFX90A-NEXT: v_mov_b32_e32 v8, 03326; GFX90A-NEXT: ;;#ASMSTART3327; GFX90A-NEXT: ; def v[4:7]3328; GFX90A-NEXT: ;;#ASMEND3329; GFX90A-NEXT: v_mov_b32_e32 v0, v73330; GFX90A-NEXT: v_mov_b32_e32 v1, v33331; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]3332; GFX90A-NEXT: s_waitcnt vmcnt(0)3333; GFX90A-NEXT: s_setpc_b64 s[30:31]3334;3335; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_3_2:3336; GFX942: ; %bb.0:3337; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3338; GFX942-NEXT: ;;#ASMSTART3339; GFX942-NEXT: ; def v[0:3]3340; GFX942-NEXT: ;;#ASMEND3341; GFX942-NEXT: v_mov_b32_e32 v8, 03342; GFX942-NEXT: ;;#ASMSTART3343; GFX942-NEXT: ; def v[4:7]3344; GFX942-NEXT: ;;#ASMEND3345; GFX942-NEXT: v_mov_b32_e32 v1, v33346; GFX942-NEXT: v_mov_b32_e32 v0, v73347; GFX942-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1]3348; GFX942-NEXT: s_waitcnt vmcnt(0)3349; GFX942-NEXT: s_setpc_b64 s[30:31]3350 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3351 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3352 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 2>3353 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163354 ret void3355}3356 3357define void @v_shuffle_v3p3_v4p3__7_4_2(ptr addrspace(1) inreg %ptr) {3358; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_4_2:3359; GFX900: ; %bb.0:3360; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3361; GFX900-NEXT: ;;#ASMSTART3362; GFX900-NEXT: ; def v[3:6]3363; GFX900-NEXT: ;;#ASMEND3364; GFX900-NEXT: v_mov_b32_e32 v7, 03365; GFX900-NEXT: ;;#ASMSTART3366; GFX900-NEXT: ; def v[0:3]3367; GFX900-NEXT: ;;#ASMEND3368; GFX900-NEXT: v_mov_b32_e32 v4, v03369; GFX900-NEXT: global_store_dwordx3 v7, v[3:5], s[16:17]3370; GFX900-NEXT: s_waitcnt vmcnt(0)3371; GFX900-NEXT: s_setpc_b64 s[30:31]3372;3373; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_4_2:3374; GFX90A: ; %bb.0:3375; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3376; GFX90A-NEXT: ;;#ASMSTART3377; GFX90A-NEXT: ; def v[0:3]3378; GFX90A-NEXT: ;;#ASMEND3379; GFX90A-NEXT: v_mov_b32_e32 v8, 03380; GFX90A-NEXT: ;;#ASMSTART3381; GFX90A-NEXT: ; def v[4:7]3382; GFX90A-NEXT: ;;#ASMEND3383; GFX90A-NEXT: v_mov_b32_e32 v0, v73384; GFX90A-NEXT: v_mov_b32_e32 v1, v43385; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]3386; GFX90A-NEXT: s_waitcnt vmcnt(0)3387; GFX90A-NEXT: s_setpc_b64 s[30:31]3388;3389; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_4_2:3390; GFX942: ; %bb.0:3391; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3392; GFX942-NEXT: ;;#ASMSTART3393; GFX942-NEXT: ; def v[0:3]3394; GFX942-NEXT: ;;#ASMEND3395; GFX942-NEXT: v_mov_b32_e32 v8, 03396; GFX942-NEXT: ;;#ASMSTART3397; GFX942-NEXT: ; def v[4:7]3398; GFX942-NEXT: ;;#ASMEND3399; GFX942-NEXT: s_nop 03400; GFX942-NEXT: v_mov_b32_e32 v0, v73401; GFX942-NEXT: v_mov_b32_e32 v1, v43402; GFX942-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1]3403; GFX942-NEXT: s_waitcnt vmcnt(0)3404; GFX942-NEXT: s_setpc_b64 s[30:31]3405 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3406 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3407 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 2>3408 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163409 ret void3410}3411 3412define void @v_shuffle_v3p3_v4p3__7_5_2(ptr addrspace(1) inreg %ptr) {3413; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_5_2:3414; GFX900: ; %bb.0:3415; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3416; GFX900-NEXT: ;;#ASMSTART3417; GFX900-NEXT: ; def v[3:6]3418; GFX900-NEXT: ;;#ASMEND3419; GFX900-NEXT: v_mov_b32_e32 v7, 03420; GFX900-NEXT: ;;#ASMSTART3421; GFX900-NEXT: ; def v[0:3]3422; GFX900-NEXT: ;;#ASMEND3423; GFX900-NEXT: v_mov_b32_e32 v4, v13424; GFX900-NEXT: global_store_dwordx3 v7, v[3:5], s[16:17]3425; GFX900-NEXT: s_waitcnt vmcnt(0)3426; GFX900-NEXT: s_setpc_b64 s[30:31]3427;3428; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_5_2:3429; GFX90A: ; %bb.0:3430; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3431; GFX90A-NEXT: ;;#ASMSTART3432; GFX90A-NEXT: ; def v[4:7]3433; GFX90A-NEXT: ;;#ASMEND3434; GFX90A-NEXT: v_mov_b32_e32 v8, 03435; GFX90A-NEXT: ;;#ASMSTART3436; GFX90A-NEXT: ; def v[0:3]3437; GFX90A-NEXT: ;;#ASMEND3438; GFX90A-NEXT: v_mov_b32_e32 v4, v73439; GFX90A-NEXT: v_mov_b32_e32 v6, v23440; GFX90A-NEXT: global_store_dwordx3 v8, v[4:6], s[16:17]3441; GFX90A-NEXT: s_waitcnt vmcnt(0)3442; GFX90A-NEXT: s_setpc_b64 s[30:31]3443;3444; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_5_2:3445; GFX942: ; %bb.0:3446; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3447; GFX942-NEXT: ;;#ASMSTART3448; GFX942-NEXT: ; def v[4:7]3449; GFX942-NEXT: ;;#ASMEND3450; GFX942-NEXT: v_mov_b32_e32 v8, 03451; GFX942-NEXT: ;;#ASMSTART3452; GFX942-NEXT: ; def v[0:3]3453; GFX942-NEXT: ;;#ASMEND3454; GFX942-NEXT: v_mov_b32_e32 v4, v73455; GFX942-NEXT: v_mov_b32_e32 v6, v23456; GFX942-NEXT: global_store_dwordx3 v8, v[4:6], s[0:1]3457; GFX942-NEXT: s_waitcnt vmcnt(0)3458; GFX942-NEXT: s_setpc_b64 s[30:31]3459 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3460 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3461 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 2>3462 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163463 ret void3464}3465 3466define void @v_shuffle_v3p3_v4p3__7_6_2(ptr addrspace(1) inreg %ptr) {3467; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_6_2:3468; GFX900: ; %bb.0:3469; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3470; GFX900-NEXT: ;;#ASMSTART3471; GFX900-NEXT: ; def v[3:6]3472; GFX900-NEXT: ;;#ASMEND3473; GFX900-NEXT: v_mov_b32_e32 v7, 03474; GFX900-NEXT: ;;#ASMSTART3475; GFX900-NEXT: ; def v[0:3]3476; GFX900-NEXT: ;;#ASMEND3477; GFX900-NEXT: v_mov_b32_e32 v4, v23478; GFX900-NEXT: global_store_dwordx3 v7, v[3:5], s[16:17]3479; GFX900-NEXT: s_waitcnt vmcnt(0)3480; GFX900-NEXT: s_setpc_b64 s[30:31]3481;3482; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_6_2:3483; GFX90A: ; %bb.0:3484; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3485; GFX90A-NEXT: ;;#ASMSTART3486; GFX90A-NEXT: ; def v[0:3]3487; GFX90A-NEXT: ;;#ASMEND3488; GFX90A-NEXT: v_mov_b32_e32 v8, 03489; GFX90A-NEXT: ;;#ASMSTART3490; GFX90A-NEXT: ; def v[4:7]3491; GFX90A-NEXT: ;;#ASMEND3492; GFX90A-NEXT: v_mov_b32_e32 v0, v73493; GFX90A-NEXT: v_mov_b32_e32 v1, v63494; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]3495; GFX90A-NEXT: s_waitcnt vmcnt(0)3496; GFX90A-NEXT: s_setpc_b64 s[30:31]3497;3498; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_6_2:3499; GFX942: ; %bb.0:3500; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3501; GFX942-NEXT: ;;#ASMSTART3502; GFX942-NEXT: ; def v[0:3]3503; GFX942-NEXT: ;;#ASMEND3504; GFX942-NEXT: v_mov_b32_e32 v8, 03505; GFX942-NEXT: ;;#ASMSTART3506; GFX942-NEXT: ; def v[4:7]3507; GFX942-NEXT: ;;#ASMEND3508; GFX942-NEXT: s_nop 03509; GFX942-NEXT: v_mov_b32_e32 v0, v73510; GFX942-NEXT: v_mov_b32_e32 v1, v63511; GFX942-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1]3512; GFX942-NEXT: s_waitcnt vmcnt(0)3513; GFX942-NEXT: s_setpc_b64 s[30:31]3514 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3515 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3516 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 2>3517 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163518 ret void3519}3520 3521define void @v_shuffle_v3p3_v4p3__u_3_3(ptr addrspace(1) inreg %ptr) {3522; GFX900-LABEL: v_shuffle_v3p3_v4p3__u_3_3:3523; GFX900: ; %bb.0:3524; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3525; GFX900-NEXT: v_mov_b32_e32 v5, 03526; GFX900-NEXT: ;;#ASMSTART3527; GFX900-NEXT: ; def v[0:3]3528; GFX900-NEXT: ;;#ASMEND3529; GFX900-NEXT: v_mov_b32_e32 v4, v33530; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]3531; GFX900-NEXT: s_waitcnt vmcnt(0)3532; GFX900-NEXT: s_setpc_b64 s[30:31]3533;3534; GFX90A-LABEL: v_shuffle_v3p3_v4p3__u_3_3:3535; GFX90A: ; %bb.0:3536; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3537; GFX90A-NEXT: v_mov_b32_e32 v5, 03538; GFX90A-NEXT: ;;#ASMSTART3539; GFX90A-NEXT: ; def v[0:3]3540; GFX90A-NEXT: ;;#ASMEND3541; GFX90A-NEXT: v_mov_b32_e32 v4, v33542; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]3543; GFX90A-NEXT: s_waitcnt vmcnt(0)3544; GFX90A-NEXT: s_setpc_b64 s[30:31]3545;3546; GFX942-LABEL: v_shuffle_v3p3_v4p3__u_3_3:3547; GFX942: ; %bb.0:3548; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3549; GFX942-NEXT: v_mov_b32_e32 v5, 03550; GFX942-NEXT: ;;#ASMSTART3551; GFX942-NEXT: ; def v[0:3]3552; GFX942-NEXT: ;;#ASMEND3553; GFX942-NEXT: s_nop 03554; GFX942-NEXT: v_mov_b32_e32 v4, v33555; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]3556; GFX942-NEXT: s_waitcnt vmcnt(0)3557; GFX942-NEXT: s_setpc_b64 s[30:31]3558 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3559 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 poison, i32 3, i32 3>3560 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163561 ret void3562}3563 3564define void @v_shuffle_v3p3_v4p3__0_3_3(ptr addrspace(1) inreg %ptr) {3565; GFX900-LABEL: v_shuffle_v3p3_v4p3__0_3_3:3566; GFX900: ; %bb.0:3567; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3568; GFX900-NEXT: ;;#ASMSTART3569; GFX900-NEXT: ; def v[0:3]3570; GFX900-NEXT: ;;#ASMEND3571; GFX900-NEXT: v_mov_b32_e32 v4, 03572; GFX900-NEXT: v_mov_b32_e32 v1, v33573; GFX900-NEXT: v_mov_b32_e32 v2, v33574; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]3575; GFX900-NEXT: s_waitcnt vmcnt(0)3576; GFX900-NEXT: s_setpc_b64 s[30:31]3577;3578; GFX90A-LABEL: v_shuffle_v3p3_v4p3__0_3_3:3579; GFX90A: ; %bb.0:3580; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3581; GFX90A-NEXT: ;;#ASMSTART3582; GFX90A-NEXT: ; def v[0:3]3583; GFX90A-NEXT: ;;#ASMEND3584; GFX90A-NEXT: v_mov_b32_e32 v4, 03585; GFX90A-NEXT: v_mov_b32_e32 v1, v33586; GFX90A-NEXT: v_mov_b32_e32 v2, v33587; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]3588; GFX90A-NEXT: s_waitcnt vmcnt(0)3589; GFX90A-NEXT: s_setpc_b64 s[30:31]3590;3591; GFX942-LABEL: v_shuffle_v3p3_v4p3__0_3_3:3592; GFX942: ; %bb.0:3593; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3594; GFX942-NEXT: ;;#ASMSTART3595; GFX942-NEXT: ; def v[0:3]3596; GFX942-NEXT: ;;#ASMEND3597; GFX942-NEXT: v_mov_b32_e32 v4, 03598; GFX942-NEXT: v_mov_b32_e32 v1, v33599; GFX942-NEXT: v_mov_b32_e32 v2, v33600; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]3601; GFX942-NEXT: s_waitcnt vmcnt(0)3602; GFX942-NEXT: s_setpc_b64 s[30:31]3603 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3604 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 0, i32 3, i32 3>3605 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163606 ret void3607}3608 3609define void @v_shuffle_v3p3_v4p3__1_3_3(ptr addrspace(1) inreg %ptr) {3610; GFX900-LABEL: v_shuffle_v3p3_v4p3__1_3_3:3611; GFX900: ; %bb.0:3612; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3613; GFX900-NEXT: ;;#ASMSTART3614; GFX900-NEXT: ; def v[0:3]3615; GFX900-NEXT: ;;#ASMEND3616; GFX900-NEXT: v_mov_b32_e32 v4, 03617; GFX900-NEXT: v_mov_b32_e32 v2, v33618; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]3619; GFX900-NEXT: s_waitcnt vmcnt(0)3620; GFX900-NEXT: s_setpc_b64 s[30:31]3621;3622; GFX90A-LABEL: v_shuffle_v3p3_v4p3__1_3_3:3623; GFX90A: ; %bb.0:3624; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3625; GFX90A-NEXT: ;;#ASMSTART3626; GFX90A-NEXT: ; def v[0:3]3627; GFX90A-NEXT: ;;#ASMEND3628; GFX90A-NEXT: v_mov_b32_e32 v5, 03629; GFX90A-NEXT: v_mov_b32_e32 v2, v13630; GFX90A-NEXT: v_mov_b32_e32 v4, v33631; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]3632; GFX90A-NEXT: s_waitcnt vmcnt(0)3633; GFX90A-NEXT: s_setpc_b64 s[30:31]3634;3635; GFX942-LABEL: v_shuffle_v3p3_v4p3__1_3_3:3636; GFX942: ; %bb.0:3637; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3638; GFX942-NEXT: ;;#ASMSTART3639; GFX942-NEXT: ; def v[0:3]3640; GFX942-NEXT: ;;#ASMEND3641; GFX942-NEXT: v_mov_b32_e32 v5, 03642; GFX942-NEXT: v_mov_b32_e32 v2, v13643; GFX942-NEXT: v_mov_b32_e32 v4, v33644; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]3645; GFX942-NEXT: s_waitcnt vmcnt(0)3646; GFX942-NEXT: s_setpc_b64 s[30:31]3647 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3648 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 3, i32 3>3649 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163650 ret void3651}3652 3653define void @v_shuffle_v3p3_v4p3__2_3_3(ptr addrspace(1) inreg %ptr) {3654; GFX900-LABEL: v_shuffle_v3p3_v4p3__2_3_3:3655; GFX900: ; %bb.0:3656; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3657; GFX900-NEXT: v_mov_b32_e32 v5, 03658; GFX900-NEXT: ;;#ASMSTART3659; GFX900-NEXT: ; def v[0:3]3660; GFX900-NEXT: ;;#ASMEND3661; GFX900-NEXT: v_mov_b32_e32 v4, v33662; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]3663; GFX900-NEXT: s_waitcnt vmcnt(0)3664; GFX900-NEXT: s_setpc_b64 s[30:31]3665;3666; GFX90A-LABEL: v_shuffle_v3p3_v4p3__2_3_3:3667; GFX90A: ; %bb.0:3668; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3669; GFX90A-NEXT: v_mov_b32_e32 v5, 03670; GFX90A-NEXT: ;;#ASMSTART3671; GFX90A-NEXT: ; def v[0:3]3672; GFX90A-NEXT: ;;#ASMEND3673; GFX90A-NEXT: v_mov_b32_e32 v4, v33674; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]3675; GFX90A-NEXT: s_waitcnt vmcnt(0)3676; GFX90A-NEXT: s_setpc_b64 s[30:31]3677;3678; GFX942-LABEL: v_shuffle_v3p3_v4p3__2_3_3:3679; GFX942: ; %bb.0:3680; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3681; GFX942-NEXT: v_mov_b32_e32 v5, 03682; GFX942-NEXT: ;;#ASMSTART3683; GFX942-NEXT: ; def v[0:3]3684; GFX942-NEXT: ;;#ASMEND3685; GFX942-NEXT: s_nop 03686; GFX942-NEXT: v_mov_b32_e32 v4, v33687; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]3688; GFX942-NEXT: s_waitcnt vmcnt(0)3689; GFX942-NEXT: s_setpc_b64 s[30:31]3690 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3691 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 3, i32 3>3692 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163693 ret void3694}3695 3696define void @v_shuffle_v3p3_v4p3__3_3_3(ptr addrspace(1) inreg %ptr) {3697; GFX900-LABEL: v_shuffle_v3p3_v4p3__3_3_3:3698; GFX900: ; %bb.0:3699; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3700; GFX900-NEXT: v_mov_b32_e32 v6, 03701; GFX900-NEXT: ;;#ASMSTART3702; GFX900-NEXT: ; def v[0:3]3703; GFX900-NEXT: ;;#ASMEND3704; GFX900-NEXT: v_mov_b32_e32 v4, v33705; GFX900-NEXT: v_mov_b32_e32 v5, v33706; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]3707; GFX900-NEXT: s_waitcnt vmcnt(0)3708; GFX900-NEXT: s_setpc_b64 s[30:31]3709;3710; GFX90A-LABEL: v_shuffle_v3p3_v4p3__3_3_3:3711; GFX90A: ; %bb.0:3712; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3713; GFX90A-NEXT: ;;#ASMSTART3714; GFX90A-NEXT: ; def v[0:3]3715; GFX90A-NEXT: ;;#ASMEND3716; GFX90A-NEXT: v_mov_b32_e32 v5, 03717; GFX90A-NEXT: v_mov_b32_e32 v2, v33718; GFX90A-NEXT: v_mov_b32_e32 v4, v33719; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]3720; GFX90A-NEXT: s_waitcnt vmcnt(0)3721; GFX90A-NEXT: s_setpc_b64 s[30:31]3722;3723; GFX942-LABEL: v_shuffle_v3p3_v4p3__3_3_3:3724; GFX942: ; %bb.0:3725; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3726; GFX942-NEXT: ;;#ASMSTART3727; GFX942-NEXT: ; def v[0:3]3728; GFX942-NEXT: ;;#ASMEND3729; GFX942-NEXT: v_mov_b32_e32 v5, 03730; GFX942-NEXT: v_mov_b32_e32 v2, v33731; GFX942-NEXT: v_mov_b32_e32 v4, v33732; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]3733; GFX942-NEXT: s_waitcnt vmcnt(0)3734; GFX942-NEXT: s_setpc_b64 s[30:31]3735 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3736 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 3, i32 3, i32 3>3737 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163738 ret void3739}3740 3741define void @v_shuffle_v3p3_v4p3__4_3_3(ptr addrspace(1) inreg %ptr) {3742; GFX900-LABEL: v_shuffle_v3p3_v4p3__4_3_3:3743; GFX900: ; %bb.0:3744; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3745; GFX900-NEXT: v_mov_b32_e32 v5, 03746; GFX900-NEXT: ;;#ASMSTART3747; GFX900-NEXT: ; def v[0:3]3748; GFX900-NEXT: ;;#ASMEND3749; GFX900-NEXT: v_mov_b32_e32 v4, v33750; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]3751; GFX900-NEXT: s_waitcnt vmcnt(0)3752; GFX900-NEXT: s_setpc_b64 s[30:31]3753;3754; GFX90A-LABEL: v_shuffle_v3p3_v4p3__4_3_3:3755; GFX90A: ; %bb.0:3756; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3757; GFX90A-NEXT: v_mov_b32_e32 v5, 03758; GFX90A-NEXT: ;;#ASMSTART3759; GFX90A-NEXT: ; def v[0:3]3760; GFX90A-NEXT: ;;#ASMEND3761; GFX90A-NEXT: v_mov_b32_e32 v4, v33762; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]3763; GFX90A-NEXT: s_waitcnt vmcnt(0)3764; GFX90A-NEXT: s_setpc_b64 s[30:31]3765;3766; GFX942-LABEL: v_shuffle_v3p3_v4p3__4_3_3:3767; GFX942: ; %bb.0:3768; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3769; GFX942-NEXT: v_mov_b32_e32 v5, 03770; GFX942-NEXT: ;;#ASMSTART3771; GFX942-NEXT: ; def v[0:3]3772; GFX942-NEXT: ;;#ASMEND3773; GFX942-NEXT: s_nop 03774; GFX942-NEXT: v_mov_b32_e32 v4, v33775; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]3776; GFX942-NEXT: s_waitcnt vmcnt(0)3777; GFX942-NEXT: s_setpc_b64 s[30:31]3778 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3779 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 4, i32 3, i32 3>3780 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163781 ret void3782}3783 3784define void @v_shuffle_v3p3_v4p3__5_3_3(ptr addrspace(1) inreg %ptr) {3785; GFX900-LABEL: v_shuffle_v3p3_v4p3__5_3_3:3786; GFX900: ; %bb.0:3787; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3788; GFX900-NEXT: ;;#ASMSTART3789; GFX900-NEXT: ; def v[4:7]3790; GFX900-NEXT: ;;#ASMEND3791; GFX900-NEXT: v_mov_b32_e32 v8, 03792; GFX900-NEXT: ;;#ASMSTART3793; GFX900-NEXT: ; def v[0:3]3794; GFX900-NEXT: ;;#ASMEND3795; GFX900-NEXT: v_mov_b32_e32 v6, v33796; GFX900-NEXT: v_mov_b32_e32 v7, v33797; GFX900-NEXT: global_store_dwordx3 v8, v[5:7], s[16:17]3798; GFX900-NEXT: s_waitcnt vmcnt(0)3799; GFX900-NEXT: s_setpc_b64 s[30:31]3800;3801; GFX90A-LABEL: v_shuffle_v3p3_v4p3__5_3_3:3802; GFX90A: ; %bb.0:3803; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3804; GFX90A-NEXT: ;;#ASMSTART3805; GFX90A-NEXT: ; def v[0:3]3806; GFX90A-NEXT: ;;#ASMEND3807; GFX90A-NEXT: ;;#ASMSTART3808; GFX90A-NEXT: ; def v[4:7]3809; GFX90A-NEXT: ;;#ASMEND3810; GFX90A-NEXT: v_mov_b32_e32 v8, 03811; GFX90A-NEXT: v_mov_b32_e32 v2, v53812; GFX90A-NEXT: v_mov_b32_e32 v4, v33813; GFX90A-NEXT: global_store_dwordx3 v8, v[2:4], s[16:17]3814; GFX90A-NEXT: s_waitcnt vmcnt(0)3815; GFX90A-NEXT: s_setpc_b64 s[30:31]3816;3817; GFX942-LABEL: v_shuffle_v3p3_v4p3__5_3_3:3818; GFX942: ; %bb.0:3819; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3820; GFX942-NEXT: ;;#ASMSTART3821; GFX942-NEXT: ; def v[0:3]3822; GFX942-NEXT: ;;#ASMEND3823; GFX942-NEXT: ;;#ASMSTART3824; GFX942-NEXT: ; def v[4:7]3825; GFX942-NEXT: ;;#ASMEND3826; GFX942-NEXT: v_mov_b32_e32 v8, 03827; GFX942-NEXT: v_mov_b32_e32 v2, v53828; GFX942-NEXT: v_mov_b32_e32 v4, v33829; GFX942-NEXT: global_store_dwordx3 v8, v[2:4], s[0:1]3830; GFX942-NEXT: s_waitcnt vmcnt(0)3831; GFX942-NEXT: s_setpc_b64 s[30:31]3832 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3833 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3834 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 3, i32 3>3835 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163836 ret void3837}3838 3839define void @v_shuffle_v3p3_v4p3__6_3_3(ptr addrspace(1) inreg %ptr) {3840; GFX900-LABEL: v_shuffle_v3p3_v4p3__6_3_3:3841; GFX900: ; %bb.0:3842; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3843; GFX900-NEXT: ;;#ASMSTART3844; GFX900-NEXT: ; def v[1:4]3845; GFX900-NEXT: ;;#ASMEND3846; GFX900-NEXT: ;;#ASMSTART3847; GFX900-NEXT: ; def v[0:3]3848; GFX900-NEXT: ;;#ASMEND3849; GFX900-NEXT: v_mov_b32_e32 v5, 03850; GFX900-NEXT: v_mov_b32_e32 v3, v43851; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]3852; GFX900-NEXT: s_waitcnt vmcnt(0)3853; GFX900-NEXT: s_setpc_b64 s[30:31]3854;3855; GFX90A-LABEL: v_shuffle_v3p3_v4p3__6_3_3:3856; GFX90A: ; %bb.0:3857; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3858; GFX90A-NEXT: ;;#ASMSTART3859; GFX90A-NEXT: ; def v[2:5]3860; GFX90A-NEXT: ;;#ASMEND3861; GFX90A-NEXT: ;;#ASMSTART3862; GFX90A-NEXT: ; def v[0:3]3863; GFX90A-NEXT: ;;#ASMEND3864; GFX90A-NEXT: v_mov_b32_e32 v6, 03865; GFX90A-NEXT: v_mov_b32_e32 v3, v53866; GFX90A-NEXT: v_mov_b32_e32 v4, v53867; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]3868; GFX90A-NEXT: s_waitcnt vmcnt(0)3869; GFX90A-NEXT: s_setpc_b64 s[30:31]3870;3871; GFX942-LABEL: v_shuffle_v3p3_v4p3__6_3_3:3872; GFX942: ; %bb.0:3873; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3874; GFX942-NEXT: ;;#ASMSTART3875; GFX942-NEXT: ; def v[2:5]3876; GFX942-NEXT: ;;#ASMEND3877; GFX942-NEXT: v_mov_b32_e32 v6, 03878; GFX942-NEXT: ;;#ASMSTART3879; GFX942-NEXT: ; def v[0:3]3880; GFX942-NEXT: ;;#ASMEND3881; GFX942-NEXT: v_mov_b32_e32 v4, v53882; GFX942-NEXT: v_mov_b32_e32 v3, v53883; GFX942-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1]3884; GFX942-NEXT: s_waitcnt vmcnt(0)3885; GFX942-NEXT: s_setpc_b64 s[30:31]3886 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3887 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3888 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 3, i32 3>3889 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163890 ret void3891}3892 3893define void @v_shuffle_v3p3_v4p3__7_3_3(ptr addrspace(1) inreg %ptr) {3894; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_3_3:3895; GFX900: ; %bb.0:3896; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3897; GFX900-NEXT: v_mov_b32_e32 v6, 03898; GFX900-NEXT: ;;#ASMSTART3899; GFX900-NEXT: ; def v[1:4]3900; GFX900-NEXT: ;;#ASMEND3901; GFX900-NEXT: v_mov_b32_e32 v5, v43902; GFX900-NEXT: ;;#ASMSTART3903; GFX900-NEXT: ; def v[0:3]3904; GFX900-NEXT: ;;#ASMEND3905; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]3906; GFX900-NEXT: s_waitcnt vmcnt(0)3907; GFX900-NEXT: s_setpc_b64 s[30:31]3908;3909; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_3_3:3910; GFX90A: ; %bb.0:3911; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3912; GFX90A-NEXT: ;;#ASMSTART3913; GFX90A-NEXT: ; def v[0:3]3914; GFX90A-NEXT: ;;#ASMEND3915; GFX90A-NEXT: ;;#ASMSTART3916; GFX90A-NEXT: ; def v[4:7]3917; GFX90A-NEXT: ;;#ASMEND3918; GFX90A-NEXT: v_mov_b32_e32 v8, 03919; GFX90A-NEXT: v_mov_b32_e32 v2, v73920; GFX90A-NEXT: v_mov_b32_e32 v4, v33921; GFX90A-NEXT: global_store_dwordx3 v8, v[2:4], s[16:17]3922; GFX90A-NEXT: s_waitcnt vmcnt(0)3923; GFX90A-NEXT: s_setpc_b64 s[30:31]3924;3925; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_3_3:3926; GFX942: ; %bb.0:3927; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3928; GFX942-NEXT: ;;#ASMSTART3929; GFX942-NEXT: ; def v[0:3]3930; GFX942-NEXT: ;;#ASMEND3931; GFX942-NEXT: ;;#ASMSTART3932; GFX942-NEXT: ; def v[4:7]3933; GFX942-NEXT: ;;#ASMEND3934; GFX942-NEXT: v_mov_b32_e32 v8, 03935; GFX942-NEXT: v_mov_b32_e32 v2, v73936; GFX942-NEXT: v_mov_b32_e32 v4, v33937; GFX942-NEXT: global_store_dwordx3 v8, v[2:4], s[0:1]3938; GFX942-NEXT: s_waitcnt vmcnt(0)3939; GFX942-NEXT: s_setpc_b64 s[30:31]3940 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3941 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3942 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 3>3943 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163944 ret void3945}3946 3947define void @v_shuffle_v3p3_v4p3__7_u_3(ptr addrspace(1) inreg %ptr) {3948; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_u_3:3949; GFX900: ; %bb.0:3950; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3951; GFX900-NEXT: v_mov_b32_e32 v6, 03952; GFX900-NEXT: ;;#ASMSTART3953; GFX900-NEXT: ; def v[2:5]3954; GFX900-NEXT: ;;#ASMEND3955; GFX900-NEXT: ;;#ASMSTART3956; GFX900-NEXT: ; def v[0:3]3957; GFX900-NEXT: ;;#ASMEND3958; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]3959; GFX900-NEXT: s_waitcnt vmcnt(0)3960; GFX900-NEXT: s_setpc_b64 s[30:31]3961;3962; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_u_3:3963; GFX90A: ; %bb.0:3964; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3965; GFX90A-NEXT: ;;#ASMSTART3966; GFX90A-NEXT: ; def v[0:3]3967; GFX90A-NEXT: ;;#ASMEND3968; GFX90A-NEXT: v_mov_b32_e32 v8, 03969; GFX90A-NEXT: ;;#ASMSTART3970; GFX90A-NEXT: ; def v[4:7]3971; GFX90A-NEXT: ;;#ASMEND3972; GFX90A-NEXT: v_mov_b32_e32 v0, v73973; GFX90A-NEXT: v_mov_b32_e32 v2, v33974; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]3975; GFX90A-NEXT: s_waitcnt vmcnt(0)3976; GFX90A-NEXT: s_setpc_b64 s[30:31]3977;3978; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_u_3:3979; GFX942: ; %bb.0:3980; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3981; GFX942-NEXT: ;;#ASMSTART3982; GFX942-NEXT: ; def v[0:3]3983; GFX942-NEXT: ;;#ASMEND3984; GFX942-NEXT: v_mov_b32_e32 v8, 03985; GFX942-NEXT: ;;#ASMSTART3986; GFX942-NEXT: ; def v[4:7]3987; GFX942-NEXT: ;;#ASMEND3988; GFX942-NEXT: v_mov_b32_e32 v2, v33989; GFX942-NEXT: v_mov_b32_e32 v0, v73990; GFX942-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1]3991; GFX942-NEXT: s_waitcnt vmcnt(0)3992; GFX942-NEXT: s_setpc_b64 s[30:31]3993 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3994 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()3995 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 3>3996 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163997 ret void3998}3999 4000define void @v_shuffle_v3p3_v4p3__7_0_3(ptr addrspace(1) inreg %ptr) {4001; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_0_3:4002; GFX900: ; %bb.0:4003; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4004; GFX900-NEXT: ;;#ASMSTART4005; GFX900-NEXT: ; def v[4:7]4006; GFX900-NEXT: ;;#ASMEND4007; GFX900-NEXT: v_mov_b32_e32 v8, 04008; GFX900-NEXT: v_mov_b32_e32 v5, v74009; GFX900-NEXT: ;;#ASMSTART4010; GFX900-NEXT: ; def v[0:3]4011; GFX900-NEXT: ;;#ASMEND4012; GFX900-NEXT: global_store_dwordx3 v8, v[3:5], s[16:17]4013; GFX900-NEXT: s_waitcnt vmcnt(0)4014; GFX900-NEXT: s_setpc_b64 s[30:31]4015;4016; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_0_3:4017; GFX90A: ; %bb.0:4018; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4019; GFX90A-NEXT: ;;#ASMSTART4020; GFX90A-NEXT: ; def v[4:7]4021; GFX90A-NEXT: ;;#ASMEND4022; GFX90A-NEXT: v_mov_b32_e32 v8, 04023; GFX90A-NEXT: ;;#ASMSTART4024; GFX90A-NEXT: ; def v[0:3]4025; GFX90A-NEXT: ;;#ASMEND4026; GFX90A-NEXT: v_mov_b32_e32 v4, v74027; GFX90A-NEXT: v_mov_b32_e32 v5, v04028; GFX90A-NEXT: v_mov_b32_e32 v6, v34029; GFX90A-NEXT: global_store_dwordx3 v8, v[4:6], s[16:17]4030; GFX90A-NEXT: s_waitcnt vmcnt(0)4031; GFX90A-NEXT: s_setpc_b64 s[30:31]4032;4033; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_0_3:4034; GFX942: ; %bb.0:4035; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4036; GFX942-NEXT: ;;#ASMSTART4037; GFX942-NEXT: ; def v[4:7]4038; GFX942-NEXT: ;;#ASMEND4039; GFX942-NEXT: v_mov_b32_e32 v8, 04040; GFX942-NEXT: ;;#ASMSTART4041; GFX942-NEXT: ; def v[0:3]4042; GFX942-NEXT: ;;#ASMEND4043; GFX942-NEXT: v_mov_b32_e32 v4, v74044; GFX942-NEXT: v_mov_b32_e32 v5, v04045; GFX942-NEXT: v_mov_b32_e32 v6, v34046; GFX942-NEXT: global_store_dwordx3 v8, v[4:6], s[0:1]4047; GFX942-NEXT: s_waitcnt vmcnt(0)4048; GFX942-NEXT: s_setpc_b64 s[30:31]4049 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4050 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4051 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 3>4052 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164053 ret void4054}4055 4056define void @v_shuffle_v3p3_v4p3__7_1_3(ptr addrspace(1) inreg %ptr) {4057; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_1_3:4058; GFX900: ; %bb.0:4059; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4060; GFX900-NEXT: ;;#ASMSTART4061; GFX900-NEXT: ; def v[3:6]4062; GFX900-NEXT: ;;#ASMEND4063; GFX900-NEXT: v_mov_b32_e32 v7, 04064; GFX900-NEXT: v_mov_b32_e32 v5, v64065; GFX900-NEXT: ;;#ASMSTART4066; GFX900-NEXT: ; def v[0:3]4067; GFX900-NEXT: ;;#ASMEND4068; GFX900-NEXT: global_store_dwordx3 v7, v[3:5], s[16:17]4069; GFX900-NEXT: s_waitcnt vmcnt(0)4070; GFX900-NEXT: s_setpc_b64 s[30:31]4071;4072; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_1_3:4073; GFX90A: ; %bb.0:4074; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4075; GFX90A-NEXT: ;;#ASMSTART4076; GFX90A-NEXT: ; def v[0:3]4077; GFX90A-NEXT: ;;#ASMEND4078; GFX90A-NEXT: v_mov_b32_e32 v8, 04079; GFX90A-NEXT: ;;#ASMSTART4080; GFX90A-NEXT: ; def v[4:7]4081; GFX90A-NEXT: ;;#ASMEND4082; GFX90A-NEXT: v_mov_b32_e32 v0, v74083; GFX90A-NEXT: v_mov_b32_e32 v2, v34084; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]4085; GFX90A-NEXT: s_waitcnt vmcnt(0)4086; GFX90A-NEXT: s_setpc_b64 s[30:31]4087;4088; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_1_3:4089; GFX942: ; %bb.0:4090; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4091; GFX942-NEXT: ;;#ASMSTART4092; GFX942-NEXT: ; def v[0:3]4093; GFX942-NEXT: ;;#ASMEND4094; GFX942-NEXT: v_mov_b32_e32 v8, 04095; GFX942-NEXT: ;;#ASMSTART4096; GFX942-NEXT: ; def v[4:7]4097; GFX942-NEXT: ;;#ASMEND4098; GFX942-NEXT: v_mov_b32_e32 v2, v34099; GFX942-NEXT: v_mov_b32_e32 v0, v74100; GFX942-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1]4101; GFX942-NEXT: s_waitcnt vmcnt(0)4102; GFX942-NEXT: s_setpc_b64 s[30:31]4103 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4104 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4105 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 3>4106 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164107 ret void4108}4109 4110define void @v_shuffle_v3p3_v4p3__7_2_3(ptr addrspace(1) inreg %ptr) {4111; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_2_3:4112; GFX900: ; %bb.0:4113; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4114; GFX900-NEXT: v_mov_b32_e32 v6, 04115; GFX900-NEXT: ;;#ASMSTART4116; GFX900-NEXT: ; def v[2:5]4117; GFX900-NEXT: ;;#ASMEND4118; GFX900-NEXT: ;;#ASMSTART4119; GFX900-NEXT: ; def v[0:3]4120; GFX900-NEXT: ;;#ASMEND4121; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]4122; GFX900-NEXT: s_waitcnt vmcnt(0)4123; GFX900-NEXT: s_setpc_b64 s[30:31]4124;4125; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_2_3:4126; GFX90A: ; %bb.0:4127; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4128; GFX90A-NEXT: ;;#ASMSTART4129; GFX90A-NEXT: ; def v[0:3]4130; GFX90A-NEXT: ;;#ASMEND4131; GFX90A-NEXT: v_mov_b32_e32 v8, 04132; GFX90A-NEXT: ;;#ASMSTART4133; GFX90A-NEXT: ; def v[4:7]4134; GFX90A-NEXT: ;;#ASMEND4135; GFX90A-NEXT: v_mov_b32_e32 v0, v74136; GFX90A-NEXT: v_mov_b32_e32 v1, v24137; GFX90A-NEXT: v_mov_b32_e32 v2, v34138; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]4139; GFX90A-NEXT: s_waitcnt vmcnt(0)4140; GFX90A-NEXT: s_setpc_b64 s[30:31]4141;4142; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_2_3:4143; GFX942: ; %bb.0:4144; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4145; GFX942-NEXT: ;;#ASMSTART4146; GFX942-NEXT: ; def v[0:3]4147; GFX942-NEXT: ;;#ASMEND4148; GFX942-NEXT: v_mov_b32_e32 v8, 04149; GFX942-NEXT: ;;#ASMSTART4150; GFX942-NEXT: ; def v[4:7]4151; GFX942-NEXT: ;;#ASMEND4152; GFX942-NEXT: v_mov_b32_e32 v1, v24153; GFX942-NEXT: v_mov_b32_e32 v0, v74154; GFX942-NEXT: v_mov_b32_e32 v2, v34155; GFX942-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1]4156; GFX942-NEXT: s_waitcnt vmcnt(0)4157; GFX942-NEXT: s_setpc_b64 s[30:31]4158 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4159 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4160 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 3>4161 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164162 ret void4163}4164 4165define void @v_shuffle_v3p3_v4p3__7_4_3(ptr addrspace(1) inreg %ptr) {4166; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_4_3:4167; GFX900: ; %bb.0:4168; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4169; GFX900-NEXT: ;;#ASMSTART4170; GFX900-NEXT: ; def v[2:5]4171; GFX900-NEXT: ;;#ASMEND4172; GFX900-NEXT: v_mov_b32_e32 v6, 04173; GFX900-NEXT: ;;#ASMSTART4174; GFX900-NEXT: ; def v[0:3]4175; GFX900-NEXT: ;;#ASMEND4176; GFX900-NEXT: v_mov_b32_e32 v4, v04177; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]4178; GFX900-NEXT: s_waitcnt vmcnt(0)4179; GFX900-NEXT: s_setpc_b64 s[30:31]4180;4181; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_4_3:4182; GFX90A: ; %bb.0:4183; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4184; GFX90A-NEXT: ;;#ASMSTART4185; GFX90A-NEXT: ; def v[0:3]4186; GFX90A-NEXT: ;;#ASMEND4187; GFX90A-NEXT: v_mov_b32_e32 v8, 04188; GFX90A-NEXT: ;;#ASMSTART4189; GFX90A-NEXT: ; def v[4:7]4190; GFX90A-NEXT: ;;#ASMEND4191; GFX90A-NEXT: v_mov_b32_e32 v0, v74192; GFX90A-NEXT: v_mov_b32_e32 v1, v44193; GFX90A-NEXT: v_mov_b32_e32 v2, v34194; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]4195; GFX90A-NEXT: s_waitcnt vmcnt(0)4196; GFX90A-NEXT: s_setpc_b64 s[30:31]4197;4198; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_4_3:4199; GFX942: ; %bb.0:4200; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4201; GFX942-NEXT: ;;#ASMSTART4202; GFX942-NEXT: ; def v[0:3]4203; GFX942-NEXT: ;;#ASMEND4204; GFX942-NEXT: v_mov_b32_e32 v8, 04205; GFX942-NEXT: ;;#ASMSTART4206; GFX942-NEXT: ; def v[4:7]4207; GFX942-NEXT: ;;#ASMEND4208; GFX942-NEXT: v_mov_b32_e32 v2, v34209; GFX942-NEXT: v_mov_b32_e32 v0, v74210; GFX942-NEXT: v_mov_b32_e32 v1, v44211; GFX942-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1]4212; GFX942-NEXT: s_waitcnt vmcnt(0)4213; GFX942-NEXT: s_setpc_b64 s[30:31]4214 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4215 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4216 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 3>4217 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164218 ret void4219}4220 4221define void @v_shuffle_v3p3_v4p3__7_5_3(ptr addrspace(1) inreg %ptr) {4222; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_5_3:4223; GFX900: ; %bb.0:4224; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4225; GFX900-NEXT: ;;#ASMSTART4226; GFX900-NEXT: ; def v[2:5]4227; GFX900-NEXT: ;;#ASMEND4228; GFX900-NEXT: v_mov_b32_e32 v6, 04229; GFX900-NEXT: ;;#ASMSTART4230; GFX900-NEXT: ; def v[0:3]4231; GFX900-NEXT: ;;#ASMEND4232; GFX900-NEXT: v_mov_b32_e32 v4, v14233; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]4234; GFX900-NEXT: s_waitcnt vmcnt(0)4235; GFX900-NEXT: s_setpc_b64 s[30:31]4236;4237; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_5_3:4238; GFX90A: ; %bb.0:4239; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4240; GFX90A-NEXT: ;;#ASMSTART4241; GFX90A-NEXT: ; def v[4:7]4242; GFX90A-NEXT: ;;#ASMEND4243; GFX90A-NEXT: v_mov_b32_e32 v8, 04244; GFX90A-NEXT: ;;#ASMSTART4245; GFX90A-NEXT: ; def v[0:3]4246; GFX90A-NEXT: ;;#ASMEND4247; GFX90A-NEXT: v_mov_b32_e32 v4, v74248; GFX90A-NEXT: v_mov_b32_e32 v6, v34249; GFX90A-NEXT: global_store_dwordx3 v8, v[4:6], s[16:17]4250; GFX90A-NEXT: s_waitcnt vmcnt(0)4251; GFX90A-NEXT: s_setpc_b64 s[30:31]4252;4253; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_5_3:4254; GFX942: ; %bb.0:4255; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4256; GFX942-NEXT: ;;#ASMSTART4257; GFX942-NEXT: ; def v[4:7]4258; GFX942-NEXT: ;;#ASMEND4259; GFX942-NEXT: v_mov_b32_e32 v8, 04260; GFX942-NEXT: ;;#ASMSTART4261; GFX942-NEXT: ; def v[0:3]4262; GFX942-NEXT: ;;#ASMEND4263; GFX942-NEXT: v_mov_b32_e32 v4, v74264; GFX942-NEXT: v_mov_b32_e32 v6, v34265; GFX942-NEXT: global_store_dwordx3 v8, v[4:6], s[0:1]4266; GFX942-NEXT: s_waitcnt vmcnt(0)4267; GFX942-NEXT: s_setpc_b64 s[30:31]4268 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4269 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4270 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 3>4271 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164272 ret void4273}4274 4275define void @v_shuffle_v3p3_v4p3__7_6_3(ptr addrspace(1) inreg %ptr) {4276; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_6_3:4277; GFX900: ; %bb.0:4278; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4279; GFX900-NEXT: ;;#ASMSTART4280; GFX900-NEXT: ; def v[2:5]4281; GFX900-NEXT: ;;#ASMEND4282; GFX900-NEXT: v_mov_b32_e32 v6, 04283; GFX900-NEXT: ;;#ASMSTART4284; GFX900-NEXT: ; def v[0:3]4285; GFX900-NEXT: ;;#ASMEND4286; GFX900-NEXT: v_mov_b32_e32 v4, v24287; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]4288; GFX900-NEXT: s_waitcnt vmcnt(0)4289; GFX900-NEXT: s_setpc_b64 s[30:31]4290;4291; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_6_3:4292; GFX90A: ; %bb.0:4293; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4294; GFX90A-NEXT: ;;#ASMSTART4295; GFX90A-NEXT: ; def v[0:3]4296; GFX90A-NEXT: ;;#ASMEND4297; GFX90A-NEXT: v_mov_b32_e32 v8, 04298; GFX90A-NEXT: ;;#ASMSTART4299; GFX90A-NEXT: ; def v[4:7]4300; GFX90A-NEXT: ;;#ASMEND4301; GFX90A-NEXT: v_mov_b32_e32 v0, v74302; GFX90A-NEXT: v_mov_b32_e32 v1, v64303; GFX90A-NEXT: v_mov_b32_e32 v2, v34304; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]4305; GFX90A-NEXT: s_waitcnt vmcnt(0)4306; GFX90A-NEXT: s_setpc_b64 s[30:31]4307;4308; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_6_3:4309; GFX942: ; %bb.0:4310; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4311; GFX942-NEXT: ;;#ASMSTART4312; GFX942-NEXT: ; def v[0:3]4313; GFX942-NEXT: ;;#ASMEND4314; GFX942-NEXT: v_mov_b32_e32 v8, 04315; GFX942-NEXT: ;;#ASMSTART4316; GFX942-NEXT: ; def v[4:7]4317; GFX942-NEXT: ;;#ASMEND4318; GFX942-NEXT: v_mov_b32_e32 v2, v34319; GFX942-NEXT: v_mov_b32_e32 v0, v74320; GFX942-NEXT: v_mov_b32_e32 v1, v64321; GFX942-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1]4322; GFX942-NEXT: s_waitcnt vmcnt(0)4323; GFX942-NEXT: s_setpc_b64 s[30:31]4324 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4325 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4326 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 3>4327 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164328 ret void4329}4330 4331define void @v_shuffle_v3p3_v4p3__u_4_4(ptr addrspace(1) inreg %ptr) {4332; GFX9-LABEL: v_shuffle_v3p3_v4p3__u_4_4:4333; GFX9: ; %bb.0:4334; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4335; GFX9-NEXT: s_setpc_b64 s[30:31]4336 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4337 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 poison, i32 4, i32 4>4338 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164339 ret void4340}4341 4342define void @v_shuffle_v3p3_v4p3__0_4_4(ptr addrspace(1) inreg %ptr) {4343; GFX900-LABEL: v_shuffle_v3p3_v4p3__0_4_4:4344; GFX900: ; %bb.0:4345; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4346; GFX900-NEXT: v_mov_b32_e32 v4, 04347; GFX900-NEXT: ;;#ASMSTART4348; GFX900-NEXT: ; def v[0:3]4349; GFX900-NEXT: ;;#ASMEND4350; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]4351; GFX900-NEXT: s_waitcnt vmcnt(0)4352; GFX900-NEXT: s_setpc_b64 s[30:31]4353;4354; GFX90A-LABEL: v_shuffle_v3p3_v4p3__0_4_4:4355; GFX90A: ; %bb.0:4356; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4357; GFX90A-NEXT: v_mov_b32_e32 v4, 04358; GFX90A-NEXT: ;;#ASMSTART4359; GFX90A-NEXT: ; def v[0:3]4360; GFX90A-NEXT: ;;#ASMEND4361; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]4362; GFX90A-NEXT: s_waitcnt vmcnt(0)4363; GFX90A-NEXT: s_setpc_b64 s[30:31]4364;4365; GFX942-LABEL: v_shuffle_v3p3_v4p3__0_4_4:4366; GFX942: ; %bb.0:4367; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4368; GFX942-NEXT: v_mov_b32_e32 v4, 04369; GFX942-NEXT: ;;#ASMSTART4370; GFX942-NEXT: ; def v[0:3]4371; GFX942-NEXT: ;;#ASMEND4372; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]4373; GFX942-NEXT: s_waitcnt vmcnt(0)4374; GFX942-NEXT: s_setpc_b64 s[30:31]4375 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4376 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 0, i32 4, i32 4>4377 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164378 ret void4379}4380 4381define void @v_shuffle_v3p3_v4p3__1_4_4(ptr addrspace(1) inreg %ptr) {4382; GFX900-LABEL: v_shuffle_v3p3_v4p3__1_4_4:4383; GFX900: ; %bb.0:4384; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4385; GFX900-NEXT: v_mov_b32_e32 v4, 04386; GFX900-NEXT: ;;#ASMSTART4387; GFX900-NEXT: ; def v[0:3]4388; GFX900-NEXT: ;;#ASMEND4389; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]4390; GFX900-NEXT: s_waitcnt vmcnt(0)4391; GFX900-NEXT: s_setpc_b64 s[30:31]4392;4393; GFX90A-LABEL: v_shuffle_v3p3_v4p3__1_4_4:4394; GFX90A: ; %bb.0:4395; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4396; GFX90A-NEXT: ;;#ASMSTART4397; GFX90A-NEXT: ; def v[0:3]4398; GFX90A-NEXT: ;;#ASMEND4399; GFX90A-NEXT: v_mov_b32_e32 v4, 04400; GFX90A-NEXT: v_mov_b32_e32 v0, v14401; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]4402; GFX90A-NEXT: s_waitcnt vmcnt(0)4403; GFX90A-NEXT: s_setpc_b64 s[30:31]4404;4405; GFX942-LABEL: v_shuffle_v3p3_v4p3__1_4_4:4406; GFX942: ; %bb.0:4407; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4408; GFX942-NEXT: ;;#ASMSTART4409; GFX942-NEXT: ; def v[0:3]4410; GFX942-NEXT: ;;#ASMEND4411; GFX942-NEXT: v_mov_b32_e32 v4, 04412; GFX942-NEXT: v_mov_b32_e32 v0, v14413; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]4414; GFX942-NEXT: s_waitcnt vmcnt(0)4415; GFX942-NEXT: s_setpc_b64 s[30:31]4416 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4417 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 4, i32 4>4418 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164419 ret void4420}4421 4422define void @v_shuffle_v3p3_v4p3__2_4_4(ptr addrspace(1) inreg %ptr) {4423; GFX900-LABEL: v_shuffle_v3p3_v4p3__2_4_4:4424; GFX900: ; %bb.0:4425; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4426; GFX900-NEXT: v_mov_b32_e32 v4, 04427; GFX900-NEXT: ;;#ASMSTART4428; GFX900-NEXT: ; def v[0:3]4429; GFX900-NEXT: ;;#ASMEND4430; GFX900-NEXT: global_store_dwordx3 v4, v[2:4], s[16:17]4431; GFX900-NEXT: s_waitcnt vmcnt(0)4432; GFX900-NEXT: s_setpc_b64 s[30:31]4433;4434; GFX90A-LABEL: v_shuffle_v3p3_v4p3__2_4_4:4435; GFX90A: ; %bb.0:4436; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4437; GFX90A-NEXT: v_mov_b32_e32 v4, 04438; GFX90A-NEXT: ;;#ASMSTART4439; GFX90A-NEXT: ; def v[0:3]4440; GFX90A-NEXT: ;;#ASMEND4441; GFX90A-NEXT: global_store_dwordx3 v4, v[2:4], s[16:17]4442; GFX90A-NEXT: s_waitcnt vmcnt(0)4443; GFX90A-NEXT: s_setpc_b64 s[30:31]4444;4445; GFX942-LABEL: v_shuffle_v3p3_v4p3__2_4_4:4446; GFX942: ; %bb.0:4447; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4448; GFX942-NEXT: v_mov_b32_e32 v4, 04449; GFX942-NEXT: ;;#ASMSTART4450; GFX942-NEXT: ; def v[0:3]4451; GFX942-NEXT: ;;#ASMEND4452; GFX942-NEXT: global_store_dwordx3 v4, v[2:4], s[0:1]4453; GFX942-NEXT: s_waitcnt vmcnt(0)4454; GFX942-NEXT: s_setpc_b64 s[30:31]4455 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4456 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 4, i32 4>4457 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164458 ret void4459}4460 4461define void @v_shuffle_v3p3_v4p3__3_4_4(ptr addrspace(1) inreg %ptr) {4462; GFX900-LABEL: v_shuffle_v3p3_v4p3__3_4_4:4463; GFX900: ; %bb.0:4464; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4465; GFX900-NEXT: v_mov_b32_e32 v4, 04466; GFX900-NEXT: ;;#ASMSTART4467; GFX900-NEXT: ; def v[0:3]4468; GFX900-NEXT: ;;#ASMEND4469; GFX900-NEXT: global_store_dwordx3 v4, v[3:5], s[16:17]4470; GFX900-NEXT: s_waitcnt vmcnt(0)4471; GFX900-NEXT: s_setpc_b64 s[30:31]4472;4473; GFX90A-LABEL: v_shuffle_v3p3_v4p3__3_4_4:4474; GFX90A: ; %bb.0:4475; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4476; GFX90A-NEXT: ;;#ASMSTART4477; GFX90A-NEXT: ; def v[0:3]4478; GFX90A-NEXT: ;;#ASMEND4479; GFX90A-NEXT: v_mov_b32_e32 v4, 04480; GFX90A-NEXT: v_mov_b32_e32 v0, v34481; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]4482; GFX90A-NEXT: s_waitcnt vmcnt(0)4483; GFX90A-NEXT: s_setpc_b64 s[30:31]4484;4485; GFX942-LABEL: v_shuffle_v3p3_v4p3__3_4_4:4486; GFX942: ; %bb.0:4487; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4488; GFX942-NEXT: ;;#ASMSTART4489; GFX942-NEXT: ; def v[0:3]4490; GFX942-NEXT: ;;#ASMEND4491; GFX942-NEXT: v_mov_b32_e32 v4, 04492; GFX942-NEXT: v_mov_b32_e32 v0, v34493; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]4494; GFX942-NEXT: s_waitcnt vmcnt(0)4495; GFX942-NEXT: s_setpc_b64 s[30:31]4496 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4497 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 3, i32 4, i32 4>4498 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164499 ret void4500}4501 4502define void @v_shuffle_v3p3_v4p3__4_4_4(ptr addrspace(1) inreg %ptr) {4503; GFX9-LABEL: v_shuffle_v3p3_v4p3__4_4_4:4504; GFX9: ; %bb.0:4505; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4506; GFX9-NEXT: s_setpc_b64 s[30:31]4507 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4508 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 4, i32 4, i32 4>4509 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164510 ret void4511}4512 4513define void @v_shuffle_v3p3_v4p3__5_4_4(ptr addrspace(1) inreg %ptr) {4514; GFX900-LABEL: v_shuffle_v3p3_v4p3__5_4_4:4515; GFX900: ; %bb.0:4516; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4517; GFX900-NEXT: ;;#ASMSTART4518; GFX900-NEXT: ; def v[0:3]4519; GFX900-NEXT: ;;#ASMEND4520; GFX900-NEXT: v_mov_b32_e32 v4, 04521; GFX900-NEXT: v_mov_b32_e32 v2, v04522; GFX900-NEXT: v_mov_b32_e32 v3, v04523; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]4524; GFX900-NEXT: s_waitcnt vmcnt(0)4525; GFX900-NEXT: s_setpc_b64 s[30:31]4526;4527; GFX90A-LABEL: v_shuffle_v3p3_v4p3__5_4_4:4528; GFX90A: ; %bb.0:4529; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4530; GFX90A-NEXT: v_mov_b32_e32 v6, 04531; GFX90A-NEXT: ;;#ASMSTART4532; GFX90A-NEXT: ; def v[2:5]4533; GFX90A-NEXT: ;;#ASMEND4534; GFX90A-NEXT: v_mov_b32_e32 v0, v34535; GFX90A-NEXT: v_mov_b32_e32 v1, v24536; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]4537; GFX90A-NEXT: s_waitcnt vmcnt(0)4538; GFX90A-NEXT: s_setpc_b64 s[30:31]4539;4540; GFX942-LABEL: v_shuffle_v3p3_v4p3__5_4_4:4541; GFX942: ; %bb.0:4542; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4543; GFX942-NEXT: v_mov_b32_e32 v6, 04544; GFX942-NEXT: ;;#ASMSTART4545; GFX942-NEXT: ; def v[2:5]4546; GFX942-NEXT: ;;#ASMEND4547; GFX942-NEXT: s_nop 04548; GFX942-NEXT: v_mov_b32_e32 v0, v34549; GFX942-NEXT: v_mov_b32_e32 v1, v24550; GFX942-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1]4551; GFX942-NEXT: s_waitcnt vmcnt(0)4552; GFX942-NEXT: s_setpc_b64 s[30:31]4553 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4554 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4555 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 4, i32 4>4556 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164557 ret void4558}4559 4560define void @v_shuffle_v3p3_v4p3__6_4_4(ptr addrspace(1) inreg %ptr) {4561; GFX900-LABEL: v_shuffle_v3p3_v4p3__6_4_4:4562; GFX900: ; %bb.0:4563; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4564; GFX900-NEXT: ;;#ASMSTART4565; GFX900-NEXT: ; def v[0:3]4566; GFX900-NEXT: ;;#ASMEND4567; GFX900-NEXT: v_mov_b32_e32 v5, 04568; GFX900-NEXT: v_mov_b32_e32 v3, v04569; GFX900-NEXT: v_mov_b32_e32 v4, v04570; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]4571; GFX900-NEXT: s_waitcnt vmcnt(0)4572; GFX900-NEXT: s_setpc_b64 s[30:31]4573;4574; GFX90A-LABEL: v_shuffle_v3p3_v4p3__6_4_4:4575; GFX90A: ; %bb.0:4576; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4577; GFX90A-NEXT: ;;#ASMSTART4578; GFX90A-NEXT: ; def v[0:3]4579; GFX90A-NEXT: ;;#ASMEND4580; GFX90A-NEXT: v_mov_b32_e32 v5, 04581; GFX90A-NEXT: v_mov_b32_e32 v3, v04582; GFX90A-NEXT: v_mov_b32_e32 v4, v04583; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]4584; GFX90A-NEXT: s_waitcnt vmcnt(0)4585; GFX90A-NEXT: s_setpc_b64 s[30:31]4586;4587; GFX942-LABEL: v_shuffle_v3p3_v4p3__6_4_4:4588; GFX942: ; %bb.0:4589; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4590; GFX942-NEXT: ;;#ASMSTART4591; GFX942-NEXT: ; def v[0:3]4592; GFX942-NEXT: ;;#ASMEND4593; GFX942-NEXT: v_mov_b32_e32 v5, 04594; GFX942-NEXT: v_mov_b32_e32 v3, v04595; GFX942-NEXT: v_mov_b32_e32 v4, v04596; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]4597; GFX942-NEXT: s_waitcnt vmcnt(0)4598; GFX942-NEXT: s_setpc_b64 s[30:31]4599 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4600 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4601 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 4, i32 4>4602 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164603 ret void4604}4605 4606define void @v_shuffle_v3p3_v4p3__7_4_4(ptr addrspace(1) inreg %ptr) {4607; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_4_4:4608; GFX900: ; %bb.0:4609; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4610; GFX900-NEXT: v_mov_b32_e32 v6, 04611; GFX900-NEXT: ;;#ASMSTART4612; GFX900-NEXT: ; def v[0:3]4613; GFX900-NEXT: ;;#ASMEND4614; GFX900-NEXT: v_mov_b32_e32 v4, v04615; GFX900-NEXT: v_mov_b32_e32 v5, v04616; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]4617; GFX900-NEXT: s_waitcnt vmcnt(0)4618; GFX900-NEXT: s_setpc_b64 s[30:31]4619;4620; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_4_4:4621; GFX90A: ; %bb.0:4622; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4623; GFX90A-NEXT: v_mov_b32_e32 v6, 04624; GFX90A-NEXT: ;;#ASMSTART4625; GFX90A-NEXT: ; def v[2:5]4626; GFX90A-NEXT: ;;#ASMEND4627; GFX90A-NEXT: v_mov_b32_e32 v0, v54628; GFX90A-NEXT: v_mov_b32_e32 v1, v24629; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]4630; GFX90A-NEXT: s_waitcnt vmcnt(0)4631; GFX90A-NEXT: s_setpc_b64 s[30:31]4632;4633; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_4_4:4634; GFX942: ; %bb.0:4635; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4636; GFX942-NEXT: v_mov_b32_e32 v6, 04637; GFX942-NEXT: ;;#ASMSTART4638; GFX942-NEXT: ; def v[2:5]4639; GFX942-NEXT: ;;#ASMEND4640; GFX942-NEXT: s_nop 04641; GFX942-NEXT: v_mov_b32_e32 v0, v54642; GFX942-NEXT: v_mov_b32_e32 v1, v24643; GFX942-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1]4644; GFX942-NEXT: s_waitcnt vmcnt(0)4645; GFX942-NEXT: s_setpc_b64 s[30:31]4646 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4647 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4648 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 4>4649 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164650 ret void4651}4652 4653define void @v_shuffle_v3p3_v4p3__7_u_4(ptr addrspace(1) inreg %ptr) {4654; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_u_4:4655; GFX900: ; %bb.0:4656; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4657; GFX900-NEXT: v_mov_b32_e32 v4, 04658; GFX900-NEXT: ;;#ASMSTART4659; GFX900-NEXT: ; def v[0:3]4660; GFX900-NEXT: ;;#ASMEND4661; GFX900-NEXT: v_mov_b32_e32 v5, v04662; GFX900-NEXT: global_store_dwordx3 v4, v[3:5], s[16:17]4663; GFX900-NEXT: s_waitcnt vmcnt(0)4664; GFX900-NEXT: s_setpc_b64 s[30:31]4665;4666; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_u_4:4667; GFX90A: ; %bb.0:4668; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4669; GFX90A-NEXT: v_mov_b32_e32 v1, 04670; GFX90A-NEXT: ;;#ASMSTART4671; GFX90A-NEXT: ; def v[2:5]4672; GFX90A-NEXT: ;;#ASMEND4673; GFX90A-NEXT: v_mov_b32_e32 v0, v54674; GFX90A-NEXT: global_store_dwordx3 v1, v[0:2], s[16:17]4675; GFX90A-NEXT: s_waitcnt vmcnt(0)4676; GFX90A-NEXT: s_setpc_b64 s[30:31]4677;4678; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_u_4:4679; GFX942: ; %bb.0:4680; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4681; GFX942-NEXT: v_mov_b32_e32 v1, 04682; GFX942-NEXT: ;;#ASMSTART4683; GFX942-NEXT: ; def v[2:5]4684; GFX942-NEXT: ;;#ASMEND4685; GFX942-NEXT: s_nop 04686; GFX942-NEXT: v_mov_b32_e32 v0, v54687; GFX942-NEXT: global_store_dwordx3 v1, v[0:2], s[0:1]4688; GFX942-NEXT: s_waitcnt vmcnt(0)4689; GFX942-NEXT: s_setpc_b64 s[30:31]4690 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4691 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4692 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 4>4693 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164694 ret void4695}4696 4697define void @v_shuffle_v3p3_v4p3__7_0_4(ptr addrspace(1) inreg %ptr) {4698; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_0_4:4699; GFX900: ; %bb.0:4700; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4701; GFX900-NEXT: ;;#ASMSTART4702; GFX900-NEXT: ; def v[4:7]4703; GFX900-NEXT: ;;#ASMEND4704; GFX900-NEXT: v_mov_b32_e32 v8, 04705; GFX900-NEXT: ;;#ASMSTART4706; GFX900-NEXT: ; def v[0:3]4707; GFX900-NEXT: ;;#ASMEND4708; GFX900-NEXT: v_mov_b32_e32 v5, v04709; GFX900-NEXT: global_store_dwordx3 v8, v[3:5], s[16:17]4710; GFX900-NEXT: s_waitcnt vmcnt(0)4711; GFX900-NEXT: s_setpc_b64 s[30:31]4712;4713; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_0_4:4714; GFX90A: ; %bb.0:4715; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4716; GFX90A-NEXT: v_mov_b32_e32 v10, 04717; GFX90A-NEXT: ;;#ASMSTART4718; GFX90A-NEXT: ; def v[6:9]4719; GFX90A-NEXT: ;;#ASMEND4720; GFX90A-NEXT: ;;#ASMSTART4721; GFX90A-NEXT: ; def v[2:5]4722; GFX90A-NEXT: ;;#ASMEND4723; GFX90A-NEXT: v_mov_b32_e32 v0, v54724; GFX90A-NEXT: v_mov_b32_e32 v1, v64725; GFX90A-NEXT: global_store_dwordx3 v10, v[0:2], s[16:17]4726; GFX90A-NEXT: s_waitcnt vmcnt(0)4727; GFX90A-NEXT: s_setpc_b64 s[30:31]4728;4729; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_0_4:4730; GFX942: ; %bb.0:4731; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4732; GFX942-NEXT: v_mov_b32_e32 v10, 04733; GFX942-NEXT: ;;#ASMSTART4734; GFX942-NEXT: ; def v[6:9]4735; GFX942-NEXT: ;;#ASMEND4736; GFX942-NEXT: ;;#ASMSTART4737; GFX942-NEXT: ; def v[2:5]4738; GFX942-NEXT: ;;#ASMEND4739; GFX942-NEXT: s_nop 04740; GFX942-NEXT: v_mov_b32_e32 v0, v54741; GFX942-NEXT: v_mov_b32_e32 v1, v64742; GFX942-NEXT: global_store_dwordx3 v10, v[0:2], s[0:1]4743; GFX942-NEXT: s_waitcnt vmcnt(0)4744; GFX942-NEXT: s_setpc_b64 s[30:31]4745 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4746 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4747 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 4>4748 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164749 ret void4750}4751 4752define void @v_shuffle_v3p3_v4p3__7_1_4(ptr addrspace(1) inreg %ptr) {4753; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_1_4:4754; GFX900: ; %bb.0:4755; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4756; GFX900-NEXT: ;;#ASMSTART4757; GFX900-NEXT: ; def v[3:6]4758; GFX900-NEXT: ;;#ASMEND4759; GFX900-NEXT: v_mov_b32_e32 v7, 04760; GFX900-NEXT: ;;#ASMSTART4761; GFX900-NEXT: ; def v[0:3]4762; GFX900-NEXT: ;;#ASMEND4763; GFX900-NEXT: v_mov_b32_e32 v5, v04764; GFX900-NEXT: global_store_dwordx3 v7, v[3:5], s[16:17]4765; GFX900-NEXT: s_waitcnt vmcnt(0)4766; GFX900-NEXT: s_setpc_b64 s[30:31]4767;4768; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_1_4:4769; GFX90A: ; %bb.0:4770; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4771; GFX90A-NEXT: ;;#ASMSTART4772; GFX90A-NEXT: ; def v[0:3]4773; GFX90A-NEXT: ;;#ASMEND4774; GFX90A-NEXT: v_mov_b32_e32 v6, 04775; GFX90A-NEXT: ;;#ASMSTART4776; GFX90A-NEXT: ; def v[2:5]4777; GFX90A-NEXT: ;;#ASMEND4778; GFX90A-NEXT: v_mov_b32_e32 v0, v54779; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]4780; GFX90A-NEXT: s_waitcnt vmcnt(0)4781; GFX90A-NEXT: s_setpc_b64 s[30:31]4782;4783; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_1_4:4784; GFX942: ; %bb.0:4785; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4786; GFX942-NEXT: ;;#ASMSTART4787; GFX942-NEXT: ; def v[0:3]4788; GFX942-NEXT: ;;#ASMEND4789; GFX942-NEXT: v_mov_b32_e32 v6, 04790; GFX942-NEXT: ;;#ASMSTART4791; GFX942-NEXT: ; def v[2:5]4792; GFX942-NEXT: ;;#ASMEND4793; GFX942-NEXT: s_nop 04794; GFX942-NEXT: v_mov_b32_e32 v0, v54795; GFX942-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1]4796; GFX942-NEXT: s_waitcnt vmcnt(0)4797; GFX942-NEXT: s_setpc_b64 s[30:31]4798 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4799 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4800 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 4>4801 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164802 ret void4803}4804 4805define void @v_shuffle_v3p3_v4p3__7_2_4(ptr addrspace(1) inreg %ptr) {4806; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_2_4:4807; GFX900: ; %bb.0:4808; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4809; GFX900-NEXT: ;;#ASMSTART4810; GFX900-NEXT: ; def v[2:5]4811; GFX900-NEXT: ;;#ASMEND4812; GFX900-NEXT: v_mov_b32_e32 v6, 04813; GFX900-NEXT: ;;#ASMSTART4814; GFX900-NEXT: ; def v[0:3]4815; GFX900-NEXT: ;;#ASMEND4816; GFX900-NEXT: v_mov_b32_e32 v5, v04817; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]4818; GFX900-NEXT: s_waitcnt vmcnt(0)4819; GFX900-NEXT: s_setpc_b64 s[30:31]4820;4821; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_2_4:4822; GFX90A: ; %bb.0:4823; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4824; GFX90A-NEXT: ;;#ASMSTART4825; GFX90A-NEXT: ; def v[4:7]4826; GFX90A-NEXT: ;;#ASMEND4827; GFX90A-NEXT: v_mov_b32_e32 v8, 04828; GFX90A-NEXT: ;;#ASMSTART4829; GFX90A-NEXT: ; def v[2:5]4830; GFX90A-NEXT: ;;#ASMEND4831; GFX90A-NEXT: v_mov_b32_e32 v0, v54832; GFX90A-NEXT: v_mov_b32_e32 v1, v64833; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]4834; GFX90A-NEXT: s_waitcnt vmcnt(0)4835; GFX90A-NEXT: s_setpc_b64 s[30:31]4836;4837; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_2_4:4838; GFX942: ; %bb.0:4839; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4840; GFX942-NEXT: ;;#ASMSTART4841; GFX942-NEXT: ; def v[4:7]4842; GFX942-NEXT: ;;#ASMEND4843; GFX942-NEXT: v_mov_b32_e32 v8, 04844; GFX942-NEXT: ;;#ASMSTART4845; GFX942-NEXT: ; def v[2:5]4846; GFX942-NEXT: ;;#ASMEND4847; GFX942-NEXT: v_mov_b32_e32 v1, v64848; GFX942-NEXT: v_mov_b32_e32 v0, v54849; GFX942-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1]4850; GFX942-NEXT: s_waitcnt vmcnt(0)4851; GFX942-NEXT: s_setpc_b64 s[30:31]4852 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4853 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4854 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 4>4855 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164856 ret void4857}4858 4859define void @v_shuffle_v3p3_v4p3__7_3_4(ptr addrspace(1) inreg %ptr) {4860; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_3_4:4861; GFX900: ; %bb.0:4862; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4863; GFX900-NEXT: ;;#ASMSTART4864; GFX900-NEXT: ; def v[1:4]4865; GFX900-NEXT: ;;#ASMEND4866; GFX900-NEXT: v_mov_b32_e32 v6, 04867; GFX900-NEXT: ;;#ASMSTART4868; GFX900-NEXT: ; def v[0:3]4869; GFX900-NEXT: ;;#ASMEND4870; GFX900-NEXT: v_mov_b32_e32 v5, v04871; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]4872; GFX900-NEXT: s_waitcnt vmcnt(0)4873; GFX900-NEXT: s_setpc_b64 s[30:31]4874;4875; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_3_4:4876; GFX90A: ; %bb.0:4877; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4878; GFX90A-NEXT: ;;#ASMSTART4879; GFX90A-NEXT: ; def v[0:3]4880; GFX90A-NEXT: ;;#ASMEND4881; GFX90A-NEXT: v_mov_b32_e32 v8, 04882; GFX90A-NEXT: ;;#ASMSTART4883; GFX90A-NEXT: ; def v[4:7]4884; GFX90A-NEXT: ;;#ASMEND4885; GFX90A-NEXT: v_mov_b32_e32 v2, v74886; GFX90A-NEXT: global_store_dwordx3 v8, v[2:4], s[16:17]4887; GFX90A-NEXT: s_waitcnt vmcnt(0)4888; GFX90A-NEXT: s_setpc_b64 s[30:31]4889;4890; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_3_4:4891; GFX942: ; %bb.0:4892; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4893; GFX942-NEXT: ;;#ASMSTART4894; GFX942-NEXT: ; def v[0:3]4895; GFX942-NEXT: ;;#ASMEND4896; GFX942-NEXT: v_mov_b32_e32 v8, 04897; GFX942-NEXT: ;;#ASMSTART4898; GFX942-NEXT: ; def v[4:7]4899; GFX942-NEXT: ;;#ASMEND4900; GFX942-NEXT: s_nop 04901; GFX942-NEXT: v_mov_b32_e32 v2, v74902; GFX942-NEXT: global_store_dwordx3 v8, v[2:4], s[0:1]4903; GFX942-NEXT: s_waitcnt vmcnt(0)4904; GFX942-NEXT: s_setpc_b64 s[30:31]4905 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4906 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4907 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 4>4908 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164909 ret void4910}4911 4912define void @v_shuffle_v3p3_v4p3__7_5_4(ptr addrspace(1) inreg %ptr) {4913; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_5_4:4914; GFX900: ; %bb.0:4915; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4916; GFX900-NEXT: v_mov_b32_e32 v6, 04917; GFX900-NEXT: ;;#ASMSTART4918; GFX900-NEXT: ; def v[0:3]4919; GFX900-NEXT: ;;#ASMEND4920; GFX900-NEXT: v_mov_b32_e32 v4, v14921; GFX900-NEXT: v_mov_b32_e32 v5, v04922; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]4923; GFX900-NEXT: s_waitcnt vmcnt(0)4924; GFX900-NEXT: s_setpc_b64 s[30:31]4925;4926; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_5_4:4927; GFX90A: ; %bb.0:4928; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4929; GFX90A-NEXT: v_mov_b32_e32 v6, 04930; GFX90A-NEXT: ;;#ASMSTART4931; GFX90A-NEXT: ; def v[2:5]4932; GFX90A-NEXT: ;;#ASMEND4933; GFX90A-NEXT: v_mov_b32_e32 v0, v54934; GFX90A-NEXT: v_mov_b32_e32 v1, v34935; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]4936; GFX90A-NEXT: s_waitcnt vmcnt(0)4937; GFX90A-NEXT: s_setpc_b64 s[30:31]4938;4939; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_5_4:4940; GFX942: ; %bb.0:4941; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4942; GFX942-NEXT: v_mov_b32_e32 v6, 04943; GFX942-NEXT: ;;#ASMSTART4944; GFX942-NEXT: ; def v[2:5]4945; GFX942-NEXT: ;;#ASMEND4946; GFX942-NEXT: s_nop 04947; GFX942-NEXT: v_mov_b32_e32 v0, v54948; GFX942-NEXT: v_mov_b32_e32 v1, v34949; GFX942-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1]4950; GFX942-NEXT: s_waitcnt vmcnt(0)4951; GFX942-NEXT: s_setpc_b64 s[30:31]4952 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4953 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()4954 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 4>4955 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164956 ret void4957}4958 4959define void @v_shuffle_v3p3_v4p3__7_6_4(ptr addrspace(1) inreg %ptr) {4960; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_6_4:4961; GFX900: ; %bb.0:4962; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4963; GFX900-NEXT: v_mov_b32_e32 v6, 04964; GFX900-NEXT: ;;#ASMSTART4965; GFX900-NEXT: ; def v[0:3]4966; GFX900-NEXT: ;;#ASMEND4967; GFX900-NEXT: v_mov_b32_e32 v4, v24968; GFX900-NEXT: v_mov_b32_e32 v5, v04969; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]4970; GFX900-NEXT: s_waitcnt vmcnt(0)4971; GFX900-NEXT: s_setpc_b64 s[30:31]4972;4973; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_6_4:4974; GFX90A: ; %bb.0:4975; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4976; GFX90A-NEXT: v_mov_b32_e32 v6, 04977; GFX90A-NEXT: ;;#ASMSTART4978; GFX90A-NEXT: ; def v[2:5]4979; GFX90A-NEXT: ;;#ASMEND4980; GFX90A-NEXT: v_mov_b32_e32 v0, v54981; GFX90A-NEXT: v_mov_b32_e32 v1, v44982; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]4983; GFX90A-NEXT: s_waitcnt vmcnt(0)4984; GFX90A-NEXT: s_setpc_b64 s[30:31]4985;4986; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_6_4:4987; GFX942: ; %bb.0:4988; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4989; GFX942-NEXT: v_mov_b32_e32 v6, 04990; GFX942-NEXT: ;;#ASMSTART4991; GFX942-NEXT: ; def v[2:5]4992; GFX942-NEXT: ;;#ASMEND4993; GFX942-NEXT: s_nop 04994; GFX942-NEXT: v_mov_b32_e32 v0, v54995; GFX942-NEXT: v_mov_b32_e32 v1, v44996; GFX942-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1]4997; GFX942-NEXT: s_waitcnt vmcnt(0)4998; GFX942-NEXT: s_setpc_b64 s[30:31]4999 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5000 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5001 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 4>5002 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165003 ret void5004}5005 5006define void @v_shuffle_v3p3_v4p3__u_5_5(ptr addrspace(1) inreg %ptr) {5007; GFX900-LABEL: v_shuffle_v3p3_v4p3__u_5_5:5008; GFX900: ; %bb.0:5009; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5010; GFX900-NEXT: ;;#ASMSTART5011; GFX900-NEXT: ; def v[0:3]5012; GFX900-NEXT: ;;#ASMEND5013; GFX900-NEXT: v_mov_b32_e32 v4, 05014; GFX900-NEXT: v_mov_b32_e32 v2, v15015; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]5016; GFX900-NEXT: s_waitcnt vmcnt(0)5017; GFX900-NEXT: s_setpc_b64 s[30:31]5018;5019; GFX90A-LABEL: v_shuffle_v3p3_v4p3__u_5_5:5020; GFX90A: ; %bb.0:5021; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5022; GFX90A-NEXT: ;;#ASMSTART5023; GFX90A-NEXT: ; def v[0:3]5024; GFX90A-NEXT: ;;#ASMEND5025; GFX90A-NEXT: v_mov_b32_e32 v4, 05026; GFX90A-NEXT: v_mov_b32_e32 v2, v15027; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]5028; GFX90A-NEXT: s_waitcnt vmcnt(0)5029; GFX90A-NEXT: s_setpc_b64 s[30:31]5030;5031; GFX942-LABEL: v_shuffle_v3p3_v4p3__u_5_5:5032; GFX942: ; %bb.0:5033; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5034; GFX942-NEXT: ;;#ASMSTART5035; GFX942-NEXT: ; def v[0:3]5036; GFX942-NEXT: ;;#ASMEND5037; GFX942-NEXT: v_mov_b32_e32 v4, 05038; GFX942-NEXT: v_mov_b32_e32 v2, v15039; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]5040; GFX942-NEXT: s_waitcnt vmcnt(0)5041; GFX942-NEXT: s_setpc_b64 s[30:31]5042 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5043 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5044 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 poison, i32 5, i32 5>5045 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165046 ret void5047}5048 5049define void @v_shuffle_v3p3_v4p3__0_5_5(ptr addrspace(1) inreg %ptr) {5050; GFX900-LABEL: v_shuffle_v3p3_v4p3__0_5_5:5051; GFX900: ; %bb.0:5052; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5053; GFX900-NEXT: ;;#ASMSTART5054; GFX900-NEXT: ; def v[0:3]5055; GFX900-NEXT: ;;#ASMEND5056; GFX900-NEXT: ;;#ASMSTART5057; GFX900-NEXT: ; def v[1:4]5058; GFX900-NEXT: ;;#ASMEND5059; GFX900-NEXT: v_mov_b32_e32 v5, 05060; GFX900-NEXT: v_mov_b32_e32 v1, v25061; GFX900-NEXT: global_store_dwordx3 v5, v[0:2], s[16:17]5062; GFX900-NEXT: s_waitcnt vmcnt(0)5063; GFX900-NEXT: s_setpc_b64 s[30:31]5064;5065; GFX90A-LABEL: v_shuffle_v3p3_v4p3__0_5_5:5066; GFX90A: ; %bb.0:5067; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5068; GFX90A-NEXT: ;;#ASMSTART5069; GFX90A-NEXT: ; def v[0:3]5070; GFX90A-NEXT: ;;#ASMEND5071; GFX90A-NEXT: ;;#ASMSTART5072; GFX90A-NEXT: ; def v[2:5]5073; GFX90A-NEXT: ;;#ASMEND5074; GFX90A-NEXT: v_mov_b32_e32 v6, 05075; GFX90A-NEXT: v_mov_b32_e32 v1, v35076; GFX90A-NEXT: v_mov_b32_e32 v2, v35077; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]5078; GFX90A-NEXT: s_waitcnt vmcnt(0)5079; GFX90A-NEXT: s_setpc_b64 s[30:31]5080;5081; GFX942-LABEL: v_shuffle_v3p3_v4p3__0_5_5:5082; GFX942: ; %bb.0:5083; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5084; GFX942-NEXT: ;;#ASMSTART5085; GFX942-NEXT: ; def v[0:3]5086; GFX942-NEXT: ;;#ASMEND5087; GFX942-NEXT: v_mov_b32_e32 v6, 05088; GFX942-NEXT: ;;#ASMSTART5089; GFX942-NEXT: ; def v[2:5]5090; GFX942-NEXT: ;;#ASMEND5091; GFX942-NEXT: s_nop 05092; GFX942-NEXT: v_mov_b32_e32 v1, v35093; GFX942-NEXT: v_mov_b32_e32 v2, v35094; GFX942-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1]5095; GFX942-NEXT: s_waitcnt vmcnt(0)5096; GFX942-NEXT: s_setpc_b64 s[30:31]5097 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5098 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5099 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 0, i32 5, i32 5>5100 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165101 ret void5102}5103 5104define void @v_shuffle_v3p3_v4p3__1_5_5(ptr addrspace(1) inreg %ptr) {5105; GFX900-LABEL: v_shuffle_v3p3_v4p3__1_5_5:5106; GFX900: ; %bb.0:5107; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5108; GFX900-NEXT: ;;#ASMSTART5109; GFX900-NEXT: ; def v[0:3]5110; GFX900-NEXT: ;;#ASMEND5111; GFX900-NEXT: ;;#ASMSTART5112; GFX900-NEXT: ; def v[2:5]5113; GFX900-NEXT: ;;#ASMEND5114; GFX900-NEXT: v_mov_b32_e32 v6, 05115; GFX900-NEXT: v_mov_b32_e32 v2, v35116; GFX900-NEXT: global_store_dwordx3 v6, v[1:3], s[16:17]5117; GFX900-NEXT: s_waitcnt vmcnt(0)5118; GFX900-NEXT: s_setpc_b64 s[30:31]5119;5120; GFX90A-LABEL: v_shuffle_v3p3_v4p3__1_5_5:5121; GFX90A: ; %bb.0:5122; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5123; GFX90A-NEXT: ;;#ASMSTART5124; GFX90A-NEXT: ; def v[0:3]5125; GFX90A-NEXT: ;;#ASMEND5126; GFX90A-NEXT: ;;#ASMSTART5127; GFX90A-NEXT: ; def v[2:5]5128; GFX90A-NEXT: ;;#ASMEND5129; GFX90A-NEXT: v_mov_b32_e32 v6, 05130; GFX90A-NEXT: v_mov_b32_e32 v2, v15131; GFX90A-NEXT: v_mov_b32_e32 v4, v35132; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]5133; GFX90A-NEXT: s_waitcnt vmcnt(0)5134; GFX90A-NEXT: s_setpc_b64 s[30:31]5135;5136; GFX942-LABEL: v_shuffle_v3p3_v4p3__1_5_5:5137; GFX942: ; %bb.0:5138; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5139; GFX942-NEXT: ;;#ASMSTART5140; GFX942-NEXT: ; def v[0:3]5141; GFX942-NEXT: ;;#ASMEND5142; GFX942-NEXT: v_mov_b32_e32 v6, 05143; GFX942-NEXT: ;;#ASMSTART5144; GFX942-NEXT: ; def v[2:5]5145; GFX942-NEXT: ;;#ASMEND5146; GFX942-NEXT: s_nop 05147; GFX942-NEXT: v_mov_b32_e32 v2, v15148; GFX942-NEXT: v_mov_b32_e32 v4, v35149; GFX942-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1]5150; GFX942-NEXT: s_waitcnt vmcnt(0)5151; GFX942-NEXT: s_setpc_b64 s[30:31]5152 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5153 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5154 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 1, i32 5, i32 5>5155 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165156 ret void5157}5158 5159define void @v_shuffle_v3p3_v4p3__2_5_5(ptr addrspace(1) inreg %ptr) {5160; GFX900-LABEL: v_shuffle_v3p3_v4p3__2_5_5:5161; GFX900: ; %bb.0:5162; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5163; GFX900-NEXT: ;;#ASMSTART5164; GFX900-NEXT: ; def v[0:3]5165; GFX900-NEXT: ;;#ASMEND5166; GFX900-NEXT: ;;#ASMSTART5167; GFX900-NEXT: ; def v[3:6]5168; GFX900-NEXT: ;;#ASMEND5169; GFX900-NEXT: v_mov_b32_e32 v7, 05170; GFX900-NEXT: v_mov_b32_e32 v3, v45171; GFX900-NEXT: global_store_dwordx3 v7, v[2:4], s[16:17]5172; GFX900-NEXT: s_waitcnt vmcnt(0)5173; GFX900-NEXT: s_setpc_b64 s[30:31]5174;5175; GFX90A-LABEL: v_shuffle_v3p3_v4p3__2_5_5:5176; GFX90A: ; %bb.0:5177; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5178; GFX90A-NEXT: ;;#ASMSTART5179; GFX90A-NEXT: ; def v[0:3]5180; GFX90A-NEXT: ;;#ASMEND5181; GFX90A-NEXT: ;;#ASMSTART5182; GFX90A-NEXT: ; def v[4:7]5183; GFX90A-NEXT: ;;#ASMEND5184; GFX90A-NEXT: v_mov_b32_e32 v8, 05185; GFX90A-NEXT: v_mov_b32_e32 v3, v55186; GFX90A-NEXT: v_mov_b32_e32 v4, v55187; GFX90A-NEXT: global_store_dwordx3 v8, v[2:4], s[16:17]5188; GFX90A-NEXT: s_waitcnt vmcnt(0)5189; GFX90A-NEXT: s_setpc_b64 s[30:31]5190;5191; GFX942-LABEL: v_shuffle_v3p3_v4p3__2_5_5:5192; GFX942: ; %bb.0:5193; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5194; GFX942-NEXT: ;;#ASMSTART5195; GFX942-NEXT: ; def v[0:3]5196; GFX942-NEXT: ;;#ASMEND5197; GFX942-NEXT: ;;#ASMSTART5198; GFX942-NEXT: ; def v[4:7]5199; GFX942-NEXT: ;;#ASMEND5200; GFX942-NEXT: v_mov_b32_e32 v8, 05201; GFX942-NEXT: v_mov_b32_e32 v3, v55202; GFX942-NEXT: v_mov_b32_e32 v4, v55203; GFX942-NEXT: global_store_dwordx3 v8, v[2:4], s[0:1]5204; GFX942-NEXT: s_waitcnt vmcnt(0)5205; GFX942-NEXT: s_setpc_b64 s[30:31]5206 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5207 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5208 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 2, i32 5, i32 5>5209 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165210 ret void5211}5212 5213define void @v_shuffle_v3p3_v4p3__3_5_5(ptr addrspace(1) inreg %ptr) {5214; GFX900-LABEL: v_shuffle_v3p3_v4p3__3_5_5:5215; GFX900: ; %bb.0:5216; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5217; GFX900-NEXT: ;;#ASMSTART5218; GFX900-NEXT: ; def v[4:7]5219; GFX900-NEXT: ;;#ASMEND5220; GFX900-NEXT: v_mov_b32_e32 v8, 05221; GFX900-NEXT: v_mov_b32_e32 v4, v55222; GFX900-NEXT: ;;#ASMSTART5223; GFX900-NEXT: ; def v[0:3]5224; GFX900-NEXT: ;;#ASMEND5225; GFX900-NEXT: global_store_dwordx3 v8, v[3:5], s[16:17]5226; GFX900-NEXT: s_waitcnt vmcnt(0)5227; GFX900-NEXT: s_setpc_b64 s[30:31]5228;5229; GFX90A-LABEL: v_shuffle_v3p3_v4p3__3_5_5:5230; GFX90A: ; %bb.0:5231; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5232; GFX90A-NEXT: ;;#ASMSTART5233; GFX90A-NEXT: ; def v[4:7]5234; GFX90A-NEXT: ;;#ASMEND5235; GFX90A-NEXT: v_mov_b32_e32 v8, 05236; GFX90A-NEXT: ;;#ASMSTART5237; GFX90A-NEXT: ; def v[0:3]5238; GFX90A-NEXT: ;;#ASMEND5239; GFX90A-NEXT: v_mov_b32_e32 v4, v35240; GFX90A-NEXT: v_mov_b32_e32 v6, v55241; GFX90A-NEXT: global_store_dwordx3 v8, v[4:6], s[16:17]5242; GFX90A-NEXT: s_waitcnt vmcnt(0)5243; GFX90A-NEXT: s_setpc_b64 s[30:31]5244;5245; GFX942-LABEL: v_shuffle_v3p3_v4p3__3_5_5:5246; GFX942: ; %bb.0:5247; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5248; GFX942-NEXT: ;;#ASMSTART5249; GFX942-NEXT: ; def v[4:7]5250; GFX942-NEXT: ;;#ASMEND5251; GFX942-NEXT: v_mov_b32_e32 v8, 05252; GFX942-NEXT: ;;#ASMSTART5253; GFX942-NEXT: ; def v[0:3]5254; GFX942-NEXT: ;;#ASMEND5255; GFX942-NEXT: v_mov_b32_e32 v6, v55256; GFX942-NEXT: v_mov_b32_e32 v4, v35257; GFX942-NEXT: global_store_dwordx3 v8, v[4:6], s[0:1]5258; GFX942-NEXT: s_waitcnt vmcnt(0)5259; GFX942-NEXT: s_setpc_b64 s[30:31]5260 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5261 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5262 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 5, i32 5>5263 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165264 ret void5265}5266 5267define void @v_shuffle_v3p3_v4p3__4_5_5(ptr addrspace(1) inreg %ptr) {5268; GFX900-LABEL: v_shuffle_v3p3_v4p3__4_5_5:5269; GFX900: ; %bb.0:5270; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5271; GFX900-NEXT: ;;#ASMSTART5272; GFX900-NEXT: ; def v[0:3]5273; GFX900-NEXT: ;;#ASMEND5274; GFX900-NEXT: v_mov_b32_e32 v4, 05275; GFX900-NEXT: v_mov_b32_e32 v2, v15276; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]5277; GFX900-NEXT: s_waitcnt vmcnt(0)5278; GFX900-NEXT: s_setpc_b64 s[30:31]5279;5280; GFX90A-LABEL: v_shuffle_v3p3_v4p3__4_5_5:5281; GFX90A: ; %bb.0:5282; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5283; GFX90A-NEXT: ;;#ASMSTART5284; GFX90A-NEXT: ; def v[0:3]5285; GFX90A-NEXT: ;;#ASMEND5286; GFX90A-NEXT: v_mov_b32_e32 v4, 05287; GFX90A-NEXT: v_mov_b32_e32 v2, v15288; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]5289; GFX90A-NEXT: s_waitcnt vmcnt(0)5290; GFX90A-NEXT: s_setpc_b64 s[30:31]5291;5292; GFX942-LABEL: v_shuffle_v3p3_v4p3__4_5_5:5293; GFX942: ; %bb.0:5294; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5295; GFX942-NEXT: ;;#ASMSTART5296; GFX942-NEXT: ; def v[0:3]5297; GFX942-NEXT: ;;#ASMEND5298; GFX942-NEXT: v_mov_b32_e32 v4, 05299; GFX942-NEXT: v_mov_b32_e32 v2, v15300; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]5301; GFX942-NEXT: s_waitcnt vmcnt(0)5302; GFX942-NEXT: s_setpc_b64 s[30:31]5303 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5304 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5305 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 4, i32 5, i32 5>5306 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165307 ret void5308}5309 5310define void @v_shuffle_v3p3_v4p3__5_5_5(ptr addrspace(1) inreg %ptr) {5311; GFX900-LABEL: v_shuffle_v3p3_v4p3__5_5_5:5312; GFX900: ; %bb.0:5313; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5314; GFX900-NEXT: ;;#ASMSTART5315; GFX900-NEXT: ; def v[0:3]5316; GFX900-NEXT: ;;#ASMEND5317; GFX900-NEXT: v_mov_b32_e32 v4, 05318; GFX900-NEXT: v_mov_b32_e32 v2, v15319; GFX900-NEXT: v_mov_b32_e32 v3, v15320; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]5321; GFX900-NEXT: s_waitcnt vmcnt(0)5322; GFX900-NEXT: s_setpc_b64 s[30:31]5323;5324; GFX90A-LABEL: v_shuffle_v3p3_v4p3__5_5_5:5325; GFX90A: ; %bb.0:5326; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5327; GFX90A-NEXT: ;;#ASMSTART5328; GFX90A-NEXT: ; def v[0:3]5329; GFX90A-NEXT: ;;#ASMEND5330; GFX90A-NEXT: v_mov_b32_e32 v4, 05331; GFX90A-NEXT: v_mov_b32_e32 v0, v15332; GFX90A-NEXT: v_mov_b32_e32 v2, v15333; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]5334; GFX90A-NEXT: s_waitcnt vmcnt(0)5335; GFX90A-NEXT: s_setpc_b64 s[30:31]5336;5337; GFX942-LABEL: v_shuffle_v3p3_v4p3__5_5_5:5338; GFX942: ; %bb.0:5339; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5340; GFX942-NEXT: ;;#ASMSTART5341; GFX942-NEXT: ; def v[0:3]5342; GFX942-NEXT: ;;#ASMEND5343; GFX942-NEXT: v_mov_b32_e32 v4, 05344; GFX942-NEXT: v_mov_b32_e32 v0, v15345; GFX942-NEXT: v_mov_b32_e32 v2, v15346; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]5347; GFX942-NEXT: s_waitcnt vmcnt(0)5348; GFX942-NEXT: s_setpc_b64 s[30:31]5349 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5350 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5351 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 5, i32 5>5352 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165353 ret void5354}5355 5356define void @v_shuffle_v3p3_v4p3__6_5_5(ptr addrspace(1) inreg %ptr) {5357; GFX900-LABEL: v_shuffle_v3p3_v4p3__6_5_5:5358; GFX900: ; %bb.0:5359; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5360; GFX900-NEXT: ;;#ASMSTART5361; GFX900-NEXT: ; def v[0:3]5362; GFX900-NEXT: ;;#ASMEND5363; GFX900-NEXT: v_mov_b32_e32 v5, 05364; GFX900-NEXT: v_mov_b32_e32 v3, v15365; GFX900-NEXT: v_mov_b32_e32 v4, v15366; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]5367; GFX900-NEXT: s_waitcnt vmcnt(0)5368; GFX900-NEXT: s_setpc_b64 s[30:31]5369;5370; GFX90A-LABEL: v_shuffle_v3p3_v4p3__6_5_5:5371; GFX90A: ; %bb.0:5372; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5373; GFX90A-NEXT: ;;#ASMSTART5374; GFX90A-NEXT: ; def v[0:3]5375; GFX90A-NEXT: ;;#ASMEND5376; GFX90A-NEXT: v_mov_b32_e32 v5, 05377; GFX90A-NEXT: v_mov_b32_e32 v3, v15378; GFX90A-NEXT: v_mov_b32_e32 v4, v15379; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]5380; GFX90A-NEXT: s_waitcnt vmcnt(0)5381; GFX90A-NEXT: s_setpc_b64 s[30:31]5382;5383; GFX942-LABEL: v_shuffle_v3p3_v4p3__6_5_5:5384; GFX942: ; %bb.0:5385; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5386; GFX942-NEXT: ;;#ASMSTART5387; GFX942-NEXT: ; def v[0:3]5388; GFX942-NEXT: ;;#ASMEND5389; GFX942-NEXT: v_mov_b32_e32 v5, 05390; GFX942-NEXT: v_mov_b32_e32 v3, v15391; GFX942-NEXT: v_mov_b32_e32 v4, v15392; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]5393; GFX942-NEXT: s_waitcnt vmcnt(0)5394; GFX942-NEXT: s_setpc_b64 s[30:31]5395 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5396 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5397 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 5, i32 5>5398 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165399 ret void5400}5401 5402define void @v_shuffle_v3p3_v4p3__7_5_5(ptr addrspace(1) inreg %ptr) {5403; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_5_5:5404; GFX900: ; %bb.0:5405; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5406; GFX900-NEXT: v_mov_b32_e32 v6, 05407; GFX900-NEXT: ;;#ASMSTART5408; GFX900-NEXT: ; def v[0:3]5409; GFX900-NEXT: ;;#ASMEND5410; GFX900-NEXT: v_mov_b32_e32 v4, v15411; GFX900-NEXT: v_mov_b32_e32 v5, v15412; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]5413; GFX900-NEXT: s_waitcnt vmcnt(0)5414; GFX900-NEXT: s_setpc_b64 s[30:31]5415;5416; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_5_5:5417; GFX90A: ; %bb.0:5418; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5419; GFX90A-NEXT: ;;#ASMSTART5420; GFX90A-NEXT: ; def v[0:3]5421; GFX90A-NEXT: ;;#ASMEND5422; GFX90A-NEXT: v_mov_b32_e32 v4, 05423; GFX90A-NEXT: v_mov_b32_e32 v0, v35424; GFX90A-NEXT: v_mov_b32_e32 v2, v15425; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]5426; GFX90A-NEXT: s_waitcnt vmcnt(0)5427; GFX90A-NEXT: s_setpc_b64 s[30:31]5428;5429; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_5_5:5430; GFX942: ; %bb.0:5431; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5432; GFX942-NEXT: ;;#ASMSTART5433; GFX942-NEXT: ; def v[0:3]5434; GFX942-NEXT: ;;#ASMEND5435; GFX942-NEXT: v_mov_b32_e32 v4, 05436; GFX942-NEXT: v_mov_b32_e32 v0, v35437; GFX942-NEXT: v_mov_b32_e32 v2, v15438; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]5439; GFX942-NEXT: s_waitcnt vmcnt(0)5440; GFX942-NEXT: s_setpc_b64 s[30:31]5441 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5442 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5443 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 5>5444 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165445 ret void5446}5447 5448define void @v_shuffle_v3p3_v4p3__7_u_5(ptr addrspace(1) inreg %ptr) {5449; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_u_5:5450; GFX900: ; %bb.0:5451; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5452; GFX900-NEXT: v_mov_b32_e32 v4, 05453; GFX900-NEXT: ;;#ASMSTART5454; GFX900-NEXT: ; def v[0:3]5455; GFX900-NEXT: ;;#ASMEND5456; GFX900-NEXT: v_mov_b32_e32 v5, v15457; GFX900-NEXT: global_store_dwordx3 v4, v[3:5], s[16:17]5458; GFX900-NEXT: s_waitcnt vmcnt(0)5459; GFX900-NEXT: s_setpc_b64 s[30:31]5460;5461; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_u_5:5462; GFX90A: ; %bb.0:5463; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5464; GFX90A-NEXT: ;;#ASMSTART5465; GFX90A-NEXT: ; def v[0:3]5466; GFX90A-NEXT: ;;#ASMEND5467; GFX90A-NEXT: v_mov_b32_e32 v4, 05468; GFX90A-NEXT: v_mov_b32_e32 v0, v35469; GFX90A-NEXT: v_mov_b32_e32 v2, v15470; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]5471; GFX90A-NEXT: s_waitcnt vmcnt(0)5472; GFX90A-NEXT: s_setpc_b64 s[30:31]5473;5474; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_u_5:5475; GFX942: ; %bb.0:5476; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5477; GFX942-NEXT: ;;#ASMSTART5478; GFX942-NEXT: ; def v[0:3]5479; GFX942-NEXT: ;;#ASMEND5480; GFX942-NEXT: v_mov_b32_e32 v4, 05481; GFX942-NEXT: v_mov_b32_e32 v0, v35482; GFX942-NEXT: v_mov_b32_e32 v2, v15483; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]5484; GFX942-NEXT: s_waitcnt vmcnt(0)5485; GFX942-NEXT: s_setpc_b64 s[30:31]5486 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5487 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5488 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 5>5489 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165490 ret void5491}5492 5493define void @v_shuffle_v3p3_v4p3__7_0_5(ptr addrspace(1) inreg %ptr) {5494; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_0_5:5495; GFX900: ; %bb.0:5496; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5497; GFX900-NEXT: ;;#ASMSTART5498; GFX900-NEXT: ; def v[4:7]5499; GFX900-NEXT: ;;#ASMEND5500; GFX900-NEXT: v_mov_b32_e32 v8, 05501; GFX900-NEXT: ;;#ASMSTART5502; GFX900-NEXT: ; def v[0:3]5503; GFX900-NEXT: ;;#ASMEND5504; GFX900-NEXT: v_mov_b32_e32 v5, v15505; GFX900-NEXT: global_store_dwordx3 v8, v[3:5], s[16:17]5506; GFX900-NEXT: s_waitcnt vmcnt(0)5507; GFX900-NEXT: s_setpc_b64 s[30:31]5508;5509; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_0_5:5510; GFX90A: ; %bb.0:5511; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5512; GFX90A-NEXT: ;;#ASMSTART5513; GFX90A-NEXT: ; def v[0:3]5514; GFX90A-NEXT: ;;#ASMEND5515; GFX90A-NEXT: v_mov_b32_e32 v6, 05516; GFX90A-NEXT: ;;#ASMSTART5517; GFX90A-NEXT: ; def v[2:5]5518; GFX90A-NEXT: ;;#ASMEND5519; GFX90A-NEXT: v_mov_b32_e32 v8, v55520; GFX90A-NEXT: v_mov_b32_e32 v9, v05521; GFX90A-NEXT: v_mov_b32_e32 v10, v35522; GFX90A-NEXT: global_store_dwordx3 v6, v[8:10], s[16:17]5523; GFX90A-NEXT: s_waitcnt vmcnt(0)5524; GFX90A-NEXT: s_setpc_b64 s[30:31]5525;5526; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_0_5:5527; GFX942: ; %bb.0:5528; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5529; GFX942-NEXT: ;;#ASMSTART5530; GFX942-NEXT: ; def v[0:3]5531; GFX942-NEXT: ;;#ASMEND5532; GFX942-NEXT: v_mov_b32_e32 v6, 05533; GFX942-NEXT: ;;#ASMSTART5534; GFX942-NEXT: ; def v[2:5]5535; GFX942-NEXT: ;;#ASMEND5536; GFX942-NEXT: v_mov_b32_e32 v9, v05537; GFX942-NEXT: v_mov_b32_e32 v8, v55538; GFX942-NEXT: v_mov_b32_e32 v10, v35539; GFX942-NEXT: global_store_dwordx3 v6, v[8:10], s[0:1]5540; GFX942-NEXT: s_waitcnt vmcnt(0)5541; GFX942-NEXT: s_setpc_b64 s[30:31]5542 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5543 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5544 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 5>5545 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165546 ret void5547}5548 5549define void @v_shuffle_v3p3_v4p3__7_1_5(ptr addrspace(1) inreg %ptr) {5550; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_1_5:5551; GFX900: ; %bb.0:5552; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5553; GFX900-NEXT: ;;#ASMSTART5554; GFX900-NEXT: ; def v[3:6]5555; GFX900-NEXT: ;;#ASMEND5556; GFX900-NEXT: v_mov_b32_e32 v7, 05557; GFX900-NEXT: ;;#ASMSTART5558; GFX900-NEXT: ; def v[0:3]5559; GFX900-NEXT: ;;#ASMEND5560; GFX900-NEXT: v_mov_b32_e32 v5, v15561; GFX900-NEXT: global_store_dwordx3 v7, v[3:5], s[16:17]5562; GFX900-NEXT: s_waitcnt vmcnt(0)5563; GFX900-NEXT: s_setpc_b64 s[30:31]5564;5565; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_1_5:5566; GFX90A: ; %bb.0:5567; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5568; GFX90A-NEXT: ;;#ASMSTART5569; GFX90A-NEXT: ; def v[0:3]5570; GFX90A-NEXT: ;;#ASMEND5571; GFX90A-NEXT: ;;#ASMSTART5572; GFX90A-NEXT: ; def v[2:5]5573; GFX90A-NEXT: ;;#ASMEND5574; GFX90A-NEXT: v_mov_b32_e32 v6, 05575; GFX90A-NEXT: v_mov_b32_e32 v0, v55576; GFX90A-NEXT: v_mov_b32_e32 v2, v35577; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]5578; GFX90A-NEXT: s_waitcnt vmcnt(0)5579; GFX90A-NEXT: s_setpc_b64 s[30:31]5580;5581; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_1_5:5582; GFX942: ; %bb.0:5583; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5584; GFX942-NEXT: ;;#ASMSTART5585; GFX942-NEXT: ; def v[0:3]5586; GFX942-NEXT: ;;#ASMEND5587; GFX942-NEXT: v_mov_b32_e32 v6, 05588; GFX942-NEXT: ;;#ASMSTART5589; GFX942-NEXT: ; def v[2:5]5590; GFX942-NEXT: ;;#ASMEND5591; GFX942-NEXT: s_nop 05592; GFX942-NEXT: v_mov_b32_e32 v0, v55593; GFX942-NEXT: v_mov_b32_e32 v2, v35594; GFX942-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1]5595; GFX942-NEXT: s_waitcnt vmcnt(0)5596; GFX942-NEXT: s_setpc_b64 s[30:31]5597 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5598 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5599 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 5>5600 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165601 ret void5602}5603 5604define void @v_shuffle_v3p3_v4p3__7_2_5(ptr addrspace(1) inreg %ptr) {5605; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_2_5:5606; GFX900: ; %bb.0:5607; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5608; GFX900-NEXT: ;;#ASMSTART5609; GFX900-NEXT: ; def v[2:5]5610; GFX900-NEXT: ;;#ASMEND5611; GFX900-NEXT: v_mov_b32_e32 v6, 05612; GFX900-NEXT: ;;#ASMSTART5613; GFX900-NEXT: ; def v[0:3]5614; GFX900-NEXT: ;;#ASMEND5615; GFX900-NEXT: v_mov_b32_e32 v5, v15616; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]5617; GFX900-NEXT: s_waitcnt vmcnt(0)5618; GFX900-NEXT: s_setpc_b64 s[30:31]5619;5620; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_2_5:5621; GFX90A: ; %bb.0:5622; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5623; GFX90A-NEXT: ;;#ASMSTART5624; GFX90A-NEXT: ; def v[0:3]5625; GFX90A-NEXT: ;;#ASMEND5626; GFX90A-NEXT: v_mov_b32_e32 v8, 05627; GFX90A-NEXT: ;;#ASMSTART5628; GFX90A-NEXT: ; def v[4:7]5629; GFX90A-NEXT: ;;#ASMEND5630; GFX90A-NEXT: v_mov_b32_e32 v0, v75631; GFX90A-NEXT: v_mov_b32_e32 v1, v25632; GFX90A-NEXT: v_mov_b32_e32 v2, v55633; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]5634; GFX90A-NEXT: s_waitcnt vmcnt(0)5635; GFX90A-NEXT: s_setpc_b64 s[30:31]5636;5637; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_2_5:5638; GFX942: ; %bb.0:5639; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5640; GFX942-NEXT: ;;#ASMSTART5641; GFX942-NEXT: ; def v[0:3]5642; GFX942-NEXT: ;;#ASMEND5643; GFX942-NEXT: v_mov_b32_e32 v8, 05644; GFX942-NEXT: ;;#ASMSTART5645; GFX942-NEXT: ; def v[4:7]5646; GFX942-NEXT: ;;#ASMEND5647; GFX942-NEXT: v_mov_b32_e32 v1, v25648; GFX942-NEXT: v_mov_b32_e32 v0, v75649; GFX942-NEXT: v_mov_b32_e32 v2, v55650; GFX942-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1]5651; GFX942-NEXT: s_waitcnt vmcnt(0)5652; GFX942-NEXT: s_setpc_b64 s[30:31]5653 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5654 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5655 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 5>5656 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165657 ret void5658}5659 5660define void @v_shuffle_v3p3_v4p3__7_3_5(ptr addrspace(1) inreg %ptr) {5661; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_3_5:5662; GFX900: ; %bb.0:5663; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5664; GFX900-NEXT: ;;#ASMSTART5665; GFX900-NEXT: ; def v[1:4]5666; GFX900-NEXT: ;;#ASMEND5667; GFX900-NEXT: v_mov_b32_e32 v6, 05668; GFX900-NEXT: ;;#ASMSTART5669; GFX900-NEXT: ; def v[0:3]5670; GFX900-NEXT: ;;#ASMEND5671; GFX900-NEXT: v_mov_b32_e32 v5, v15672; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]5673; GFX900-NEXT: s_waitcnt vmcnt(0)5674; GFX900-NEXT: s_setpc_b64 s[30:31]5675;5676; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_3_5:5677; GFX90A: ; %bb.0:5678; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5679; GFX90A-NEXT: ;;#ASMSTART5680; GFX90A-NEXT: ; def v[0:3]5681; GFX90A-NEXT: ;;#ASMEND5682; GFX90A-NEXT: ;;#ASMSTART5683; GFX90A-NEXT: ; def v[4:7]5684; GFX90A-NEXT: ;;#ASMEND5685; GFX90A-NEXT: v_mov_b32_e32 v8, 05686; GFX90A-NEXT: v_mov_b32_e32 v2, v75687; GFX90A-NEXT: v_mov_b32_e32 v4, v55688; GFX90A-NEXT: global_store_dwordx3 v8, v[2:4], s[16:17]5689; GFX90A-NEXT: s_waitcnt vmcnt(0)5690; GFX90A-NEXT: s_setpc_b64 s[30:31]5691;5692; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_3_5:5693; GFX942: ; %bb.0:5694; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5695; GFX942-NEXT: ;;#ASMSTART5696; GFX942-NEXT: ; def v[0:3]5697; GFX942-NEXT: ;;#ASMEND5698; GFX942-NEXT: ;;#ASMSTART5699; GFX942-NEXT: ; def v[4:7]5700; GFX942-NEXT: ;;#ASMEND5701; GFX942-NEXT: v_mov_b32_e32 v8, 05702; GFX942-NEXT: v_mov_b32_e32 v2, v75703; GFX942-NEXT: v_mov_b32_e32 v4, v55704; GFX942-NEXT: global_store_dwordx3 v8, v[2:4], s[0:1]5705; GFX942-NEXT: s_waitcnt vmcnt(0)5706; GFX942-NEXT: s_setpc_b64 s[30:31]5707 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5708 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5709 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 5>5710 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165711 ret void5712}5713 5714define void @v_shuffle_v3p3_v4p3__7_4_5(ptr addrspace(1) inreg %ptr) {5715; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_4_5:5716; GFX900: ; %bb.0:5717; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5718; GFX900-NEXT: v_mov_b32_e32 v6, 05719; GFX900-NEXT: ;;#ASMSTART5720; GFX900-NEXT: ; def v[0:3]5721; GFX900-NEXT: ;;#ASMEND5722; GFX900-NEXT: v_mov_b32_e32 v4, v05723; GFX900-NEXT: v_mov_b32_e32 v5, v15724; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]5725; GFX900-NEXT: s_waitcnt vmcnt(0)5726; GFX900-NEXT: s_setpc_b64 s[30:31]5727;5728; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_4_5:5729; GFX90A: ; %bb.0:5730; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5731; GFX90A-NEXT: v_mov_b32_e32 v4, 05732; GFX90A-NEXT: ;;#ASMSTART5733; GFX90A-NEXT: ; def v[0:3]5734; GFX90A-NEXT: ;;#ASMEND5735; GFX90A-NEXT: v_mov_b32_e32 v6, v35736; GFX90A-NEXT: v_mov_b32_e32 v7, v05737; GFX90A-NEXT: v_mov_b32_e32 v8, v15738; GFX90A-NEXT: global_store_dwordx3 v4, v[6:8], s[16:17]5739; GFX90A-NEXT: s_waitcnt vmcnt(0)5740; GFX90A-NEXT: s_setpc_b64 s[30:31]5741;5742; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_4_5:5743; GFX942: ; %bb.0:5744; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5745; GFX942-NEXT: v_mov_b32_e32 v4, 05746; GFX942-NEXT: ;;#ASMSTART5747; GFX942-NEXT: ; def v[0:3]5748; GFX942-NEXT: ;;#ASMEND5749; GFX942-NEXT: s_nop 05750; GFX942-NEXT: v_mov_b32_e32 v6, v35751; GFX942-NEXT: v_mov_b32_e32 v7, v05752; GFX942-NEXT: v_mov_b32_e32 v8, v15753; GFX942-NEXT: global_store_dwordx3 v4, v[6:8], s[0:1]5754; GFX942-NEXT: s_waitcnt vmcnt(0)5755; GFX942-NEXT: s_setpc_b64 s[30:31]5756 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5757 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5758 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 5>5759 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165760 ret void5761}5762 5763define void @v_shuffle_v3p3_v4p3__7_6_5(ptr addrspace(1) inreg %ptr) {5764; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_6_5:5765; GFX900: ; %bb.0:5766; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5767; GFX900-NEXT: v_mov_b32_e32 v6, 05768; GFX900-NEXT: ;;#ASMSTART5769; GFX900-NEXT: ; def v[0:3]5770; GFX900-NEXT: ;;#ASMEND5771; GFX900-NEXT: v_mov_b32_e32 v4, v25772; GFX900-NEXT: v_mov_b32_e32 v5, v15773; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]5774; GFX900-NEXT: s_waitcnt vmcnt(0)5775; GFX900-NEXT: s_setpc_b64 s[30:31]5776;5777; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_6_5:5778; GFX90A: ; %bb.0:5779; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5780; GFX90A-NEXT: v_mov_b32_e32 v4, 05781; GFX90A-NEXT: ;;#ASMSTART5782; GFX90A-NEXT: ; def v[0:3]5783; GFX90A-NEXT: ;;#ASMEND5784; GFX90A-NEXT: v_mov_b32_e32 v6, v35785; GFX90A-NEXT: v_mov_b32_e32 v7, v25786; GFX90A-NEXT: v_mov_b32_e32 v8, v15787; GFX90A-NEXT: global_store_dwordx3 v4, v[6:8], s[16:17]5788; GFX90A-NEXT: s_waitcnt vmcnt(0)5789; GFX90A-NEXT: s_setpc_b64 s[30:31]5790;5791; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_6_5:5792; GFX942: ; %bb.0:5793; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5794; GFX942-NEXT: v_mov_b32_e32 v4, 05795; GFX942-NEXT: ;;#ASMSTART5796; GFX942-NEXT: ; def v[0:3]5797; GFX942-NEXT: ;;#ASMEND5798; GFX942-NEXT: s_nop 05799; GFX942-NEXT: v_mov_b32_e32 v6, v35800; GFX942-NEXT: v_mov_b32_e32 v7, v25801; GFX942-NEXT: v_mov_b32_e32 v8, v15802; GFX942-NEXT: global_store_dwordx3 v4, v[6:8], s[0:1]5803; GFX942-NEXT: s_waitcnt vmcnt(0)5804; GFX942-NEXT: s_setpc_b64 s[30:31]5805 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5806 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5807 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 5>5808 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165809 ret void5810}5811 5812define void @v_shuffle_v3p3_v4p3__u_6_6(ptr addrspace(1) inreg %ptr) {5813; GFX900-LABEL: v_shuffle_v3p3_v4p3__u_6_6:5814; GFX900: ; %bb.0:5815; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5816; GFX900-NEXT: ;;#ASMSTART5817; GFX900-NEXT: ; def v[0:3]5818; GFX900-NEXT: ;;#ASMEND5819; GFX900-NEXT: v_mov_b32_e32 v4, 05820; GFX900-NEXT: v_mov_b32_e32 v3, v25821; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]5822; GFX900-NEXT: s_waitcnt vmcnt(0)5823; GFX900-NEXT: s_setpc_b64 s[30:31]5824;5825; GFX90A-LABEL: v_shuffle_v3p3_v4p3__u_6_6:5826; GFX90A: ; %bb.0:5827; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5828; GFX90A-NEXT: ;;#ASMSTART5829; GFX90A-NEXT: ; def v[0:3]5830; GFX90A-NEXT: ;;#ASMEND5831; GFX90A-NEXT: v_mov_b32_e32 v4, 05832; GFX90A-NEXT: v_mov_b32_e32 v1, v25833; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]5834; GFX90A-NEXT: s_waitcnt vmcnt(0)5835; GFX90A-NEXT: s_setpc_b64 s[30:31]5836;5837; GFX942-LABEL: v_shuffle_v3p3_v4p3__u_6_6:5838; GFX942: ; %bb.0:5839; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5840; GFX942-NEXT: ;;#ASMSTART5841; GFX942-NEXT: ; def v[0:3]5842; GFX942-NEXT: ;;#ASMEND5843; GFX942-NEXT: v_mov_b32_e32 v4, 05844; GFX942-NEXT: v_mov_b32_e32 v1, v25845; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]5846; GFX942-NEXT: s_waitcnt vmcnt(0)5847; GFX942-NEXT: s_setpc_b64 s[30:31]5848 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5849 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5850 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 poison, i32 6, i32 6>5851 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165852 ret void5853}5854 5855define void @v_shuffle_v3p3_v4p3__0_6_6(ptr addrspace(1) inreg %ptr) {5856; GFX900-LABEL: v_shuffle_v3p3_v4p3__0_6_6:5857; GFX900: ; %bb.0:5858; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5859; GFX900-NEXT: ;;#ASMSTART5860; GFX900-NEXT: ; def v[0:3]5861; GFX900-NEXT: ;;#ASMEND5862; GFX900-NEXT: ;;#ASMSTART5863; GFX900-NEXT: ; def v[1:4]5864; GFX900-NEXT: ;;#ASMEND5865; GFX900-NEXT: v_mov_b32_e32 v5, 05866; GFX900-NEXT: v_mov_b32_e32 v1, v35867; GFX900-NEXT: v_mov_b32_e32 v2, v35868; GFX900-NEXT: global_store_dwordx3 v5, v[0:2], s[16:17]5869; GFX900-NEXT: s_waitcnt vmcnt(0)5870; GFX900-NEXT: s_setpc_b64 s[30:31]5871;5872; GFX90A-LABEL: v_shuffle_v3p3_v4p3__0_6_6:5873; GFX90A: ; %bb.0:5874; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5875; GFX90A-NEXT: ;;#ASMSTART5876; GFX90A-NEXT: ; def v[0:3]5877; GFX90A-NEXT: ;;#ASMEND5878; GFX90A-NEXT: ;;#ASMSTART5879; GFX90A-NEXT: ; def v[2:5]5880; GFX90A-NEXT: ;;#ASMEND5881; GFX90A-NEXT: v_mov_b32_e32 v6, 05882; GFX90A-NEXT: v_mov_b32_e32 v1, v45883; GFX90A-NEXT: v_mov_b32_e32 v2, v45884; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]5885; GFX90A-NEXT: s_waitcnt vmcnt(0)5886; GFX90A-NEXT: s_setpc_b64 s[30:31]5887;5888; GFX942-LABEL: v_shuffle_v3p3_v4p3__0_6_6:5889; GFX942: ; %bb.0:5890; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5891; GFX942-NEXT: ;;#ASMSTART5892; GFX942-NEXT: ; def v[0:3]5893; GFX942-NEXT: ;;#ASMEND5894; GFX942-NEXT: v_mov_b32_e32 v6, 05895; GFX942-NEXT: ;;#ASMSTART5896; GFX942-NEXT: ; def v[2:5]5897; GFX942-NEXT: ;;#ASMEND5898; GFX942-NEXT: s_nop 05899; GFX942-NEXT: v_mov_b32_e32 v1, v45900; GFX942-NEXT: v_mov_b32_e32 v2, v45901; GFX942-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1]5902; GFX942-NEXT: s_waitcnt vmcnt(0)5903; GFX942-NEXT: s_setpc_b64 s[30:31]5904 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5905 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5906 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 0, i32 6, i32 6>5907 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165908 ret void5909}5910 5911define void @v_shuffle_v3p3_v4p3__1_6_6(ptr addrspace(1) inreg %ptr) {5912; GFX900-LABEL: v_shuffle_v3p3_v4p3__1_6_6:5913; GFX900: ; %bb.0:5914; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5915; GFX900-NEXT: ;;#ASMSTART5916; GFX900-NEXT: ; def v[0:3]5917; GFX900-NEXT: ;;#ASMEND5918; GFX900-NEXT: ;;#ASMSTART5919; GFX900-NEXT: ; def v[2:5]5920; GFX900-NEXT: ;;#ASMEND5921; GFX900-NEXT: v_mov_b32_e32 v6, 05922; GFX900-NEXT: v_mov_b32_e32 v2, v45923; GFX900-NEXT: v_mov_b32_e32 v3, v45924; GFX900-NEXT: global_store_dwordx3 v6, v[1:3], s[16:17]5925; GFX900-NEXT: s_waitcnt vmcnt(0)5926; GFX900-NEXT: s_setpc_b64 s[30:31]5927;5928; GFX90A-LABEL: v_shuffle_v3p3_v4p3__1_6_6:5929; GFX90A: ; %bb.0:5930; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5931; GFX90A-NEXT: ;;#ASMSTART5932; GFX90A-NEXT: ; def v[0:3]5933; GFX90A-NEXT: ;;#ASMEND5934; GFX90A-NEXT: ;;#ASMSTART5935; GFX90A-NEXT: ; def v[2:5]5936; GFX90A-NEXT: ;;#ASMEND5937; GFX90A-NEXT: v_mov_b32_e32 v6, 05938; GFX90A-NEXT: v_mov_b32_e32 v2, v15939; GFX90A-NEXT: v_mov_b32_e32 v3, v45940; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]5941; GFX90A-NEXT: s_waitcnt vmcnt(0)5942; GFX90A-NEXT: s_setpc_b64 s[30:31]5943;5944; GFX942-LABEL: v_shuffle_v3p3_v4p3__1_6_6:5945; GFX942: ; %bb.0:5946; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5947; GFX942-NEXT: ;;#ASMSTART5948; GFX942-NEXT: ; def v[0:3]5949; GFX942-NEXT: ;;#ASMEND5950; GFX942-NEXT: v_mov_b32_e32 v6, 05951; GFX942-NEXT: ;;#ASMSTART5952; GFX942-NEXT: ; def v[2:5]5953; GFX942-NEXT: ;;#ASMEND5954; GFX942-NEXT: s_nop 05955; GFX942-NEXT: v_mov_b32_e32 v2, v15956; GFX942-NEXT: v_mov_b32_e32 v3, v45957; GFX942-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1]5958; GFX942-NEXT: s_waitcnt vmcnt(0)5959; GFX942-NEXT: s_setpc_b64 s[30:31]5960 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5961 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()5962 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 1, i32 6, i32 6>5963 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165964 ret void5965}5966 5967define void @v_shuffle_v3p3_v4p3__2_6_6(ptr addrspace(1) inreg %ptr) {5968; GFX900-LABEL: v_shuffle_v3p3_v4p3__2_6_6:5969; GFX900: ; %bb.0:5970; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5971; GFX900-NEXT: ;;#ASMSTART5972; GFX900-NEXT: ; def v[0:3]5973; GFX900-NEXT: ;;#ASMEND5974; GFX900-NEXT: ;;#ASMSTART5975; GFX900-NEXT: ; def v[3:6]5976; GFX900-NEXT: ;;#ASMEND5977; GFX900-NEXT: v_mov_b32_e32 v7, 05978; GFX900-NEXT: v_mov_b32_e32 v3, v55979; GFX900-NEXT: v_mov_b32_e32 v4, v55980; GFX900-NEXT: global_store_dwordx3 v7, v[2:4], s[16:17]5981; GFX900-NEXT: s_waitcnt vmcnt(0)5982; GFX900-NEXT: s_setpc_b64 s[30:31]5983;5984; GFX90A-LABEL: v_shuffle_v3p3_v4p3__2_6_6:5985; GFX90A: ; %bb.0:5986; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5987; GFX90A-NEXT: ;;#ASMSTART5988; GFX90A-NEXT: ; def v[0:3]5989; GFX90A-NEXT: ;;#ASMEND5990; GFX90A-NEXT: ;;#ASMSTART5991; GFX90A-NEXT: ; def v[4:7]5992; GFX90A-NEXT: ;;#ASMEND5993; GFX90A-NEXT: v_mov_b32_e32 v8, 05994; GFX90A-NEXT: v_mov_b32_e32 v3, v65995; GFX90A-NEXT: v_mov_b32_e32 v4, v65996; GFX90A-NEXT: global_store_dwordx3 v8, v[2:4], s[16:17]5997; GFX90A-NEXT: s_waitcnt vmcnt(0)5998; GFX90A-NEXT: s_setpc_b64 s[30:31]5999;6000; GFX942-LABEL: v_shuffle_v3p3_v4p3__2_6_6:6001; GFX942: ; %bb.0:6002; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6003; GFX942-NEXT: ;;#ASMSTART6004; GFX942-NEXT: ; def v[0:3]6005; GFX942-NEXT: ;;#ASMEND6006; GFX942-NEXT: ;;#ASMSTART6007; GFX942-NEXT: ; def v[4:7]6008; GFX942-NEXT: ;;#ASMEND6009; GFX942-NEXT: v_mov_b32_e32 v8, 06010; GFX942-NEXT: v_mov_b32_e32 v3, v66011; GFX942-NEXT: v_mov_b32_e32 v4, v66012; GFX942-NEXT: global_store_dwordx3 v8, v[2:4], s[0:1]6013; GFX942-NEXT: s_waitcnt vmcnt(0)6014; GFX942-NEXT: s_setpc_b64 s[30:31]6015 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6016 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6017 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 2, i32 6, i32 6>6018 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166019 ret void6020}6021 6022define void @v_shuffle_v3p3_v4p3__3_6_6(ptr addrspace(1) inreg %ptr) {6023; GFX900-LABEL: v_shuffle_v3p3_v4p3__3_6_6:6024; GFX900: ; %bb.0:6025; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6026; GFX900-NEXT: ;;#ASMSTART6027; GFX900-NEXT: ; def v[4:7]6028; GFX900-NEXT: ;;#ASMEND6029; GFX900-NEXT: v_mov_b32_e32 v8, 06030; GFX900-NEXT: v_mov_b32_e32 v4, v66031; GFX900-NEXT: v_mov_b32_e32 v5, v66032; GFX900-NEXT: ;;#ASMSTART6033; GFX900-NEXT: ; def v[0:3]6034; GFX900-NEXT: ;;#ASMEND6035; GFX900-NEXT: global_store_dwordx3 v8, v[3:5], s[16:17]6036; GFX900-NEXT: s_waitcnt vmcnt(0)6037; GFX900-NEXT: s_setpc_b64 s[30:31]6038;6039; GFX90A-LABEL: v_shuffle_v3p3_v4p3__3_6_6:6040; GFX90A: ; %bb.0:6041; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6042; GFX90A-NEXT: ;;#ASMSTART6043; GFX90A-NEXT: ; def v[4:7]6044; GFX90A-NEXT: ;;#ASMEND6045; GFX90A-NEXT: v_mov_b32_e32 v8, 06046; GFX90A-NEXT: ;;#ASMSTART6047; GFX90A-NEXT: ; def v[0:3]6048; GFX90A-NEXT: ;;#ASMEND6049; GFX90A-NEXT: v_mov_b32_e32 v4, v36050; GFX90A-NEXT: v_mov_b32_e32 v5, v66051; GFX90A-NEXT: global_store_dwordx3 v8, v[4:6], s[16:17]6052; GFX90A-NEXT: s_waitcnt vmcnt(0)6053; GFX90A-NEXT: s_setpc_b64 s[30:31]6054;6055; GFX942-LABEL: v_shuffle_v3p3_v4p3__3_6_6:6056; GFX942: ; %bb.0:6057; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6058; GFX942-NEXT: ;;#ASMSTART6059; GFX942-NEXT: ; def v[4:7]6060; GFX942-NEXT: ;;#ASMEND6061; GFX942-NEXT: v_mov_b32_e32 v8, 06062; GFX942-NEXT: ;;#ASMSTART6063; GFX942-NEXT: ; def v[0:3]6064; GFX942-NEXT: ;;#ASMEND6065; GFX942-NEXT: v_mov_b32_e32 v5, v66066; GFX942-NEXT: v_mov_b32_e32 v4, v36067; GFX942-NEXT: global_store_dwordx3 v8, v[4:6], s[0:1]6068; GFX942-NEXT: s_waitcnt vmcnt(0)6069; GFX942-NEXT: s_setpc_b64 s[30:31]6070 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6071 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6072 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 6, i32 6>6073 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166074 ret void6075}6076 6077define void @v_shuffle_v3p3_v4p3__4_6_6(ptr addrspace(1) inreg %ptr) {6078; GFX900-LABEL: v_shuffle_v3p3_v4p3__4_6_6:6079; GFX900: ; %bb.0:6080; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6081; GFX900-NEXT: ;;#ASMSTART6082; GFX900-NEXT: ; def v[0:3]6083; GFX900-NEXT: ;;#ASMEND6084; GFX900-NEXT: v_mov_b32_e32 v4, 06085; GFX900-NEXT: v_mov_b32_e32 v1, v26086; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]6087; GFX900-NEXT: s_waitcnt vmcnt(0)6088; GFX900-NEXT: s_setpc_b64 s[30:31]6089;6090; GFX90A-LABEL: v_shuffle_v3p3_v4p3__4_6_6:6091; GFX90A: ; %bb.0:6092; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6093; GFX90A-NEXT: ;;#ASMSTART6094; GFX90A-NEXT: ; def v[0:3]6095; GFX90A-NEXT: ;;#ASMEND6096; GFX90A-NEXT: v_mov_b32_e32 v4, 06097; GFX90A-NEXT: v_mov_b32_e32 v1, v26098; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]6099; GFX90A-NEXT: s_waitcnt vmcnt(0)6100; GFX90A-NEXT: s_setpc_b64 s[30:31]6101;6102; GFX942-LABEL: v_shuffle_v3p3_v4p3__4_6_6:6103; GFX942: ; %bb.0:6104; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6105; GFX942-NEXT: ;;#ASMSTART6106; GFX942-NEXT: ; def v[0:3]6107; GFX942-NEXT: ;;#ASMEND6108; GFX942-NEXT: v_mov_b32_e32 v4, 06109; GFX942-NEXT: v_mov_b32_e32 v1, v26110; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]6111; GFX942-NEXT: s_waitcnt vmcnt(0)6112; GFX942-NEXT: s_setpc_b64 s[30:31]6113 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6114 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6115 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 4, i32 6, i32 6>6116 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166117 ret void6118}6119 6120define void @v_shuffle_v3p3_v4p3__5_6_6(ptr addrspace(1) inreg %ptr) {6121; GFX900-LABEL: v_shuffle_v3p3_v4p3__5_6_6:6122; GFX900: ; %bb.0:6123; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6124; GFX900-NEXT: ;;#ASMSTART6125; GFX900-NEXT: ; def v[0:3]6126; GFX900-NEXT: ;;#ASMEND6127; GFX900-NEXT: v_mov_b32_e32 v4, 06128; GFX900-NEXT: v_mov_b32_e32 v3, v26129; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]6130; GFX900-NEXT: s_waitcnt vmcnt(0)6131; GFX900-NEXT: s_setpc_b64 s[30:31]6132;6133; GFX90A-LABEL: v_shuffle_v3p3_v4p3__5_6_6:6134; GFX90A: ; %bb.0:6135; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6136; GFX90A-NEXT: ;;#ASMSTART6137; GFX90A-NEXT: ; def v[0:3]6138; GFX90A-NEXT: ;;#ASMEND6139; GFX90A-NEXT: v_mov_b32_e32 v4, 06140; GFX90A-NEXT: v_mov_b32_e32 v0, v16141; GFX90A-NEXT: v_mov_b32_e32 v1, v26142; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]6143; GFX90A-NEXT: s_waitcnt vmcnt(0)6144; GFX90A-NEXT: s_setpc_b64 s[30:31]6145;6146; GFX942-LABEL: v_shuffle_v3p3_v4p3__5_6_6:6147; GFX942: ; %bb.0:6148; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6149; GFX942-NEXT: ;;#ASMSTART6150; GFX942-NEXT: ; def v[0:3]6151; GFX942-NEXT: ;;#ASMEND6152; GFX942-NEXT: v_mov_b32_e32 v4, 06153; GFX942-NEXT: v_mov_b32_e32 v0, v16154; GFX942-NEXT: v_mov_b32_e32 v1, v26155; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]6156; GFX942-NEXT: s_waitcnt vmcnt(0)6157; GFX942-NEXT: s_setpc_b64 s[30:31]6158 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6159 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6160 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 6, i32 6>6161 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166162 ret void6163}6164 6165define void @v_shuffle_v3p3_v4p3__6_6_6(ptr addrspace(1) inreg %ptr) {6166; GFX900-LABEL: v_shuffle_v3p3_v4p3__6_6_6:6167; GFX900: ; %bb.0:6168; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6169; GFX900-NEXT: ;;#ASMSTART6170; GFX900-NEXT: ; def v[0:3]6171; GFX900-NEXT: ;;#ASMEND6172; GFX900-NEXT: v_mov_b32_e32 v5, 06173; GFX900-NEXT: v_mov_b32_e32 v3, v26174; GFX900-NEXT: v_mov_b32_e32 v4, v26175; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]6176; GFX900-NEXT: s_waitcnt vmcnt(0)6177; GFX900-NEXT: s_setpc_b64 s[30:31]6178;6179; GFX90A-LABEL: v_shuffle_v3p3_v4p3__6_6_6:6180; GFX90A: ; %bb.0:6181; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6182; GFX90A-NEXT: ;;#ASMSTART6183; GFX90A-NEXT: ; def v[0:3]6184; GFX90A-NEXT: ;;#ASMEND6185; GFX90A-NEXT: v_mov_b32_e32 v5, 06186; GFX90A-NEXT: v_mov_b32_e32 v3, v26187; GFX90A-NEXT: v_mov_b32_e32 v4, v26188; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]6189; GFX90A-NEXT: s_waitcnt vmcnt(0)6190; GFX90A-NEXT: s_setpc_b64 s[30:31]6191;6192; GFX942-LABEL: v_shuffle_v3p3_v4p3__6_6_6:6193; GFX942: ; %bb.0:6194; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6195; GFX942-NEXT: ;;#ASMSTART6196; GFX942-NEXT: ; def v[0:3]6197; GFX942-NEXT: ;;#ASMEND6198; GFX942-NEXT: v_mov_b32_e32 v5, 06199; GFX942-NEXT: v_mov_b32_e32 v3, v26200; GFX942-NEXT: v_mov_b32_e32 v4, v26201; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]6202; GFX942-NEXT: s_waitcnt vmcnt(0)6203; GFX942-NEXT: s_setpc_b64 s[30:31]6204 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6205 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6206 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 6, i32 6>6207 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166208 ret void6209}6210 6211define void @v_shuffle_v3p3_v4p3__7_6_6(ptr addrspace(1) inreg %ptr) {6212; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_6_6:6213; GFX900: ; %bb.0:6214; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6215; GFX900-NEXT: v_mov_b32_e32 v6, 06216; GFX900-NEXT: ;;#ASMSTART6217; GFX900-NEXT: ; def v[0:3]6218; GFX900-NEXT: ;;#ASMEND6219; GFX900-NEXT: v_mov_b32_e32 v4, v26220; GFX900-NEXT: v_mov_b32_e32 v5, v26221; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]6222; GFX900-NEXT: s_waitcnt vmcnt(0)6223; GFX900-NEXT: s_setpc_b64 s[30:31]6224;6225; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_6_6:6226; GFX90A: ; %bb.0:6227; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6228; GFX90A-NEXT: ;;#ASMSTART6229; GFX90A-NEXT: ; def v[0:3]6230; GFX90A-NEXT: ;;#ASMEND6231; GFX90A-NEXT: v_mov_b32_e32 v4, 06232; GFX90A-NEXT: v_mov_b32_e32 v0, v36233; GFX90A-NEXT: v_mov_b32_e32 v1, v26234; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]6235; GFX90A-NEXT: s_waitcnt vmcnt(0)6236; GFX90A-NEXT: s_setpc_b64 s[30:31]6237;6238; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_6_6:6239; GFX942: ; %bb.0:6240; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6241; GFX942-NEXT: ;;#ASMSTART6242; GFX942-NEXT: ; def v[0:3]6243; GFX942-NEXT: ;;#ASMEND6244; GFX942-NEXT: v_mov_b32_e32 v4, 06245; GFX942-NEXT: v_mov_b32_e32 v0, v36246; GFX942-NEXT: v_mov_b32_e32 v1, v26247; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]6248; GFX942-NEXT: s_waitcnt vmcnt(0)6249; GFX942-NEXT: s_setpc_b64 s[30:31]6250 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6251 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6252 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 6>6253 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166254 ret void6255}6256 6257define void @v_shuffle_v3p3_v4p3__7_u_6(ptr addrspace(1) inreg %ptr) {6258; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_u_6:6259; GFX900: ; %bb.0:6260; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6261; GFX900-NEXT: v_mov_b32_e32 v4, 06262; GFX900-NEXT: ;;#ASMSTART6263; GFX900-NEXT: ; def v[0:3]6264; GFX900-NEXT: ;;#ASMEND6265; GFX900-NEXT: v_mov_b32_e32 v5, v26266; GFX900-NEXT: global_store_dwordx3 v4, v[3:5], s[16:17]6267; GFX900-NEXT: s_waitcnt vmcnt(0)6268; GFX900-NEXT: s_setpc_b64 s[30:31]6269;6270; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_u_6:6271; GFX90A: ; %bb.0:6272; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6273; GFX90A-NEXT: ;;#ASMSTART6274; GFX90A-NEXT: ; def v[0:3]6275; GFX90A-NEXT: ;;#ASMEND6276; GFX90A-NEXT: v_mov_b32_e32 v4, 06277; GFX90A-NEXT: v_mov_b32_e32 v0, v36278; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]6279; GFX90A-NEXT: s_waitcnt vmcnt(0)6280; GFX90A-NEXT: s_setpc_b64 s[30:31]6281;6282; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_u_6:6283; GFX942: ; %bb.0:6284; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6285; GFX942-NEXT: ;;#ASMSTART6286; GFX942-NEXT: ; def v[0:3]6287; GFX942-NEXT: ;;#ASMEND6288; GFX942-NEXT: v_mov_b32_e32 v4, 06289; GFX942-NEXT: v_mov_b32_e32 v0, v36290; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]6291; GFX942-NEXT: s_waitcnt vmcnt(0)6292; GFX942-NEXT: s_setpc_b64 s[30:31]6293 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6294 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6295 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 6>6296 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166297 ret void6298}6299 6300define void @v_shuffle_v3p3_v4p3__7_0_6(ptr addrspace(1) inreg %ptr) {6301; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_0_6:6302; GFX900: ; %bb.0:6303; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6304; GFX900-NEXT: ;;#ASMSTART6305; GFX900-NEXT: ; def v[4:7]6306; GFX900-NEXT: ;;#ASMEND6307; GFX900-NEXT: v_mov_b32_e32 v8, 06308; GFX900-NEXT: ;;#ASMSTART6309; GFX900-NEXT: ; def v[0:3]6310; GFX900-NEXT: ;;#ASMEND6311; GFX900-NEXT: v_mov_b32_e32 v5, v26312; GFX900-NEXT: global_store_dwordx3 v8, v[3:5], s[16:17]6313; GFX900-NEXT: s_waitcnt vmcnt(0)6314; GFX900-NEXT: s_setpc_b64 s[30:31]6315;6316; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_0_6:6317; GFX90A: ; %bb.0:6318; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6319; GFX90A-NEXT: ;;#ASMSTART6320; GFX90A-NEXT: ; def v[0:3]6321; GFX90A-NEXT: ;;#ASMEND6322; GFX90A-NEXT: ;;#ASMSTART6323; GFX90A-NEXT: ; def v[2:5]6324; GFX90A-NEXT: ;;#ASMEND6325; GFX90A-NEXT: v_mov_b32_e32 v6, 06326; GFX90A-NEXT: v_mov_b32_e32 v2, v56327; GFX90A-NEXT: v_mov_b32_e32 v3, v06328; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]6329; GFX90A-NEXT: s_waitcnt vmcnt(0)6330; GFX90A-NEXT: s_setpc_b64 s[30:31]6331;6332; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_0_6:6333; GFX942: ; %bb.0:6334; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6335; GFX942-NEXT: ;;#ASMSTART6336; GFX942-NEXT: ; def v[0:3]6337; GFX942-NEXT: ;;#ASMEND6338; GFX942-NEXT: v_mov_b32_e32 v6, 06339; GFX942-NEXT: ;;#ASMSTART6340; GFX942-NEXT: ; def v[2:5]6341; GFX942-NEXT: ;;#ASMEND6342; GFX942-NEXT: s_nop 06343; GFX942-NEXT: v_mov_b32_e32 v2, v56344; GFX942-NEXT: v_mov_b32_e32 v3, v06345; GFX942-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1]6346; GFX942-NEXT: s_waitcnt vmcnt(0)6347; GFX942-NEXT: s_setpc_b64 s[30:31]6348 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6349 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6350 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 6>6351 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166352 ret void6353}6354 6355define void @v_shuffle_v3p3_v4p3__7_1_6(ptr addrspace(1) inreg %ptr) {6356; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_1_6:6357; GFX900: ; %bb.0:6358; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6359; GFX900-NEXT: ;;#ASMSTART6360; GFX900-NEXT: ; def v[3:6]6361; GFX900-NEXT: ;;#ASMEND6362; GFX900-NEXT: v_mov_b32_e32 v7, 06363; GFX900-NEXT: ;;#ASMSTART6364; GFX900-NEXT: ; def v[0:3]6365; GFX900-NEXT: ;;#ASMEND6366; GFX900-NEXT: v_mov_b32_e32 v5, v26367; GFX900-NEXT: global_store_dwordx3 v7, v[3:5], s[16:17]6368; GFX900-NEXT: s_waitcnt vmcnt(0)6369; GFX900-NEXT: s_setpc_b64 s[30:31]6370;6371; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_1_6:6372; GFX90A: ; %bb.0:6373; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6374; GFX90A-NEXT: ;;#ASMSTART6375; GFX90A-NEXT: ; def v[0:3]6376; GFX90A-NEXT: ;;#ASMEND6377; GFX90A-NEXT: ;;#ASMSTART6378; GFX90A-NEXT: ; def v[2:5]6379; GFX90A-NEXT: ;;#ASMEND6380; GFX90A-NEXT: v_mov_b32_e32 v6, 06381; GFX90A-NEXT: v_mov_b32_e32 v0, v56382; GFX90A-NEXT: v_mov_b32_e32 v2, v46383; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]6384; GFX90A-NEXT: s_waitcnt vmcnt(0)6385; GFX90A-NEXT: s_setpc_b64 s[30:31]6386;6387; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_1_6:6388; GFX942: ; %bb.0:6389; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6390; GFX942-NEXT: ;;#ASMSTART6391; GFX942-NEXT: ; def v[0:3]6392; GFX942-NEXT: ;;#ASMEND6393; GFX942-NEXT: v_mov_b32_e32 v6, 06394; GFX942-NEXT: ;;#ASMSTART6395; GFX942-NEXT: ; def v[2:5]6396; GFX942-NEXT: ;;#ASMEND6397; GFX942-NEXT: s_nop 06398; GFX942-NEXT: v_mov_b32_e32 v0, v56399; GFX942-NEXT: v_mov_b32_e32 v2, v46400; GFX942-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1]6401; GFX942-NEXT: s_waitcnt vmcnt(0)6402; GFX942-NEXT: s_setpc_b64 s[30:31]6403 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6404 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6405 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 6>6406 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166407 ret void6408}6409 6410define void @v_shuffle_v3p3_v4p3__7_2_6(ptr addrspace(1) inreg %ptr) {6411; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_2_6:6412; GFX900: ; %bb.0:6413; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6414; GFX900-NEXT: ;;#ASMSTART6415; GFX900-NEXT: ; def v[2:5]6416; GFX900-NEXT: ;;#ASMEND6417; GFX900-NEXT: v_mov_b32_e32 v6, 06418; GFX900-NEXT: ;;#ASMSTART6419; GFX900-NEXT: ; def v[0:3]6420; GFX900-NEXT: ;;#ASMEND6421; GFX900-NEXT: v_mov_b32_e32 v5, v26422; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]6423; GFX900-NEXT: s_waitcnt vmcnt(0)6424; GFX900-NEXT: s_setpc_b64 s[30:31]6425;6426; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_2_6:6427; GFX90A: ; %bb.0:6428; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6429; GFX90A-NEXT: ;;#ASMSTART6430; GFX90A-NEXT: ; def v[4:7]6431; GFX90A-NEXT: ;;#ASMEND6432; GFX90A-NEXT: v_mov_b32_e32 v8, 06433; GFX90A-NEXT: ;;#ASMSTART6434; GFX90A-NEXT: ; def v[0:3]6435; GFX90A-NEXT: ;;#ASMEND6436; GFX90A-NEXT: v_mov_b32_e32 v4, v76437; GFX90A-NEXT: v_mov_b32_e32 v5, v26438; GFX90A-NEXT: global_store_dwordx3 v8, v[4:6], s[16:17]6439; GFX90A-NEXT: s_waitcnt vmcnt(0)6440; GFX90A-NEXT: s_setpc_b64 s[30:31]6441;6442; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_2_6:6443; GFX942: ; %bb.0:6444; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6445; GFX942-NEXT: ;;#ASMSTART6446; GFX942-NEXT: ; def v[4:7]6447; GFX942-NEXT: ;;#ASMEND6448; GFX942-NEXT: v_mov_b32_e32 v8, 06449; GFX942-NEXT: ;;#ASMSTART6450; GFX942-NEXT: ; def v[0:3]6451; GFX942-NEXT: ;;#ASMEND6452; GFX942-NEXT: v_mov_b32_e32 v4, v76453; GFX942-NEXT: v_mov_b32_e32 v5, v26454; GFX942-NEXT: global_store_dwordx3 v8, v[4:6], s[0:1]6455; GFX942-NEXT: s_waitcnt vmcnt(0)6456; GFX942-NEXT: s_setpc_b64 s[30:31]6457 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6458 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6459 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 6>6460 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166461 ret void6462}6463 6464define void @v_shuffle_v3p3_v4p3__7_3_6(ptr addrspace(1) inreg %ptr) {6465; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_3_6:6466; GFX900: ; %bb.0:6467; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6468; GFX900-NEXT: ;;#ASMSTART6469; GFX900-NEXT: ; def v[1:4]6470; GFX900-NEXT: ;;#ASMEND6471; GFX900-NEXT: v_mov_b32_e32 v6, 06472; GFX900-NEXT: ;;#ASMSTART6473; GFX900-NEXT: ; def v[0:3]6474; GFX900-NEXT: ;;#ASMEND6475; GFX900-NEXT: v_mov_b32_e32 v5, v26476; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]6477; GFX900-NEXT: s_waitcnt vmcnt(0)6478; GFX900-NEXT: s_setpc_b64 s[30:31]6479;6480; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_3_6:6481; GFX90A: ; %bb.0:6482; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6483; GFX90A-NEXT: ;;#ASMSTART6484; GFX90A-NEXT: ; def v[0:3]6485; GFX90A-NEXT: ;;#ASMEND6486; GFX90A-NEXT: ;;#ASMSTART6487; GFX90A-NEXT: ; def v[4:7]6488; GFX90A-NEXT: ;;#ASMEND6489; GFX90A-NEXT: v_mov_b32_e32 v8, 06490; GFX90A-NEXT: v_mov_b32_e32 v2, v76491; GFX90A-NEXT: v_mov_b32_e32 v4, v66492; GFX90A-NEXT: global_store_dwordx3 v8, v[2:4], s[16:17]6493; GFX90A-NEXT: s_waitcnt vmcnt(0)6494; GFX90A-NEXT: s_setpc_b64 s[30:31]6495;6496; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_3_6:6497; GFX942: ; %bb.0:6498; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6499; GFX942-NEXT: ;;#ASMSTART6500; GFX942-NEXT: ; def v[0:3]6501; GFX942-NEXT: ;;#ASMEND6502; GFX942-NEXT: ;;#ASMSTART6503; GFX942-NEXT: ; def v[4:7]6504; GFX942-NEXT: ;;#ASMEND6505; GFX942-NEXT: v_mov_b32_e32 v8, 06506; GFX942-NEXT: v_mov_b32_e32 v2, v76507; GFX942-NEXT: v_mov_b32_e32 v4, v66508; GFX942-NEXT: global_store_dwordx3 v8, v[2:4], s[0:1]6509; GFX942-NEXT: s_waitcnt vmcnt(0)6510; GFX942-NEXT: s_setpc_b64 s[30:31]6511 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6512 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6513 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 6>6514 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166515 ret void6516}6517 6518define void @v_shuffle_v3p3_v4p3__7_4_6(ptr addrspace(1) inreg %ptr) {6519; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_4_6:6520; GFX900: ; %bb.0:6521; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6522; GFX900-NEXT: v_mov_b32_e32 v6, 06523; GFX900-NEXT: ;;#ASMSTART6524; GFX900-NEXT: ; def v[0:3]6525; GFX900-NEXT: ;;#ASMEND6526; GFX900-NEXT: v_mov_b32_e32 v4, v06527; GFX900-NEXT: v_mov_b32_e32 v5, v26528; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]6529; GFX900-NEXT: s_waitcnt vmcnt(0)6530; GFX900-NEXT: s_setpc_b64 s[30:31]6531;6532; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_4_6:6533; GFX90A: ; %bb.0:6534; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6535; GFX90A-NEXT: v_mov_b32_e32 v4, 06536; GFX90A-NEXT: ;;#ASMSTART6537; GFX90A-NEXT: ; def v[0:3]6538; GFX90A-NEXT: ;;#ASMEND6539; GFX90A-NEXT: v_mov_b32_e32 v6, v36540; GFX90A-NEXT: v_mov_b32_e32 v7, v06541; GFX90A-NEXT: v_mov_b32_e32 v8, v26542; GFX90A-NEXT: global_store_dwordx3 v4, v[6:8], s[16:17]6543; GFX90A-NEXT: s_waitcnt vmcnt(0)6544; GFX90A-NEXT: s_setpc_b64 s[30:31]6545;6546; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_4_6:6547; GFX942: ; %bb.0:6548; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6549; GFX942-NEXT: v_mov_b32_e32 v4, 06550; GFX942-NEXT: ;;#ASMSTART6551; GFX942-NEXT: ; def v[0:3]6552; GFX942-NEXT: ;;#ASMEND6553; GFX942-NEXT: s_nop 06554; GFX942-NEXT: v_mov_b32_e32 v6, v36555; GFX942-NEXT: v_mov_b32_e32 v7, v06556; GFX942-NEXT: v_mov_b32_e32 v8, v26557; GFX942-NEXT: global_store_dwordx3 v4, v[6:8], s[0:1]6558; GFX942-NEXT: s_waitcnt vmcnt(0)6559; GFX942-NEXT: s_setpc_b64 s[30:31]6560 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6561 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6562 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 6>6563 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166564 ret void6565}6566 6567define void @v_shuffle_v3p3_v4p3__7_5_6(ptr addrspace(1) inreg %ptr) {6568; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_5_6:6569; GFX900: ; %bb.0:6570; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6571; GFX900-NEXT: v_mov_b32_e32 v6, 06572; GFX900-NEXT: ;;#ASMSTART6573; GFX900-NEXT: ; def v[0:3]6574; GFX900-NEXT: ;;#ASMEND6575; GFX900-NEXT: v_mov_b32_e32 v4, v16576; GFX900-NEXT: v_mov_b32_e32 v5, v26577; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]6578; GFX900-NEXT: s_waitcnt vmcnt(0)6579; GFX900-NEXT: s_setpc_b64 s[30:31]6580;6581; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_5_6:6582; GFX90A: ; %bb.0:6583; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6584; GFX90A-NEXT: ;;#ASMSTART6585; GFX90A-NEXT: ; def v[0:3]6586; GFX90A-NEXT: ;;#ASMEND6587; GFX90A-NEXT: v_mov_b32_e32 v4, 06588; GFX90A-NEXT: v_mov_b32_e32 v0, v36589; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]6590; GFX90A-NEXT: s_waitcnt vmcnt(0)6591; GFX90A-NEXT: s_setpc_b64 s[30:31]6592;6593; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_5_6:6594; GFX942: ; %bb.0:6595; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6596; GFX942-NEXT: ;;#ASMSTART6597; GFX942-NEXT: ; def v[0:3]6598; GFX942-NEXT: ;;#ASMEND6599; GFX942-NEXT: v_mov_b32_e32 v4, 06600; GFX942-NEXT: v_mov_b32_e32 v0, v36601; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]6602; GFX942-NEXT: s_waitcnt vmcnt(0)6603; GFX942-NEXT: s_setpc_b64 s[30:31]6604 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6605 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6606 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 6>6607 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166608 ret void6609}6610 6611define void @v_shuffle_v3p3_v4p3__u_7_7(ptr addrspace(1) inreg %ptr) {6612; GFX900-LABEL: v_shuffle_v3p3_v4p3__u_7_7:6613; GFX900: ; %bb.0:6614; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6615; GFX900-NEXT: v_mov_b32_e32 v5, 06616; GFX900-NEXT: ;;#ASMSTART6617; GFX900-NEXT: ; def v[0:3]6618; GFX900-NEXT: ;;#ASMEND6619; GFX900-NEXT: v_mov_b32_e32 v4, v36620; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]6621; GFX900-NEXT: s_waitcnt vmcnt(0)6622; GFX900-NEXT: s_setpc_b64 s[30:31]6623;6624; GFX90A-LABEL: v_shuffle_v3p3_v4p3__u_7_7:6625; GFX90A: ; %bb.0:6626; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6627; GFX90A-NEXT: v_mov_b32_e32 v5, 06628; GFX90A-NEXT: ;;#ASMSTART6629; GFX90A-NEXT: ; def v[0:3]6630; GFX90A-NEXT: ;;#ASMEND6631; GFX90A-NEXT: v_mov_b32_e32 v4, v36632; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]6633; GFX90A-NEXT: s_waitcnt vmcnt(0)6634; GFX90A-NEXT: s_setpc_b64 s[30:31]6635;6636; GFX942-LABEL: v_shuffle_v3p3_v4p3__u_7_7:6637; GFX942: ; %bb.0:6638; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6639; GFX942-NEXT: v_mov_b32_e32 v5, 06640; GFX942-NEXT: ;;#ASMSTART6641; GFX942-NEXT: ; def v[0:3]6642; GFX942-NEXT: ;;#ASMEND6643; GFX942-NEXT: s_nop 06644; GFX942-NEXT: v_mov_b32_e32 v4, v36645; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]6646; GFX942-NEXT: s_waitcnt vmcnt(0)6647; GFX942-NEXT: s_setpc_b64 s[30:31]6648 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6649 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6650 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 poison, i32 7, i32 7>6651 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166652 ret void6653}6654 6655define void @v_shuffle_v3p3_v4p3__0_7_7(ptr addrspace(1) inreg %ptr) {6656; GFX900-LABEL: v_shuffle_v3p3_v4p3__0_7_7:6657; GFX900: ; %bb.0:6658; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6659; GFX900-NEXT: ;;#ASMSTART6660; GFX900-NEXT: ; def v[0:3]6661; GFX900-NEXT: ;;#ASMEND6662; GFX900-NEXT: ;;#ASMSTART6663; GFX900-NEXT: ; def v[1:4]6664; GFX900-NEXT: ;;#ASMEND6665; GFX900-NEXT: v_mov_b32_e32 v5, 06666; GFX900-NEXT: v_mov_b32_e32 v1, v46667; GFX900-NEXT: v_mov_b32_e32 v2, v46668; GFX900-NEXT: global_store_dwordx3 v5, v[0:2], s[16:17]6669; GFX900-NEXT: s_waitcnt vmcnt(0)6670; GFX900-NEXT: s_setpc_b64 s[30:31]6671;6672; GFX90A-LABEL: v_shuffle_v3p3_v4p3__0_7_7:6673; GFX90A: ; %bb.0:6674; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6675; GFX90A-NEXT: ;;#ASMSTART6676; GFX90A-NEXT: ; def v[0:3]6677; GFX90A-NEXT: ;;#ASMEND6678; GFX90A-NEXT: ;;#ASMSTART6679; GFX90A-NEXT: ; def v[2:5]6680; GFX90A-NEXT: ;;#ASMEND6681; GFX90A-NEXT: v_mov_b32_e32 v6, 06682; GFX90A-NEXT: v_mov_b32_e32 v1, v56683; GFX90A-NEXT: v_mov_b32_e32 v2, v56684; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]6685; GFX90A-NEXT: s_waitcnt vmcnt(0)6686; GFX90A-NEXT: s_setpc_b64 s[30:31]6687;6688; GFX942-LABEL: v_shuffle_v3p3_v4p3__0_7_7:6689; GFX942: ; %bb.0:6690; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6691; GFX942-NEXT: ;;#ASMSTART6692; GFX942-NEXT: ; def v[0:3]6693; GFX942-NEXT: ;;#ASMEND6694; GFX942-NEXT: v_mov_b32_e32 v6, 06695; GFX942-NEXT: ;;#ASMSTART6696; GFX942-NEXT: ; def v[2:5]6697; GFX942-NEXT: ;;#ASMEND6698; GFX942-NEXT: s_nop 06699; GFX942-NEXT: v_mov_b32_e32 v1, v56700; GFX942-NEXT: v_mov_b32_e32 v2, v56701; GFX942-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1]6702; GFX942-NEXT: s_waitcnt vmcnt(0)6703; GFX942-NEXT: s_setpc_b64 s[30:31]6704 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6705 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6706 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 0, i32 7, i32 7>6707 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166708 ret void6709}6710 6711define void @v_shuffle_v3p3_v4p3__1_7_7(ptr addrspace(1) inreg %ptr) {6712; GFX900-LABEL: v_shuffle_v3p3_v4p3__1_7_7:6713; GFX900: ; %bb.0:6714; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6715; GFX900-NEXT: ;;#ASMSTART6716; GFX900-NEXT: ; def v[0:3]6717; GFX900-NEXT: ;;#ASMEND6718; GFX900-NEXT: ;;#ASMSTART6719; GFX900-NEXT: ; def v[2:5]6720; GFX900-NEXT: ;;#ASMEND6721; GFX900-NEXT: v_mov_b32_e32 v6, 06722; GFX900-NEXT: v_mov_b32_e32 v2, v56723; GFX900-NEXT: v_mov_b32_e32 v3, v56724; GFX900-NEXT: global_store_dwordx3 v6, v[1:3], s[16:17]6725; GFX900-NEXT: s_waitcnt vmcnt(0)6726; GFX900-NEXT: s_setpc_b64 s[30:31]6727;6728; GFX90A-LABEL: v_shuffle_v3p3_v4p3__1_7_7:6729; GFX90A: ; %bb.0:6730; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6731; GFX90A-NEXT: ;;#ASMSTART6732; GFX90A-NEXT: ; def v[4:7]6733; GFX90A-NEXT: ;;#ASMEND6734; GFX90A-NEXT: ;;#ASMSTART6735; GFX90A-NEXT: ; def v[0:3]6736; GFX90A-NEXT: ;;#ASMEND6737; GFX90A-NEXT: v_mov_b32_e32 v8, 06738; GFX90A-NEXT: v_mov_b32_e32 v2, v56739; GFX90A-NEXT: v_mov_b32_e32 v4, v36740; GFX90A-NEXT: global_store_dwordx3 v8, v[2:4], s[16:17]6741; GFX90A-NEXT: s_waitcnt vmcnt(0)6742; GFX90A-NEXT: s_setpc_b64 s[30:31]6743;6744; GFX942-LABEL: v_shuffle_v3p3_v4p3__1_7_7:6745; GFX942: ; %bb.0:6746; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6747; GFX942-NEXT: ;;#ASMSTART6748; GFX942-NEXT: ; def v[4:7]6749; GFX942-NEXT: ;;#ASMEND6750; GFX942-NEXT: ;;#ASMSTART6751; GFX942-NEXT: ; def v[0:3]6752; GFX942-NEXT: ;;#ASMEND6753; GFX942-NEXT: v_mov_b32_e32 v8, 06754; GFX942-NEXT: v_mov_b32_e32 v2, v56755; GFX942-NEXT: v_mov_b32_e32 v4, v36756; GFX942-NEXT: global_store_dwordx3 v8, v[2:4], s[0:1]6757; GFX942-NEXT: s_waitcnt vmcnt(0)6758; GFX942-NEXT: s_setpc_b64 s[30:31]6759 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6760 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6761 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 1, i32 7, i32 7>6762 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166763 ret void6764}6765 6766define void @v_shuffle_v3p3_v4p3__2_7_7(ptr addrspace(1) inreg %ptr) {6767; GFX900-LABEL: v_shuffle_v3p3_v4p3__2_7_7:6768; GFX900: ; %bb.0:6769; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6770; GFX900-NEXT: ;;#ASMSTART6771; GFX900-NEXT: ; def v[0:3]6772; GFX900-NEXT: ;;#ASMEND6773; GFX900-NEXT: ;;#ASMSTART6774; GFX900-NEXT: ; def v[3:6]6775; GFX900-NEXT: ;;#ASMEND6776; GFX900-NEXT: v_mov_b32_e32 v7, 06777; GFX900-NEXT: v_mov_b32_e32 v3, v66778; GFX900-NEXT: v_mov_b32_e32 v4, v66779; GFX900-NEXT: global_store_dwordx3 v7, v[2:4], s[16:17]6780; GFX900-NEXT: s_waitcnt vmcnt(0)6781; GFX900-NEXT: s_setpc_b64 s[30:31]6782;6783; GFX90A-LABEL: v_shuffle_v3p3_v4p3__2_7_7:6784; GFX90A: ; %bb.0:6785; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6786; GFX90A-NEXT: ;;#ASMSTART6787; GFX90A-NEXT: ; def v[0:3]6788; GFX90A-NEXT: ;;#ASMEND6789; GFX90A-NEXT: ;;#ASMSTART6790; GFX90A-NEXT: ; def v[4:7]6791; GFX90A-NEXT: ;;#ASMEND6792; GFX90A-NEXT: v_mov_b32_e32 v8, 06793; GFX90A-NEXT: v_mov_b32_e32 v3, v76794; GFX90A-NEXT: v_mov_b32_e32 v4, v76795; GFX90A-NEXT: global_store_dwordx3 v8, v[2:4], s[16:17]6796; GFX90A-NEXT: s_waitcnt vmcnt(0)6797; GFX90A-NEXT: s_setpc_b64 s[30:31]6798;6799; GFX942-LABEL: v_shuffle_v3p3_v4p3__2_7_7:6800; GFX942: ; %bb.0:6801; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6802; GFX942-NEXT: ;;#ASMSTART6803; GFX942-NEXT: ; def v[0:3]6804; GFX942-NEXT: ;;#ASMEND6805; GFX942-NEXT: ;;#ASMSTART6806; GFX942-NEXT: ; def v[4:7]6807; GFX942-NEXT: ;;#ASMEND6808; GFX942-NEXT: v_mov_b32_e32 v8, 06809; GFX942-NEXT: v_mov_b32_e32 v3, v76810; GFX942-NEXT: v_mov_b32_e32 v4, v76811; GFX942-NEXT: global_store_dwordx3 v8, v[2:4], s[0:1]6812; GFX942-NEXT: s_waitcnt vmcnt(0)6813; GFX942-NEXT: s_setpc_b64 s[30:31]6814 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6815 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6816 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 2, i32 7, i32 7>6817 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166818 ret void6819}6820 6821define void @v_shuffle_v3p3_v4p3__3_7_7(ptr addrspace(1) inreg %ptr) {6822; GFX900-LABEL: v_shuffle_v3p3_v4p3__3_7_7:6823; GFX900: ; %bb.0:6824; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6825; GFX900-NEXT: ;;#ASMSTART6826; GFX900-NEXT: ; def v[4:7]6827; GFX900-NEXT: ;;#ASMEND6828; GFX900-NEXT: v_mov_b32_e32 v8, 06829; GFX900-NEXT: v_mov_b32_e32 v4, v76830; GFX900-NEXT: v_mov_b32_e32 v5, v76831; GFX900-NEXT: ;;#ASMSTART6832; GFX900-NEXT: ; def v[0:3]6833; GFX900-NEXT: ;;#ASMEND6834; GFX900-NEXT: global_store_dwordx3 v8, v[3:5], s[16:17]6835; GFX900-NEXT: s_waitcnt vmcnt(0)6836; GFX900-NEXT: s_setpc_b64 s[30:31]6837;6838; GFX90A-LABEL: v_shuffle_v3p3_v4p3__3_7_7:6839; GFX90A: ; %bb.0:6840; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6841; GFX90A-NEXT: ;;#ASMSTART6842; GFX90A-NEXT: ; def v[2:5]6843; GFX90A-NEXT: ;;#ASMEND6844; GFX90A-NEXT: ;;#ASMSTART6845; GFX90A-NEXT: ; def v[0:3]6846; GFX90A-NEXT: ;;#ASMEND6847; GFX90A-NEXT: v_mov_b32_e32 v6, 06848; GFX90A-NEXT: v_mov_b32_e32 v2, v56849; GFX90A-NEXT: v_mov_b32_e32 v4, v36850; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]6851; GFX90A-NEXT: s_waitcnt vmcnt(0)6852; GFX90A-NEXT: s_setpc_b64 s[30:31]6853;6854; GFX942-LABEL: v_shuffle_v3p3_v4p3__3_7_7:6855; GFX942: ; %bb.0:6856; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6857; GFX942-NEXT: ;;#ASMSTART6858; GFX942-NEXT: ; def v[2:5]6859; GFX942-NEXT: ;;#ASMEND6860; GFX942-NEXT: v_mov_b32_e32 v6, 06861; GFX942-NEXT: ;;#ASMSTART6862; GFX942-NEXT: ; def v[0:3]6863; GFX942-NEXT: ;;#ASMEND6864; GFX942-NEXT: s_nop 06865; GFX942-NEXT: v_mov_b32_e32 v2, v56866; GFX942-NEXT: v_mov_b32_e32 v4, v36867; GFX942-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1]6868; GFX942-NEXT: s_waitcnt vmcnt(0)6869; GFX942-NEXT: s_setpc_b64 s[30:31]6870 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6871 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6872 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 7, i32 7>6873 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166874 ret void6875}6876 6877define void @v_shuffle_v3p3_v4p3__4_7_7(ptr addrspace(1) inreg %ptr) {6878; GFX900-LABEL: v_shuffle_v3p3_v4p3__4_7_7:6879; GFX900: ; %bb.0:6880; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6881; GFX900-NEXT: ;;#ASMSTART6882; GFX900-NEXT: ; def v[0:3]6883; GFX900-NEXT: ;;#ASMEND6884; GFX900-NEXT: v_mov_b32_e32 v4, 06885; GFX900-NEXT: v_mov_b32_e32 v1, v36886; GFX900-NEXT: v_mov_b32_e32 v2, v36887; GFX900-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]6888; GFX900-NEXT: s_waitcnt vmcnt(0)6889; GFX900-NEXT: s_setpc_b64 s[30:31]6890;6891; GFX90A-LABEL: v_shuffle_v3p3_v4p3__4_7_7:6892; GFX90A: ; %bb.0:6893; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6894; GFX90A-NEXT: ;;#ASMSTART6895; GFX90A-NEXT: ; def v[0:3]6896; GFX90A-NEXT: ;;#ASMEND6897; GFX90A-NEXT: v_mov_b32_e32 v4, 06898; GFX90A-NEXT: v_mov_b32_e32 v1, v36899; GFX90A-NEXT: v_mov_b32_e32 v2, v36900; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]6901; GFX90A-NEXT: s_waitcnt vmcnt(0)6902; GFX90A-NEXT: s_setpc_b64 s[30:31]6903;6904; GFX942-LABEL: v_shuffle_v3p3_v4p3__4_7_7:6905; GFX942: ; %bb.0:6906; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6907; GFX942-NEXT: ;;#ASMSTART6908; GFX942-NEXT: ; def v[0:3]6909; GFX942-NEXT: ;;#ASMEND6910; GFX942-NEXT: v_mov_b32_e32 v4, 06911; GFX942-NEXT: v_mov_b32_e32 v1, v36912; GFX942-NEXT: v_mov_b32_e32 v2, v36913; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]6914; GFX942-NEXT: s_waitcnt vmcnt(0)6915; GFX942-NEXT: s_setpc_b64 s[30:31]6916 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6917 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6918 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 4, i32 7, i32 7>6919 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166920 ret void6921}6922 6923define void @v_shuffle_v3p3_v4p3__5_7_7(ptr addrspace(1) inreg %ptr) {6924; GFX900-LABEL: v_shuffle_v3p3_v4p3__5_7_7:6925; GFX900: ; %bb.0:6926; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6927; GFX900-NEXT: ;;#ASMSTART6928; GFX900-NEXT: ; def v[0:3]6929; GFX900-NEXT: ;;#ASMEND6930; GFX900-NEXT: v_mov_b32_e32 v4, 06931; GFX900-NEXT: v_mov_b32_e32 v2, v36932; GFX900-NEXT: global_store_dwordx3 v4, v[1:3], s[16:17]6933; GFX900-NEXT: s_waitcnt vmcnt(0)6934; GFX900-NEXT: s_setpc_b64 s[30:31]6935;6936; GFX90A-LABEL: v_shuffle_v3p3_v4p3__5_7_7:6937; GFX90A: ; %bb.0:6938; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6939; GFX90A-NEXT: ;;#ASMSTART6940; GFX90A-NEXT: ; def v[0:3]6941; GFX90A-NEXT: ;;#ASMEND6942; GFX90A-NEXT: v_mov_b32_e32 v5, 06943; GFX90A-NEXT: v_mov_b32_e32 v2, v16944; GFX90A-NEXT: v_mov_b32_e32 v4, v36945; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]6946; GFX90A-NEXT: s_waitcnt vmcnt(0)6947; GFX90A-NEXT: s_setpc_b64 s[30:31]6948;6949; GFX942-LABEL: v_shuffle_v3p3_v4p3__5_7_7:6950; GFX942: ; %bb.0:6951; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6952; GFX942-NEXT: ;;#ASMSTART6953; GFX942-NEXT: ; def v[0:3]6954; GFX942-NEXT: ;;#ASMEND6955; GFX942-NEXT: v_mov_b32_e32 v5, 06956; GFX942-NEXT: v_mov_b32_e32 v2, v16957; GFX942-NEXT: v_mov_b32_e32 v4, v36958; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]6959; GFX942-NEXT: s_waitcnt vmcnt(0)6960; GFX942-NEXT: s_setpc_b64 s[30:31]6961 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6962 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()6963 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 7, i32 7>6964 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166965 ret void6966}6967 6968define void @v_shuffle_v3p3_v4p3__6_7_7(ptr addrspace(1) inreg %ptr) {6969; GFX900-LABEL: v_shuffle_v3p3_v4p3__6_7_7:6970; GFX900: ; %bb.0:6971; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6972; GFX900-NEXT: v_mov_b32_e32 v5, 06973; GFX900-NEXT: ;;#ASMSTART6974; GFX900-NEXT: ; def v[0:3]6975; GFX900-NEXT: ;;#ASMEND6976; GFX900-NEXT: v_mov_b32_e32 v4, v36977; GFX900-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]6978; GFX900-NEXT: s_waitcnt vmcnt(0)6979; GFX900-NEXT: s_setpc_b64 s[30:31]6980;6981; GFX90A-LABEL: v_shuffle_v3p3_v4p3__6_7_7:6982; GFX90A: ; %bb.0:6983; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6984; GFX90A-NEXT: v_mov_b32_e32 v5, 06985; GFX90A-NEXT: ;;#ASMSTART6986; GFX90A-NEXT: ; def v[0:3]6987; GFX90A-NEXT: ;;#ASMEND6988; GFX90A-NEXT: v_mov_b32_e32 v4, v36989; GFX90A-NEXT: global_store_dwordx3 v5, v[2:4], s[16:17]6990; GFX90A-NEXT: s_waitcnt vmcnt(0)6991; GFX90A-NEXT: s_setpc_b64 s[30:31]6992;6993; GFX942-LABEL: v_shuffle_v3p3_v4p3__6_7_7:6994; GFX942: ; %bb.0:6995; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6996; GFX942-NEXT: v_mov_b32_e32 v5, 06997; GFX942-NEXT: ;;#ASMSTART6998; GFX942-NEXT: ; def v[0:3]6999; GFX942-NEXT: ;;#ASMEND7000; GFX942-NEXT: s_nop 07001; GFX942-NEXT: v_mov_b32_e32 v4, v37002; GFX942-NEXT: global_store_dwordx3 v5, v[2:4], s[0:1]7003; GFX942-NEXT: s_waitcnt vmcnt(0)7004; GFX942-NEXT: s_setpc_b64 s[30:31]7005 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()7006 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()7007 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 7, i32 7>7008 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 167009 ret void7010}7011 7012define void @v_shuffle_v3p3_v4p3__7_u_7(ptr addrspace(1) inreg %ptr) {7013; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_u_7:7014; GFX900: ; %bb.0:7015; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7016; GFX900-NEXT: v_mov_b32_e32 v4, 07017; GFX900-NEXT: ;;#ASMSTART7018; GFX900-NEXT: ; def v[0:3]7019; GFX900-NEXT: ;;#ASMEND7020; GFX900-NEXT: v_mov_b32_e32 v5, v37021; GFX900-NEXT: global_store_dwordx3 v4, v[3:5], s[16:17]7022; GFX900-NEXT: s_waitcnt vmcnt(0)7023; GFX900-NEXT: s_setpc_b64 s[30:31]7024;7025; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_u_7:7026; GFX90A: ; %bb.0:7027; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7028; GFX90A-NEXT: ;;#ASMSTART7029; GFX90A-NEXT: ; def v[0:3]7030; GFX90A-NEXT: ;;#ASMEND7031; GFX90A-NEXT: v_mov_b32_e32 v4, 07032; GFX90A-NEXT: v_mov_b32_e32 v0, v37033; GFX90A-NEXT: v_mov_b32_e32 v2, v37034; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]7035; GFX90A-NEXT: s_waitcnt vmcnt(0)7036; GFX90A-NEXT: s_setpc_b64 s[30:31]7037;7038; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_u_7:7039; GFX942: ; %bb.0:7040; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7041; GFX942-NEXT: ;;#ASMSTART7042; GFX942-NEXT: ; def v[0:3]7043; GFX942-NEXT: ;;#ASMEND7044; GFX942-NEXT: v_mov_b32_e32 v4, 07045; GFX942-NEXT: v_mov_b32_e32 v0, v37046; GFX942-NEXT: v_mov_b32_e32 v2, v37047; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]7048; GFX942-NEXT: s_waitcnt vmcnt(0)7049; GFX942-NEXT: s_setpc_b64 s[30:31]7050 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()7051 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()7052 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 7>7053 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 167054 ret void7055}7056 7057define void @v_shuffle_v3p3_v4p3__7_0_7(ptr addrspace(1) inreg %ptr) {7058; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_0_7:7059; GFX900: ; %bb.0:7060; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7061; GFX900-NEXT: ;;#ASMSTART7062; GFX900-NEXT: ; def v[4:7]7063; GFX900-NEXT: ;;#ASMEND7064; GFX900-NEXT: v_mov_b32_e32 v8, 07065; GFX900-NEXT: ;;#ASMSTART7066; GFX900-NEXT: ; def v[0:3]7067; GFX900-NEXT: ;;#ASMEND7068; GFX900-NEXT: v_mov_b32_e32 v5, v37069; GFX900-NEXT: global_store_dwordx3 v8, v[3:5], s[16:17]7070; GFX900-NEXT: s_waitcnt vmcnt(0)7071; GFX900-NEXT: s_setpc_b64 s[30:31]7072;7073; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_0_7:7074; GFX90A: ; %bb.0:7075; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7076; GFX90A-NEXT: ;;#ASMSTART7077; GFX90A-NEXT: ; def v[0:3]7078; GFX90A-NEXT: ;;#ASMEND7079; GFX90A-NEXT: ;;#ASMSTART7080; GFX90A-NEXT: ; def v[2:5]7081; GFX90A-NEXT: ;;#ASMEND7082; GFX90A-NEXT: v_mov_b32_e32 v6, 07083; GFX90A-NEXT: v_mov_b32_e32 v2, v57084; GFX90A-NEXT: v_mov_b32_e32 v3, v07085; GFX90A-NEXT: v_mov_b32_e32 v4, v57086; GFX90A-NEXT: global_store_dwordx3 v6, v[2:4], s[16:17]7087; GFX90A-NEXT: s_waitcnt vmcnt(0)7088; GFX90A-NEXT: s_setpc_b64 s[30:31]7089;7090; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_0_7:7091; GFX942: ; %bb.0:7092; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7093; GFX942-NEXT: ;;#ASMSTART7094; GFX942-NEXT: ; def v[0:3]7095; GFX942-NEXT: ;;#ASMEND7096; GFX942-NEXT: v_mov_b32_e32 v6, 07097; GFX942-NEXT: ;;#ASMSTART7098; GFX942-NEXT: ; def v[2:5]7099; GFX942-NEXT: ;;#ASMEND7100; GFX942-NEXT: s_nop 07101; GFX942-NEXT: v_mov_b32_e32 v2, v57102; GFX942-NEXT: v_mov_b32_e32 v3, v07103; GFX942-NEXT: v_mov_b32_e32 v4, v57104; GFX942-NEXT: global_store_dwordx3 v6, v[2:4], s[0:1]7105; GFX942-NEXT: s_waitcnt vmcnt(0)7106; GFX942-NEXT: s_setpc_b64 s[30:31]7107 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()7108 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()7109 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 7>7110 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 167111 ret void7112}7113 7114define void @v_shuffle_v3p3_v4p3__7_1_7(ptr addrspace(1) inreg %ptr) {7115; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_1_7:7116; GFX900: ; %bb.0:7117; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7118; GFX900-NEXT: ;;#ASMSTART7119; GFX900-NEXT: ; def v[3:6]7120; GFX900-NEXT: ;;#ASMEND7121; GFX900-NEXT: v_mov_b32_e32 v7, 07122; GFX900-NEXT: ;;#ASMSTART7123; GFX900-NEXT: ; def v[0:3]7124; GFX900-NEXT: ;;#ASMEND7125; GFX900-NEXT: v_mov_b32_e32 v5, v37126; GFX900-NEXT: global_store_dwordx3 v7, v[3:5], s[16:17]7127; GFX900-NEXT: s_waitcnt vmcnt(0)7128; GFX900-NEXT: s_setpc_b64 s[30:31]7129;7130; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_1_7:7131; GFX90A: ; %bb.0:7132; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7133; GFX90A-NEXT: ;;#ASMSTART7134; GFX90A-NEXT: ; def v[0:3]7135; GFX90A-NEXT: ;;#ASMEND7136; GFX90A-NEXT: ;;#ASMSTART7137; GFX90A-NEXT: ; def v[2:5]7138; GFX90A-NEXT: ;;#ASMEND7139; GFX90A-NEXT: v_mov_b32_e32 v6, 07140; GFX90A-NEXT: v_mov_b32_e32 v0, v57141; GFX90A-NEXT: v_mov_b32_e32 v2, v57142; GFX90A-NEXT: global_store_dwordx3 v6, v[0:2], s[16:17]7143; GFX90A-NEXT: s_waitcnt vmcnt(0)7144; GFX90A-NEXT: s_setpc_b64 s[30:31]7145;7146; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_1_7:7147; GFX942: ; %bb.0:7148; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7149; GFX942-NEXT: ;;#ASMSTART7150; GFX942-NEXT: ; def v[0:3]7151; GFX942-NEXT: ;;#ASMEND7152; GFX942-NEXT: v_mov_b32_e32 v6, 07153; GFX942-NEXT: ;;#ASMSTART7154; GFX942-NEXT: ; def v[2:5]7155; GFX942-NEXT: ;;#ASMEND7156; GFX942-NEXT: s_nop 07157; GFX942-NEXT: v_mov_b32_e32 v0, v57158; GFX942-NEXT: v_mov_b32_e32 v2, v57159; GFX942-NEXT: global_store_dwordx3 v6, v[0:2], s[0:1]7160; GFX942-NEXT: s_waitcnt vmcnt(0)7161; GFX942-NEXT: s_setpc_b64 s[30:31]7162 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()7163 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()7164 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 7>7165 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 167166 ret void7167}7168 7169define void @v_shuffle_v3p3_v4p3__7_2_7(ptr addrspace(1) inreg %ptr) {7170; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_2_7:7171; GFX900: ; %bb.0:7172; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7173; GFX900-NEXT: ;;#ASMSTART7174; GFX900-NEXT: ; def v[2:5]7175; GFX900-NEXT: ;;#ASMEND7176; GFX900-NEXT: v_mov_b32_e32 v6, 07177; GFX900-NEXT: ;;#ASMSTART7178; GFX900-NEXT: ; def v[0:3]7179; GFX900-NEXT: ;;#ASMEND7180; GFX900-NEXT: v_mov_b32_e32 v5, v37181; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]7182; GFX900-NEXT: s_waitcnt vmcnt(0)7183; GFX900-NEXT: s_setpc_b64 s[30:31]7184;7185; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_2_7:7186; GFX90A: ; %bb.0:7187; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7188; GFX90A-NEXT: ;;#ASMSTART7189; GFX90A-NEXT: ; def v[0:3]7190; GFX90A-NEXT: ;;#ASMEND7191; GFX90A-NEXT: v_mov_b32_e32 v8, 07192; GFX90A-NEXT: ;;#ASMSTART7193; GFX90A-NEXT: ; def v[4:7]7194; GFX90A-NEXT: ;;#ASMEND7195; GFX90A-NEXT: v_mov_b32_e32 v0, v77196; GFX90A-NEXT: v_mov_b32_e32 v1, v27197; GFX90A-NEXT: v_mov_b32_e32 v2, v77198; GFX90A-NEXT: global_store_dwordx3 v8, v[0:2], s[16:17]7199; GFX90A-NEXT: s_waitcnt vmcnt(0)7200; GFX90A-NEXT: s_setpc_b64 s[30:31]7201;7202; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_2_7:7203; GFX942: ; %bb.0:7204; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7205; GFX942-NEXT: ;;#ASMSTART7206; GFX942-NEXT: ; def v[0:3]7207; GFX942-NEXT: ;;#ASMEND7208; GFX942-NEXT: v_mov_b32_e32 v8, 07209; GFX942-NEXT: ;;#ASMSTART7210; GFX942-NEXT: ; def v[4:7]7211; GFX942-NEXT: ;;#ASMEND7212; GFX942-NEXT: v_mov_b32_e32 v1, v27213; GFX942-NEXT: v_mov_b32_e32 v0, v77214; GFX942-NEXT: v_mov_b32_e32 v2, v77215; GFX942-NEXT: global_store_dwordx3 v8, v[0:2], s[0:1]7216; GFX942-NEXT: s_waitcnt vmcnt(0)7217; GFX942-NEXT: s_setpc_b64 s[30:31]7218 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()7219 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()7220 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 7>7221 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 167222 ret void7223}7224 7225define void @v_shuffle_v3p3_v4p3__7_3_7(ptr addrspace(1) inreg %ptr) {7226; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_3_7:7227; GFX900: ; %bb.0:7228; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7229; GFX900-NEXT: ;;#ASMSTART7230; GFX900-NEXT: ; def v[1:4]7231; GFX900-NEXT: ;;#ASMEND7232; GFX900-NEXT: v_mov_b32_e32 v6, 07233; GFX900-NEXT: ;;#ASMSTART7234; GFX900-NEXT: ; def v[0:3]7235; GFX900-NEXT: ;;#ASMEND7236; GFX900-NEXT: v_mov_b32_e32 v5, v37237; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]7238; GFX900-NEXT: s_waitcnt vmcnt(0)7239; GFX900-NEXT: s_setpc_b64 s[30:31]7240;7241; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_3_7:7242; GFX90A: ; %bb.0:7243; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7244; GFX90A-NEXT: ;;#ASMSTART7245; GFX90A-NEXT: ; def v[0:3]7246; GFX90A-NEXT: ;;#ASMEND7247; GFX90A-NEXT: ;;#ASMSTART7248; GFX90A-NEXT: ; def v[4:7]7249; GFX90A-NEXT: ;;#ASMEND7250; GFX90A-NEXT: v_mov_b32_e32 v8, 07251; GFX90A-NEXT: v_mov_b32_e32 v2, v77252; GFX90A-NEXT: v_mov_b32_e32 v4, v77253; GFX90A-NEXT: global_store_dwordx3 v8, v[2:4], s[16:17]7254; GFX90A-NEXT: s_waitcnt vmcnt(0)7255; GFX90A-NEXT: s_setpc_b64 s[30:31]7256;7257; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_3_7:7258; GFX942: ; %bb.0:7259; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7260; GFX942-NEXT: ;;#ASMSTART7261; GFX942-NEXT: ; def v[0:3]7262; GFX942-NEXT: ;;#ASMEND7263; GFX942-NEXT: ;;#ASMSTART7264; GFX942-NEXT: ; def v[4:7]7265; GFX942-NEXT: ;;#ASMEND7266; GFX942-NEXT: v_mov_b32_e32 v8, 07267; GFX942-NEXT: v_mov_b32_e32 v2, v77268; GFX942-NEXT: v_mov_b32_e32 v4, v77269; GFX942-NEXT: global_store_dwordx3 v8, v[2:4], s[0:1]7270; GFX942-NEXT: s_waitcnt vmcnt(0)7271; GFX942-NEXT: s_setpc_b64 s[30:31]7272 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()7273 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()7274 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 7>7275 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 167276 ret void7277}7278 7279define void @v_shuffle_v3p3_v4p3__7_4_7(ptr addrspace(1) inreg %ptr) {7280; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_4_7:7281; GFX900: ; %bb.0:7282; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7283; GFX900-NEXT: v_mov_b32_e32 v6, 07284; GFX900-NEXT: ;;#ASMSTART7285; GFX900-NEXT: ; def v[0:3]7286; GFX900-NEXT: ;;#ASMEND7287; GFX900-NEXT: v_mov_b32_e32 v4, v07288; GFX900-NEXT: v_mov_b32_e32 v5, v37289; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]7290; GFX900-NEXT: s_waitcnt vmcnt(0)7291; GFX900-NEXT: s_setpc_b64 s[30:31]7292;7293; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_4_7:7294; GFX90A: ; %bb.0:7295; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7296; GFX90A-NEXT: v_mov_b32_e32 v4, 07297; GFX90A-NEXT: ;;#ASMSTART7298; GFX90A-NEXT: ; def v[0:3]7299; GFX90A-NEXT: ;;#ASMEND7300; GFX90A-NEXT: v_mov_b32_e32 v6, v37301; GFX90A-NEXT: v_mov_b32_e32 v7, v07302; GFX90A-NEXT: v_mov_b32_e32 v8, v37303; GFX90A-NEXT: global_store_dwordx3 v4, v[6:8], s[16:17]7304; GFX90A-NEXT: s_waitcnt vmcnt(0)7305; GFX90A-NEXT: s_setpc_b64 s[30:31]7306;7307; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_4_7:7308; GFX942: ; %bb.0:7309; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7310; GFX942-NEXT: v_mov_b32_e32 v4, 07311; GFX942-NEXT: ;;#ASMSTART7312; GFX942-NEXT: ; def v[0:3]7313; GFX942-NEXT: ;;#ASMEND7314; GFX942-NEXT: s_nop 07315; GFX942-NEXT: v_mov_b32_e32 v6, v37316; GFX942-NEXT: v_mov_b32_e32 v7, v07317; GFX942-NEXT: v_mov_b32_e32 v8, v37318; GFX942-NEXT: global_store_dwordx3 v4, v[6:8], s[0:1]7319; GFX942-NEXT: s_waitcnt vmcnt(0)7320; GFX942-NEXT: s_setpc_b64 s[30:31]7321 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()7322 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()7323 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 7>7324 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 167325 ret void7326}7327 7328define void @v_shuffle_v3p3_v4p3__7_5_7(ptr addrspace(1) inreg %ptr) {7329; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_5_7:7330; GFX900: ; %bb.0:7331; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7332; GFX900-NEXT: v_mov_b32_e32 v6, 07333; GFX900-NEXT: ;;#ASMSTART7334; GFX900-NEXT: ; def v[0:3]7335; GFX900-NEXT: ;;#ASMEND7336; GFX900-NEXT: v_mov_b32_e32 v4, v17337; GFX900-NEXT: v_mov_b32_e32 v5, v37338; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]7339; GFX900-NEXT: s_waitcnt vmcnt(0)7340; GFX900-NEXT: s_setpc_b64 s[30:31]7341;7342; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_5_7:7343; GFX90A: ; %bb.0:7344; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7345; GFX90A-NEXT: ;;#ASMSTART7346; GFX90A-NEXT: ; def v[0:3]7347; GFX90A-NEXT: ;;#ASMEND7348; GFX90A-NEXT: v_mov_b32_e32 v4, 07349; GFX90A-NEXT: v_mov_b32_e32 v0, v37350; GFX90A-NEXT: v_mov_b32_e32 v2, v37351; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]7352; GFX90A-NEXT: s_waitcnt vmcnt(0)7353; GFX90A-NEXT: s_setpc_b64 s[30:31]7354;7355; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_5_7:7356; GFX942: ; %bb.0:7357; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7358; GFX942-NEXT: ;;#ASMSTART7359; GFX942-NEXT: ; def v[0:3]7360; GFX942-NEXT: ;;#ASMEND7361; GFX942-NEXT: v_mov_b32_e32 v4, 07362; GFX942-NEXT: v_mov_b32_e32 v0, v37363; GFX942-NEXT: v_mov_b32_e32 v2, v37364; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]7365; GFX942-NEXT: s_waitcnt vmcnt(0)7366; GFX942-NEXT: s_setpc_b64 s[30:31]7367 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()7368 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()7369 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 7>7370 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 167371 ret void7372}7373 7374define void @v_shuffle_v3p3_v4p3__7_6_7(ptr addrspace(1) inreg %ptr) {7375; GFX900-LABEL: v_shuffle_v3p3_v4p3__7_6_7:7376; GFX900: ; %bb.0:7377; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7378; GFX900-NEXT: v_mov_b32_e32 v6, 07379; GFX900-NEXT: ;;#ASMSTART7380; GFX900-NEXT: ; def v[0:3]7381; GFX900-NEXT: ;;#ASMEND7382; GFX900-NEXT: v_mov_b32_e32 v4, v27383; GFX900-NEXT: v_mov_b32_e32 v5, v37384; GFX900-NEXT: global_store_dwordx3 v6, v[3:5], s[16:17]7385; GFX900-NEXT: s_waitcnt vmcnt(0)7386; GFX900-NEXT: s_setpc_b64 s[30:31]7387;7388; GFX90A-LABEL: v_shuffle_v3p3_v4p3__7_6_7:7389; GFX90A: ; %bb.0:7390; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7391; GFX90A-NEXT: ;;#ASMSTART7392; GFX90A-NEXT: ; def v[0:3]7393; GFX90A-NEXT: ;;#ASMEND7394; GFX90A-NEXT: v_mov_b32_e32 v4, 07395; GFX90A-NEXT: v_mov_b32_e32 v0, v37396; GFX90A-NEXT: v_mov_b32_e32 v1, v27397; GFX90A-NEXT: v_mov_b32_e32 v2, v37398; GFX90A-NEXT: global_store_dwordx3 v4, v[0:2], s[16:17]7399; GFX90A-NEXT: s_waitcnt vmcnt(0)7400; GFX90A-NEXT: s_setpc_b64 s[30:31]7401;7402; GFX942-LABEL: v_shuffle_v3p3_v4p3__7_6_7:7403; GFX942: ; %bb.0:7404; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7405; GFX942-NEXT: ;;#ASMSTART7406; GFX942-NEXT: ; def v[0:3]7407; GFX942-NEXT: ;;#ASMEND7408; GFX942-NEXT: v_mov_b32_e32 v4, 07409; GFX942-NEXT: v_mov_b32_e32 v0, v37410; GFX942-NEXT: v_mov_b32_e32 v1, v27411; GFX942-NEXT: v_mov_b32_e32 v2, v37412; GFX942-NEXT: global_store_dwordx3 v4, v[0:2], s[0:1]7413; GFX942-NEXT: s_waitcnt vmcnt(0)7414; GFX942-NEXT: s_setpc_b64 s[30:31]7415 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()7416 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=v"()7417 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 7>7418 store <3 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 167419 ret void7420}7421 7422define void @s_shuffle_v3p3_v4p3__u_u_u() {7423; GFX9-LABEL: s_shuffle_v3p3_v4p3__u_u_u:7424; GFX9: ; %bb.0:7425; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7426; GFX9-NEXT: ;;#ASMSTART7427; GFX9-NEXT: ; use s[8:10]7428; GFX9-NEXT: ;;#ASMEND7429; GFX9-NEXT: s_setpc_b64 s[30:31]7430 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()7431 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> poison7432 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)7433 ret void7434}7435 7436define void @s_shuffle_v3p3_v4p3__0_u_u() {7437; GFX900-LABEL: s_shuffle_v3p3_v4p3__0_u_u:7438; GFX900: ; %bb.0:7439; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7440; GFX900-NEXT: ;;#ASMSTART7441; GFX900-NEXT: ; def s[8:11]7442; GFX900-NEXT: ;;#ASMEND7443; GFX900-NEXT: ;;#ASMSTART7444; GFX900-NEXT: ; use s[8:10]7445; GFX900-NEXT: ;;#ASMEND7446; GFX900-NEXT: s_setpc_b64 s[30:31]7447;7448; GFX90A-LABEL: s_shuffle_v3p3_v4p3__0_u_u:7449; GFX90A: ; %bb.0:7450; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7451; GFX90A-NEXT: ;;#ASMSTART7452; GFX90A-NEXT: ; def s[8:11]7453; GFX90A-NEXT: ;;#ASMEND7454; GFX90A-NEXT: ;;#ASMSTART7455; GFX90A-NEXT: ; use s[8:10]7456; GFX90A-NEXT: ;;#ASMEND7457; GFX90A-NEXT: s_setpc_b64 s[30:31]7458;7459; GFX942-LABEL: s_shuffle_v3p3_v4p3__0_u_u:7460; GFX942: ; %bb.0:7461; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7462; GFX942-NEXT: ;;#ASMSTART7463; GFX942-NEXT: ; def s[8:11]7464; GFX942-NEXT: ;;#ASMEND7465; GFX942-NEXT: s_nop 07466; GFX942-NEXT: ;;#ASMSTART7467; GFX942-NEXT: ; use s[8:10]7468; GFX942-NEXT: ;;#ASMEND7469; GFX942-NEXT: s_setpc_b64 s[30:31]7470 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()7471 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 0, i32 poison, i32 poison>7472 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)7473 ret void7474}7475 7476define void @s_shuffle_v3p3_v4p3__1_u_u() {7477; GFX900-LABEL: s_shuffle_v3p3_v4p3__1_u_u:7478; GFX900: ; %bb.0:7479; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7480; GFX900-NEXT: ;;#ASMSTART7481; GFX900-NEXT: ; def s[4:7]7482; GFX900-NEXT: ;;#ASMEND7483; GFX900-NEXT: s_mov_b32 s8, s57484; GFX900-NEXT: ;;#ASMSTART7485; GFX900-NEXT: ; use s[8:10]7486; GFX900-NEXT: ;;#ASMEND7487; GFX900-NEXT: s_setpc_b64 s[30:31]7488;7489; GFX90A-LABEL: s_shuffle_v3p3_v4p3__1_u_u:7490; GFX90A: ; %bb.0:7491; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7492; GFX90A-NEXT: ;;#ASMSTART7493; GFX90A-NEXT: ; def s[4:7]7494; GFX90A-NEXT: ;;#ASMEND7495; GFX90A-NEXT: s_mov_b32 s8, s57496; GFX90A-NEXT: ;;#ASMSTART7497; GFX90A-NEXT: ; use s[8:10]7498; GFX90A-NEXT: ;;#ASMEND7499; GFX90A-NEXT: s_setpc_b64 s[30:31]7500;7501; GFX942-LABEL: s_shuffle_v3p3_v4p3__1_u_u:7502; GFX942: ; %bb.0:7503; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7504; GFX942-NEXT: ;;#ASMSTART7505; GFX942-NEXT: ; def s[0:3]7506; GFX942-NEXT: ;;#ASMEND7507; GFX942-NEXT: s_mov_b32 s8, s17508; GFX942-NEXT: ;;#ASMSTART7509; GFX942-NEXT: ; use s[8:10]7510; GFX942-NEXT: ;;#ASMEND7511; GFX942-NEXT: s_setpc_b64 s[30:31]7512 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()7513 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 poison, i32 poison>7514 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)7515 ret void7516}7517 7518define void @s_shuffle_v3p3_v4p3__2_u_u() {7519; GFX900-LABEL: s_shuffle_v3p3_v4p3__2_u_u:7520; GFX900: ; %bb.0:7521; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7522; GFX900-NEXT: ;;#ASMSTART7523; GFX900-NEXT: ; def s[4:7]7524; GFX900-NEXT: ;;#ASMEND7525; GFX900-NEXT: s_mov_b32 s8, s67526; GFX900-NEXT: ;;#ASMSTART7527; GFX900-NEXT: ; use s[8:10]7528; GFX900-NEXT: ;;#ASMEND7529; GFX900-NEXT: s_setpc_b64 s[30:31]7530;7531; GFX90A-LABEL: s_shuffle_v3p3_v4p3__2_u_u:7532; GFX90A: ; %bb.0:7533; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7534; GFX90A-NEXT: ;;#ASMSTART7535; GFX90A-NEXT: ; def s[4:7]7536; GFX90A-NEXT: ;;#ASMEND7537; GFX90A-NEXT: s_mov_b32 s8, s67538; GFX90A-NEXT: ;;#ASMSTART7539; GFX90A-NEXT: ; use s[8:10]7540; GFX90A-NEXT: ;;#ASMEND7541; GFX90A-NEXT: s_setpc_b64 s[30:31]7542;7543; GFX942-LABEL: s_shuffle_v3p3_v4p3__2_u_u:7544; GFX942: ; %bb.0:7545; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7546; GFX942-NEXT: ;;#ASMSTART7547; GFX942-NEXT: ; def s[0:3]7548; GFX942-NEXT: ;;#ASMEND7549; GFX942-NEXT: s_mov_b32 s8, s27550; GFX942-NEXT: ;;#ASMSTART7551; GFX942-NEXT: ; use s[8:10]7552; GFX942-NEXT: ;;#ASMEND7553; GFX942-NEXT: s_setpc_b64 s[30:31]7554 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()7555 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 poison, i32 poison>7556 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)7557 ret void7558}7559 7560define void @s_shuffle_v3p3_v4p3__3_u_u() {7561; GFX900-LABEL: s_shuffle_v3p3_v4p3__3_u_u:7562; GFX900: ; %bb.0:7563; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7564; GFX900-NEXT: ;;#ASMSTART7565; GFX900-NEXT: ; def s[4:7]7566; GFX900-NEXT: ;;#ASMEND7567; GFX900-NEXT: s_mov_b32 s8, s77568; GFX900-NEXT: ;;#ASMSTART7569; GFX900-NEXT: ; use s[8:10]7570; GFX900-NEXT: ;;#ASMEND7571; GFX900-NEXT: s_setpc_b64 s[30:31]7572;7573; GFX90A-LABEL: s_shuffle_v3p3_v4p3__3_u_u:7574; GFX90A: ; %bb.0:7575; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7576; GFX90A-NEXT: ;;#ASMSTART7577; GFX90A-NEXT: ; def s[4:7]7578; GFX90A-NEXT: ;;#ASMEND7579; GFX90A-NEXT: s_mov_b32 s8, s77580; GFX90A-NEXT: ;;#ASMSTART7581; GFX90A-NEXT: ; use s[8:10]7582; GFX90A-NEXT: ;;#ASMEND7583; GFX90A-NEXT: s_setpc_b64 s[30:31]7584;7585; GFX942-LABEL: s_shuffle_v3p3_v4p3__3_u_u:7586; GFX942: ; %bb.0:7587; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7588; GFX942-NEXT: ;;#ASMSTART7589; GFX942-NEXT: ; def s[0:3]7590; GFX942-NEXT: ;;#ASMEND7591; GFX942-NEXT: s_mov_b32 s8, s37592; GFX942-NEXT: ;;#ASMSTART7593; GFX942-NEXT: ; use s[8:10]7594; GFX942-NEXT: ;;#ASMEND7595; GFX942-NEXT: s_setpc_b64 s[30:31]7596 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()7597 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 3, i32 poison, i32 poison>7598 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)7599 ret void7600}7601 7602define void @s_shuffle_v3p3_v4p3__4_u_u() {7603; GFX9-LABEL: s_shuffle_v3p3_v4p3__4_u_u:7604; GFX9: ; %bb.0:7605; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7606; GFX9-NEXT: ;;#ASMSTART7607; GFX9-NEXT: ; use s[8:10]7608; GFX9-NEXT: ;;#ASMEND7609; GFX9-NEXT: s_setpc_b64 s[30:31]7610 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()7611 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 4, i32 poison, i32 poison>7612 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)7613 ret void7614}7615 7616define void @s_shuffle_v3p3_v4p3__5_u_u() {7617; GFX900-LABEL: s_shuffle_v3p3_v4p3__5_u_u:7618; GFX900: ; %bb.0:7619; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7620; GFX900-NEXT: ;;#ASMSTART7621; GFX900-NEXT: ; def s[4:7]7622; GFX900-NEXT: ;;#ASMEND7623; GFX900-NEXT: s_mov_b32 s8, s57624; GFX900-NEXT: ;;#ASMSTART7625; GFX900-NEXT: ; use s[8:10]7626; GFX900-NEXT: ;;#ASMEND7627; GFX900-NEXT: s_setpc_b64 s[30:31]7628;7629; GFX90A-LABEL: s_shuffle_v3p3_v4p3__5_u_u:7630; GFX90A: ; %bb.0:7631; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7632; GFX90A-NEXT: ;;#ASMSTART7633; GFX90A-NEXT: ; def s[4:7]7634; GFX90A-NEXT: ;;#ASMEND7635; GFX90A-NEXT: s_mov_b32 s8, s57636; GFX90A-NEXT: ;;#ASMSTART7637; GFX90A-NEXT: ; use s[8:10]7638; GFX90A-NEXT: ;;#ASMEND7639; GFX90A-NEXT: s_setpc_b64 s[30:31]7640;7641; GFX942-LABEL: s_shuffle_v3p3_v4p3__5_u_u:7642; GFX942: ; %bb.0:7643; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7644; GFX942-NEXT: ;;#ASMSTART7645; GFX942-NEXT: ; def s[0:3]7646; GFX942-NEXT: ;;#ASMEND7647; GFX942-NEXT: s_mov_b32 s8, s17648; GFX942-NEXT: ;;#ASMSTART7649; GFX942-NEXT: ; use s[8:10]7650; GFX942-NEXT: ;;#ASMEND7651; GFX942-NEXT: s_setpc_b64 s[30:31]7652 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()7653 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()7654 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 poison, i32 poison>7655 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)7656 ret void7657}7658 7659define void @s_shuffle_v3p3_v4p3__6_u_u() {7660; GFX900-LABEL: s_shuffle_v3p3_v4p3__6_u_u:7661; GFX900: ; %bb.0:7662; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7663; GFX900-NEXT: ;;#ASMSTART7664; GFX900-NEXT: ; def s[4:7]7665; GFX900-NEXT: ;;#ASMEND7666; GFX900-NEXT: s_mov_b32 s8, s67667; GFX900-NEXT: ;;#ASMSTART7668; GFX900-NEXT: ; use s[8:10]7669; GFX900-NEXT: ;;#ASMEND7670; GFX900-NEXT: s_setpc_b64 s[30:31]7671;7672; GFX90A-LABEL: s_shuffle_v3p3_v4p3__6_u_u:7673; GFX90A: ; %bb.0:7674; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7675; GFX90A-NEXT: ;;#ASMSTART7676; GFX90A-NEXT: ; def s[4:7]7677; GFX90A-NEXT: ;;#ASMEND7678; GFX90A-NEXT: s_mov_b32 s8, s67679; GFX90A-NEXT: ;;#ASMSTART7680; GFX90A-NEXT: ; use s[8:10]7681; GFX90A-NEXT: ;;#ASMEND7682; GFX90A-NEXT: s_setpc_b64 s[30:31]7683;7684; GFX942-LABEL: s_shuffle_v3p3_v4p3__6_u_u:7685; GFX942: ; %bb.0:7686; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7687; GFX942-NEXT: ;;#ASMSTART7688; GFX942-NEXT: ; def s[0:3]7689; GFX942-NEXT: ;;#ASMEND7690; GFX942-NEXT: s_mov_b32 s8, s27691; GFX942-NEXT: ;;#ASMSTART7692; GFX942-NEXT: ; use s[8:10]7693; GFX942-NEXT: ;;#ASMEND7694; GFX942-NEXT: s_setpc_b64 s[30:31]7695 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()7696 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()7697 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 poison, i32 poison>7698 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)7699 ret void7700}7701 7702define void @s_shuffle_v3p3_v4p3__7_u_u() {7703; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_u_u:7704; GFX900: ; %bb.0:7705; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7706; GFX900-NEXT: ;;#ASMSTART7707; GFX900-NEXT: ; def s[4:7]7708; GFX900-NEXT: ;;#ASMEND7709; GFX900-NEXT: s_mov_b32 s8, s77710; GFX900-NEXT: ;;#ASMSTART7711; GFX900-NEXT: ; use s[8:10]7712; GFX900-NEXT: ;;#ASMEND7713; GFX900-NEXT: s_setpc_b64 s[30:31]7714;7715; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_u_u:7716; GFX90A: ; %bb.0:7717; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7718; GFX90A-NEXT: ;;#ASMSTART7719; GFX90A-NEXT: ; def s[4:7]7720; GFX90A-NEXT: ;;#ASMEND7721; GFX90A-NEXT: s_mov_b32 s8, s77722; GFX90A-NEXT: ;;#ASMSTART7723; GFX90A-NEXT: ; use s[8:10]7724; GFX90A-NEXT: ;;#ASMEND7725; GFX90A-NEXT: s_setpc_b64 s[30:31]7726;7727; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_u_u:7728; GFX942: ; %bb.0:7729; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7730; GFX942-NEXT: ;;#ASMSTART7731; GFX942-NEXT: ; def s[0:3]7732; GFX942-NEXT: ;;#ASMEND7733; GFX942-NEXT: s_mov_b32 s8, s37734; GFX942-NEXT: ;;#ASMSTART7735; GFX942-NEXT: ; use s[8:10]7736; GFX942-NEXT: ;;#ASMEND7737; GFX942-NEXT: s_setpc_b64 s[30:31]7738 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()7739 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()7740 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 poison>7741 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)7742 ret void7743}7744 7745define void @s_shuffle_v3p3_v4p3__7_0_u() {7746; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_0_u:7747; GFX900: ; %bb.0:7748; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7749; GFX900-NEXT: ;;#ASMSTART7750; GFX900-NEXT: ; def s[8:11]7751; GFX900-NEXT: ;;#ASMEND7752; GFX900-NEXT: ;;#ASMSTART7753; GFX900-NEXT: ; def s[4:7]7754; GFX900-NEXT: ;;#ASMEND7755; GFX900-NEXT: s_mov_b32 s8, s117756; GFX900-NEXT: s_mov_b32 s9, s47757; GFX900-NEXT: ;;#ASMSTART7758; GFX900-NEXT: ; use s[8:10]7759; GFX900-NEXT: ;;#ASMEND7760; GFX900-NEXT: s_setpc_b64 s[30:31]7761;7762; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_0_u:7763; GFX90A: ; %bb.0:7764; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7765; GFX90A-NEXT: ;;#ASMSTART7766; GFX90A-NEXT: ; def s[8:11]7767; GFX90A-NEXT: ;;#ASMEND7768; GFX90A-NEXT: ;;#ASMSTART7769; GFX90A-NEXT: ; def s[4:7]7770; GFX90A-NEXT: ;;#ASMEND7771; GFX90A-NEXT: s_mov_b32 s8, s117772; GFX90A-NEXT: s_mov_b32 s9, s47773; GFX90A-NEXT: ;;#ASMSTART7774; GFX90A-NEXT: ; use s[8:10]7775; GFX90A-NEXT: ;;#ASMEND7776; GFX90A-NEXT: s_setpc_b64 s[30:31]7777;7778; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_0_u:7779; GFX942: ; %bb.0:7780; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7781; GFX942-NEXT: ;;#ASMSTART7782; GFX942-NEXT: ; def s[0:3]7783; GFX942-NEXT: ;;#ASMEND7784; GFX942-NEXT: ;;#ASMSTART7785; GFX942-NEXT: ; def s[4:7]7786; GFX942-NEXT: ;;#ASMEND7787; GFX942-NEXT: s_mov_b32 s8, s77788; GFX942-NEXT: s_mov_b32 s9, s07789; GFX942-NEXT: ;;#ASMSTART7790; GFX942-NEXT: ; use s[8:10]7791; GFX942-NEXT: ;;#ASMEND7792; GFX942-NEXT: s_setpc_b64 s[30:31]7793 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()7794 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()7795 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 poison>7796 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)7797 ret void7798}7799 7800define void @s_shuffle_v3p3_v4p3__7_1_u() {7801; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_1_u:7802; GFX900: ; %bb.0:7803; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7804; GFX900-NEXT: ;;#ASMSTART7805; GFX900-NEXT: ; def s[8:11]7806; GFX900-NEXT: ;;#ASMEND7807; GFX900-NEXT: ;;#ASMSTART7808; GFX900-NEXT: ; def s[4:7]7809; GFX900-NEXT: ;;#ASMEND7810; GFX900-NEXT: s_mov_b32 s8, s77811; GFX900-NEXT: ;;#ASMSTART7812; GFX900-NEXT: ; use s[8:10]7813; GFX900-NEXT: ;;#ASMEND7814; GFX900-NEXT: s_setpc_b64 s[30:31]7815;7816; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_1_u:7817; GFX90A: ; %bb.0:7818; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7819; GFX90A-NEXT: ;;#ASMSTART7820; GFX90A-NEXT: ; def s[8:11]7821; GFX90A-NEXT: ;;#ASMEND7822; GFX90A-NEXT: ;;#ASMSTART7823; GFX90A-NEXT: ; def s[4:7]7824; GFX90A-NEXT: ;;#ASMEND7825; GFX90A-NEXT: s_mov_b32 s8, s77826; GFX90A-NEXT: ;;#ASMSTART7827; GFX90A-NEXT: ; use s[8:10]7828; GFX90A-NEXT: ;;#ASMEND7829; GFX90A-NEXT: s_setpc_b64 s[30:31]7830;7831; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_1_u:7832; GFX942: ; %bb.0:7833; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7834; GFX942-NEXT: ;;#ASMSTART7835; GFX942-NEXT: ; def s[8:11]7836; GFX942-NEXT: ;;#ASMEND7837; GFX942-NEXT: ;;#ASMSTART7838; GFX942-NEXT: ; def s[0:3]7839; GFX942-NEXT: ;;#ASMEND7840; GFX942-NEXT: s_mov_b32 s8, s37841; GFX942-NEXT: ;;#ASMSTART7842; GFX942-NEXT: ; use s[8:10]7843; GFX942-NEXT: ;;#ASMEND7844; GFX942-NEXT: s_setpc_b64 s[30:31]7845 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()7846 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()7847 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 poison>7848 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)7849 ret void7850}7851 7852define void @s_shuffle_v3p3_v4p3__7_2_u() {7853; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_2_u:7854; GFX900: ; %bb.0:7855; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7856; GFX900-NEXT: ;;#ASMSTART7857; GFX900-NEXT: ; def s[8:11]7858; GFX900-NEXT: ;;#ASMEND7859; GFX900-NEXT: ;;#ASMSTART7860; GFX900-NEXT: ; def s[4:7]7861; GFX900-NEXT: ;;#ASMEND7862; GFX900-NEXT: s_mov_b32 s8, s117863; GFX900-NEXT: s_mov_b32 s9, s67864; GFX900-NEXT: ;;#ASMSTART7865; GFX900-NEXT: ; use s[8:10]7866; GFX900-NEXT: ;;#ASMEND7867; GFX900-NEXT: s_setpc_b64 s[30:31]7868;7869; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_2_u:7870; GFX90A: ; %bb.0:7871; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7872; GFX90A-NEXT: ;;#ASMSTART7873; GFX90A-NEXT: ; def s[8:11]7874; GFX90A-NEXT: ;;#ASMEND7875; GFX90A-NEXT: ;;#ASMSTART7876; GFX90A-NEXT: ; def s[4:7]7877; GFX90A-NEXT: ;;#ASMEND7878; GFX90A-NEXT: s_mov_b32 s8, s117879; GFX90A-NEXT: s_mov_b32 s9, s67880; GFX90A-NEXT: ;;#ASMSTART7881; GFX90A-NEXT: ; use s[8:10]7882; GFX90A-NEXT: ;;#ASMEND7883; GFX90A-NEXT: s_setpc_b64 s[30:31]7884;7885; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_2_u:7886; GFX942: ; %bb.0:7887; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7888; GFX942-NEXT: ;;#ASMSTART7889; GFX942-NEXT: ; def s[0:3]7890; GFX942-NEXT: ;;#ASMEND7891; GFX942-NEXT: ;;#ASMSTART7892; GFX942-NEXT: ; def s[4:7]7893; GFX942-NEXT: ;;#ASMEND7894; GFX942-NEXT: s_mov_b32 s8, s77895; GFX942-NEXT: s_mov_b32 s9, s27896; GFX942-NEXT: ;;#ASMSTART7897; GFX942-NEXT: ; use s[8:10]7898; GFX942-NEXT: ;;#ASMEND7899; GFX942-NEXT: s_setpc_b64 s[30:31]7900 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()7901 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()7902 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 poison>7903 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)7904 ret void7905}7906 7907define void @s_shuffle_v3p3_v4p3__7_3_u() {7908; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_3_u:7909; GFX900: ; %bb.0:7910; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7911; GFX900-NEXT: ;;#ASMSTART7912; GFX900-NEXT: ; def s[8:11]7913; GFX900-NEXT: ;;#ASMEND7914; GFX900-NEXT: ;;#ASMSTART7915; GFX900-NEXT: ; def s[4:7]7916; GFX900-NEXT: ;;#ASMEND7917; GFX900-NEXT: s_mov_b32 s8, s117918; GFX900-NEXT: s_mov_b32 s9, s77919; GFX900-NEXT: ;;#ASMSTART7920; GFX900-NEXT: ; use s[8:10]7921; GFX900-NEXT: ;;#ASMEND7922; GFX900-NEXT: s_setpc_b64 s[30:31]7923;7924; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_3_u:7925; GFX90A: ; %bb.0:7926; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7927; GFX90A-NEXT: ;;#ASMSTART7928; GFX90A-NEXT: ; def s[8:11]7929; GFX90A-NEXT: ;;#ASMEND7930; GFX90A-NEXT: ;;#ASMSTART7931; GFX90A-NEXT: ; def s[4:7]7932; GFX90A-NEXT: ;;#ASMEND7933; GFX90A-NEXT: s_mov_b32 s8, s117934; GFX90A-NEXT: s_mov_b32 s9, s77935; GFX90A-NEXT: ;;#ASMSTART7936; GFX90A-NEXT: ; use s[8:10]7937; GFX90A-NEXT: ;;#ASMEND7938; GFX90A-NEXT: s_setpc_b64 s[30:31]7939;7940; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_3_u:7941; GFX942: ; %bb.0:7942; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7943; GFX942-NEXT: ;;#ASMSTART7944; GFX942-NEXT: ; def s[0:3]7945; GFX942-NEXT: ;;#ASMEND7946; GFX942-NEXT: ;;#ASMSTART7947; GFX942-NEXT: ; def s[4:7]7948; GFX942-NEXT: ;;#ASMEND7949; GFX942-NEXT: s_mov_b32 s8, s77950; GFX942-NEXT: s_mov_b32 s9, s37951; GFX942-NEXT: ;;#ASMSTART7952; GFX942-NEXT: ; use s[8:10]7953; GFX942-NEXT: ;;#ASMEND7954; GFX942-NEXT: s_setpc_b64 s[30:31]7955 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()7956 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()7957 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 poison>7958 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)7959 ret void7960}7961 7962define void @s_shuffle_v3p3_v4p3__7_4_u() {7963; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_4_u:7964; GFX900: ; %bb.0:7965; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7966; GFX900-NEXT: ;;#ASMSTART7967; GFX900-NEXT: ; def s[4:7]7968; GFX900-NEXT: ;;#ASMEND7969; GFX900-NEXT: s_mov_b32 s8, s77970; GFX900-NEXT: s_mov_b32 s9, s47971; GFX900-NEXT: ;;#ASMSTART7972; GFX900-NEXT: ; use s[8:10]7973; GFX900-NEXT: ;;#ASMEND7974; GFX900-NEXT: s_setpc_b64 s[30:31]7975;7976; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_4_u:7977; GFX90A: ; %bb.0:7978; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7979; GFX90A-NEXT: ;;#ASMSTART7980; GFX90A-NEXT: ; def s[4:7]7981; GFX90A-NEXT: ;;#ASMEND7982; GFX90A-NEXT: s_mov_b32 s8, s77983; GFX90A-NEXT: s_mov_b32 s9, s47984; GFX90A-NEXT: ;;#ASMSTART7985; GFX90A-NEXT: ; use s[8:10]7986; GFX90A-NEXT: ;;#ASMEND7987; GFX90A-NEXT: s_setpc_b64 s[30:31]7988;7989; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_4_u:7990; GFX942: ; %bb.0:7991; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7992; GFX942-NEXT: ;;#ASMSTART7993; GFX942-NEXT: ; def s[0:3]7994; GFX942-NEXT: ;;#ASMEND7995; GFX942-NEXT: s_mov_b32 s8, s37996; GFX942-NEXT: s_mov_b32 s9, s07997; GFX942-NEXT: ;;#ASMSTART7998; GFX942-NEXT: ; use s[8:10]7999; GFX942-NEXT: ;;#ASMEND8000; GFX942-NEXT: s_setpc_b64 s[30:31]8001 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8002 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8003 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 poison>8004 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)8005 ret void8006}8007 8008define void @s_shuffle_v3p3_v4p3__7_5_u() {8009; GFX9-LABEL: s_shuffle_v3p3_v4p3__7_5_u:8010; GFX9: ; %bb.0:8011; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8012; GFX9-NEXT: ;;#ASMSTART8013; GFX9-NEXT: ; def s[8:11]8014; GFX9-NEXT: ;;#ASMEND8015; GFX9-NEXT: s_mov_b32 s8, s118016; GFX9-NEXT: ;;#ASMSTART8017; GFX9-NEXT: ; use s[8:10]8018; GFX9-NEXT: ;;#ASMEND8019; GFX9-NEXT: s_setpc_b64 s[30:31]8020 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8021 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8022 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 poison>8023 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)8024 ret void8025}8026 8027define void @s_shuffle_v3p3_v4p3__7_6_u() {8028; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_6_u:8029; GFX900: ; %bb.0:8030; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8031; GFX900-NEXT: ;;#ASMSTART8032; GFX900-NEXT: ; def s[4:7]8033; GFX900-NEXT: ;;#ASMEND8034; GFX900-NEXT: s_mov_b32 s8, s78035; GFX900-NEXT: s_mov_b32 s9, s68036; GFX900-NEXT: ;;#ASMSTART8037; GFX900-NEXT: ; use s[8:10]8038; GFX900-NEXT: ;;#ASMEND8039; GFX900-NEXT: s_setpc_b64 s[30:31]8040;8041; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_6_u:8042; GFX90A: ; %bb.0:8043; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8044; GFX90A-NEXT: ;;#ASMSTART8045; GFX90A-NEXT: ; def s[4:7]8046; GFX90A-NEXT: ;;#ASMEND8047; GFX90A-NEXT: s_mov_b32 s8, s78048; GFX90A-NEXT: s_mov_b32 s9, s68049; GFX90A-NEXT: ;;#ASMSTART8050; GFX90A-NEXT: ; use s[8:10]8051; GFX90A-NEXT: ;;#ASMEND8052; GFX90A-NEXT: s_setpc_b64 s[30:31]8053;8054; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_6_u:8055; GFX942: ; %bb.0:8056; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8057; GFX942-NEXT: ;;#ASMSTART8058; GFX942-NEXT: ; def s[0:3]8059; GFX942-NEXT: ;;#ASMEND8060; GFX942-NEXT: s_mov_b32 s8, s38061; GFX942-NEXT: s_mov_b32 s9, s28062; GFX942-NEXT: ;;#ASMSTART8063; GFX942-NEXT: ; use s[8:10]8064; GFX942-NEXT: ;;#ASMEND8065; GFX942-NEXT: s_setpc_b64 s[30:31]8066 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8067 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8068 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 poison>8069 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)8070 ret void8071}8072 8073define void @s_shuffle_v3p3_v4p3__7_7_u() {8074; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_7_u:8075; GFX900: ; %bb.0:8076; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8077; GFX900-NEXT: ;;#ASMSTART8078; GFX900-NEXT: ; def s[4:7]8079; GFX900-NEXT: ;;#ASMEND8080; GFX900-NEXT: s_mov_b32 s8, s78081; GFX900-NEXT: s_mov_b32 s9, s78082; GFX900-NEXT: ;;#ASMSTART8083; GFX900-NEXT: ; use s[8:10]8084; GFX900-NEXT: ;;#ASMEND8085; GFX900-NEXT: s_setpc_b64 s[30:31]8086;8087; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_7_u:8088; GFX90A: ; %bb.0:8089; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8090; GFX90A-NEXT: ;;#ASMSTART8091; GFX90A-NEXT: ; def s[4:7]8092; GFX90A-NEXT: ;;#ASMEND8093; GFX90A-NEXT: s_mov_b32 s8, s78094; GFX90A-NEXT: s_mov_b32 s9, s78095; GFX90A-NEXT: ;;#ASMSTART8096; GFX90A-NEXT: ; use s[8:10]8097; GFX90A-NEXT: ;;#ASMEND8098; GFX90A-NEXT: s_setpc_b64 s[30:31]8099;8100; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_7_u:8101; GFX942: ; %bb.0:8102; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8103; GFX942-NEXT: ;;#ASMSTART8104; GFX942-NEXT: ; def s[0:3]8105; GFX942-NEXT: ;;#ASMEND8106; GFX942-NEXT: s_mov_b32 s8, s38107; GFX942-NEXT: s_mov_b32 s9, s38108; GFX942-NEXT: ;;#ASMSTART8109; GFX942-NEXT: ; use s[8:10]8110; GFX942-NEXT: ;;#ASMEND8111; GFX942-NEXT: s_setpc_b64 s[30:31]8112 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8113 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8114 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 poison>8115 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)8116 ret void8117}8118 8119define void @s_shuffle_v3p3_v4p3__7_7_0() {8120; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_7_0:8121; GFX900: ; %bb.0:8122; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8123; GFX900-NEXT: ;;#ASMSTART8124; GFX900-NEXT: ; def s[8:11]8125; GFX900-NEXT: ;;#ASMEND8126; GFX900-NEXT: ;;#ASMSTART8127; GFX900-NEXT: ; def s[4:7]8128; GFX900-NEXT: ;;#ASMEND8129; GFX900-NEXT: s_mov_b32 s8, s118130; GFX900-NEXT: s_mov_b32 s9, s118131; GFX900-NEXT: s_mov_b32 s10, s48132; GFX900-NEXT: ;;#ASMSTART8133; GFX900-NEXT: ; use s[8:10]8134; GFX900-NEXT: ;;#ASMEND8135; GFX900-NEXT: s_setpc_b64 s[30:31]8136;8137; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_7_0:8138; GFX90A: ; %bb.0:8139; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8140; GFX90A-NEXT: ;;#ASMSTART8141; GFX90A-NEXT: ; def s[8:11]8142; GFX90A-NEXT: ;;#ASMEND8143; GFX90A-NEXT: ;;#ASMSTART8144; GFX90A-NEXT: ; def s[4:7]8145; GFX90A-NEXT: ;;#ASMEND8146; GFX90A-NEXT: s_mov_b32 s8, s118147; GFX90A-NEXT: s_mov_b32 s9, s118148; GFX90A-NEXT: s_mov_b32 s10, s48149; GFX90A-NEXT: ;;#ASMSTART8150; GFX90A-NEXT: ; use s[8:10]8151; GFX90A-NEXT: ;;#ASMEND8152; GFX90A-NEXT: s_setpc_b64 s[30:31]8153;8154; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_7_0:8155; GFX942: ; %bb.0:8156; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8157; GFX942-NEXT: ;;#ASMSTART8158; GFX942-NEXT: ; def s[0:3]8159; GFX942-NEXT: ;;#ASMEND8160; GFX942-NEXT: ;;#ASMSTART8161; GFX942-NEXT: ; def s[4:7]8162; GFX942-NEXT: ;;#ASMEND8163; GFX942-NEXT: s_mov_b32 s8, s78164; GFX942-NEXT: s_mov_b32 s9, s78165; GFX942-NEXT: s_mov_b32 s10, s08166; GFX942-NEXT: ;;#ASMSTART8167; GFX942-NEXT: ; use s[8:10]8168; GFX942-NEXT: ;;#ASMEND8169; GFX942-NEXT: s_setpc_b64 s[30:31]8170 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8171 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8172 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 0>8173 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)8174 ret void8175}8176 8177define void @s_shuffle_v3p3_v4p3__7_7_1() {8178; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_7_1:8179; GFX900: ; %bb.0:8180; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8181; GFX900-NEXT: ;;#ASMSTART8182; GFX900-NEXT: ; def s[8:11]8183; GFX900-NEXT: ;;#ASMEND8184; GFX900-NEXT: ;;#ASMSTART8185; GFX900-NEXT: ; def s[4:7]8186; GFX900-NEXT: ;;#ASMEND8187; GFX900-NEXT: s_mov_b32 s8, s118188; GFX900-NEXT: s_mov_b32 s9, s118189; GFX900-NEXT: s_mov_b32 s10, s58190; GFX900-NEXT: ;;#ASMSTART8191; GFX900-NEXT: ; use s[8:10]8192; GFX900-NEXT: ;;#ASMEND8193; GFX900-NEXT: s_setpc_b64 s[30:31]8194;8195; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_7_1:8196; GFX90A: ; %bb.0:8197; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8198; GFX90A-NEXT: ;;#ASMSTART8199; GFX90A-NEXT: ; def s[8:11]8200; GFX90A-NEXT: ;;#ASMEND8201; GFX90A-NEXT: ;;#ASMSTART8202; GFX90A-NEXT: ; def s[4:7]8203; GFX90A-NEXT: ;;#ASMEND8204; GFX90A-NEXT: s_mov_b32 s8, s118205; GFX90A-NEXT: s_mov_b32 s9, s118206; GFX90A-NEXT: s_mov_b32 s10, s58207; GFX90A-NEXT: ;;#ASMSTART8208; GFX90A-NEXT: ; use s[8:10]8209; GFX90A-NEXT: ;;#ASMEND8210; GFX90A-NEXT: s_setpc_b64 s[30:31]8211;8212; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_7_1:8213; GFX942: ; %bb.0:8214; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8215; GFX942-NEXT: ;;#ASMSTART8216; GFX942-NEXT: ; def s[0:3]8217; GFX942-NEXT: ;;#ASMEND8218; GFX942-NEXT: ;;#ASMSTART8219; GFX942-NEXT: ; def s[4:7]8220; GFX942-NEXT: ;;#ASMEND8221; GFX942-NEXT: s_mov_b32 s8, s78222; GFX942-NEXT: s_mov_b32 s9, s78223; GFX942-NEXT: s_mov_b32 s10, s18224; GFX942-NEXT: ;;#ASMSTART8225; GFX942-NEXT: ; use s[8:10]8226; GFX942-NEXT: ;;#ASMEND8227; GFX942-NEXT: s_setpc_b64 s[30:31]8228 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8229 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8230 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 1>8231 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)8232 ret void8233}8234 8235define void @s_shuffle_v3p3_v4p3__7_7_2() {8236; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_7_2:8237; GFX900: ; %bb.0:8238; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8239; GFX900-NEXT: ;;#ASMSTART8240; GFX900-NEXT: ; def s[8:11]8241; GFX900-NEXT: ;;#ASMEND8242; GFX900-NEXT: ;;#ASMSTART8243; GFX900-NEXT: ; def s[4:7]8244; GFX900-NEXT: ;;#ASMEND8245; GFX900-NEXT: s_mov_b32 s8, s78246; GFX900-NEXT: s_mov_b32 s9, s78247; GFX900-NEXT: ;;#ASMSTART8248; GFX900-NEXT: ; use s[8:10]8249; GFX900-NEXT: ;;#ASMEND8250; GFX900-NEXT: s_setpc_b64 s[30:31]8251;8252; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_7_2:8253; GFX90A: ; %bb.0:8254; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8255; GFX90A-NEXT: ;;#ASMSTART8256; GFX90A-NEXT: ; def s[8:11]8257; GFX90A-NEXT: ;;#ASMEND8258; GFX90A-NEXT: ;;#ASMSTART8259; GFX90A-NEXT: ; def s[4:7]8260; GFX90A-NEXT: ;;#ASMEND8261; GFX90A-NEXT: s_mov_b32 s8, s78262; GFX90A-NEXT: s_mov_b32 s9, s78263; GFX90A-NEXT: ;;#ASMSTART8264; GFX90A-NEXT: ; use s[8:10]8265; GFX90A-NEXT: ;;#ASMEND8266; GFX90A-NEXT: s_setpc_b64 s[30:31]8267;8268; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_7_2:8269; GFX942: ; %bb.0:8270; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8271; GFX942-NEXT: ;;#ASMSTART8272; GFX942-NEXT: ; def s[8:11]8273; GFX942-NEXT: ;;#ASMEND8274; GFX942-NEXT: ;;#ASMSTART8275; GFX942-NEXT: ; def s[0:3]8276; GFX942-NEXT: ;;#ASMEND8277; GFX942-NEXT: s_mov_b32 s8, s38278; GFX942-NEXT: s_mov_b32 s9, s38279; GFX942-NEXT: ;;#ASMSTART8280; GFX942-NEXT: ; use s[8:10]8281; GFX942-NEXT: ;;#ASMEND8282; GFX942-NEXT: s_setpc_b64 s[30:31]8283 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8284 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8285 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 2>8286 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)8287 ret void8288}8289 8290define void @s_shuffle_v3p3_v4p3__7_7_3() {8291; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_7_3:8292; GFX900: ; %bb.0:8293; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8294; GFX900-NEXT: ;;#ASMSTART8295; GFX900-NEXT: ; def s[8:11]8296; GFX900-NEXT: ;;#ASMEND8297; GFX900-NEXT: ;;#ASMSTART8298; GFX900-NEXT: ; def s[4:7]8299; GFX900-NEXT: ;;#ASMEND8300; GFX900-NEXT: s_mov_b32 s8, s118301; GFX900-NEXT: s_mov_b32 s9, s118302; GFX900-NEXT: s_mov_b32 s10, s78303; GFX900-NEXT: ;;#ASMSTART8304; GFX900-NEXT: ; use s[8:10]8305; GFX900-NEXT: ;;#ASMEND8306; GFX900-NEXT: s_setpc_b64 s[30:31]8307;8308; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_7_3:8309; GFX90A: ; %bb.0:8310; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8311; GFX90A-NEXT: ;;#ASMSTART8312; GFX90A-NEXT: ; def s[8:11]8313; GFX90A-NEXT: ;;#ASMEND8314; GFX90A-NEXT: ;;#ASMSTART8315; GFX90A-NEXT: ; def s[4:7]8316; GFX90A-NEXT: ;;#ASMEND8317; GFX90A-NEXT: s_mov_b32 s8, s118318; GFX90A-NEXT: s_mov_b32 s9, s118319; GFX90A-NEXT: s_mov_b32 s10, s78320; GFX90A-NEXT: ;;#ASMSTART8321; GFX90A-NEXT: ; use s[8:10]8322; GFX90A-NEXT: ;;#ASMEND8323; GFX90A-NEXT: s_setpc_b64 s[30:31]8324;8325; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_7_3:8326; GFX942: ; %bb.0:8327; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8328; GFX942-NEXT: ;;#ASMSTART8329; GFX942-NEXT: ; def s[0:3]8330; GFX942-NEXT: ;;#ASMEND8331; GFX942-NEXT: ;;#ASMSTART8332; GFX942-NEXT: ; def s[4:7]8333; GFX942-NEXT: ;;#ASMEND8334; GFX942-NEXT: s_mov_b32 s8, s78335; GFX942-NEXT: s_mov_b32 s9, s78336; GFX942-NEXT: s_mov_b32 s10, s38337; GFX942-NEXT: ;;#ASMSTART8338; GFX942-NEXT: ; use s[8:10]8339; GFX942-NEXT: ;;#ASMEND8340; GFX942-NEXT: s_setpc_b64 s[30:31]8341 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8342 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8343 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 3>8344 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)8345 ret void8346}8347 8348define void @s_shuffle_v3p3_v4p3__7_7_4() {8349; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_7_4:8350; GFX900: ; %bb.0:8351; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8352; GFX900-NEXT: ;;#ASMSTART8353; GFX900-NEXT: ; def s[4:7]8354; GFX900-NEXT: ;;#ASMEND8355; GFX900-NEXT: s_mov_b32 s8, s78356; GFX900-NEXT: s_mov_b32 s9, s78357; GFX900-NEXT: s_mov_b32 s10, s48358; GFX900-NEXT: ;;#ASMSTART8359; GFX900-NEXT: ; use s[8:10]8360; GFX900-NEXT: ;;#ASMEND8361; GFX900-NEXT: s_setpc_b64 s[30:31]8362;8363; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_7_4:8364; GFX90A: ; %bb.0:8365; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8366; GFX90A-NEXT: ;;#ASMSTART8367; GFX90A-NEXT: ; def s[4:7]8368; GFX90A-NEXT: ;;#ASMEND8369; GFX90A-NEXT: s_mov_b32 s8, s78370; GFX90A-NEXT: s_mov_b32 s9, s78371; GFX90A-NEXT: s_mov_b32 s10, s48372; GFX90A-NEXT: ;;#ASMSTART8373; GFX90A-NEXT: ; use s[8:10]8374; GFX90A-NEXT: ;;#ASMEND8375; GFX90A-NEXT: s_setpc_b64 s[30:31]8376;8377; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_7_4:8378; GFX942: ; %bb.0:8379; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8380; GFX942-NEXT: ;;#ASMSTART8381; GFX942-NEXT: ; def s[0:3]8382; GFX942-NEXT: ;;#ASMEND8383; GFX942-NEXT: s_mov_b32 s8, s38384; GFX942-NEXT: s_mov_b32 s9, s38385; GFX942-NEXT: s_mov_b32 s10, s08386; GFX942-NEXT: ;;#ASMSTART8387; GFX942-NEXT: ; use s[8:10]8388; GFX942-NEXT: ;;#ASMEND8389; GFX942-NEXT: s_setpc_b64 s[30:31]8390 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8391 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8392 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 4>8393 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)8394 ret void8395}8396 8397define void @s_shuffle_v3p3_v4p3__7_7_5() {8398; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_7_5:8399; GFX900: ; %bb.0:8400; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8401; GFX900-NEXT: ;;#ASMSTART8402; GFX900-NEXT: ; def s[4:7]8403; GFX900-NEXT: ;;#ASMEND8404; GFX900-NEXT: s_mov_b32 s8, s78405; GFX900-NEXT: s_mov_b32 s9, s78406; GFX900-NEXT: s_mov_b32 s10, s58407; GFX900-NEXT: ;;#ASMSTART8408; GFX900-NEXT: ; use s[8:10]8409; GFX900-NEXT: ;;#ASMEND8410; GFX900-NEXT: s_setpc_b64 s[30:31]8411;8412; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_7_5:8413; GFX90A: ; %bb.0:8414; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8415; GFX90A-NEXT: ;;#ASMSTART8416; GFX90A-NEXT: ; def s[4:7]8417; GFX90A-NEXT: ;;#ASMEND8418; GFX90A-NEXT: s_mov_b32 s8, s78419; GFX90A-NEXT: s_mov_b32 s9, s78420; GFX90A-NEXT: s_mov_b32 s10, s58421; GFX90A-NEXT: ;;#ASMSTART8422; GFX90A-NEXT: ; use s[8:10]8423; GFX90A-NEXT: ;;#ASMEND8424; GFX90A-NEXT: s_setpc_b64 s[30:31]8425;8426; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_7_5:8427; GFX942: ; %bb.0:8428; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8429; GFX942-NEXT: ;;#ASMSTART8430; GFX942-NEXT: ; def s[0:3]8431; GFX942-NEXT: ;;#ASMEND8432; GFX942-NEXT: s_mov_b32 s8, s38433; GFX942-NEXT: s_mov_b32 s9, s38434; GFX942-NEXT: s_mov_b32 s10, s18435; GFX942-NEXT: ;;#ASMSTART8436; GFX942-NEXT: ; use s[8:10]8437; GFX942-NEXT: ;;#ASMEND8438; GFX942-NEXT: s_setpc_b64 s[30:31]8439 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8440 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8441 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 5>8442 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)8443 ret void8444}8445 8446define void @s_shuffle_v3p3_v4p3__7_7_6() {8447; GFX9-LABEL: s_shuffle_v3p3_v4p3__7_7_6:8448; GFX9: ; %bb.0:8449; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8450; GFX9-NEXT: ;;#ASMSTART8451; GFX9-NEXT: ; def s[8:11]8452; GFX9-NEXT: ;;#ASMEND8453; GFX9-NEXT: s_mov_b32 s8, s118454; GFX9-NEXT: s_mov_b32 s9, s118455; GFX9-NEXT: ;;#ASMSTART8456; GFX9-NEXT: ; use s[8:10]8457; GFX9-NEXT: ;;#ASMEND8458; GFX9-NEXT: s_setpc_b64 s[30:31]8459 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8460 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8461 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 6>8462 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)8463 ret void8464}8465 8466define void @s_shuffle_v3p3_v4p3__7_7_7() {8467; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_7_7:8468; GFX900: ; %bb.0:8469; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8470; GFX900-NEXT: ;;#ASMSTART8471; GFX900-NEXT: ; def s[4:7]8472; GFX900-NEXT: ;;#ASMEND8473; GFX900-NEXT: s_mov_b32 s8, s78474; GFX900-NEXT: s_mov_b32 s9, s78475; GFX900-NEXT: s_mov_b32 s10, s78476; GFX900-NEXT: ;;#ASMSTART8477; GFX900-NEXT: ; use s[8:10]8478; GFX900-NEXT: ;;#ASMEND8479; GFX900-NEXT: s_setpc_b64 s[30:31]8480;8481; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_7_7:8482; GFX90A: ; %bb.0:8483; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8484; GFX90A-NEXT: ;;#ASMSTART8485; GFX90A-NEXT: ; def s[4:7]8486; GFX90A-NEXT: ;;#ASMEND8487; GFX90A-NEXT: s_mov_b32 s8, s78488; GFX90A-NEXT: s_mov_b32 s9, s78489; GFX90A-NEXT: s_mov_b32 s10, s78490; GFX90A-NEXT: ;;#ASMSTART8491; GFX90A-NEXT: ; use s[8:10]8492; GFX90A-NEXT: ;;#ASMEND8493; GFX90A-NEXT: s_setpc_b64 s[30:31]8494;8495; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_7_7:8496; GFX942: ; %bb.0:8497; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8498; GFX942-NEXT: ;;#ASMSTART8499; GFX942-NEXT: ; def s[0:3]8500; GFX942-NEXT: ;;#ASMEND8501; GFX942-NEXT: s_mov_b32 s8, s38502; GFX942-NEXT: s_mov_b32 s9, s38503; GFX942-NEXT: s_mov_b32 s10, s38504; GFX942-NEXT: ;;#ASMSTART8505; GFX942-NEXT: ; use s[8:10]8506; GFX942-NEXT: ;;#ASMEND8507; GFX942-NEXT: s_setpc_b64 s[30:31]8508 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8509 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8510 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 7, i32 7>8511 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)8512 ret void8513}8514 8515define void @s_shuffle_v3p3_v4p3__u_0_0() {8516; GFX900-LABEL: s_shuffle_v3p3_v4p3__u_0_0:8517; GFX900: ; %bb.0:8518; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8519; GFX900-NEXT: ;;#ASMSTART8520; GFX900-NEXT: ; def s[4:7]8521; GFX900-NEXT: ;;#ASMEND8522; GFX900-NEXT: s_mov_b32 s9, s48523; GFX900-NEXT: s_mov_b32 s10, s48524; GFX900-NEXT: ;;#ASMSTART8525; GFX900-NEXT: ; use s[8:10]8526; GFX900-NEXT: ;;#ASMEND8527; GFX900-NEXT: s_setpc_b64 s[30:31]8528;8529; GFX90A-LABEL: s_shuffle_v3p3_v4p3__u_0_0:8530; GFX90A: ; %bb.0:8531; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8532; GFX90A-NEXT: ;;#ASMSTART8533; GFX90A-NEXT: ; def s[4:7]8534; GFX90A-NEXT: ;;#ASMEND8535; GFX90A-NEXT: s_mov_b32 s9, s48536; GFX90A-NEXT: s_mov_b32 s10, s48537; GFX90A-NEXT: ;;#ASMSTART8538; GFX90A-NEXT: ; use s[8:10]8539; GFX90A-NEXT: ;;#ASMEND8540; GFX90A-NEXT: s_setpc_b64 s[30:31]8541;8542; GFX942-LABEL: s_shuffle_v3p3_v4p3__u_0_0:8543; GFX942: ; %bb.0:8544; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8545; GFX942-NEXT: ;;#ASMSTART8546; GFX942-NEXT: ; def s[0:3]8547; GFX942-NEXT: ;;#ASMEND8548; GFX942-NEXT: s_mov_b32 s9, s08549; GFX942-NEXT: s_mov_b32 s10, s08550; GFX942-NEXT: ;;#ASMSTART8551; GFX942-NEXT: ; use s[8:10]8552; GFX942-NEXT: ;;#ASMEND8553; GFX942-NEXT: s_setpc_b64 s[30:31]8554 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8555 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 poison, i32 0, i32 0>8556 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)8557 ret void8558}8559 8560define void @s_shuffle_v3p3_v4p3__0_0_0() {8561; GFX9-LABEL: s_shuffle_v3p3_v4p3__0_0_0:8562; GFX9: ; %bb.0:8563; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8564; GFX9-NEXT: ;;#ASMSTART8565; GFX9-NEXT: ; def s[8:11]8566; GFX9-NEXT: ;;#ASMEND8567; GFX9-NEXT: s_mov_b32 s9, s88568; GFX9-NEXT: s_mov_b32 s10, s88569; GFX9-NEXT: ;;#ASMSTART8570; GFX9-NEXT: ; use s[8:10]8571; GFX9-NEXT: ;;#ASMEND8572; GFX9-NEXT: s_setpc_b64 s[30:31]8573 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8574 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> zeroinitializer8575 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)8576 ret void8577}8578 8579define void @s_shuffle_v3p3_v4p3__1_0_0() {8580; GFX900-LABEL: s_shuffle_v3p3_v4p3__1_0_0:8581; GFX900: ; %bb.0:8582; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8583; GFX900-NEXT: ;;#ASMSTART8584; GFX900-NEXT: ; def s[4:7]8585; GFX900-NEXT: ;;#ASMEND8586; GFX900-NEXT: s_mov_b32 s8, s58587; GFX900-NEXT: s_mov_b32 s9, s48588; GFX900-NEXT: s_mov_b32 s10, s48589; GFX900-NEXT: ;;#ASMSTART8590; GFX900-NEXT: ; use s[8:10]8591; GFX900-NEXT: ;;#ASMEND8592; GFX900-NEXT: s_setpc_b64 s[30:31]8593;8594; GFX90A-LABEL: s_shuffle_v3p3_v4p3__1_0_0:8595; GFX90A: ; %bb.0:8596; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8597; GFX90A-NEXT: ;;#ASMSTART8598; GFX90A-NEXT: ; def s[4:7]8599; GFX90A-NEXT: ;;#ASMEND8600; GFX90A-NEXT: s_mov_b32 s8, s58601; GFX90A-NEXT: s_mov_b32 s9, s48602; GFX90A-NEXT: s_mov_b32 s10, s48603; GFX90A-NEXT: ;;#ASMSTART8604; GFX90A-NEXT: ; use s[8:10]8605; GFX90A-NEXT: ;;#ASMEND8606; GFX90A-NEXT: s_setpc_b64 s[30:31]8607;8608; GFX942-LABEL: s_shuffle_v3p3_v4p3__1_0_0:8609; GFX942: ; %bb.0:8610; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8611; GFX942-NEXT: ;;#ASMSTART8612; GFX942-NEXT: ; def s[0:3]8613; GFX942-NEXT: ;;#ASMEND8614; GFX942-NEXT: s_mov_b32 s8, s18615; GFX942-NEXT: s_mov_b32 s9, s08616; GFX942-NEXT: s_mov_b32 s10, s08617; GFX942-NEXT: ;;#ASMSTART8618; GFX942-NEXT: ; use s[8:10]8619; GFX942-NEXT: ;;#ASMEND8620; GFX942-NEXT: s_setpc_b64 s[30:31]8621 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8622 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 0, i32 0>8623 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)8624 ret void8625}8626 8627define void @s_shuffle_v3p3_v4p3__2_0_0() {8628; GFX900-LABEL: s_shuffle_v3p3_v4p3__2_0_0:8629; GFX900: ; %bb.0:8630; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8631; GFX900-NEXT: ;;#ASMSTART8632; GFX900-NEXT: ; def s[4:7]8633; GFX900-NEXT: ;;#ASMEND8634; GFX900-NEXT: s_mov_b32 s8, s68635; GFX900-NEXT: s_mov_b32 s9, s48636; GFX900-NEXT: s_mov_b32 s10, s48637; GFX900-NEXT: ;;#ASMSTART8638; GFX900-NEXT: ; use s[8:10]8639; GFX900-NEXT: ;;#ASMEND8640; GFX900-NEXT: s_setpc_b64 s[30:31]8641;8642; GFX90A-LABEL: s_shuffle_v3p3_v4p3__2_0_0:8643; GFX90A: ; %bb.0:8644; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8645; GFX90A-NEXT: ;;#ASMSTART8646; GFX90A-NEXT: ; def s[4:7]8647; GFX90A-NEXT: ;;#ASMEND8648; GFX90A-NEXT: s_mov_b32 s8, s68649; GFX90A-NEXT: s_mov_b32 s9, s48650; GFX90A-NEXT: s_mov_b32 s10, s48651; GFX90A-NEXT: ;;#ASMSTART8652; GFX90A-NEXT: ; use s[8:10]8653; GFX90A-NEXT: ;;#ASMEND8654; GFX90A-NEXT: s_setpc_b64 s[30:31]8655;8656; GFX942-LABEL: s_shuffle_v3p3_v4p3__2_0_0:8657; GFX942: ; %bb.0:8658; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8659; GFX942-NEXT: ;;#ASMSTART8660; GFX942-NEXT: ; def s[0:3]8661; GFX942-NEXT: ;;#ASMEND8662; GFX942-NEXT: s_mov_b32 s8, s28663; GFX942-NEXT: s_mov_b32 s9, s08664; GFX942-NEXT: s_mov_b32 s10, s08665; GFX942-NEXT: ;;#ASMSTART8666; GFX942-NEXT: ; use s[8:10]8667; GFX942-NEXT: ;;#ASMEND8668; GFX942-NEXT: s_setpc_b64 s[30:31]8669 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8670 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 0, i32 0>8671 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)8672 ret void8673}8674 8675define void @s_shuffle_v3p3_v4p3__3_0_0() {8676; GFX900-LABEL: s_shuffle_v3p3_v4p3__3_0_0:8677; GFX900: ; %bb.0:8678; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8679; GFX900-NEXT: ;;#ASMSTART8680; GFX900-NEXT: ; def s[4:7]8681; GFX900-NEXT: ;;#ASMEND8682; GFX900-NEXT: s_mov_b32 s8, s78683; GFX900-NEXT: s_mov_b32 s9, s48684; GFX900-NEXT: s_mov_b32 s10, s48685; GFX900-NEXT: ;;#ASMSTART8686; GFX900-NEXT: ; use s[8:10]8687; GFX900-NEXT: ;;#ASMEND8688; GFX900-NEXT: s_setpc_b64 s[30:31]8689;8690; GFX90A-LABEL: s_shuffle_v3p3_v4p3__3_0_0:8691; GFX90A: ; %bb.0:8692; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8693; GFX90A-NEXT: ;;#ASMSTART8694; GFX90A-NEXT: ; def s[4:7]8695; GFX90A-NEXT: ;;#ASMEND8696; GFX90A-NEXT: s_mov_b32 s8, s78697; GFX90A-NEXT: s_mov_b32 s9, s48698; GFX90A-NEXT: s_mov_b32 s10, s48699; GFX90A-NEXT: ;;#ASMSTART8700; GFX90A-NEXT: ; use s[8:10]8701; GFX90A-NEXT: ;;#ASMEND8702; GFX90A-NEXT: s_setpc_b64 s[30:31]8703;8704; GFX942-LABEL: s_shuffle_v3p3_v4p3__3_0_0:8705; GFX942: ; %bb.0:8706; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8707; GFX942-NEXT: ;;#ASMSTART8708; GFX942-NEXT: ; def s[0:3]8709; GFX942-NEXT: ;;#ASMEND8710; GFX942-NEXT: s_mov_b32 s8, s38711; GFX942-NEXT: s_mov_b32 s9, s08712; GFX942-NEXT: s_mov_b32 s10, s08713; GFX942-NEXT: ;;#ASMSTART8714; GFX942-NEXT: ; use s[8:10]8715; GFX942-NEXT: ;;#ASMEND8716; GFX942-NEXT: s_setpc_b64 s[30:31]8717 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8718 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 3, i32 0, i32 0>8719 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)8720 ret void8721}8722 8723define void @s_shuffle_v3p3_v4p3__4_0_0() {8724; GFX900-LABEL: s_shuffle_v3p3_v4p3__4_0_0:8725; GFX900: ; %bb.0:8726; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8727; GFX900-NEXT: ;;#ASMSTART8728; GFX900-NEXT: ; def s[4:7]8729; GFX900-NEXT: ;;#ASMEND8730; GFX900-NEXT: s_mov_b32 s9, s48731; GFX900-NEXT: s_mov_b32 s10, s48732; GFX900-NEXT: ;;#ASMSTART8733; GFX900-NEXT: ; use s[8:10]8734; GFX900-NEXT: ;;#ASMEND8735; GFX900-NEXT: s_setpc_b64 s[30:31]8736;8737; GFX90A-LABEL: s_shuffle_v3p3_v4p3__4_0_0:8738; GFX90A: ; %bb.0:8739; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8740; GFX90A-NEXT: ;;#ASMSTART8741; GFX90A-NEXT: ; def s[4:7]8742; GFX90A-NEXT: ;;#ASMEND8743; GFX90A-NEXT: s_mov_b32 s9, s48744; GFX90A-NEXT: s_mov_b32 s10, s48745; GFX90A-NEXT: ;;#ASMSTART8746; GFX90A-NEXT: ; use s[8:10]8747; GFX90A-NEXT: ;;#ASMEND8748; GFX90A-NEXT: s_setpc_b64 s[30:31]8749;8750; GFX942-LABEL: s_shuffle_v3p3_v4p3__4_0_0:8751; GFX942: ; %bb.0:8752; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8753; GFX942-NEXT: ;;#ASMSTART8754; GFX942-NEXT: ; def s[0:3]8755; GFX942-NEXT: ;;#ASMEND8756; GFX942-NEXT: s_mov_b32 s9, s08757; GFX942-NEXT: s_mov_b32 s10, s08758; GFX942-NEXT: ;;#ASMSTART8759; GFX942-NEXT: ; use s[8:10]8760; GFX942-NEXT: ;;#ASMEND8761; GFX942-NEXT: s_setpc_b64 s[30:31]8762 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8763 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 4, i32 0, i32 0>8764 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)8765 ret void8766}8767 8768define void @s_shuffle_v3p3_v4p3__5_0_0() {8769; GFX900-LABEL: s_shuffle_v3p3_v4p3__5_0_0:8770; GFX900: ; %bb.0:8771; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8772; GFX900-NEXT: ;;#ASMSTART8773; GFX900-NEXT: ; def s[8:11]8774; GFX900-NEXT: ;;#ASMEND8775; GFX900-NEXT: ;;#ASMSTART8776; GFX900-NEXT: ; def s[4:7]8777; GFX900-NEXT: ;;#ASMEND8778; GFX900-NEXT: s_mov_b32 s8, s98779; GFX900-NEXT: s_mov_b32 s9, s48780; GFX900-NEXT: s_mov_b32 s10, s48781; GFX900-NEXT: ;;#ASMSTART8782; GFX900-NEXT: ; use s[8:10]8783; GFX900-NEXT: ;;#ASMEND8784; GFX900-NEXT: s_setpc_b64 s[30:31]8785;8786; GFX90A-LABEL: s_shuffle_v3p3_v4p3__5_0_0:8787; GFX90A: ; %bb.0:8788; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8789; GFX90A-NEXT: ;;#ASMSTART8790; GFX90A-NEXT: ; def s[8:11]8791; GFX90A-NEXT: ;;#ASMEND8792; GFX90A-NEXT: ;;#ASMSTART8793; GFX90A-NEXT: ; def s[4:7]8794; GFX90A-NEXT: ;;#ASMEND8795; GFX90A-NEXT: s_mov_b32 s8, s98796; GFX90A-NEXT: s_mov_b32 s9, s48797; GFX90A-NEXT: s_mov_b32 s10, s48798; GFX90A-NEXT: ;;#ASMSTART8799; GFX90A-NEXT: ; use s[8:10]8800; GFX90A-NEXT: ;;#ASMEND8801; GFX90A-NEXT: s_setpc_b64 s[30:31]8802;8803; GFX942-LABEL: s_shuffle_v3p3_v4p3__5_0_0:8804; GFX942: ; %bb.0:8805; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8806; GFX942-NEXT: ;;#ASMSTART8807; GFX942-NEXT: ; def s[0:3]8808; GFX942-NEXT: ;;#ASMEND8809; GFX942-NEXT: ;;#ASMSTART8810; GFX942-NEXT: ; def s[4:7]8811; GFX942-NEXT: ;;#ASMEND8812; GFX942-NEXT: s_mov_b32 s8, s58813; GFX942-NEXT: s_mov_b32 s9, s08814; GFX942-NEXT: s_mov_b32 s10, s08815; GFX942-NEXT: ;;#ASMSTART8816; GFX942-NEXT: ; use s[8:10]8817; GFX942-NEXT: ;;#ASMEND8818; GFX942-NEXT: s_setpc_b64 s[30:31]8819 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8820 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8821 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 0, i32 0>8822 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)8823 ret void8824}8825 8826define void @s_shuffle_v3p3_v4p3__6_0_0() {8827; GFX900-LABEL: s_shuffle_v3p3_v4p3__6_0_0:8828; GFX900: ; %bb.0:8829; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8830; GFX900-NEXT: ;;#ASMSTART8831; GFX900-NEXT: ; def s[8:11]8832; GFX900-NEXT: ;;#ASMEND8833; GFX900-NEXT: ;;#ASMSTART8834; GFX900-NEXT: ; def s[4:7]8835; GFX900-NEXT: ;;#ASMEND8836; GFX900-NEXT: s_mov_b32 s8, s108837; GFX900-NEXT: s_mov_b32 s9, s48838; GFX900-NEXT: s_mov_b32 s10, s48839; GFX900-NEXT: ;;#ASMSTART8840; GFX900-NEXT: ; use s[8:10]8841; GFX900-NEXT: ;;#ASMEND8842; GFX900-NEXT: s_setpc_b64 s[30:31]8843;8844; GFX90A-LABEL: s_shuffle_v3p3_v4p3__6_0_0:8845; GFX90A: ; %bb.0:8846; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8847; GFX90A-NEXT: ;;#ASMSTART8848; GFX90A-NEXT: ; def s[8:11]8849; GFX90A-NEXT: ;;#ASMEND8850; GFX90A-NEXT: ;;#ASMSTART8851; GFX90A-NEXT: ; def s[4:7]8852; GFX90A-NEXT: ;;#ASMEND8853; GFX90A-NEXT: s_mov_b32 s8, s108854; GFX90A-NEXT: s_mov_b32 s9, s48855; GFX90A-NEXT: s_mov_b32 s10, s48856; GFX90A-NEXT: ;;#ASMSTART8857; GFX90A-NEXT: ; use s[8:10]8858; GFX90A-NEXT: ;;#ASMEND8859; GFX90A-NEXT: s_setpc_b64 s[30:31]8860;8861; GFX942-LABEL: s_shuffle_v3p3_v4p3__6_0_0:8862; GFX942: ; %bb.0:8863; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8864; GFX942-NEXT: ;;#ASMSTART8865; GFX942-NEXT: ; def s[0:3]8866; GFX942-NEXT: ;;#ASMEND8867; GFX942-NEXT: ;;#ASMSTART8868; GFX942-NEXT: ; def s[4:7]8869; GFX942-NEXT: ;;#ASMEND8870; GFX942-NEXT: s_mov_b32 s8, s68871; GFX942-NEXT: s_mov_b32 s9, s08872; GFX942-NEXT: s_mov_b32 s10, s08873; GFX942-NEXT: ;;#ASMSTART8874; GFX942-NEXT: ; use s[8:10]8875; GFX942-NEXT: ;;#ASMEND8876; GFX942-NEXT: s_setpc_b64 s[30:31]8877 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8878 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8879 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 0, i32 0>8880 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)8881 ret void8882}8883 8884define void @s_shuffle_v3p3_v4p3__7_0_0() {8885; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_0_0:8886; GFX900: ; %bb.0:8887; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8888; GFX900-NEXT: ;;#ASMSTART8889; GFX900-NEXT: ; def s[8:11]8890; GFX900-NEXT: ;;#ASMEND8891; GFX900-NEXT: ;;#ASMSTART8892; GFX900-NEXT: ; def s[4:7]8893; GFX900-NEXT: ;;#ASMEND8894; GFX900-NEXT: s_mov_b32 s8, s118895; GFX900-NEXT: s_mov_b32 s9, s48896; GFX900-NEXT: s_mov_b32 s10, s48897; GFX900-NEXT: ;;#ASMSTART8898; GFX900-NEXT: ; use s[8:10]8899; GFX900-NEXT: ;;#ASMEND8900; GFX900-NEXT: s_setpc_b64 s[30:31]8901;8902; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_0_0:8903; GFX90A: ; %bb.0:8904; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8905; GFX90A-NEXT: ;;#ASMSTART8906; GFX90A-NEXT: ; def s[8:11]8907; GFX90A-NEXT: ;;#ASMEND8908; GFX90A-NEXT: ;;#ASMSTART8909; GFX90A-NEXT: ; def s[4:7]8910; GFX90A-NEXT: ;;#ASMEND8911; GFX90A-NEXT: s_mov_b32 s8, s118912; GFX90A-NEXT: s_mov_b32 s9, s48913; GFX90A-NEXT: s_mov_b32 s10, s48914; GFX90A-NEXT: ;;#ASMSTART8915; GFX90A-NEXT: ; use s[8:10]8916; GFX90A-NEXT: ;;#ASMEND8917; GFX90A-NEXT: s_setpc_b64 s[30:31]8918;8919; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_0_0:8920; GFX942: ; %bb.0:8921; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8922; GFX942-NEXT: ;;#ASMSTART8923; GFX942-NEXT: ; def s[0:3]8924; GFX942-NEXT: ;;#ASMEND8925; GFX942-NEXT: ;;#ASMSTART8926; GFX942-NEXT: ; def s[4:7]8927; GFX942-NEXT: ;;#ASMEND8928; GFX942-NEXT: s_mov_b32 s8, s78929; GFX942-NEXT: s_mov_b32 s9, s08930; GFX942-NEXT: s_mov_b32 s10, s08931; GFX942-NEXT: ;;#ASMSTART8932; GFX942-NEXT: ; use s[8:10]8933; GFX942-NEXT: ;;#ASMEND8934; GFX942-NEXT: s_setpc_b64 s[30:31]8935 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8936 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8937 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 0>8938 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)8939 ret void8940}8941 8942define void @s_shuffle_v3p3_v4p3__7_u_0() {8943; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_u_0:8944; GFX900: ; %bb.0:8945; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8946; GFX900-NEXT: ;;#ASMSTART8947; GFX900-NEXT: ; def s[8:11]8948; GFX900-NEXT: ;;#ASMEND8949; GFX900-NEXT: ;;#ASMSTART8950; GFX900-NEXT: ; def s[4:7]8951; GFX900-NEXT: ;;#ASMEND8952; GFX900-NEXT: s_mov_b32 s8, s118953; GFX900-NEXT: s_mov_b32 s10, s48954; GFX900-NEXT: ;;#ASMSTART8955; GFX900-NEXT: ; use s[8:10]8956; GFX900-NEXT: ;;#ASMEND8957; GFX900-NEXT: s_setpc_b64 s[30:31]8958;8959; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_u_0:8960; GFX90A: ; %bb.0:8961; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8962; GFX90A-NEXT: ;;#ASMSTART8963; GFX90A-NEXT: ; def s[8:11]8964; GFX90A-NEXT: ;;#ASMEND8965; GFX90A-NEXT: ;;#ASMSTART8966; GFX90A-NEXT: ; def s[4:7]8967; GFX90A-NEXT: ;;#ASMEND8968; GFX90A-NEXT: s_mov_b32 s8, s118969; GFX90A-NEXT: s_mov_b32 s10, s48970; GFX90A-NEXT: ;;#ASMSTART8971; GFX90A-NEXT: ; use s[8:10]8972; GFX90A-NEXT: ;;#ASMEND8973; GFX90A-NEXT: s_setpc_b64 s[30:31]8974;8975; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_u_0:8976; GFX942: ; %bb.0:8977; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8978; GFX942-NEXT: ;;#ASMSTART8979; GFX942-NEXT: ; def s[0:3]8980; GFX942-NEXT: ;;#ASMEND8981; GFX942-NEXT: ;;#ASMSTART8982; GFX942-NEXT: ; def s[4:7]8983; GFX942-NEXT: ;;#ASMEND8984; GFX942-NEXT: s_mov_b32 s8, s78985; GFX942-NEXT: s_mov_b32 s10, s08986; GFX942-NEXT: ;;#ASMSTART8987; GFX942-NEXT: ; use s[8:10]8988; GFX942-NEXT: ;;#ASMEND8989; GFX942-NEXT: s_setpc_b64 s[30:31]8990 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8991 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()8992 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 0>8993 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)8994 ret void8995}8996 8997define void @s_shuffle_v3p3_v4p3__7_1_0() {8998; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_1_0:8999; GFX900: ; %bb.0:9000; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9001; GFX900-NEXT: ;;#ASMSTART9002; GFX900-NEXT: ; def s[8:11]9003; GFX900-NEXT: ;;#ASMEND9004; GFX900-NEXT: ;;#ASMSTART9005; GFX900-NEXT: ; def s[4:7]9006; GFX900-NEXT: ;;#ASMEND9007; GFX900-NEXT: s_mov_b32 s8, s119008; GFX900-NEXT: s_mov_b32 s9, s59009; GFX900-NEXT: s_mov_b32 s10, s49010; GFX900-NEXT: ;;#ASMSTART9011; GFX900-NEXT: ; use s[8:10]9012; GFX900-NEXT: ;;#ASMEND9013; GFX900-NEXT: s_setpc_b64 s[30:31]9014;9015; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_1_0:9016; GFX90A: ; %bb.0:9017; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9018; GFX90A-NEXT: ;;#ASMSTART9019; GFX90A-NEXT: ; def s[8:11]9020; GFX90A-NEXT: ;;#ASMEND9021; GFX90A-NEXT: ;;#ASMSTART9022; GFX90A-NEXT: ; def s[4:7]9023; GFX90A-NEXT: ;;#ASMEND9024; GFX90A-NEXT: s_mov_b32 s8, s119025; GFX90A-NEXT: s_mov_b32 s9, s59026; GFX90A-NEXT: s_mov_b32 s10, s49027; GFX90A-NEXT: ;;#ASMSTART9028; GFX90A-NEXT: ; use s[8:10]9029; GFX90A-NEXT: ;;#ASMEND9030; GFX90A-NEXT: s_setpc_b64 s[30:31]9031;9032; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_1_0:9033; GFX942: ; %bb.0:9034; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9035; GFX942-NEXT: ;;#ASMSTART9036; GFX942-NEXT: ; def s[0:3]9037; GFX942-NEXT: ;;#ASMEND9038; GFX942-NEXT: ;;#ASMSTART9039; GFX942-NEXT: ; def s[4:7]9040; GFX942-NEXT: ;;#ASMEND9041; GFX942-NEXT: s_mov_b32 s8, s79042; GFX942-NEXT: s_mov_b32 s9, s19043; GFX942-NEXT: s_mov_b32 s10, s09044; GFX942-NEXT: ;;#ASMSTART9045; GFX942-NEXT: ; use s[8:10]9046; GFX942-NEXT: ;;#ASMEND9047; GFX942-NEXT: s_setpc_b64 s[30:31]9048 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9049 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9050 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 0>9051 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)9052 ret void9053}9054 9055define void @s_shuffle_v3p3_v4p3__7_2_0() {9056; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_2_0:9057; GFX900: ; %bb.0:9058; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9059; GFX900-NEXT: ;;#ASMSTART9060; GFX900-NEXT: ; def s[8:11]9061; GFX900-NEXT: ;;#ASMEND9062; GFX900-NEXT: ;;#ASMSTART9063; GFX900-NEXT: ; def s[4:7]9064; GFX900-NEXT: ;;#ASMEND9065; GFX900-NEXT: s_mov_b32 s8, s119066; GFX900-NEXT: s_mov_b32 s9, s69067; GFX900-NEXT: s_mov_b32 s10, s49068; GFX900-NEXT: ;;#ASMSTART9069; GFX900-NEXT: ; use s[8:10]9070; GFX900-NEXT: ;;#ASMEND9071; GFX900-NEXT: s_setpc_b64 s[30:31]9072;9073; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_2_0:9074; GFX90A: ; %bb.0:9075; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9076; GFX90A-NEXT: ;;#ASMSTART9077; GFX90A-NEXT: ; def s[8:11]9078; GFX90A-NEXT: ;;#ASMEND9079; GFX90A-NEXT: ;;#ASMSTART9080; GFX90A-NEXT: ; def s[4:7]9081; GFX90A-NEXT: ;;#ASMEND9082; GFX90A-NEXT: s_mov_b32 s8, s119083; GFX90A-NEXT: s_mov_b32 s9, s69084; GFX90A-NEXT: s_mov_b32 s10, s49085; GFX90A-NEXT: ;;#ASMSTART9086; GFX90A-NEXT: ; use s[8:10]9087; GFX90A-NEXT: ;;#ASMEND9088; GFX90A-NEXT: s_setpc_b64 s[30:31]9089;9090; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_2_0:9091; GFX942: ; %bb.0:9092; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9093; GFX942-NEXT: ;;#ASMSTART9094; GFX942-NEXT: ; def s[0:3]9095; GFX942-NEXT: ;;#ASMEND9096; GFX942-NEXT: ;;#ASMSTART9097; GFX942-NEXT: ; def s[4:7]9098; GFX942-NEXT: ;;#ASMEND9099; GFX942-NEXT: s_mov_b32 s8, s79100; GFX942-NEXT: s_mov_b32 s9, s29101; GFX942-NEXT: s_mov_b32 s10, s09102; GFX942-NEXT: ;;#ASMSTART9103; GFX942-NEXT: ; use s[8:10]9104; GFX942-NEXT: ;;#ASMEND9105; GFX942-NEXT: s_setpc_b64 s[30:31]9106 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9107 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9108 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 0>9109 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)9110 ret void9111}9112 9113define void @s_shuffle_v3p3_v4p3__7_3_0() {9114; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_3_0:9115; GFX900: ; %bb.0:9116; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9117; GFX900-NEXT: ;;#ASMSTART9118; GFX900-NEXT: ; def s[8:11]9119; GFX900-NEXT: ;;#ASMEND9120; GFX900-NEXT: ;;#ASMSTART9121; GFX900-NEXT: ; def s[4:7]9122; GFX900-NEXT: ;;#ASMEND9123; GFX900-NEXT: s_mov_b32 s8, s119124; GFX900-NEXT: s_mov_b32 s9, s79125; GFX900-NEXT: s_mov_b32 s10, s49126; GFX900-NEXT: ;;#ASMSTART9127; GFX900-NEXT: ; use s[8:10]9128; GFX900-NEXT: ;;#ASMEND9129; GFX900-NEXT: s_setpc_b64 s[30:31]9130;9131; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_3_0:9132; GFX90A: ; %bb.0:9133; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9134; GFX90A-NEXT: ;;#ASMSTART9135; GFX90A-NEXT: ; def s[8:11]9136; GFX90A-NEXT: ;;#ASMEND9137; GFX90A-NEXT: ;;#ASMSTART9138; GFX90A-NEXT: ; def s[4:7]9139; GFX90A-NEXT: ;;#ASMEND9140; GFX90A-NEXT: s_mov_b32 s8, s119141; GFX90A-NEXT: s_mov_b32 s9, s79142; GFX90A-NEXT: s_mov_b32 s10, s49143; GFX90A-NEXT: ;;#ASMSTART9144; GFX90A-NEXT: ; use s[8:10]9145; GFX90A-NEXT: ;;#ASMEND9146; GFX90A-NEXT: s_setpc_b64 s[30:31]9147;9148; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_3_0:9149; GFX942: ; %bb.0:9150; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9151; GFX942-NEXT: ;;#ASMSTART9152; GFX942-NEXT: ; def s[0:3]9153; GFX942-NEXT: ;;#ASMEND9154; GFX942-NEXT: ;;#ASMSTART9155; GFX942-NEXT: ; def s[4:7]9156; GFX942-NEXT: ;;#ASMEND9157; GFX942-NEXT: s_mov_b32 s8, s79158; GFX942-NEXT: s_mov_b32 s9, s39159; GFX942-NEXT: s_mov_b32 s10, s09160; GFX942-NEXT: ;;#ASMSTART9161; GFX942-NEXT: ; use s[8:10]9162; GFX942-NEXT: ;;#ASMEND9163; GFX942-NEXT: s_setpc_b64 s[30:31]9164 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9165 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9166 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 0>9167 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)9168 ret void9169}9170 9171define void @s_shuffle_v3p3_v4p3__7_4_0() {9172; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_4_0:9173; GFX900: ; %bb.0:9174; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9175; GFX900-NEXT: ;;#ASMSTART9176; GFX900-NEXT: ; def s[4:7]9177; GFX900-NEXT: ;;#ASMEND9178; GFX900-NEXT: ;;#ASMSTART9179; GFX900-NEXT: ; def s[12:15]9180; GFX900-NEXT: ;;#ASMEND9181; GFX900-NEXT: s_mov_b32 s8, s159182; GFX900-NEXT: s_mov_b32 s9, s129183; GFX900-NEXT: s_mov_b32 s10, s49184; GFX900-NEXT: ;;#ASMSTART9185; GFX900-NEXT: ; use s[8:10]9186; GFX900-NEXT: ;;#ASMEND9187; GFX900-NEXT: s_setpc_b64 s[30:31]9188;9189; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_4_0:9190; GFX90A: ; %bb.0:9191; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9192; GFX90A-NEXT: ;;#ASMSTART9193; GFX90A-NEXT: ; def s[4:7]9194; GFX90A-NEXT: ;;#ASMEND9195; GFX90A-NEXT: ;;#ASMSTART9196; GFX90A-NEXT: ; def s[12:15]9197; GFX90A-NEXT: ;;#ASMEND9198; GFX90A-NEXT: s_mov_b32 s8, s159199; GFX90A-NEXT: s_mov_b32 s9, s129200; GFX90A-NEXT: s_mov_b32 s10, s49201; GFX90A-NEXT: ;;#ASMSTART9202; GFX90A-NEXT: ; use s[8:10]9203; GFX90A-NEXT: ;;#ASMEND9204; GFX90A-NEXT: s_setpc_b64 s[30:31]9205;9206; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_4_0:9207; GFX942: ; %bb.0:9208; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9209; GFX942-NEXT: ;;#ASMSTART9210; GFX942-NEXT: ; def s[0:3]9211; GFX942-NEXT: ;;#ASMEND9212; GFX942-NEXT: ;;#ASMSTART9213; GFX942-NEXT: ; def s[4:7]9214; GFX942-NEXT: ;;#ASMEND9215; GFX942-NEXT: s_mov_b32 s8, s79216; GFX942-NEXT: s_mov_b32 s9, s49217; GFX942-NEXT: s_mov_b32 s10, s09218; GFX942-NEXT: ;;#ASMSTART9219; GFX942-NEXT: ; use s[8:10]9220; GFX942-NEXT: ;;#ASMEND9221; GFX942-NEXT: s_setpc_b64 s[30:31]9222 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9223 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9224 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 0>9225 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)9226 ret void9227}9228 9229define void @s_shuffle_v3p3_v4p3__7_5_0() {9230; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_5_0:9231; GFX900: ; %bb.0:9232; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9233; GFX900-NEXT: ;;#ASMSTART9234; GFX900-NEXT: ; def s[8:11]9235; GFX900-NEXT: ;;#ASMEND9236; GFX900-NEXT: ;;#ASMSTART9237; GFX900-NEXT: ; def s[4:7]9238; GFX900-NEXT: ;;#ASMEND9239; GFX900-NEXT: s_mov_b32 s8, s119240; GFX900-NEXT: s_mov_b32 s10, s49241; GFX900-NEXT: ;;#ASMSTART9242; GFX900-NEXT: ; use s[8:10]9243; GFX900-NEXT: ;;#ASMEND9244; GFX900-NEXT: s_setpc_b64 s[30:31]9245;9246; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_5_0:9247; GFX90A: ; %bb.0:9248; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9249; GFX90A-NEXT: ;;#ASMSTART9250; GFX90A-NEXT: ; def s[8:11]9251; GFX90A-NEXT: ;;#ASMEND9252; GFX90A-NEXT: ;;#ASMSTART9253; GFX90A-NEXT: ; def s[4:7]9254; GFX90A-NEXT: ;;#ASMEND9255; GFX90A-NEXT: s_mov_b32 s8, s119256; GFX90A-NEXT: s_mov_b32 s10, s49257; GFX90A-NEXT: ;;#ASMSTART9258; GFX90A-NEXT: ; use s[8:10]9259; GFX90A-NEXT: ;;#ASMEND9260; GFX90A-NEXT: s_setpc_b64 s[30:31]9261;9262; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_5_0:9263; GFX942: ; %bb.0:9264; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9265; GFX942-NEXT: ;;#ASMSTART9266; GFX942-NEXT: ; def s[8:11]9267; GFX942-NEXT: ;;#ASMEND9268; GFX942-NEXT: ;;#ASMSTART9269; GFX942-NEXT: ; def s[0:3]9270; GFX942-NEXT: ;;#ASMEND9271; GFX942-NEXT: s_mov_b32 s8, s119272; GFX942-NEXT: s_mov_b32 s10, s09273; GFX942-NEXT: ;;#ASMSTART9274; GFX942-NEXT: ; use s[8:10]9275; GFX942-NEXT: ;;#ASMEND9276; GFX942-NEXT: s_setpc_b64 s[30:31]9277 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9278 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9279 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 0>9280 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)9281 ret void9282}9283 9284define void @s_shuffle_v3p3_v4p3__7_6_0() {9285; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_6_0:9286; GFX900: ; %bb.0:9287; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9288; GFX900-NEXT: ;;#ASMSTART9289; GFX900-NEXT: ; def s[8:11]9290; GFX900-NEXT: ;;#ASMEND9291; GFX900-NEXT: ;;#ASMSTART9292; GFX900-NEXT: ; def s[4:7]9293; GFX900-NEXT: ;;#ASMEND9294; GFX900-NEXT: s_mov_b32 s8, s119295; GFX900-NEXT: s_mov_b32 s9, s109296; GFX900-NEXT: s_mov_b32 s10, s49297; GFX900-NEXT: ;;#ASMSTART9298; GFX900-NEXT: ; use s[8:10]9299; GFX900-NEXT: ;;#ASMEND9300; GFX900-NEXT: s_setpc_b64 s[30:31]9301;9302; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_6_0:9303; GFX90A: ; %bb.0:9304; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9305; GFX90A-NEXT: ;;#ASMSTART9306; GFX90A-NEXT: ; def s[8:11]9307; GFX90A-NEXT: ;;#ASMEND9308; GFX90A-NEXT: ;;#ASMSTART9309; GFX90A-NEXT: ; def s[4:7]9310; GFX90A-NEXT: ;;#ASMEND9311; GFX90A-NEXT: s_mov_b32 s8, s119312; GFX90A-NEXT: s_mov_b32 s9, s109313; GFX90A-NEXT: s_mov_b32 s10, s49314; GFX90A-NEXT: ;;#ASMSTART9315; GFX90A-NEXT: ; use s[8:10]9316; GFX90A-NEXT: ;;#ASMEND9317; GFX90A-NEXT: s_setpc_b64 s[30:31]9318;9319; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_6_0:9320; GFX942: ; %bb.0:9321; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9322; GFX942-NEXT: ;;#ASMSTART9323; GFX942-NEXT: ; def s[0:3]9324; GFX942-NEXT: ;;#ASMEND9325; GFX942-NEXT: ;;#ASMSTART9326; GFX942-NEXT: ; def s[4:7]9327; GFX942-NEXT: ;;#ASMEND9328; GFX942-NEXT: s_mov_b32 s8, s79329; GFX942-NEXT: s_mov_b32 s9, s69330; GFX942-NEXT: s_mov_b32 s10, s09331; GFX942-NEXT: ;;#ASMSTART9332; GFX942-NEXT: ; use s[8:10]9333; GFX942-NEXT: ;;#ASMEND9334; GFX942-NEXT: s_setpc_b64 s[30:31]9335 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9336 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9337 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 0>9338 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)9339 ret void9340}9341 9342define void @s_shuffle_v3p3_v4p3__u_1_1() {9343; GFX9-LABEL: s_shuffle_v3p3_v4p3__u_1_1:9344; GFX9: ; %bb.0:9345; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9346; GFX9-NEXT: ;;#ASMSTART9347; GFX9-NEXT: ; def s[8:11]9348; GFX9-NEXT: ;;#ASMEND9349; GFX9-NEXT: s_mov_b32 s10, s99350; GFX9-NEXT: ;;#ASMSTART9351; GFX9-NEXT: ; use s[8:10]9352; GFX9-NEXT: ;;#ASMEND9353; GFX9-NEXT: s_setpc_b64 s[30:31]9354 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9355 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 poison, i32 1, i32 1>9356 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)9357 ret void9358}9359 9360define void @s_shuffle_v3p3_v4p3__0_1_1() {9361; GFX9-LABEL: s_shuffle_v3p3_v4p3__0_1_1:9362; GFX9: ; %bb.0:9363; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9364; GFX9-NEXT: ;;#ASMSTART9365; GFX9-NEXT: ; def s[8:11]9366; GFX9-NEXT: ;;#ASMEND9367; GFX9-NEXT: s_mov_b32 s10, s99368; GFX9-NEXT: ;;#ASMSTART9369; GFX9-NEXT: ; use s[8:10]9370; GFX9-NEXT: ;;#ASMEND9371; GFX9-NEXT: s_setpc_b64 s[30:31]9372 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9373 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 0, i32 1, i32 1>9374 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)9375 ret void9376}9377 9378define void @s_shuffle_v3p3_v4p3__1_1_1() {9379; GFX9-LABEL: s_shuffle_v3p3_v4p3__1_1_1:9380; GFX9: ; %bb.0:9381; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9382; GFX9-NEXT: ;;#ASMSTART9383; GFX9-NEXT: ; def s[8:11]9384; GFX9-NEXT: ;;#ASMEND9385; GFX9-NEXT: s_mov_b32 s8, s99386; GFX9-NEXT: s_mov_b32 s10, s99387; GFX9-NEXT: ;;#ASMSTART9388; GFX9-NEXT: ; use s[8:10]9389; GFX9-NEXT: ;;#ASMEND9390; GFX9-NEXT: s_setpc_b64 s[30:31]9391 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9392 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 1, i32 1>9393 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)9394 ret void9395}9396 9397define void @s_shuffle_v3p3_v4p3__2_1_1() {9398; GFX9-LABEL: s_shuffle_v3p3_v4p3__2_1_1:9399; GFX9: ; %bb.0:9400; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9401; GFX9-NEXT: ;;#ASMSTART9402; GFX9-NEXT: ; def s[8:11]9403; GFX9-NEXT: ;;#ASMEND9404; GFX9-NEXT: s_mov_b32 s8, s109405; GFX9-NEXT: s_mov_b32 s10, s99406; GFX9-NEXT: ;;#ASMSTART9407; GFX9-NEXT: ; use s[8:10]9408; GFX9-NEXT: ;;#ASMEND9409; GFX9-NEXT: s_setpc_b64 s[30:31]9410 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9411 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 1, i32 1>9412 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)9413 ret void9414}9415 9416define void @s_shuffle_v3p3_v4p3__3_1_1() {9417; GFX9-LABEL: s_shuffle_v3p3_v4p3__3_1_1:9418; GFX9: ; %bb.0:9419; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9420; GFX9-NEXT: ;;#ASMSTART9421; GFX9-NEXT: ; def s[8:11]9422; GFX9-NEXT: ;;#ASMEND9423; GFX9-NEXT: s_mov_b32 s8, s119424; GFX9-NEXT: s_mov_b32 s10, s99425; GFX9-NEXT: ;;#ASMSTART9426; GFX9-NEXT: ; use s[8:10]9427; GFX9-NEXT: ;;#ASMEND9428; GFX9-NEXT: s_setpc_b64 s[30:31]9429 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9430 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 3, i32 1, i32 1>9431 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)9432 ret void9433}9434 9435define void @s_shuffle_v3p3_v4p3__4_1_1() {9436; GFX9-LABEL: s_shuffle_v3p3_v4p3__4_1_1:9437; GFX9: ; %bb.0:9438; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9439; GFX9-NEXT: ;;#ASMSTART9440; GFX9-NEXT: ; def s[8:11]9441; GFX9-NEXT: ;;#ASMEND9442; GFX9-NEXT: s_mov_b32 s10, s99443; GFX9-NEXT: ;;#ASMSTART9444; GFX9-NEXT: ; use s[8:10]9445; GFX9-NEXT: ;;#ASMEND9446; GFX9-NEXT: s_setpc_b64 s[30:31]9447 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9448 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 4, i32 1, i32 1>9449 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)9450 ret void9451}9452 9453define void @s_shuffle_v3p3_v4p3__5_1_1() {9454; GFX900-LABEL: s_shuffle_v3p3_v4p3__5_1_1:9455; GFX900: ; %bb.0:9456; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9457; GFX900-NEXT: ;;#ASMSTART9458; GFX900-NEXT: ; def s[8:11]9459; GFX900-NEXT: ;;#ASMEND9460; GFX900-NEXT: ;;#ASMSTART9461; GFX900-NEXT: ; def s[4:7]9462; GFX900-NEXT: ;;#ASMEND9463; GFX900-NEXT: s_mov_b32 s8, s59464; GFX900-NEXT: s_mov_b32 s10, s99465; GFX900-NEXT: ;;#ASMSTART9466; GFX900-NEXT: ; use s[8:10]9467; GFX900-NEXT: ;;#ASMEND9468; GFX900-NEXT: s_setpc_b64 s[30:31]9469;9470; GFX90A-LABEL: s_shuffle_v3p3_v4p3__5_1_1:9471; GFX90A: ; %bb.0:9472; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9473; GFX90A-NEXT: ;;#ASMSTART9474; GFX90A-NEXT: ; def s[8:11]9475; GFX90A-NEXT: ;;#ASMEND9476; GFX90A-NEXT: ;;#ASMSTART9477; GFX90A-NEXT: ; def s[4:7]9478; GFX90A-NEXT: ;;#ASMEND9479; GFX90A-NEXT: s_mov_b32 s8, s59480; GFX90A-NEXT: s_mov_b32 s10, s99481; GFX90A-NEXT: ;;#ASMSTART9482; GFX90A-NEXT: ; use s[8:10]9483; GFX90A-NEXT: ;;#ASMEND9484; GFX90A-NEXT: s_setpc_b64 s[30:31]9485;9486; GFX942-LABEL: s_shuffle_v3p3_v4p3__5_1_1:9487; GFX942: ; %bb.0:9488; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9489; GFX942-NEXT: ;;#ASMSTART9490; GFX942-NEXT: ; def s[8:11]9491; GFX942-NEXT: ;;#ASMEND9492; GFX942-NEXT: ;;#ASMSTART9493; GFX942-NEXT: ; def s[0:3]9494; GFX942-NEXT: ;;#ASMEND9495; GFX942-NEXT: s_mov_b32 s8, s19496; GFX942-NEXT: s_mov_b32 s10, s99497; GFX942-NEXT: ;;#ASMSTART9498; GFX942-NEXT: ; use s[8:10]9499; GFX942-NEXT: ;;#ASMEND9500; GFX942-NEXT: s_setpc_b64 s[30:31]9501 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9502 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9503 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 1, i32 1>9504 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)9505 ret void9506}9507 9508define void @s_shuffle_v3p3_v4p3__6_1_1() {9509; GFX900-LABEL: s_shuffle_v3p3_v4p3__6_1_1:9510; GFX900: ; %bb.0:9511; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9512; GFX900-NEXT: ;;#ASMSTART9513; GFX900-NEXT: ; def s[8:11]9514; GFX900-NEXT: ;;#ASMEND9515; GFX900-NEXT: ;;#ASMSTART9516; GFX900-NEXT: ; def s[4:7]9517; GFX900-NEXT: ;;#ASMEND9518; GFX900-NEXT: s_mov_b32 s8, s69519; GFX900-NEXT: s_mov_b32 s10, s99520; GFX900-NEXT: ;;#ASMSTART9521; GFX900-NEXT: ; use s[8:10]9522; GFX900-NEXT: ;;#ASMEND9523; GFX900-NEXT: s_setpc_b64 s[30:31]9524;9525; GFX90A-LABEL: s_shuffle_v3p3_v4p3__6_1_1:9526; GFX90A: ; %bb.0:9527; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9528; GFX90A-NEXT: ;;#ASMSTART9529; GFX90A-NEXT: ; def s[8:11]9530; GFX90A-NEXT: ;;#ASMEND9531; GFX90A-NEXT: ;;#ASMSTART9532; GFX90A-NEXT: ; def s[4:7]9533; GFX90A-NEXT: ;;#ASMEND9534; GFX90A-NEXT: s_mov_b32 s8, s69535; GFX90A-NEXT: s_mov_b32 s10, s99536; GFX90A-NEXT: ;;#ASMSTART9537; GFX90A-NEXT: ; use s[8:10]9538; GFX90A-NEXT: ;;#ASMEND9539; GFX90A-NEXT: s_setpc_b64 s[30:31]9540;9541; GFX942-LABEL: s_shuffle_v3p3_v4p3__6_1_1:9542; GFX942: ; %bb.0:9543; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9544; GFX942-NEXT: ;;#ASMSTART9545; GFX942-NEXT: ; def s[8:11]9546; GFX942-NEXT: ;;#ASMEND9547; GFX942-NEXT: ;;#ASMSTART9548; GFX942-NEXT: ; def s[0:3]9549; GFX942-NEXT: ;;#ASMEND9550; GFX942-NEXT: s_mov_b32 s8, s29551; GFX942-NEXT: s_mov_b32 s10, s99552; GFX942-NEXT: ;;#ASMSTART9553; GFX942-NEXT: ; use s[8:10]9554; GFX942-NEXT: ;;#ASMEND9555; GFX942-NEXT: s_setpc_b64 s[30:31]9556 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9557 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9558 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 1, i32 1>9559 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)9560 ret void9561}9562 9563define void @s_shuffle_v3p3_v4p3__7_1_1() {9564; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_1_1:9565; GFX900: ; %bb.0:9566; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9567; GFX900-NEXT: ;;#ASMSTART9568; GFX900-NEXT: ; def s[8:11]9569; GFX900-NEXT: ;;#ASMEND9570; GFX900-NEXT: ;;#ASMSTART9571; GFX900-NEXT: ; def s[4:7]9572; GFX900-NEXT: ;;#ASMEND9573; GFX900-NEXT: s_mov_b32 s8, s79574; GFX900-NEXT: s_mov_b32 s10, s99575; GFX900-NEXT: ;;#ASMSTART9576; GFX900-NEXT: ; use s[8:10]9577; GFX900-NEXT: ;;#ASMEND9578; GFX900-NEXT: s_setpc_b64 s[30:31]9579;9580; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_1_1:9581; GFX90A: ; %bb.0:9582; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9583; GFX90A-NEXT: ;;#ASMSTART9584; GFX90A-NEXT: ; def s[8:11]9585; GFX90A-NEXT: ;;#ASMEND9586; GFX90A-NEXT: ;;#ASMSTART9587; GFX90A-NEXT: ; def s[4:7]9588; GFX90A-NEXT: ;;#ASMEND9589; GFX90A-NEXT: s_mov_b32 s8, s79590; GFX90A-NEXT: s_mov_b32 s10, s99591; GFX90A-NEXT: ;;#ASMSTART9592; GFX90A-NEXT: ; use s[8:10]9593; GFX90A-NEXT: ;;#ASMEND9594; GFX90A-NEXT: s_setpc_b64 s[30:31]9595;9596; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_1_1:9597; GFX942: ; %bb.0:9598; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9599; GFX942-NEXT: ;;#ASMSTART9600; GFX942-NEXT: ; def s[8:11]9601; GFX942-NEXT: ;;#ASMEND9602; GFX942-NEXT: ;;#ASMSTART9603; GFX942-NEXT: ; def s[0:3]9604; GFX942-NEXT: ;;#ASMEND9605; GFX942-NEXT: s_mov_b32 s8, s39606; GFX942-NEXT: s_mov_b32 s10, s99607; GFX942-NEXT: ;;#ASMSTART9608; GFX942-NEXT: ; use s[8:10]9609; GFX942-NEXT: ;;#ASMEND9610; GFX942-NEXT: s_setpc_b64 s[30:31]9611 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9612 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9613 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 1>9614 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)9615 ret void9616}9617 9618define void @s_shuffle_v3p3_v4p3__7_u_1() {9619; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_u_1:9620; GFX900: ; %bb.0:9621; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9622; GFX900-NEXT: ;;#ASMSTART9623; GFX900-NEXT: ; def s[8:11]9624; GFX900-NEXT: ;;#ASMEND9625; GFX900-NEXT: ;;#ASMSTART9626; GFX900-NEXT: ; def s[4:7]9627; GFX900-NEXT: ;;#ASMEND9628; GFX900-NEXT: s_mov_b32 s8, s119629; GFX900-NEXT: s_mov_b32 s10, s59630; GFX900-NEXT: ;;#ASMSTART9631; GFX900-NEXT: ; use s[8:10]9632; GFX900-NEXT: ;;#ASMEND9633; GFX900-NEXT: s_setpc_b64 s[30:31]9634;9635; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_u_1:9636; GFX90A: ; %bb.0:9637; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9638; GFX90A-NEXT: ;;#ASMSTART9639; GFX90A-NEXT: ; def s[8:11]9640; GFX90A-NEXT: ;;#ASMEND9641; GFX90A-NEXT: ;;#ASMSTART9642; GFX90A-NEXT: ; def s[4:7]9643; GFX90A-NEXT: ;;#ASMEND9644; GFX90A-NEXT: s_mov_b32 s8, s119645; GFX90A-NEXT: s_mov_b32 s10, s59646; GFX90A-NEXT: ;;#ASMSTART9647; GFX90A-NEXT: ; use s[8:10]9648; GFX90A-NEXT: ;;#ASMEND9649; GFX90A-NEXT: s_setpc_b64 s[30:31]9650;9651; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_u_1:9652; GFX942: ; %bb.0:9653; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9654; GFX942-NEXT: ;;#ASMSTART9655; GFX942-NEXT: ; def s[0:3]9656; GFX942-NEXT: ;;#ASMEND9657; GFX942-NEXT: ;;#ASMSTART9658; GFX942-NEXT: ; def s[4:7]9659; GFX942-NEXT: ;;#ASMEND9660; GFX942-NEXT: s_mov_b32 s8, s79661; GFX942-NEXT: s_mov_b32 s10, s19662; GFX942-NEXT: ;;#ASMSTART9663; GFX942-NEXT: ; use s[8:10]9664; GFX942-NEXT: ;;#ASMEND9665; GFX942-NEXT: s_setpc_b64 s[30:31]9666 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9667 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9668 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 1>9669 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)9670 ret void9671}9672 9673define void @s_shuffle_v3p3_v4p3__7_0_1() {9674; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_0_1:9675; GFX900: ; %bb.0:9676; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9677; GFX900-NEXT: ;;#ASMSTART9678; GFX900-NEXT: ; def s[8:11]9679; GFX900-NEXT: ;;#ASMEND9680; GFX900-NEXT: ;;#ASMSTART9681; GFX900-NEXT: ; def s[4:7]9682; GFX900-NEXT: ;;#ASMEND9683; GFX900-NEXT: s_mov_b32 s8, s119684; GFX900-NEXT: s_mov_b32 s9, s49685; GFX900-NEXT: s_mov_b32 s10, s59686; GFX900-NEXT: ;;#ASMSTART9687; GFX900-NEXT: ; use s[8:10]9688; GFX900-NEXT: ;;#ASMEND9689; GFX900-NEXT: s_setpc_b64 s[30:31]9690;9691; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_0_1:9692; GFX90A: ; %bb.0:9693; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9694; GFX90A-NEXT: ;;#ASMSTART9695; GFX90A-NEXT: ; def s[8:11]9696; GFX90A-NEXT: ;;#ASMEND9697; GFX90A-NEXT: ;;#ASMSTART9698; GFX90A-NEXT: ; def s[4:7]9699; GFX90A-NEXT: ;;#ASMEND9700; GFX90A-NEXT: s_mov_b32 s8, s119701; GFX90A-NEXT: s_mov_b32 s9, s49702; GFX90A-NEXT: s_mov_b32 s10, s59703; GFX90A-NEXT: ;;#ASMSTART9704; GFX90A-NEXT: ; use s[8:10]9705; GFX90A-NEXT: ;;#ASMEND9706; GFX90A-NEXT: s_setpc_b64 s[30:31]9707;9708; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_0_1:9709; GFX942: ; %bb.0:9710; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9711; GFX942-NEXT: ;;#ASMSTART9712; GFX942-NEXT: ; def s[0:3]9713; GFX942-NEXT: ;;#ASMEND9714; GFX942-NEXT: ;;#ASMSTART9715; GFX942-NEXT: ; def s[4:7]9716; GFX942-NEXT: ;;#ASMEND9717; GFX942-NEXT: s_mov_b32 s8, s79718; GFX942-NEXT: s_mov_b32 s9, s09719; GFX942-NEXT: s_mov_b32 s10, s19720; GFX942-NEXT: ;;#ASMSTART9721; GFX942-NEXT: ; use s[8:10]9722; GFX942-NEXT: ;;#ASMEND9723; GFX942-NEXT: s_setpc_b64 s[30:31]9724 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9725 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9726 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 1>9727 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)9728 ret void9729}9730 9731define void @s_shuffle_v3p3_v4p3__7_2_1() {9732; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_2_1:9733; GFX900: ; %bb.0:9734; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9735; GFX900-NEXT: ;;#ASMSTART9736; GFX900-NEXT: ; def s[8:11]9737; GFX900-NEXT: ;;#ASMEND9738; GFX900-NEXT: ;;#ASMSTART9739; GFX900-NEXT: ; def s[4:7]9740; GFX900-NEXT: ;;#ASMEND9741; GFX900-NEXT: s_mov_b32 s8, s119742; GFX900-NEXT: s_mov_b32 s9, s69743; GFX900-NEXT: s_mov_b32 s10, s59744; GFX900-NEXT: ;;#ASMSTART9745; GFX900-NEXT: ; use s[8:10]9746; GFX900-NEXT: ;;#ASMEND9747; GFX900-NEXT: s_setpc_b64 s[30:31]9748;9749; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_2_1:9750; GFX90A: ; %bb.0:9751; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9752; GFX90A-NEXT: ;;#ASMSTART9753; GFX90A-NEXT: ; def s[8:11]9754; GFX90A-NEXT: ;;#ASMEND9755; GFX90A-NEXT: ;;#ASMSTART9756; GFX90A-NEXT: ; def s[4:7]9757; GFX90A-NEXT: ;;#ASMEND9758; GFX90A-NEXT: s_mov_b32 s8, s119759; GFX90A-NEXT: s_mov_b32 s9, s69760; GFX90A-NEXT: s_mov_b32 s10, s59761; GFX90A-NEXT: ;;#ASMSTART9762; GFX90A-NEXT: ; use s[8:10]9763; GFX90A-NEXT: ;;#ASMEND9764; GFX90A-NEXT: s_setpc_b64 s[30:31]9765;9766; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_2_1:9767; GFX942: ; %bb.0:9768; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9769; GFX942-NEXT: ;;#ASMSTART9770; GFX942-NEXT: ; def s[0:3]9771; GFX942-NEXT: ;;#ASMEND9772; GFX942-NEXT: ;;#ASMSTART9773; GFX942-NEXT: ; def s[4:7]9774; GFX942-NEXT: ;;#ASMEND9775; GFX942-NEXT: s_mov_b32 s8, s79776; GFX942-NEXT: s_mov_b32 s9, s29777; GFX942-NEXT: s_mov_b32 s10, s19778; GFX942-NEXT: ;;#ASMSTART9779; GFX942-NEXT: ; use s[8:10]9780; GFX942-NEXT: ;;#ASMEND9781; GFX942-NEXT: s_setpc_b64 s[30:31]9782 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9783 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9784 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 1>9785 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)9786 ret void9787}9788 9789define void @s_shuffle_v3p3_v4p3__7_3_1() {9790; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_3_1:9791; GFX900: ; %bb.0:9792; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9793; GFX900-NEXT: ;;#ASMSTART9794; GFX900-NEXT: ; def s[8:11]9795; GFX900-NEXT: ;;#ASMEND9796; GFX900-NEXT: ;;#ASMSTART9797; GFX900-NEXT: ; def s[4:7]9798; GFX900-NEXT: ;;#ASMEND9799; GFX900-NEXT: s_mov_b32 s8, s119800; GFX900-NEXT: s_mov_b32 s9, s79801; GFX900-NEXT: s_mov_b32 s10, s59802; GFX900-NEXT: ;;#ASMSTART9803; GFX900-NEXT: ; use s[8:10]9804; GFX900-NEXT: ;;#ASMEND9805; GFX900-NEXT: s_setpc_b64 s[30:31]9806;9807; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_3_1:9808; GFX90A: ; %bb.0:9809; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9810; GFX90A-NEXT: ;;#ASMSTART9811; GFX90A-NEXT: ; def s[8:11]9812; GFX90A-NEXT: ;;#ASMEND9813; GFX90A-NEXT: ;;#ASMSTART9814; GFX90A-NEXT: ; def s[4:7]9815; GFX90A-NEXT: ;;#ASMEND9816; GFX90A-NEXT: s_mov_b32 s8, s119817; GFX90A-NEXT: s_mov_b32 s9, s79818; GFX90A-NEXT: s_mov_b32 s10, s59819; GFX90A-NEXT: ;;#ASMSTART9820; GFX90A-NEXT: ; use s[8:10]9821; GFX90A-NEXT: ;;#ASMEND9822; GFX90A-NEXT: s_setpc_b64 s[30:31]9823;9824; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_3_1:9825; GFX942: ; %bb.0:9826; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9827; GFX942-NEXT: ;;#ASMSTART9828; GFX942-NEXT: ; def s[0:3]9829; GFX942-NEXT: ;;#ASMEND9830; GFX942-NEXT: ;;#ASMSTART9831; GFX942-NEXT: ; def s[4:7]9832; GFX942-NEXT: ;;#ASMEND9833; GFX942-NEXT: s_mov_b32 s8, s79834; GFX942-NEXT: s_mov_b32 s9, s39835; GFX942-NEXT: s_mov_b32 s10, s19836; GFX942-NEXT: ;;#ASMSTART9837; GFX942-NEXT: ; use s[8:10]9838; GFX942-NEXT: ;;#ASMEND9839; GFX942-NEXT: s_setpc_b64 s[30:31]9840 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9841 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9842 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 1>9843 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)9844 ret void9845}9846 9847define void @s_shuffle_v3p3_v4p3__7_4_1() {9848; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_4_1:9849; GFX900: ; %bb.0:9850; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9851; GFX900-NEXT: ;;#ASMSTART9852; GFX900-NEXT: ; def s[4:7]9853; GFX900-NEXT: ;;#ASMEND9854; GFX900-NEXT: ;;#ASMSTART9855; GFX900-NEXT: ; def s[12:15]9856; GFX900-NEXT: ;;#ASMEND9857; GFX900-NEXT: s_mov_b32 s8, s159858; GFX900-NEXT: s_mov_b32 s9, s129859; GFX900-NEXT: s_mov_b32 s10, s59860; GFX900-NEXT: ;;#ASMSTART9861; GFX900-NEXT: ; use s[8:10]9862; GFX900-NEXT: ;;#ASMEND9863; GFX900-NEXT: s_setpc_b64 s[30:31]9864;9865; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_4_1:9866; GFX90A: ; %bb.0:9867; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9868; GFX90A-NEXT: ;;#ASMSTART9869; GFX90A-NEXT: ; def s[4:7]9870; GFX90A-NEXT: ;;#ASMEND9871; GFX90A-NEXT: ;;#ASMSTART9872; GFX90A-NEXT: ; def s[12:15]9873; GFX90A-NEXT: ;;#ASMEND9874; GFX90A-NEXT: s_mov_b32 s8, s159875; GFX90A-NEXT: s_mov_b32 s9, s129876; GFX90A-NEXT: s_mov_b32 s10, s59877; GFX90A-NEXT: ;;#ASMSTART9878; GFX90A-NEXT: ; use s[8:10]9879; GFX90A-NEXT: ;;#ASMEND9880; GFX90A-NEXT: s_setpc_b64 s[30:31]9881;9882; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_4_1:9883; GFX942: ; %bb.0:9884; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9885; GFX942-NEXT: ;;#ASMSTART9886; GFX942-NEXT: ; def s[0:3]9887; GFX942-NEXT: ;;#ASMEND9888; GFX942-NEXT: ;;#ASMSTART9889; GFX942-NEXT: ; def s[4:7]9890; GFX942-NEXT: ;;#ASMEND9891; GFX942-NEXT: s_mov_b32 s8, s79892; GFX942-NEXT: s_mov_b32 s9, s49893; GFX942-NEXT: s_mov_b32 s10, s19894; GFX942-NEXT: ;;#ASMSTART9895; GFX942-NEXT: ; use s[8:10]9896; GFX942-NEXT: ;;#ASMEND9897; GFX942-NEXT: s_setpc_b64 s[30:31]9898 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9899 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9900 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 1>9901 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)9902 ret void9903}9904 9905define void @s_shuffle_v3p3_v4p3__7_5_1() {9906; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_5_1:9907; GFX900: ; %bb.0:9908; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9909; GFX900-NEXT: ;;#ASMSTART9910; GFX900-NEXT: ; def s[8:11]9911; GFX900-NEXT: ;;#ASMEND9912; GFX900-NEXT: ;;#ASMSTART9913; GFX900-NEXT: ; def s[4:7]9914; GFX900-NEXT: ;;#ASMEND9915; GFX900-NEXT: s_mov_b32 s8, s119916; GFX900-NEXT: s_mov_b32 s10, s59917; GFX900-NEXT: ;;#ASMSTART9918; GFX900-NEXT: ; use s[8:10]9919; GFX900-NEXT: ;;#ASMEND9920; GFX900-NEXT: s_setpc_b64 s[30:31]9921;9922; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_5_1:9923; GFX90A: ; %bb.0:9924; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9925; GFX90A-NEXT: ;;#ASMSTART9926; GFX90A-NEXT: ; def s[8:11]9927; GFX90A-NEXT: ;;#ASMEND9928; GFX90A-NEXT: ;;#ASMSTART9929; GFX90A-NEXT: ; def s[4:7]9930; GFX90A-NEXT: ;;#ASMEND9931; GFX90A-NEXT: s_mov_b32 s8, s119932; GFX90A-NEXT: s_mov_b32 s10, s59933; GFX90A-NEXT: ;;#ASMSTART9934; GFX90A-NEXT: ; use s[8:10]9935; GFX90A-NEXT: ;;#ASMEND9936; GFX90A-NEXT: s_setpc_b64 s[30:31]9937;9938; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_5_1:9939; GFX942: ; %bb.0:9940; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9941; GFX942-NEXT: ;;#ASMSTART9942; GFX942-NEXT: ; def s[8:11]9943; GFX942-NEXT: ;;#ASMEND9944; GFX942-NEXT: ;;#ASMSTART9945; GFX942-NEXT: ; def s[0:3]9946; GFX942-NEXT: ;;#ASMEND9947; GFX942-NEXT: s_mov_b32 s8, s119948; GFX942-NEXT: s_mov_b32 s10, s19949; GFX942-NEXT: ;;#ASMSTART9950; GFX942-NEXT: ; use s[8:10]9951; GFX942-NEXT: ;;#ASMEND9952; GFX942-NEXT: s_setpc_b64 s[30:31]9953 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9954 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()9955 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 1>9956 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)9957 ret void9958}9959 9960define void @s_shuffle_v3p3_v4p3__7_6_1() {9961; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_6_1:9962; GFX900: ; %bb.0:9963; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9964; GFX900-NEXT: ;;#ASMSTART9965; GFX900-NEXT: ; def s[8:11]9966; GFX900-NEXT: ;;#ASMEND9967; GFX900-NEXT: ;;#ASMSTART9968; GFX900-NEXT: ; def s[4:7]9969; GFX900-NEXT: ;;#ASMEND9970; GFX900-NEXT: s_mov_b32 s8, s119971; GFX900-NEXT: s_mov_b32 s9, s109972; GFX900-NEXT: s_mov_b32 s10, s59973; GFX900-NEXT: ;;#ASMSTART9974; GFX900-NEXT: ; use s[8:10]9975; GFX900-NEXT: ;;#ASMEND9976; GFX900-NEXT: s_setpc_b64 s[30:31]9977;9978; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_6_1:9979; GFX90A: ; %bb.0:9980; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9981; GFX90A-NEXT: ;;#ASMSTART9982; GFX90A-NEXT: ; def s[8:11]9983; GFX90A-NEXT: ;;#ASMEND9984; GFX90A-NEXT: ;;#ASMSTART9985; GFX90A-NEXT: ; def s[4:7]9986; GFX90A-NEXT: ;;#ASMEND9987; GFX90A-NEXT: s_mov_b32 s8, s119988; GFX90A-NEXT: s_mov_b32 s9, s109989; GFX90A-NEXT: s_mov_b32 s10, s59990; GFX90A-NEXT: ;;#ASMSTART9991; GFX90A-NEXT: ; use s[8:10]9992; GFX90A-NEXT: ;;#ASMEND9993; GFX90A-NEXT: s_setpc_b64 s[30:31]9994;9995; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_6_1:9996; GFX942: ; %bb.0:9997; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9998; GFX942-NEXT: ;;#ASMSTART9999; GFX942-NEXT: ; def s[0:3]10000; GFX942-NEXT: ;;#ASMEND10001; GFX942-NEXT: ;;#ASMSTART10002; GFX942-NEXT: ; def s[4:7]10003; GFX942-NEXT: ;;#ASMEND10004; GFX942-NEXT: s_mov_b32 s8, s710005; GFX942-NEXT: s_mov_b32 s9, s610006; GFX942-NEXT: s_mov_b32 s10, s110007; GFX942-NEXT: ;;#ASMSTART10008; GFX942-NEXT: ; use s[8:10]10009; GFX942-NEXT: ;;#ASMEND10010; GFX942-NEXT: s_setpc_b64 s[30:31]10011 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10012 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10013 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 1>10014 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)10015 ret void10016}10017 10018define void @s_shuffle_v3p3_v4p3__u_2_2() {10019; GFX9-LABEL: s_shuffle_v3p3_v4p3__u_2_2:10020; GFX9: ; %bb.0:10021; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10022; GFX9-NEXT: ;;#ASMSTART10023; GFX9-NEXT: ; def s[8:11]10024; GFX9-NEXT: ;;#ASMEND10025; GFX9-NEXT: s_mov_b32 s9, s1010026; GFX9-NEXT: ;;#ASMSTART10027; GFX9-NEXT: ; use s[8:10]10028; GFX9-NEXT: ;;#ASMEND10029; GFX9-NEXT: s_setpc_b64 s[30:31]10030 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10031 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 poison, i32 2, i32 2>10032 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)10033 ret void10034}10035 10036define void @s_shuffle_v3p3_v4p3__0_2_2() {10037; GFX9-LABEL: s_shuffle_v3p3_v4p3__0_2_2:10038; GFX9: ; %bb.0:10039; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10040; GFX9-NEXT: ;;#ASMSTART10041; GFX9-NEXT: ; def s[8:11]10042; GFX9-NEXT: ;;#ASMEND10043; GFX9-NEXT: s_mov_b32 s9, s1010044; GFX9-NEXT: ;;#ASMSTART10045; GFX9-NEXT: ; use s[8:10]10046; GFX9-NEXT: ;;#ASMEND10047; GFX9-NEXT: s_setpc_b64 s[30:31]10048 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10049 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 0, i32 2, i32 2>10050 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)10051 ret void10052}10053 10054define void @s_shuffle_v3p3_v4p3__1_2_2() {10055; GFX9-LABEL: s_shuffle_v3p3_v4p3__1_2_2:10056; GFX9: ; %bb.0:10057; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10058; GFX9-NEXT: ;;#ASMSTART10059; GFX9-NEXT: ; def s[8:11]10060; GFX9-NEXT: ;;#ASMEND10061; GFX9-NEXT: s_mov_b32 s8, s910062; GFX9-NEXT: s_mov_b32 s9, s1010063; GFX9-NEXT: ;;#ASMSTART10064; GFX9-NEXT: ; use s[8:10]10065; GFX9-NEXT: ;;#ASMEND10066; GFX9-NEXT: s_setpc_b64 s[30:31]10067 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10068 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 2, i32 2>10069 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)10070 ret void10071}10072 10073define void @s_shuffle_v3p3_v4p3__2_2_2() {10074; GFX9-LABEL: s_shuffle_v3p3_v4p3__2_2_2:10075; GFX9: ; %bb.0:10076; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10077; GFX9-NEXT: ;;#ASMSTART10078; GFX9-NEXT: ; def s[8:11]10079; GFX9-NEXT: ;;#ASMEND10080; GFX9-NEXT: s_mov_b32 s8, s1010081; GFX9-NEXT: s_mov_b32 s9, s1010082; GFX9-NEXT: ;;#ASMSTART10083; GFX9-NEXT: ; use s[8:10]10084; GFX9-NEXT: ;;#ASMEND10085; GFX9-NEXT: s_setpc_b64 s[30:31]10086 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10087 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 2, i32 2>10088 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)10089 ret void10090}10091 10092define void @s_shuffle_v3p3_v4p3__3_2_2() {10093; GFX9-LABEL: s_shuffle_v3p3_v4p3__3_2_2:10094; GFX9: ; %bb.0:10095; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10096; GFX9-NEXT: ;;#ASMSTART10097; GFX9-NEXT: ; def s[8:11]10098; GFX9-NEXT: ;;#ASMEND10099; GFX9-NEXT: s_mov_b32 s8, s1110100; GFX9-NEXT: s_mov_b32 s9, s1010101; GFX9-NEXT: ;;#ASMSTART10102; GFX9-NEXT: ; use s[8:10]10103; GFX9-NEXT: ;;#ASMEND10104; GFX9-NEXT: s_setpc_b64 s[30:31]10105 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10106 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 3, i32 2, i32 2>10107 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)10108 ret void10109}10110 10111define void @s_shuffle_v3p3_v4p3__4_2_2() {10112; GFX9-LABEL: s_shuffle_v3p3_v4p3__4_2_2:10113; GFX9: ; %bb.0:10114; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10115; GFX9-NEXT: ;;#ASMSTART10116; GFX9-NEXT: ; def s[8:11]10117; GFX9-NEXT: ;;#ASMEND10118; GFX9-NEXT: s_mov_b32 s9, s1010119; GFX9-NEXT: ;;#ASMSTART10120; GFX9-NEXT: ; use s[8:10]10121; GFX9-NEXT: ;;#ASMEND10122; GFX9-NEXT: s_setpc_b64 s[30:31]10123 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10124 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 4, i32 2, i32 2>10125 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)10126 ret void10127}10128 10129define void @s_shuffle_v3p3_v4p3__5_2_2() {10130; GFX900-LABEL: s_shuffle_v3p3_v4p3__5_2_2:10131; GFX900: ; %bb.0:10132; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10133; GFX900-NEXT: ;;#ASMSTART10134; GFX900-NEXT: ; def s[8:11]10135; GFX900-NEXT: ;;#ASMEND10136; GFX900-NEXT: ;;#ASMSTART10137; GFX900-NEXT: ; def s[4:7]10138; GFX900-NEXT: ;;#ASMEND10139; GFX900-NEXT: s_mov_b32 s8, s510140; GFX900-NEXT: s_mov_b32 s9, s1010141; GFX900-NEXT: ;;#ASMSTART10142; GFX900-NEXT: ; use s[8:10]10143; GFX900-NEXT: ;;#ASMEND10144; GFX900-NEXT: s_setpc_b64 s[30:31]10145;10146; GFX90A-LABEL: s_shuffle_v3p3_v4p3__5_2_2:10147; GFX90A: ; %bb.0:10148; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10149; GFX90A-NEXT: ;;#ASMSTART10150; GFX90A-NEXT: ; def s[8:11]10151; GFX90A-NEXT: ;;#ASMEND10152; GFX90A-NEXT: ;;#ASMSTART10153; GFX90A-NEXT: ; def s[4:7]10154; GFX90A-NEXT: ;;#ASMEND10155; GFX90A-NEXT: s_mov_b32 s8, s510156; GFX90A-NEXT: s_mov_b32 s9, s1010157; GFX90A-NEXT: ;;#ASMSTART10158; GFX90A-NEXT: ; use s[8:10]10159; GFX90A-NEXT: ;;#ASMEND10160; GFX90A-NEXT: s_setpc_b64 s[30:31]10161;10162; GFX942-LABEL: s_shuffle_v3p3_v4p3__5_2_2:10163; GFX942: ; %bb.0:10164; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10165; GFX942-NEXT: ;;#ASMSTART10166; GFX942-NEXT: ; def s[8:11]10167; GFX942-NEXT: ;;#ASMEND10168; GFX942-NEXT: ;;#ASMSTART10169; GFX942-NEXT: ; def s[0:3]10170; GFX942-NEXT: ;;#ASMEND10171; GFX942-NEXT: s_mov_b32 s8, s110172; GFX942-NEXT: s_mov_b32 s9, s1010173; GFX942-NEXT: ;;#ASMSTART10174; GFX942-NEXT: ; use s[8:10]10175; GFX942-NEXT: ;;#ASMEND10176; GFX942-NEXT: s_setpc_b64 s[30:31]10177 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10178 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10179 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 2, i32 2>10180 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)10181 ret void10182}10183 10184define void @s_shuffle_v3p3_v4p3__6_2_2() {10185; GFX900-LABEL: s_shuffle_v3p3_v4p3__6_2_2:10186; GFX900: ; %bb.0:10187; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10188; GFX900-NEXT: ;;#ASMSTART10189; GFX900-NEXT: ; def s[8:11]10190; GFX900-NEXT: ;;#ASMEND10191; GFX900-NEXT: ;;#ASMSTART10192; GFX900-NEXT: ; def s[4:7]10193; GFX900-NEXT: ;;#ASMEND10194; GFX900-NEXT: s_mov_b32 s8, s610195; GFX900-NEXT: s_mov_b32 s9, s1010196; GFX900-NEXT: ;;#ASMSTART10197; GFX900-NEXT: ; use s[8:10]10198; GFX900-NEXT: ;;#ASMEND10199; GFX900-NEXT: s_setpc_b64 s[30:31]10200;10201; GFX90A-LABEL: s_shuffle_v3p3_v4p3__6_2_2:10202; GFX90A: ; %bb.0:10203; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10204; GFX90A-NEXT: ;;#ASMSTART10205; GFX90A-NEXT: ; def s[8:11]10206; GFX90A-NEXT: ;;#ASMEND10207; GFX90A-NEXT: ;;#ASMSTART10208; GFX90A-NEXT: ; def s[4:7]10209; GFX90A-NEXT: ;;#ASMEND10210; GFX90A-NEXT: s_mov_b32 s8, s610211; GFX90A-NEXT: s_mov_b32 s9, s1010212; GFX90A-NEXT: ;;#ASMSTART10213; GFX90A-NEXT: ; use s[8:10]10214; GFX90A-NEXT: ;;#ASMEND10215; GFX90A-NEXT: s_setpc_b64 s[30:31]10216;10217; GFX942-LABEL: s_shuffle_v3p3_v4p3__6_2_2:10218; GFX942: ; %bb.0:10219; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10220; GFX942-NEXT: ;;#ASMSTART10221; GFX942-NEXT: ; def s[8:11]10222; GFX942-NEXT: ;;#ASMEND10223; GFX942-NEXT: ;;#ASMSTART10224; GFX942-NEXT: ; def s[0:3]10225; GFX942-NEXT: ;;#ASMEND10226; GFX942-NEXT: s_mov_b32 s8, s210227; GFX942-NEXT: s_mov_b32 s9, s1010228; GFX942-NEXT: ;;#ASMSTART10229; GFX942-NEXT: ; use s[8:10]10230; GFX942-NEXT: ;;#ASMEND10231; GFX942-NEXT: s_setpc_b64 s[30:31]10232 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10233 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10234 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 2, i32 2>10235 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)10236 ret void10237}10238 10239define void @s_shuffle_v3p3_v4p3__7_2_2() {10240; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_2_2:10241; GFX900: ; %bb.0:10242; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10243; GFX900-NEXT: ;;#ASMSTART10244; GFX900-NEXT: ; def s[8:11]10245; GFX900-NEXT: ;;#ASMEND10246; GFX900-NEXT: ;;#ASMSTART10247; GFX900-NEXT: ; def s[4:7]10248; GFX900-NEXT: ;;#ASMEND10249; GFX900-NEXT: s_mov_b32 s8, s710250; GFX900-NEXT: s_mov_b32 s9, s1010251; GFX900-NEXT: ;;#ASMSTART10252; GFX900-NEXT: ; use s[8:10]10253; GFX900-NEXT: ;;#ASMEND10254; GFX900-NEXT: s_setpc_b64 s[30:31]10255;10256; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_2_2:10257; GFX90A: ; %bb.0:10258; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10259; GFX90A-NEXT: ;;#ASMSTART10260; GFX90A-NEXT: ; def s[8:11]10261; GFX90A-NEXT: ;;#ASMEND10262; GFX90A-NEXT: ;;#ASMSTART10263; GFX90A-NEXT: ; def s[4:7]10264; GFX90A-NEXT: ;;#ASMEND10265; GFX90A-NEXT: s_mov_b32 s8, s710266; GFX90A-NEXT: s_mov_b32 s9, s1010267; GFX90A-NEXT: ;;#ASMSTART10268; GFX90A-NEXT: ; use s[8:10]10269; GFX90A-NEXT: ;;#ASMEND10270; GFX90A-NEXT: s_setpc_b64 s[30:31]10271;10272; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_2_2:10273; GFX942: ; %bb.0:10274; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10275; GFX942-NEXT: ;;#ASMSTART10276; GFX942-NEXT: ; def s[8:11]10277; GFX942-NEXT: ;;#ASMEND10278; GFX942-NEXT: ;;#ASMSTART10279; GFX942-NEXT: ; def s[0:3]10280; GFX942-NEXT: ;;#ASMEND10281; GFX942-NEXT: s_mov_b32 s8, s310282; GFX942-NEXT: s_mov_b32 s9, s1010283; GFX942-NEXT: ;;#ASMSTART10284; GFX942-NEXT: ; use s[8:10]10285; GFX942-NEXT: ;;#ASMEND10286; GFX942-NEXT: s_setpc_b64 s[30:31]10287 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10288 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10289 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 2>10290 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)10291 ret void10292}10293 10294define void @s_shuffle_v3p3_v4p3__7_u_2() {10295; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_u_2:10296; GFX900: ; %bb.0:10297; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10298; GFX900-NEXT: ;;#ASMSTART10299; GFX900-NEXT: ; def s[8:11]10300; GFX900-NEXT: ;;#ASMEND10301; GFX900-NEXT: ;;#ASMSTART10302; GFX900-NEXT: ; def s[4:7]10303; GFX900-NEXT: ;;#ASMEND10304; GFX900-NEXT: s_mov_b32 s8, s710305; GFX900-NEXT: ;;#ASMSTART10306; GFX900-NEXT: ; use s[8:10]10307; GFX900-NEXT: ;;#ASMEND10308; GFX900-NEXT: s_setpc_b64 s[30:31]10309;10310; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_u_2:10311; GFX90A: ; %bb.0:10312; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10313; GFX90A-NEXT: ;;#ASMSTART10314; GFX90A-NEXT: ; def s[8:11]10315; GFX90A-NEXT: ;;#ASMEND10316; GFX90A-NEXT: ;;#ASMSTART10317; GFX90A-NEXT: ; def s[4:7]10318; GFX90A-NEXT: ;;#ASMEND10319; GFX90A-NEXT: s_mov_b32 s8, s710320; GFX90A-NEXT: ;;#ASMSTART10321; GFX90A-NEXT: ; use s[8:10]10322; GFX90A-NEXT: ;;#ASMEND10323; GFX90A-NEXT: s_setpc_b64 s[30:31]10324;10325; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_u_2:10326; GFX942: ; %bb.0:10327; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10328; GFX942-NEXT: ;;#ASMSTART10329; GFX942-NEXT: ; def s[8:11]10330; GFX942-NEXT: ;;#ASMEND10331; GFX942-NEXT: ;;#ASMSTART10332; GFX942-NEXT: ; def s[0:3]10333; GFX942-NEXT: ;;#ASMEND10334; GFX942-NEXT: s_mov_b32 s8, s310335; GFX942-NEXT: ;;#ASMSTART10336; GFX942-NEXT: ; use s[8:10]10337; GFX942-NEXT: ;;#ASMEND10338; GFX942-NEXT: s_setpc_b64 s[30:31]10339 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10340 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10341 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 2>10342 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)10343 ret void10344}10345 10346define void @s_shuffle_v3p3_v4p3__7_0_2() {10347; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_0_2:10348; GFX900: ; %bb.0:10349; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10350; GFX900-NEXT: ;;#ASMSTART10351; GFX900-NEXT: ; def s[8:11]10352; GFX900-NEXT: ;;#ASMEND10353; GFX900-NEXT: ;;#ASMSTART10354; GFX900-NEXT: ; def s[4:7]10355; GFX900-NEXT: ;;#ASMEND10356; GFX900-NEXT: s_mov_b32 s8, s1110357; GFX900-NEXT: s_mov_b32 s9, s410358; GFX900-NEXT: s_mov_b32 s10, s610359; GFX900-NEXT: ;;#ASMSTART10360; GFX900-NEXT: ; use s[8:10]10361; GFX900-NEXT: ;;#ASMEND10362; GFX900-NEXT: s_setpc_b64 s[30:31]10363;10364; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_0_2:10365; GFX90A: ; %bb.0:10366; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10367; GFX90A-NEXT: ;;#ASMSTART10368; GFX90A-NEXT: ; def s[8:11]10369; GFX90A-NEXT: ;;#ASMEND10370; GFX90A-NEXT: ;;#ASMSTART10371; GFX90A-NEXT: ; def s[4:7]10372; GFX90A-NEXT: ;;#ASMEND10373; GFX90A-NEXT: s_mov_b32 s8, s1110374; GFX90A-NEXT: s_mov_b32 s9, s410375; GFX90A-NEXT: s_mov_b32 s10, s610376; GFX90A-NEXT: ;;#ASMSTART10377; GFX90A-NEXT: ; use s[8:10]10378; GFX90A-NEXT: ;;#ASMEND10379; GFX90A-NEXT: s_setpc_b64 s[30:31]10380;10381; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_0_2:10382; GFX942: ; %bb.0:10383; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10384; GFX942-NEXT: ;;#ASMSTART10385; GFX942-NEXT: ; def s[0:3]10386; GFX942-NEXT: ;;#ASMEND10387; GFX942-NEXT: ;;#ASMSTART10388; GFX942-NEXT: ; def s[4:7]10389; GFX942-NEXT: ;;#ASMEND10390; GFX942-NEXT: s_mov_b32 s8, s710391; GFX942-NEXT: s_mov_b32 s9, s010392; GFX942-NEXT: s_mov_b32 s10, s210393; GFX942-NEXT: ;;#ASMSTART10394; GFX942-NEXT: ; use s[8:10]10395; GFX942-NEXT: ;;#ASMEND10396; GFX942-NEXT: s_setpc_b64 s[30:31]10397 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10398 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10399 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 2>10400 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)10401 ret void10402}10403 10404define void @s_shuffle_v3p3_v4p3__7_1_2() {10405; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_1_2:10406; GFX900: ; %bb.0:10407; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10408; GFX900-NEXT: ;;#ASMSTART10409; GFX900-NEXT: ; def s[8:11]10410; GFX900-NEXT: ;;#ASMEND10411; GFX900-NEXT: ;;#ASMSTART10412; GFX900-NEXT: ; def s[4:7]10413; GFX900-NEXT: ;;#ASMEND10414; GFX900-NEXT: s_mov_b32 s8, s710415; GFX900-NEXT: ;;#ASMSTART10416; GFX900-NEXT: ; use s[8:10]10417; GFX900-NEXT: ;;#ASMEND10418; GFX900-NEXT: s_setpc_b64 s[30:31]10419;10420; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_1_2:10421; GFX90A: ; %bb.0:10422; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10423; GFX90A-NEXT: ;;#ASMSTART10424; GFX90A-NEXT: ; def s[8:11]10425; GFX90A-NEXT: ;;#ASMEND10426; GFX90A-NEXT: ;;#ASMSTART10427; GFX90A-NEXT: ; def s[4:7]10428; GFX90A-NEXT: ;;#ASMEND10429; GFX90A-NEXT: s_mov_b32 s8, s710430; GFX90A-NEXT: ;;#ASMSTART10431; GFX90A-NEXT: ; use s[8:10]10432; GFX90A-NEXT: ;;#ASMEND10433; GFX90A-NEXT: s_setpc_b64 s[30:31]10434;10435; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_1_2:10436; GFX942: ; %bb.0:10437; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10438; GFX942-NEXT: ;;#ASMSTART10439; GFX942-NEXT: ; def s[8:11]10440; GFX942-NEXT: ;;#ASMEND10441; GFX942-NEXT: ;;#ASMSTART10442; GFX942-NEXT: ; def s[0:3]10443; GFX942-NEXT: ;;#ASMEND10444; GFX942-NEXT: s_mov_b32 s8, s310445; GFX942-NEXT: ;;#ASMSTART10446; GFX942-NEXT: ; use s[8:10]10447; GFX942-NEXT: ;;#ASMEND10448; GFX942-NEXT: s_setpc_b64 s[30:31]10449 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10450 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10451 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 2>10452 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)10453 ret void10454}10455 10456define void @s_shuffle_v3p3_v4p3__7_3_2() {10457; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_3_2:10458; GFX900: ; %bb.0:10459; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10460; GFX900-NEXT: ;;#ASMSTART10461; GFX900-NEXT: ; def s[8:11]10462; GFX900-NEXT: ;;#ASMEND10463; GFX900-NEXT: ;;#ASMSTART10464; GFX900-NEXT: ; def s[4:7]10465; GFX900-NEXT: ;;#ASMEND10466; GFX900-NEXT: s_mov_b32 s8, s710467; GFX900-NEXT: s_mov_b32 s9, s1110468; GFX900-NEXT: ;;#ASMSTART10469; GFX900-NEXT: ; use s[8:10]10470; GFX900-NEXT: ;;#ASMEND10471; GFX900-NEXT: s_setpc_b64 s[30:31]10472;10473; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_3_2:10474; GFX90A: ; %bb.0:10475; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10476; GFX90A-NEXT: ;;#ASMSTART10477; GFX90A-NEXT: ; def s[8:11]10478; GFX90A-NEXT: ;;#ASMEND10479; GFX90A-NEXT: ;;#ASMSTART10480; GFX90A-NEXT: ; def s[4:7]10481; GFX90A-NEXT: ;;#ASMEND10482; GFX90A-NEXT: s_mov_b32 s8, s710483; GFX90A-NEXT: s_mov_b32 s9, s1110484; GFX90A-NEXT: ;;#ASMSTART10485; GFX90A-NEXT: ; use s[8:10]10486; GFX90A-NEXT: ;;#ASMEND10487; GFX90A-NEXT: s_setpc_b64 s[30:31]10488;10489; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_3_2:10490; GFX942: ; %bb.0:10491; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10492; GFX942-NEXT: ;;#ASMSTART10493; GFX942-NEXT: ; def s[8:11]10494; GFX942-NEXT: ;;#ASMEND10495; GFX942-NEXT: ;;#ASMSTART10496; GFX942-NEXT: ; def s[0:3]10497; GFX942-NEXT: ;;#ASMEND10498; GFX942-NEXT: s_mov_b32 s8, s310499; GFX942-NEXT: s_mov_b32 s9, s1110500; GFX942-NEXT: ;;#ASMSTART10501; GFX942-NEXT: ; use s[8:10]10502; GFX942-NEXT: ;;#ASMEND10503; GFX942-NEXT: s_setpc_b64 s[30:31]10504 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10505 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10506 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 2>10507 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)10508 ret void10509}10510 10511define void @s_shuffle_v3p3_v4p3__7_4_2() {10512; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_4_2:10513; GFX900: ; %bb.0:10514; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10515; GFX900-NEXT: ;;#ASMSTART10516; GFX900-NEXT: ; def s[8:11]10517; GFX900-NEXT: ;;#ASMEND10518; GFX900-NEXT: ;;#ASMSTART10519; GFX900-NEXT: ; def s[4:7]10520; GFX900-NEXT: ;;#ASMEND10521; GFX900-NEXT: s_mov_b32 s8, s710522; GFX900-NEXT: s_mov_b32 s9, s410523; GFX900-NEXT: ;;#ASMSTART10524; GFX900-NEXT: ; use s[8:10]10525; GFX900-NEXT: ;;#ASMEND10526; GFX900-NEXT: s_setpc_b64 s[30:31]10527;10528; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_4_2:10529; GFX90A: ; %bb.0:10530; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10531; GFX90A-NEXT: ;;#ASMSTART10532; GFX90A-NEXT: ; def s[8:11]10533; GFX90A-NEXT: ;;#ASMEND10534; GFX90A-NEXT: ;;#ASMSTART10535; GFX90A-NEXT: ; def s[4:7]10536; GFX90A-NEXT: ;;#ASMEND10537; GFX90A-NEXT: s_mov_b32 s8, s710538; GFX90A-NEXT: s_mov_b32 s9, s410539; GFX90A-NEXT: ;;#ASMSTART10540; GFX90A-NEXT: ; use s[8:10]10541; GFX90A-NEXT: ;;#ASMEND10542; GFX90A-NEXT: s_setpc_b64 s[30:31]10543;10544; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_4_2:10545; GFX942: ; %bb.0:10546; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10547; GFX942-NEXT: ;;#ASMSTART10548; GFX942-NEXT: ; def s[8:11]10549; GFX942-NEXT: ;;#ASMEND10550; GFX942-NEXT: ;;#ASMSTART10551; GFX942-NEXT: ; def s[0:3]10552; GFX942-NEXT: ;;#ASMEND10553; GFX942-NEXT: s_mov_b32 s8, s310554; GFX942-NEXT: s_mov_b32 s9, s010555; GFX942-NEXT: ;;#ASMSTART10556; GFX942-NEXT: ; use s[8:10]10557; GFX942-NEXT: ;;#ASMEND10558; GFX942-NEXT: s_setpc_b64 s[30:31]10559 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10560 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10561 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 2>10562 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)10563 ret void10564}10565 10566define void @s_shuffle_v3p3_v4p3__7_5_2() {10567; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_5_2:10568; GFX900: ; %bb.0:10569; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10570; GFX900-NEXT: ;;#ASMSTART10571; GFX900-NEXT: ; def s[8:11]10572; GFX900-NEXT: ;;#ASMEND10573; GFX900-NEXT: ;;#ASMSTART10574; GFX900-NEXT: ; def s[4:7]10575; GFX900-NEXT: ;;#ASMEND10576; GFX900-NEXT: s_mov_b32 s8, s1110577; GFX900-NEXT: s_mov_b32 s10, s610578; GFX900-NEXT: ;;#ASMSTART10579; GFX900-NEXT: ; use s[8:10]10580; GFX900-NEXT: ;;#ASMEND10581; GFX900-NEXT: s_setpc_b64 s[30:31]10582;10583; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_5_2:10584; GFX90A: ; %bb.0:10585; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10586; GFX90A-NEXT: ;;#ASMSTART10587; GFX90A-NEXT: ; def s[8:11]10588; GFX90A-NEXT: ;;#ASMEND10589; GFX90A-NEXT: ;;#ASMSTART10590; GFX90A-NEXT: ; def s[4:7]10591; GFX90A-NEXT: ;;#ASMEND10592; GFX90A-NEXT: s_mov_b32 s8, s1110593; GFX90A-NEXT: s_mov_b32 s10, s610594; GFX90A-NEXT: ;;#ASMSTART10595; GFX90A-NEXT: ; use s[8:10]10596; GFX90A-NEXT: ;;#ASMEND10597; GFX90A-NEXT: s_setpc_b64 s[30:31]10598;10599; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_5_2:10600; GFX942: ; %bb.0:10601; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10602; GFX942-NEXT: ;;#ASMSTART10603; GFX942-NEXT: ; def s[8:11]10604; GFX942-NEXT: ;;#ASMEND10605; GFX942-NEXT: ;;#ASMSTART10606; GFX942-NEXT: ; def s[0:3]10607; GFX942-NEXT: ;;#ASMEND10608; GFX942-NEXT: s_mov_b32 s8, s1110609; GFX942-NEXT: s_mov_b32 s10, s210610; GFX942-NEXT: ;;#ASMSTART10611; GFX942-NEXT: ; use s[8:10]10612; GFX942-NEXT: ;;#ASMEND10613; GFX942-NEXT: s_setpc_b64 s[30:31]10614 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10615 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10616 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 2>10617 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)10618 ret void10619}10620 10621define void @s_shuffle_v3p3_v4p3__7_6_2() {10622; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_6_2:10623; GFX900: ; %bb.0:10624; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10625; GFX900-NEXT: ;;#ASMSTART10626; GFX900-NEXT: ; def s[8:11]10627; GFX900-NEXT: ;;#ASMEND10628; GFX900-NEXT: ;;#ASMSTART10629; GFX900-NEXT: ; def s[4:7]10630; GFX900-NEXT: ;;#ASMEND10631; GFX900-NEXT: s_mov_b32 s8, s710632; GFX900-NEXT: s_mov_b32 s9, s610633; GFX900-NEXT: ;;#ASMSTART10634; GFX900-NEXT: ; use s[8:10]10635; GFX900-NEXT: ;;#ASMEND10636; GFX900-NEXT: s_setpc_b64 s[30:31]10637;10638; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_6_2:10639; GFX90A: ; %bb.0:10640; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10641; GFX90A-NEXT: ;;#ASMSTART10642; GFX90A-NEXT: ; def s[8:11]10643; GFX90A-NEXT: ;;#ASMEND10644; GFX90A-NEXT: ;;#ASMSTART10645; GFX90A-NEXT: ; def s[4:7]10646; GFX90A-NEXT: ;;#ASMEND10647; GFX90A-NEXT: s_mov_b32 s8, s710648; GFX90A-NEXT: s_mov_b32 s9, s610649; GFX90A-NEXT: ;;#ASMSTART10650; GFX90A-NEXT: ; use s[8:10]10651; GFX90A-NEXT: ;;#ASMEND10652; GFX90A-NEXT: s_setpc_b64 s[30:31]10653;10654; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_6_2:10655; GFX942: ; %bb.0:10656; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10657; GFX942-NEXT: ;;#ASMSTART10658; GFX942-NEXT: ; def s[8:11]10659; GFX942-NEXT: ;;#ASMEND10660; GFX942-NEXT: ;;#ASMSTART10661; GFX942-NEXT: ; def s[0:3]10662; GFX942-NEXT: ;;#ASMEND10663; GFX942-NEXT: s_mov_b32 s8, s310664; GFX942-NEXT: s_mov_b32 s9, s210665; GFX942-NEXT: ;;#ASMSTART10666; GFX942-NEXT: ; use s[8:10]10667; GFX942-NEXT: ;;#ASMEND10668; GFX942-NEXT: s_setpc_b64 s[30:31]10669 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10670 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10671 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 2>10672 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)10673 ret void10674}10675 10676define void @s_shuffle_v3p3_v4p3__u_3_3() {10677; GFX900-LABEL: s_shuffle_v3p3_v4p3__u_3_3:10678; GFX900: ; %bb.0:10679; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10680; GFX900-NEXT: ;;#ASMSTART10681; GFX900-NEXT: ; def s[4:7]10682; GFX900-NEXT: ;;#ASMEND10683; GFX900-NEXT: s_mov_b32 s9, s710684; GFX900-NEXT: s_mov_b32 s10, s710685; GFX900-NEXT: ;;#ASMSTART10686; GFX900-NEXT: ; use s[8:10]10687; GFX900-NEXT: ;;#ASMEND10688; GFX900-NEXT: s_setpc_b64 s[30:31]10689;10690; GFX90A-LABEL: s_shuffle_v3p3_v4p3__u_3_3:10691; GFX90A: ; %bb.0:10692; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10693; GFX90A-NEXT: ;;#ASMSTART10694; GFX90A-NEXT: ; def s[4:7]10695; GFX90A-NEXT: ;;#ASMEND10696; GFX90A-NEXT: s_mov_b32 s9, s710697; GFX90A-NEXT: s_mov_b32 s10, s710698; GFX90A-NEXT: ;;#ASMSTART10699; GFX90A-NEXT: ; use s[8:10]10700; GFX90A-NEXT: ;;#ASMEND10701; GFX90A-NEXT: s_setpc_b64 s[30:31]10702;10703; GFX942-LABEL: s_shuffle_v3p3_v4p3__u_3_3:10704; GFX942: ; %bb.0:10705; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10706; GFX942-NEXT: ;;#ASMSTART10707; GFX942-NEXT: ; def s[0:3]10708; GFX942-NEXT: ;;#ASMEND10709; GFX942-NEXT: s_mov_b32 s9, s310710; GFX942-NEXT: s_mov_b32 s10, s310711; GFX942-NEXT: ;;#ASMSTART10712; GFX942-NEXT: ; use s[8:10]10713; GFX942-NEXT: ;;#ASMEND10714; GFX942-NEXT: s_setpc_b64 s[30:31]10715 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10716 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 poison, i32 3, i32 3>10717 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)10718 ret void10719}10720 10721define void @s_shuffle_v3p3_v4p3__0_3_3() {10722; GFX9-LABEL: s_shuffle_v3p3_v4p3__0_3_3:10723; GFX9: ; %bb.0:10724; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10725; GFX9-NEXT: ;;#ASMSTART10726; GFX9-NEXT: ; def s[8:11]10727; GFX9-NEXT: ;;#ASMEND10728; GFX9-NEXT: s_mov_b32 s9, s1110729; GFX9-NEXT: s_mov_b32 s10, s1110730; GFX9-NEXT: ;;#ASMSTART10731; GFX9-NEXT: ; use s[8:10]10732; GFX9-NEXT: ;;#ASMEND10733; GFX9-NEXT: s_setpc_b64 s[30:31]10734 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10735 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 0, i32 3, i32 3>10736 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)10737 ret void10738}10739 10740define void @s_shuffle_v3p3_v4p3__1_3_3() {10741; GFX900-LABEL: s_shuffle_v3p3_v4p3__1_3_3:10742; GFX900: ; %bb.0:10743; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10744; GFX900-NEXT: ;;#ASMSTART10745; GFX900-NEXT: ; def s[4:7]10746; GFX900-NEXT: ;;#ASMEND10747; GFX900-NEXT: s_mov_b32 s8, s510748; GFX900-NEXT: s_mov_b32 s9, s710749; GFX900-NEXT: s_mov_b32 s10, s710750; GFX900-NEXT: ;;#ASMSTART10751; GFX900-NEXT: ; use s[8:10]10752; GFX900-NEXT: ;;#ASMEND10753; GFX900-NEXT: s_setpc_b64 s[30:31]10754;10755; GFX90A-LABEL: s_shuffle_v3p3_v4p3__1_3_3:10756; GFX90A: ; %bb.0:10757; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10758; GFX90A-NEXT: ;;#ASMSTART10759; GFX90A-NEXT: ; def s[4:7]10760; GFX90A-NEXT: ;;#ASMEND10761; GFX90A-NEXT: s_mov_b32 s8, s510762; GFX90A-NEXT: s_mov_b32 s9, s710763; GFX90A-NEXT: s_mov_b32 s10, s710764; GFX90A-NEXT: ;;#ASMSTART10765; GFX90A-NEXT: ; use s[8:10]10766; GFX90A-NEXT: ;;#ASMEND10767; GFX90A-NEXT: s_setpc_b64 s[30:31]10768;10769; GFX942-LABEL: s_shuffle_v3p3_v4p3__1_3_3:10770; GFX942: ; %bb.0:10771; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10772; GFX942-NEXT: ;;#ASMSTART10773; GFX942-NEXT: ; def s[0:3]10774; GFX942-NEXT: ;;#ASMEND10775; GFX942-NEXT: s_mov_b32 s8, s110776; GFX942-NEXT: s_mov_b32 s9, s310777; GFX942-NEXT: s_mov_b32 s10, s310778; GFX942-NEXT: ;;#ASMSTART10779; GFX942-NEXT: ; use s[8:10]10780; GFX942-NEXT: ;;#ASMEND10781; GFX942-NEXT: s_setpc_b64 s[30:31]10782 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10783 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 3, i32 3>10784 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)10785 ret void10786}10787 10788define void @s_shuffle_v3p3_v4p3__2_3_3() {10789; GFX900-LABEL: s_shuffle_v3p3_v4p3__2_3_3:10790; GFX900: ; %bb.0:10791; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10792; GFX900-NEXT: ;;#ASMSTART10793; GFX900-NEXT: ; def s[4:7]10794; GFX900-NEXT: ;;#ASMEND10795; GFX900-NEXT: s_mov_b32 s8, s610796; GFX900-NEXT: s_mov_b32 s9, s710797; GFX900-NEXT: s_mov_b32 s10, s710798; GFX900-NEXT: ;;#ASMSTART10799; GFX900-NEXT: ; use s[8:10]10800; GFX900-NEXT: ;;#ASMEND10801; GFX900-NEXT: s_setpc_b64 s[30:31]10802;10803; GFX90A-LABEL: s_shuffle_v3p3_v4p3__2_3_3:10804; GFX90A: ; %bb.0:10805; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10806; GFX90A-NEXT: ;;#ASMSTART10807; GFX90A-NEXT: ; def s[4:7]10808; GFX90A-NEXT: ;;#ASMEND10809; GFX90A-NEXT: s_mov_b32 s8, s610810; GFX90A-NEXT: s_mov_b32 s9, s710811; GFX90A-NEXT: s_mov_b32 s10, s710812; GFX90A-NEXT: ;;#ASMSTART10813; GFX90A-NEXT: ; use s[8:10]10814; GFX90A-NEXT: ;;#ASMEND10815; GFX90A-NEXT: s_setpc_b64 s[30:31]10816;10817; GFX942-LABEL: s_shuffle_v3p3_v4p3__2_3_3:10818; GFX942: ; %bb.0:10819; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10820; GFX942-NEXT: ;;#ASMSTART10821; GFX942-NEXT: ; def s[0:3]10822; GFX942-NEXT: ;;#ASMEND10823; GFX942-NEXT: s_mov_b32 s8, s210824; GFX942-NEXT: s_mov_b32 s9, s310825; GFX942-NEXT: s_mov_b32 s10, s310826; GFX942-NEXT: ;;#ASMSTART10827; GFX942-NEXT: ; use s[8:10]10828; GFX942-NEXT: ;;#ASMEND10829; GFX942-NEXT: s_setpc_b64 s[30:31]10830 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10831 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 3, i32 3>10832 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)10833 ret void10834}10835 10836define void @s_shuffle_v3p3_v4p3__3_3_3() {10837; GFX900-LABEL: s_shuffle_v3p3_v4p3__3_3_3:10838; GFX900: ; %bb.0:10839; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10840; GFX900-NEXT: ;;#ASMSTART10841; GFX900-NEXT: ; def s[4:7]10842; GFX900-NEXT: ;;#ASMEND10843; GFX900-NEXT: s_mov_b32 s8, s710844; GFX900-NEXT: s_mov_b32 s9, s710845; GFX900-NEXT: s_mov_b32 s10, s710846; GFX900-NEXT: ;;#ASMSTART10847; GFX900-NEXT: ; use s[8:10]10848; GFX900-NEXT: ;;#ASMEND10849; GFX900-NEXT: s_setpc_b64 s[30:31]10850;10851; GFX90A-LABEL: s_shuffle_v3p3_v4p3__3_3_3:10852; GFX90A: ; %bb.0:10853; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10854; GFX90A-NEXT: ;;#ASMSTART10855; GFX90A-NEXT: ; def s[4:7]10856; GFX90A-NEXT: ;;#ASMEND10857; GFX90A-NEXT: s_mov_b32 s8, s710858; GFX90A-NEXT: s_mov_b32 s9, s710859; GFX90A-NEXT: s_mov_b32 s10, s710860; GFX90A-NEXT: ;;#ASMSTART10861; GFX90A-NEXT: ; use s[8:10]10862; GFX90A-NEXT: ;;#ASMEND10863; GFX90A-NEXT: s_setpc_b64 s[30:31]10864;10865; GFX942-LABEL: s_shuffle_v3p3_v4p3__3_3_3:10866; GFX942: ; %bb.0:10867; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10868; GFX942-NEXT: ;;#ASMSTART10869; GFX942-NEXT: ; def s[0:3]10870; GFX942-NEXT: ;;#ASMEND10871; GFX942-NEXT: s_mov_b32 s8, s310872; GFX942-NEXT: s_mov_b32 s9, s310873; GFX942-NEXT: s_mov_b32 s10, s310874; GFX942-NEXT: ;;#ASMSTART10875; GFX942-NEXT: ; use s[8:10]10876; GFX942-NEXT: ;;#ASMEND10877; GFX942-NEXT: s_setpc_b64 s[30:31]10878 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10879 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 3, i32 3, i32 3>10880 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)10881 ret void10882}10883 10884define void @s_shuffle_v3p3_v4p3__4_3_3() {10885; GFX900-LABEL: s_shuffle_v3p3_v4p3__4_3_3:10886; GFX900: ; %bb.0:10887; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10888; GFX900-NEXT: ;;#ASMSTART10889; GFX900-NEXT: ; def s[4:7]10890; GFX900-NEXT: ;;#ASMEND10891; GFX900-NEXT: s_mov_b32 s9, s710892; GFX900-NEXT: s_mov_b32 s10, s710893; GFX900-NEXT: ;;#ASMSTART10894; GFX900-NEXT: ; use s[8:10]10895; GFX900-NEXT: ;;#ASMEND10896; GFX900-NEXT: s_setpc_b64 s[30:31]10897;10898; GFX90A-LABEL: s_shuffle_v3p3_v4p3__4_3_3:10899; GFX90A: ; %bb.0:10900; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10901; GFX90A-NEXT: ;;#ASMSTART10902; GFX90A-NEXT: ; def s[4:7]10903; GFX90A-NEXT: ;;#ASMEND10904; GFX90A-NEXT: s_mov_b32 s9, s710905; GFX90A-NEXT: s_mov_b32 s10, s710906; GFX90A-NEXT: ;;#ASMSTART10907; GFX90A-NEXT: ; use s[8:10]10908; GFX90A-NEXT: ;;#ASMEND10909; GFX90A-NEXT: s_setpc_b64 s[30:31]10910;10911; GFX942-LABEL: s_shuffle_v3p3_v4p3__4_3_3:10912; GFX942: ; %bb.0:10913; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10914; GFX942-NEXT: ;;#ASMSTART10915; GFX942-NEXT: ; def s[0:3]10916; GFX942-NEXT: ;;#ASMEND10917; GFX942-NEXT: s_mov_b32 s9, s310918; GFX942-NEXT: s_mov_b32 s10, s310919; GFX942-NEXT: ;;#ASMSTART10920; GFX942-NEXT: ; use s[8:10]10921; GFX942-NEXT: ;;#ASMEND10922; GFX942-NEXT: s_setpc_b64 s[30:31]10923 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10924 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 4, i32 3, i32 3>10925 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)10926 ret void10927}10928 10929define void @s_shuffle_v3p3_v4p3__5_3_3() {10930; GFX900-LABEL: s_shuffle_v3p3_v4p3__5_3_3:10931; GFX900: ; %bb.0:10932; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10933; GFX900-NEXT: ;;#ASMSTART10934; GFX900-NEXT: ; def s[8:11]10935; GFX900-NEXT: ;;#ASMEND10936; GFX900-NEXT: ;;#ASMSTART10937; GFX900-NEXT: ; def s[4:7]10938; GFX900-NEXT: ;;#ASMEND10939; GFX900-NEXT: s_mov_b32 s8, s910940; GFX900-NEXT: s_mov_b32 s9, s710941; GFX900-NEXT: s_mov_b32 s10, s710942; GFX900-NEXT: ;;#ASMSTART10943; GFX900-NEXT: ; use s[8:10]10944; GFX900-NEXT: ;;#ASMEND10945; GFX900-NEXT: s_setpc_b64 s[30:31]10946;10947; GFX90A-LABEL: s_shuffle_v3p3_v4p3__5_3_3:10948; GFX90A: ; %bb.0:10949; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10950; GFX90A-NEXT: ;;#ASMSTART10951; GFX90A-NEXT: ; def s[8:11]10952; GFX90A-NEXT: ;;#ASMEND10953; GFX90A-NEXT: ;;#ASMSTART10954; GFX90A-NEXT: ; def s[4:7]10955; GFX90A-NEXT: ;;#ASMEND10956; GFX90A-NEXT: s_mov_b32 s8, s910957; GFX90A-NEXT: s_mov_b32 s9, s710958; GFX90A-NEXT: s_mov_b32 s10, s710959; GFX90A-NEXT: ;;#ASMSTART10960; GFX90A-NEXT: ; use s[8:10]10961; GFX90A-NEXT: ;;#ASMEND10962; GFX90A-NEXT: s_setpc_b64 s[30:31]10963;10964; GFX942-LABEL: s_shuffle_v3p3_v4p3__5_3_3:10965; GFX942: ; %bb.0:10966; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10967; GFX942-NEXT: ;;#ASMSTART10968; GFX942-NEXT: ; def s[0:3]10969; GFX942-NEXT: ;;#ASMEND10970; GFX942-NEXT: ;;#ASMSTART10971; GFX942-NEXT: ; def s[4:7]10972; GFX942-NEXT: ;;#ASMEND10973; GFX942-NEXT: s_mov_b32 s8, s510974; GFX942-NEXT: s_mov_b32 s9, s310975; GFX942-NEXT: s_mov_b32 s10, s310976; GFX942-NEXT: ;;#ASMSTART10977; GFX942-NEXT: ; use s[8:10]10978; GFX942-NEXT: ;;#ASMEND10979; GFX942-NEXT: s_setpc_b64 s[30:31]10980 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10981 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()10982 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 3, i32 3>10983 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)10984 ret void10985}10986 10987define void @s_shuffle_v3p3_v4p3__6_3_3() {10988; GFX900-LABEL: s_shuffle_v3p3_v4p3__6_3_3:10989; GFX900: ; %bb.0:10990; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10991; GFX900-NEXT: ;;#ASMSTART10992; GFX900-NEXT: ; def s[8:11]10993; GFX900-NEXT: ;;#ASMEND10994; GFX900-NEXT: ;;#ASMSTART10995; GFX900-NEXT: ; def s[4:7]10996; GFX900-NEXT: ;;#ASMEND10997; GFX900-NEXT: s_mov_b32 s8, s1010998; GFX900-NEXT: s_mov_b32 s9, s710999; GFX900-NEXT: s_mov_b32 s10, s711000; GFX900-NEXT: ;;#ASMSTART11001; GFX900-NEXT: ; use s[8:10]11002; GFX900-NEXT: ;;#ASMEND11003; GFX900-NEXT: s_setpc_b64 s[30:31]11004;11005; GFX90A-LABEL: s_shuffle_v3p3_v4p3__6_3_3:11006; GFX90A: ; %bb.0:11007; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11008; GFX90A-NEXT: ;;#ASMSTART11009; GFX90A-NEXT: ; def s[8:11]11010; GFX90A-NEXT: ;;#ASMEND11011; GFX90A-NEXT: ;;#ASMSTART11012; GFX90A-NEXT: ; def s[4:7]11013; GFX90A-NEXT: ;;#ASMEND11014; GFX90A-NEXT: s_mov_b32 s8, s1011015; GFX90A-NEXT: s_mov_b32 s9, s711016; GFX90A-NEXT: s_mov_b32 s10, s711017; GFX90A-NEXT: ;;#ASMSTART11018; GFX90A-NEXT: ; use s[8:10]11019; GFX90A-NEXT: ;;#ASMEND11020; GFX90A-NEXT: s_setpc_b64 s[30:31]11021;11022; GFX942-LABEL: s_shuffle_v3p3_v4p3__6_3_3:11023; GFX942: ; %bb.0:11024; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11025; GFX942-NEXT: ;;#ASMSTART11026; GFX942-NEXT: ; def s[0:3]11027; GFX942-NEXT: ;;#ASMEND11028; GFX942-NEXT: ;;#ASMSTART11029; GFX942-NEXT: ; def s[4:7]11030; GFX942-NEXT: ;;#ASMEND11031; GFX942-NEXT: s_mov_b32 s8, s611032; GFX942-NEXT: s_mov_b32 s9, s311033; GFX942-NEXT: s_mov_b32 s10, s311034; GFX942-NEXT: ;;#ASMSTART11035; GFX942-NEXT: ; use s[8:10]11036; GFX942-NEXT: ;;#ASMEND11037; GFX942-NEXT: s_setpc_b64 s[30:31]11038 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11039 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11040 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 3, i32 3>11041 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)11042 ret void11043}11044 11045define void @s_shuffle_v3p3_v4p3__7_3_3() {11046; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_3_3:11047; GFX900: ; %bb.0:11048; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11049; GFX900-NEXT: ;;#ASMSTART11050; GFX900-NEXT: ; def s[8:11]11051; GFX900-NEXT: ;;#ASMEND11052; GFX900-NEXT: ;;#ASMSTART11053; GFX900-NEXT: ; def s[4:7]11054; GFX900-NEXT: ;;#ASMEND11055; GFX900-NEXT: s_mov_b32 s8, s1111056; GFX900-NEXT: s_mov_b32 s9, s711057; GFX900-NEXT: s_mov_b32 s10, s711058; GFX900-NEXT: ;;#ASMSTART11059; GFX900-NEXT: ; use s[8:10]11060; GFX900-NEXT: ;;#ASMEND11061; GFX900-NEXT: s_setpc_b64 s[30:31]11062;11063; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_3_3:11064; GFX90A: ; %bb.0:11065; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11066; GFX90A-NEXT: ;;#ASMSTART11067; GFX90A-NEXT: ; def s[8:11]11068; GFX90A-NEXT: ;;#ASMEND11069; GFX90A-NEXT: ;;#ASMSTART11070; GFX90A-NEXT: ; def s[4:7]11071; GFX90A-NEXT: ;;#ASMEND11072; GFX90A-NEXT: s_mov_b32 s8, s1111073; GFX90A-NEXT: s_mov_b32 s9, s711074; GFX90A-NEXT: s_mov_b32 s10, s711075; GFX90A-NEXT: ;;#ASMSTART11076; GFX90A-NEXT: ; use s[8:10]11077; GFX90A-NEXT: ;;#ASMEND11078; GFX90A-NEXT: s_setpc_b64 s[30:31]11079;11080; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_3_3:11081; GFX942: ; %bb.0:11082; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11083; GFX942-NEXT: ;;#ASMSTART11084; GFX942-NEXT: ; def s[0:3]11085; GFX942-NEXT: ;;#ASMEND11086; GFX942-NEXT: ;;#ASMSTART11087; GFX942-NEXT: ; def s[4:7]11088; GFX942-NEXT: ;;#ASMEND11089; GFX942-NEXT: s_mov_b32 s8, s711090; GFX942-NEXT: s_mov_b32 s9, s311091; GFX942-NEXT: s_mov_b32 s10, s311092; GFX942-NEXT: ;;#ASMSTART11093; GFX942-NEXT: ; use s[8:10]11094; GFX942-NEXT: ;;#ASMEND11095; GFX942-NEXT: s_setpc_b64 s[30:31]11096 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11097 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11098 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 3>11099 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)11100 ret void11101}11102 11103define void @s_shuffle_v3p3_v4p3__7_u_3() {11104; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_u_3:11105; GFX900: ; %bb.0:11106; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11107; GFX900-NEXT: ;;#ASMSTART11108; GFX900-NEXT: ; def s[8:11]11109; GFX900-NEXT: ;;#ASMEND11110; GFX900-NEXT: ;;#ASMSTART11111; GFX900-NEXT: ; def s[4:7]11112; GFX900-NEXT: ;;#ASMEND11113; GFX900-NEXT: s_mov_b32 s8, s1111114; GFX900-NEXT: s_mov_b32 s10, s711115; GFX900-NEXT: ;;#ASMSTART11116; GFX900-NEXT: ; use s[8:10]11117; GFX900-NEXT: ;;#ASMEND11118; GFX900-NEXT: s_setpc_b64 s[30:31]11119;11120; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_u_3:11121; GFX90A: ; %bb.0:11122; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11123; GFX90A-NEXT: ;;#ASMSTART11124; GFX90A-NEXT: ; def s[8:11]11125; GFX90A-NEXT: ;;#ASMEND11126; GFX90A-NEXT: ;;#ASMSTART11127; GFX90A-NEXT: ; def s[4:7]11128; GFX90A-NEXT: ;;#ASMEND11129; GFX90A-NEXT: s_mov_b32 s8, s1111130; GFX90A-NEXT: s_mov_b32 s10, s711131; GFX90A-NEXT: ;;#ASMSTART11132; GFX90A-NEXT: ; use s[8:10]11133; GFX90A-NEXT: ;;#ASMEND11134; GFX90A-NEXT: s_setpc_b64 s[30:31]11135;11136; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_u_3:11137; GFX942: ; %bb.0:11138; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11139; GFX942-NEXT: ;;#ASMSTART11140; GFX942-NEXT: ; def s[0:3]11141; GFX942-NEXT: ;;#ASMEND11142; GFX942-NEXT: ;;#ASMSTART11143; GFX942-NEXT: ; def s[4:7]11144; GFX942-NEXT: ;;#ASMEND11145; GFX942-NEXT: s_mov_b32 s8, s711146; GFX942-NEXT: s_mov_b32 s10, s311147; GFX942-NEXT: ;;#ASMSTART11148; GFX942-NEXT: ; use s[8:10]11149; GFX942-NEXT: ;;#ASMEND11150; GFX942-NEXT: s_setpc_b64 s[30:31]11151 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11152 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11153 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 3>11154 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)11155 ret void11156}11157 11158define void @s_shuffle_v3p3_v4p3__7_0_3() {11159; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_0_3:11160; GFX900: ; %bb.0:11161; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11162; GFX900-NEXT: ;;#ASMSTART11163; GFX900-NEXT: ; def s[8:11]11164; GFX900-NEXT: ;;#ASMEND11165; GFX900-NEXT: ;;#ASMSTART11166; GFX900-NEXT: ; def s[4:7]11167; GFX900-NEXT: ;;#ASMEND11168; GFX900-NEXT: s_mov_b32 s8, s1111169; GFX900-NEXT: s_mov_b32 s9, s411170; GFX900-NEXT: s_mov_b32 s10, s711171; GFX900-NEXT: ;;#ASMSTART11172; GFX900-NEXT: ; use s[8:10]11173; GFX900-NEXT: ;;#ASMEND11174; GFX900-NEXT: s_setpc_b64 s[30:31]11175;11176; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_0_3:11177; GFX90A: ; %bb.0:11178; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11179; GFX90A-NEXT: ;;#ASMSTART11180; GFX90A-NEXT: ; def s[8:11]11181; GFX90A-NEXT: ;;#ASMEND11182; GFX90A-NEXT: ;;#ASMSTART11183; GFX90A-NEXT: ; def s[4:7]11184; GFX90A-NEXT: ;;#ASMEND11185; GFX90A-NEXT: s_mov_b32 s8, s1111186; GFX90A-NEXT: s_mov_b32 s9, s411187; GFX90A-NEXT: s_mov_b32 s10, s711188; GFX90A-NEXT: ;;#ASMSTART11189; GFX90A-NEXT: ; use s[8:10]11190; GFX90A-NEXT: ;;#ASMEND11191; GFX90A-NEXT: s_setpc_b64 s[30:31]11192;11193; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_0_3:11194; GFX942: ; %bb.0:11195; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11196; GFX942-NEXT: ;;#ASMSTART11197; GFX942-NEXT: ; def s[0:3]11198; GFX942-NEXT: ;;#ASMEND11199; GFX942-NEXT: ;;#ASMSTART11200; GFX942-NEXT: ; def s[4:7]11201; GFX942-NEXT: ;;#ASMEND11202; GFX942-NEXT: s_mov_b32 s8, s711203; GFX942-NEXT: s_mov_b32 s9, s011204; GFX942-NEXT: s_mov_b32 s10, s311205; GFX942-NEXT: ;;#ASMSTART11206; GFX942-NEXT: ; use s[8:10]11207; GFX942-NEXT: ;;#ASMEND11208; GFX942-NEXT: s_setpc_b64 s[30:31]11209 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11210 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11211 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 3>11212 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)11213 ret void11214}11215 11216define void @s_shuffle_v3p3_v4p3__7_1_3() {11217; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_1_3:11218; GFX900: ; %bb.0:11219; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11220; GFX900-NEXT: ;;#ASMSTART11221; GFX900-NEXT: ; def s[8:11]11222; GFX900-NEXT: ;;#ASMEND11223; GFX900-NEXT: ;;#ASMSTART11224; GFX900-NEXT: ; def s[4:7]11225; GFX900-NEXT: ;;#ASMEND11226; GFX900-NEXT: s_mov_b32 s8, s711227; GFX900-NEXT: s_mov_b32 s10, s1111228; GFX900-NEXT: ;;#ASMSTART11229; GFX900-NEXT: ; use s[8:10]11230; GFX900-NEXT: ;;#ASMEND11231; GFX900-NEXT: s_setpc_b64 s[30:31]11232;11233; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_1_3:11234; GFX90A: ; %bb.0:11235; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11236; GFX90A-NEXT: ;;#ASMSTART11237; GFX90A-NEXT: ; def s[8:11]11238; GFX90A-NEXT: ;;#ASMEND11239; GFX90A-NEXT: ;;#ASMSTART11240; GFX90A-NEXT: ; def s[4:7]11241; GFX90A-NEXT: ;;#ASMEND11242; GFX90A-NEXT: s_mov_b32 s8, s711243; GFX90A-NEXT: s_mov_b32 s10, s1111244; GFX90A-NEXT: ;;#ASMSTART11245; GFX90A-NEXT: ; use s[8:10]11246; GFX90A-NEXT: ;;#ASMEND11247; GFX90A-NEXT: s_setpc_b64 s[30:31]11248;11249; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_1_3:11250; GFX942: ; %bb.0:11251; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11252; GFX942-NEXT: ;;#ASMSTART11253; GFX942-NEXT: ; def s[8:11]11254; GFX942-NEXT: ;;#ASMEND11255; GFX942-NEXT: ;;#ASMSTART11256; GFX942-NEXT: ; def s[0:3]11257; GFX942-NEXT: ;;#ASMEND11258; GFX942-NEXT: s_mov_b32 s8, s311259; GFX942-NEXT: s_mov_b32 s10, s1111260; GFX942-NEXT: ;;#ASMSTART11261; GFX942-NEXT: ; use s[8:10]11262; GFX942-NEXT: ;;#ASMEND11263; GFX942-NEXT: s_setpc_b64 s[30:31]11264 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11265 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11266 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 3>11267 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)11268 ret void11269}11270 11271define void @s_shuffle_v3p3_v4p3__7_2_3() {11272; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_2_3:11273; GFX900: ; %bb.0:11274; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11275; GFX900-NEXT: ;;#ASMSTART11276; GFX900-NEXT: ; def s[8:11]11277; GFX900-NEXT: ;;#ASMEND11278; GFX900-NEXT: ;;#ASMSTART11279; GFX900-NEXT: ; def s[4:7]11280; GFX900-NEXT: ;;#ASMEND11281; GFX900-NEXT: s_mov_b32 s8, s1111282; GFX900-NEXT: s_mov_b32 s9, s611283; GFX900-NEXT: s_mov_b32 s10, s711284; GFX900-NEXT: ;;#ASMSTART11285; GFX900-NEXT: ; use s[8:10]11286; GFX900-NEXT: ;;#ASMEND11287; GFX900-NEXT: s_setpc_b64 s[30:31]11288;11289; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_2_3:11290; GFX90A: ; %bb.0:11291; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11292; GFX90A-NEXT: ;;#ASMSTART11293; GFX90A-NEXT: ; def s[8:11]11294; GFX90A-NEXT: ;;#ASMEND11295; GFX90A-NEXT: ;;#ASMSTART11296; GFX90A-NEXT: ; def s[4:7]11297; GFX90A-NEXT: ;;#ASMEND11298; GFX90A-NEXT: s_mov_b32 s8, s1111299; GFX90A-NEXT: s_mov_b32 s9, s611300; GFX90A-NEXT: s_mov_b32 s10, s711301; GFX90A-NEXT: ;;#ASMSTART11302; GFX90A-NEXT: ; use s[8:10]11303; GFX90A-NEXT: ;;#ASMEND11304; GFX90A-NEXT: s_setpc_b64 s[30:31]11305;11306; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_2_3:11307; GFX942: ; %bb.0:11308; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11309; GFX942-NEXT: ;;#ASMSTART11310; GFX942-NEXT: ; def s[0:3]11311; GFX942-NEXT: ;;#ASMEND11312; GFX942-NEXT: ;;#ASMSTART11313; GFX942-NEXT: ; def s[4:7]11314; GFX942-NEXT: ;;#ASMEND11315; GFX942-NEXT: s_mov_b32 s8, s711316; GFX942-NEXT: s_mov_b32 s9, s211317; GFX942-NEXT: s_mov_b32 s10, s311318; GFX942-NEXT: ;;#ASMSTART11319; GFX942-NEXT: ; use s[8:10]11320; GFX942-NEXT: ;;#ASMEND11321; GFX942-NEXT: s_setpc_b64 s[30:31]11322 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11323 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11324 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 3>11325 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)11326 ret void11327}11328 11329define void @s_shuffle_v3p3_v4p3__7_4_3() {11330; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_4_3:11331; GFX900: ; %bb.0:11332; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11333; GFX900-NEXT: ;;#ASMSTART11334; GFX900-NEXT: ; def s[4:7]11335; GFX900-NEXT: ;;#ASMEND11336; GFX900-NEXT: ;;#ASMSTART11337; GFX900-NEXT: ; def s[12:15]11338; GFX900-NEXT: ;;#ASMEND11339; GFX900-NEXT: s_mov_b32 s8, s1511340; GFX900-NEXT: s_mov_b32 s9, s1211341; GFX900-NEXT: s_mov_b32 s10, s711342; GFX900-NEXT: ;;#ASMSTART11343; GFX900-NEXT: ; use s[8:10]11344; GFX900-NEXT: ;;#ASMEND11345; GFX900-NEXT: s_setpc_b64 s[30:31]11346;11347; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_4_3:11348; GFX90A: ; %bb.0:11349; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11350; GFX90A-NEXT: ;;#ASMSTART11351; GFX90A-NEXT: ; def s[4:7]11352; GFX90A-NEXT: ;;#ASMEND11353; GFX90A-NEXT: ;;#ASMSTART11354; GFX90A-NEXT: ; def s[12:15]11355; GFX90A-NEXT: ;;#ASMEND11356; GFX90A-NEXT: s_mov_b32 s8, s1511357; GFX90A-NEXT: s_mov_b32 s9, s1211358; GFX90A-NEXT: s_mov_b32 s10, s711359; GFX90A-NEXT: ;;#ASMSTART11360; GFX90A-NEXT: ; use s[8:10]11361; GFX90A-NEXT: ;;#ASMEND11362; GFX90A-NEXT: s_setpc_b64 s[30:31]11363;11364; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_4_3:11365; GFX942: ; %bb.0:11366; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11367; GFX942-NEXT: ;;#ASMSTART11368; GFX942-NEXT: ; def s[0:3]11369; GFX942-NEXT: ;;#ASMEND11370; GFX942-NEXT: ;;#ASMSTART11371; GFX942-NEXT: ; def s[4:7]11372; GFX942-NEXT: ;;#ASMEND11373; GFX942-NEXT: s_mov_b32 s8, s711374; GFX942-NEXT: s_mov_b32 s9, s411375; GFX942-NEXT: s_mov_b32 s10, s311376; GFX942-NEXT: ;;#ASMSTART11377; GFX942-NEXT: ; use s[8:10]11378; GFX942-NEXT: ;;#ASMEND11379; GFX942-NEXT: s_setpc_b64 s[30:31]11380 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11381 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11382 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 3>11383 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)11384 ret void11385}11386 11387define void @s_shuffle_v3p3_v4p3__7_5_3() {11388; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_5_3:11389; GFX900: ; %bb.0:11390; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11391; GFX900-NEXT: ;;#ASMSTART11392; GFX900-NEXT: ; def s[8:11]11393; GFX900-NEXT: ;;#ASMEND11394; GFX900-NEXT: ;;#ASMSTART11395; GFX900-NEXT: ; def s[4:7]11396; GFX900-NEXT: ;;#ASMEND11397; GFX900-NEXT: s_mov_b32 s8, s1111398; GFX900-NEXT: s_mov_b32 s10, s711399; GFX900-NEXT: ;;#ASMSTART11400; GFX900-NEXT: ; use s[8:10]11401; GFX900-NEXT: ;;#ASMEND11402; GFX900-NEXT: s_setpc_b64 s[30:31]11403;11404; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_5_3:11405; GFX90A: ; %bb.0:11406; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11407; GFX90A-NEXT: ;;#ASMSTART11408; GFX90A-NEXT: ; def s[8:11]11409; GFX90A-NEXT: ;;#ASMEND11410; GFX90A-NEXT: ;;#ASMSTART11411; GFX90A-NEXT: ; def s[4:7]11412; GFX90A-NEXT: ;;#ASMEND11413; GFX90A-NEXT: s_mov_b32 s8, s1111414; GFX90A-NEXT: s_mov_b32 s10, s711415; GFX90A-NEXT: ;;#ASMSTART11416; GFX90A-NEXT: ; use s[8:10]11417; GFX90A-NEXT: ;;#ASMEND11418; GFX90A-NEXT: s_setpc_b64 s[30:31]11419;11420; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_5_3:11421; GFX942: ; %bb.0:11422; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11423; GFX942-NEXT: ;;#ASMSTART11424; GFX942-NEXT: ; def s[8:11]11425; GFX942-NEXT: ;;#ASMEND11426; GFX942-NEXT: ;;#ASMSTART11427; GFX942-NEXT: ; def s[0:3]11428; GFX942-NEXT: ;;#ASMEND11429; GFX942-NEXT: s_mov_b32 s8, s1111430; GFX942-NEXT: s_mov_b32 s10, s311431; GFX942-NEXT: ;;#ASMSTART11432; GFX942-NEXT: ; use s[8:10]11433; GFX942-NEXT: ;;#ASMEND11434; GFX942-NEXT: s_setpc_b64 s[30:31]11435 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11436 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11437 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 3>11438 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)11439 ret void11440}11441 11442define void @s_shuffle_v3p3_v4p3__7_6_3() {11443; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_6_3:11444; GFX900: ; %bb.0:11445; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11446; GFX900-NEXT: ;;#ASMSTART11447; GFX900-NEXT: ; def s[8:11]11448; GFX900-NEXT: ;;#ASMEND11449; GFX900-NEXT: ;;#ASMSTART11450; GFX900-NEXT: ; def s[4:7]11451; GFX900-NEXT: ;;#ASMEND11452; GFX900-NEXT: s_mov_b32 s8, s1111453; GFX900-NEXT: s_mov_b32 s9, s1011454; GFX900-NEXT: s_mov_b32 s10, s711455; GFX900-NEXT: ;;#ASMSTART11456; GFX900-NEXT: ; use s[8:10]11457; GFX900-NEXT: ;;#ASMEND11458; GFX900-NEXT: s_setpc_b64 s[30:31]11459;11460; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_6_3:11461; GFX90A: ; %bb.0:11462; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11463; GFX90A-NEXT: ;;#ASMSTART11464; GFX90A-NEXT: ; def s[8:11]11465; GFX90A-NEXT: ;;#ASMEND11466; GFX90A-NEXT: ;;#ASMSTART11467; GFX90A-NEXT: ; def s[4:7]11468; GFX90A-NEXT: ;;#ASMEND11469; GFX90A-NEXT: s_mov_b32 s8, s1111470; GFX90A-NEXT: s_mov_b32 s9, s1011471; GFX90A-NEXT: s_mov_b32 s10, s711472; GFX90A-NEXT: ;;#ASMSTART11473; GFX90A-NEXT: ; use s[8:10]11474; GFX90A-NEXT: ;;#ASMEND11475; GFX90A-NEXT: s_setpc_b64 s[30:31]11476;11477; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_6_3:11478; GFX942: ; %bb.0:11479; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11480; GFX942-NEXT: ;;#ASMSTART11481; GFX942-NEXT: ; def s[0:3]11482; GFX942-NEXT: ;;#ASMEND11483; GFX942-NEXT: ;;#ASMSTART11484; GFX942-NEXT: ; def s[4:7]11485; GFX942-NEXT: ;;#ASMEND11486; GFX942-NEXT: s_mov_b32 s8, s711487; GFX942-NEXT: s_mov_b32 s9, s611488; GFX942-NEXT: s_mov_b32 s10, s311489; GFX942-NEXT: ;;#ASMSTART11490; GFX942-NEXT: ; use s[8:10]11491; GFX942-NEXT: ;;#ASMEND11492; GFX942-NEXT: s_setpc_b64 s[30:31]11493 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11494 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11495 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 3>11496 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)11497 ret void11498}11499 11500define void @s_shuffle_v3p3_v4p3__u_4_4() {11501; GFX9-LABEL: s_shuffle_v3p3_v4p3__u_4_4:11502; GFX9: ; %bb.0:11503; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11504; GFX9-NEXT: ;;#ASMSTART11505; GFX9-NEXT: ; use s[8:10]11506; GFX9-NEXT: ;;#ASMEND11507; GFX9-NEXT: s_setpc_b64 s[30:31]11508 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11509 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 poison, i32 4, i32 4>11510 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)11511 ret void11512}11513 11514define void @s_shuffle_v3p3_v4p3__0_4_4() {11515; GFX900-LABEL: s_shuffle_v3p3_v4p3__0_4_4:11516; GFX900: ; %bb.0:11517; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11518; GFX900-NEXT: ;;#ASMSTART11519; GFX900-NEXT: ; def s[8:11]11520; GFX900-NEXT: ;;#ASMEND11521; GFX900-NEXT: ;;#ASMSTART11522; GFX900-NEXT: ; use s[8:10]11523; GFX900-NEXT: ;;#ASMEND11524; GFX900-NEXT: s_setpc_b64 s[30:31]11525;11526; GFX90A-LABEL: s_shuffle_v3p3_v4p3__0_4_4:11527; GFX90A: ; %bb.0:11528; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11529; GFX90A-NEXT: ;;#ASMSTART11530; GFX90A-NEXT: ; def s[8:11]11531; GFX90A-NEXT: ;;#ASMEND11532; GFX90A-NEXT: ;;#ASMSTART11533; GFX90A-NEXT: ; use s[8:10]11534; GFX90A-NEXT: ;;#ASMEND11535; GFX90A-NEXT: s_setpc_b64 s[30:31]11536;11537; GFX942-LABEL: s_shuffle_v3p3_v4p3__0_4_4:11538; GFX942: ; %bb.0:11539; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11540; GFX942-NEXT: ;;#ASMSTART11541; GFX942-NEXT: ; def s[8:11]11542; GFX942-NEXT: ;;#ASMEND11543; GFX942-NEXT: s_nop 011544; GFX942-NEXT: ;;#ASMSTART11545; GFX942-NEXT: ; use s[8:10]11546; GFX942-NEXT: ;;#ASMEND11547; GFX942-NEXT: s_setpc_b64 s[30:31]11548 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11549 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 0, i32 4, i32 4>11550 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)11551 ret void11552}11553 11554define void @s_shuffle_v3p3_v4p3__1_4_4() {11555; GFX900-LABEL: s_shuffle_v3p3_v4p3__1_4_4:11556; GFX900: ; %bb.0:11557; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11558; GFX900-NEXT: ;;#ASMSTART11559; GFX900-NEXT: ; def s[4:7]11560; GFX900-NEXT: ;;#ASMEND11561; GFX900-NEXT: s_mov_b32 s8, s511562; GFX900-NEXT: ;;#ASMSTART11563; GFX900-NEXT: ; use s[8:10]11564; GFX900-NEXT: ;;#ASMEND11565; GFX900-NEXT: s_setpc_b64 s[30:31]11566;11567; GFX90A-LABEL: s_shuffle_v3p3_v4p3__1_4_4:11568; GFX90A: ; %bb.0:11569; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11570; GFX90A-NEXT: ;;#ASMSTART11571; GFX90A-NEXT: ; def s[4:7]11572; GFX90A-NEXT: ;;#ASMEND11573; GFX90A-NEXT: s_mov_b32 s8, s511574; GFX90A-NEXT: ;;#ASMSTART11575; GFX90A-NEXT: ; use s[8:10]11576; GFX90A-NEXT: ;;#ASMEND11577; GFX90A-NEXT: s_setpc_b64 s[30:31]11578;11579; GFX942-LABEL: s_shuffle_v3p3_v4p3__1_4_4:11580; GFX942: ; %bb.0:11581; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11582; GFX942-NEXT: ;;#ASMSTART11583; GFX942-NEXT: ; def s[0:3]11584; GFX942-NEXT: ;;#ASMEND11585; GFX942-NEXT: s_mov_b32 s8, s111586; GFX942-NEXT: ;;#ASMSTART11587; GFX942-NEXT: ; use s[8:10]11588; GFX942-NEXT: ;;#ASMEND11589; GFX942-NEXT: s_setpc_b64 s[30:31]11590 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11591 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 1, i32 4, i32 4>11592 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)11593 ret void11594}11595 11596define void @s_shuffle_v3p3_v4p3__2_4_4() {11597; GFX900-LABEL: s_shuffle_v3p3_v4p3__2_4_4:11598; GFX900: ; %bb.0:11599; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11600; GFX900-NEXT: ;;#ASMSTART11601; GFX900-NEXT: ; def s[4:7]11602; GFX900-NEXT: ;;#ASMEND11603; GFX900-NEXT: s_mov_b32 s8, s611604; GFX900-NEXT: ;;#ASMSTART11605; GFX900-NEXT: ; use s[8:10]11606; GFX900-NEXT: ;;#ASMEND11607; GFX900-NEXT: s_setpc_b64 s[30:31]11608;11609; GFX90A-LABEL: s_shuffle_v3p3_v4p3__2_4_4:11610; GFX90A: ; %bb.0:11611; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11612; GFX90A-NEXT: ;;#ASMSTART11613; GFX90A-NEXT: ; def s[4:7]11614; GFX90A-NEXT: ;;#ASMEND11615; GFX90A-NEXT: s_mov_b32 s8, s611616; GFX90A-NEXT: ;;#ASMSTART11617; GFX90A-NEXT: ; use s[8:10]11618; GFX90A-NEXT: ;;#ASMEND11619; GFX90A-NEXT: s_setpc_b64 s[30:31]11620;11621; GFX942-LABEL: s_shuffle_v3p3_v4p3__2_4_4:11622; GFX942: ; %bb.0:11623; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11624; GFX942-NEXT: ;;#ASMSTART11625; GFX942-NEXT: ; def s[0:3]11626; GFX942-NEXT: ;;#ASMEND11627; GFX942-NEXT: s_mov_b32 s8, s211628; GFX942-NEXT: ;;#ASMSTART11629; GFX942-NEXT: ; use s[8:10]11630; GFX942-NEXT: ;;#ASMEND11631; GFX942-NEXT: s_setpc_b64 s[30:31]11632 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11633 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 2, i32 4, i32 4>11634 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)11635 ret void11636}11637 11638define void @s_shuffle_v3p3_v4p3__3_4_4() {11639; GFX900-LABEL: s_shuffle_v3p3_v4p3__3_4_4:11640; GFX900: ; %bb.0:11641; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11642; GFX900-NEXT: ;;#ASMSTART11643; GFX900-NEXT: ; def s[4:7]11644; GFX900-NEXT: ;;#ASMEND11645; GFX900-NEXT: s_mov_b32 s8, s711646; GFX900-NEXT: ;;#ASMSTART11647; GFX900-NEXT: ; use s[8:10]11648; GFX900-NEXT: ;;#ASMEND11649; GFX900-NEXT: s_setpc_b64 s[30:31]11650;11651; GFX90A-LABEL: s_shuffle_v3p3_v4p3__3_4_4:11652; GFX90A: ; %bb.0:11653; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11654; GFX90A-NEXT: ;;#ASMSTART11655; GFX90A-NEXT: ; def s[4:7]11656; GFX90A-NEXT: ;;#ASMEND11657; GFX90A-NEXT: s_mov_b32 s8, s711658; GFX90A-NEXT: ;;#ASMSTART11659; GFX90A-NEXT: ; use s[8:10]11660; GFX90A-NEXT: ;;#ASMEND11661; GFX90A-NEXT: s_setpc_b64 s[30:31]11662;11663; GFX942-LABEL: s_shuffle_v3p3_v4p3__3_4_4:11664; GFX942: ; %bb.0:11665; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11666; GFX942-NEXT: ;;#ASMSTART11667; GFX942-NEXT: ; def s[0:3]11668; GFX942-NEXT: ;;#ASMEND11669; GFX942-NEXT: s_mov_b32 s8, s311670; GFX942-NEXT: ;;#ASMSTART11671; GFX942-NEXT: ; use s[8:10]11672; GFX942-NEXT: ;;#ASMEND11673; GFX942-NEXT: s_setpc_b64 s[30:31]11674 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11675 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 3, i32 4, i32 4>11676 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)11677 ret void11678}11679 11680define void @s_shuffle_v3p3_v4p3__4_4_4() {11681; GFX9-LABEL: s_shuffle_v3p3_v4p3__4_4_4:11682; GFX9: ; %bb.0:11683; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11684; GFX9-NEXT: ;;#ASMSTART11685; GFX9-NEXT: ; use s[8:10]11686; GFX9-NEXT: ;;#ASMEND11687; GFX9-NEXT: s_setpc_b64 s[30:31]11688 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11689 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> poison, <3 x i32> <i32 4, i32 4, i32 4>11690 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)11691 ret void11692}11693 11694define void @s_shuffle_v3p3_v4p3__5_4_4() {11695; GFX900-LABEL: s_shuffle_v3p3_v4p3__5_4_4:11696; GFX900: ; %bb.0:11697; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11698; GFX900-NEXT: ;;#ASMSTART11699; GFX900-NEXT: ; def s[4:7]11700; GFX900-NEXT: ;;#ASMEND11701; GFX900-NEXT: s_mov_b32 s8, s511702; GFX900-NEXT: s_mov_b32 s9, s411703; GFX900-NEXT: s_mov_b32 s10, s411704; GFX900-NEXT: ;;#ASMSTART11705; GFX900-NEXT: ; use s[8:10]11706; GFX900-NEXT: ;;#ASMEND11707; GFX900-NEXT: s_setpc_b64 s[30:31]11708;11709; GFX90A-LABEL: s_shuffle_v3p3_v4p3__5_4_4:11710; GFX90A: ; %bb.0:11711; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11712; GFX90A-NEXT: ;;#ASMSTART11713; GFX90A-NEXT: ; def s[4:7]11714; GFX90A-NEXT: ;;#ASMEND11715; GFX90A-NEXT: s_mov_b32 s8, s511716; GFX90A-NEXT: s_mov_b32 s9, s411717; GFX90A-NEXT: s_mov_b32 s10, s411718; GFX90A-NEXT: ;;#ASMSTART11719; GFX90A-NEXT: ; use s[8:10]11720; GFX90A-NEXT: ;;#ASMEND11721; GFX90A-NEXT: s_setpc_b64 s[30:31]11722;11723; GFX942-LABEL: s_shuffle_v3p3_v4p3__5_4_4:11724; GFX942: ; %bb.0:11725; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11726; GFX942-NEXT: ;;#ASMSTART11727; GFX942-NEXT: ; def s[0:3]11728; GFX942-NEXT: ;;#ASMEND11729; GFX942-NEXT: s_mov_b32 s8, s111730; GFX942-NEXT: s_mov_b32 s9, s011731; GFX942-NEXT: s_mov_b32 s10, s011732; GFX942-NEXT: ;;#ASMSTART11733; GFX942-NEXT: ; use s[8:10]11734; GFX942-NEXT: ;;#ASMEND11735; GFX942-NEXT: s_setpc_b64 s[30:31]11736 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11737 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11738 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 4, i32 4>11739 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)11740 ret void11741}11742 11743define void @s_shuffle_v3p3_v4p3__6_4_4() {11744; GFX900-LABEL: s_shuffle_v3p3_v4p3__6_4_4:11745; GFX900: ; %bb.0:11746; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11747; GFX900-NEXT: ;;#ASMSTART11748; GFX900-NEXT: ; def s[4:7]11749; GFX900-NEXT: ;;#ASMEND11750; GFX900-NEXT: s_mov_b32 s8, s611751; GFX900-NEXT: s_mov_b32 s9, s411752; GFX900-NEXT: s_mov_b32 s10, s411753; GFX900-NEXT: ;;#ASMSTART11754; GFX900-NEXT: ; use s[8:10]11755; GFX900-NEXT: ;;#ASMEND11756; GFX900-NEXT: s_setpc_b64 s[30:31]11757;11758; GFX90A-LABEL: s_shuffle_v3p3_v4p3__6_4_4:11759; GFX90A: ; %bb.0:11760; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11761; GFX90A-NEXT: ;;#ASMSTART11762; GFX90A-NEXT: ; def s[4:7]11763; GFX90A-NEXT: ;;#ASMEND11764; GFX90A-NEXT: s_mov_b32 s8, s611765; GFX90A-NEXT: s_mov_b32 s9, s411766; GFX90A-NEXT: s_mov_b32 s10, s411767; GFX90A-NEXT: ;;#ASMSTART11768; GFX90A-NEXT: ; use s[8:10]11769; GFX90A-NEXT: ;;#ASMEND11770; GFX90A-NEXT: s_setpc_b64 s[30:31]11771;11772; GFX942-LABEL: s_shuffle_v3p3_v4p3__6_4_4:11773; GFX942: ; %bb.0:11774; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11775; GFX942-NEXT: ;;#ASMSTART11776; GFX942-NEXT: ; def s[0:3]11777; GFX942-NEXT: ;;#ASMEND11778; GFX942-NEXT: s_mov_b32 s8, s211779; GFX942-NEXT: s_mov_b32 s9, s011780; GFX942-NEXT: s_mov_b32 s10, s011781; GFX942-NEXT: ;;#ASMSTART11782; GFX942-NEXT: ; use s[8:10]11783; GFX942-NEXT: ;;#ASMEND11784; GFX942-NEXT: s_setpc_b64 s[30:31]11785 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11786 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11787 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 4, i32 4>11788 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)11789 ret void11790}11791 11792define void @s_shuffle_v3p3_v4p3__7_4_4() {11793; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_4_4:11794; GFX900: ; %bb.0:11795; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11796; GFX900-NEXT: ;;#ASMSTART11797; GFX900-NEXT: ; def s[4:7]11798; GFX900-NEXT: ;;#ASMEND11799; GFX900-NEXT: s_mov_b32 s8, s711800; GFX900-NEXT: s_mov_b32 s9, s411801; GFX900-NEXT: s_mov_b32 s10, s411802; GFX900-NEXT: ;;#ASMSTART11803; GFX900-NEXT: ; use s[8:10]11804; GFX900-NEXT: ;;#ASMEND11805; GFX900-NEXT: s_setpc_b64 s[30:31]11806;11807; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_4_4:11808; GFX90A: ; %bb.0:11809; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11810; GFX90A-NEXT: ;;#ASMSTART11811; GFX90A-NEXT: ; def s[4:7]11812; GFX90A-NEXT: ;;#ASMEND11813; GFX90A-NEXT: s_mov_b32 s8, s711814; GFX90A-NEXT: s_mov_b32 s9, s411815; GFX90A-NEXT: s_mov_b32 s10, s411816; GFX90A-NEXT: ;;#ASMSTART11817; GFX90A-NEXT: ; use s[8:10]11818; GFX90A-NEXT: ;;#ASMEND11819; GFX90A-NEXT: s_setpc_b64 s[30:31]11820;11821; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_4_4:11822; GFX942: ; %bb.0:11823; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11824; GFX942-NEXT: ;;#ASMSTART11825; GFX942-NEXT: ; def s[0:3]11826; GFX942-NEXT: ;;#ASMEND11827; GFX942-NEXT: s_mov_b32 s8, s311828; GFX942-NEXT: s_mov_b32 s9, s011829; GFX942-NEXT: s_mov_b32 s10, s011830; GFX942-NEXT: ;;#ASMSTART11831; GFX942-NEXT: ; use s[8:10]11832; GFX942-NEXT: ;;#ASMEND11833; GFX942-NEXT: s_setpc_b64 s[30:31]11834 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11835 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11836 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 4>11837 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)11838 ret void11839}11840 11841define void @s_shuffle_v3p3_v4p3__7_u_4() {11842; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_u_4:11843; GFX900: ; %bb.0:11844; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11845; GFX900-NEXT: ;;#ASMSTART11846; GFX900-NEXT: ; def s[4:7]11847; GFX900-NEXT: ;;#ASMEND11848; GFX900-NEXT: s_mov_b32 s8, s711849; GFX900-NEXT: s_mov_b32 s10, s411850; GFX900-NEXT: ;;#ASMSTART11851; GFX900-NEXT: ; use s[8:10]11852; GFX900-NEXT: ;;#ASMEND11853; GFX900-NEXT: s_setpc_b64 s[30:31]11854;11855; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_u_4:11856; GFX90A: ; %bb.0:11857; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11858; GFX90A-NEXT: ;;#ASMSTART11859; GFX90A-NEXT: ; def s[4:7]11860; GFX90A-NEXT: ;;#ASMEND11861; GFX90A-NEXT: s_mov_b32 s8, s711862; GFX90A-NEXT: s_mov_b32 s10, s411863; GFX90A-NEXT: ;;#ASMSTART11864; GFX90A-NEXT: ; use s[8:10]11865; GFX90A-NEXT: ;;#ASMEND11866; GFX90A-NEXT: s_setpc_b64 s[30:31]11867;11868; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_u_4:11869; GFX942: ; %bb.0:11870; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11871; GFX942-NEXT: ;;#ASMSTART11872; GFX942-NEXT: ; def s[0:3]11873; GFX942-NEXT: ;;#ASMEND11874; GFX942-NEXT: s_mov_b32 s8, s311875; GFX942-NEXT: s_mov_b32 s10, s011876; GFX942-NEXT: ;;#ASMSTART11877; GFX942-NEXT: ; use s[8:10]11878; GFX942-NEXT: ;;#ASMEND11879; GFX942-NEXT: s_setpc_b64 s[30:31]11880 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11881 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11882 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 4>11883 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)11884 ret void11885}11886 11887define void @s_shuffle_v3p3_v4p3__7_0_4() {11888; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_0_4:11889; GFX900: ; %bb.0:11890; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11891; GFX900-NEXT: ;;#ASMSTART11892; GFX900-NEXT: ; def s[4:7]11893; GFX900-NEXT: ;;#ASMEND11894; GFX900-NEXT: ;;#ASMSTART11895; GFX900-NEXT: ; def s[12:15]11896; GFX900-NEXT: ;;#ASMEND11897; GFX900-NEXT: s_mov_b32 s8, s1511898; GFX900-NEXT: s_mov_b32 s9, s411899; GFX900-NEXT: s_mov_b32 s10, s1211900; GFX900-NEXT: ;;#ASMSTART11901; GFX900-NEXT: ; use s[8:10]11902; GFX900-NEXT: ;;#ASMEND11903; GFX900-NEXT: s_setpc_b64 s[30:31]11904;11905; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_0_4:11906; GFX90A: ; %bb.0:11907; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11908; GFX90A-NEXT: ;;#ASMSTART11909; GFX90A-NEXT: ; def s[4:7]11910; GFX90A-NEXT: ;;#ASMEND11911; GFX90A-NEXT: ;;#ASMSTART11912; GFX90A-NEXT: ; def s[12:15]11913; GFX90A-NEXT: ;;#ASMEND11914; GFX90A-NEXT: s_mov_b32 s8, s1511915; GFX90A-NEXT: s_mov_b32 s9, s411916; GFX90A-NEXT: s_mov_b32 s10, s1211917; GFX90A-NEXT: ;;#ASMSTART11918; GFX90A-NEXT: ; use s[8:10]11919; GFX90A-NEXT: ;;#ASMEND11920; GFX90A-NEXT: s_setpc_b64 s[30:31]11921;11922; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_0_4:11923; GFX942: ; %bb.0:11924; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11925; GFX942-NEXT: ;;#ASMSTART11926; GFX942-NEXT: ; def s[0:3]11927; GFX942-NEXT: ;;#ASMEND11928; GFX942-NEXT: ;;#ASMSTART11929; GFX942-NEXT: ; def s[4:7]11930; GFX942-NEXT: ;;#ASMEND11931; GFX942-NEXT: s_mov_b32 s8, s711932; GFX942-NEXT: s_mov_b32 s9, s011933; GFX942-NEXT: s_mov_b32 s10, s411934; GFX942-NEXT: ;;#ASMSTART11935; GFX942-NEXT: ; use s[8:10]11936; GFX942-NEXT: ;;#ASMEND11937; GFX942-NEXT: s_setpc_b64 s[30:31]11938 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11939 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11940 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 4>11941 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)11942 ret void11943}11944 11945define void @s_shuffle_v3p3_v4p3__7_1_4() {11946; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_1_4:11947; GFX900: ; %bb.0:11948; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11949; GFX900-NEXT: ;;#ASMSTART11950; GFX900-NEXT: ; def s[8:11]11951; GFX900-NEXT: ;;#ASMEND11952; GFX900-NEXT: ;;#ASMSTART11953; GFX900-NEXT: ; def s[4:7]11954; GFX900-NEXT: ;;#ASMEND11955; GFX900-NEXT: s_mov_b32 s8, s711956; GFX900-NEXT: s_mov_b32 s10, s411957; GFX900-NEXT: ;;#ASMSTART11958; GFX900-NEXT: ; use s[8:10]11959; GFX900-NEXT: ;;#ASMEND11960; GFX900-NEXT: s_setpc_b64 s[30:31]11961;11962; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_1_4:11963; GFX90A: ; %bb.0:11964; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11965; GFX90A-NEXT: ;;#ASMSTART11966; GFX90A-NEXT: ; def s[8:11]11967; GFX90A-NEXT: ;;#ASMEND11968; GFX90A-NEXT: ;;#ASMSTART11969; GFX90A-NEXT: ; def s[4:7]11970; GFX90A-NEXT: ;;#ASMEND11971; GFX90A-NEXT: s_mov_b32 s8, s711972; GFX90A-NEXT: s_mov_b32 s10, s411973; GFX90A-NEXT: ;;#ASMSTART11974; GFX90A-NEXT: ; use s[8:10]11975; GFX90A-NEXT: ;;#ASMEND11976; GFX90A-NEXT: s_setpc_b64 s[30:31]11977;11978; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_1_4:11979; GFX942: ; %bb.0:11980; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11981; GFX942-NEXT: ;;#ASMSTART11982; GFX942-NEXT: ; def s[8:11]11983; GFX942-NEXT: ;;#ASMEND11984; GFX942-NEXT: ;;#ASMSTART11985; GFX942-NEXT: ; def s[0:3]11986; GFX942-NEXT: ;;#ASMEND11987; GFX942-NEXT: s_mov_b32 s8, s311988; GFX942-NEXT: s_mov_b32 s10, s011989; GFX942-NEXT: ;;#ASMSTART11990; GFX942-NEXT: ; use s[8:10]11991; GFX942-NEXT: ;;#ASMEND11992; GFX942-NEXT: s_setpc_b64 s[30:31]11993 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11994 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()11995 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 4>11996 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)11997 ret void11998}11999 12000define void @s_shuffle_v3p3_v4p3__7_2_4() {12001; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_2_4:12002; GFX900: ; %bb.0:12003; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12004; GFX900-NEXT: ;;#ASMSTART12005; GFX900-NEXT: ; def s[4:7]12006; GFX900-NEXT: ;;#ASMEND12007; GFX900-NEXT: ;;#ASMSTART12008; GFX900-NEXT: ; def s[12:15]12009; GFX900-NEXT: ;;#ASMEND12010; GFX900-NEXT: s_mov_b32 s8, s1512011; GFX900-NEXT: s_mov_b32 s9, s612012; GFX900-NEXT: s_mov_b32 s10, s1212013; GFX900-NEXT: ;;#ASMSTART12014; GFX900-NEXT: ; use s[8:10]12015; GFX900-NEXT: ;;#ASMEND12016; GFX900-NEXT: s_setpc_b64 s[30:31]12017;12018; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_2_4:12019; GFX90A: ; %bb.0:12020; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12021; GFX90A-NEXT: ;;#ASMSTART12022; GFX90A-NEXT: ; def s[4:7]12023; GFX90A-NEXT: ;;#ASMEND12024; GFX90A-NEXT: ;;#ASMSTART12025; GFX90A-NEXT: ; def s[12:15]12026; GFX90A-NEXT: ;;#ASMEND12027; GFX90A-NEXT: s_mov_b32 s8, s1512028; GFX90A-NEXT: s_mov_b32 s9, s612029; GFX90A-NEXT: s_mov_b32 s10, s1212030; GFX90A-NEXT: ;;#ASMSTART12031; GFX90A-NEXT: ; use s[8:10]12032; GFX90A-NEXT: ;;#ASMEND12033; GFX90A-NEXT: s_setpc_b64 s[30:31]12034;12035; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_2_4:12036; GFX942: ; %bb.0:12037; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12038; GFX942-NEXT: ;;#ASMSTART12039; GFX942-NEXT: ; def s[0:3]12040; GFX942-NEXT: ;;#ASMEND12041; GFX942-NEXT: ;;#ASMSTART12042; GFX942-NEXT: ; def s[4:7]12043; GFX942-NEXT: ;;#ASMEND12044; GFX942-NEXT: s_mov_b32 s8, s712045; GFX942-NEXT: s_mov_b32 s9, s212046; GFX942-NEXT: s_mov_b32 s10, s412047; GFX942-NEXT: ;;#ASMSTART12048; GFX942-NEXT: ; use s[8:10]12049; GFX942-NEXT: ;;#ASMEND12050; GFX942-NEXT: s_setpc_b64 s[30:31]12051 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12052 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12053 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 4>12054 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)12055 ret void12056}12057 12058define void @s_shuffle_v3p3_v4p3__7_3_4() {12059; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_3_4:12060; GFX900: ; %bb.0:12061; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12062; GFX900-NEXT: ;;#ASMSTART12063; GFX900-NEXT: ; def s[4:7]12064; GFX900-NEXT: ;;#ASMEND12065; GFX900-NEXT: ;;#ASMSTART12066; GFX900-NEXT: ; def s[12:15]12067; GFX900-NEXT: ;;#ASMEND12068; GFX900-NEXT: s_mov_b32 s8, s1512069; GFX900-NEXT: s_mov_b32 s9, s712070; GFX900-NEXT: s_mov_b32 s10, s1212071; GFX900-NEXT: ;;#ASMSTART12072; GFX900-NEXT: ; use s[8:10]12073; GFX900-NEXT: ;;#ASMEND12074; GFX900-NEXT: s_setpc_b64 s[30:31]12075;12076; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_3_4:12077; GFX90A: ; %bb.0:12078; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12079; GFX90A-NEXT: ;;#ASMSTART12080; GFX90A-NEXT: ; def s[4:7]12081; GFX90A-NEXT: ;;#ASMEND12082; GFX90A-NEXT: ;;#ASMSTART12083; GFX90A-NEXT: ; def s[12:15]12084; GFX90A-NEXT: ;;#ASMEND12085; GFX90A-NEXT: s_mov_b32 s8, s1512086; GFX90A-NEXT: s_mov_b32 s9, s712087; GFX90A-NEXT: s_mov_b32 s10, s1212088; GFX90A-NEXT: ;;#ASMSTART12089; GFX90A-NEXT: ; use s[8:10]12090; GFX90A-NEXT: ;;#ASMEND12091; GFX90A-NEXT: s_setpc_b64 s[30:31]12092;12093; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_3_4:12094; GFX942: ; %bb.0:12095; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12096; GFX942-NEXT: ;;#ASMSTART12097; GFX942-NEXT: ; def s[0:3]12098; GFX942-NEXT: ;;#ASMEND12099; GFX942-NEXT: ;;#ASMSTART12100; GFX942-NEXT: ; def s[4:7]12101; GFX942-NEXT: ;;#ASMEND12102; GFX942-NEXT: s_mov_b32 s8, s712103; GFX942-NEXT: s_mov_b32 s9, s312104; GFX942-NEXT: s_mov_b32 s10, s412105; GFX942-NEXT: ;;#ASMSTART12106; GFX942-NEXT: ; use s[8:10]12107; GFX942-NEXT: ;;#ASMEND12108; GFX942-NEXT: s_setpc_b64 s[30:31]12109 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12110 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12111 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 4>12112 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)12113 ret void12114}12115 12116define void @s_shuffle_v3p3_v4p3__7_5_4() {12117; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_5_4:12118; GFX900: ; %bb.0:12119; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12120; GFX900-NEXT: ;;#ASMSTART12121; GFX900-NEXT: ; def s[4:7]12122; GFX900-NEXT: ;;#ASMEND12123; GFX900-NEXT: s_mov_b32 s8, s712124; GFX900-NEXT: s_mov_b32 s9, s512125; GFX900-NEXT: s_mov_b32 s10, s412126; GFX900-NEXT: ;;#ASMSTART12127; GFX900-NEXT: ; use s[8:10]12128; GFX900-NEXT: ;;#ASMEND12129; GFX900-NEXT: s_setpc_b64 s[30:31]12130;12131; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_5_4:12132; GFX90A: ; %bb.0:12133; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12134; GFX90A-NEXT: ;;#ASMSTART12135; GFX90A-NEXT: ; def s[4:7]12136; GFX90A-NEXT: ;;#ASMEND12137; GFX90A-NEXT: s_mov_b32 s8, s712138; GFX90A-NEXT: s_mov_b32 s9, s512139; GFX90A-NEXT: s_mov_b32 s10, s412140; GFX90A-NEXT: ;;#ASMSTART12141; GFX90A-NEXT: ; use s[8:10]12142; GFX90A-NEXT: ;;#ASMEND12143; GFX90A-NEXT: s_setpc_b64 s[30:31]12144;12145; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_5_4:12146; GFX942: ; %bb.0:12147; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12148; GFX942-NEXT: ;;#ASMSTART12149; GFX942-NEXT: ; def s[0:3]12150; GFX942-NEXT: ;;#ASMEND12151; GFX942-NEXT: s_mov_b32 s8, s312152; GFX942-NEXT: s_mov_b32 s9, s112153; GFX942-NEXT: s_mov_b32 s10, s012154; GFX942-NEXT: ;;#ASMSTART12155; GFX942-NEXT: ; use s[8:10]12156; GFX942-NEXT: ;;#ASMEND12157; GFX942-NEXT: s_setpc_b64 s[30:31]12158 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12159 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12160 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 4>12161 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)12162 ret void12163}12164 12165define void @s_shuffle_v3p3_v4p3__7_6_4() {12166; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_6_4:12167; GFX900: ; %bb.0:12168; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12169; GFX900-NEXT: ;;#ASMSTART12170; GFX900-NEXT: ; def s[4:7]12171; GFX900-NEXT: ;;#ASMEND12172; GFX900-NEXT: s_mov_b32 s8, s712173; GFX900-NEXT: s_mov_b32 s9, s612174; GFX900-NEXT: s_mov_b32 s10, s412175; GFX900-NEXT: ;;#ASMSTART12176; GFX900-NEXT: ; use s[8:10]12177; GFX900-NEXT: ;;#ASMEND12178; GFX900-NEXT: s_setpc_b64 s[30:31]12179;12180; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_6_4:12181; GFX90A: ; %bb.0:12182; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12183; GFX90A-NEXT: ;;#ASMSTART12184; GFX90A-NEXT: ; def s[4:7]12185; GFX90A-NEXT: ;;#ASMEND12186; GFX90A-NEXT: s_mov_b32 s8, s712187; GFX90A-NEXT: s_mov_b32 s9, s612188; GFX90A-NEXT: s_mov_b32 s10, s412189; GFX90A-NEXT: ;;#ASMSTART12190; GFX90A-NEXT: ; use s[8:10]12191; GFX90A-NEXT: ;;#ASMEND12192; GFX90A-NEXT: s_setpc_b64 s[30:31]12193;12194; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_6_4:12195; GFX942: ; %bb.0:12196; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12197; GFX942-NEXT: ;;#ASMSTART12198; GFX942-NEXT: ; def s[0:3]12199; GFX942-NEXT: ;;#ASMEND12200; GFX942-NEXT: s_mov_b32 s8, s312201; GFX942-NEXT: s_mov_b32 s9, s212202; GFX942-NEXT: s_mov_b32 s10, s012203; GFX942-NEXT: ;;#ASMSTART12204; GFX942-NEXT: ; use s[8:10]12205; GFX942-NEXT: ;;#ASMEND12206; GFX942-NEXT: s_setpc_b64 s[30:31]12207 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12208 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12209 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 4>12210 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)12211 ret void12212}12213 12214define void @s_shuffle_v3p3_v4p3__u_5_5() {12215; GFX9-LABEL: s_shuffle_v3p3_v4p3__u_5_5:12216; GFX9: ; %bb.0:12217; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12218; GFX9-NEXT: ;;#ASMSTART12219; GFX9-NEXT: ; def s[8:11]12220; GFX9-NEXT: ;;#ASMEND12221; GFX9-NEXT: s_mov_b32 s10, s912222; GFX9-NEXT: ;;#ASMSTART12223; GFX9-NEXT: ; use s[8:10]12224; GFX9-NEXT: ;;#ASMEND12225; GFX9-NEXT: s_setpc_b64 s[30:31]12226 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12227 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12228 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 poison, i32 5, i32 5>12229 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)12230 ret void12231}12232 12233define void @s_shuffle_v3p3_v4p3__0_5_5() {12234; GFX900-LABEL: s_shuffle_v3p3_v4p3__0_5_5:12235; GFX900: ; %bb.0:12236; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12237; GFX900-NEXT: ;;#ASMSTART12238; GFX900-NEXT: ; def s[8:11]12239; GFX900-NEXT: ;;#ASMEND12240; GFX900-NEXT: ;;#ASMSTART12241; GFX900-NEXT: ; def s[4:7]12242; GFX900-NEXT: ;;#ASMEND12243; GFX900-NEXT: s_mov_b32 s9, s512244; GFX900-NEXT: s_mov_b32 s10, s512245; GFX900-NEXT: ;;#ASMSTART12246; GFX900-NEXT: ; use s[8:10]12247; GFX900-NEXT: ;;#ASMEND12248; GFX900-NEXT: s_setpc_b64 s[30:31]12249;12250; GFX90A-LABEL: s_shuffle_v3p3_v4p3__0_5_5:12251; GFX90A: ; %bb.0:12252; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12253; GFX90A-NEXT: ;;#ASMSTART12254; GFX90A-NEXT: ; def s[8:11]12255; GFX90A-NEXT: ;;#ASMEND12256; GFX90A-NEXT: ;;#ASMSTART12257; GFX90A-NEXT: ; def s[4:7]12258; GFX90A-NEXT: ;;#ASMEND12259; GFX90A-NEXT: s_mov_b32 s9, s512260; GFX90A-NEXT: s_mov_b32 s10, s512261; GFX90A-NEXT: ;;#ASMSTART12262; GFX90A-NEXT: ; use s[8:10]12263; GFX90A-NEXT: ;;#ASMEND12264; GFX90A-NEXT: s_setpc_b64 s[30:31]12265;12266; GFX942-LABEL: s_shuffle_v3p3_v4p3__0_5_5:12267; GFX942: ; %bb.0:12268; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12269; GFX942-NEXT: ;;#ASMSTART12270; GFX942-NEXT: ; def s[8:11]12271; GFX942-NEXT: ;;#ASMEND12272; GFX942-NEXT: ;;#ASMSTART12273; GFX942-NEXT: ; def s[0:3]12274; GFX942-NEXT: ;;#ASMEND12275; GFX942-NEXT: s_mov_b32 s9, s112276; GFX942-NEXT: s_mov_b32 s10, s112277; GFX942-NEXT: ;;#ASMSTART12278; GFX942-NEXT: ; use s[8:10]12279; GFX942-NEXT: ;;#ASMEND12280; GFX942-NEXT: s_setpc_b64 s[30:31]12281 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12282 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12283 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 0, i32 5, i32 5>12284 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)12285 ret void12286}12287 12288define void @s_shuffle_v3p3_v4p3__1_5_5() {12289; GFX900-LABEL: s_shuffle_v3p3_v4p3__1_5_5:12290; GFX900: ; %bb.0:12291; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12292; GFX900-NEXT: ;;#ASMSTART12293; GFX900-NEXT: ; def s[8:11]12294; GFX900-NEXT: ;;#ASMEND12295; GFX900-NEXT: ;;#ASMSTART12296; GFX900-NEXT: ; def s[4:7]12297; GFX900-NEXT: ;;#ASMEND12298; GFX900-NEXT: s_mov_b32 s8, s512299; GFX900-NEXT: s_mov_b32 s10, s912300; GFX900-NEXT: ;;#ASMSTART12301; GFX900-NEXT: ; use s[8:10]12302; GFX900-NEXT: ;;#ASMEND12303; GFX900-NEXT: s_setpc_b64 s[30:31]12304;12305; GFX90A-LABEL: s_shuffle_v3p3_v4p3__1_5_5:12306; GFX90A: ; %bb.0:12307; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12308; GFX90A-NEXT: ;;#ASMSTART12309; GFX90A-NEXT: ; def s[8:11]12310; GFX90A-NEXT: ;;#ASMEND12311; GFX90A-NEXT: ;;#ASMSTART12312; GFX90A-NEXT: ; def s[4:7]12313; GFX90A-NEXT: ;;#ASMEND12314; GFX90A-NEXT: s_mov_b32 s8, s512315; GFX90A-NEXT: s_mov_b32 s10, s912316; GFX90A-NEXT: ;;#ASMSTART12317; GFX90A-NEXT: ; use s[8:10]12318; GFX90A-NEXT: ;;#ASMEND12319; GFX90A-NEXT: s_setpc_b64 s[30:31]12320;12321; GFX942-LABEL: s_shuffle_v3p3_v4p3__1_5_5:12322; GFX942: ; %bb.0:12323; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12324; GFX942-NEXT: ;;#ASMSTART12325; GFX942-NEXT: ; def s[8:11]12326; GFX942-NEXT: ;;#ASMEND12327; GFX942-NEXT: ;;#ASMSTART12328; GFX942-NEXT: ; def s[0:3]12329; GFX942-NEXT: ;;#ASMEND12330; GFX942-NEXT: s_mov_b32 s8, s112331; GFX942-NEXT: s_mov_b32 s10, s912332; GFX942-NEXT: ;;#ASMSTART12333; GFX942-NEXT: ; use s[8:10]12334; GFX942-NEXT: ;;#ASMEND12335; GFX942-NEXT: s_setpc_b64 s[30:31]12336 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12337 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12338 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 1, i32 5, i32 5>12339 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)12340 ret void12341}12342 12343define void @s_shuffle_v3p3_v4p3__2_5_5() {12344; GFX900-LABEL: s_shuffle_v3p3_v4p3__2_5_5:12345; GFX900: ; %bb.0:12346; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12347; GFX900-NEXT: ;;#ASMSTART12348; GFX900-NEXT: ; def s[8:11]12349; GFX900-NEXT: ;;#ASMEND12350; GFX900-NEXT: ;;#ASMSTART12351; GFX900-NEXT: ; def s[4:7]12352; GFX900-NEXT: ;;#ASMEND12353; GFX900-NEXT: s_mov_b32 s8, s612354; GFX900-NEXT: s_mov_b32 s10, s912355; GFX900-NEXT: ;;#ASMSTART12356; GFX900-NEXT: ; use s[8:10]12357; GFX900-NEXT: ;;#ASMEND12358; GFX900-NEXT: s_setpc_b64 s[30:31]12359;12360; GFX90A-LABEL: s_shuffle_v3p3_v4p3__2_5_5:12361; GFX90A: ; %bb.0:12362; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12363; GFX90A-NEXT: ;;#ASMSTART12364; GFX90A-NEXT: ; def s[8:11]12365; GFX90A-NEXT: ;;#ASMEND12366; GFX90A-NEXT: ;;#ASMSTART12367; GFX90A-NEXT: ; def s[4:7]12368; GFX90A-NEXT: ;;#ASMEND12369; GFX90A-NEXT: s_mov_b32 s8, s612370; GFX90A-NEXT: s_mov_b32 s10, s912371; GFX90A-NEXT: ;;#ASMSTART12372; GFX90A-NEXT: ; use s[8:10]12373; GFX90A-NEXT: ;;#ASMEND12374; GFX90A-NEXT: s_setpc_b64 s[30:31]12375;12376; GFX942-LABEL: s_shuffle_v3p3_v4p3__2_5_5:12377; GFX942: ; %bb.0:12378; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12379; GFX942-NEXT: ;;#ASMSTART12380; GFX942-NEXT: ; def s[8:11]12381; GFX942-NEXT: ;;#ASMEND12382; GFX942-NEXT: ;;#ASMSTART12383; GFX942-NEXT: ; def s[0:3]12384; GFX942-NEXT: ;;#ASMEND12385; GFX942-NEXT: s_mov_b32 s8, s212386; GFX942-NEXT: s_mov_b32 s10, s912387; GFX942-NEXT: ;;#ASMSTART12388; GFX942-NEXT: ; use s[8:10]12389; GFX942-NEXT: ;;#ASMEND12390; GFX942-NEXT: s_setpc_b64 s[30:31]12391 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12392 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12393 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 2, i32 5, i32 5>12394 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)12395 ret void12396}12397 12398define void @s_shuffle_v3p3_v4p3__3_5_5() {12399; GFX900-LABEL: s_shuffle_v3p3_v4p3__3_5_5:12400; GFX900: ; %bb.0:12401; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12402; GFX900-NEXT: ;;#ASMSTART12403; GFX900-NEXT: ; def s[8:11]12404; GFX900-NEXT: ;;#ASMEND12405; GFX900-NEXT: ;;#ASMSTART12406; GFX900-NEXT: ; def s[4:7]12407; GFX900-NEXT: ;;#ASMEND12408; GFX900-NEXT: s_mov_b32 s8, s712409; GFX900-NEXT: s_mov_b32 s10, s912410; GFX900-NEXT: ;;#ASMSTART12411; GFX900-NEXT: ; use s[8:10]12412; GFX900-NEXT: ;;#ASMEND12413; GFX900-NEXT: s_setpc_b64 s[30:31]12414;12415; GFX90A-LABEL: s_shuffle_v3p3_v4p3__3_5_5:12416; GFX90A: ; %bb.0:12417; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12418; GFX90A-NEXT: ;;#ASMSTART12419; GFX90A-NEXT: ; def s[8:11]12420; GFX90A-NEXT: ;;#ASMEND12421; GFX90A-NEXT: ;;#ASMSTART12422; GFX90A-NEXT: ; def s[4:7]12423; GFX90A-NEXT: ;;#ASMEND12424; GFX90A-NEXT: s_mov_b32 s8, s712425; GFX90A-NEXT: s_mov_b32 s10, s912426; GFX90A-NEXT: ;;#ASMSTART12427; GFX90A-NEXT: ; use s[8:10]12428; GFX90A-NEXT: ;;#ASMEND12429; GFX90A-NEXT: s_setpc_b64 s[30:31]12430;12431; GFX942-LABEL: s_shuffle_v3p3_v4p3__3_5_5:12432; GFX942: ; %bb.0:12433; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12434; GFX942-NEXT: ;;#ASMSTART12435; GFX942-NEXT: ; def s[8:11]12436; GFX942-NEXT: ;;#ASMEND12437; GFX942-NEXT: ;;#ASMSTART12438; GFX942-NEXT: ; def s[0:3]12439; GFX942-NEXT: ;;#ASMEND12440; GFX942-NEXT: s_mov_b32 s8, s312441; GFX942-NEXT: s_mov_b32 s10, s912442; GFX942-NEXT: ;;#ASMSTART12443; GFX942-NEXT: ; use s[8:10]12444; GFX942-NEXT: ;;#ASMEND12445; GFX942-NEXT: s_setpc_b64 s[30:31]12446 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12447 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12448 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 5, i32 5>12449 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)12450 ret void12451}12452 12453define void @s_shuffle_v3p3_v4p3__4_5_5() {12454; GFX9-LABEL: s_shuffle_v3p3_v4p3__4_5_5:12455; GFX9: ; %bb.0:12456; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12457; GFX9-NEXT: ;;#ASMSTART12458; GFX9-NEXT: ; def s[8:11]12459; GFX9-NEXT: ;;#ASMEND12460; GFX9-NEXT: s_mov_b32 s10, s912461; GFX9-NEXT: ;;#ASMSTART12462; GFX9-NEXT: ; use s[8:10]12463; GFX9-NEXT: ;;#ASMEND12464; GFX9-NEXT: s_setpc_b64 s[30:31]12465 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12466 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12467 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 4, i32 5, i32 5>12468 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)12469 ret void12470}12471 12472define void @s_shuffle_v3p3_v4p3__5_5_5() {12473; GFX9-LABEL: s_shuffle_v3p3_v4p3__5_5_5:12474; GFX9: ; %bb.0:12475; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12476; GFX9-NEXT: ;;#ASMSTART12477; GFX9-NEXT: ; def s[8:11]12478; GFX9-NEXT: ;;#ASMEND12479; GFX9-NEXT: s_mov_b32 s8, s912480; GFX9-NEXT: s_mov_b32 s10, s912481; GFX9-NEXT: ;;#ASMSTART12482; GFX9-NEXT: ; use s[8:10]12483; GFX9-NEXT: ;;#ASMEND12484; GFX9-NEXT: s_setpc_b64 s[30:31]12485 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12486 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12487 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 5, i32 5>12488 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)12489 ret void12490}12491 12492define void @s_shuffle_v3p3_v4p3__6_5_5() {12493; GFX9-LABEL: s_shuffle_v3p3_v4p3__6_5_5:12494; GFX9: ; %bb.0:12495; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12496; GFX9-NEXT: ;;#ASMSTART12497; GFX9-NEXT: ; def s[8:11]12498; GFX9-NEXT: ;;#ASMEND12499; GFX9-NEXT: s_mov_b32 s8, s1012500; GFX9-NEXT: s_mov_b32 s10, s912501; GFX9-NEXT: ;;#ASMSTART12502; GFX9-NEXT: ; use s[8:10]12503; GFX9-NEXT: ;;#ASMEND12504; GFX9-NEXT: s_setpc_b64 s[30:31]12505 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12506 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12507 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 5, i32 5>12508 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)12509 ret void12510}12511 12512define void @s_shuffle_v3p3_v4p3__7_5_5() {12513; GFX9-LABEL: s_shuffle_v3p3_v4p3__7_5_5:12514; GFX9: ; %bb.0:12515; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12516; GFX9-NEXT: ;;#ASMSTART12517; GFX9-NEXT: ; def s[8:11]12518; GFX9-NEXT: ;;#ASMEND12519; GFX9-NEXT: s_mov_b32 s8, s1112520; GFX9-NEXT: s_mov_b32 s10, s912521; GFX9-NEXT: ;;#ASMSTART12522; GFX9-NEXT: ; use s[8:10]12523; GFX9-NEXT: ;;#ASMEND12524; GFX9-NEXT: s_setpc_b64 s[30:31]12525 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12526 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12527 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 5>12528 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)12529 ret void12530}12531 12532define void @s_shuffle_v3p3_v4p3__7_u_5() {12533; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_u_5:12534; GFX900: ; %bb.0:12535; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12536; GFX900-NEXT: ;;#ASMSTART12537; GFX900-NEXT: ; def s[4:7]12538; GFX900-NEXT: ;;#ASMEND12539; GFX900-NEXT: s_mov_b32 s8, s712540; GFX900-NEXT: s_mov_b32 s10, s512541; GFX900-NEXT: ;;#ASMSTART12542; GFX900-NEXT: ; use s[8:10]12543; GFX900-NEXT: ;;#ASMEND12544; GFX900-NEXT: s_setpc_b64 s[30:31]12545;12546; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_u_5:12547; GFX90A: ; %bb.0:12548; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12549; GFX90A-NEXT: ;;#ASMSTART12550; GFX90A-NEXT: ; def s[4:7]12551; GFX90A-NEXT: ;;#ASMEND12552; GFX90A-NEXT: s_mov_b32 s8, s712553; GFX90A-NEXT: s_mov_b32 s10, s512554; GFX90A-NEXT: ;;#ASMSTART12555; GFX90A-NEXT: ; use s[8:10]12556; GFX90A-NEXT: ;;#ASMEND12557; GFX90A-NEXT: s_setpc_b64 s[30:31]12558;12559; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_u_5:12560; GFX942: ; %bb.0:12561; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12562; GFX942-NEXT: ;;#ASMSTART12563; GFX942-NEXT: ; def s[0:3]12564; GFX942-NEXT: ;;#ASMEND12565; GFX942-NEXT: s_mov_b32 s8, s312566; GFX942-NEXT: s_mov_b32 s10, s112567; GFX942-NEXT: ;;#ASMSTART12568; GFX942-NEXT: ; use s[8:10]12569; GFX942-NEXT: ;;#ASMEND12570; GFX942-NEXT: s_setpc_b64 s[30:31]12571 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12572 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12573 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 5>12574 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)12575 ret void12576}12577 12578define void @s_shuffle_v3p3_v4p3__7_0_5() {12579; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_0_5:12580; GFX900: ; %bb.0:12581; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12582; GFX900-NEXT: ;;#ASMSTART12583; GFX900-NEXT: ; def s[4:7]12584; GFX900-NEXT: ;;#ASMEND12585; GFX900-NEXT: ;;#ASMSTART12586; GFX900-NEXT: ; def s[12:15]12587; GFX900-NEXT: ;;#ASMEND12588; GFX900-NEXT: s_mov_b32 s8, s1512589; GFX900-NEXT: s_mov_b32 s9, s412590; GFX900-NEXT: s_mov_b32 s10, s1312591; GFX900-NEXT: ;;#ASMSTART12592; GFX900-NEXT: ; use s[8:10]12593; GFX900-NEXT: ;;#ASMEND12594; GFX900-NEXT: s_setpc_b64 s[30:31]12595;12596; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_0_5:12597; GFX90A: ; %bb.0:12598; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12599; GFX90A-NEXT: ;;#ASMSTART12600; GFX90A-NEXT: ; def s[4:7]12601; GFX90A-NEXT: ;;#ASMEND12602; GFX90A-NEXT: ;;#ASMSTART12603; GFX90A-NEXT: ; def s[12:15]12604; GFX90A-NEXT: ;;#ASMEND12605; GFX90A-NEXT: s_mov_b32 s8, s1512606; GFX90A-NEXT: s_mov_b32 s9, s412607; GFX90A-NEXT: s_mov_b32 s10, s1312608; GFX90A-NEXT: ;;#ASMSTART12609; GFX90A-NEXT: ; use s[8:10]12610; GFX90A-NEXT: ;;#ASMEND12611; GFX90A-NEXT: s_setpc_b64 s[30:31]12612;12613; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_0_5:12614; GFX942: ; %bb.0:12615; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12616; GFX942-NEXT: ;;#ASMSTART12617; GFX942-NEXT: ; def s[0:3]12618; GFX942-NEXT: ;;#ASMEND12619; GFX942-NEXT: ;;#ASMSTART12620; GFX942-NEXT: ; def s[4:7]12621; GFX942-NEXT: ;;#ASMEND12622; GFX942-NEXT: s_mov_b32 s8, s712623; GFX942-NEXT: s_mov_b32 s9, s012624; GFX942-NEXT: s_mov_b32 s10, s512625; GFX942-NEXT: ;;#ASMSTART12626; GFX942-NEXT: ; use s[8:10]12627; GFX942-NEXT: ;;#ASMEND12628; GFX942-NEXT: s_setpc_b64 s[30:31]12629 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12630 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12631 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 5>12632 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)12633 ret void12634}12635 12636define void @s_shuffle_v3p3_v4p3__7_1_5() {12637; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_1_5:12638; GFX900: ; %bb.0:12639; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12640; GFX900-NEXT: ;;#ASMSTART12641; GFX900-NEXT: ; def s[8:11]12642; GFX900-NEXT: ;;#ASMEND12643; GFX900-NEXT: ;;#ASMSTART12644; GFX900-NEXT: ; def s[4:7]12645; GFX900-NEXT: ;;#ASMEND12646; GFX900-NEXT: s_mov_b32 s8, s712647; GFX900-NEXT: s_mov_b32 s10, s512648; GFX900-NEXT: ;;#ASMSTART12649; GFX900-NEXT: ; use s[8:10]12650; GFX900-NEXT: ;;#ASMEND12651; GFX900-NEXT: s_setpc_b64 s[30:31]12652;12653; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_1_5:12654; GFX90A: ; %bb.0:12655; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12656; GFX90A-NEXT: ;;#ASMSTART12657; GFX90A-NEXT: ; def s[8:11]12658; GFX90A-NEXT: ;;#ASMEND12659; GFX90A-NEXT: ;;#ASMSTART12660; GFX90A-NEXT: ; def s[4:7]12661; GFX90A-NEXT: ;;#ASMEND12662; GFX90A-NEXT: s_mov_b32 s8, s712663; GFX90A-NEXT: s_mov_b32 s10, s512664; GFX90A-NEXT: ;;#ASMSTART12665; GFX90A-NEXT: ; use s[8:10]12666; GFX90A-NEXT: ;;#ASMEND12667; GFX90A-NEXT: s_setpc_b64 s[30:31]12668;12669; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_1_5:12670; GFX942: ; %bb.0:12671; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12672; GFX942-NEXT: ;;#ASMSTART12673; GFX942-NEXT: ; def s[8:11]12674; GFX942-NEXT: ;;#ASMEND12675; GFX942-NEXT: ;;#ASMSTART12676; GFX942-NEXT: ; def s[0:3]12677; GFX942-NEXT: ;;#ASMEND12678; GFX942-NEXT: s_mov_b32 s8, s312679; GFX942-NEXT: s_mov_b32 s10, s112680; GFX942-NEXT: ;;#ASMSTART12681; GFX942-NEXT: ; use s[8:10]12682; GFX942-NEXT: ;;#ASMEND12683; GFX942-NEXT: s_setpc_b64 s[30:31]12684 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12685 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12686 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 5>12687 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)12688 ret void12689}12690 12691define void @s_shuffle_v3p3_v4p3__7_2_5() {12692; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_2_5:12693; GFX900: ; %bb.0:12694; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12695; GFX900-NEXT: ;;#ASMSTART12696; GFX900-NEXT: ; def s[4:7]12697; GFX900-NEXT: ;;#ASMEND12698; GFX900-NEXT: ;;#ASMSTART12699; GFX900-NEXT: ; def s[12:15]12700; GFX900-NEXT: ;;#ASMEND12701; GFX900-NEXT: s_mov_b32 s8, s1512702; GFX900-NEXT: s_mov_b32 s9, s612703; GFX900-NEXT: s_mov_b32 s10, s1312704; GFX900-NEXT: ;;#ASMSTART12705; GFX900-NEXT: ; use s[8:10]12706; GFX900-NEXT: ;;#ASMEND12707; GFX900-NEXT: s_setpc_b64 s[30:31]12708;12709; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_2_5:12710; GFX90A: ; %bb.0:12711; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12712; GFX90A-NEXT: ;;#ASMSTART12713; GFX90A-NEXT: ; def s[4:7]12714; GFX90A-NEXT: ;;#ASMEND12715; GFX90A-NEXT: ;;#ASMSTART12716; GFX90A-NEXT: ; def s[12:15]12717; GFX90A-NEXT: ;;#ASMEND12718; GFX90A-NEXT: s_mov_b32 s8, s1512719; GFX90A-NEXT: s_mov_b32 s9, s612720; GFX90A-NEXT: s_mov_b32 s10, s1312721; GFX90A-NEXT: ;;#ASMSTART12722; GFX90A-NEXT: ; use s[8:10]12723; GFX90A-NEXT: ;;#ASMEND12724; GFX90A-NEXT: s_setpc_b64 s[30:31]12725;12726; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_2_5:12727; GFX942: ; %bb.0:12728; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12729; GFX942-NEXT: ;;#ASMSTART12730; GFX942-NEXT: ; def s[0:3]12731; GFX942-NEXT: ;;#ASMEND12732; GFX942-NEXT: ;;#ASMSTART12733; GFX942-NEXT: ; def s[4:7]12734; GFX942-NEXT: ;;#ASMEND12735; GFX942-NEXT: s_mov_b32 s8, s712736; GFX942-NEXT: s_mov_b32 s9, s212737; GFX942-NEXT: s_mov_b32 s10, s512738; GFX942-NEXT: ;;#ASMSTART12739; GFX942-NEXT: ; use s[8:10]12740; GFX942-NEXT: ;;#ASMEND12741; GFX942-NEXT: s_setpc_b64 s[30:31]12742 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12743 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12744 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 5>12745 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)12746 ret void12747}12748 12749define void @s_shuffle_v3p3_v4p3__7_3_5() {12750; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_3_5:12751; GFX900: ; %bb.0:12752; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12753; GFX900-NEXT: ;;#ASMSTART12754; GFX900-NEXT: ; def s[4:7]12755; GFX900-NEXT: ;;#ASMEND12756; GFX900-NEXT: ;;#ASMSTART12757; GFX900-NEXT: ; def s[12:15]12758; GFX900-NEXT: ;;#ASMEND12759; GFX900-NEXT: s_mov_b32 s8, s1512760; GFX900-NEXT: s_mov_b32 s9, s712761; GFX900-NEXT: s_mov_b32 s10, s1312762; GFX900-NEXT: ;;#ASMSTART12763; GFX900-NEXT: ; use s[8:10]12764; GFX900-NEXT: ;;#ASMEND12765; GFX900-NEXT: s_setpc_b64 s[30:31]12766;12767; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_3_5:12768; GFX90A: ; %bb.0:12769; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12770; GFX90A-NEXT: ;;#ASMSTART12771; GFX90A-NEXT: ; def s[4:7]12772; GFX90A-NEXT: ;;#ASMEND12773; GFX90A-NEXT: ;;#ASMSTART12774; GFX90A-NEXT: ; def s[12:15]12775; GFX90A-NEXT: ;;#ASMEND12776; GFX90A-NEXT: s_mov_b32 s8, s1512777; GFX90A-NEXT: s_mov_b32 s9, s712778; GFX90A-NEXT: s_mov_b32 s10, s1312779; GFX90A-NEXT: ;;#ASMSTART12780; GFX90A-NEXT: ; use s[8:10]12781; GFX90A-NEXT: ;;#ASMEND12782; GFX90A-NEXT: s_setpc_b64 s[30:31]12783;12784; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_3_5:12785; GFX942: ; %bb.0:12786; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12787; GFX942-NEXT: ;;#ASMSTART12788; GFX942-NEXT: ; def s[0:3]12789; GFX942-NEXT: ;;#ASMEND12790; GFX942-NEXT: ;;#ASMSTART12791; GFX942-NEXT: ; def s[4:7]12792; GFX942-NEXT: ;;#ASMEND12793; GFX942-NEXT: s_mov_b32 s8, s712794; GFX942-NEXT: s_mov_b32 s9, s312795; GFX942-NEXT: s_mov_b32 s10, s512796; GFX942-NEXT: ;;#ASMSTART12797; GFX942-NEXT: ; use s[8:10]12798; GFX942-NEXT: ;;#ASMEND12799; GFX942-NEXT: s_setpc_b64 s[30:31]12800 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12801 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12802 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 5>12803 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)12804 ret void12805}12806 12807define void @s_shuffle_v3p3_v4p3__7_4_5() {12808; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_4_5:12809; GFX900: ; %bb.0:12810; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12811; GFX900-NEXT: ;;#ASMSTART12812; GFX900-NEXT: ; def s[4:7]12813; GFX900-NEXT: ;;#ASMEND12814; GFX900-NEXT: s_mov_b32 s8, s712815; GFX900-NEXT: s_mov_b32 s9, s412816; GFX900-NEXT: s_mov_b32 s10, s512817; GFX900-NEXT: ;;#ASMSTART12818; GFX900-NEXT: ; use s[8:10]12819; GFX900-NEXT: ;;#ASMEND12820; GFX900-NEXT: s_setpc_b64 s[30:31]12821;12822; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_4_5:12823; GFX90A: ; %bb.0:12824; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12825; GFX90A-NEXT: ;;#ASMSTART12826; GFX90A-NEXT: ; def s[4:7]12827; GFX90A-NEXT: ;;#ASMEND12828; GFX90A-NEXT: s_mov_b32 s8, s712829; GFX90A-NEXT: s_mov_b32 s9, s412830; GFX90A-NEXT: s_mov_b32 s10, s512831; GFX90A-NEXT: ;;#ASMSTART12832; GFX90A-NEXT: ; use s[8:10]12833; GFX90A-NEXT: ;;#ASMEND12834; GFX90A-NEXT: s_setpc_b64 s[30:31]12835;12836; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_4_5:12837; GFX942: ; %bb.0:12838; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12839; GFX942-NEXT: ;;#ASMSTART12840; GFX942-NEXT: ; def s[0:3]12841; GFX942-NEXT: ;;#ASMEND12842; GFX942-NEXT: s_mov_b32 s8, s312843; GFX942-NEXT: s_mov_b32 s9, s012844; GFX942-NEXT: s_mov_b32 s10, s112845; GFX942-NEXT: ;;#ASMSTART12846; GFX942-NEXT: ; use s[8:10]12847; GFX942-NEXT: ;;#ASMEND12848; GFX942-NEXT: s_setpc_b64 s[30:31]12849 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12850 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12851 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 5>12852 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)12853 ret void12854}12855 12856define void @s_shuffle_v3p3_v4p3__7_6_5() {12857; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_6_5:12858; GFX900: ; %bb.0:12859; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12860; GFX900-NEXT: ;;#ASMSTART12861; GFX900-NEXT: ; def s[4:7]12862; GFX900-NEXT: ;;#ASMEND12863; GFX900-NEXT: s_mov_b32 s8, s712864; GFX900-NEXT: s_mov_b32 s9, s612865; GFX900-NEXT: s_mov_b32 s10, s512866; GFX900-NEXT: ;;#ASMSTART12867; GFX900-NEXT: ; use s[8:10]12868; GFX900-NEXT: ;;#ASMEND12869; GFX900-NEXT: s_setpc_b64 s[30:31]12870;12871; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_6_5:12872; GFX90A: ; %bb.0:12873; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12874; GFX90A-NEXT: ;;#ASMSTART12875; GFX90A-NEXT: ; def s[4:7]12876; GFX90A-NEXT: ;;#ASMEND12877; GFX90A-NEXT: s_mov_b32 s8, s712878; GFX90A-NEXT: s_mov_b32 s9, s612879; GFX90A-NEXT: s_mov_b32 s10, s512880; GFX90A-NEXT: ;;#ASMSTART12881; GFX90A-NEXT: ; use s[8:10]12882; GFX90A-NEXT: ;;#ASMEND12883; GFX90A-NEXT: s_setpc_b64 s[30:31]12884;12885; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_6_5:12886; GFX942: ; %bb.0:12887; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12888; GFX942-NEXT: ;;#ASMSTART12889; GFX942-NEXT: ; def s[0:3]12890; GFX942-NEXT: ;;#ASMEND12891; GFX942-NEXT: s_mov_b32 s8, s312892; GFX942-NEXT: s_mov_b32 s9, s212893; GFX942-NEXT: s_mov_b32 s10, s112894; GFX942-NEXT: ;;#ASMSTART12895; GFX942-NEXT: ; use s[8:10]12896; GFX942-NEXT: ;;#ASMEND12897; GFX942-NEXT: s_setpc_b64 s[30:31]12898 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12899 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12900 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 5>12901 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)12902 ret void12903}12904 12905define void @s_shuffle_v3p3_v4p3__u_6_6() {12906; GFX9-LABEL: s_shuffle_v3p3_v4p3__u_6_6:12907; GFX9: ; %bb.0:12908; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12909; GFX9-NEXT: ;;#ASMSTART12910; GFX9-NEXT: ; def s[8:11]12911; GFX9-NEXT: ;;#ASMEND12912; GFX9-NEXT: s_mov_b32 s9, s1012913; GFX9-NEXT: ;;#ASMSTART12914; GFX9-NEXT: ; use s[8:10]12915; GFX9-NEXT: ;;#ASMEND12916; GFX9-NEXT: s_setpc_b64 s[30:31]12917 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12918 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12919 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 poison, i32 6, i32 6>12920 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)12921 ret void12922}12923 12924define void @s_shuffle_v3p3_v4p3__0_6_6() {12925; GFX900-LABEL: s_shuffle_v3p3_v4p3__0_6_6:12926; GFX900: ; %bb.0:12927; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12928; GFX900-NEXT: ;;#ASMSTART12929; GFX900-NEXT: ; def s[8:11]12930; GFX900-NEXT: ;;#ASMEND12931; GFX900-NEXT: ;;#ASMSTART12932; GFX900-NEXT: ; def s[4:7]12933; GFX900-NEXT: ;;#ASMEND12934; GFX900-NEXT: s_mov_b32 s9, s612935; GFX900-NEXT: s_mov_b32 s10, s612936; GFX900-NEXT: ;;#ASMSTART12937; GFX900-NEXT: ; use s[8:10]12938; GFX900-NEXT: ;;#ASMEND12939; GFX900-NEXT: s_setpc_b64 s[30:31]12940;12941; GFX90A-LABEL: s_shuffle_v3p3_v4p3__0_6_6:12942; GFX90A: ; %bb.0:12943; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12944; GFX90A-NEXT: ;;#ASMSTART12945; GFX90A-NEXT: ; def s[8:11]12946; GFX90A-NEXT: ;;#ASMEND12947; GFX90A-NEXT: ;;#ASMSTART12948; GFX90A-NEXT: ; def s[4:7]12949; GFX90A-NEXT: ;;#ASMEND12950; GFX90A-NEXT: s_mov_b32 s9, s612951; GFX90A-NEXT: s_mov_b32 s10, s612952; GFX90A-NEXT: ;;#ASMSTART12953; GFX90A-NEXT: ; use s[8:10]12954; GFX90A-NEXT: ;;#ASMEND12955; GFX90A-NEXT: s_setpc_b64 s[30:31]12956;12957; GFX942-LABEL: s_shuffle_v3p3_v4p3__0_6_6:12958; GFX942: ; %bb.0:12959; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12960; GFX942-NEXT: ;;#ASMSTART12961; GFX942-NEXT: ; def s[8:11]12962; GFX942-NEXT: ;;#ASMEND12963; GFX942-NEXT: ;;#ASMSTART12964; GFX942-NEXT: ; def s[0:3]12965; GFX942-NEXT: ;;#ASMEND12966; GFX942-NEXT: s_mov_b32 s9, s212967; GFX942-NEXT: s_mov_b32 s10, s212968; GFX942-NEXT: ;;#ASMSTART12969; GFX942-NEXT: ; use s[8:10]12970; GFX942-NEXT: ;;#ASMEND12971; GFX942-NEXT: s_setpc_b64 s[30:31]12972 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12973 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()12974 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 0, i32 6, i32 6>12975 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)12976 ret void12977}12978 12979define void @s_shuffle_v3p3_v4p3__1_6_6() {12980; GFX900-LABEL: s_shuffle_v3p3_v4p3__1_6_6:12981; GFX900: ; %bb.0:12982; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12983; GFX900-NEXT: ;;#ASMSTART12984; GFX900-NEXT: ; def s[8:11]12985; GFX900-NEXT: ;;#ASMEND12986; GFX900-NEXT: ;;#ASMSTART12987; GFX900-NEXT: ; def s[4:7]12988; GFX900-NEXT: ;;#ASMEND12989; GFX900-NEXT: s_mov_b32 s8, s512990; GFX900-NEXT: s_mov_b32 s9, s1012991; GFX900-NEXT: ;;#ASMSTART12992; GFX900-NEXT: ; use s[8:10]12993; GFX900-NEXT: ;;#ASMEND12994; GFX900-NEXT: s_setpc_b64 s[30:31]12995;12996; GFX90A-LABEL: s_shuffle_v3p3_v4p3__1_6_6:12997; GFX90A: ; %bb.0:12998; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12999; GFX90A-NEXT: ;;#ASMSTART13000; GFX90A-NEXT: ; def s[8:11]13001; GFX90A-NEXT: ;;#ASMEND13002; GFX90A-NEXT: ;;#ASMSTART13003; GFX90A-NEXT: ; def s[4:7]13004; GFX90A-NEXT: ;;#ASMEND13005; GFX90A-NEXT: s_mov_b32 s8, s513006; GFX90A-NEXT: s_mov_b32 s9, s1013007; GFX90A-NEXT: ;;#ASMSTART13008; GFX90A-NEXT: ; use s[8:10]13009; GFX90A-NEXT: ;;#ASMEND13010; GFX90A-NEXT: s_setpc_b64 s[30:31]13011;13012; GFX942-LABEL: s_shuffle_v3p3_v4p3__1_6_6:13013; GFX942: ; %bb.0:13014; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13015; GFX942-NEXT: ;;#ASMSTART13016; GFX942-NEXT: ; def s[8:11]13017; GFX942-NEXT: ;;#ASMEND13018; GFX942-NEXT: ;;#ASMSTART13019; GFX942-NEXT: ; def s[0:3]13020; GFX942-NEXT: ;;#ASMEND13021; GFX942-NEXT: s_mov_b32 s8, s113022; GFX942-NEXT: s_mov_b32 s9, s1013023; GFX942-NEXT: ;;#ASMSTART13024; GFX942-NEXT: ; use s[8:10]13025; GFX942-NEXT: ;;#ASMEND13026; GFX942-NEXT: s_setpc_b64 s[30:31]13027 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13028 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13029 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 1, i32 6, i32 6>13030 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)13031 ret void13032}13033 13034define void @s_shuffle_v3p3_v4p3__2_6_6() {13035; GFX900-LABEL: s_shuffle_v3p3_v4p3__2_6_6:13036; GFX900: ; %bb.0:13037; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13038; GFX900-NEXT: ;;#ASMSTART13039; GFX900-NEXT: ; def s[8:11]13040; GFX900-NEXT: ;;#ASMEND13041; GFX900-NEXT: ;;#ASMSTART13042; GFX900-NEXT: ; def s[4:7]13043; GFX900-NEXT: ;;#ASMEND13044; GFX900-NEXT: s_mov_b32 s8, s613045; GFX900-NEXT: s_mov_b32 s9, s1013046; GFX900-NEXT: ;;#ASMSTART13047; GFX900-NEXT: ; use s[8:10]13048; GFX900-NEXT: ;;#ASMEND13049; GFX900-NEXT: s_setpc_b64 s[30:31]13050;13051; GFX90A-LABEL: s_shuffle_v3p3_v4p3__2_6_6:13052; GFX90A: ; %bb.0:13053; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13054; GFX90A-NEXT: ;;#ASMSTART13055; GFX90A-NEXT: ; def s[8:11]13056; GFX90A-NEXT: ;;#ASMEND13057; GFX90A-NEXT: ;;#ASMSTART13058; GFX90A-NEXT: ; def s[4:7]13059; GFX90A-NEXT: ;;#ASMEND13060; GFX90A-NEXT: s_mov_b32 s8, s613061; GFX90A-NEXT: s_mov_b32 s9, s1013062; GFX90A-NEXT: ;;#ASMSTART13063; GFX90A-NEXT: ; use s[8:10]13064; GFX90A-NEXT: ;;#ASMEND13065; GFX90A-NEXT: s_setpc_b64 s[30:31]13066;13067; GFX942-LABEL: s_shuffle_v3p3_v4p3__2_6_6:13068; GFX942: ; %bb.0:13069; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13070; GFX942-NEXT: ;;#ASMSTART13071; GFX942-NEXT: ; def s[8:11]13072; GFX942-NEXT: ;;#ASMEND13073; GFX942-NEXT: ;;#ASMSTART13074; GFX942-NEXT: ; def s[0:3]13075; GFX942-NEXT: ;;#ASMEND13076; GFX942-NEXT: s_mov_b32 s8, s213077; GFX942-NEXT: s_mov_b32 s9, s1013078; GFX942-NEXT: ;;#ASMSTART13079; GFX942-NEXT: ; use s[8:10]13080; GFX942-NEXT: ;;#ASMEND13081; GFX942-NEXT: s_setpc_b64 s[30:31]13082 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13083 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13084 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 2, i32 6, i32 6>13085 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)13086 ret void13087}13088 13089define void @s_shuffle_v3p3_v4p3__3_6_6() {13090; GFX900-LABEL: s_shuffle_v3p3_v4p3__3_6_6:13091; GFX900: ; %bb.0:13092; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13093; GFX900-NEXT: ;;#ASMSTART13094; GFX900-NEXT: ; def s[8:11]13095; GFX900-NEXT: ;;#ASMEND13096; GFX900-NEXT: ;;#ASMSTART13097; GFX900-NEXT: ; def s[4:7]13098; GFX900-NEXT: ;;#ASMEND13099; GFX900-NEXT: s_mov_b32 s8, s713100; GFX900-NEXT: s_mov_b32 s9, s1013101; GFX900-NEXT: ;;#ASMSTART13102; GFX900-NEXT: ; use s[8:10]13103; GFX900-NEXT: ;;#ASMEND13104; GFX900-NEXT: s_setpc_b64 s[30:31]13105;13106; GFX90A-LABEL: s_shuffle_v3p3_v4p3__3_6_6:13107; GFX90A: ; %bb.0:13108; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13109; GFX90A-NEXT: ;;#ASMSTART13110; GFX90A-NEXT: ; def s[8:11]13111; GFX90A-NEXT: ;;#ASMEND13112; GFX90A-NEXT: ;;#ASMSTART13113; GFX90A-NEXT: ; def s[4:7]13114; GFX90A-NEXT: ;;#ASMEND13115; GFX90A-NEXT: s_mov_b32 s8, s713116; GFX90A-NEXT: s_mov_b32 s9, s1013117; GFX90A-NEXT: ;;#ASMSTART13118; GFX90A-NEXT: ; use s[8:10]13119; GFX90A-NEXT: ;;#ASMEND13120; GFX90A-NEXT: s_setpc_b64 s[30:31]13121;13122; GFX942-LABEL: s_shuffle_v3p3_v4p3__3_6_6:13123; GFX942: ; %bb.0:13124; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13125; GFX942-NEXT: ;;#ASMSTART13126; GFX942-NEXT: ; def s[8:11]13127; GFX942-NEXT: ;;#ASMEND13128; GFX942-NEXT: ;;#ASMSTART13129; GFX942-NEXT: ; def s[0:3]13130; GFX942-NEXT: ;;#ASMEND13131; GFX942-NEXT: s_mov_b32 s8, s313132; GFX942-NEXT: s_mov_b32 s9, s1013133; GFX942-NEXT: ;;#ASMSTART13134; GFX942-NEXT: ; use s[8:10]13135; GFX942-NEXT: ;;#ASMEND13136; GFX942-NEXT: s_setpc_b64 s[30:31]13137 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13138 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13139 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 6, i32 6>13140 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)13141 ret void13142}13143 13144define void @s_shuffle_v3p3_v4p3__4_6_6() {13145; GFX9-LABEL: s_shuffle_v3p3_v4p3__4_6_6:13146; GFX9: ; %bb.0:13147; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13148; GFX9-NEXT: ;;#ASMSTART13149; GFX9-NEXT: ; def s[8:11]13150; GFX9-NEXT: ;;#ASMEND13151; GFX9-NEXT: s_mov_b32 s9, s1013152; GFX9-NEXT: ;;#ASMSTART13153; GFX9-NEXT: ; use s[8:10]13154; GFX9-NEXT: ;;#ASMEND13155; GFX9-NEXT: s_setpc_b64 s[30:31]13156 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13157 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13158 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 4, i32 6, i32 6>13159 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)13160 ret void13161}13162 13163define void @s_shuffle_v3p3_v4p3__5_6_6() {13164; GFX9-LABEL: s_shuffle_v3p3_v4p3__5_6_6:13165; GFX9: ; %bb.0:13166; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13167; GFX9-NEXT: ;;#ASMSTART13168; GFX9-NEXT: ; def s[8:11]13169; GFX9-NEXT: ;;#ASMEND13170; GFX9-NEXT: s_mov_b32 s8, s913171; GFX9-NEXT: s_mov_b32 s9, s1013172; GFX9-NEXT: ;;#ASMSTART13173; GFX9-NEXT: ; use s[8:10]13174; GFX9-NEXT: ;;#ASMEND13175; GFX9-NEXT: s_setpc_b64 s[30:31]13176 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13177 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13178 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 6, i32 6>13179 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)13180 ret void13181}13182 13183define void @s_shuffle_v3p3_v4p3__6_6_6() {13184; GFX9-LABEL: s_shuffle_v3p3_v4p3__6_6_6:13185; GFX9: ; %bb.0:13186; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13187; GFX9-NEXT: ;;#ASMSTART13188; GFX9-NEXT: ; def s[8:11]13189; GFX9-NEXT: ;;#ASMEND13190; GFX9-NEXT: s_mov_b32 s8, s1013191; GFX9-NEXT: s_mov_b32 s9, s1013192; GFX9-NEXT: ;;#ASMSTART13193; GFX9-NEXT: ; use s[8:10]13194; GFX9-NEXT: ;;#ASMEND13195; GFX9-NEXT: s_setpc_b64 s[30:31]13196 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13197 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13198 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 6, i32 6>13199 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)13200 ret void13201}13202 13203define void @s_shuffle_v3p3_v4p3__7_6_6() {13204; GFX9-LABEL: s_shuffle_v3p3_v4p3__7_6_6:13205; GFX9: ; %bb.0:13206; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13207; GFX9-NEXT: ;;#ASMSTART13208; GFX9-NEXT: ; def s[8:11]13209; GFX9-NEXT: ;;#ASMEND13210; GFX9-NEXT: s_mov_b32 s8, s1113211; GFX9-NEXT: s_mov_b32 s9, s1013212; GFX9-NEXT: ;;#ASMSTART13213; GFX9-NEXT: ; use s[8:10]13214; GFX9-NEXT: ;;#ASMEND13215; GFX9-NEXT: s_setpc_b64 s[30:31]13216 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13217 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13218 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 6>13219 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)13220 ret void13221}13222 13223define void @s_shuffle_v3p3_v4p3__7_u_6() {13224; GFX9-LABEL: s_shuffle_v3p3_v4p3__7_u_6:13225; GFX9: ; %bb.0:13226; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13227; GFX9-NEXT: ;;#ASMSTART13228; GFX9-NEXT: ; def s[8:11]13229; GFX9-NEXT: ;;#ASMEND13230; GFX9-NEXT: s_mov_b32 s8, s1113231; GFX9-NEXT: ;;#ASMSTART13232; GFX9-NEXT: ; use s[8:10]13233; GFX9-NEXT: ;;#ASMEND13234; GFX9-NEXT: s_setpc_b64 s[30:31]13235 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13236 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13237 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 6>13238 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)13239 ret void13240}13241 13242define void @s_shuffle_v3p3_v4p3__7_0_6() {13243; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_0_6:13244; GFX900: ; %bb.0:13245; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13246; GFX900-NEXT: ;;#ASMSTART13247; GFX900-NEXT: ; def s[8:11]13248; GFX900-NEXT: ;;#ASMEND13249; GFX900-NEXT: ;;#ASMSTART13250; GFX900-NEXT: ; def s[4:7]13251; GFX900-NEXT: ;;#ASMEND13252; GFX900-NEXT: s_mov_b32 s8, s1113253; GFX900-NEXT: s_mov_b32 s9, s413254; GFX900-NEXT: ;;#ASMSTART13255; GFX900-NEXT: ; use s[8:10]13256; GFX900-NEXT: ;;#ASMEND13257; GFX900-NEXT: s_setpc_b64 s[30:31]13258;13259; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_0_6:13260; GFX90A: ; %bb.0:13261; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13262; GFX90A-NEXT: ;;#ASMSTART13263; GFX90A-NEXT: ; def s[8:11]13264; GFX90A-NEXT: ;;#ASMEND13265; GFX90A-NEXT: ;;#ASMSTART13266; GFX90A-NEXT: ; def s[4:7]13267; GFX90A-NEXT: ;;#ASMEND13268; GFX90A-NEXT: s_mov_b32 s8, s1113269; GFX90A-NEXT: s_mov_b32 s9, s413270; GFX90A-NEXT: ;;#ASMSTART13271; GFX90A-NEXT: ; use s[8:10]13272; GFX90A-NEXT: ;;#ASMEND13273; GFX90A-NEXT: s_setpc_b64 s[30:31]13274;13275; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_0_6:13276; GFX942: ; %bb.0:13277; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13278; GFX942-NEXT: ;;#ASMSTART13279; GFX942-NEXT: ; def s[8:11]13280; GFX942-NEXT: ;;#ASMEND13281; GFX942-NEXT: ;;#ASMSTART13282; GFX942-NEXT: ; def s[0:3]13283; GFX942-NEXT: ;;#ASMEND13284; GFX942-NEXT: s_mov_b32 s8, s1113285; GFX942-NEXT: s_mov_b32 s9, s013286; GFX942-NEXT: ;;#ASMSTART13287; GFX942-NEXT: ; use s[8:10]13288; GFX942-NEXT: ;;#ASMEND13289; GFX942-NEXT: s_setpc_b64 s[30:31]13290 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13291 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13292 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 6>13293 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)13294 ret void13295}13296 13297define void @s_shuffle_v3p3_v4p3__7_1_6() {13298; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_1_6:13299; GFX900: ; %bb.0:13300; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13301; GFX900-NEXT: ;;#ASMSTART13302; GFX900-NEXT: ; def s[8:11]13303; GFX900-NEXT: ;;#ASMEND13304; GFX900-NEXT: ;;#ASMSTART13305; GFX900-NEXT: ; def s[4:7]13306; GFX900-NEXT: ;;#ASMEND13307; GFX900-NEXT: s_mov_b32 s8, s713308; GFX900-NEXT: s_mov_b32 s10, s613309; GFX900-NEXT: ;;#ASMSTART13310; GFX900-NEXT: ; use s[8:10]13311; GFX900-NEXT: ;;#ASMEND13312; GFX900-NEXT: s_setpc_b64 s[30:31]13313;13314; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_1_6:13315; GFX90A: ; %bb.0:13316; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13317; GFX90A-NEXT: ;;#ASMSTART13318; GFX90A-NEXT: ; def s[8:11]13319; GFX90A-NEXT: ;;#ASMEND13320; GFX90A-NEXT: ;;#ASMSTART13321; GFX90A-NEXT: ; def s[4:7]13322; GFX90A-NEXT: ;;#ASMEND13323; GFX90A-NEXT: s_mov_b32 s8, s713324; GFX90A-NEXT: s_mov_b32 s10, s613325; GFX90A-NEXT: ;;#ASMSTART13326; GFX90A-NEXT: ; use s[8:10]13327; GFX90A-NEXT: ;;#ASMEND13328; GFX90A-NEXT: s_setpc_b64 s[30:31]13329;13330; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_1_6:13331; GFX942: ; %bb.0:13332; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13333; GFX942-NEXT: ;;#ASMSTART13334; GFX942-NEXT: ; def s[8:11]13335; GFX942-NEXT: ;;#ASMEND13336; GFX942-NEXT: ;;#ASMSTART13337; GFX942-NEXT: ; def s[0:3]13338; GFX942-NEXT: ;;#ASMEND13339; GFX942-NEXT: s_mov_b32 s8, s313340; GFX942-NEXT: s_mov_b32 s10, s213341; GFX942-NEXT: ;;#ASMSTART13342; GFX942-NEXT: ; use s[8:10]13343; GFX942-NEXT: ;;#ASMEND13344; GFX942-NEXT: s_setpc_b64 s[30:31]13345 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13346 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13347 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 6>13348 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)13349 ret void13350}13351 13352define void @s_shuffle_v3p3_v4p3__7_2_6() {13353; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_2_6:13354; GFX900: ; %bb.0:13355; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13356; GFX900-NEXT: ;;#ASMSTART13357; GFX900-NEXT: ; def s[8:11]13358; GFX900-NEXT: ;;#ASMEND13359; GFX900-NEXT: ;;#ASMSTART13360; GFX900-NEXT: ; def s[4:7]13361; GFX900-NEXT: ;;#ASMEND13362; GFX900-NEXT: s_mov_b32 s8, s1113363; GFX900-NEXT: s_mov_b32 s9, s613364; GFX900-NEXT: ;;#ASMSTART13365; GFX900-NEXT: ; use s[8:10]13366; GFX900-NEXT: ;;#ASMEND13367; GFX900-NEXT: s_setpc_b64 s[30:31]13368;13369; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_2_6:13370; GFX90A: ; %bb.0:13371; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13372; GFX90A-NEXT: ;;#ASMSTART13373; GFX90A-NEXT: ; def s[8:11]13374; GFX90A-NEXT: ;;#ASMEND13375; GFX90A-NEXT: ;;#ASMSTART13376; GFX90A-NEXT: ; def s[4:7]13377; GFX90A-NEXT: ;;#ASMEND13378; GFX90A-NEXT: s_mov_b32 s8, s1113379; GFX90A-NEXT: s_mov_b32 s9, s613380; GFX90A-NEXT: ;;#ASMSTART13381; GFX90A-NEXT: ; use s[8:10]13382; GFX90A-NEXT: ;;#ASMEND13383; GFX90A-NEXT: s_setpc_b64 s[30:31]13384;13385; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_2_6:13386; GFX942: ; %bb.0:13387; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13388; GFX942-NEXT: ;;#ASMSTART13389; GFX942-NEXT: ; def s[8:11]13390; GFX942-NEXT: ;;#ASMEND13391; GFX942-NEXT: ;;#ASMSTART13392; GFX942-NEXT: ; def s[0:3]13393; GFX942-NEXT: ;;#ASMEND13394; GFX942-NEXT: s_mov_b32 s8, s1113395; GFX942-NEXT: s_mov_b32 s9, s213396; GFX942-NEXT: ;;#ASMSTART13397; GFX942-NEXT: ; use s[8:10]13398; GFX942-NEXT: ;;#ASMEND13399; GFX942-NEXT: s_setpc_b64 s[30:31]13400 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13401 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13402 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 6>13403 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)13404 ret void13405}13406 13407define void @s_shuffle_v3p3_v4p3__7_3_6() {13408; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_3_6:13409; GFX900: ; %bb.0:13410; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13411; GFX900-NEXT: ;;#ASMSTART13412; GFX900-NEXT: ; def s[8:11]13413; GFX900-NEXT: ;;#ASMEND13414; GFX900-NEXT: ;;#ASMSTART13415; GFX900-NEXT: ; def s[4:7]13416; GFX900-NEXT: ;;#ASMEND13417; GFX900-NEXT: s_mov_b32 s8, s1113418; GFX900-NEXT: s_mov_b32 s9, s713419; GFX900-NEXT: ;;#ASMSTART13420; GFX900-NEXT: ; use s[8:10]13421; GFX900-NEXT: ;;#ASMEND13422; GFX900-NEXT: s_setpc_b64 s[30:31]13423;13424; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_3_6:13425; GFX90A: ; %bb.0:13426; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13427; GFX90A-NEXT: ;;#ASMSTART13428; GFX90A-NEXT: ; def s[8:11]13429; GFX90A-NEXT: ;;#ASMEND13430; GFX90A-NEXT: ;;#ASMSTART13431; GFX90A-NEXT: ; def s[4:7]13432; GFX90A-NEXT: ;;#ASMEND13433; GFX90A-NEXT: s_mov_b32 s8, s1113434; GFX90A-NEXT: s_mov_b32 s9, s713435; GFX90A-NEXT: ;;#ASMSTART13436; GFX90A-NEXT: ; use s[8:10]13437; GFX90A-NEXT: ;;#ASMEND13438; GFX90A-NEXT: s_setpc_b64 s[30:31]13439;13440; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_3_6:13441; GFX942: ; %bb.0:13442; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13443; GFX942-NEXT: ;;#ASMSTART13444; GFX942-NEXT: ; def s[8:11]13445; GFX942-NEXT: ;;#ASMEND13446; GFX942-NEXT: ;;#ASMSTART13447; GFX942-NEXT: ; def s[0:3]13448; GFX942-NEXT: ;;#ASMEND13449; GFX942-NEXT: s_mov_b32 s8, s1113450; GFX942-NEXT: s_mov_b32 s9, s313451; GFX942-NEXT: ;;#ASMSTART13452; GFX942-NEXT: ; use s[8:10]13453; GFX942-NEXT: ;;#ASMEND13454; GFX942-NEXT: s_setpc_b64 s[30:31]13455 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13456 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13457 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 6>13458 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)13459 ret void13460}13461 13462define void @s_shuffle_v3p3_v4p3__7_4_6() {13463; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_4_6:13464; GFX900: ; %bb.0:13465; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13466; GFX900-NEXT: ;;#ASMSTART13467; GFX900-NEXT: ; def s[4:7]13468; GFX900-NEXT: ;;#ASMEND13469; GFX900-NEXT: s_mov_b32 s8, s713470; GFX900-NEXT: s_mov_b32 s9, s413471; GFX900-NEXT: s_mov_b32 s10, s613472; GFX900-NEXT: ;;#ASMSTART13473; GFX900-NEXT: ; use s[8:10]13474; GFX900-NEXT: ;;#ASMEND13475; GFX900-NEXT: s_setpc_b64 s[30:31]13476;13477; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_4_6:13478; GFX90A: ; %bb.0:13479; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13480; GFX90A-NEXT: ;;#ASMSTART13481; GFX90A-NEXT: ; def s[4:7]13482; GFX90A-NEXT: ;;#ASMEND13483; GFX90A-NEXT: s_mov_b32 s8, s713484; GFX90A-NEXT: s_mov_b32 s9, s413485; GFX90A-NEXT: s_mov_b32 s10, s613486; GFX90A-NEXT: ;;#ASMSTART13487; GFX90A-NEXT: ; use s[8:10]13488; GFX90A-NEXT: ;;#ASMEND13489; GFX90A-NEXT: s_setpc_b64 s[30:31]13490;13491; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_4_6:13492; GFX942: ; %bb.0:13493; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13494; GFX942-NEXT: ;;#ASMSTART13495; GFX942-NEXT: ; def s[0:3]13496; GFX942-NEXT: ;;#ASMEND13497; GFX942-NEXT: s_mov_b32 s8, s313498; GFX942-NEXT: s_mov_b32 s9, s013499; GFX942-NEXT: s_mov_b32 s10, s213500; GFX942-NEXT: ;;#ASMSTART13501; GFX942-NEXT: ; use s[8:10]13502; GFX942-NEXT: ;;#ASMEND13503; GFX942-NEXT: s_setpc_b64 s[30:31]13504 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13505 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13506 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 6>13507 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)13508 ret void13509}13510 13511define void @s_shuffle_v3p3_v4p3__7_5_6() {13512; GFX9-LABEL: s_shuffle_v3p3_v4p3__7_5_6:13513; GFX9: ; %bb.0:13514; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13515; GFX9-NEXT: ;;#ASMSTART13516; GFX9-NEXT: ; def s[8:11]13517; GFX9-NEXT: ;;#ASMEND13518; GFX9-NEXT: s_mov_b32 s8, s1113519; GFX9-NEXT: ;;#ASMSTART13520; GFX9-NEXT: ; use s[8:10]13521; GFX9-NEXT: ;;#ASMEND13522; GFX9-NEXT: s_setpc_b64 s[30:31]13523 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13524 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13525 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 6>13526 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)13527 ret void13528}13529 13530define void @s_shuffle_v3p3_v4p3__u_7_7() {13531; GFX900-LABEL: s_shuffle_v3p3_v4p3__u_7_7:13532; GFX900: ; %bb.0:13533; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13534; GFX900-NEXT: ;;#ASMSTART13535; GFX900-NEXT: ; def s[4:7]13536; GFX900-NEXT: ;;#ASMEND13537; GFX900-NEXT: s_mov_b32 s9, s713538; GFX900-NEXT: s_mov_b32 s10, s713539; GFX900-NEXT: ;;#ASMSTART13540; GFX900-NEXT: ; use s[8:10]13541; GFX900-NEXT: ;;#ASMEND13542; GFX900-NEXT: s_setpc_b64 s[30:31]13543;13544; GFX90A-LABEL: s_shuffle_v3p3_v4p3__u_7_7:13545; GFX90A: ; %bb.0:13546; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13547; GFX90A-NEXT: ;;#ASMSTART13548; GFX90A-NEXT: ; def s[4:7]13549; GFX90A-NEXT: ;;#ASMEND13550; GFX90A-NEXT: s_mov_b32 s9, s713551; GFX90A-NEXT: s_mov_b32 s10, s713552; GFX90A-NEXT: ;;#ASMSTART13553; GFX90A-NEXT: ; use s[8:10]13554; GFX90A-NEXT: ;;#ASMEND13555; GFX90A-NEXT: s_setpc_b64 s[30:31]13556;13557; GFX942-LABEL: s_shuffle_v3p3_v4p3__u_7_7:13558; GFX942: ; %bb.0:13559; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13560; GFX942-NEXT: ;;#ASMSTART13561; GFX942-NEXT: ; def s[0:3]13562; GFX942-NEXT: ;;#ASMEND13563; GFX942-NEXT: s_mov_b32 s9, s313564; GFX942-NEXT: s_mov_b32 s10, s313565; GFX942-NEXT: ;;#ASMSTART13566; GFX942-NEXT: ; use s[8:10]13567; GFX942-NEXT: ;;#ASMEND13568; GFX942-NEXT: s_setpc_b64 s[30:31]13569 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13570 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13571 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 poison, i32 7, i32 7>13572 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)13573 ret void13574}13575 13576define void @s_shuffle_v3p3_v4p3__0_7_7() {13577; GFX900-LABEL: s_shuffle_v3p3_v4p3__0_7_7:13578; GFX900: ; %bb.0:13579; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13580; GFX900-NEXT: ;;#ASMSTART13581; GFX900-NEXT: ; def s[8:11]13582; GFX900-NEXT: ;;#ASMEND13583; GFX900-NEXT: ;;#ASMSTART13584; GFX900-NEXT: ; def s[4:7]13585; GFX900-NEXT: ;;#ASMEND13586; GFX900-NEXT: s_mov_b32 s9, s713587; GFX900-NEXT: s_mov_b32 s10, s713588; GFX900-NEXT: ;;#ASMSTART13589; GFX900-NEXT: ; use s[8:10]13590; GFX900-NEXT: ;;#ASMEND13591; GFX900-NEXT: s_setpc_b64 s[30:31]13592;13593; GFX90A-LABEL: s_shuffle_v3p3_v4p3__0_7_7:13594; GFX90A: ; %bb.0:13595; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13596; GFX90A-NEXT: ;;#ASMSTART13597; GFX90A-NEXT: ; def s[8:11]13598; GFX90A-NEXT: ;;#ASMEND13599; GFX90A-NEXT: ;;#ASMSTART13600; GFX90A-NEXT: ; def s[4:7]13601; GFX90A-NEXT: ;;#ASMEND13602; GFX90A-NEXT: s_mov_b32 s9, s713603; GFX90A-NEXT: s_mov_b32 s10, s713604; GFX90A-NEXT: ;;#ASMSTART13605; GFX90A-NEXT: ; use s[8:10]13606; GFX90A-NEXT: ;;#ASMEND13607; GFX90A-NEXT: s_setpc_b64 s[30:31]13608;13609; GFX942-LABEL: s_shuffle_v3p3_v4p3__0_7_7:13610; GFX942: ; %bb.0:13611; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13612; GFX942-NEXT: ;;#ASMSTART13613; GFX942-NEXT: ; def s[8:11]13614; GFX942-NEXT: ;;#ASMEND13615; GFX942-NEXT: ;;#ASMSTART13616; GFX942-NEXT: ; def s[0:3]13617; GFX942-NEXT: ;;#ASMEND13618; GFX942-NEXT: s_mov_b32 s9, s313619; GFX942-NEXT: s_mov_b32 s10, s313620; GFX942-NEXT: ;;#ASMSTART13621; GFX942-NEXT: ; use s[8:10]13622; GFX942-NEXT: ;;#ASMEND13623; GFX942-NEXT: s_setpc_b64 s[30:31]13624 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13625 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13626 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 0, i32 7, i32 7>13627 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)13628 ret void13629}13630 13631define void @s_shuffle_v3p3_v4p3__1_7_7() {13632; GFX900-LABEL: s_shuffle_v3p3_v4p3__1_7_7:13633; GFX900: ; %bb.0:13634; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13635; GFX900-NEXT: ;;#ASMSTART13636; GFX900-NEXT: ; def s[8:11]13637; GFX900-NEXT: ;;#ASMEND13638; GFX900-NEXT: ;;#ASMSTART13639; GFX900-NEXT: ; def s[4:7]13640; GFX900-NEXT: ;;#ASMEND13641; GFX900-NEXT: s_mov_b32 s8, s513642; GFX900-NEXT: s_mov_b32 s9, s1113643; GFX900-NEXT: s_mov_b32 s10, s1113644; GFX900-NEXT: ;;#ASMSTART13645; GFX900-NEXT: ; use s[8:10]13646; GFX900-NEXT: ;;#ASMEND13647; GFX900-NEXT: s_setpc_b64 s[30:31]13648;13649; GFX90A-LABEL: s_shuffle_v3p3_v4p3__1_7_7:13650; GFX90A: ; %bb.0:13651; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13652; GFX90A-NEXT: ;;#ASMSTART13653; GFX90A-NEXT: ; def s[8:11]13654; GFX90A-NEXT: ;;#ASMEND13655; GFX90A-NEXT: ;;#ASMSTART13656; GFX90A-NEXT: ; def s[4:7]13657; GFX90A-NEXT: ;;#ASMEND13658; GFX90A-NEXT: s_mov_b32 s8, s513659; GFX90A-NEXT: s_mov_b32 s9, s1113660; GFX90A-NEXT: s_mov_b32 s10, s1113661; GFX90A-NEXT: ;;#ASMSTART13662; GFX90A-NEXT: ; use s[8:10]13663; GFX90A-NEXT: ;;#ASMEND13664; GFX90A-NEXT: s_setpc_b64 s[30:31]13665;13666; GFX942-LABEL: s_shuffle_v3p3_v4p3__1_7_7:13667; GFX942: ; %bb.0:13668; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13669; GFX942-NEXT: ;;#ASMSTART13670; GFX942-NEXT: ; def s[0:3]13671; GFX942-NEXT: ;;#ASMEND13672; GFX942-NEXT: ;;#ASMSTART13673; GFX942-NEXT: ; def s[4:7]13674; GFX942-NEXT: ;;#ASMEND13675; GFX942-NEXT: s_mov_b32 s8, s113676; GFX942-NEXT: s_mov_b32 s9, s713677; GFX942-NEXT: s_mov_b32 s10, s713678; GFX942-NEXT: ;;#ASMSTART13679; GFX942-NEXT: ; use s[8:10]13680; GFX942-NEXT: ;;#ASMEND13681; GFX942-NEXT: s_setpc_b64 s[30:31]13682 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13683 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13684 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 1, i32 7, i32 7>13685 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)13686 ret void13687}13688 13689define void @s_shuffle_v3p3_v4p3__2_7_7() {13690; GFX900-LABEL: s_shuffle_v3p3_v4p3__2_7_7:13691; GFX900: ; %bb.0:13692; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13693; GFX900-NEXT: ;;#ASMSTART13694; GFX900-NEXT: ; def s[8:11]13695; GFX900-NEXT: ;;#ASMEND13696; GFX900-NEXT: ;;#ASMSTART13697; GFX900-NEXT: ; def s[4:7]13698; GFX900-NEXT: ;;#ASMEND13699; GFX900-NEXT: s_mov_b32 s8, s613700; GFX900-NEXT: s_mov_b32 s9, s1113701; GFX900-NEXT: s_mov_b32 s10, s1113702; GFX900-NEXT: ;;#ASMSTART13703; GFX900-NEXT: ; use s[8:10]13704; GFX900-NEXT: ;;#ASMEND13705; GFX900-NEXT: s_setpc_b64 s[30:31]13706;13707; GFX90A-LABEL: s_shuffle_v3p3_v4p3__2_7_7:13708; GFX90A: ; %bb.0:13709; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13710; GFX90A-NEXT: ;;#ASMSTART13711; GFX90A-NEXT: ; def s[8:11]13712; GFX90A-NEXT: ;;#ASMEND13713; GFX90A-NEXT: ;;#ASMSTART13714; GFX90A-NEXT: ; def s[4:7]13715; GFX90A-NEXT: ;;#ASMEND13716; GFX90A-NEXT: s_mov_b32 s8, s613717; GFX90A-NEXT: s_mov_b32 s9, s1113718; GFX90A-NEXT: s_mov_b32 s10, s1113719; GFX90A-NEXT: ;;#ASMSTART13720; GFX90A-NEXT: ; use s[8:10]13721; GFX90A-NEXT: ;;#ASMEND13722; GFX90A-NEXT: s_setpc_b64 s[30:31]13723;13724; GFX942-LABEL: s_shuffle_v3p3_v4p3__2_7_7:13725; GFX942: ; %bb.0:13726; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13727; GFX942-NEXT: ;;#ASMSTART13728; GFX942-NEXT: ; def s[0:3]13729; GFX942-NEXT: ;;#ASMEND13730; GFX942-NEXT: ;;#ASMSTART13731; GFX942-NEXT: ; def s[4:7]13732; GFX942-NEXT: ;;#ASMEND13733; GFX942-NEXT: s_mov_b32 s8, s213734; GFX942-NEXT: s_mov_b32 s9, s713735; GFX942-NEXT: s_mov_b32 s10, s713736; GFX942-NEXT: ;;#ASMSTART13737; GFX942-NEXT: ; use s[8:10]13738; GFX942-NEXT: ;;#ASMEND13739; GFX942-NEXT: s_setpc_b64 s[30:31]13740 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13741 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13742 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 2, i32 7, i32 7>13743 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)13744 ret void13745}13746 13747define void @s_shuffle_v3p3_v4p3__3_7_7() {13748; GFX900-LABEL: s_shuffle_v3p3_v4p3__3_7_7:13749; GFX900: ; %bb.0:13750; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13751; GFX900-NEXT: ;;#ASMSTART13752; GFX900-NEXT: ; def s[8:11]13753; GFX900-NEXT: ;;#ASMEND13754; GFX900-NEXT: ;;#ASMSTART13755; GFX900-NEXT: ; def s[4:7]13756; GFX900-NEXT: ;;#ASMEND13757; GFX900-NEXT: s_mov_b32 s8, s713758; GFX900-NEXT: s_mov_b32 s9, s1113759; GFX900-NEXT: s_mov_b32 s10, s1113760; GFX900-NEXT: ;;#ASMSTART13761; GFX900-NEXT: ; use s[8:10]13762; GFX900-NEXT: ;;#ASMEND13763; GFX900-NEXT: s_setpc_b64 s[30:31]13764;13765; GFX90A-LABEL: s_shuffle_v3p3_v4p3__3_7_7:13766; GFX90A: ; %bb.0:13767; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13768; GFX90A-NEXT: ;;#ASMSTART13769; GFX90A-NEXT: ; def s[8:11]13770; GFX90A-NEXT: ;;#ASMEND13771; GFX90A-NEXT: ;;#ASMSTART13772; GFX90A-NEXT: ; def s[4:7]13773; GFX90A-NEXT: ;;#ASMEND13774; GFX90A-NEXT: s_mov_b32 s8, s713775; GFX90A-NEXT: s_mov_b32 s9, s1113776; GFX90A-NEXT: s_mov_b32 s10, s1113777; GFX90A-NEXT: ;;#ASMSTART13778; GFX90A-NEXT: ; use s[8:10]13779; GFX90A-NEXT: ;;#ASMEND13780; GFX90A-NEXT: s_setpc_b64 s[30:31]13781;13782; GFX942-LABEL: s_shuffle_v3p3_v4p3__3_7_7:13783; GFX942: ; %bb.0:13784; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13785; GFX942-NEXT: ;;#ASMSTART13786; GFX942-NEXT: ; def s[0:3]13787; GFX942-NEXT: ;;#ASMEND13788; GFX942-NEXT: ;;#ASMSTART13789; GFX942-NEXT: ; def s[4:7]13790; GFX942-NEXT: ;;#ASMEND13791; GFX942-NEXT: s_mov_b32 s8, s313792; GFX942-NEXT: s_mov_b32 s9, s713793; GFX942-NEXT: s_mov_b32 s10, s713794; GFX942-NEXT: ;;#ASMSTART13795; GFX942-NEXT: ; use s[8:10]13796; GFX942-NEXT: ;;#ASMEND13797; GFX942-NEXT: s_setpc_b64 s[30:31]13798 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13799 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13800 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 3, i32 7, i32 7>13801 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)13802 ret void13803}13804 13805define void @s_shuffle_v3p3_v4p3__4_7_7() {13806; GFX9-LABEL: s_shuffle_v3p3_v4p3__4_7_7:13807; GFX9: ; %bb.0:13808; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13809; GFX9-NEXT: ;;#ASMSTART13810; GFX9-NEXT: ; def s[8:11]13811; GFX9-NEXT: ;;#ASMEND13812; GFX9-NEXT: s_mov_b32 s9, s1113813; GFX9-NEXT: s_mov_b32 s10, s1113814; GFX9-NEXT: ;;#ASMSTART13815; GFX9-NEXT: ; use s[8:10]13816; GFX9-NEXT: ;;#ASMEND13817; GFX9-NEXT: s_setpc_b64 s[30:31]13818 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13819 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13820 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 4, i32 7, i32 7>13821 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)13822 ret void13823}13824 13825define void @s_shuffle_v3p3_v4p3__5_7_7() {13826; GFX900-LABEL: s_shuffle_v3p3_v4p3__5_7_7:13827; GFX900: ; %bb.0:13828; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13829; GFX900-NEXT: ;;#ASMSTART13830; GFX900-NEXT: ; def s[4:7]13831; GFX900-NEXT: ;;#ASMEND13832; GFX900-NEXT: s_mov_b32 s8, s513833; GFX900-NEXT: s_mov_b32 s9, s713834; GFX900-NEXT: s_mov_b32 s10, s713835; GFX900-NEXT: ;;#ASMSTART13836; GFX900-NEXT: ; use s[8:10]13837; GFX900-NEXT: ;;#ASMEND13838; GFX900-NEXT: s_setpc_b64 s[30:31]13839;13840; GFX90A-LABEL: s_shuffle_v3p3_v4p3__5_7_7:13841; GFX90A: ; %bb.0:13842; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13843; GFX90A-NEXT: ;;#ASMSTART13844; GFX90A-NEXT: ; def s[4:7]13845; GFX90A-NEXT: ;;#ASMEND13846; GFX90A-NEXT: s_mov_b32 s8, s513847; GFX90A-NEXT: s_mov_b32 s9, s713848; GFX90A-NEXT: s_mov_b32 s10, s713849; GFX90A-NEXT: ;;#ASMSTART13850; GFX90A-NEXT: ; use s[8:10]13851; GFX90A-NEXT: ;;#ASMEND13852; GFX90A-NEXT: s_setpc_b64 s[30:31]13853;13854; GFX942-LABEL: s_shuffle_v3p3_v4p3__5_7_7:13855; GFX942: ; %bb.0:13856; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13857; GFX942-NEXT: ;;#ASMSTART13858; GFX942-NEXT: ; def s[0:3]13859; GFX942-NEXT: ;;#ASMEND13860; GFX942-NEXT: s_mov_b32 s8, s113861; GFX942-NEXT: s_mov_b32 s9, s313862; GFX942-NEXT: s_mov_b32 s10, s313863; GFX942-NEXT: ;;#ASMSTART13864; GFX942-NEXT: ; use s[8:10]13865; GFX942-NEXT: ;;#ASMEND13866; GFX942-NEXT: s_setpc_b64 s[30:31]13867 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13868 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13869 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 5, i32 7, i32 7>13870 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)13871 ret void13872}13873 13874define void @s_shuffle_v3p3_v4p3__6_7_7() {13875; GFX900-LABEL: s_shuffle_v3p3_v4p3__6_7_7:13876; GFX900: ; %bb.0:13877; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13878; GFX900-NEXT: ;;#ASMSTART13879; GFX900-NEXT: ; def s[4:7]13880; GFX900-NEXT: ;;#ASMEND13881; GFX900-NEXT: s_mov_b32 s8, s613882; GFX900-NEXT: s_mov_b32 s9, s713883; GFX900-NEXT: s_mov_b32 s10, s713884; GFX900-NEXT: ;;#ASMSTART13885; GFX900-NEXT: ; use s[8:10]13886; GFX900-NEXT: ;;#ASMEND13887; GFX900-NEXT: s_setpc_b64 s[30:31]13888;13889; GFX90A-LABEL: s_shuffle_v3p3_v4p3__6_7_7:13890; GFX90A: ; %bb.0:13891; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13892; GFX90A-NEXT: ;;#ASMSTART13893; GFX90A-NEXT: ; def s[4:7]13894; GFX90A-NEXT: ;;#ASMEND13895; GFX90A-NEXT: s_mov_b32 s8, s613896; GFX90A-NEXT: s_mov_b32 s9, s713897; GFX90A-NEXT: s_mov_b32 s10, s713898; GFX90A-NEXT: ;;#ASMSTART13899; GFX90A-NEXT: ; use s[8:10]13900; GFX90A-NEXT: ;;#ASMEND13901; GFX90A-NEXT: s_setpc_b64 s[30:31]13902;13903; GFX942-LABEL: s_shuffle_v3p3_v4p3__6_7_7:13904; GFX942: ; %bb.0:13905; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13906; GFX942-NEXT: ;;#ASMSTART13907; GFX942-NEXT: ; def s[0:3]13908; GFX942-NEXT: ;;#ASMEND13909; GFX942-NEXT: s_mov_b32 s8, s213910; GFX942-NEXT: s_mov_b32 s9, s313911; GFX942-NEXT: s_mov_b32 s10, s313912; GFX942-NEXT: ;;#ASMSTART13913; GFX942-NEXT: ; use s[8:10]13914; GFX942-NEXT: ;;#ASMEND13915; GFX942-NEXT: s_setpc_b64 s[30:31]13916 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13917 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13918 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 6, i32 7, i32 7>13919 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)13920 ret void13921}13922 13923define void @s_shuffle_v3p3_v4p3__7_u_7() {13924; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_u_7:13925; GFX900: ; %bb.0:13926; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13927; GFX900-NEXT: ;;#ASMSTART13928; GFX900-NEXT: ; def s[4:7]13929; GFX900-NEXT: ;;#ASMEND13930; GFX900-NEXT: s_mov_b32 s8, s713931; GFX900-NEXT: s_mov_b32 s10, s713932; GFX900-NEXT: ;;#ASMSTART13933; GFX900-NEXT: ; use s[8:10]13934; GFX900-NEXT: ;;#ASMEND13935; GFX900-NEXT: s_setpc_b64 s[30:31]13936;13937; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_u_7:13938; GFX90A: ; %bb.0:13939; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13940; GFX90A-NEXT: ;;#ASMSTART13941; GFX90A-NEXT: ; def s[4:7]13942; GFX90A-NEXT: ;;#ASMEND13943; GFX90A-NEXT: s_mov_b32 s8, s713944; GFX90A-NEXT: s_mov_b32 s10, s713945; GFX90A-NEXT: ;;#ASMSTART13946; GFX90A-NEXT: ; use s[8:10]13947; GFX90A-NEXT: ;;#ASMEND13948; GFX90A-NEXT: s_setpc_b64 s[30:31]13949;13950; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_u_7:13951; GFX942: ; %bb.0:13952; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13953; GFX942-NEXT: ;;#ASMSTART13954; GFX942-NEXT: ; def s[0:3]13955; GFX942-NEXT: ;;#ASMEND13956; GFX942-NEXT: s_mov_b32 s8, s313957; GFX942-NEXT: s_mov_b32 s10, s313958; GFX942-NEXT: ;;#ASMSTART13959; GFX942-NEXT: ; use s[8:10]13960; GFX942-NEXT: ;;#ASMEND13961; GFX942-NEXT: s_setpc_b64 s[30:31]13962 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13963 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()13964 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 poison, i32 7>13965 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)13966 ret void13967}13968 13969define void @s_shuffle_v3p3_v4p3__7_0_7() {13970; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_0_7:13971; GFX900: ; %bb.0:13972; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13973; GFX900-NEXT: ;;#ASMSTART13974; GFX900-NEXT: ; def s[8:11]13975; GFX900-NEXT: ;;#ASMEND13976; GFX900-NEXT: ;;#ASMSTART13977; GFX900-NEXT: ; def s[4:7]13978; GFX900-NEXT: ;;#ASMEND13979; GFX900-NEXT: s_mov_b32 s8, s1113980; GFX900-NEXT: s_mov_b32 s9, s413981; GFX900-NEXT: s_mov_b32 s10, s1113982; GFX900-NEXT: ;;#ASMSTART13983; GFX900-NEXT: ; use s[8:10]13984; GFX900-NEXT: ;;#ASMEND13985; GFX900-NEXT: s_setpc_b64 s[30:31]13986;13987; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_0_7:13988; GFX90A: ; %bb.0:13989; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13990; GFX90A-NEXT: ;;#ASMSTART13991; GFX90A-NEXT: ; def s[8:11]13992; GFX90A-NEXT: ;;#ASMEND13993; GFX90A-NEXT: ;;#ASMSTART13994; GFX90A-NEXT: ; def s[4:7]13995; GFX90A-NEXT: ;;#ASMEND13996; GFX90A-NEXT: s_mov_b32 s8, s1113997; GFX90A-NEXT: s_mov_b32 s9, s413998; GFX90A-NEXT: s_mov_b32 s10, s1113999; GFX90A-NEXT: ;;#ASMSTART14000; GFX90A-NEXT: ; use s[8:10]14001; GFX90A-NEXT: ;;#ASMEND14002; GFX90A-NEXT: s_setpc_b64 s[30:31]14003;14004; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_0_7:14005; GFX942: ; %bb.0:14006; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14007; GFX942-NEXT: ;;#ASMSTART14008; GFX942-NEXT: ; def s[0:3]14009; GFX942-NEXT: ;;#ASMEND14010; GFX942-NEXT: ;;#ASMSTART14011; GFX942-NEXT: ; def s[4:7]14012; GFX942-NEXT: ;;#ASMEND14013; GFX942-NEXT: s_mov_b32 s8, s714014; GFX942-NEXT: s_mov_b32 s9, s014015; GFX942-NEXT: s_mov_b32 s10, s714016; GFX942-NEXT: ;;#ASMSTART14017; GFX942-NEXT: ; use s[8:10]14018; GFX942-NEXT: ;;#ASMEND14019; GFX942-NEXT: s_setpc_b64 s[30:31]14020 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()14021 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()14022 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 0, i32 7>14023 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)14024 ret void14025}14026 14027define void @s_shuffle_v3p3_v4p3__7_1_7() {14028; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_1_7:14029; GFX900: ; %bb.0:14030; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14031; GFX900-NEXT: ;;#ASMSTART14032; GFX900-NEXT: ; def s[8:11]14033; GFX900-NEXT: ;;#ASMEND14034; GFX900-NEXT: ;;#ASMSTART14035; GFX900-NEXT: ; def s[4:7]14036; GFX900-NEXT: ;;#ASMEND14037; GFX900-NEXT: s_mov_b32 s8, s714038; GFX900-NEXT: s_mov_b32 s10, s714039; GFX900-NEXT: ;;#ASMSTART14040; GFX900-NEXT: ; use s[8:10]14041; GFX900-NEXT: ;;#ASMEND14042; GFX900-NEXT: s_setpc_b64 s[30:31]14043;14044; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_1_7:14045; GFX90A: ; %bb.0:14046; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14047; GFX90A-NEXT: ;;#ASMSTART14048; GFX90A-NEXT: ; def s[8:11]14049; GFX90A-NEXT: ;;#ASMEND14050; GFX90A-NEXT: ;;#ASMSTART14051; GFX90A-NEXT: ; def s[4:7]14052; GFX90A-NEXT: ;;#ASMEND14053; GFX90A-NEXT: s_mov_b32 s8, s714054; GFX90A-NEXT: s_mov_b32 s10, s714055; GFX90A-NEXT: ;;#ASMSTART14056; GFX90A-NEXT: ; use s[8:10]14057; GFX90A-NEXT: ;;#ASMEND14058; GFX90A-NEXT: s_setpc_b64 s[30:31]14059;14060; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_1_7:14061; GFX942: ; %bb.0:14062; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14063; GFX942-NEXT: ;;#ASMSTART14064; GFX942-NEXT: ; def s[8:11]14065; GFX942-NEXT: ;;#ASMEND14066; GFX942-NEXT: ;;#ASMSTART14067; GFX942-NEXT: ; def s[0:3]14068; GFX942-NEXT: ;;#ASMEND14069; GFX942-NEXT: s_mov_b32 s8, s314070; GFX942-NEXT: s_mov_b32 s10, s314071; GFX942-NEXT: ;;#ASMSTART14072; GFX942-NEXT: ; use s[8:10]14073; GFX942-NEXT: ;;#ASMEND14074; GFX942-NEXT: s_setpc_b64 s[30:31]14075 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()14076 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()14077 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 1, i32 7>14078 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)14079 ret void14080}14081 14082define void @s_shuffle_v3p3_v4p3__7_2_7() {14083; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_2_7:14084; GFX900: ; %bb.0:14085; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14086; GFX900-NEXT: ;;#ASMSTART14087; GFX900-NEXT: ; def s[8:11]14088; GFX900-NEXT: ;;#ASMEND14089; GFX900-NEXT: ;;#ASMSTART14090; GFX900-NEXT: ; def s[4:7]14091; GFX900-NEXT: ;;#ASMEND14092; GFX900-NEXT: s_mov_b32 s8, s1114093; GFX900-NEXT: s_mov_b32 s9, s614094; GFX900-NEXT: s_mov_b32 s10, s1114095; GFX900-NEXT: ;;#ASMSTART14096; GFX900-NEXT: ; use s[8:10]14097; GFX900-NEXT: ;;#ASMEND14098; GFX900-NEXT: s_setpc_b64 s[30:31]14099;14100; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_2_7:14101; GFX90A: ; %bb.0:14102; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14103; GFX90A-NEXT: ;;#ASMSTART14104; GFX90A-NEXT: ; def s[8:11]14105; GFX90A-NEXT: ;;#ASMEND14106; GFX90A-NEXT: ;;#ASMSTART14107; GFX90A-NEXT: ; def s[4:7]14108; GFX90A-NEXT: ;;#ASMEND14109; GFX90A-NEXT: s_mov_b32 s8, s1114110; GFX90A-NEXT: s_mov_b32 s9, s614111; GFX90A-NEXT: s_mov_b32 s10, s1114112; GFX90A-NEXT: ;;#ASMSTART14113; GFX90A-NEXT: ; use s[8:10]14114; GFX90A-NEXT: ;;#ASMEND14115; GFX90A-NEXT: s_setpc_b64 s[30:31]14116;14117; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_2_7:14118; GFX942: ; %bb.0:14119; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14120; GFX942-NEXT: ;;#ASMSTART14121; GFX942-NEXT: ; def s[0:3]14122; GFX942-NEXT: ;;#ASMEND14123; GFX942-NEXT: ;;#ASMSTART14124; GFX942-NEXT: ; def s[4:7]14125; GFX942-NEXT: ;;#ASMEND14126; GFX942-NEXT: s_mov_b32 s8, s714127; GFX942-NEXT: s_mov_b32 s9, s214128; GFX942-NEXT: s_mov_b32 s10, s714129; GFX942-NEXT: ;;#ASMSTART14130; GFX942-NEXT: ; use s[8:10]14131; GFX942-NEXT: ;;#ASMEND14132; GFX942-NEXT: s_setpc_b64 s[30:31]14133 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()14134 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()14135 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 2, i32 7>14136 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)14137 ret void14138}14139 14140define void @s_shuffle_v3p3_v4p3__7_3_7() {14141; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_3_7:14142; GFX900: ; %bb.0:14143; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14144; GFX900-NEXT: ;;#ASMSTART14145; GFX900-NEXT: ; def s[8:11]14146; GFX900-NEXT: ;;#ASMEND14147; GFX900-NEXT: ;;#ASMSTART14148; GFX900-NEXT: ; def s[4:7]14149; GFX900-NEXT: ;;#ASMEND14150; GFX900-NEXT: s_mov_b32 s8, s1114151; GFX900-NEXT: s_mov_b32 s9, s714152; GFX900-NEXT: s_mov_b32 s10, s1114153; GFX900-NEXT: ;;#ASMSTART14154; GFX900-NEXT: ; use s[8:10]14155; GFX900-NEXT: ;;#ASMEND14156; GFX900-NEXT: s_setpc_b64 s[30:31]14157;14158; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_3_7:14159; GFX90A: ; %bb.0:14160; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14161; GFX90A-NEXT: ;;#ASMSTART14162; GFX90A-NEXT: ; def s[8:11]14163; GFX90A-NEXT: ;;#ASMEND14164; GFX90A-NEXT: ;;#ASMSTART14165; GFX90A-NEXT: ; def s[4:7]14166; GFX90A-NEXT: ;;#ASMEND14167; GFX90A-NEXT: s_mov_b32 s8, s1114168; GFX90A-NEXT: s_mov_b32 s9, s714169; GFX90A-NEXT: s_mov_b32 s10, s1114170; GFX90A-NEXT: ;;#ASMSTART14171; GFX90A-NEXT: ; use s[8:10]14172; GFX90A-NEXT: ;;#ASMEND14173; GFX90A-NEXT: s_setpc_b64 s[30:31]14174;14175; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_3_7:14176; GFX942: ; %bb.0:14177; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14178; GFX942-NEXT: ;;#ASMSTART14179; GFX942-NEXT: ; def s[0:3]14180; GFX942-NEXT: ;;#ASMEND14181; GFX942-NEXT: ;;#ASMSTART14182; GFX942-NEXT: ; def s[4:7]14183; GFX942-NEXT: ;;#ASMEND14184; GFX942-NEXT: s_mov_b32 s8, s714185; GFX942-NEXT: s_mov_b32 s9, s314186; GFX942-NEXT: s_mov_b32 s10, s714187; GFX942-NEXT: ;;#ASMSTART14188; GFX942-NEXT: ; use s[8:10]14189; GFX942-NEXT: ;;#ASMEND14190; GFX942-NEXT: s_setpc_b64 s[30:31]14191 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()14192 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()14193 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 3, i32 7>14194 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)14195 ret void14196}14197 14198define void @s_shuffle_v3p3_v4p3__7_4_7() {14199; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_4_7:14200; GFX900: ; %bb.0:14201; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14202; GFX900-NEXT: ;;#ASMSTART14203; GFX900-NEXT: ; def s[4:7]14204; GFX900-NEXT: ;;#ASMEND14205; GFX900-NEXT: s_mov_b32 s8, s714206; GFX900-NEXT: s_mov_b32 s9, s414207; GFX900-NEXT: s_mov_b32 s10, s714208; GFX900-NEXT: ;;#ASMSTART14209; GFX900-NEXT: ; use s[8:10]14210; GFX900-NEXT: ;;#ASMEND14211; GFX900-NEXT: s_setpc_b64 s[30:31]14212;14213; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_4_7:14214; GFX90A: ; %bb.0:14215; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14216; GFX90A-NEXT: ;;#ASMSTART14217; GFX90A-NEXT: ; def s[4:7]14218; GFX90A-NEXT: ;;#ASMEND14219; GFX90A-NEXT: s_mov_b32 s8, s714220; GFX90A-NEXT: s_mov_b32 s9, s414221; GFX90A-NEXT: s_mov_b32 s10, s714222; GFX90A-NEXT: ;;#ASMSTART14223; GFX90A-NEXT: ; use s[8:10]14224; GFX90A-NEXT: ;;#ASMEND14225; GFX90A-NEXT: s_setpc_b64 s[30:31]14226;14227; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_4_7:14228; GFX942: ; %bb.0:14229; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14230; GFX942-NEXT: ;;#ASMSTART14231; GFX942-NEXT: ; def s[0:3]14232; GFX942-NEXT: ;;#ASMEND14233; GFX942-NEXT: s_mov_b32 s8, s314234; GFX942-NEXT: s_mov_b32 s9, s014235; GFX942-NEXT: s_mov_b32 s10, s314236; GFX942-NEXT: ;;#ASMSTART14237; GFX942-NEXT: ; use s[8:10]14238; GFX942-NEXT: ;;#ASMEND14239; GFX942-NEXT: s_setpc_b64 s[30:31]14240 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()14241 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()14242 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 4, i32 7>14243 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)14244 ret void14245}14246 14247define void @s_shuffle_v3p3_v4p3__7_5_7() {14248; GFX9-LABEL: s_shuffle_v3p3_v4p3__7_5_7:14249; GFX9: ; %bb.0:14250; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14251; GFX9-NEXT: ;;#ASMSTART14252; GFX9-NEXT: ; def s[8:11]14253; GFX9-NEXT: ;;#ASMEND14254; GFX9-NEXT: s_mov_b32 s8, s1114255; GFX9-NEXT: s_mov_b32 s10, s1114256; GFX9-NEXT: ;;#ASMSTART14257; GFX9-NEXT: ; use s[8:10]14258; GFX9-NEXT: ;;#ASMEND14259; GFX9-NEXT: s_setpc_b64 s[30:31]14260 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()14261 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()14262 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 5, i32 7>14263 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)14264 ret void14265}14266 14267define void @s_shuffle_v3p3_v4p3__7_6_7() {14268; GFX900-LABEL: s_shuffle_v3p3_v4p3__7_6_7:14269; GFX900: ; %bb.0:14270; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14271; GFX900-NEXT: ;;#ASMSTART14272; GFX900-NEXT: ; def s[4:7]14273; GFX900-NEXT: ;;#ASMEND14274; GFX900-NEXT: s_mov_b32 s8, s714275; GFX900-NEXT: s_mov_b32 s9, s614276; GFX900-NEXT: s_mov_b32 s10, s714277; GFX900-NEXT: ;;#ASMSTART14278; GFX900-NEXT: ; use s[8:10]14279; GFX900-NEXT: ;;#ASMEND14280; GFX900-NEXT: s_setpc_b64 s[30:31]14281;14282; GFX90A-LABEL: s_shuffle_v3p3_v4p3__7_6_7:14283; GFX90A: ; %bb.0:14284; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14285; GFX90A-NEXT: ;;#ASMSTART14286; GFX90A-NEXT: ; def s[4:7]14287; GFX90A-NEXT: ;;#ASMEND14288; GFX90A-NEXT: s_mov_b32 s8, s714289; GFX90A-NEXT: s_mov_b32 s9, s614290; GFX90A-NEXT: s_mov_b32 s10, s714291; GFX90A-NEXT: ;;#ASMSTART14292; GFX90A-NEXT: ; use s[8:10]14293; GFX90A-NEXT: ;;#ASMEND14294; GFX90A-NEXT: s_setpc_b64 s[30:31]14295;14296; GFX942-LABEL: s_shuffle_v3p3_v4p3__7_6_7:14297; GFX942: ; %bb.0:14298; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)14299; GFX942-NEXT: ;;#ASMSTART14300; GFX942-NEXT: ; def s[0:3]14301; GFX942-NEXT: ;;#ASMEND14302; GFX942-NEXT: s_mov_b32 s8, s314303; GFX942-NEXT: s_mov_b32 s9, s214304; GFX942-NEXT: s_mov_b32 s10, s314305; GFX942-NEXT: ;;#ASMSTART14306; GFX942-NEXT: ; use s[8:10]14307; GFX942-NEXT: ;;#ASMEND14308; GFX942-NEXT: s_setpc_b64 s[30:31]14309 %vec0 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()14310 %vec1 = call <4 x ptr addrspace(3)> asm "; def $0", "=s"()14311 %shuf = shufflevector <4 x ptr addrspace(3)> %vec0, <4 x ptr addrspace(3)> %vec1, <3 x i32> <i32 7, i32 6, i32 7>14312 call void asm sideeffect "; use $0", "{s[8:10]}"(<3 x ptr addrspace(3)> %shuf)14313 ret void14314}14315;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:14316; GFX90APLUS: {{.*}}14317