13088 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 < %s | FileCheck -check-prefixes=GFX9,GFX900 %s3; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx90a < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX90A %s4; RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx942 < %s | FileCheck -check-prefixes=GFX9,GFX90APLUS,GFX942 %s5 6 7define void @v_shuffle_v4p3_v3p3__u_u_u_u(ptr addrspace(1) inreg %ptr) {8; GFX9-LABEL: v_shuffle_v4p3_v3p3__u_u_u_u:9; GFX9: ; %bb.0:10; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11; GFX9-NEXT: s_setpc_b64 s[30:31]12 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()13 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> poison14 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 1615 ret void16}17 18define void @v_shuffle_v4p3_v3p3__0_u_u_u(ptr addrspace(1) inreg %ptr) {19; GFX900-LABEL: v_shuffle_v4p3_v3p3__0_u_u_u:20; GFX900: ; %bb.0:21; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22; GFX900-NEXT: v_mov_b32_e32 v3, 023; GFX900-NEXT: ;;#ASMSTART24; GFX900-NEXT: ; def v[0:2]25; GFX900-NEXT: ;;#ASMEND26; GFX900-NEXT: global_store_dwordx4 v3, v[0:3], s[16:17]27; GFX900-NEXT: s_waitcnt vmcnt(0)28; GFX900-NEXT: s_setpc_b64 s[30:31]29;30; GFX90A-LABEL: v_shuffle_v4p3_v3p3__0_u_u_u:31; GFX90A: ; %bb.0:32; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)33; GFX90A-NEXT: v_mov_b32_e32 v3, 034; GFX90A-NEXT: ;;#ASMSTART35; GFX90A-NEXT: ; def v[0:2]36; GFX90A-NEXT: ;;#ASMEND37; GFX90A-NEXT: global_store_dwordx4 v3, v[0:3], s[16:17]38; GFX90A-NEXT: s_waitcnt vmcnt(0)39; GFX90A-NEXT: s_setpc_b64 s[30:31]40;41; GFX942-LABEL: v_shuffle_v4p3_v3p3__0_u_u_u:42; GFX942: ; %bb.0:43; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)44; GFX942-NEXT: v_mov_b32_e32 v3, 045; GFX942-NEXT: ;;#ASMSTART46; GFX942-NEXT: ; def v[0:2]47; GFX942-NEXT: ;;#ASMEND48; GFX942-NEXT: global_store_dwordx4 v3, v[0:3], s[0:1]49; GFX942-NEXT: s_waitcnt vmcnt(0)50; GFX942-NEXT: s_setpc_b64 s[30:31]51 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()52 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>53 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 1654 ret void55}56 57define void @v_shuffle_v4p3_v3p3__1_u_u_u(ptr addrspace(1) inreg %ptr) {58; GFX900-LABEL: v_shuffle_v4p3_v3p3__1_u_u_u:59; GFX900: ; %bb.0:60; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)61; GFX900-NEXT: v_mov_b32_e32 v3, 062; GFX900-NEXT: ;;#ASMSTART63; GFX900-NEXT: ; def v[0:2]64; GFX900-NEXT: ;;#ASMEND65; GFX900-NEXT: global_store_dwordx4 v3, v[1:4], s[16:17]66; GFX900-NEXT: s_waitcnt vmcnt(0)67; GFX900-NEXT: s_setpc_b64 s[30:31]68;69; GFX90A-LABEL: v_shuffle_v4p3_v3p3__1_u_u_u:70; GFX90A: ; %bb.0:71; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)72; GFX90A-NEXT: ;;#ASMSTART73; GFX90A-NEXT: ; def v[0:2]74; GFX90A-NEXT: ;;#ASMEND75; GFX90A-NEXT: v_mov_b32_e32 v3, 076; GFX90A-NEXT: v_mov_b32_e32 v0, v177; GFX90A-NEXT: global_store_dwordx4 v3, v[0:3], s[16:17]78; GFX90A-NEXT: s_waitcnt vmcnt(0)79; GFX90A-NEXT: s_setpc_b64 s[30:31]80;81; GFX942-LABEL: v_shuffle_v4p3_v3p3__1_u_u_u:82; GFX942: ; %bb.0:83; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)84; GFX942-NEXT: ;;#ASMSTART85; GFX942-NEXT: ; def v[0:2]86; GFX942-NEXT: ;;#ASMEND87; GFX942-NEXT: v_mov_b32_e32 v3, 088; GFX942-NEXT: v_mov_b32_e32 v0, v189; GFX942-NEXT: global_store_dwordx4 v3, v[0:3], s[0:1]90; GFX942-NEXT: s_waitcnt vmcnt(0)91; GFX942-NEXT: s_setpc_b64 s[30:31]92 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()93 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>94 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 1695 ret void96}97 98define void @v_shuffle_v4p3_v3p3__2_u_u_u(ptr addrspace(1) inreg %ptr) {99; GFX900-LABEL: v_shuffle_v4p3_v3p3__2_u_u_u:100; GFX900: ; %bb.0:101; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)102; GFX900-NEXT: v_mov_b32_e32 v3, 0103; GFX900-NEXT: ;;#ASMSTART104; GFX900-NEXT: ; def v[0:2]105; GFX900-NEXT: ;;#ASMEND106; GFX900-NEXT: global_store_dwordx4 v3, v[2:5], 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_v4p3_v3p3__2_u_u_u:111; GFX90A: ; %bb.0:112; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)113; GFX90A-NEXT: v_mov_b32_e32 v3, 0114; GFX90A-NEXT: ;;#ASMSTART115; GFX90A-NEXT: ; def v[0:2]116; GFX90A-NEXT: ;;#ASMEND117; GFX90A-NEXT: global_store_dwordx4 v3, v[2:5], 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_v4p3_v3p3__2_u_u_u:122; GFX942: ; %bb.0:123; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)124; GFX942-NEXT: v_mov_b32_e32 v3, 0125; GFX942-NEXT: ;;#ASMSTART126; GFX942-NEXT: ; def v[0:2]127; GFX942-NEXT: ;;#ASMEND128; GFX942-NEXT: global_store_dwordx4 v3, v[2:5], s[0:1]129; GFX942-NEXT: s_waitcnt vmcnt(0)130; GFX942-NEXT: s_setpc_b64 s[30:31]131 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()132 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison>133 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16134 ret void135}136 137define void @v_shuffle_v4p3_v3p3__3_u_u_u(ptr addrspace(1) inreg %ptr) {138; GFX9-LABEL: v_shuffle_v4p3_v3p3__3_u_u_u:139; GFX9: ; %bb.0:140; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)141; GFX9-NEXT: s_setpc_b64 s[30:31]142 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()143 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison>144 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16145 ret void146}147 148define void @v_shuffle_v4p3_v3p3__4_u_u_u(ptr addrspace(1) inreg %ptr) {149; GFX900-LABEL: v_shuffle_v4p3_v3p3__4_u_u_u:150; GFX900: ; %bb.0:151; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)152; GFX900-NEXT: v_mov_b32_e32 v3, 0153; GFX900-NEXT: ;;#ASMSTART154; GFX900-NEXT: ; def v[0:2]155; GFX900-NEXT: ;;#ASMEND156; GFX900-NEXT: global_store_dwordx4 v3, v[1:4], s[16:17]157; GFX900-NEXT: s_waitcnt vmcnt(0)158; GFX900-NEXT: s_setpc_b64 s[30:31]159;160; GFX90A-LABEL: v_shuffle_v4p3_v3p3__4_u_u_u:161; GFX90A: ; %bb.0:162; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)163; GFX90A-NEXT: ;;#ASMSTART164; GFX90A-NEXT: ; def v[0:2]165; GFX90A-NEXT: ;;#ASMEND166; GFX90A-NEXT: v_mov_b32_e32 v3, 0167; GFX90A-NEXT: v_mov_b32_e32 v0, v1168; GFX90A-NEXT: global_store_dwordx4 v3, v[0:3], s[16:17]169; GFX90A-NEXT: s_waitcnt vmcnt(0)170; GFX90A-NEXT: s_setpc_b64 s[30:31]171;172; GFX942-LABEL: v_shuffle_v4p3_v3p3__4_u_u_u:173; GFX942: ; %bb.0:174; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)175; GFX942-NEXT: ;;#ASMSTART176; GFX942-NEXT: ; def v[0:2]177; GFX942-NEXT: ;;#ASMEND178; GFX942-NEXT: v_mov_b32_e32 v3, 0179; GFX942-NEXT: v_mov_b32_e32 v0, v1180; GFX942-NEXT: global_store_dwordx4 v3, v[0:3], s[0:1]181; GFX942-NEXT: s_waitcnt vmcnt(0)182; GFX942-NEXT: s_setpc_b64 s[30:31]183 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()184 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()185 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 4, i32 poison, i32 poison, i32 poison>186 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16187 ret void188}189 190define void @v_shuffle_v4p3_v3p3__5_u_u_u(ptr addrspace(1) inreg %ptr) {191; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_u_u_u:192; GFX900: ; %bb.0:193; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)194; GFX900-NEXT: v_mov_b32_e32 v3, 0195; GFX900-NEXT: ;;#ASMSTART196; GFX900-NEXT: ; def v[0:2]197; GFX900-NEXT: ;;#ASMEND198; GFX900-NEXT: global_store_dwordx4 v3, v[2:5], s[16:17]199; GFX900-NEXT: s_waitcnt vmcnt(0)200; GFX900-NEXT: s_setpc_b64 s[30:31]201;202; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_u_u_u:203; GFX90A: ; %bb.0:204; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)205; GFX90A-NEXT: v_mov_b32_e32 v3, 0206; GFX90A-NEXT: ;;#ASMSTART207; GFX90A-NEXT: ; def v[0:2]208; GFX90A-NEXT: ;;#ASMEND209; GFX90A-NEXT: global_store_dwordx4 v3, v[2:5], 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_v4p3_v3p3__5_u_u_u:214; GFX942: ; %bb.0:215; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)216; GFX942-NEXT: v_mov_b32_e32 v3, 0217; GFX942-NEXT: ;;#ASMSTART218; GFX942-NEXT: ; def v[0:2]219; GFX942-NEXT: ;;#ASMEND220; GFX942-NEXT: global_store_dwordx4 v3, v[2:5], s[0:1]221; GFX942-NEXT: s_waitcnt vmcnt(0)222; GFX942-NEXT: s_setpc_b64 s[30:31]223 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()224 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()225 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 poison, i32 poison, i32 poison>226 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16227 ret void228}229 230define void @v_shuffle_v4p3_v3p3__5_0_u_u(ptr addrspace(1) inreg %ptr) {231; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_0_u_u:232; GFX900: ; %bb.0:233; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)234; GFX900-NEXT: v_mov_b32_e32 v6, 0235; GFX900-NEXT: ;;#ASMSTART236; GFX900-NEXT: ; def v[3:5]237; GFX900-NEXT: ;;#ASMEND238; GFX900-NEXT: ;;#ASMSTART239; GFX900-NEXT: ; def v[0:2]240; GFX900-NEXT: ;;#ASMEND241; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]242; GFX900-NEXT: s_waitcnt vmcnt(0)243; GFX900-NEXT: s_setpc_b64 s[30:31]244;245; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_0_u_u:246; GFX90A: ; %bb.0:247; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)248; GFX90A-NEXT: v_mov_b32_e32 v7, 0249; GFX90A-NEXT: ;;#ASMSTART250; GFX90A-NEXT: ; def v[4:6]251; GFX90A-NEXT: ;;#ASMEND252; GFX90A-NEXT: v_mov_b32_e32 v3, v4253; GFX90A-NEXT: ;;#ASMSTART254; GFX90A-NEXT: ; def v[0:2]255; GFX90A-NEXT: ;;#ASMEND256; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]257; GFX90A-NEXT: s_waitcnt vmcnt(0)258; GFX90A-NEXT: s_setpc_b64 s[30:31]259;260; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_0_u_u:261; GFX942: ; %bb.0:262; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)263; GFX942-NEXT: v_mov_b32_e32 v7, 0264; GFX942-NEXT: ;;#ASMSTART265; GFX942-NEXT: ; def v[4:6]266; GFX942-NEXT: ;;#ASMEND267; GFX942-NEXT: ;;#ASMSTART268; GFX942-NEXT: ; def v[0:2]269; GFX942-NEXT: ;;#ASMEND270; GFX942-NEXT: s_nop 0271; GFX942-NEXT: v_mov_b32_e32 v3, v4272; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]273; GFX942-NEXT: s_waitcnt vmcnt(0)274; GFX942-NEXT: s_setpc_b64 s[30:31]275 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()276 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()277 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 0, i32 poison, i32 poison>278 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16279 ret void280}281 282define void @v_shuffle_v4p3_v3p3__5_1_u_u(ptr addrspace(1) inreg %ptr) {283; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_1_u_u:284; GFX900: ; %bb.0:285; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)286; GFX900-NEXT: v_mov_b32_e32 v5, 0287; GFX900-NEXT: ;;#ASMSTART288; GFX900-NEXT: ; def v[2:4]289; GFX900-NEXT: ;;#ASMEND290; GFX900-NEXT: ;;#ASMSTART291; GFX900-NEXT: ; def v[0:2]292; GFX900-NEXT: ;;#ASMEND293; GFX900-NEXT: global_store_dwordx4 v5, v[2:5], s[16:17]294; GFX900-NEXT: s_waitcnt vmcnt(0)295; GFX900-NEXT: s_setpc_b64 s[30:31]296;297; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_1_u_u:298; GFX90A: ; %bb.0:299; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)300; GFX90A-NEXT: v_mov_b32_e32 v5, 0301; GFX90A-NEXT: ;;#ASMSTART302; GFX90A-NEXT: ; def v[2:4]303; GFX90A-NEXT: ;;#ASMEND304; GFX90A-NEXT: ;;#ASMSTART305; GFX90A-NEXT: ; def v[0:2]306; GFX90A-NEXT: ;;#ASMEND307; GFX90A-NEXT: global_store_dwordx4 v5, v[2:5], s[16:17]308; GFX90A-NEXT: s_waitcnt vmcnt(0)309; GFX90A-NEXT: s_setpc_b64 s[30:31]310;311; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_1_u_u:312; GFX942: ; %bb.0:313; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)314; GFX942-NEXT: v_mov_b32_e32 v5, 0315; GFX942-NEXT: ;;#ASMSTART316; GFX942-NEXT: ; def v[2:4]317; GFX942-NEXT: ;;#ASMEND318; GFX942-NEXT: s_nop 0319; GFX942-NEXT: ;;#ASMSTART320; GFX942-NEXT: ; def v[0:2]321; GFX942-NEXT: ;;#ASMEND322; GFX942-NEXT: global_store_dwordx4 v5, v[2:5], s[0:1]323; GFX942-NEXT: s_waitcnt vmcnt(0)324; GFX942-NEXT: s_setpc_b64 s[30:31]325 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()326 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()327 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 1, i32 poison, i32 poison>328 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16329 ret void330}331 332define void @v_shuffle_v4p3_v3p3__5_2_u_u(ptr addrspace(1) inreg %ptr) {333; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_2_u_u:334; GFX900: ; %bb.0:335; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)336; GFX900-NEXT: v_mov_b32_e32 v4, 0337; GFX900-NEXT: ;;#ASMSTART338; GFX900-NEXT: ; def v[1:3]339; GFX900-NEXT: ;;#ASMEND340; GFX900-NEXT: ;;#ASMSTART341; GFX900-NEXT: ; def v[0:2]342; GFX900-NEXT: ;;#ASMEND343; GFX900-NEXT: global_store_dwordx4 v4, v[2:5], s[16:17]344; GFX900-NEXT: s_waitcnt vmcnt(0)345; GFX900-NEXT: s_setpc_b64 s[30:31]346;347; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_2_u_u:348; GFX90A: ; %bb.0:349; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)350; GFX90A-NEXT: ;;#ASMSTART351; GFX90A-NEXT: ; def v[2:4]352; GFX90A-NEXT: ;;#ASMEND353; GFX90A-NEXT: v_mov_b32_e32 v5, 0354; GFX90A-NEXT: v_mov_b32_e32 v3, v4355; GFX90A-NEXT: ;;#ASMSTART356; GFX90A-NEXT: ; def v[0:2]357; GFX90A-NEXT: ;;#ASMEND358; GFX90A-NEXT: global_store_dwordx4 v5, v[2:5], s[16:17]359; GFX90A-NEXT: s_waitcnt vmcnt(0)360; GFX90A-NEXT: s_setpc_b64 s[30:31]361;362; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_2_u_u:363; GFX942: ; %bb.0:364; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)365; GFX942-NEXT: ;;#ASMSTART366; GFX942-NEXT: ; def v[2:4]367; GFX942-NEXT: ;;#ASMEND368; GFX942-NEXT: v_mov_b32_e32 v5, 0369; GFX942-NEXT: v_mov_b32_e32 v3, v4370; GFX942-NEXT: ;;#ASMSTART371; GFX942-NEXT: ; def v[0:2]372; GFX942-NEXT: ;;#ASMEND373; GFX942-NEXT: global_store_dwordx4 v5, v[2:5], s[0:1]374; GFX942-NEXT: s_waitcnt vmcnt(0)375; GFX942-NEXT: s_setpc_b64 s[30:31]376 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()377 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()378 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 2, i32 poison, i32 poison>379 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16380 ret void381}382 383define void @v_shuffle_v4p3_v3p3__5_3_u_u(ptr addrspace(1) inreg %ptr) {384; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_3_u_u:385; GFX900: ; %bb.0:386; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)387; GFX900-NEXT: v_mov_b32_e32 v4, 0388; GFX900-NEXT: ;;#ASMSTART389; GFX900-NEXT: ; def v[0:2]390; GFX900-NEXT: ;;#ASMEND391; GFX900-NEXT: v_mov_b32_e32 v3, v0392; GFX900-NEXT: global_store_dwordx4 v4, v[2:5], s[16:17]393; GFX900-NEXT: s_waitcnt vmcnt(0)394; GFX900-NEXT: s_setpc_b64 s[30:31]395;396; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_3_u_u:397; GFX90A: ; %bb.0:398; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)399; GFX90A-NEXT: v_mov_b32_e32 v4, 0400; GFX90A-NEXT: ;;#ASMSTART401; GFX90A-NEXT: ; def v[0:2]402; GFX90A-NEXT: ;;#ASMEND403; GFX90A-NEXT: v_mov_b32_e32 v3, v0404; GFX90A-NEXT: global_store_dwordx4 v4, v[2:5], s[16:17]405; GFX90A-NEXT: s_waitcnt vmcnt(0)406; GFX90A-NEXT: s_setpc_b64 s[30:31]407;408; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_3_u_u:409; GFX942: ; %bb.0:410; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)411; GFX942-NEXT: v_mov_b32_e32 v4, 0412; GFX942-NEXT: ;;#ASMSTART413; GFX942-NEXT: ; def v[0:2]414; GFX942-NEXT: ;;#ASMEND415; GFX942-NEXT: s_nop 0416; GFX942-NEXT: v_mov_b32_e32 v3, v0417; GFX942-NEXT: global_store_dwordx4 v4, v[2:5], s[0:1]418; GFX942-NEXT: s_waitcnt vmcnt(0)419; GFX942-NEXT: s_setpc_b64 s[30:31]420 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()421 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()422 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 3, i32 poison, i32 poison>423 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16424 ret void425}426 427define void @v_shuffle_v4p3_v3p3__5_4_u_u(ptr addrspace(1) inreg %ptr) {428; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_4_u_u:429; GFX900: ; %bb.0:430; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)431; GFX900-NEXT: v_mov_b32_e32 v4, 0432; GFX900-NEXT: ;;#ASMSTART433; GFX900-NEXT: ; def v[0:2]434; GFX900-NEXT: ;;#ASMEND435; GFX900-NEXT: v_mov_b32_e32 v3, v1436; GFX900-NEXT: global_store_dwordx4 v4, v[2:5], s[16:17]437; GFX900-NEXT: s_waitcnt vmcnt(0)438; GFX900-NEXT: s_setpc_b64 s[30:31]439;440; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_4_u_u:441; GFX90A: ; %bb.0:442; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)443; GFX90A-NEXT: v_mov_b32_e32 v4, 0444; GFX90A-NEXT: ;;#ASMSTART445; GFX90A-NEXT: ; def v[0:2]446; GFX90A-NEXT: ;;#ASMEND447; GFX90A-NEXT: v_mov_b32_e32 v3, v1448; GFX90A-NEXT: global_store_dwordx4 v4, v[2:5], s[16:17]449; GFX90A-NEXT: s_waitcnt vmcnt(0)450; GFX90A-NEXT: s_setpc_b64 s[30:31]451;452; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_4_u_u:453; GFX942: ; %bb.0:454; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)455; GFX942-NEXT: v_mov_b32_e32 v4, 0456; GFX942-NEXT: ;;#ASMSTART457; GFX942-NEXT: ; def v[0:2]458; GFX942-NEXT: ;;#ASMEND459; GFX942-NEXT: s_nop 0460; GFX942-NEXT: v_mov_b32_e32 v3, v1461; GFX942-NEXT: global_store_dwordx4 v4, v[2:5], s[0:1]462; GFX942-NEXT: s_waitcnt vmcnt(0)463; GFX942-NEXT: s_setpc_b64 s[30:31]464 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()465 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()466 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 4, i32 poison, i32 poison>467 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16468 ret void469}470 471define void @v_shuffle_v4p3_v3p3__5_5_u_u(ptr addrspace(1) inreg %ptr) {472; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_u_u:473; GFX900: ; %bb.0:474; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)475; GFX900-NEXT: v_mov_b32_e32 v4, 0476; GFX900-NEXT: ;;#ASMSTART477; GFX900-NEXT: ; def v[0:2]478; GFX900-NEXT: ;;#ASMEND479; GFX900-NEXT: v_mov_b32_e32 v3, v2480; GFX900-NEXT: global_store_dwordx4 v4, v[2:5], s[16:17]481; GFX900-NEXT: s_waitcnt vmcnt(0)482; GFX900-NEXT: s_setpc_b64 s[30:31]483;484; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_u_u:485; GFX90A: ; %bb.0:486; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)487; GFX90A-NEXT: v_mov_b32_e32 v4, 0488; GFX90A-NEXT: ;;#ASMSTART489; GFX90A-NEXT: ; def v[0:2]490; GFX90A-NEXT: ;;#ASMEND491; GFX90A-NEXT: v_mov_b32_e32 v3, v2492; GFX90A-NEXT: global_store_dwordx4 v4, v[2:5], s[16:17]493; GFX90A-NEXT: s_waitcnt vmcnt(0)494; GFX90A-NEXT: s_setpc_b64 s[30:31]495;496; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_u_u:497; GFX942: ; %bb.0:498; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)499; GFX942-NEXT: v_mov_b32_e32 v4, 0500; GFX942-NEXT: ;;#ASMSTART501; GFX942-NEXT: ; def v[0:2]502; GFX942-NEXT: ;;#ASMEND503; GFX942-NEXT: s_nop 0504; GFX942-NEXT: v_mov_b32_e32 v3, v2505; GFX942-NEXT: global_store_dwordx4 v4, v[2:5], s[0:1]506; GFX942-NEXT: s_waitcnt vmcnt(0)507; GFX942-NEXT: s_setpc_b64 s[30:31]508 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()509 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()510 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 poison>511 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16512 ret void513}514 515define void @v_shuffle_v4p3_v3p3__5_5_0_u(ptr addrspace(1) inreg %ptr) {516; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_0_u:517; GFX900: ; %bb.0:518; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)519; GFX900-NEXT: v_mov_b32_e32 v7, 0520; GFX900-NEXT: ;;#ASMSTART521; GFX900-NEXT: ; def v[0:2]522; GFX900-NEXT: ;;#ASMEND523; GFX900-NEXT: v_mov_b32_e32 v3, v2524; GFX900-NEXT: ;;#ASMSTART525; GFX900-NEXT: ; def v[4:6]526; GFX900-NEXT: ;;#ASMEND527; GFX900-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]528; GFX900-NEXT: s_waitcnt vmcnt(0)529; GFX900-NEXT: s_setpc_b64 s[30:31]530;531; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_0_u:532; GFX90A: ; %bb.0:533; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)534; GFX90A-NEXT: v_mov_b32_e32 v7, 0535; GFX90A-NEXT: ;;#ASMSTART536; GFX90A-NEXT: ; def v[0:2]537; GFX90A-NEXT: ;;#ASMEND538; GFX90A-NEXT: v_mov_b32_e32 v3, v2539; GFX90A-NEXT: ;;#ASMSTART540; GFX90A-NEXT: ; def v[4:6]541; GFX90A-NEXT: ;;#ASMEND542; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]543; GFX90A-NEXT: s_waitcnt vmcnt(0)544; GFX90A-NEXT: s_setpc_b64 s[30:31]545;546; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_0_u:547; GFX942: ; %bb.0:548; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)549; GFX942-NEXT: v_mov_b32_e32 v7, 0550; GFX942-NEXT: ;;#ASMSTART551; GFX942-NEXT: ; def v[0:2]552; GFX942-NEXT: ;;#ASMEND553; GFX942-NEXT: ;;#ASMSTART554; GFX942-NEXT: ; def v[4:6]555; GFX942-NEXT: ;;#ASMEND556; GFX942-NEXT: s_nop 0557; GFX942-NEXT: v_mov_b32_e32 v3, v2558; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]559; GFX942-NEXT: s_waitcnt vmcnt(0)560; GFX942-NEXT: s_setpc_b64 s[30:31]561 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()562 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()563 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 poison>564 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16565 ret void566}567 568define void @v_shuffle_v4p3_v3p3__5_5_1_u(ptr addrspace(1) inreg %ptr) {569; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_1_u:570; GFX900: ; %bb.0:571; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)572; GFX900-NEXT: ;;#ASMSTART573; GFX900-NEXT: ; def v[3:5]574; GFX900-NEXT: ;;#ASMEND575; GFX900-NEXT: v_mov_b32_e32 v6, 0576; GFX900-NEXT: ;;#ASMSTART577; GFX900-NEXT: ; def v[0:2]578; GFX900-NEXT: ;;#ASMEND579; GFX900-NEXT: v_mov_b32_e32 v3, v2580; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]581; GFX900-NEXT: s_waitcnt vmcnt(0)582; GFX900-NEXT: s_setpc_b64 s[30:31]583;584; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_1_u:585; GFX90A: ; %bb.0:586; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)587; GFX90A-NEXT: ;;#ASMSTART588; GFX90A-NEXT: ; def v[4:6]589; GFX90A-NEXT: ;;#ASMEND590; GFX90A-NEXT: v_mov_b32_e32 v7, 0591; GFX90A-NEXT: ;;#ASMSTART592; GFX90A-NEXT: ; def v[0:2]593; GFX90A-NEXT: ;;#ASMEND594; GFX90A-NEXT: v_mov_b32_e32 v3, v2595; GFX90A-NEXT: v_mov_b32_e32 v4, v5596; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]597; GFX90A-NEXT: s_waitcnt vmcnt(0)598; GFX90A-NEXT: s_setpc_b64 s[30:31]599;600; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_1_u:601; GFX942: ; %bb.0:602; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)603; GFX942-NEXT: ;;#ASMSTART604; GFX942-NEXT: ; def v[4:6]605; GFX942-NEXT: ;;#ASMEND606; GFX942-NEXT: v_mov_b32_e32 v7, 0607; GFX942-NEXT: ;;#ASMSTART608; GFX942-NEXT: ; def v[0:2]609; GFX942-NEXT: ;;#ASMEND610; GFX942-NEXT: v_mov_b32_e32 v4, v5611; GFX942-NEXT: v_mov_b32_e32 v3, v2612; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]613; GFX942-NEXT: s_waitcnt vmcnt(0)614; GFX942-NEXT: s_setpc_b64 s[30:31]615 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()616 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()617 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 poison>618 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16619 ret void620}621 622define void @v_shuffle_v4p3_v3p3__5_5_2_u(ptr addrspace(1) inreg %ptr) {623; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_2_u:624; GFX900: ; %bb.0:625; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)626; GFX900-NEXT: ;;#ASMSTART627; GFX900-NEXT: ; def v[2:4]628; GFX900-NEXT: ;;#ASMEND629; GFX900-NEXT: v_mov_b32_e32 v5, 0630; GFX900-NEXT: ;;#ASMSTART631; GFX900-NEXT: ; def v[0:2]632; GFX900-NEXT: ;;#ASMEND633; GFX900-NEXT: v_mov_b32_e32 v3, v2634; GFX900-NEXT: global_store_dwordx4 v5, v[2:5], s[16:17]635; GFX900-NEXT: s_waitcnt vmcnt(0)636; GFX900-NEXT: s_setpc_b64 s[30:31]637;638; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_2_u:639; GFX90A: ; %bb.0:640; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)641; GFX90A-NEXT: ;;#ASMSTART642; GFX90A-NEXT: ; def v[2:4]643; GFX90A-NEXT: ;;#ASMEND644; GFX90A-NEXT: v_mov_b32_e32 v5, 0645; GFX90A-NEXT: ;;#ASMSTART646; GFX90A-NEXT: ; def v[0:2]647; GFX90A-NEXT: ;;#ASMEND648; GFX90A-NEXT: v_mov_b32_e32 v3, v2649; GFX90A-NEXT: global_store_dwordx4 v5, v[2:5], s[16:17]650; GFX90A-NEXT: s_waitcnt vmcnt(0)651; GFX90A-NEXT: s_setpc_b64 s[30:31]652;653; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_2_u:654; GFX942: ; %bb.0:655; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)656; GFX942-NEXT: ;;#ASMSTART657; GFX942-NEXT: ; def v[2:4]658; GFX942-NEXT: ;;#ASMEND659; GFX942-NEXT: v_mov_b32_e32 v5, 0660; GFX942-NEXT: ;;#ASMSTART661; GFX942-NEXT: ; def v[0:2]662; GFX942-NEXT: ;;#ASMEND663; GFX942-NEXT: s_nop 0664; GFX942-NEXT: v_mov_b32_e32 v3, v2665; GFX942-NEXT: global_store_dwordx4 v5, v[2:5], s[0:1]666; GFX942-NEXT: s_waitcnt vmcnt(0)667; GFX942-NEXT: s_setpc_b64 s[30:31]668 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()669 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()670 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 poison>671 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16672 ret void673}674 675define void @v_shuffle_v4p3_v3p3__5_5_3_u(ptr addrspace(1) inreg %ptr) {676; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_3_u:677; GFX900: ; %bb.0:678; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)679; GFX900-NEXT: v_mov_b32_e32 v5, 0680; GFX900-NEXT: ;;#ASMSTART681; GFX900-NEXT: ; def v[0:2]682; GFX900-NEXT: ;;#ASMEND683; GFX900-NEXT: v_mov_b32_e32 v3, v2684; GFX900-NEXT: v_mov_b32_e32 v4, v0685; GFX900-NEXT: global_store_dwordx4 v5, v[2:5], s[16:17]686; GFX900-NEXT: s_waitcnt vmcnt(0)687; GFX900-NEXT: s_setpc_b64 s[30:31]688;689; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_3_u:690; GFX90A: ; %bb.0:691; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)692; GFX90A-NEXT: v_mov_b32_e32 v5, 0693; GFX90A-NEXT: ;;#ASMSTART694; GFX90A-NEXT: ; def v[0:2]695; GFX90A-NEXT: ;;#ASMEND696; GFX90A-NEXT: v_mov_b32_e32 v3, v2697; GFX90A-NEXT: v_mov_b32_e32 v4, v0698; GFX90A-NEXT: global_store_dwordx4 v5, v[2:5], s[16:17]699; GFX90A-NEXT: s_waitcnt vmcnt(0)700; GFX90A-NEXT: s_setpc_b64 s[30:31]701;702; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_3_u:703; GFX942: ; %bb.0:704; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)705; GFX942-NEXT: v_mov_b32_e32 v5, 0706; GFX942-NEXT: ;;#ASMSTART707; GFX942-NEXT: ; def v[0:2]708; GFX942-NEXT: ;;#ASMEND709; GFX942-NEXT: s_nop 0710; GFX942-NEXT: v_mov_b32_e32 v3, v2711; GFX942-NEXT: v_mov_b32_e32 v4, v0712; GFX942-NEXT: global_store_dwordx4 v5, v[2:5], s[0:1]713; GFX942-NEXT: s_waitcnt vmcnt(0)714; GFX942-NEXT: s_setpc_b64 s[30:31]715 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()716 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()717 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 poison>718 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16719 ret void720}721 722define void @v_shuffle_v4p3_v3p3__5_5_4_u(ptr addrspace(1) inreg %ptr) {723; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_4_u:724; GFX900: ; %bb.0:725; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)726; GFX900-NEXT: v_mov_b32_e32 v5, 0727; GFX900-NEXT: ;;#ASMSTART728; GFX900-NEXT: ; def v[0:2]729; GFX900-NEXT: ;;#ASMEND730; GFX900-NEXT: v_mov_b32_e32 v3, v2731; GFX900-NEXT: v_mov_b32_e32 v4, v1732; GFX900-NEXT: global_store_dwordx4 v5, v[2:5], s[16:17]733; GFX900-NEXT: s_waitcnt vmcnt(0)734; GFX900-NEXT: s_setpc_b64 s[30:31]735;736; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_4_u:737; GFX90A: ; %bb.0:738; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)739; GFX90A-NEXT: v_mov_b32_e32 v5, 0740; GFX90A-NEXT: ;;#ASMSTART741; GFX90A-NEXT: ; def v[0:2]742; GFX90A-NEXT: ;;#ASMEND743; GFX90A-NEXT: v_mov_b32_e32 v3, v2744; GFX90A-NEXT: v_mov_b32_e32 v4, v1745; GFX90A-NEXT: global_store_dwordx4 v5, v[2:5], s[16:17]746; GFX90A-NEXT: s_waitcnt vmcnt(0)747; GFX90A-NEXT: s_setpc_b64 s[30:31]748;749; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_4_u:750; GFX942: ; %bb.0:751; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)752; GFX942-NEXT: v_mov_b32_e32 v5, 0753; GFX942-NEXT: ;;#ASMSTART754; GFX942-NEXT: ; def v[0:2]755; GFX942-NEXT: ;;#ASMEND756; GFX942-NEXT: s_nop 0757; GFX942-NEXT: v_mov_b32_e32 v3, v2758; GFX942-NEXT: v_mov_b32_e32 v4, v1759; GFX942-NEXT: global_store_dwordx4 v5, v[2:5], s[0:1]760; GFX942-NEXT: s_waitcnt vmcnt(0)761; GFX942-NEXT: s_setpc_b64 s[30:31]762 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()763 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()764 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 poison>765 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16766 ret void767}768 769define void @v_shuffle_v4p3_v3p3__5_5_5_u(ptr addrspace(1) inreg %ptr) {770; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_5_u:771; GFX900: ; %bb.0:772; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)773; GFX900-NEXT: v_mov_b32_e32 v5, 0774; GFX900-NEXT: ;;#ASMSTART775; GFX900-NEXT: ; def v[0:2]776; GFX900-NEXT: ;;#ASMEND777; GFX900-NEXT: v_mov_b32_e32 v3, v2778; GFX900-NEXT: v_mov_b32_e32 v4, v2779; GFX900-NEXT: global_store_dwordx4 v5, v[2:5], s[16:17]780; GFX900-NEXT: s_waitcnt vmcnt(0)781; GFX900-NEXT: s_setpc_b64 s[30:31]782;783; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_5_u:784; GFX90A: ; %bb.0:785; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)786; GFX90A-NEXT: v_mov_b32_e32 v5, 0787; GFX90A-NEXT: ;;#ASMSTART788; GFX90A-NEXT: ; def v[0:2]789; GFX90A-NEXT: ;;#ASMEND790; GFX90A-NEXT: v_mov_b32_e32 v3, v2791; GFX90A-NEXT: v_mov_b32_e32 v4, v2792; GFX90A-NEXT: global_store_dwordx4 v5, v[2:5], s[16:17]793; GFX90A-NEXT: s_waitcnt vmcnt(0)794; GFX90A-NEXT: s_setpc_b64 s[30:31]795;796; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_5_u:797; GFX942: ; %bb.0:798; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)799; GFX942-NEXT: v_mov_b32_e32 v5, 0800; GFX942-NEXT: ;;#ASMSTART801; GFX942-NEXT: ; def v[0:2]802; GFX942-NEXT: ;;#ASMEND803; GFX942-NEXT: s_nop 0804; GFX942-NEXT: v_mov_b32_e32 v3, v2805; GFX942-NEXT: v_mov_b32_e32 v4, v2806; GFX942-NEXT: global_store_dwordx4 v5, v[2:5], s[0:1]807; GFX942-NEXT: s_waitcnt vmcnt(0)808; GFX942-NEXT: s_setpc_b64 s[30:31]809 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()810 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()811 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 poison>812 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16813 ret void814}815 816define void @v_shuffle_v4p3_v3p3__5_5_5_0(ptr addrspace(1) inreg %ptr) {817; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_5_0:818; GFX900: ; %bb.0:819; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)820; GFX900-NEXT: v_mov_b32_e32 v8, 0821; GFX900-NEXT: ;;#ASMSTART822; GFX900-NEXT: ; def v[0:2]823; GFX900-NEXT: ;;#ASMEND824; GFX900-NEXT: v_mov_b32_e32 v3, v2825; GFX900-NEXT: v_mov_b32_e32 v4, v2826; GFX900-NEXT: ;;#ASMSTART827; GFX900-NEXT: ; def v[5:7]828; GFX900-NEXT: ;;#ASMEND829; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]830; GFX900-NEXT: s_waitcnt vmcnt(0)831; GFX900-NEXT: s_setpc_b64 s[30:31]832;833; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_5_0:834; GFX90A: ; %bb.0:835; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)836; GFX90A-NEXT: v_mov_b32_e32 v9, 0837; GFX90A-NEXT: ;;#ASMSTART838; GFX90A-NEXT: ; def v[6:8]839; GFX90A-NEXT: ;;#ASMEND840; GFX90A-NEXT: ;;#ASMSTART841; GFX90A-NEXT: ; def v[0:2]842; GFX90A-NEXT: ;;#ASMEND843; GFX90A-NEXT: v_mov_b32_e32 v3, v2844; GFX90A-NEXT: v_mov_b32_e32 v4, v2845; GFX90A-NEXT: v_mov_b32_e32 v5, v6846; GFX90A-NEXT: global_store_dwordx4 v9, v[2:5], s[16:17]847; GFX90A-NEXT: s_waitcnt vmcnt(0)848; GFX90A-NEXT: s_setpc_b64 s[30:31]849;850; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_5_0:851; GFX942: ; %bb.0:852; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)853; GFX942-NEXT: v_mov_b32_e32 v9, 0854; GFX942-NEXT: ;;#ASMSTART855; GFX942-NEXT: ; def v[6:8]856; GFX942-NEXT: ;;#ASMEND857; GFX942-NEXT: ;;#ASMSTART858; GFX942-NEXT: ; def v[0:2]859; GFX942-NEXT: ;;#ASMEND860; GFX942-NEXT: s_nop 0861; GFX942-NEXT: v_mov_b32_e32 v3, v2862; GFX942-NEXT: v_mov_b32_e32 v4, v2863; GFX942-NEXT: v_mov_b32_e32 v5, v6864; GFX942-NEXT: global_store_dwordx4 v9, v[2:5], s[0:1]865; GFX942-NEXT: s_waitcnt vmcnt(0)866; GFX942-NEXT: s_setpc_b64 s[30:31]867 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()868 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()869 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 0>870 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16871 ret void872}873 874define void @v_shuffle_v4p3_v3p3__5_5_5_1(ptr addrspace(1) inreg %ptr) {875; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_5_1:876; GFX900: ; %bb.0:877; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)878; GFX900-NEXT: ;;#ASMSTART879; GFX900-NEXT: ; def v[4:6]880; GFX900-NEXT: ;;#ASMEND881; GFX900-NEXT: v_mov_b32_e32 v7, 0882; GFX900-NEXT: ;;#ASMSTART883; GFX900-NEXT: ; def v[0:2]884; GFX900-NEXT: ;;#ASMEND885; GFX900-NEXT: v_mov_b32_e32 v3, v2886; GFX900-NEXT: v_mov_b32_e32 v4, v2887; GFX900-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]888; GFX900-NEXT: s_waitcnt vmcnt(0)889; GFX900-NEXT: s_setpc_b64 s[30:31]890;891; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_5_1:892; GFX90A: ; %bb.0:893; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)894; GFX90A-NEXT: ;;#ASMSTART895; GFX90A-NEXT: ; def v[4:6]896; GFX90A-NEXT: ;;#ASMEND897; GFX90A-NEXT: v_mov_b32_e32 v7, 0898; GFX90A-NEXT: ;;#ASMSTART899; GFX90A-NEXT: ; def v[0:2]900; GFX90A-NEXT: ;;#ASMEND901; GFX90A-NEXT: v_mov_b32_e32 v3, v2902; GFX90A-NEXT: v_mov_b32_e32 v4, v2903; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]904; GFX90A-NEXT: s_waitcnt vmcnt(0)905; GFX90A-NEXT: s_setpc_b64 s[30:31]906;907; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_5_1:908; GFX942: ; %bb.0:909; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)910; GFX942-NEXT: ;;#ASMSTART911; GFX942-NEXT: ; def v[4:6]912; GFX942-NEXT: ;;#ASMEND913; GFX942-NEXT: v_mov_b32_e32 v7, 0914; GFX942-NEXT: ;;#ASMSTART915; GFX942-NEXT: ; def v[0:2]916; GFX942-NEXT: ;;#ASMEND917; GFX942-NEXT: s_nop 0918; GFX942-NEXT: v_mov_b32_e32 v3, v2919; GFX942-NEXT: v_mov_b32_e32 v4, v2920; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]921; GFX942-NEXT: s_waitcnt vmcnt(0)922; GFX942-NEXT: s_setpc_b64 s[30:31]923 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()924 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()925 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 1>926 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16927 ret void928}929 930define void @v_shuffle_v4p3_v3p3__5_5_5_2(ptr addrspace(1) inreg %ptr) {931; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_5_2:932; GFX900: ; %bb.0:933; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)934; GFX900-NEXT: ;;#ASMSTART935; GFX900-NEXT: ; def v[3:5]936; GFX900-NEXT: ;;#ASMEND937; GFX900-NEXT: v_mov_b32_e32 v6, 0938; GFX900-NEXT: ;;#ASMSTART939; GFX900-NEXT: ; def v[0:2]940; GFX900-NEXT: ;;#ASMEND941; GFX900-NEXT: v_mov_b32_e32 v3, v2942; GFX900-NEXT: v_mov_b32_e32 v4, v2943; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]944; GFX900-NEXT: s_waitcnt vmcnt(0)945; GFX900-NEXT: s_setpc_b64 s[30:31]946;947; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_5_2:948; GFX90A: ; %bb.0:949; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)950; GFX90A-NEXT: ;;#ASMSTART951; GFX90A-NEXT: ; def v[4:6]952; GFX90A-NEXT: ;;#ASMEND953; GFX90A-NEXT: v_mov_b32_e32 v7, 0954; GFX90A-NEXT: ;;#ASMSTART955; GFX90A-NEXT: ; def v[0:2]956; GFX90A-NEXT: ;;#ASMEND957; GFX90A-NEXT: v_mov_b32_e32 v3, v2958; GFX90A-NEXT: v_mov_b32_e32 v4, v2959; GFX90A-NEXT: v_mov_b32_e32 v5, v6960; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]961; GFX90A-NEXT: s_waitcnt vmcnt(0)962; GFX90A-NEXT: s_setpc_b64 s[30:31]963;964; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_5_2:965; GFX942: ; %bb.0:966; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)967; GFX942-NEXT: ;;#ASMSTART968; GFX942-NEXT: ; def v[4:6]969; GFX942-NEXT: ;;#ASMEND970; GFX942-NEXT: v_mov_b32_e32 v7, 0971; GFX942-NEXT: ;;#ASMSTART972; GFX942-NEXT: ; def v[0:2]973; GFX942-NEXT: ;;#ASMEND974; GFX942-NEXT: v_mov_b32_e32 v5, v6975; GFX942-NEXT: v_mov_b32_e32 v3, v2976; GFX942-NEXT: v_mov_b32_e32 v4, v2977; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]978; GFX942-NEXT: s_waitcnt vmcnt(0)979; GFX942-NEXT: s_setpc_b64 s[30:31]980 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()981 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()982 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 2>983 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 16984 ret void985}986 987define void @v_shuffle_v4p3_v3p3__5_5_5_3(ptr addrspace(1) inreg %ptr) {988; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_5_3:989; GFX900: ; %bb.0:990; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)991; GFX900-NEXT: v_mov_b32_e32 v6, 0992; GFX900-NEXT: ;;#ASMSTART993; GFX900-NEXT: ; def v[0:2]994; GFX900-NEXT: ;;#ASMEND995; GFX900-NEXT: v_mov_b32_e32 v3, v2996; GFX900-NEXT: v_mov_b32_e32 v4, v2997; GFX900-NEXT: v_mov_b32_e32 v5, v0998; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]999; GFX900-NEXT: s_waitcnt vmcnt(0)1000; GFX900-NEXT: s_setpc_b64 s[30:31]1001;1002; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_5_3:1003; GFX90A: ; %bb.0:1004; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1005; GFX90A-NEXT: v_mov_b32_e32 v6, 01006; GFX90A-NEXT: ;;#ASMSTART1007; GFX90A-NEXT: ; def v[0:2]1008; GFX90A-NEXT: ;;#ASMEND1009; GFX90A-NEXT: v_mov_b32_e32 v3, v21010; GFX90A-NEXT: v_mov_b32_e32 v4, v21011; GFX90A-NEXT: v_mov_b32_e32 v5, v01012; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1013; GFX90A-NEXT: s_waitcnt vmcnt(0)1014; GFX90A-NEXT: s_setpc_b64 s[30:31]1015;1016; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_5_3:1017; GFX942: ; %bb.0:1018; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1019; GFX942-NEXT: v_mov_b32_e32 v6, 01020; GFX942-NEXT: ;;#ASMSTART1021; GFX942-NEXT: ; def v[0:2]1022; GFX942-NEXT: ;;#ASMEND1023; GFX942-NEXT: s_nop 01024; GFX942-NEXT: v_mov_b32_e32 v3, v21025; GFX942-NEXT: v_mov_b32_e32 v4, v21026; GFX942-NEXT: v_mov_b32_e32 v5, v01027; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]1028; GFX942-NEXT: s_waitcnt vmcnt(0)1029; GFX942-NEXT: s_setpc_b64 s[30:31]1030 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1031 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1032 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 3>1033 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161034 ret void1035}1036 1037define void @v_shuffle_v4p3_v3p3__5_5_5_4(ptr addrspace(1) inreg %ptr) {1038; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_5_4:1039; GFX900: ; %bb.0:1040; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1041; GFX900-NEXT: v_mov_b32_e32 v6, 01042; GFX900-NEXT: ;;#ASMSTART1043; GFX900-NEXT: ; def v[0:2]1044; GFX900-NEXT: ;;#ASMEND1045; GFX900-NEXT: v_mov_b32_e32 v3, v21046; GFX900-NEXT: v_mov_b32_e32 v4, v21047; GFX900-NEXT: v_mov_b32_e32 v5, v11048; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1049; GFX900-NEXT: s_waitcnt vmcnt(0)1050; GFX900-NEXT: s_setpc_b64 s[30:31]1051;1052; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_5_4:1053; GFX90A: ; %bb.0:1054; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1055; GFX90A-NEXT: v_mov_b32_e32 v6, 01056; GFX90A-NEXT: ;;#ASMSTART1057; GFX90A-NEXT: ; def v[0:2]1058; GFX90A-NEXT: ;;#ASMEND1059; GFX90A-NEXT: v_mov_b32_e32 v3, v21060; GFX90A-NEXT: v_mov_b32_e32 v4, v21061; GFX90A-NEXT: v_mov_b32_e32 v5, v11062; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1063; GFX90A-NEXT: s_waitcnt vmcnt(0)1064; GFX90A-NEXT: s_setpc_b64 s[30:31]1065;1066; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_5_4:1067; GFX942: ; %bb.0:1068; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1069; GFX942-NEXT: v_mov_b32_e32 v6, 01070; GFX942-NEXT: ;;#ASMSTART1071; GFX942-NEXT: ; def v[0:2]1072; GFX942-NEXT: ;;#ASMEND1073; GFX942-NEXT: s_nop 01074; GFX942-NEXT: v_mov_b32_e32 v3, v21075; GFX942-NEXT: v_mov_b32_e32 v4, v21076; GFX942-NEXT: v_mov_b32_e32 v5, v11077; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]1078; GFX942-NEXT: s_waitcnt vmcnt(0)1079; GFX942-NEXT: s_setpc_b64 s[30:31]1080 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1081 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1082 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 4>1083 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161084 ret void1085}1086 1087define void @v_shuffle_v4p3_v3p3__5_5_5_5(ptr addrspace(1) inreg %ptr) {1088; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_5_5:1089; GFX900: ; %bb.0:1090; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1091; GFX900-NEXT: v_mov_b32_e32 v6, 01092; GFX900-NEXT: ;;#ASMSTART1093; GFX900-NEXT: ; def v[0:2]1094; GFX900-NEXT: ;;#ASMEND1095; GFX900-NEXT: v_mov_b32_e32 v3, v21096; GFX900-NEXT: v_mov_b32_e32 v4, v21097; GFX900-NEXT: v_mov_b32_e32 v5, v21098; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1099; GFX900-NEXT: s_waitcnt vmcnt(0)1100; GFX900-NEXT: s_setpc_b64 s[30:31]1101;1102; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_5_5:1103; GFX90A: ; %bb.0:1104; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1105; GFX90A-NEXT: v_mov_b32_e32 v6, 01106; GFX90A-NEXT: ;;#ASMSTART1107; GFX90A-NEXT: ; def v[0:2]1108; GFX90A-NEXT: ;;#ASMEND1109; GFX90A-NEXT: v_mov_b32_e32 v3, v21110; GFX90A-NEXT: v_mov_b32_e32 v4, v21111; GFX90A-NEXT: v_mov_b32_e32 v5, v21112; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1113; GFX90A-NEXT: s_waitcnt vmcnt(0)1114; GFX90A-NEXT: s_setpc_b64 s[30:31]1115;1116; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_5_5:1117; GFX942: ; %bb.0:1118; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1119; GFX942-NEXT: v_mov_b32_e32 v6, 01120; GFX942-NEXT: ;;#ASMSTART1121; GFX942-NEXT: ; def v[0:2]1122; GFX942-NEXT: ;;#ASMEND1123; GFX942-NEXT: s_nop 01124; GFX942-NEXT: v_mov_b32_e32 v3, v21125; GFX942-NEXT: v_mov_b32_e32 v4, v21126; GFX942-NEXT: v_mov_b32_e32 v5, v21127; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]1128; GFX942-NEXT: s_waitcnt vmcnt(0)1129; GFX942-NEXT: s_setpc_b64 s[30:31]1130 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1131 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1132 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 5>1133 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161134 ret void1135}1136 1137define void @v_shuffle_v4p3_v3p3__u_0_0_0(ptr addrspace(1) inreg %ptr) {1138; GFX900-LABEL: v_shuffle_v4p3_v3p3__u_0_0_0:1139; GFX900: ; %bb.0:1140; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1141; GFX900-NEXT: ;;#ASMSTART1142; GFX900-NEXT: ; def v[1:3]1143; GFX900-NEXT: ;;#ASMEND1144; GFX900-NEXT: v_mov_b32_e32 v0, 01145; GFX900-NEXT: v_mov_b32_e32 v2, v11146; GFX900-NEXT: v_mov_b32_e32 v3, v11147; GFX900-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17]1148; GFX900-NEXT: s_waitcnt vmcnt(0)1149; GFX900-NEXT: s_setpc_b64 s[30:31]1150;1151; GFX90A-LABEL: v_shuffle_v4p3_v3p3__u_0_0_0:1152; GFX90A: ; %bb.0:1153; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1154; GFX90A-NEXT: ;;#ASMSTART1155; GFX90A-NEXT: ; def v[2:4]1156; GFX90A-NEXT: ;;#ASMEND1157; GFX90A-NEXT: v_mov_b32_e32 v0, 01158; GFX90A-NEXT: v_mov_b32_e32 v1, v21159; GFX90A-NEXT: v_mov_b32_e32 v3, v21160; GFX90A-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17]1161; GFX90A-NEXT: s_waitcnt vmcnt(0)1162; GFX90A-NEXT: s_setpc_b64 s[30:31]1163;1164; GFX942-LABEL: v_shuffle_v4p3_v3p3__u_0_0_0:1165; GFX942: ; %bb.0:1166; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1167; GFX942-NEXT: ;;#ASMSTART1168; GFX942-NEXT: ; def v[2:4]1169; GFX942-NEXT: ;;#ASMEND1170; GFX942-NEXT: v_mov_b32_e32 v0, 01171; GFX942-NEXT: v_mov_b32_e32 v1, v21172; GFX942-NEXT: v_mov_b32_e32 v3, v21173; GFX942-NEXT: global_store_dwordx4 v0, v[0:3], s[0:1]1174; GFX942-NEXT: s_waitcnt vmcnt(0)1175; GFX942-NEXT: s_setpc_b64 s[30:31]1176 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1177 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0>1178 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161179 ret void1180}1181 1182define void @v_shuffle_v4p3_v3p3__0_0_0_0(ptr addrspace(1) inreg %ptr) {1183; GFX900-LABEL: v_shuffle_v4p3_v3p3__0_0_0_0:1184; GFX900: ; %bb.0:1185; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1186; GFX900-NEXT: ;;#ASMSTART1187; GFX900-NEXT: ; def v[0:2]1188; GFX900-NEXT: ;;#ASMEND1189; GFX900-NEXT: v_mov_b32_e32 v4, 01190; GFX900-NEXT: v_mov_b32_e32 v1, v01191; GFX900-NEXT: v_mov_b32_e32 v2, v01192; GFX900-NEXT: v_mov_b32_e32 v3, v01193; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]1194; GFX900-NEXT: s_waitcnt vmcnt(0)1195; GFX900-NEXT: s_setpc_b64 s[30:31]1196;1197; GFX90A-LABEL: v_shuffle_v4p3_v3p3__0_0_0_0:1198; GFX90A: ; %bb.0:1199; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1200; GFX90A-NEXT: ;;#ASMSTART1201; GFX90A-NEXT: ; def v[0:2]1202; GFX90A-NEXT: ;;#ASMEND1203; GFX90A-NEXT: v_mov_b32_e32 v4, 01204; GFX90A-NEXT: v_mov_b32_e32 v1, v01205; GFX90A-NEXT: v_mov_b32_e32 v2, v01206; GFX90A-NEXT: v_mov_b32_e32 v3, v01207; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]1208; GFX90A-NEXT: s_waitcnt vmcnt(0)1209; GFX90A-NEXT: s_setpc_b64 s[30:31]1210;1211; GFX942-LABEL: v_shuffle_v4p3_v3p3__0_0_0_0:1212; GFX942: ; %bb.0:1213; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1214; GFX942-NEXT: ;;#ASMSTART1215; GFX942-NEXT: ; def v[0:2]1216; GFX942-NEXT: ;;#ASMEND1217; GFX942-NEXT: v_mov_b32_e32 v4, 01218; GFX942-NEXT: v_mov_b32_e32 v1, v01219; GFX942-NEXT: v_mov_b32_e32 v2, v01220; GFX942-NEXT: v_mov_b32_e32 v3, v01221; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]1222; GFX942-NEXT: s_waitcnt vmcnt(0)1223; GFX942-NEXT: s_setpc_b64 s[30:31]1224 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1225 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> zeroinitializer1226 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161227 ret void1228}1229 1230define void @v_shuffle_v4p3_v3p3__1_0_0_0(ptr addrspace(1) inreg %ptr) {1231; GFX900-LABEL: v_shuffle_v4p3_v3p3__1_0_0_0:1232; GFX900: ; %bb.0:1233; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1234; GFX900-NEXT: ;;#ASMSTART1235; GFX900-NEXT: ; def v[0:2]1236; GFX900-NEXT: ;;#ASMEND1237; GFX900-NEXT: v_mov_b32_e32 v5, 01238; GFX900-NEXT: v_mov_b32_e32 v2, v01239; GFX900-NEXT: v_mov_b32_e32 v3, v01240; GFX900-NEXT: v_mov_b32_e32 v4, v01241; GFX900-NEXT: global_store_dwordx4 v5, v[1: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_v4p3_v3p3__1_0_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[2:4]1250; GFX90A-NEXT: ;;#ASMEND1251; GFX90A-NEXT: v_mov_b32_e32 v5, 01252; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]1253; GFX90A-NEXT: v_mov_b32_e32 v3, v21254; GFX90A-NEXT: global_store_dwordx4 v5, v[0:3], 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_v4p3_v3p3__1_0_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[2:4]1263; GFX942-NEXT: ;;#ASMEND1264; GFX942-NEXT: v_mov_b32_e32 v5, 01265; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]1266; GFX942-NEXT: v_mov_b32_e32 v3, v21267; GFX942-NEXT: global_store_dwordx4 v5, v[0:3], s[0:1]1268; GFX942-NEXT: s_waitcnt vmcnt(0)1269; GFX942-NEXT: s_setpc_b64 s[30:31]1270 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1271 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>1272 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161273 ret void1274}1275 1276define void @v_shuffle_v4p3_v3p3__2_0_0_0(ptr addrspace(1) inreg %ptr) {1277; GFX900-LABEL: v_shuffle_v4p3_v3p3__2_0_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:2]1283; GFX900-NEXT: ;;#ASMEND1284; GFX900-NEXT: v_mov_b32_e32 v3, v01285; GFX900-NEXT: v_mov_b32_e32 v4, v01286; GFX900-NEXT: v_mov_b32_e32 v5, v01287; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1288; GFX900-NEXT: s_waitcnt vmcnt(0)1289; GFX900-NEXT: s_setpc_b64 s[30:31]1290;1291; GFX90A-LABEL: v_shuffle_v4p3_v3p3__2_0_0_0:1292; GFX90A: ; %bb.0:1293; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1294; GFX90A-NEXT: v_mov_b32_e32 v6, 01295; GFX90A-NEXT: ;;#ASMSTART1296; GFX90A-NEXT: ; def v[0:2]1297; GFX90A-NEXT: ;;#ASMEND1298; GFX90A-NEXT: v_mov_b32_e32 v3, v01299; GFX90A-NEXT: v_mov_b32_e32 v4, v01300; GFX90A-NEXT: v_mov_b32_e32 v5, v01301; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1302; GFX90A-NEXT: s_waitcnt vmcnt(0)1303; GFX90A-NEXT: s_setpc_b64 s[30:31]1304;1305; GFX942-LABEL: v_shuffle_v4p3_v3p3__2_0_0_0:1306; GFX942: ; %bb.0:1307; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1308; GFX942-NEXT: v_mov_b32_e32 v6, 01309; GFX942-NEXT: ;;#ASMSTART1310; GFX942-NEXT: ; def v[0:2]1311; GFX942-NEXT: ;;#ASMEND1312; GFX942-NEXT: s_nop 01313; GFX942-NEXT: v_mov_b32_e32 v3, v01314; GFX942-NEXT: v_mov_b32_e32 v4, v01315; GFX942-NEXT: v_mov_b32_e32 v5, v01316; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]1317; GFX942-NEXT: s_waitcnt vmcnt(0)1318; GFX942-NEXT: s_setpc_b64 s[30:31]1319 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1320 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0>1321 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161322 ret void1323}1324 1325define void @v_shuffle_v4p3_v3p3__3_0_0_0(ptr addrspace(1) inreg %ptr) {1326; GFX900-LABEL: v_shuffle_v4p3_v3p3__3_0_0_0:1327; GFX900: ; %bb.0:1328; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1329; GFX900-NEXT: ;;#ASMSTART1330; GFX900-NEXT: ; def v[1:3]1331; GFX900-NEXT: ;;#ASMEND1332; GFX900-NEXT: v_mov_b32_e32 v0, 01333; GFX900-NEXT: v_mov_b32_e32 v2, v11334; GFX900-NEXT: v_mov_b32_e32 v3, v11335; GFX900-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17]1336; GFX900-NEXT: s_waitcnt vmcnt(0)1337; GFX900-NEXT: s_setpc_b64 s[30:31]1338;1339; GFX90A-LABEL: v_shuffle_v4p3_v3p3__3_0_0_0:1340; GFX90A: ; %bb.0:1341; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1342; GFX90A-NEXT: ;;#ASMSTART1343; GFX90A-NEXT: ; def v[2:4]1344; GFX90A-NEXT: ;;#ASMEND1345; GFX90A-NEXT: v_mov_b32_e32 v0, 01346; GFX90A-NEXT: v_mov_b32_e32 v1, v21347; GFX90A-NEXT: v_mov_b32_e32 v3, v21348; GFX90A-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17]1349; GFX90A-NEXT: s_waitcnt vmcnt(0)1350; GFX90A-NEXT: s_setpc_b64 s[30:31]1351;1352; GFX942-LABEL: v_shuffle_v4p3_v3p3__3_0_0_0:1353; GFX942: ; %bb.0:1354; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1355; GFX942-NEXT: ;;#ASMSTART1356; GFX942-NEXT: ; def v[2:4]1357; GFX942-NEXT: ;;#ASMEND1358; GFX942-NEXT: v_mov_b32_e32 v0, 01359; GFX942-NEXT: v_mov_b32_e32 v1, v21360; GFX942-NEXT: v_mov_b32_e32 v3, v21361; GFX942-NEXT: global_store_dwordx4 v0, v[0:3], s[0:1]1362; GFX942-NEXT: s_waitcnt vmcnt(0)1363; GFX942-NEXT: s_setpc_b64 s[30:31]1364 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1365 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 3, i32 0, i32 0, i32 0>1366 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161367 ret void1368}1369 1370define void @v_shuffle_v4p3_v3p3__4_0_0_0(ptr addrspace(1) inreg %ptr) {1371; GFX900-LABEL: v_shuffle_v4p3_v3p3__4_0_0_0:1372; GFX900: ; %bb.0:1373; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1374; GFX900-NEXT: ;;#ASMSTART1375; GFX900-NEXT: ; def v[3:5]1376; GFX900-NEXT: ;;#ASMEND1377; GFX900-NEXT: ;;#ASMSTART1378; GFX900-NEXT: ; def v[0:2]1379; GFX900-NEXT: ;;#ASMEND1380; GFX900-NEXT: v_mov_b32_e32 v6, 01381; GFX900-NEXT: v_mov_b32_e32 v2, v31382; GFX900-NEXT: v_mov_b32_e32 v4, v31383; GFX900-NEXT: global_store_dwordx4 v6, v[1:4], s[16:17]1384; GFX900-NEXT: s_waitcnt vmcnt(0)1385; GFX900-NEXT: s_setpc_b64 s[30:31]1386;1387; GFX90A-LABEL: v_shuffle_v4p3_v3p3__4_0_0_0:1388; GFX90A: ; %bb.0:1389; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1390; GFX90A-NEXT: ;;#ASMSTART1391; GFX90A-NEXT: ; def v[2:4]1392; GFX90A-NEXT: ;;#ASMEND1393; GFX90A-NEXT: v_mov_b32_e32 v7, 01394; GFX90A-NEXT: ;;#ASMSTART1395; GFX90A-NEXT: ; def v[4:6]1396; GFX90A-NEXT: ;;#ASMEND1397; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[2:3] op_sel:[1,0]1398; GFX90A-NEXT: v_mov_b32_e32 v3, v21399; GFX90A-NEXT: global_store_dwordx4 v7, v[0:3], s[16:17]1400; GFX90A-NEXT: s_waitcnt vmcnt(0)1401; GFX90A-NEXT: s_setpc_b64 s[30:31]1402;1403; GFX942-LABEL: v_shuffle_v4p3_v3p3__4_0_0_0:1404; GFX942: ; %bb.0:1405; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1406; GFX942-NEXT: ;;#ASMSTART1407; GFX942-NEXT: ; def v[2:4]1408; GFX942-NEXT: ;;#ASMEND1409; GFX942-NEXT: v_mov_b32_e32 v7, 01410; GFX942-NEXT: ;;#ASMSTART1411; GFX942-NEXT: ; def v[4:6]1412; GFX942-NEXT: ;;#ASMEND1413; GFX942-NEXT: s_nop 01414; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[2:3] op_sel:[1,0]1415; GFX942-NEXT: v_mov_b32_e32 v3, v21416; GFX942-NEXT: global_store_dwordx4 v7, v[0:3], s[0:1]1417; GFX942-NEXT: s_waitcnt vmcnt(0)1418; GFX942-NEXT: s_setpc_b64 s[30:31]1419 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1420 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1421 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 4, i32 0, i32 0, i32 0>1422 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161423 ret void1424}1425 1426define void @v_shuffle_v4p3_v3p3__5_0_0_0(ptr addrspace(1) inreg %ptr) {1427; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_0_0_0:1428; GFX900: ; %bb.0:1429; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1430; GFX900-NEXT: ;;#ASMSTART1431; GFX900-NEXT: ; def v[3:5]1432; GFX900-NEXT: ;;#ASMEND1433; GFX900-NEXT: v_mov_b32_e32 v6, 01434; GFX900-NEXT: v_mov_b32_e32 v4, v31435; GFX900-NEXT: v_mov_b32_e32 v5, v31436; GFX900-NEXT: ;;#ASMSTART1437; GFX900-NEXT: ; def v[0:2]1438; GFX900-NEXT: ;;#ASMEND1439; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1440; GFX900-NEXT: s_waitcnt vmcnt(0)1441; GFX900-NEXT: s_setpc_b64 s[30:31]1442;1443; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_0_0_0:1444; GFX90A: ; %bb.0:1445; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1446; GFX90A-NEXT: ;;#ASMSTART1447; GFX90A-NEXT: ; def v[4:6]1448; GFX90A-NEXT: ;;#ASMEND1449; GFX90A-NEXT: v_mov_b32_e32 v7, 01450; GFX90A-NEXT: v_mov_b32_e32 v3, v41451; GFX90A-NEXT: v_mov_b32_e32 v5, v41452; GFX90A-NEXT: ;;#ASMSTART1453; GFX90A-NEXT: ; def v[0:2]1454; GFX90A-NEXT: ;;#ASMEND1455; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]1456; GFX90A-NEXT: s_waitcnt vmcnt(0)1457; GFX90A-NEXT: s_setpc_b64 s[30:31]1458;1459; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_0_0_0:1460; GFX942: ; %bb.0:1461; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1462; GFX942-NEXT: ;;#ASMSTART1463; GFX942-NEXT: ; def v[4:6]1464; GFX942-NEXT: ;;#ASMEND1465; GFX942-NEXT: v_mov_b32_e32 v7, 01466; GFX942-NEXT: v_mov_b32_e32 v3, v41467; GFX942-NEXT: v_mov_b32_e32 v5, v41468; GFX942-NEXT: ;;#ASMSTART1469; GFX942-NEXT: ; def v[0:2]1470; GFX942-NEXT: ;;#ASMEND1471; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]1472; GFX942-NEXT: s_waitcnt vmcnt(0)1473; GFX942-NEXT: s_setpc_b64 s[30:31]1474 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1475 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1476 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 0, i32 0, i32 0>1477 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161478 ret void1479}1480 1481define void @v_shuffle_v4p3_v3p3__5_u_0_0(ptr addrspace(1) inreg %ptr) {1482; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_u_0_0:1483; GFX900: ; %bb.0:1484; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1485; GFX900-NEXT: ;;#ASMSTART1486; GFX900-NEXT: ; def v[4:6]1487; GFX900-NEXT: ;;#ASMEND1488; GFX900-NEXT: v_mov_b32_e32 v3, 01489; GFX900-NEXT: v_mov_b32_e32 v5, v41490; GFX900-NEXT: ;;#ASMSTART1491; GFX900-NEXT: ; def v[0:2]1492; GFX900-NEXT: ;;#ASMEND1493; GFX900-NEXT: global_store_dwordx4 v3, v[2:5], s[16:17]1494; GFX900-NEXT: s_waitcnt vmcnt(0)1495; GFX900-NEXT: s_setpc_b64 s[30:31]1496;1497; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_u_0_0:1498; GFX90A: ; %bb.0:1499; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1500; GFX90A-NEXT: ;;#ASMSTART1501; GFX90A-NEXT: ; def v[4:6]1502; GFX90A-NEXT: ;;#ASMEND1503; GFX90A-NEXT: v_mov_b32_e32 v3, 01504; GFX90A-NEXT: v_mov_b32_e32 v5, v41505; GFX90A-NEXT: ;;#ASMSTART1506; GFX90A-NEXT: ; def v[0:2]1507; GFX90A-NEXT: ;;#ASMEND1508; GFX90A-NEXT: global_store_dwordx4 v3, v[2:5], s[16:17]1509; GFX90A-NEXT: s_waitcnt vmcnt(0)1510; GFX90A-NEXT: s_setpc_b64 s[30:31]1511;1512; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_u_0_0:1513; GFX942: ; %bb.0:1514; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1515; GFX942-NEXT: ;;#ASMSTART1516; GFX942-NEXT: ; def v[4:6]1517; GFX942-NEXT: ;;#ASMEND1518; GFX942-NEXT: v_mov_b32_e32 v3, 01519; GFX942-NEXT: v_mov_b32_e32 v5, v41520; GFX942-NEXT: ;;#ASMSTART1521; GFX942-NEXT: ; def v[0:2]1522; GFX942-NEXT: ;;#ASMEND1523; GFX942-NEXT: global_store_dwordx4 v3, v[2:5], s[0:1]1524; GFX942-NEXT: s_waitcnt vmcnt(0)1525; GFX942-NEXT: s_setpc_b64 s[30:31]1526 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1527 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1528 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 poison, i32 0, i32 0>1529 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161530 ret void1531}1532 1533define void @v_shuffle_v4p3_v3p3__5_1_0_0(ptr addrspace(1) inreg %ptr) {1534; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_1_0_0:1535; GFX900: ; %bb.0:1536; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1537; GFX900-NEXT: ;;#ASMSTART1538; GFX900-NEXT: ; def v[4:6]1539; GFX900-NEXT: ;;#ASMEND1540; GFX900-NEXT: v_mov_b32_e32 v7, 01541; GFX900-NEXT: v_mov_b32_e32 v3, v51542; GFX900-NEXT: v_mov_b32_e32 v5, v41543; GFX900-NEXT: ;;#ASMSTART1544; GFX900-NEXT: ; def v[0:2]1545; GFX900-NEXT: ;;#ASMEND1546; GFX900-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]1547; GFX900-NEXT: s_waitcnt vmcnt(0)1548; GFX900-NEXT: s_setpc_b64 s[30:31]1549;1550; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_1_0_0:1551; GFX90A: ; %bb.0:1552; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1553; GFX90A-NEXT: ;;#ASMSTART1554; GFX90A-NEXT: ; def v[4:6]1555; GFX90A-NEXT: ;;#ASMEND1556; GFX90A-NEXT: v_mov_b32_e32 v7, 01557; GFX90A-NEXT: v_mov_b32_e32 v3, v51558; GFX90A-NEXT: v_mov_b32_e32 v5, v41559; GFX90A-NEXT: ;;#ASMSTART1560; GFX90A-NEXT: ; def v[0:2]1561; GFX90A-NEXT: ;;#ASMEND1562; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]1563; GFX90A-NEXT: s_waitcnt vmcnt(0)1564; GFX90A-NEXT: s_setpc_b64 s[30:31]1565;1566; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_1_0_0:1567; GFX942: ; %bb.0:1568; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1569; GFX942-NEXT: ;;#ASMSTART1570; GFX942-NEXT: ; def v[4:6]1571; GFX942-NEXT: ;;#ASMEND1572; GFX942-NEXT: v_mov_b32_e32 v7, 01573; GFX942-NEXT: v_mov_b32_e32 v3, v51574; GFX942-NEXT: v_mov_b32_e32 v5, v41575; GFX942-NEXT: ;;#ASMSTART1576; GFX942-NEXT: ; def v[0:2]1577; GFX942-NEXT: ;;#ASMEND1578; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]1579; GFX942-NEXT: s_waitcnt vmcnt(0)1580; GFX942-NEXT: s_setpc_b64 s[30:31]1581 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1582 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1583 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 1, i32 0, i32 0>1584 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161585 ret void1586}1587 1588define void @v_shuffle_v4p3_v3p3__5_2_0_0(ptr addrspace(1) inreg %ptr) {1589; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_2_0_0:1590; GFX900: ; %bb.0:1591; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1592; GFX900-NEXT: ;;#ASMSTART1593; GFX900-NEXT: ; def v[4:6]1594; GFX900-NEXT: ;;#ASMEND1595; GFX900-NEXT: v_mov_b32_e32 v7, 01596; GFX900-NEXT: v_mov_b32_e32 v3, v61597; GFX900-NEXT: v_mov_b32_e32 v5, v41598; GFX900-NEXT: ;;#ASMSTART1599; GFX900-NEXT: ; def v[0:2]1600; GFX900-NEXT: ;;#ASMEND1601; GFX900-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]1602; GFX900-NEXT: s_waitcnt vmcnt(0)1603; GFX900-NEXT: s_setpc_b64 s[30:31]1604;1605; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_2_0_0:1606; GFX90A: ; %bb.0:1607; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1608; GFX90A-NEXT: ;;#ASMSTART1609; GFX90A-NEXT: ; def v[4:6]1610; GFX90A-NEXT: ;;#ASMEND1611; GFX90A-NEXT: v_mov_b32_e32 v7, 01612; GFX90A-NEXT: v_mov_b32_e32 v3, v61613; GFX90A-NEXT: v_mov_b32_e32 v5, v41614; GFX90A-NEXT: ;;#ASMSTART1615; GFX90A-NEXT: ; def v[0:2]1616; GFX90A-NEXT: ;;#ASMEND1617; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]1618; GFX90A-NEXT: s_waitcnt vmcnt(0)1619; GFX90A-NEXT: s_setpc_b64 s[30:31]1620;1621; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_2_0_0:1622; GFX942: ; %bb.0:1623; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1624; GFX942-NEXT: ;;#ASMSTART1625; GFX942-NEXT: ; def v[4:6]1626; GFX942-NEXT: ;;#ASMEND1627; GFX942-NEXT: v_mov_b32_e32 v7, 01628; GFX942-NEXT: v_mov_b32_e32 v3, v61629; GFX942-NEXT: v_mov_b32_e32 v5, v41630; GFX942-NEXT: ;;#ASMSTART1631; GFX942-NEXT: ; def v[0:2]1632; GFX942-NEXT: ;;#ASMEND1633; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]1634; GFX942-NEXT: s_waitcnt vmcnt(0)1635; GFX942-NEXT: s_setpc_b64 s[30:31]1636 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1637 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1638 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 2, i32 0, i32 0>1639 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161640 ret void1641}1642 1643define void @v_shuffle_v4p3_v3p3__5_3_0_0(ptr addrspace(1) inreg %ptr) {1644; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_3_0_0:1645; GFX900: ; %bb.0:1646; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1647; GFX900-NEXT: ;;#ASMSTART1648; GFX900-NEXT: ; def v[4:6]1649; GFX900-NEXT: ;;#ASMEND1650; GFX900-NEXT: v_mov_b32_e32 v7, 01651; GFX900-NEXT: ;;#ASMSTART1652; GFX900-NEXT: ; def v[0:2]1653; GFX900-NEXT: ;;#ASMEND1654; GFX900-NEXT: v_mov_b32_e32 v3, v01655; GFX900-NEXT: v_mov_b32_e32 v5, v41656; GFX900-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]1657; GFX900-NEXT: s_waitcnt vmcnt(0)1658; GFX900-NEXT: s_setpc_b64 s[30:31]1659;1660; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_3_0_0:1661; GFX90A: ; %bb.0:1662; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1663; GFX90A-NEXT: ;;#ASMSTART1664; GFX90A-NEXT: ; def v[4:6]1665; GFX90A-NEXT: ;;#ASMEND1666; GFX90A-NEXT: v_mov_b32_e32 v7, 01667; GFX90A-NEXT: ;;#ASMSTART1668; GFX90A-NEXT: ; def v[0:2]1669; GFX90A-NEXT: ;;#ASMEND1670; GFX90A-NEXT: v_mov_b32_e32 v3, v01671; GFX90A-NEXT: v_mov_b32_e32 v5, v41672; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]1673; GFX90A-NEXT: s_waitcnt vmcnt(0)1674; GFX90A-NEXT: s_setpc_b64 s[30:31]1675;1676; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_3_0_0:1677; GFX942: ; %bb.0:1678; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1679; GFX942-NEXT: ;;#ASMSTART1680; GFX942-NEXT: ; def v[4:6]1681; GFX942-NEXT: ;;#ASMEND1682; GFX942-NEXT: v_mov_b32_e32 v7, 01683; GFX942-NEXT: ;;#ASMSTART1684; GFX942-NEXT: ; def v[0:2]1685; GFX942-NEXT: ;;#ASMEND1686; GFX942-NEXT: v_mov_b32_e32 v5, v41687; GFX942-NEXT: v_mov_b32_e32 v3, v01688; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]1689; GFX942-NEXT: s_waitcnt vmcnt(0)1690; GFX942-NEXT: s_setpc_b64 s[30:31]1691 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1692 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1693 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 3, i32 0, i32 0>1694 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161695 ret void1696}1697 1698define void @v_shuffle_v4p3_v3p3__5_4_0_0(ptr addrspace(1) inreg %ptr) {1699; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_4_0_0:1700; GFX900: ; %bb.0:1701; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1702; GFX900-NEXT: ;;#ASMSTART1703; GFX900-NEXT: ; def v[4:6]1704; GFX900-NEXT: ;;#ASMEND1705; GFX900-NEXT: v_mov_b32_e32 v7, 01706; GFX900-NEXT: ;;#ASMSTART1707; GFX900-NEXT: ; def v[0:2]1708; GFX900-NEXT: ;;#ASMEND1709; GFX900-NEXT: v_mov_b32_e32 v3, v11710; GFX900-NEXT: v_mov_b32_e32 v5, v41711; GFX900-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]1712; GFX900-NEXT: s_waitcnt vmcnt(0)1713; GFX900-NEXT: s_setpc_b64 s[30:31]1714;1715; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_4_0_0:1716; GFX90A: ; %bb.0:1717; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1718; GFX90A-NEXT: ;;#ASMSTART1719; GFX90A-NEXT: ; def v[4:6]1720; GFX90A-NEXT: ;;#ASMEND1721; GFX90A-NEXT: v_mov_b32_e32 v7, 01722; GFX90A-NEXT: ;;#ASMSTART1723; GFX90A-NEXT: ; def v[0:2]1724; GFX90A-NEXT: ;;#ASMEND1725; GFX90A-NEXT: v_mov_b32_e32 v3, v11726; GFX90A-NEXT: v_mov_b32_e32 v5, v41727; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]1728; GFX90A-NEXT: s_waitcnt vmcnt(0)1729; GFX90A-NEXT: s_setpc_b64 s[30:31]1730;1731; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_4_0_0:1732; GFX942: ; %bb.0:1733; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1734; GFX942-NEXT: ;;#ASMSTART1735; GFX942-NEXT: ; def v[4:6]1736; GFX942-NEXT: ;;#ASMEND1737; GFX942-NEXT: v_mov_b32_e32 v7, 01738; GFX942-NEXT: ;;#ASMSTART1739; GFX942-NEXT: ; def v[0:2]1740; GFX942-NEXT: ;;#ASMEND1741; GFX942-NEXT: v_mov_b32_e32 v5, v41742; GFX942-NEXT: v_mov_b32_e32 v3, v11743; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]1744; GFX942-NEXT: s_waitcnt vmcnt(0)1745; GFX942-NEXT: s_setpc_b64 s[30:31]1746 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1747 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1748 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 4, i32 0, i32 0>1749 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161750 ret void1751}1752 1753define void @v_shuffle_v4p3_v3p3__5_5_0_0(ptr addrspace(1) inreg %ptr) {1754; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_0_0:1755; GFX900: ; %bb.0:1756; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1757; GFX900-NEXT: ;;#ASMSTART1758; GFX900-NEXT: ; def v[4:6]1759; GFX900-NEXT: ;;#ASMEND1760; GFX900-NEXT: v_mov_b32_e32 v7, 01761; GFX900-NEXT: ;;#ASMSTART1762; GFX900-NEXT: ; def v[0:2]1763; GFX900-NEXT: ;;#ASMEND1764; GFX900-NEXT: v_mov_b32_e32 v3, v21765; GFX900-NEXT: v_mov_b32_e32 v5, v41766; GFX900-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]1767; GFX900-NEXT: s_waitcnt vmcnt(0)1768; GFX900-NEXT: s_setpc_b64 s[30:31]1769;1770; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_0_0:1771; GFX90A: ; %bb.0:1772; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1773; GFX90A-NEXT: ;;#ASMSTART1774; GFX90A-NEXT: ; def v[4:6]1775; GFX90A-NEXT: ;;#ASMEND1776; GFX90A-NEXT: v_mov_b32_e32 v7, 01777; GFX90A-NEXT: ;;#ASMSTART1778; GFX90A-NEXT: ; def v[0:2]1779; GFX90A-NEXT: ;;#ASMEND1780; GFX90A-NEXT: v_mov_b32_e32 v3, v21781; GFX90A-NEXT: v_mov_b32_e32 v5, v41782; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]1783; GFX90A-NEXT: s_waitcnt vmcnt(0)1784; GFX90A-NEXT: s_setpc_b64 s[30:31]1785;1786; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_0_0:1787; GFX942: ; %bb.0:1788; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1789; GFX942-NEXT: ;;#ASMSTART1790; GFX942-NEXT: ; def v[4:6]1791; GFX942-NEXT: ;;#ASMEND1792; GFX942-NEXT: v_mov_b32_e32 v7, 01793; GFX942-NEXT: ;;#ASMSTART1794; GFX942-NEXT: ; def v[0:2]1795; GFX942-NEXT: ;;#ASMEND1796; GFX942-NEXT: v_mov_b32_e32 v5, v41797; GFX942-NEXT: v_mov_b32_e32 v3, v21798; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]1799; GFX942-NEXT: s_waitcnt vmcnt(0)1800; GFX942-NEXT: s_setpc_b64 s[30:31]1801 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1802 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1803 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 0>1804 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161805 ret void1806}1807 1808define void @v_shuffle_v4p3_v3p3__5_5_u_0(ptr addrspace(1) inreg %ptr) {1809; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_u_0:1810; GFX900: ; %bb.0:1811; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1812; GFX900-NEXT: v_mov_b32_e32 v4, 01813; GFX900-NEXT: ;;#ASMSTART1814; GFX900-NEXT: ; def v[0:2]1815; GFX900-NEXT: ;;#ASMEND1816; GFX900-NEXT: v_mov_b32_e32 v3, v21817; GFX900-NEXT: ;;#ASMSTART1818; GFX900-NEXT: ; def v[5:7]1819; GFX900-NEXT: ;;#ASMEND1820; GFX900-NEXT: global_store_dwordx4 v4, v[2:5], s[16:17]1821; GFX900-NEXT: s_waitcnt vmcnt(0)1822; GFX900-NEXT: s_setpc_b64 s[30:31]1823;1824; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_u_0:1825; GFX90A: ; %bb.0:1826; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1827; GFX90A-NEXT: ;;#ASMSTART1828; GFX90A-NEXT: ; def v[4:6]1829; GFX90A-NEXT: ;;#ASMEND1830; GFX90A-NEXT: v_mov_b32_e32 v7, 01831; GFX90A-NEXT: ;;#ASMSTART1832; GFX90A-NEXT: ; def v[0:2]1833; GFX90A-NEXT: ;;#ASMEND1834; GFX90A-NEXT: v_mov_b32_e32 v3, v21835; GFX90A-NEXT: v_mov_b32_e32 v5, v41836; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]1837; GFX90A-NEXT: s_waitcnt vmcnt(0)1838; GFX90A-NEXT: s_setpc_b64 s[30:31]1839;1840; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_u_0:1841; GFX942: ; %bb.0:1842; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1843; GFX942-NEXT: ;;#ASMSTART1844; GFX942-NEXT: ; def v[4:6]1845; GFX942-NEXT: ;;#ASMEND1846; GFX942-NEXT: v_mov_b32_e32 v7, 01847; GFX942-NEXT: ;;#ASMSTART1848; GFX942-NEXT: ; def v[0:2]1849; GFX942-NEXT: ;;#ASMEND1850; GFX942-NEXT: v_mov_b32_e32 v5, v41851; GFX942-NEXT: v_mov_b32_e32 v3, v21852; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]1853; GFX942-NEXT: s_waitcnt vmcnt(0)1854; GFX942-NEXT: s_setpc_b64 s[30:31]1855 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1856 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1857 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 0>1858 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161859 ret void1860}1861 1862define void @v_shuffle_v4p3_v3p3__5_5_1_0(ptr addrspace(1) inreg %ptr) {1863; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_1_0:1864; GFX900: ; %bb.0:1865; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1866; GFX900-NEXT: v_mov_b32_e32 v8, 01867; GFX900-NEXT: ;;#ASMSTART1868; GFX900-NEXT: ; def v[5:7]1869; GFX900-NEXT: ;;#ASMEND1870; GFX900-NEXT: ;;#ASMSTART1871; GFX900-NEXT: ; def v[0:2]1872; GFX900-NEXT: ;;#ASMEND1873; GFX900-NEXT: v_mov_b32_e32 v3, v21874; GFX900-NEXT: v_mov_b32_e32 v4, v61875; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]1876; GFX900-NEXT: s_waitcnt vmcnt(0)1877; GFX900-NEXT: s_setpc_b64 s[30:31]1878;1879; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_1_0:1880; GFX90A: ; %bb.0:1881; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1882; GFX90A-NEXT: ;;#ASMSTART1883; GFX90A-NEXT: ; def v[4:6]1884; GFX90A-NEXT: ;;#ASMEND1885; GFX90A-NEXT: v_mov_b32_e32 v7, 01886; GFX90A-NEXT: ;;#ASMSTART1887; GFX90A-NEXT: ; def v[0:2]1888; GFX90A-NEXT: ;;#ASMEND1889; GFX90A-NEXT: v_pk_mov_b32 v[4:5], v[4:5], v[4:5] op_sel:[1,0]1890; GFX90A-NEXT: v_mov_b32_e32 v3, v21891; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]1892; GFX90A-NEXT: s_waitcnt vmcnt(0)1893; GFX90A-NEXT: s_setpc_b64 s[30:31]1894;1895; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_1_0:1896; GFX942: ; %bb.0:1897; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1898; GFX942-NEXT: ;;#ASMSTART1899; GFX942-NEXT: ; def v[4:6]1900; GFX942-NEXT: ;;#ASMEND1901; GFX942-NEXT: v_mov_b32_e32 v7, 01902; GFX942-NEXT: ;;#ASMSTART1903; GFX942-NEXT: ; def v[0:2]1904; GFX942-NEXT: ;;#ASMEND1905; GFX942-NEXT: v_pk_mov_b32 v[4:5], v[4:5], v[4:5] op_sel:[1,0]1906; GFX942-NEXT: v_mov_b32_e32 v3, v21907; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]1908; GFX942-NEXT: s_waitcnt vmcnt(0)1909; GFX942-NEXT: s_setpc_b64 s[30:31]1910 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1911 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1912 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 0>1913 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161914 ret void1915}1916 1917define void @v_shuffle_v4p3_v3p3__5_5_2_0(ptr addrspace(1) inreg %ptr) {1918; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_2_0:1919; GFX900: ; %bb.0:1920; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1921; GFX900-NEXT: v_mov_b32_e32 v8, 01922; GFX900-NEXT: ;;#ASMSTART1923; GFX900-NEXT: ; def v[5:7]1924; GFX900-NEXT: ;;#ASMEND1925; GFX900-NEXT: ;;#ASMSTART1926; GFX900-NEXT: ; def v[0:2]1927; GFX900-NEXT: ;;#ASMEND1928; GFX900-NEXT: v_mov_b32_e32 v3, v21929; GFX900-NEXT: v_mov_b32_e32 v4, v71930; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]1931; GFX900-NEXT: s_waitcnt vmcnt(0)1932; GFX900-NEXT: s_setpc_b64 s[30:31]1933;1934; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_2_0:1935; GFX90A: ; %bb.0:1936; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1937; GFX90A-NEXT: v_mov_b32_e32 v9, 01938; GFX90A-NEXT: ;;#ASMSTART1939; GFX90A-NEXT: ; def v[6:8]1940; GFX90A-NEXT: ;;#ASMEND1941; GFX90A-NEXT: ;;#ASMSTART1942; GFX90A-NEXT: ; def v[0:2]1943; GFX90A-NEXT: ;;#ASMEND1944; GFX90A-NEXT: v_mov_b32_e32 v3, v21945; GFX90A-NEXT: v_mov_b32_e32 v4, v81946; GFX90A-NEXT: v_mov_b32_e32 v5, v61947; GFX90A-NEXT: global_store_dwordx4 v9, v[2:5], s[16:17]1948; GFX90A-NEXT: s_waitcnt vmcnt(0)1949; GFX90A-NEXT: s_setpc_b64 s[30:31]1950;1951; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_2_0:1952; GFX942: ; %bb.0:1953; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1954; GFX942-NEXT: v_mov_b32_e32 v9, 01955; GFX942-NEXT: ;;#ASMSTART1956; GFX942-NEXT: ; def v[6:8]1957; GFX942-NEXT: ;;#ASMEND1958; GFX942-NEXT: ;;#ASMSTART1959; GFX942-NEXT: ; def v[0:2]1960; GFX942-NEXT: ;;#ASMEND1961; GFX942-NEXT: s_nop 01962; GFX942-NEXT: v_mov_b32_e32 v3, v21963; GFX942-NEXT: v_mov_b32_e32 v4, v81964; GFX942-NEXT: v_mov_b32_e32 v5, v61965; GFX942-NEXT: global_store_dwordx4 v9, v[2:5], s[0:1]1966; GFX942-NEXT: s_waitcnt vmcnt(0)1967; GFX942-NEXT: s_setpc_b64 s[30:31]1968 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1969 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()1970 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 0>1971 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 161972 ret void1973}1974 1975define void @v_shuffle_v4p3_v3p3__5_5_3_0(ptr addrspace(1) inreg %ptr) {1976; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_3_0:1977; GFX900: ; %bb.0:1978; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1979; GFX900-NEXT: v_mov_b32_e32 v8, 01980; GFX900-NEXT: ;;#ASMSTART1981; GFX900-NEXT: ; def v[0:2]1982; GFX900-NEXT: ;;#ASMEND1983; GFX900-NEXT: v_mov_b32_e32 v3, v21984; GFX900-NEXT: v_mov_b32_e32 v4, v01985; GFX900-NEXT: ;;#ASMSTART1986; GFX900-NEXT: ; def v[5:7]1987; GFX900-NEXT: ;;#ASMEND1988; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]1989; GFX900-NEXT: s_waitcnt vmcnt(0)1990; GFX900-NEXT: s_setpc_b64 s[30:31]1991;1992; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_3_0:1993; GFX90A: ; %bb.0:1994; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1995; GFX90A-NEXT: v_mov_b32_e32 v9, 01996; GFX90A-NEXT: ;;#ASMSTART1997; GFX90A-NEXT: ; def v[6:8]1998; GFX90A-NEXT: ;;#ASMEND1999; GFX90A-NEXT: ;;#ASMSTART2000; GFX90A-NEXT: ; def v[0:2]2001; GFX90A-NEXT: ;;#ASMEND2002; GFX90A-NEXT: v_mov_b32_e32 v3, v22003; GFX90A-NEXT: v_mov_b32_e32 v4, v02004; GFX90A-NEXT: v_mov_b32_e32 v5, v62005; GFX90A-NEXT: global_store_dwordx4 v9, v[2:5], s[16:17]2006; GFX90A-NEXT: s_waitcnt vmcnt(0)2007; GFX90A-NEXT: s_setpc_b64 s[30:31]2008;2009; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_3_0:2010; GFX942: ; %bb.0:2011; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2012; GFX942-NEXT: v_mov_b32_e32 v9, 02013; GFX942-NEXT: ;;#ASMSTART2014; GFX942-NEXT: ; def v[6:8]2015; GFX942-NEXT: ;;#ASMEND2016; GFX942-NEXT: ;;#ASMSTART2017; GFX942-NEXT: ; def v[0:2]2018; GFX942-NEXT: ;;#ASMEND2019; GFX942-NEXT: s_nop 02020; GFX942-NEXT: v_mov_b32_e32 v3, v22021; GFX942-NEXT: v_mov_b32_e32 v4, v02022; GFX942-NEXT: v_mov_b32_e32 v5, v62023; GFX942-NEXT: global_store_dwordx4 v9, v[2:5], s[0:1]2024; GFX942-NEXT: s_waitcnt vmcnt(0)2025; GFX942-NEXT: s_setpc_b64 s[30:31]2026 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2027 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2028 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 0>2029 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162030 ret void2031}2032 2033define void @v_shuffle_v4p3_v3p3__5_5_4_0(ptr addrspace(1) inreg %ptr) {2034; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_4_0:2035; GFX900: ; %bb.0:2036; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2037; GFX900-NEXT: v_mov_b32_e32 v8, 02038; GFX900-NEXT: ;;#ASMSTART2039; GFX900-NEXT: ; def v[0:2]2040; GFX900-NEXT: ;;#ASMEND2041; GFX900-NEXT: v_mov_b32_e32 v3, v22042; GFX900-NEXT: v_mov_b32_e32 v4, v12043; GFX900-NEXT: ;;#ASMSTART2044; GFX900-NEXT: ; def v[5:7]2045; GFX900-NEXT: ;;#ASMEND2046; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], 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_v4p3_v3p3__5_5_4_0:2051; GFX90A: ; %bb.0:2052; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2053; GFX90A-NEXT: ;;#ASMSTART2054; GFX90A-NEXT: ; def v[4:6]2055; GFX90A-NEXT: ;;#ASMEND2056; GFX90A-NEXT: v_mov_b32_e32 v7, 02057; GFX90A-NEXT: ;;#ASMSTART2058; GFX90A-NEXT: ; def v[0:2]2059; GFX90A-NEXT: ;;#ASMEND2060; GFX90A-NEXT: v_pk_mov_b32 v[4:5], v[0:1], v[4:5] op_sel:[1,0]2061; GFX90A-NEXT: v_mov_b32_e32 v3, v22062; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]2063; GFX90A-NEXT: s_waitcnt vmcnt(0)2064; GFX90A-NEXT: s_setpc_b64 s[30:31]2065;2066; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_4_0:2067; GFX942: ; %bb.0:2068; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2069; GFX942-NEXT: ;;#ASMSTART2070; GFX942-NEXT: ; def v[4:6]2071; GFX942-NEXT: ;;#ASMEND2072; GFX942-NEXT: v_mov_b32_e32 v7, 02073; GFX942-NEXT: ;;#ASMSTART2074; GFX942-NEXT: ; def v[0:2]2075; GFX942-NEXT: ;;#ASMEND2076; GFX942-NEXT: s_nop 02077; GFX942-NEXT: v_pk_mov_b32 v[4:5], v[0:1], v[4:5] op_sel:[1,0]2078; GFX942-NEXT: v_mov_b32_e32 v3, v22079; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]2080; GFX942-NEXT: s_waitcnt vmcnt(0)2081; GFX942-NEXT: s_setpc_b64 s[30:31]2082 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2083 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2084 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 0>2085 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162086 ret void2087}2088 2089define void @v_shuffle_v4p3_v3p3__u_1_1_1(ptr addrspace(1) inreg %ptr) {2090; GFX900-LABEL: v_shuffle_v4p3_v3p3__u_1_1_1:2091; GFX900: ; %bb.0:2092; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2093; GFX900-NEXT: ;;#ASMSTART2094; GFX900-NEXT: ; def v[0:2]2095; GFX900-NEXT: ;;#ASMEND2096; GFX900-NEXT: v_mov_b32_e32 v4, 02097; GFX900-NEXT: v_mov_b32_e32 v2, v12098; GFX900-NEXT: v_mov_b32_e32 v3, v12099; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]2100; GFX900-NEXT: s_waitcnt vmcnt(0)2101; GFX900-NEXT: s_setpc_b64 s[30:31]2102;2103; GFX90A-LABEL: v_shuffle_v4p3_v3p3__u_1_1_1:2104; GFX90A: ; %bb.0:2105; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2106; GFX90A-NEXT: ;;#ASMSTART2107; GFX90A-NEXT: ; def v[0:2]2108; GFX90A-NEXT: ;;#ASMEND2109; GFX90A-NEXT: v_mov_b32_e32 v4, 02110; GFX90A-NEXT: v_mov_b32_e32 v2, v12111; GFX90A-NEXT: v_mov_b32_e32 v3, v12112; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]2113; GFX90A-NEXT: s_waitcnt vmcnt(0)2114; GFX90A-NEXT: s_setpc_b64 s[30:31]2115;2116; GFX942-LABEL: v_shuffle_v4p3_v3p3__u_1_1_1:2117; GFX942: ; %bb.0:2118; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2119; GFX942-NEXT: ;;#ASMSTART2120; GFX942-NEXT: ; def v[0:2]2121; GFX942-NEXT: ;;#ASMEND2122; GFX942-NEXT: v_mov_b32_e32 v4, 02123; GFX942-NEXT: v_mov_b32_e32 v2, v12124; GFX942-NEXT: v_mov_b32_e32 v3, v12125; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]2126; GFX942-NEXT: s_waitcnt vmcnt(0)2127; GFX942-NEXT: s_setpc_b64 s[30:31]2128 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2129 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1>2130 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162131 ret void2132}2133 2134define void @v_shuffle_v4p3_v3p3__0_1_1_1(ptr addrspace(1) inreg %ptr) {2135; GFX900-LABEL: v_shuffle_v4p3_v3p3__0_1_1_1:2136; GFX900: ; %bb.0:2137; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2138; GFX900-NEXT: ;;#ASMSTART2139; GFX900-NEXT: ; def v[0:2]2140; GFX900-NEXT: ;;#ASMEND2141; GFX900-NEXT: v_mov_b32_e32 v4, 02142; GFX900-NEXT: v_mov_b32_e32 v2, v12143; GFX900-NEXT: v_mov_b32_e32 v3, v12144; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]2145; GFX900-NEXT: s_waitcnt vmcnt(0)2146; GFX900-NEXT: s_setpc_b64 s[30:31]2147;2148; GFX90A-LABEL: v_shuffle_v4p3_v3p3__0_1_1_1:2149; GFX90A: ; %bb.0:2150; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2151; GFX90A-NEXT: ;;#ASMSTART2152; GFX90A-NEXT: ; def v[0:2]2153; GFX90A-NEXT: ;;#ASMEND2154; GFX90A-NEXT: v_mov_b32_e32 v4, 02155; GFX90A-NEXT: v_mov_b32_e32 v2, v12156; GFX90A-NEXT: v_mov_b32_e32 v3, v12157; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]2158; GFX90A-NEXT: s_waitcnt vmcnt(0)2159; GFX90A-NEXT: s_setpc_b64 s[30:31]2160;2161; GFX942-LABEL: v_shuffle_v4p3_v3p3__0_1_1_1:2162; GFX942: ; %bb.0:2163; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2164; GFX942-NEXT: ;;#ASMSTART2165; GFX942-NEXT: ; def v[0:2]2166; GFX942-NEXT: ;;#ASMEND2167; GFX942-NEXT: v_mov_b32_e32 v4, 02168; GFX942-NEXT: v_mov_b32_e32 v2, v12169; GFX942-NEXT: v_mov_b32_e32 v3, v12170; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]2171; GFX942-NEXT: s_waitcnt vmcnt(0)2172; GFX942-NEXT: s_setpc_b64 s[30:31]2173 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2174 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1>2175 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162176 ret void2177}2178 2179define void @v_shuffle_v4p3_v3p3__1_1_1_1(ptr addrspace(1) inreg %ptr) {2180; GFX900-LABEL: v_shuffle_v4p3_v3p3__1_1_1_1:2181; GFX900: ; %bb.0:2182; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2183; GFX900-NEXT: ;;#ASMSTART2184; GFX900-NEXT: ; def v[0:2]2185; GFX900-NEXT: ;;#ASMEND2186; GFX900-NEXT: v_mov_b32_e32 v5, 02187; GFX900-NEXT: v_mov_b32_e32 v2, v12188; GFX900-NEXT: v_mov_b32_e32 v3, v12189; GFX900-NEXT: v_mov_b32_e32 v4, v12190; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]2191; GFX900-NEXT: s_waitcnt vmcnt(0)2192; GFX900-NEXT: s_setpc_b64 s[30:31]2193;2194; GFX90A-LABEL: v_shuffle_v4p3_v3p3__1_1_1_1:2195; GFX90A: ; %bb.0:2196; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2197; GFX90A-NEXT: ;;#ASMSTART2198; GFX90A-NEXT: ; def v[0:2]2199; GFX90A-NEXT: ;;#ASMEND2200; GFX90A-NEXT: v_mov_b32_e32 v4, 02201; GFX90A-NEXT: v_mov_b32_e32 v0, v12202; GFX90A-NEXT: v_mov_b32_e32 v2, v12203; GFX90A-NEXT: v_mov_b32_e32 v3, v12204; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]2205; GFX90A-NEXT: s_waitcnt vmcnt(0)2206; GFX90A-NEXT: s_setpc_b64 s[30:31]2207;2208; GFX942-LABEL: v_shuffle_v4p3_v3p3__1_1_1_1:2209; GFX942: ; %bb.0:2210; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2211; GFX942-NEXT: ;;#ASMSTART2212; GFX942-NEXT: ; def v[0:2]2213; GFX942-NEXT: ;;#ASMEND2214; GFX942-NEXT: v_mov_b32_e32 v4, 02215; GFX942-NEXT: v_mov_b32_e32 v0, v12216; GFX942-NEXT: v_mov_b32_e32 v2, v12217; GFX942-NEXT: v_mov_b32_e32 v3, v12218; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]2219; GFX942-NEXT: s_waitcnt vmcnt(0)2220; GFX942-NEXT: s_setpc_b64 s[30:31]2221 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2222 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>2223 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162224 ret void2225}2226 2227define void @v_shuffle_v4p3_v3p3__2_1_1_1(ptr addrspace(1) inreg %ptr) {2228; GFX900-LABEL: v_shuffle_v4p3_v3p3__2_1_1_1:2229; GFX900: ; %bb.0:2230; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2231; GFX900-NEXT: v_mov_b32_e32 v6, 02232; GFX900-NEXT: ;;#ASMSTART2233; GFX900-NEXT: ; def v[0:2]2234; GFX900-NEXT: ;;#ASMEND2235; GFX900-NEXT: v_mov_b32_e32 v3, v12236; GFX900-NEXT: v_mov_b32_e32 v4, v12237; GFX900-NEXT: v_mov_b32_e32 v5, v12238; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]2239; GFX900-NEXT: s_waitcnt vmcnt(0)2240; GFX900-NEXT: s_setpc_b64 s[30:31]2241;2242; GFX90A-LABEL: v_shuffle_v4p3_v3p3__2_1_1_1:2243; GFX90A: ; %bb.0:2244; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2245; GFX90A-NEXT: v_mov_b32_e32 v6, 02246; GFX90A-NEXT: ;;#ASMSTART2247; GFX90A-NEXT: ; def v[0:2]2248; GFX90A-NEXT: ;;#ASMEND2249; GFX90A-NEXT: v_mov_b32_e32 v3, v12250; GFX90A-NEXT: v_mov_b32_e32 v4, v12251; GFX90A-NEXT: v_mov_b32_e32 v5, v12252; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], 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_v4p3_v3p3__2_1_1_1:2257; GFX942: ; %bb.0:2258; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2259; GFX942-NEXT: v_mov_b32_e32 v6, 02260; GFX942-NEXT: ;;#ASMSTART2261; GFX942-NEXT: ; def v[0:2]2262; GFX942-NEXT: ;;#ASMEND2263; GFX942-NEXT: s_nop 02264; GFX942-NEXT: v_mov_b32_e32 v3, v12265; GFX942-NEXT: v_mov_b32_e32 v4, v12266; GFX942-NEXT: v_mov_b32_e32 v5, v12267; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]2268; GFX942-NEXT: s_waitcnt vmcnt(0)2269; GFX942-NEXT: s_setpc_b64 s[30:31]2270 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2271 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1>2272 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162273 ret void2274}2275 2276define void @v_shuffle_v4p3_v3p3__3_1_1_1(ptr addrspace(1) inreg %ptr) {2277; GFX900-LABEL: v_shuffle_v4p3_v3p3__3_1_1_1:2278; GFX900: ; %bb.0:2279; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2280; GFX900-NEXT: ;;#ASMSTART2281; GFX900-NEXT: ; def v[0:2]2282; GFX900-NEXT: ;;#ASMEND2283; GFX900-NEXT: v_mov_b32_e32 v4, 02284; GFX900-NEXT: v_mov_b32_e32 v2, v12285; GFX900-NEXT: v_mov_b32_e32 v3, v12286; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]2287; GFX900-NEXT: s_waitcnt vmcnt(0)2288; GFX900-NEXT: s_setpc_b64 s[30:31]2289;2290; GFX90A-LABEL: v_shuffle_v4p3_v3p3__3_1_1_1:2291; GFX90A: ; %bb.0:2292; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2293; GFX90A-NEXT: ;;#ASMSTART2294; GFX90A-NEXT: ; def v[0:2]2295; GFX90A-NEXT: ;;#ASMEND2296; GFX90A-NEXT: v_mov_b32_e32 v4, 02297; GFX90A-NEXT: v_mov_b32_e32 v2, v12298; GFX90A-NEXT: v_mov_b32_e32 v3, v12299; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]2300; GFX90A-NEXT: s_waitcnt vmcnt(0)2301; GFX90A-NEXT: s_setpc_b64 s[30:31]2302;2303; GFX942-LABEL: v_shuffle_v4p3_v3p3__3_1_1_1:2304; GFX942: ; %bb.0:2305; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2306; GFX942-NEXT: ;;#ASMSTART2307; GFX942-NEXT: ; def v[0:2]2308; GFX942-NEXT: ;;#ASMEND2309; GFX942-NEXT: v_mov_b32_e32 v4, 02310; GFX942-NEXT: v_mov_b32_e32 v2, v12311; GFX942-NEXT: v_mov_b32_e32 v3, v12312; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]2313; GFX942-NEXT: s_waitcnt vmcnt(0)2314; GFX942-NEXT: s_setpc_b64 s[30:31]2315 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2316 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 3, i32 1, i32 1, i32 1>2317 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162318 ret void2319}2320 2321define void @v_shuffle_v4p3_v3p3__4_1_1_1(ptr addrspace(1) inreg %ptr) {2322; GFX900-LABEL: v_shuffle_v4p3_v3p3__4_1_1_1:2323; GFX900: ; %bb.0:2324; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2325; GFX900-NEXT: ;;#ASMSTART2326; GFX900-NEXT: ; def v[2:4]2327; GFX900-NEXT: ;;#ASMEND2328; GFX900-NEXT: ;;#ASMSTART2329; GFX900-NEXT: ; def v[0:2]2330; GFX900-NEXT: ;;#ASMEND2331; GFX900-NEXT: v_mov_b32_e32 v5, 02332; GFX900-NEXT: v_mov_b32_e32 v2, v32333; GFX900-NEXT: v_mov_b32_e32 v4, v32334; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]2335; GFX900-NEXT: s_waitcnt vmcnt(0)2336; GFX900-NEXT: s_setpc_b64 s[30:31]2337;2338; GFX90A-LABEL: v_shuffle_v4p3_v3p3__4_1_1_1:2339; GFX90A: ; %bb.0:2340; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2341; GFX90A-NEXT: ;;#ASMSTART2342; GFX90A-NEXT: ; def v[0:2]2343; GFX90A-NEXT: ;;#ASMEND2344; GFX90A-NEXT: ;;#ASMSTART2345; GFX90A-NEXT: ; def v[2:4]2346; GFX90A-NEXT: ;;#ASMEND2347; GFX90A-NEXT: v_mov_b32_e32 v5, 02348; GFX90A-NEXT: v_mov_b32_e32 v0, v32349; GFX90A-NEXT: v_mov_b32_e32 v2, v12350; GFX90A-NEXT: v_mov_b32_e32 v3, v12351; GFX90A-NEXT: global_store_dwordx4 v5, v[0:3], s[16:17]2352; GFX90A-NEXT: s_waitcnt vmcnt(0)2353; GFX90A-NEXT: s_setpc_b64 s[30:31]2354;2355; GFX942-LABEL: v_shuffle_v4p3_v3p3__4_1_1_1:2356; GFX942: ; %bb.0:2357; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2358; GFX942-NEXT: ;;#ASMSTART2359; GFX942-NEXT: ; def v[0:2]2360; GFX942-NEXT: ;;#ASMEND2361; GFX942-NEXT: v_mov_b32_e32 v5, 02362; GFX942-NEXT: ;;#ASMSTART2363; GFX942-NEXT: ; def v[2:4]2364; GFX942-NEXT: ;;#ASMEND2365; GFX942-NEXT: s_nop 02366; GFX942-NEXT: v_mov_b32_e32 v0, v32367; GFX942-NEXT: v_mov_b32_e32 v2, v12368; GFX942-NEXT: v_mov_b32_e32 v3, v12369; GFX942-NEXT: global_store_dwordx4 v5, v[0:3], s[0:1]2370; GFX942-NEXT: s_waitcnt vmcnt(0)2371; GFX942-NEXT: s_setpc_b64 s[30:31]2372 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2373 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2374 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 4, i32 1, i32 1, i32 1>2375 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162376 ret void2377}2378 2379define void @v_shuffle_v4p3_v3p3__5_1_1_1(ptr addrspace(1) inreg %ptr) {2380; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_1_1_1:2381; GFX900: ; %bb.0:2382; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2383; GFX900-NEXT: ;;#ASMSTART2384; GFX900-NEXT: ; def v[2:4]2385; GFX900-NEXT: ;;#ASMEND2386; GFX900-NEXT: v_mov_b32_e32 v6, 02387; GFX900-NEXT: v_mov_b32_e32 v4, v32388; GFX900-NEXT: v_mov_b32_e32 v5, v32389; GFX900-NEXT: ;;#ASMSTART2390; GFX900-NEXT: ; def v[0:2]2391; GFX900-NEXT: ;;#ASMEND2392; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]2393; GFX900-NEXT: s_waitcnt vmcnt(0)2394; GFX900-NEXT: s_setpc_b64 s[30:31]2395;2396; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_1_1_1:2397; GFX90A: ; %bb.0:2398; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2399; GFX90A-NEXT: ;;#ASMSTART2400; GFX90A-NEXT: ; def v[2:4]2401; GFX90A-NEXT: ;;#ASMEND2402; GFX90A-NEXT: v_mov_b32_e32 v6, 02403; GFX90A-NEXT: v_mov_b32_e32 v4, v32404; GFX90A-NEXT: v_mov_b32_e32 v5, v32405; GFX90A-NEXT: ;;#ASMSTART2406; GFX90A-NEXT: ; def v[0:2]2407; GFX90A-NEXT: ;;#ASMEND2408; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]2409; GFX90A-NEXT: s_waitcnt vmcnt(0)2410; GFX90A-NEXT: s_setpc_b64 s[30:31]2411;2412; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_1_1_1:2413; GFX942: ; %bb.0:2414; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2415; GFX942-NEXT: ;;#ASMSTART2416; GFX942-NEXT: ; def v[2:4]2417; GFX942-NEXT: ;;#ASMEND2418; GFX942-NEXT: v_mov_b32_e32 v6, 02419; GFX942-NEXT: v_mov_b32_e32 v4, v32420; GFX942-NEXT: v_mov_b32_e32 v5, v32421; GFX942-NEXT: ;;#ASMSTART2422; GFX942-NEXT: ; def v[0:2]2423; GFX942-NEXT: ;;#ASMEND2424; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]2425; GFX942-NEXT: s_waitcnt vmcnt(0)2426; GFX942-NEXT: s_setpc_b64 s[30:31]2427 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2428 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2429 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 1, i32 1, i32 1>2430 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162431 ret void2432}2433 2434define void @v_shuffle_v4p3_v3p3__5_u_1_1(ptr addrspace(1) inreg %ptr) {2435; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_u_1_1:2436; GFX900: ; %bb.0:2437; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2438; GFX900-NEXT: ;;#ASMSTART2439; GFX900-NEXT: ; def v[3:5]2440; GFX900-NEXT: ;;#ASMEND2441; GFX900-NEXT: v_mov_b32_e32 v6, 02442; GFX900-NEXT: v_mov_b32_e32 v5, v42443; GFX900-NEXT: ;;#ASMSTART2444; GFX900-NEXT: ; def v[0:2]2445; GFX900-NEXT: ;;#ASMEND2446; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]2447; GFX900-NEXT: s_waitcnt vmcnt(0)2448; GFX900-NEXT: s_setpc_b64 s[30:31]2449;2450; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_u_1_1:2451; GFX90A: ; %bb.0:2452; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2453; GFX90A-NEXT: ;;#ASMSTART2454; GFX90A-NEXT: ; def v[4:6]2455; GFX90A-NEXT: ;;#ASMEND2456; GFX90A-NEXT: v_mov_b32_e32 v3, 02457; GFX90A-NEXT: v_mov_b32_e32 v4, v52458; GFX90A-NEXT: ;;#ASMSTART2459; GFX90A-NEXT: ; def v[0:2]2460; GFX90A-NEXT: ;;#ASMEND2461; GFX90A-NEXT: global_store_dwordx4 v3, v[2:5], s[16:17]2462; GFX90A-NEXT: s_waitcnt vmcnt(0)2463; GFX90A-NEXT: s_setpc_b64 s[30:31]2464;2465; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_u_1_1:2466; GFX942: ; %bb.0:2467; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2468; GFX942-NEXT: ;;#ASMSTART2469; GFX942-NEXT: ; def v[4:6]2470; GFX942-NEXT: ;;#ASMEND2471; GFX942-NEXT: v_mov_b32_e32 v3, 02472; GFX942-NEXT: v_mov_b32_e32 v4, v52473; GFX942-NEXT: ;;#ASMSTART2474; GFX942-NEXT: ; def v[0:2]2475; GFX942-NEXT: ;;#ASMEND2476; GFX942-NEXT: global_store_dwordx4 v3, v[2:5], s[0:1]2477; GFX942-NEXT: s_waitcnt vmcnt(0)2478; GFX942-NEXT: s_setpc_b64 s[30:31]2479 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2480 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2481 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 poison, i32 1, i32 1>2482 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162483 ret void2484}2485 2486define void @v_shuffle_v4p3_v3p3__5_0_1_1(ptr addrspace(1) inreg %ptr) {2487; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_0_1_1:2488; GFX900: ; %bb.0:2489; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2490; GFX900-NEXT: ;;#ASMSTART2491; GFX900-NEXT: ; def v[3:5]2492; GFX900-NEXT: ;;#ASMEND2493; GFX900-NEXT: v_mov_b32_e32 v6, 02494; GFX900-NEXT: v_mov_b32_e32 v5, v42495; GFX900-NEXT: ;;#ASMSTART2496; GFX900-NEXT: ; def v[0:2]2497; GFX900-NEXT: ;;#ASMEND2498; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]2499; GFX900-NEXT: s_waitcnt vmcnt(0)2500; GFX900-NEXT: s_setpc_b64 s[30:31]2501;2502; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_0_1_1:2503; GFX90A: ; %bb.0:2504; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2505; GFX90A-NEXT: ;;#ASMSTART2506; GFX90A-NEXT: ; def v[4:6]2507; GFX90A-NEXT: ;;#ASMEND2508; GFX90A-NEXT: v_mov_b32_e32 v7, 02509; GFX90A-NEXT: v_mov_b32_e32 v3, v42510; GFX90A-NEXT: v_mov_b32_e32 v4, v52511; GFX90A-NEXT: ;;#ASMSTART2512; GFX90A-NEXT: ; def v[0:2]2513; GFX90A-NEXT: ;;#ASMEND2514; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]2515; GFX90A-NEXT: s_waitcnt vmcnt(0)2516; GFX90A-NEXT: s_setpc_b64 s[30:31]2517;2518; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_0_1_1:2519; GFX942: ; %bb.0:2520; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2521; GFX942-NEXT: ;;#ASMSTART2522; GFX942-NEXT: ; def v[4:6]2523; GFX942-NEXT: ;;#ASMEND2524; GFX942-NEXT: v_mov_b32_e32 v7, 02525; GFX942-NEXT: v_mov_b32_e32 v3, v42526; GFX942-NEXT: v_mov_b32_e32 v4, v52527; GFX942-NEXT: ;;#ASMSTART2528; GFX942-NEXT: ; def v[0:2]2529; GFX942-NEXT: ;;#ASMEND2530; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]2531; GFX942-NEXT: s_waitcnt vmcnt(0)2532; GFX942-NEXT: s_setpc_b64 s[30:31]2533 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2534 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2535 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 0, i32 1, i32 1>2536 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162537 ret void2538}2539 2540define void @v_shuffle_v4p3_v3p3__5_2_1_1(ptr addrspace(1) inreg %ptr) {2541; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_2_1_1:2542; GFX900: ; %bb.0:2543; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2544; GFX900-NEXT: ;;#ASMSTART2545; GFX900-NEXT: ; def v[3:5]2546; GFX900-NEXT: ;;#ASMEND2547; GFX900-NEXT: v_mov_b32_e32 v6, 02548; GFX900-NEXT: v_mov_b32_e32 v3, v52549; GFX900-NEXT: v_mov_b32_e32 v5, v42550; GFX900-NEXT: ;;#ASMSTART2551; GFX900-NEXT: ; def v[0:2]2552; GFX900-NEXT: ;;#ASMEND2553; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]2554; GFX900-NEXT: s_waitcnt vmcnt(0)2555; GFX900-NEXT: s_setpc_b64 s[30:31]2556;2557; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_2_1_1:2558; GFX90A: ; %bb.0:2559; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2560; GFX90A-NEXT: ;;#ASMSTART2561; GFX90A-NEXT: ; def v[4:6]2562; GFX90A-NEXT: ;;#ASMEND2563; GFX90A-NEXT: v_mov_b32_e32 v7, 02564; GFX90A-NEXT: v_mov_b32_e32 v3, v62565; GFX90A-NEXT: v_mov_b32_e32 v4, v52566; GFX90A-NEXT: ;;#ASMSTART2567; GFX90A-NEXT: ; def v[0:2]2568; GFX90A-NEXT: ;;#ASMEND2569; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]2570; GFX90A-NEXT: s_waitcnt vmcnt(0)2571; GFX90A-NEXT: s_setpc_b64 s[30:31]2572;2573; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_2_1_1:2574; GFX942: ; %bb.0:2575; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2576; GFX942-NEXT: ;;#ASMSTART2577; GFX942-NEXT: ; def v[4:6]2578; GFX942-NEXT: ;;#ASMEND2579; GFX942-NEXT: v_mov_b32_e32 v7, 02580; GFX942-NEXT: v_mov_b32_e32 v3, v62581; GFX942-NEXT: v_mov_b32_e32 v4, v52582; GFX942-NEXT: ;;#ASMSTART2583; GFX942-NEXT: ; def v[0:2]2584; GFX942-NEXT: ;;#ASMEND2585; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]2586; GFX942-NEXT: s_waitcnt vmcnt(0)2587; GFX942-NEXT: s_setpc_b64 s[30:31]2588 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2589 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2590 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 2, i32 1, i32 1>2591 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162592 ret void2593}2594 2595define void @v_shuffle_v4p3_v3p3__5_3_1_1(ptr addrspace(1) inreg %ptr) {2596; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_3_1_1:2597; GFX900: ; %bb.0:2598; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2599; GFX900-NEXT: ;;#ASMSTART2600; GFX900-NEXT: ; def v[3:5]2601; GFX900-NEXT: ;;#ASMEND2602; GFX900-NEXT: v_mov_b32_e32 v6, 02603; GFX900-NEXT: ;;#ASMSTART2604; GFX900-NEXT: ; def v[0:2]2605; GFX900-NEXT: ;;#ASMEND2606; GFX900-NEXT: v_mov_b32_e32 v3, v02607; GFX900-NEXT: v_mov_b32_e32 v5, v42608; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]2609; GFX900-NEXT: s_waitcnt vmcnt(0)2610; GFX900-NEXT: s_setpc_b64 s[30:31]2611;2612; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_3_1_1:2613; GFX90A: ; %bb.0:2614; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2615; GFX90A-NEXT: ;;#ASMSTART2616; GFX90A-NEXT: ; def v[4:6]2617; GFX90A-NEXT: ;;#ASMEND2618; GFX90A-NEXT: v_mov_b32_e32 v7, 02619; GFX90A-NEXT: ;;#ASMSTART2620; GFX90A-NEXT: ; def v[0:2]2621; GFX90A-NEXT: ;;#ASMEND2622; GFX90A-NEXT: v_mov_b32_e32 v3, v02623; GFX90A-NEXT: v_mov_b32_e32 v4, v52624; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]2625; GFX90A-NEXT: s_waitcnt vmcnt(0)2626; GFX90A-NEXT: s_setpc_b64 s[30:31]2627;2628; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_3_1_1:2629; GFX942: ; %bb.0:2630; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2631; GFX942-NEXT: ;;#ASMSTART2632; GFX942-NEXT: ; def v[4:6]2633; GFX942-NEXT: ;;#ASMEND2634; GFX942-NEXT: v_mov_b32_e32 v7, 02635; GFX942-NEXT: ;;#ASMSTART2636; GFX942-NEXT: ; def v[0:2]2637; GFX942-NEXT: ;;#ASMEND2638; GFX942-NEXT: v_mov_b32_e32 v4, v52639; GFX942-NEXT: v_mov_b32_e32 v3, v02640; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]2641; GFX942-NEXT: s_waitcnt vmcnt(0)2642; GFX942-NEXT: s_setpc_b64 s[30:31]2643 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2644 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2645 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 3, i32 1, i32 1>2646 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162647 ret void2648}2649 2650define void @v_shuffle_v4p3_v3p3__5_4_1_1(ptr addrspace(1) inreg %ptr) {2651; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_4_1_1:2652; GFX900: ; %bb.0:2653; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2654; GFX900-NEXT: ;;#ASMSTART2655; GFX900-NEXT: ; def v[3:5]2656; GFX900-NEXT: ;;#ASMEND2657; GFX900-NEXT: v_mov_b32_e32 v6, 02658; GFX900-NEXT: ;;#ASMSTART2659; GFX900-NEXT: ; def v[0:2]2660; GFX900-NEXT: ;;#ASMEND2661; GFX900-NEXT: v_mov_b32_e32 v3, v12662; GFX900-NEXT: v_mov_b32_e32 v5, v42663; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]2664; GFX900-NEXT: s_waitcnt vmcnt(0)2665; GFX900-NEXT: s_setpc_b64 s[30:31]2666;2667; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_4_1_1:2668; GFX90A: ; %bb.0:2669; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2670; GFX90A-NEXT: ;;#ASMSTART2671; GFX90A-NEXT: ; def v[4:6]2672; GFX90A-NEXT: ;;#ASMEND2673; GFX90A-NEXT: v_mov_b32_e32 v7, 02674; GFX90A-NEXT: ;;#ASMSTART2675; GFX90A-NEXT: ; def v[0:2]2676; GFX90A-NEXT: ;;#ASMEND2677; GFX90A-NEXT: v_mov_b32_e32 v3, v12678; GFX90A-NEXT: v_mov_b32_e32 v4, v52679; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]2680; GFX90A-NEXT: s_waitcnt vmcnt(0)2681; GFX90A-NEXT: s_setpc_b64 s[30:31]2682;2683; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_4_1_1:2684; GFX942: ; %bb.0:2685; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2686; GFX942-NEXT: ;;#ASMSTART2687; GFX942-NEXT: ; def v[4:6]2688; GFX942-NEXT: ;;#ASMEND2689; GFX942-NEXT: v_mov_b32_e32 v7, 02690; GFX942-NEXT: ;;#ASMSTART2691; GFX942-NEXT: ; def v[0:2]2692; GFX942-NEXT: ;;#ASMEND2693; GFX942-NEXT: v_mov_b32_e32 v4, v52694; GFX942-NEXT: v_mov_b32_e32 v3, v12695; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]2696; GFX942-NEXT: s_waitcnt vmcnt(0)2697; GFX942-NEXT: s_setpc_b64 s[30:31]2698 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2699 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2700 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 4, i32 1, i32 1>2701 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162702 ret void2703}2704 2705define void @v_shuffle_v4p3_v3p3__5_5_1_1(ptr addrspace(1) inreg %ptr) {2706; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_1_1:2707; GFX900: ; %bb.0:2708; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2709; GFX900-NEXT: ;;#ASMSTART2710; GFX900-NEXT: ; def v[3:5]2711; GFX900-NEXT: ;;#ASMEND2712; GFX900-NEXT: v_mov_b32_e32 v6, 02713; GFX900-NEXT: ;;#ASMSTART2714; GFX900-NEXT: ; def v[0:2]2715; GFX900-NEXT: ;;#ASMEND2716; GFX900-NEXT: v_mov_b32_e32 v3, v22717; GFX900-NEXT: v_mov_b32_e32 v5, v42718; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]2719; GFX900-NEXT: s_waitcnt vmcnt(0)2720; GFX900-NEXT: s_setpc_b64 s[30:31]2721;2722; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_1_1:2723; GFX90A: ; %bb.0:2724; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2725; GFX90A-NEXT: ;;#ASMSTART2726; GFX90A-NEXT: ; def v[4:6]2727; GFX90A-NEXT: ;;#ASMEND2728; GFX90A-NEXT: v_mov_b32_e32 v7, 02729; GFX90A-NEXT: ;;#ASMSTART2730; GFX90A-NEXT: ; def v[0:2]2731; GFX90A-NEXT: ;;#ASMEND2732; GFX90A-NEXT: v_mov_b32_e32 v3, v22733; GFX90A-NEXT: v_mov_b32_e32 v4, v52734; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]2735; GFX90A-NEXT: s_waitcnt vmcnt(0)2736; GFX90A-NEXT: s_setpc_b64 s[30:31]2737;2738; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_1_1:2739; GFX942: ; %bb.0:2740; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2741; GFX942-NEXT: ;;#ASMSTART2742; GFX942-NEXT: ; def v[4:6]2743; GFX942-NEXT: ;;#ASMEND2744; GFX942-NEXT: v_mov_b32_e32 v7, 02745; GFX942-NEXT: ;;#ASMSTART2746; GFX942-NEXT: ; def v[0:2]2747; GFX942-NEXT: ;;#ASMEND2748; GFX942-NEXT: v_mov_b32_e32 v4, v52749; GFX942-NEXT: v_mov_b32_e32 v3, v22750; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]2751; GFX942-NEXT: s_waitcnt vmcnt(0)2752; GFX942-NEXT: s_setpc_b64 s[30:31]2753 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2754 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2755 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 1>2756 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162757 ret void2758}2759 2760define void @v_shuffle_v4p3_v3p3__5_5_u_1(ptr addrspace(1) inreg %ptr) {2761; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_u_1:2762; GFX900: ; %bb.0:2763; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2764; GFX900-NEXT: v_mov_b32_e32 v7, 02765; GFX900-NEXT: ;;#ASMSTART2766; GFX900-NEXT: ; def v[0:2]2767; GFX900-NEXT: ;;#ASMEND2768; GFX900-NEXT: v_mov_b32_e32 v3, v22769; GFX900-NEXT: ;;#ASMSTART2770; GFX900-NEXT: ; def v[4:6]2771; GFX900-NEXT: ;;#ASMEND2772; GFX900-NEXT: global_store_dwordx4 v7, v[2:5], 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_v4p3_v3p3__5_5_u_1:2777; GFX90A: ; %bb.0:2778; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2779; GFX90A-NEXT: v_mov_b32_e32 v7, 02780; GFX90A-NEXT: ;;#ASMSTART2781; GFX90A-NEXT: ; def v[0:2]2782; GFX90A-NEXT: ;;#ASMEND2783; GFX90A-NEXT: v_mov_b32_e32 v3, v22784; GFX90A-NEXT: ;;#ASMSTART2785; GFX90A-NEXT: ; def v[4:6]2786; GFX90A-NEXT: ;;#ASMEND2787; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]2788; GFX90A-NEXT: s_waitcnt vmcnt(0)2789; GFX90A-NEXT: s_setpc_b64 s[30:31]2790;2791; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_u_1:2792; GFX942: ; %bb.0:2793; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2794; GFX942-NEXT: v_mov_b32_e32 v7, 02795; GFX942-NEXT: ;;#ASMSTART2796; GFX942-NEXT: ; def v[0:2]2797; GFX942-NEXT: ;;#ASMEND2798; GFX942-NEXT: ;;#ASMSTART2799; GFX942-NEXT: ; def v[4:6]2800; GFX942-NEXT: ;;#ASMEND2801; GFX942-NEXT: s_nop 02802; GFX942-NEXT: v_mov_b32_e32 v3, v22803; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]2804; GFX942-NEXT: s_waitcnt vmcnt(0)2805; GFX942-NEXT: s_setpc_b64 s[30:31]2806 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2807 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2808 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 1>2809 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162810 ret void2811}2812 2813define void @v_shuffle_v4p3_v3p3__5_5_0_1(ptr addrspace(1) inreg %ptr) {2814; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_0_1:2815; GFX900: ; %bb.0:2816; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2817; GFX900-NEXT: v_mov_b32_e32 v7, 02818; GFX900-NEXT: ;;#ASMSTART2819; GFX900-NEXT: ; def v[0:2]2820; GFX900-NEXT: ;;#ASMEND2821; GFX900-NEXT: v_mov_b32_e32 v3, v22822; GFX900-NEXT: ;;#ASMSTART2823; GFX900-NEXT: ; def v[4:6]2824; GFX900-NEXT: ;;#ASMEND2825; GFX900-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]2826; GFX900-NEXT: s_waitcnt vmcnt(0)2827; GFX900-NEXT: s_setpc_b64 s[30:31]2828;2829; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_0_1:2830; GFX90A: ; %bb.0:2831; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2832; GFX90A-NEXT: v_mov_b32_e32 v7, 02833; GFX90A-NEXT: ;;#ASMSTART2834; GFX90A-NEXT: ; def v[0:2]2835; GFX90A-NEXT: ;;#ASMEND2836; GFX90A-NEXT: v_mov_b32_e32 v3, v22837; GFX90A-NEXT: ;;#ASMSTART2838; GFX90A-NEXT: ; def v[4:6]2839; GFX90A-NEXT: ;;#ASMEND2840; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]2841; GFX90A-NEXT: s_waitcnt vmcnt(0)2842; GFX90A-NEXT: s_setpc_b64 s[30:31]2843;2844; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_0_1:2845; GFX942: ; %bb.0:2846; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2847; GFX942-NEXT: v_mov_b32_e32 v7, 02848; GFX942-NEXT: ;;#ASMSTART2849; GFX942-NEXT: ; def v[0:2]2850; GFX942-NEXT: ;;#ASMEND2851; GFX942-NEXT: ;;#ASMSTART2852; GFX942-NEXT: ; def v[4:6]2853; GFX942-NEXT: ;;#ASMEND2854; GFX942-NEXT: s_nop 02855; GFX942-NEXT: v_mov_b32_e32 v3, v22856; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]2857; GFX942-NEXT: s_waitcnt vmcnt(0)2858; GFX942-NEXT: s_setpc_b64 s[30:31]2859 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2860 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2861 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 1>2862 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162863 ret void2864}2865 2866define void @v_shuffle_v4p3_v3p3__5_5_2_1(ptr addrspace(1) inreg %ptr) {2867; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_2_1:2868; GFX900: ; %bb.0:2869; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2870; GFX900-NEXT: ;;#ASMSTART2871; GFX900-NEXT: ; def v[4:6]2872; GFX900-NEXT: ;;#ASMEND2873; GFX900-NEXT: v_mov_b32_e32 v7, 02874; GFX900-NEXT: ;;#ASMSTART2875; GFX900-NEXT: ; def v[0:2]2876; GFX900-NEXT: ;;#ASMEND2877; GFX900-NEXT: v_mov_b32_e32 v3, v22878; GFX900-NEXT: v_mov_b32_e32 v4, v62879; GFX900-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]2880; GFX900-NEXT: s_waitcnt vmcnt(0)2881; GFX900-NEXT: s_setpc_b64 s[30:31]2882;2883; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_2_1:2884; GFX90A: ; %bb.0:2885; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2886; GFX90A-NEXT: ;;#ASMSTART2887; GFX90A-NEXT: ; def v[4:6]2888; GFX90A-NEXT: ;;#ASMEND2889; GFX90A-NEXT: v_mov_b32_e32 v7, 02890; GFX90A-NEXT: ;;#ASMSTART2891; GFX90A-NEXT: ; def v[0:2]2892; GFX90A-NEXT: ;;#ASMEND2893; GFX90A-NEXT: v_mov_b32_e32 v3, v22894; GFX90A-NEXT: v_mov_b32_e32 v4, v62895; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]2896; GFX90A-NEXT: s_waitcnt vmcnt(0)2897; GFX90A-NEXT: s_setpc_b64 s[30:31]2898;2899; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_2_1:2900; GFX942: ; %bb.0:2901; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2902; GFX942-NEXT: ;;#ASMSTART2903; GFX942-NEXT: ; def v[4:6]2904; GFX942-NEXT: ;;#ASMEND2905; GFX942-NEXT: v_mov_b32_e32 v7, 02906; GFX942-NEXT: ;;#ASMSTART2907; GFX942-NEXT: ; def v[0:2]2908; GFX942-NEXT: ;;#ASMEND2909; GFX942-NEXT: v_mov_b32_e32 v4, v62910; GFX942-NEXT: v_mov_b32_e32 v3, v22911; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]2912; GFX942-NEXT: s_waitcnt vmcnt(0)2913; GFX942-NEXT: s_setpc_b64 s[30:31]2914 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2915 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2916 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 1>2917 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162918 ret void2919}2920 2921define void @v_shuffle_v4p3_v3p3__5_5_3_1(ptr addrspace(1) inreg %ptr) {2922; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_3_1:2923; GFX900: ; %bb.0:2924; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2925; GFX900-NEXT: ;;#ASMSTART2926; GFX900-NEXT: ; def v[4:6]2927; GFX900-NEXT: ;;#ASMEND2928; GFX900-NEXT: v_mov_b32_e32 v7, 02929; GFX900-NEXT: ;;#ASMSTART2930; GFX900-NEXT: ; def v[0:2]2931; GFX900-NEXT: ;;#ASMEND2932; GFX900-NEXT: v_mov_b32_e32 v3, v22933; GFX900-NEXT: v_mov_b32_e32 v4, v02934; GFX900-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]2935; GFX900-NEXT: s_waitcnt vmcnt(0)2936; GFX900-NEXT: s_setpc_b64 s[30:31]2937;2938; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_3_1:2939; GFX90A: ; %bb.0:2940; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2941; GFX90A-NEXT: ;;#ASMSTART2942; GFX90A-NEXT: ; def v[4:6]2943; GFX90A-NEXT: ;;#ASMEND2944; GFX90A-NEXT: v_mov_b32_e32 v7, 02945; GFX90A-NEXT: ;;#ASMSTART2946; GFX90A-NEXT: ; def v[0:2]2947; GFX90A-NEXT: ;;#ASMEND2948; GFX90A-NEXT: v_mov_b32_e32 v3, v22949; GFX90A-NEXT: v_mov_b32_e32 v4, v02950; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]2951; GFX90A-NEXT: s_waitcnt vmcnt(0)2952; GFX90A-NEXT: s_setpc_b64 s[30:31]2953;2954; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_3_1:2955; GFX942: ; %bb.0:2956; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2957; GFX942-NEXT: ;;#ASMSTART2958; GFX942-NEXT: ; def v[4:6]2959; GFX942-NEXT: ;;#ASMEND2960; GFX942-NEXT: v_mov_b32_e32 v7, 02961; GFX942-NEXT: ;;#ASMSTART2962; GFX942-NEXT: ; def v[0:2]2963; GFX942-NEXT: ;;#ASMEND2964; GFX942-NEXT: s_nop 02965; GFX942-NEXT: v_mov_b32_e32 v3, v22966; GFX942-NEXT: v_mov_b32_e32 v4, v02967; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]2968; GFX942-NEXT: s_waitcnt vmcnt(0)2969; GFX942-NEXT: s_setpc_b64 s[30:31]2970 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2971 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()2972 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 1>2973 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 162974 ret void2975}2976 2977define void @v_shuffle_v4p3_v3p3__5_5_4_1(ptr addrspace(1) inreg %ptr) {2978; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_4_1:2979; GFX900: ; %bb.0:2980; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2981; GFX900-NEXT: ;;#ASMSTART2982; GFX900-NEXT: ; def v[4:6]2983; GFX900-NEXT: ;;#ASMEND2984; GFX900-NEXT: v_mov_b32_e32 v7, 02985; GFX900-NEXT: ;;#ASMSTART2986; GFX900-NEXT: ; def v[0:2]2987; GFX900-NEXT: ;;#ASMEND2988; GFX900-NEXT: v_mov_b32_e32 v3, v22989; GFX900-NEXT: v_mov_b32_e32 v4, v12990; GFX900-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]2991; GFX900-NEXT: s_waitcnt vmcnt(0)2992; GFX900-NEXT: s_setpc_b64 s[30:31]2993;2994; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_4_1:2995; GFX90A: ; %bb.0:2996; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2997; GFX90A-NEXT: ;;#ASMSTART2998; GFX90A-NEXT: ; def v[4:6]2999; GFX90A-NEXT: ;;#ASMEND3000; GFX90A-NEXT: v_mov_b32_e32 v7, 03001; GFX90A-NEXT: ;;#ASMSTART3002; GFX90A-NEXT: ; def v[0:2]3003; GFX90A-NEXT: ;;#ASMEND3004; GFX90A-NEXT: v_mov_b32_e32 v3, v23005; GFX90A-NEXT: v_mov_b32_e32 v4, v13006; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]3007; GFX90A-NEXT: s_waitcnt vmcnt(0)3008; GFX90A-NEXT: s_setpc_b64 s[30:31]3009;3010; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_4_1:3011; GFX942: ; %bb.0:3012; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3013; GFX942-NEXT: ;;#ASMSTART3014; GFX942-NEXT: ; def v[4:6]3015; GFX942-NEXT: ;;#ASMEND3016; GFX942-NEXT: v_mov_b32_e32 v7, 03017; GFX942-NEXT: ;;#ASMSTART3018; GFX942-NEXT: ; def v[0:2]3019; GFX942-NEXT: ;;#ASMEND3020; GFX942-NEXT: s_nop 03021; GFX942-NEXT: v_mov_b32_e32 v3, v23022; GFX942-NEXT: v_mov_b32_e32 v4, v13023; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]3024; GFX942-NEXT: s_waitcnt vmcnt(0)3025; GFX942-NEXT: s_setpc_b64 s[30:31]3026 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3027 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3028 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 1>3029 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163030 ret void3031}3032 3033define void @v_shuffle_v4p3_v3p3__u_2_2_2(ptr addrspace(1) inreg %ptr) {3034; GFX900-LABEL: v_shuffle_v4p3_v3p3__u_2_2_2:3035; GFX900: ; %bb.0:3036; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3037; GFX900-NEXT: v_mov_b32_e32 v5, 03038; GFX900-NEXT: ;;#ASMSTART3039; GFX900-NEXT: ; def v[0:2]3040; GFX900-NEXT: ;;#ASMEND3041; GFX900-NEXT: v_mov_b32_e32 v3, v23042; GFX900-NEXT: v_mov_b32_e32 v4, v23043; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]3044; GFX900-NEXT: s_waitcnt vmcnt(0)3045; GFX900-NEXT: s_setpc_b64 s[30:31]3046;3047; GFX90A-LABEL: v_shuffle_v4p3_v3p3__u_2_2_2:3048; GFX90A: ; %bb.0:3049; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3050; GFX90A-NEXT: ;;#ASMSTART3051; GFX90A-NEXT: ; def v[0:2]3052; GFX90A-NEXT: ;;#ASMEND3053; GFX90A-NEXT: v_mov_b32_e32 v4, 03054; GFX90A-NEXT: v_mov_b32_e32 v1, v23055; GFX90A-NEXT: v_mov_b32_e32 v3, v23056; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]3057; GFX90A-NEXT: s_waitcnt vmcnt(0)3058; GFX90A-NEXT: s_setpc_b64 s[30:31]3059;3060; GFX942-LABEL: v_shuffle_v4p3_v3p3__u_2_2_2:3061; GFX942: ; %bb.0:3062; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3063; GFX942-NEXT: ;;#ASMSTART3064; GFX942-NEXT: ; def v[0:2]3065; GFX942-NEXT: ;;#ASMEND3066; GFX942-NEXT: v_mov_b32_e32 v4, 03067; GFX942-NEXT: v_mov_b32_e32 v1, v23068; GFX942-NEXT: v_mov_b32_e32 v3, v23069; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]3070; GFX942-NEXT: s_waitcnt vmcnt(0)3071; GFX942-NEXT: s_setpc_b64 s[30:31]3072 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3073 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2>3074 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163075 ret void3076}3077 3078define void @v_shuffle_v4p3_v3p3__0_2_2_2(ptr addrspace(1) inreg %ptr) {3079; GFX900-LABEL: v_shuffle_v4p3_v3p3__0_2_2_2:3080; GFX900: ; %bb.0:3081; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3082; GFX900-NEXT: ;;#ASMSTART3083; GFX900-NEXT: ; def v[0:2]3084; GFX900-NEXT: ;;#ASMEND3085; GFX900-NEXT: v_mov_b32_e32 v4, 03086; GFX900-NEXT: v_mov_b32_e32 v1, v23087; GFX900-NEXT: v_mov_b32_e32 v3, v23088; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]3089; GFX900-NEXT: s_waitcnt vmcnt(0)3090; GFX900-NEXT: s_setpc_b64 s[30:31]3091;3092; GFX90A-LABEL: v_shuffle_v4p3_v3p3__0_2_2_2:3093; GFX90A: ; %bb.0:3094; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3095; GFX90A-NEXT: ;;#ASMSTART3096; GFX90A-NEXT: ; def v[0:2]3097; GFX90A-NEXT: ;;#ASMEND3098; GFX90A-NEXT: v_mov_b32_e32 v4, 03099; GFX90A-NEXT: v_mov_b32_e32 v1, v23100; GFX90A-NEXT: v_mov_b32_e32 v3, v23101; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]3102; GFX90A-NEXT: s_waitcnt vmcnt(0)3103; GFX90A-NEXT: s_setpc_b64 s[30:31]3104;3105; GFX942-LABEL: v_shuffle_v4p3_v3p3__0_2_2_2:3106; GFX942: ; %bb.0:3107; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3108; GFX942-NEXT: ;;#ASMSTART3109; GFX942-NEXT: ; def v[0:2]3110; GFX942-NEXT: ;;#ASMEND3111; GFX942-NEXT: v_mov_b32_e32 v4, 03112; GFX942-NEXT: v_mov_b32_e32 v1, v23113; GFX942-NEXT: v_mov_b32_e32 v3, v23114; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]3115; GFX942-NEXT: s_waitcnt vmcnt(0)3116; GFX942-NEXT: s_setpc_b64 s[30:31]3117 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3118 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2>3119 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163120 ret void3121}3122 3123define void @v_shuffle_v4p3_v3p3__1_2_2_2(ptr addrspace(1) inreg %ptr) {3124; GFX900-LABEL: v_shuffle_v4p3_v3p3__1_2_2_2:3125; GFX900: ; %bb.0:3126; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3127; GFX900-NEXT: v_mov_b32_e32 v5, 03128; GFX900-NEXT: ;;#ASMSTART3129; GFX900-NEXT: ; def v[0:2]3130; GFX900-NEXT: ;;#ASMEND3131; GFX900-NEXT: v_mov_b32_e32 v3, v23132; GFX900-NEXT: v_mov_b32_e32 v4, v23133; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]3134; GFX900-NEXT: s_waitcnt vmcnt(0)3135; GFX900-NEXT: s_setpc_b64 s[30:31]3136;3137; GFX90A-LABEL: v_shuffle_v4p3_v3p3__1_2_2_2:3138; GFX90A: ; %bb.0:3139; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3140; GFX90A-NEXT: ;;#ASMSTART3141; GFX90A-NEXT: ; def v[0:2]3142; GFX90A-NEXT: ;;#ASMEND3143; GFX90A-NEXT: v_mov_b32_e32 v4, 03144; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[2:3] op_sel:[1,0]3145; GFX90A-NEXT: v_mov_b32_e32 v3, v23146; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]3147; GFX90A-NEXT: s_waitcnt vmcnt(0)3148; GFX90A-NEXT: s_setpc_b64 s[30:31]3149;3150; GFX942-LABEL: v_shuffle_v4p3_v3p3__1_2_2_2:3151; GFX942: ; %bb.0:3152; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3153; GFX942-NEXT: ;;#ASMSTART3154; GFX942-NEXT: ; def v[0:2]3155; GFX942-NEXT: ;;#ASMEND3156; GFX942-NEXT: v_mov_b32_e32 v4, 03157; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[2:3] op_sel:[1,0]3158; GFX942-NEXT: v_mov_b32_e32 v3, v23159; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]3160; GFX942-NEXT: s_waitcnt vmcnt(0)3161; GFX942-NEXT: s_setpc_b64 s[30:31]3162 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3163 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2>3164 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163165 ret void3166}3167 3168define void @v_shuffle_v4p3_v3p3__2_2_2_2(ptr addrspace(1) inreg %ptr) {3169; GFX900-LABEL: v_shuffle_v4p3_v3p3__2_2_2_2:3170; GFX900: ; %bb.0:3171; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3172; GFX900-NEXT: v_mov_b32_e32 v6, 03173; GFX900-NEXT: ;;#ASMSTART3174; GFX900-NEXT: ; def v[0:2]3175; GFX900-NEXT: ;;#ASMEND3176; GFX900-NEXT: v_mov_b32_e32 v3, v23177; GFX900-NEXT: v_mov_b32_e32 v4, v23178; GFX900-NEXT: v_mov_b32_e32 v5, v23179; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]3180; GFX900-NEXT: s_waitcnt vmcnt(0)3181; GFX900-NEXT: s_setpc_b64 s[30:31]3182;3183; GFX90A-LABEL: v_shuffle_v4p3_v3p3__2_2_2_2:3184; GFX90A: ; %bb.0:3185; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3186; GFX90A-NEXT: v_mov_b32_e32 v6, 03187; GFX90A-NEXT: ;;#ASMSTART3188; GFX90A-NEXT: ; def v[0:2]3189; GFX90A-NEXT: ;;#ASMEND3190; GFX90A-NEXT: v_mov_b32_e32 v3, v23191; GFX90A-NEXT: v_mov_b32_e32 v4, v23192; GFX90A-NEXT: v_mov_b32_e32 v5, v23193; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]3194; GFX90A-NEXT: s_waitcnt vmcnt(0)3195; GFX90A-NEXT: s_setpc_b64 s[30:31]3196;3197; GFX942-LABEL: v_shuffle_v4p3_v3p3__2_2_2_2:3198; GFX942: ; %bb.0:3199; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3200; GFX942-NEXT: v_mov_b32_e32 v6, 03201; GFX942-NEXT: ;;#ASMSTART3202; GFX942-NEXT: ; def v[0:2]3203; GFX942-NEXT: ;;#ASMEND3204; GFX942-NEXT: s_nop 03205; GFX942-NEXT: v_mov_b32_e32 v3, v23206; GFX942-NEXT: v_mov_b32_e32 v4, v23207; GFX942-NEXT: v_mov_b32_e32 v5, v23208; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]3209; GFX942-NEXT: s_waitcnt vmcnt(0)3210; GFX942-NEXT: s_setpc_b64 s[30:31]3211 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3212 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2>3213 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163214 ret void3215}3216 3217define void @v_shuffle_v4p3_v3p3__3_2_2_2(ptr addrspace(1) inreg %ptr) {3218; GFX900-LABEL: v_shuffle_v4p3_v3p3__3_2_2_2:3219; GFX900: ; %bb.0:3220; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3221; GFX900-NEXT: v_mov_b32_e32 v5, 03222; GFX900-NEXT: ;;#ASMSTART3223; GFX900-NEXT: ; def v[0:2]3224; GFX900-NEXT: ;;#ASMEND3225; GFX900-NEXT: v_mov_b32_e32 v3, v23226; GFX900-NEXT: v_mov_b32_e32 v4, v23227; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]3228; GFX900-NEXT: s_waitcnt vmcnt(0)3229; GFX900-NEXT: s_setpc_b64 s[30:31]3230;3231; GFX90A-LABEL: v_shuffle_v4p3_v3p3__3_2_2_2:3232; GFX90A: ; %bb.0:3233; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3234; GFX90A-NEXT: ;;#ASMSTART3235; GFX90A-NEXT: ; def v[0:2]3236; GFX90A-NEXT: ;;#ASMEND3237; GFX90A-NEXT: v_mov_b32_e32 v4, 03238; GFX90A-NEXT: v_mov_b32_e32 v1, v23239; GFX90A-NEXT: v_mov_b32_e32 v3, v23240; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]3241; GFX90A-NEXT: s_waitcnt vmcnt(0)3242; GFX90A-NEXT: s_setpc_b64 s[30:31]3243;3244; GFX942-LABEL: v_shuffle_v4p3_v3p3__3_2_2_2:3245; GFX942: ; %bb.0:3246; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3247; GFX942-NEXT: ;;#ASMSTART3248; GFX942-NEXT: ; def v[0:2]3249; GFX942-NEXT: ;;#ASMEND3250; GFX942-NEXT: v_mov_b32_e32 v4, 03251; GFX942-NEXT: v_mov_b32_e32 v1, v23252; GFX942-NEXT: v_mov_b32_e32 v3, v23253; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]3254; GFX942-NEXT: s_waitcnt vmcnt(0)3255; GFX942-NEXT: s_setpc_b64 s[30:31]3256 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3257 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 3, i32 2, i32 2, i32 2>3258 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163259 ret void3260}3261 3262define void @v_shuffle_v4p3_v3p3__4_2_2_2(ptr addrspace(1) inreg %ptr) {3263; GFX900-LABEL: v_shuffle_v4p3_v3p3__4_2_2_2:3264; GFX900: ; %bb.0:3265; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3266; GFX900-NEXT: ;;#ASMSTART3267; GFX900-NEXT: ; def v[1:3]3268; GFX900-NEXT: ;;#ASMEND3269; GFX900-NEXT: ;;#ASMSTART3270; GFX900-NEXT: ; def v[0:2]3271; GFX900-NEXT: ;;#ASMEND3272; GFX900-NEXT: v_mov_b32_e32 v5, 03273; GFX900-NEXT: v_mov_b32_e32 v2, v33274; GFX900-NEXT: v_mov_b32_e32 v4, v33275; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]3276; GFX900-NEXT: s_waitcnt vmcnt(0)3277; GFX900-NEXT: s_setpc_b64 s[30:31]3278;3279; GFX90A-LABEL: v_shuffle_v4p3_v3p3__4_2_2_2:3280; GFX90A: ; %bb.0:3281; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3282; GFX90A-NEXT: ;;#ASMSTART3283; GFX90A-NEXT: ; def v[0:2]3284; GFX90A-NEXT: ;;#ASMEND3285; GFX90A-NEXT: v_mov_b32_e32 v7, 03286; GFX90A-NEXT: ;;#ASMSTART3287; GFX90A-NEXT: ; def v[4:6]3288; GFX90A-NEXT: ;;#ASMEND3289; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[2:3] op_sel:[1,0]3290; GFX90A-NEXT: v_mov_b32_e32 v3, v23291; GFX90A-NEXT: global_store_dwordx4 v7, v[0:3], s[16:17]3292; GFX90A-NEXT: s_waitcnt vmcnt(0)3293; GFX90A-NEXT: s_setpc_b64 s[30:31]3294;3295; GFX942-LABEL: v_shuffle_v4p3_v3p3__4_2_2_2:3296; GFX942: ; %bb.0:3297; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3298; GFX942-NEXT: ;;#ASMSTART3299; GFX942-NEXT: ; def v[0:2]3300; GFX942-NEXT: ;;#ASMEND3301; GFX942-NEXT: v_mov_b32_e32 v7, 03302; GFX942-NEXT: ;;#ASMSTART3303; GFX942-NEXT: ; def v[4:6]3304; GFX942-NEXT: ;;#ASMEND3305; GFX942-NEXT: s_nop 03306; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[4:5], v[2:3] op_sel:[1,0]3307; GFX942-NEXT: v_mov_b32_e32 v3, v23308; GFX942-NEXT: global_store_dwordx4 v7, v[0:3], s[0:1]3309; GFX942-NEXT: s_waitcnt vmcnt(0)3310; GFX942-NEXT: s_setpc_b64 s[30:31]3311 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3312 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3313 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 4, i32 2, i32 2, i32 2>3314 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163315 ret void3316}3317 3318define void @v_shuffle_v4p3_v3p3__5_2_2_2(ptr addrspace(1) inreg %ptr) {3319; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_2_2_2:3320; GFX900: ; %bb.0:3321; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3322; GFX900-NEXT: v_mov_b32_e32 v6, 03323; GFX900-NEXT: ;;#ASMSTART3324; GFX900-NEXT: ; def v[1:3]3325; GFX900-NEXT: ;;#ASMEND3326; GFX900-NEXT: v_mov_b32_e32 v4, v33327; GFX900-NEXT: v_mov_b32_e32 v5, v33328; GFX900-NEXT: ;;#ASMSTART3329; GFX900-NEXT: ; def v[0:2]3330; GFX900-NEXT: ;;#ASMEND3331; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]3332; GFX900-NEXT: s_waitcnt vmcnt(0)3333; GFX900-NEXT: s_setpc_b64 s[30:31]3334;3335; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_2_2_2:3336; GFX90A: ; %bb.0:3337; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3338; GFX90A-NEXT: ;;#ASMSTART3339; GFX90A-NEXT: ; def v[2:4]3340; GFX90A-NEXT: ;;#ASMEND3341; GFX90A-NEXT: v_mov_b32_e32 v6, 03342; GFX90A-NEXT: v_mov_b32_e32 v3, v43343; GFX90A-NEXT: v_mov_b32_e32 v5, v43344; GFX90A-NEXT: ;;#ASMSTART3345; GFX90A-NEXT: ; def v[0:2]3346; GFX90A-NEXT: ;;#ASMEND3347; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]3348; GFX90A-NEXT: s_waitcnt vmcnt(0)3349; GFX90A-NEXT: s_setpc_b64 s[30:31]3350;3351; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_2_2_2:3352; GFX942: ; %bb.0:3353; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3354; GFX942-NEXT: ;;#ASMSTART3355; GFX942-NEXT: ; def v[2:4]3356; GFX942-NEXT: ;;#ASMEND3357; GFX942-NEXT: v_mov_b32_e32 v6, 03358; GFX942-NEXT: v_mov_b32_e32 v3, v43359; GFX942-NEXT: v_mov_b32_e32 v5, v43360; GFX942-NEXT: ;;#ASMSTART3361; GFX942-NEXT: ; def v[0:2]3362; GFX942-NEXT: ;;#ASMEND3363; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]3364; GFX942-NEXT: s_waitcnt vmcnt(0)3365; GFX942-NEXT: s_setpc_b64 s[30:31]3366 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3367 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3368 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 2, i32 2, i32 2>3369 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163370 ret void3371}3372 3373define void @v_shuffle_v4p3_v3p3__5_u_2_2(ptr addrspace(1) inreg %ptr) {3374; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_u_2_2:3375; GFX900: ; %bb.0:3376; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3377; GFX900-NEXT: v_mov_b32_e32 v6, 03378; GFX900-NEXT: ;;#ASMSTART3379; GFX900-NEXT: ; def v[2:4]3380; GFX900-NEXT: ;;#ASMEND3381; GFX900-NEXT: v_mov_b32_e32 v5, v43382; GFX900-NEXT: ;;#ASMSTART3383; GFX900-NEXT: ; def v[0:2]3384; GFX900-NEXT: ;;#ASMEND3385; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]3386; GFX900-NEXT: s_waitcnt vmcnt(0)3387; GFX900-NEXT: s_setpc_b64 s[30:31]3388;3389; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_u_2_2:3390; GFX90A: ; %bb.0:3391; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3392; GFX90A-NEXT: v_mov_b32_e32 v6, 03393; GFX90A-NEXT: ;;#ASMSTART3394; GFX90A-NEXT: ; def v[2:4]3395; GFX90A-NEXT: ;;#ASMEND3396; GFX90A-NEXT: v_mov_b32_e32 v5, v43397; GFX90A-NEXT: ;;#ASMSTART3398; GFX90A-NEXT: ; def v[0:2]3399; GFX90A-NEXT: ;;#ASMEND3400; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]3401; GFX90A-NEXT: s_waitcnt vmcnt(0)3402; GFX90A-NEXT: s_setpc_b64 s[30:31]3403;3404; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_u_2_2:3405; GFX942: ; %bb.0:3406; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3407; GFX942-NEXT: v_mov_b32_e32 v6, 03408; GFX942-NEXT: ;;#ASMSTART3409; GFX942-NEXT: ; def v[2:4]3410; GFX942-NEXT: ;;#ASMEND3411; GFX942-NEXT: s_nop 03412; GFX942-NEXT: v_mov_b32_e32 v5, v43413; GFX942-NEXT: ;;#ASMSTART3414; GFX942-NEXT: ; def v[0:2]3415; GFX942-NEXT: ;;#ASMEND3416; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]3417; GFX942-NEXT: s_waitcnt vmcnt(0)3418; GFX942-NEXT: s_setpc_b64 s[30:31]3419 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3420 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3421 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 poison, i32 2, i32 2>3422 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163423 ret void3424}3425 3426define void @v_shuffle_v4p3_v3p3__5_0_2_2(ptr addrspace(1) inreg %ptr) {3427; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_0_2_2:3428; GFX900: ; %bb.0:3429; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3430; GFX900-NEXT: ;;#ASMSTART3431; GFX900-NEXT: ; def v[3:5]3432; GFX900-NEXT: ;;#ASMEND3433; GFX900-NEXT: v_mov_b32_e32 v6, 03434; GFX900-NEXT: v_mov_b32_e32 v4, v53435; GFX900-NEXT: ;;#ASMSTART3436; GFX900-NEXT: ; def v[0:2]3437; GFX900-NEXT: ;;#ASMEND3438; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]3439; GFX900-NEXT: s_waitcnt vmcnt(0)3440; GFX900-NEXT: s_setpc_b64 s[30:31]3441;3442; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_0_2_2:3443; GFX90A: ; %bb.0:3444; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3445; GFX90A-NEXT: ;;#ASMSTART3446; GFX90A-NEXT: ; def v[4:6]3447; GFX90A-NEXT: ;;#ASMEND3448; GFX90A-NEXT: v_mov_b32_e32 v7, 03449; GFX90A-NEXT: v_mov_b32_e32 v3, v43450; GFX90A-NEXT: v_mov_b32_e32 v4, v63451; GFX90A-NEXT: v_mov_b32_e32 v5, v63452; GFX90A-NEXT: ;;#ASMSTART3453; GFX90A-NEXT: ; def v[0:2]3454; GFX90A-NEXT: ;;#ASMEND3455; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]3456; GFX90A-NEXT: s_waitcnt vmcnt(0)3457; GFX90A-NEXT: s_setpc_b64 s[30:31]3458;3459; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_0_2_2:3460; GFX942: ; %bb.0:3461; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3462; GFX942-NEXT: ;;#ASMSTART3463; GFX942-NEXT: ; def v[4:6]3464; GFX942-NEXT: ;;#ASMEND3465; GFX942-NEXT: v_mov_b32_e32 v7, 03466; GFX942-NEXT: v_mov_b32_e32 v3, v43467; GFX942-NEXT: v_mov_b32_e32 v4, v63468; GFX942-NEXT: v_mov_b32_e32 v5, v63469; GFX942-NEXT: ;;#ASMSTART3470; GFX942-NEXT: ; def v[0:2]3471; GFX942-NEXT: ;;#ASMEND3472; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]3473; GFX942-NEXT: s_waitcnt vmcnt(0)3474; GFX942-NEXT: s_setpc_b64 s[30:31]3475 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3476 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3477 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 0, i32 2, i32 2>3478 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163479 ret void3480}3481 3482define void @v_shuffle_v4p3_v3p3__5_1_2_2(ptr addrspace(1) inreg %ptr) {3483; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_1_2_2:3484; GFX900: ; %bb.0:3485; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3486; GFX900-NEXT: v_mov_b32_e32 v6, 03487; GFX900-NEXT: ;;#ASMSTART3488; GFX900-NEXT: ; def v[2:4]3489; GFX900-NEXT: ;;#ASMEND3490; GFX900-NEXT: v_mov_b32_e32 v5, v43491; GFX900-NEXT: ;;#ASMSTART3492; GFX900-NEXT: ; def v[0:2]3493; GFX900-NEXT: ;;#ASMEND3494; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]3495; GFX900-NEXT: s_waitcnt vmcnt(0)3496; GFX900-NEXT: s_setpc_b64 s[30:31]3497;3498; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_1_2_2:3499; GFX90A: ; %bb.0:3500; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3501; GFX90A-NEXT: v_mov_b32_e32 v6, 03502; GFX90A-NEXT: ;;#ASMSTART3503; GFX90A-NEXT: ; def v[2:4]3504; GFX90A-NEXT: ;;#ASMEND3505; GFX90A-NEXT: v_mov_b32_e32 v5, v43506; GFX90A-NEXT: ;;#ASMSTART3507; GFX90A-NEXT: ; def v[0:2]3508; GFX90A-NEXT: ;;#ASMEND3509; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]3510; GFX90A-NEXT: s_waitcnt vmcnt(0)3511; GFX90A-NEXT: s_setpc_b64 s[30:31]3512;3513; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_1_2_2:3514; GFX942: ; %bb.0:3515; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3516; GFX942-NEXT: v_mov_b32_e32 v6, 03517; GFX942-NEXT: ;;#ASMSTART3518; GFX942-NEXT: ; def v[2:4]3519; GFX942-NEXT: ;;#ASMEND3520; GFX942-NEXT: s_nop 03521; GFX942-NEXT: v_mov_b32_e32 v5, v43522; GFX942-NEXT: ;;#ASMSTART3523; GFX942-NEXT: ; def v[0:2]3524; GFX942-NEXT: ;;#ASMEND3525; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]3526; GFX942-NEXT: s_waitcnt vmcnt(0)3527; GFX942-NEXT: s_setpc_b64 s[30:31]3528 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3529 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3530 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 1, i32 2, i32 2>3531 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163532 ret void3533}3534 3535define void @v_shuffle_v4p3_v3p3__5_3_2_2(ptr addrspace(1) inreg %ptr) {3536; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_3_2_2:3537; GFX900: ; %bb.0:3538; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3539; GFX900-NEXT: ;;#ASMSTART3540; GFX900-NEXT: ; def v[2:4]3541; GFX900-NEXT: ;;#ASMEND3542; GFX900-NEXT: v_mov_b32_e32 v6, 03543; GFX900-NEXT: ;;#ASMSTART3544; GFX900-NEXT: ; def v[0:2]3545; GFX900-NEXT: ;;#ASMEND3546; GFX900-NEXT: v_mov_b32_e32 v3, v03547; GFX900-NEXT: v_mov_b32_e32 v5, v43548; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]3549; GFX900-NEXT: s_waitcnt vmcnt(0)3550; GFX900-NEXT: s_setpc_b64 s[30:31]3551;3552; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_3_2_2:3553; GFX90A: ; %bb.0:3554; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3555; GFX90A-NEXT: ;;#ASMSTART3556; GFX90A-NEXT: ; def v[2:4]3557; GFX90A-NEXT: ;;#ASMEND3558; GFX90A-NEXT: v_mov_b32_e32 v6, 03559; GFX90A-NEXT: ;;#ASMSTART3560; GFX90A-NEXT: ; def v[0:2]3561; GFX90A-NEXT: ;;#ASMEND3562; GFX90A-NEXT: v_mov_b32_e32 v3, v03563; GFX90A-NEXT: v_mov_b32_e32 v5, v43564; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]3565; GFX90A-NEXT: s_waitcnt vmcnt(0)3566; GFX90A-NEXT: s_setpc_b64 s[30:31]3567;3568; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_3_2_2:3569; GFX942: ; %bb.0:3570; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3571; GFX942-NEXT: ;;#ASMSTART3572; GFX942-NEXT: ; def v[2:4]3573; GFX942-NEXT: ;;#ASMEND3574; GFX942-NEXT: v_mov_b32_e32 v6, 03575; GFX942-NEXT: ;;#ASMSTART3576; GFX942-NEXT: ; def v[0:2]3577; GFX942-NEXT: ;;#ASMEND3578; GFX942-NEXT: v_mov_b32_e32 v5, v43579; GFX942-NEXT: v_mov_b32_e32 v3, v03580; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]3581; GFX942-NEXT: s_waitcnt vmcnt(0)3582; GFX942-NEXT: s_setpc_b64 s[30:31]3583 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3584 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3585 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 3, i32 2, i32 2>3586 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163587 ret void3588}3589 3590define void @v_shuffle_v4p3_v3p3__5_4_2_2(ptr addrspace(1) inreg %ptr) {3591; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_4_2_2:3592; GFX900: ; %bb.0:3593; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3594; GFX900-NEXT: ;;#ASMSTART3595; GFX900-NEXT: ; def v[2:4]3596; GFX900-NEXT: ;;#ASMEND3597; GFX900-NEXT: v_mov_b32_e32 v6, 03598; GFX900-NEXT: ;;#ASMSTART3599; GFX900-NEXT: ; def v[0:2]3600; GFX900-NEXT: ;;#ASMEND3601; GFX900-NEXT: v_mov_b32_e32 v3, v13602; GFX900-NEXT: v_mov_b32_e32 v5, v43603; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]3604; GFX900-NEXT: s_waitcnt vmcnt(0)3605; GFX900-NEXT: s_setpc_b64 s[30:31]3606;3607; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_4_2_2:3608; GFX90A: ; %bb.0:3609; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3610; GFX90A-NEXT: ;;#ASMSTART3611; GFX90A-NEXT: ; def v[2:4]3612; GFX90A-NEXT: ;;#ASMEND3613; GFX90A-NEXT: v_mov_b32_e32 v6, 03614; GFX90A-NEXT: ;;#ASMSTART3615; GFX90A-NEXT: ; def v[0:2]3616; GFX90A-NEXT: ;;#ASMEND3617; GFX90A-NEXT: v_mov_b32_e32 v3, v13618; GFX90A-NEXT: v_mov_b32_e32 v5, v43619; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]3620; GFX90A-NEXT: s_waitcnt vmcnt(0)3621; GFX90A-NEXT: s_setpc_b64 s[30:31]3622;3623; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_4_2_2:3624; GFX942: ; %bb.0:3625; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3626; GFX942-NEXT: ;;#ASMSTART3627; GFX942-NEXT: ; def v[2:4]3628; GFX942-NEXT: ;;#ASMEND3629; GFX942-NEXT: v_mov_b32_e32 v6, 03630; GFX942-NEXT: ;;#ASMSTART3631; GFX942-NEXT: ; def v[0:2]3632; GFX942-NEXT: ;;#ASMEND3633; GFX942-NEXT: v_mov_b32_e32 v5, v43634; GFX942-NEXT: v_mov_b32_e32 v3, v13635; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]3636; GFX942-NEXT: s_waitcnt vmcnt(0)3637; GFX942-NEXT: s_setpc_b64 s[30:31]3638 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3639 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3640 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 4, i32 2, i32 2>3641 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163642 ret void3643}3644 3645define void @v_shuffle_v4p3_v3p3__5_5_2_2(ptr addrspace(1) inreg %ptr) {3646; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_2_2:3647; GFX900: ; %bb.0:3648; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3649; GFX900-NEXT: ;;#ASMSTART3650; GFX900-NEXT: ; def v[2:4]3651; GFX900-NEXT: ;;#ASMEND3652; GFX900-NEXT: v_mov_b32_e32 v6, 03653; GFX900-NEXT: ;;#ASMSTART3654; GFX900-NEXT: ; def v[0:2]3655; GFX900-NEXT: ;;#ASMEND3656; GFX900-NEXT: v_mov_b32_e32 v3, v23657; GFX900-NEXT: v_mov_b32_e32 v5, v43658; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]3659; GFX900-NEXT: s_waitcnt vmcnt(0)3660; GFX900-NEXT: s_setpc_b64 s[30:31]3661;3662; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_2_2:3663; GFX90A: ; %bb.0:3664; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3665; GFX90A-NEXT: ;;#ASMSTART3666; GFX90A-NEXT: ; def v[2:4]3667; GFX90A-NEXT: ;;#ASMEND3668; GFX90A-NEXT: v_mov_b32_e32 v6, 03669; GFX90A-NEXT: ;;#ASMSTART3670; GFX90A-NEXT: ; def v[0:2]3671; GFX90A-NEXT: ;;#ASMEND3672; GFX90A-NEXT: v_mov_b32_e32 v3, v23673; GFX90A-NEXT: v_mov_b32_e32 v5, v43674; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], 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_v4p3_v3p3__5_5_2_2:3679; GFX942: ; %bb.0:3680; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3681; GFX942-NEXT: ;;#ASMSTART3682; GFX942-NEXT: ; def v[2:4]3683; GFX942-NEXT: ;;#ASMEND3684; GFX942-NEXT: v_mov_b32_e32 v6, 03685; GFX942-NEXT: ;;#ASMSTART3686; GFX942-NEXT: ; def v[0:2]3687; GFX942-NEXT: ;;#ASMEND3688; GFX942-NEXT: v_mov_b32_e32 v5, v43689; GFX942-NEXT: v_mov_b32_e32 v3, v23690; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]3691; GFX942-NEXT: s_waitcnt vmcnt(0)3692; GFX942-NEXT: s_setpc_b64 s[30:31]3693 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3694 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3695 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 2>3696 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163697 ret void3698}3699 3700define void @v_shuffle_v4p3_v3p3__5_5_u_2(ptr addrspace(1) inreg %ptr) {3701; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_u_2:3702; GFX900: ; %bb.0:3703; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3704; GFX900-NEXT: ;;#ASMSTART3705; GFX900-NEXT: ; def v[3:5]3706; GFX900-NEXT: ;;#ASMEND3707; GFX900-NEXT: v_mov_b32_e32 v6, 03708; GFX900-NEXT: ;;#ASMSTART3709; GFX900-NEXT: ; def v[0:2]3710; GFX900-NEXT: ;;#ASMEND3711; GFX900-NEXT: v_mov_b32_e32 v3, v23712; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]3713; GFX900-NEXT: s_waitcnt vmcnt(0)3714; GFX900-NEXT: s_setpc_b64 s[30:31]3715;3716; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_u_2:3717; GFX90A: ; %bb.0:3718; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3719; GFX90A-NEXT: ;;#ASMSTART3720; GFX90A-NEXT: ; def v[2:4]3721; GFX90A-NEXT: ;;#ASMEND3722; GFX90A-NEXT: v_mov_b32_e32 v6, 03723; GFX90A-NEXT: ;;#ASMSTART3724; GFX90A-NEXT: ; def v[0:2]3725; GFX90A-NEXT: ;;#ASMEND3726; GFX90A-NEXT: v_mov_b32_e32 v3, v23727; GFX90A-NEXT: v_mov_b32_e32 v5, v43728; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]3729; GFX90A-NEXT: s_waitcnt vmcnt(0)3730; GFX90A-NEXT: s_setpc_b64 s[30:31]3731;3732; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_u_2:3733; GFX942: ; %bb.0:3734; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3735; GFX942-NEXT: ;;#ASMSTART3736; GFX942-NEXT: ; def v[2:4]3737; GFX942-NEXT: ;;#ASMEND3738; GFX942-NEXT: v_mov_b32_e32 v6, 03739; GFX942-NEXT: ;;#ASMSTART3740; GFX942-NEXT: ; def v[0:2]3741; GFX942-NEXT: ;;#ASMEND3742; GFX942-NEXT: v_mov_b32_e32 v5, v43743; GFX942-NEXT: v_mov_b32_e32 v3, v23744; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]3745; GFX942-NEXT: s_waitcnt vmcnt(0)3746; GFX942-NEXT: s_setpc_b64 s[30:31]3747 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3748 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3749 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 2>3750 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163751 ret void3752}3753 3754define void @v_shuffle_v4p3_v3p3__5_5_0_2(ptr addrspace(1) inreg %ptr) {3755; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_0_2:3756; GFX900: ; %bb.0:3757; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3758; GFX900-NEXT: ;;#ASMSTART3759; GFX900-NEXT: ; def v[4:6]3760; GFX900-NEXT: ;;#ASMEND3761; GFX900-NEXT: v_mov_b32_e32 v7, 03762; GFX900-NEXT: ;;#ASMSTART3763; GFX900-NEXT: ; def v[0:2]3764; GFX900-NEXT: ;;#ASMEND3765; GFX900-NEXT: v_mov_b32_e32 v3, v23766; GFX900-NEXT: v_mov_b32_e32 v5, v63767; GFX900-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]3768; GFX900-NEXT: s_waitcnt vmcnt(0)3769; GFX900-NEXT: s_setpc_b64 s[30:31]3770;3771; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_0_2:3772; GFX90A: ; %bb.0:3773; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3774; GFX90A-NEXT: ;;#ASMSTART3775; GFX90A-NEXT: ; def v[4:6]3776; GFX90A-NEXT: ;;#ASMEND3777; GFX90A-NEXT: v_mov_b32_e32 v7, 03778; GFX90A-NEXT: ;;#ASMSTART3779; GFX90A-NEXT: ; def v[0:2]3780; GFX90A-NEXT: ;;#ASMEND3781; GFX90A-NEXT: v_mov_b32_e32 v3, v23782; GFX90A-NEXT: v_mov_b32_e32 v5, v63783; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]3784; GFX90A-NEXT: s_waitcnt vmcnt(0)3785; GFX90A-NEXT: s_setpc_b64 s[30:31]3786;3787; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_0_2:3788; GFX942: ; %bb.0:3789; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3790; GFX942-NEXT: ;;#ASMSTART3791; GFX942-NEXT: ; def v[4:6]3792; GFX942-NEXT: ;;#ASMEND3793; GFX942-NEXT: v_mov_b32_e32 v7, 03794; GFX942-NEXT: ;;#ASMSTART3795; GFX942-NEXT: ; def v[0:2]3796; GFX942-NEXT: ;;#ASMEND3797; GFX942-NEXT: v_mov_b32_e32 v5, v63798; GFX942-NEXT: v_mov_b32_e32 v3, v23799; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]3800; GFX942-NEXT: s_waitcnt vmcnt(0)3801; GFX942-NEXT: s_setpc_b64 s[30:31]3802 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3803 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3804 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 2>3805 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163806 ret void3807}3808 3809define void @v_shuffle_v4p3_v3p3__5_5_1_2(ptr addrspace(1) inreg %ptr) {3810; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_1_2:3811; GFX900: ; %bb.0:3812; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3813; GFX900-NEXT: ;;#ASMSTART3814; GFX900-NEXT: ; def v[3:5]3815; GFX900-NEXT: ;;#ASMEND3816; GFX900-NEXT: v_mov_b32_e32 v6, 03817; GFX900-NEXT: ;;#ASMSTART3818; GFX900-NEXT: ; def v[0:2]3819; GFX900-NEXT: ;;#ASMEND3820; GFX900-NEXT: v_mov_b32_e32 v3, v23821; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]3822; GFX900-NEXT: s_waitcnt vmcnt(0)3823; GFX900-NEXT: s_setpc_b64 s[30:31]3824;3825; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_1_2:3826; GFX90A: ; %bb.0:3827; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3828; GFX90A-NEXT: ;;#ASMSTART3829; GFX90A-NEXT: ; def v[2:4]3830; GFX90A-NEXT: ;;#ASMEND3831; GFX90A-NEXT: v_mov_b32_e32 v6, 03832; GFX90A-NEXT: ;;#ASMSTART3833; GFX90A-NEXT: ; def v[0:2]3834; GFX90A-NEXT: ;;#ASMEND3835; GFX90A-NEXT: v_pk_mov_b32 v[4:5], v[2:3], v[4:5] op_sel:[1,0]3836; GFX90A-NEXT: v_mov_b32_e32 v3, v23837; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]3838; GFX90A-NEXT: s_waitcnt vmcnt(0)3839; GFX90A-NEXT: s_setpc_b64 s[30:31]3840;3841; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_1_2:3842; GFX942: ; %bb.0:3843; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3844; GFX942-NEXT: ;;#ASMSTART3845; GFX942-NEXT: ; def v[2:4]3846; GFX942-NEXT: ;;#ASMEND3847; GFX942-NEXT: v_mov_b32_e32 v6, 03848; GFX942-NEXT: ;;#ASMSTART3849; GFX942-NEXT: ; def v[0:2]3850; GFX942-NEXT: ;;#ASMEND3851; GFX942-NEXT: s_nop 03852; GFX942-NEXT: v_pk_mov_b32 v[4:5], v[2:3], v[4:5] op_sel:[1,0]3853; GFX942-NEXT: v_mov_b32_e32 v3, v23854; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]3855; GFX942-NEXT: s_waitcnt vmcnt(0)3856; GFX942-NEXT: s_setpc_b64 s[30:31]3857 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3858 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3859 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 2>3860 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163861 ret void3862}3863 3864define void @v_shuffle_v4p3_v3p3__5_5_3_2(ptr addrspace(1) inreg %ptr) {3865; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_3_2:3866; GFX900: ; %bb.0:3867; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3868; GFX900-NEXT: ;;#ASMSTART3869; GFX900-NEXT: ; def v[3:5]3870; GFX900-NEXT: ;;#ASMEND3871; GFX900-NEXT: v_mov_b32_e32 v6, 03872; GFX900-NEXT: ;;#ASMSTART3873; GFX900-NEXT: ; def v[0:2]3874; GFX900-NEXT: ;;#ASMEND3875; GFX900-NEXT: v_mov_b32_e32 v3, v23876; GFX900-NEXT: v_mov_b32_e32 v4, v03877; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]3878; GFX900-NEXT: s_waitcnt vmcnt(0)3879; GFX900-NEXT: s_setpc_b64 s[30:31]3880;3881; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_3_2:3882; GFX90A: ; %bb.0:3883; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3884; GFX90A-NEXT: ;;#ASMSTART3885; GFX90A-NEXT: ; def v[4:6]3886; GFX90A-NEXT: ;;#ASMEND3887; GFX90A-NEXT: v_mov_b32_e32 v7, 03888; GFX90A-NEXT: ;;#ASMSTART3889; GFX90A-NEXT: ; def v[0:2]3890; GFX90A-NEXT: ;;#ASMEND3891; GFX90A-NEXT: v_mov_b32_e32 v3, v23892; GFX90A-NEXT: v_mov_b32_e32 v4, v03893; GFX90A-NEXT: v_mov_b32_e32 v5, v63894; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]3895; GFX90A-NEXT: s_waitcnt vmcnt(0)3896; GFX90A-NEXT: s_setpc_b64 s[30:31]3897;3898; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_3_2:3899; GFX942: ; %bb.0:3900; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3901; GFX942-NEXT: ;;#ASMSTART3902; GFX942-NEXT: ; def v[4:6]3903; GFX942-NEXT: ;;#ASMEND3904; GFX942-NEXT: v_mov_b32_e32 v7, 03905; GFX942-NEXT: ;;#ASMSTART3906; GFX942-NEXT: ; def v[0:2]3907; GFX942-NEXT: ;;#ASMEND3908; GFX942-NEXT: v_mov_b32_e32 v5, v63909; GFX942-NEXT: v_mov_b32_e32 v3, v23910; GFX942-NEXT: v_mov_b32_e32 v4, v03911; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]3912; GFX942-NEXT: s_waitcnt vmcnt(0)3913; GFX942-NEXT: s_setpc_b64 s[30:31]3914 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3915 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3916 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 2>3917 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163918 ret void3919}3920 3921define void @v_shuffle_v4p3_v3p3__5_5_4_2(ptr addrspace(1) inreg %ptr) {3922; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_4_2:3923; GFX900: ; %bb.0:3924; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3925; GFX900-NEXT: ;;#ASMSTART3926; GFX900-NEXT: ; def v[3:5]3927; GFX900-NEXT: ;;#ASMEND3928; GFX900-NEXT: v_mov_b32_e32 v6, 03929; GFX900-NEXT: ;;#ASMSTART3930; GFX900-NEXT: ; def v[0:2]3931; GFX900-NEXT: ;;#ASMEND3932; GFX900-NEXT: v_mov_b32_e32 v3, v23933; GFX900-NEXT: v_mov_b32_e32 v4, v13934; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]3935; GFX900-NEXT: s_waitcnt vmcnt(0)3936; GFX900-NEXT: s_setpc_b64 s[30:31]3937;3938; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_4_2:3939; GFX90A: ; %bb.0:3940; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3941; GFX90A-NEXT: ;;#ASMSTART3942; GFX90A-NEXT: ; def v[2:4]3943; GFX90A-NEXT: ;;#ASMEND3944; GFX90A-NEXT: v_mov_b32_e32 v6, 03945; GFX90A-NEXT: ;;#ASMSTART3946; GFX90A-NEXT: ; def v[0:2]3947; GFX90A-NEXT: ;;#ASMEND3948; GFX90A-NEXT: v_pk_mov_b32 v[4:5], v[0:1], v[4:5] op_sel:[1,0]3949; GFX90A-NEXT: v_mov_b32_e32 v3, v23950; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]3951; GFX90A-NEXT: s_waitcnt vmcnt(0)3952; GFX90A-NEXT: s_setpc_b64 s[30:31]3953;3954; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_4_2:3955; GFX942: ; %bb.0:3956; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3957; GFX942-NEXT: ;;#ASMSTART3958; GFX942-NEXT: ; def v[2:4]3959; GFX942-NEXT: ;;#ASMEND3960; GFX942-NEXT: v_mov_b32_e32 v6, 03961; GFX942-NEXT: ;;#ASMSTART3962; GFX942-NEXT: ; def v[0:2]3963; GFX942-NEXT: ;;#ASMEND3964; GFX942-NEXT: s_nop 03965; GFX942-NEXT: v_pk_mov_b32 v[4:5], v[0:1], v[4:5] op_sel:[1,0]3966; GFX942-NEXT: v_mov_b32_e32 v3, v23967; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]3968; GFX942-NEXT: s_waitcnt vmcnt(0)3969; GFX942-NEXT: s_setpc_b64 s[30:31]3970 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3971 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3972 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 2>3973 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163974 ret void3975}3976 3977define void @v_shuffle_v4p3_v3p3__u_3_3_3(ptr addrspace(1) inreg %ptr) {3978; GFX9-LABEL: v_shuffle_v4p3_v3p3__u_3_3_3:3979; GFX9: ; %bb.0:3980; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3981; GFX9-NEXT: s_setpc_b64 s[30:31]3982 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()3983 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 poison, i32 3, i32 3, i32 3>3984 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 163985 ret void3986}3987 3988define void @v_shuffle_v4p3_v3p3__0_3_3_3(ptr addrspace(1) inreg %ptr) {3989; GFX900-LABEL: v_shuffle_v4p3_v3p3__0_3_3_3:3990; GFX900: ; %bb.0:3991; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3992; GFX900-NEXT: v_mov_b32_e32 v3, 03993; GFX900-NEXT: ;;#ASMSTART3994; GFX900-NEXT: ; def v[0:2]3995; GFX900-NEXT: ;;#ASMEND3996; GFX900-NEXT: global_store_dwordx4 v3, v[0:3], s[16:17]3997; GFX900-NEXT: s_waitcnt vmcnt(0)3998; GFX900-NEXT: s_setpc_b64 s[30:31]3999;4000; GFX90A-LABEL: v_shuffle_v4p3_v3p3__0_3_3_3:4001; GFX90A: ; %bb.0:4002; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4003; GFX90A-NEXT: v_mov_b32_e32 v3, 04004; GFX90A-NEXT: ;;#ASMSTART4005; GFX90A-NEXT: ; def v[0:2]4006; GFX90A-NEXT: ;;#ASMEND4007; GFX90A-NEXT: global_store_dwordx4 v3, v[0:3], s[16:17]4008; GFX90A-NEXT: s_waitcnt vmcnt(0)4009; GFX90A-NEXT: s_setpc_b64 s[30:31]4010;4011; GFX942-LABEL: v_shuffle_v4p3_v3p3__0_3_3_3:4012; GFX942: ; %bb.0:4013; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4014; GFX942-NEXT: v_mov_b32_e32 v3, 04015; GFX942-NEXT: ;;#ASMSTART4016; GFX942-NEXT: ; def v[0:2]4017; GFX942-NEXT: ;;#ASMEND4018; GFX942-NEXT: global_store_dwordx4 v3, v[0:3], s[0:1]4019; GFX942-NEXT: s_waitcnt vmcnt(0)4020; GFX942-NEXT: s_setpc_b64 s[30:31]4021 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4022 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 0, i32 3, i32 3, i32 3>4023 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164024 ret void4025}4026 4027define void @v_shuffle_v4p3_v3p3__1_3_3_3(ptr addrspace(1) inreg %ptr) {4028; GFX900-LABEL: v_shuffle_v4p3_v3p3__1_3_3_3:4029; GFX900: ; %bb.0:4030; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4031; GFX900-NEXT: v_mov_b32_e32 v3, 04032; GFX900-NEXT: ;;#ASMSTART4033; GFX900-NEXT: ; def v[0:2]4034; GFX900-NEXT: ;;#ASMEND4035; GFX900-NEXT: global_store_dwordx4 v3, v[1:4], s[16:17]4036; GFX900-NEXT: s_waitcnt vmcnt(0)4037; GFX900-NEXT: s_setpc_b64 s[30:31]4038;4039; GFX90A-LABEL: v_shuffle_v4p3_v3p3__1_3_3_3:4040; GFX90A: ; %bb.0:4041; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4042; GFX90A-NEXT: ;;#ASMSTART4043; GFX90A-NEXT: ; def v[0:2]4044; GFX90A-NEXT: ;;#ASMEND4045; GFX90A-NEXT: v_mov_b32_e32 v3, 04046; GFX90A-NEXT: v_mov_b32_e32 v0, v14047; GFX90A-NEXT: global_store_dwordx4 v3, v[0:3], s[16:17]4048; GFX90A-NEXT: s_waitcnt vmcnt(0)4049; GFX90A-NEXT: s_setpc_b64 s[30:31]4050;4051; GFX942-LABEL: v_shuffle_v4p3_v3p3__1_3_3_3:4052; GFX942: ; %bb.0:4053; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4054; GFX942-NEXT: ;;#ASMSTART4055; GFX942-NEXT: ; def v[0:2]4056; GFX942-NEXT: ;;#ASMEND4057; GFX942-NEXT: v_mov_b32_e32 v3, 04058; GFX942-NEXT: v_mov_b32_e32 v0, v14059; GFX942-NEXT: global_store_dwordx4 v3, v[0:3], s[0:1]4060; GFX942-NEXT: s_waitcnt vmcnt(0)4061; GFX942-NEXT: s_setpc_b64 s[30:31]4062 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4063 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 1, i32 3, i32 3, i32 3>4064 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164065 ret void4066}4067 4068define void @v_shuffle_v4p3_v3p3__2_3_3_3(ptr addrspace(1) inreg %ptr) {4069; GFX900-LABEL: v_shuffle_v4p3_v3p3__2_3_3_3:4070; GFX900: ; %bb.0:4071; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4072; GFX900-NEXT: v_mov_b32_e32 v3, 04073; GFX900-NEXT: ;;#ASMSTART4074; GFX900-NEXT: ; def v[0:2]4075; GFX900-NEXT: ;;#ASMEND4076; GFX900-NEXT: global_store_dwordx4 v3, v[2:5], s[16:17]4077; GFX900-NEXT: s_waitcnt vmcnt(0)4078; GFX900-NEXT: s_setpc_b64 s[30:31]4079;4080; GFX90A-LABEL: v_shuffle_v4p3_v3p3__2_3_3_3:4081; GFX90A: ; %bb.0:4082; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4083; GFX90A-NEXT: v_mov_b32_e32 v3, 04084; GFX90A-NEXT: ;;#ASMSTART4085; GFX90A-NEXT: ; def v[0:2]4086; GFX90A-NEXT: ;;#ASMEND4087; GFX90A-NEXT: global_store_dwordx4 v3, v[2:5], s[16:17]4088; GFX90A-NEXT: s_waitcnt vmcnt(0)4089; GFX90A-NEXT: s_setpc_b64 s[30:31]4090;4091; GFX942-LABEL: v_shuffle_v4p3_v3p3__2_3_3_3:4092; GFX942: ; %bb.0:4093; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4094; GFX942-NEXT: v_mov_b32_e32 v3, 04095; GFX942-NEXT: ;;#ASMSTART4096; GFX942-NEXT: ; def v[0:2]4097; GFX942-NEXT: ;;#ASMEND4098; GFX942-NEXT: global_store_dwordx4 v3, v[2:5], s[0:1]4099; GFX942-NEXT: s_waitcnt vmcnt(0)4100; GFX942-NEXT: s_setpc_b64 s[30:31]4101 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4102 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 2, i32 3, i32 3, i32 3>4103 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164104 ret void4105}4106 4107define void @v_shuffle_v4p3_v3p3__3_3_3_3(ptr addrspace(1) inreg %ptr) {4108; GFX9-LABEL: v_shuffle_v4p3_v3p3__3_3_3_3:4109; GFX9: ; %bb.0:4110; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4111; GFX9-NEXT: s_setpc_b64 s[30:31]4112 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4113 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 3, i32 3, i32 3, i32 3>4114 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164115 ret void4116}4117 4118define void @v_shuffle_v4p3_v3p3__4_3_3_3(ptr addrspace(1) inreg %ptr) {4119; GFX900-LABEL: v_shuffle_v4p3_v3p3__4_3_3_3:4120; GFX900: ; %bb.0:4121; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4122; GFX900-NEXT: ;;#ASMSTART4123; GFX900-NEXT: ; def v[0:2]4124; GFX900-NEXT: ;;#ASMEND4125; GFX900-NEXT: v_mov_b32_e32 v5, 04126; GFX900-NEXT: v_mov_b32_e32 v2, v04127; GFX900-NEXT: v_mov_b32_e32 v3, v04128; GFX900-NEXT: v_mov_b32_e32 v4, v04129; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]4130; GFX900-NEXT: s_waitcnt vmcnt(0)4131; GFX900-NEXT: s_setpc_b64 s[30:31]4132;4133; GFX90A-LABEL: v_shuffle_v4p3_v3p3__4_3_3_3:4134; GFX90A: ; %bb.0:4135; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4136; GFX90A-NEXT: ;;#ASMSTART4137; GFX90A-NEXT: ; def v[2:4]4138; GFX90A-NEXT: ;;#ASMEND4139; GFX90A-NEXT: v_mov_b32_e32 v5, 04140; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]4141; GFX90A-NEXT: v_mov_b32_e32 v3, v24142; GFX90A-NEXT: global_store_dwordx4 v5, v[0:3], s[16:17]4143; GFX90A-NEXT: s_waitcnt vmcnt(0)4144; GFX90A-NEXT: s_setpc_b64 s[30:31]4145;4146; GFX942-LABEL: v_shuffle_v4p3_v3p3__4_3_3_3:4147; GFX942: ; %bb.0:4148; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4149; GFX942-NEXT: ;;#ASMSTART4150; GFX942-NEXT: ; def v[2:4]4151; GFX942-NEXT: ;;#ASMEND4152; GFX942-NEXT: v_mov_b32_e32 v5, 04153; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]4154; GFX942-NEXT: v_mov_b32_e32 v3, v24155; GFX942-NEXT: global_store_dwordx4 v5, v[0:3], s[0:1]4156; GFX942-NEXT: s_waitcnt vmcnt(0)4157; GFX942-NEXT: s_setpc_b64 s[30:31]4158 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4159 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4160 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 4, i32 3, i32 3, i32 3>4161 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164162 ret void4163}4164 4165define void @v_shuffle_v4p3_v3p3__5_3_3_3(ptr addrspace(1) inreg %ptr) {4166; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_3_3_3:4167; GFX900: ; %bb.0:4168; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4169; GFX900-NEXT: v_mov_b32_e32 v6, 04170; GFX900-NEXT: ;;#ASMSTART4171; GFX900-NEXT: ; def v[0:2]4172; GFX900-NEXT: ;;#ASMEND4173; GFX900-NEXT: v_mov_b32_e32 v3, v04174; GFX900-NEXT: v_mov_b32_e32 v4, v04175; GFX900-NEXT: v_mov_b32_e32 v5, v04176; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]4177; GFX900-NEXT: s_waitcnt vmcnt(0)4178; GFX900-NEXT: s_setpc_b64 s[30:31]4179;4180; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_3_3_3:4181; GFX90A: ; %bb.0:4182; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4183; GFX90A-NEXT: v_mov_b32_e32 v6, 04184; GFX90A-NEXT: ;;#ASMSTART4185; GFX90A-NEXT: ; def v[0:2]4186; GFX90A-NEXT: ;;#ASMEND4187; GFX90A-NEXT: v_mov_b32_e32 v3, v04188; GFX90A-NEXT: v_mov_b32_e32 v4, v04189; GFX90A-NEXT: v_mov_b32_e32 v5, v04190; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]4191; GFX90A-NEXT: s_waitcnt vmcnt(0)4192; GFX90A-NEXT: s_setpc_b64 s[30:31]4193;4194; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_3_3_3:4195; GFX942: ; %bb.0:4196; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4197; GFX942-NEXT: v_mov_b32_e32 v6, 04198; GFX942-NEXT: ;;#ASMSTART4199; GFX942-NEXT: ; def v[0:2]4200; GFX942-NEXT: ;;#ASMEND4201; GFX942-NEXT: s_nop 04202; GFX942-NEXT: v_mov_b32_e32 v3, v04203; GFX942-NEXT: v_mov_b32_e32 v4, v04204; GFX942-NEXT: v_mov_b32_e32 v5, v04205; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]4206; GFX942-NEXT: s_waitcnt vmcnt(0)4207; GFX942-NEXT: s_setpc_b64 s[30:31]4208 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4209 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4210 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 3, i32 3, i32 3>4211 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164212 ret void4213}4214 4215define void @v_shuffle_v4p3_v3p3__5_u_3_3(ptr addrspace(1) inreg %ptr) {4216; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_u_3_3:4217; GFX900: ; %bb.0:4218; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4219; GFX900-NEXT: v_mov_b32_e32 v3, 04220; GFX900-NEXT: ;;#ASMSTART4221; GFX900-NEXT: ; def v[0:2]4222; GFX900-NEXT: ;;#ASMEND4223; GFX900-NEXT: v_mov_b32_e32 v4, v04224; GFX900-NEXT: v_mov_b32_e32 v5, v04225; GFX900-NEXT: global_store_dwordx4 v3, v[2:5], s[16:17]4226; GFX900-NEXT: s_waitcnt vmcnt(0)4227; GFX900-NEXT: s_setpc_b64 s[30:31]4228;4229; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_u_3_3:4230; GFX90A: ; %bb.0:4231; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4232; GFX90A-NEXT: v_mov_b32_e32 v3, 04233; GFX90A-NEXT: ;;#ASMSTART4234; GFX90A-NEXT: ; def v[0:2]4235; GFX90A-NEXT: ;;#ASMEND4236; GFX90A-NEXT: v_mov_b32_e32 v4, v04237; GFX90A-NEXT: v_mov_b32_e32 v5, v04238; GFX90A-NEXT: global_store_dwordx4 v3, v[2:5], s[16:17]4239; GFX90A-NEXT: s_waitcnt vmcnt(0)4240; GFX90A-NEXT: s_setpc_b64 s[30:31]4241;4242; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_u_3_3:4243; GFX942: ; %bb.0:4244; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4245; GFX942-NEXT: v_mov_b32_e32 v3, 04246; GFX942-NEXT: ;;#ASMSTART4247; GFX942-NEXT: ; def v[0:2]4248; GFX942-NEXT: ;;#ASMEND4249; GFX942-NEXT: s_nop 04250; GFX942-NEXT: v_mov_b32_e32 v4, v04251; GFX942-NEXT: v_mov_b32_e32 v5, v04252; GFX942-NEXT: global_store_dwordx4 v3, v[2:5], s[0:1]4253; GFX942-NEXT: s_waitcnt vmcnt(0)4254; GFX942-NEXT: s_setpc_b64 s[30:31]4255 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4256 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4257 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 poison, i32 3, i32 3>4258 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164259 ret void4260}4261 4262define void @v_shuffle_v4p3_v3p3__5_0_3_3(ptr addrspace(1) inreg %ptr) {4263; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_0_3_3:4264; GFX900: ; %bb.0:4265; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4266; GFX900-NEXT: ;;#ASMSTART4267; GFX900-NEXT: ; def v[3:5]4268; GFX900-NEXT: ;;#ASMEND4269; GFX900-NEXT: v_mov_b32_e32 v6, 04270; GFX900-NEXT: ;;#ASMSTART4271; GFX900-NEXT: ; def v[0:2]4272; GFX900-NEXT: ;;#ASMEND4273; GFX900-NEXT: v_mov_b32_e32 v4, v04274; GFX900-NEXT: v_mov_b32_e32 v5, v04275; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]4276; GFX900-NEXT: s_waitcnt vmcnt(0)4277; GFX900-NEXT: s_setpc_b64 s[30:31]4278;4279; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_0_3_3:4280; GFX90A: ; %bb.0:4281; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4282; GFX90A-NEXT: ;;#ASMSTART4283; GFX90A-NEXT: ; def v[4:6]4284; GFX90A-NEXT: ;;#ASMEND4285; GFX90A-NEXT: v_mov_b32_e32 v7, 04286; GFX90A-NEXT: ;;#ASMSTART4287; GFX90A-NEXT: ; def v[0:2]4288; GFX90A-NEXT: ;;#ASMEND4289; GFX90A-NEXT: v_mov_b32_e32 v3, v44290; GFX90A-NEXT: v_mov_b32_e32 v4, v04291; GFX90A-NEXT: v_mov_b32_e32 v5, v04292; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]4293; GFX90A-NEXT: s_waitcnt vmcnt(0)4294; GFX90A-NEXT: s_setpc_b64 s[30:31]4295;4296; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_0_3_3:4297; GFX942: ; %bb.0:4298; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4299; GFX942-NEXT: ;;#ASMSTART4300; GFX942-NEXT: ; def v[4:6]4301; GFX942-NEXT: ;;#ASMEND4302; GFX942-NEXT: v_mov_b32_e32 v7, 04303; GFX942-NEXT: ;;#ASMSTART4304; GFX942-NEXT: ; def v[0:2]4305; GFX942-NEXT: ;;#ASMEND4306; GFX942-NEXT: v_mov_b32_e32 v3, v44307; GFX942-NEXT: v_mov_b32_e32 v4, v04308; GFX942-NEXT: v_mov_b32_e32 v5, v04309; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]4310; GFX942-NEXT: s_waitcnt vmcnt(0)4311; GFX942-NEXT: s_setpc_b64 s[30:31]4312 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4313 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4314 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 0, i32 3, i32 3>4315 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164316 ret void4317}4318 4319define void @v_shuffle_v4p3_v3p3__5_1_3_3(ptr addrspace(1) inreg %ptr) {4320; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_1_3_3:4321; GFX900: ; %bb.0:4322; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4323; GFX900-NEXT: ;;#ASMSTART4324; GFX900-NEXT: ; def v[2:4]4325; GFX900-NEXT: ;;#ASMEND4326; GFX900-NEXT: v_mov_b32_e32 v6, 04327; GFX900-NEXT: ;;#ASMSTART4328; GFX900-NEXT: ; def v[0:2]4329; GFX900-NEXT: ;;#ASMEND4330; GFX900-NEXT: v_mov_b32_e32 v4, v04331; GFX900-NEXT: v_mov_b32_e32 v5, v04332; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]4333; GFX900-NEXT: s_waitcnt vmcnt(0)4334; GFX900-NEXT: s_setpc_b64 s[30:31]4335;4336; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_1_3_3:4337; GFX90A: ; %bb.0:4338; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4339; GFX90A-NEXT: ;;#ASMSTART4340; GFX90A-NEXT: ; def v[2:4]4341; GFX90A-NEXT: ;;#ASMEND4342; GFX90A-NEXT: v_mov_b32_e32 v6, 04343; GFX90A-NEXT: ;;#ASMSTART4344; GFX90A-NEXT: ; def v[0:2]4345; GFX90A-NEXT: ;;#ASMEND4346; GFX90A-NEXT: v_mov_b32_e32 v4, v04347; GFX90A-NEXT: v_mov_b32_e32 v5, v04348; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]4349; GFX90A-NEXT: s_waitcnt vmcnt(0)4350; GFX90A-NEXT: s_setpc_b64 s[30:31]4351;4352; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_1_3_3:4353; GFX942: ; %bb.0:4354; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4355; GFX942-NEXT: ;;#ASMSTART4356; GFX942-NEXT: ; def v[2:4]4357; GFX942-NEXT: ;;#ASMEND4358; GFX942-NEXT: v_mov_b32_e32 v6, 04359; GFX942-NEXT: ;;#ASMSTART4360; GFX942-NEXT: ; def v[0:2]4361; GFX942-NEXT: ;;#ASMEND4362; GFX942-NEXT: s_nop 04363; GFX942-NEXT: v_mov_b32_e32 v4, v04364; GFX942-NEXT: v_mov_b32_e32 v5, v04365; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]4366; GFX942-NEXT: s_waitcnt vmcnt(0)4367; GFX942-NEXT: s_setpc_b64 s[30:31]4368 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4369 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4370 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 1, i32 3, i32 3>4371 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164372 ret void4373}4374 4375define void @v_shuffle_v4p3_v3p3__5_2_3_3(ptr addrspace(1) inreg %ptr) {4376; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_2_3_3:4377; GFX900: ; %bb.0:4378; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4379; GFX900-NEXT: ;;#ASMSTART4380; GFX900-NEXT: ; def v[1:3]4381; GFX900-NEXT: ;;#ASMEND4382; GFX900-NEXT: v_mov_b32_e32 v6, 04383; GFX900-NEXT: ;;#ASMSTART4384; GFX900-NEXT: ; def v[0:2]4385; GFX900-NEXT: ;;#ASMEND4386; GFX900-NEXT: v_mov_b32_e32 v4, v04387; GFX900-NEXT: v_mov_b32_e32 v5, v04388; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]4389; GFX900-NEXT: s_waitcnt vmcnt(0)4390; GFX900-NEXT: s_setpc_b64 s[30:31]4391;4392; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_2_3_3:4393; GFX90A: ; %bb.0:4394; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4395; GFX90A-NEXT: ;;#ASMSTART4396; GFX90A-NEXT: ; def v[2:4]4397; GFX90A-NEXT: ;;#ASMEND4398; GFX90A-NEXT: v_mov_b32_e32 v6, 04399; GFX90A-NEXT: ;;#ASMSTART4400; GFX90A-NEXT: ; def v[0:2]4401; GFX90A-NEXT: ;;#ASMEND4402; GFX90A-NEXT: v_mov_b32_e32 v3, v44403; GFX90A-NEXT: v_mov_b32_e32 v4, v04404; GFX90A-NEXT: v_mov_b32_e32 v5, v04405; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]4406; GFX90A-NEXT: s_waitcnt vmcnt(0)4407; GFX90A-NEXT: s_setpc_b64 s[30:31]4408;4409; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_2_3_3:4410; GFX942: ; %bb.0:4411; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4412; GFX942-NEXT: ;;#ASMSTART4413; GFX942-NEXT: ; def v[2:4]4414; GFX942-NEXT: ;;#ASMEND4415; GFX942-NEXT: v_mov_b32_e32 v6, 04416; GFX942-NEXT: ;;#ASMSTART4417; GFX942-NEXT: ; def v[0:2]4418; GFX942-NEXT: ;;#ASMEND4419; GFX942-NEXT: v_mov_b32_e32 v3, v44420; GFX942-NEXT: v_mov_b32_e32 v4, v04421; GFX942-NEXT: v_mov_b32_e32 v5, v04422; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]4423; GFX942-NEXT: s_waitcnt vmcnt(0)4424; GFX942-NEXT: s_setpc_b64 s[30:31]4425 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4426 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4427 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 2, i32 3, i32 3>4428 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164429 ret void4430}4431 4432define void @v_shuffle_v4p3_v3p3__5_4_3_3(ptr addrspace(1) inreg %ptr) {4433; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_4_3_3:4434; GFX900: ; %bb.0:4435; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4436; GFX900-NEXT: v_mov_b32_e32 v6, 04437; GFX900-NEXT: ;;#ASMSTART4438; GFX900-NEXT: ; def v[0:2]4439; GFX900-NEXT: ;;#ASMEND4440; GFX900-NEXT: v_mov_b32_e32 v3, v14441; GFX900-NEXT: v_mov_b32_e32 v4, v04442; GFX900-NEXT: v_mov_b32_e32 v5, v04443; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]4444; GFX900-NEXT: s_waitcnt vmcnt(0)4445; GFX900-NEXT: s_setpc_b64 s[30:31]4446;4447; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_4_3_3:4448; GFX90A: ; %bb.0:4449; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4450; GFX90A-NEXT: v_mov_b32_e32 v6, 04451; GFX90A-NEXT: ;;#ASMSTART4452; GFX90A-NEXT: ; def v[0:2]4453; GFX90A-NEXT: ;;#ASMEND4454; GFX90A-NEXT: v_mov_b32_e32 v3, v14455; GFX90A-NEXT: v_mov_b32_e32 v4, v04456; GFX90A-NEXT: v_mov_b32_e32 v5, v04457; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]4458; GFX90A-NEXT: s_waitcnt vmcnt(0)4459; GFX90A-NEXT: s_setpc_b64 s[30:31]4460;4461; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_4_3_3:4462; GFX942: ; %bb.0:4463; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4464; GFX942-NEXT: v_mov_b32_e32 v6, 04465; GFX942-NEXT: ;;#ASMSTART4466; GFX942-NEXT: ; def v[0:2]4467; GFX942-NEXT: ;;#ASMEND4468; GFX942-NEXT: s_nop 04469; GFX942-NEXT: v_mov_b32_e32 v3, v14470; GFX942-NEXT: v_mov_b32_e32 v4, v04471; GFX942-NEXT: v_mov_b32_e32 v5, v04472; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]4473; GFX942-NEXT: s_waitcnt vmcnt(0)4474; GFX942-NEXT: s_setpc_b64 s[30:31]4475 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4476 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4477 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 4, i32 3, i32 3>4478 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164479 ret void4480}4481 4482define void @v_shuffle_v4p3_v3p3__5_5_3_3(ptr addrspace(1) inreg %ptr) {4483; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_3_3:4484; GFX900: ; %bb.0:4485; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4486; GFX900-NEXT: v_mov_b32_e32 v6, 04487; GFX900-NEXT: ;;#ASMSTART4488; GFX900-NEXT: ; def v[0:2]4489; GFX900-NEXT: ;;#ASMEND4490; GFX900-NEXT: v_mov_b32_e32 v3, v24491; GFX900-NEXT: v_mov_b32_e32 v4, v04492; GFX900-NEXT: v_mov_b32_e32 v5, v04493; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]4494; GFX900-NEXT: s_waitcnt vmcnt(0)4495; GFX900-NEXT: s_setpc_b64 s[30:31]4496;4497; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_3_3:4498; GFX90A: ; %bb.0:4499; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4500; GFX90A-NEXT: v_mov_b32_e32 v6, 04501; GFX90A-NEXT: ;;#ASMSTART4502; GFX90A-NEXT: ; def v[0:2]4503; GFX90A-NEXT: ;;#ASMEND4504; GFX90A-NEXT: v_mov_b32_e32 v3, v24505; GFX90A-NEXT: v_mov_b32_e32 v4, v04506; GFX90A-NEXT: v_mov_b32_e32 v5, v04507; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]4508; GFX90A-NEXT: s_waitcnt vmcnt(0)4509; GFX90A-NEXT: s_setpc_b64 s[30:31]4510;4511; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_3_3:4512; GFX942: ; %bb.0:4513; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4514; GFX942-NEXT: v_mov_b32_e32 v6, 04515; GFX942-NEXT: ;;#ASMSTART4516; GFX942-NEXT: ; def v[0:2]4517; GFX942-NEXT: ;;#ASMEND4518; GFX942-NEXT: s_nop 04519; GFX942-NEXT: v_mov_b32_e32 v3, v24520; GFX942-NEXT: v_mov_b32_e32 v4, v04521; GFX942-NEXT: v_mov_b32_e32 v5, v04522; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]4523; GFX942-NEXT: s_waitcnt vmcnt(0)4524; GFX942-NEXT: s_setpc_b64 s[30:31]4525 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4526 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4527 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 3>4528 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164529 ret void4530}4531 4532define void @v_shuffle_v4p3_v3p3__5_5_u_3(ptr addrspace(1) inreg %ptr) {4533; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_u_3:4534; GFX900: ; %bb.0:4535; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4536; GFX900-NEXT: v_mov_b32_e32 v4, 04537; GFX900-NEXT: ;;#ASMSTART4538; GFX900-NEXT: ; def v[0:2]4539; GFX900-NEXT: ;;#ASMEND4540; GFX900-NEXT: v_mov_b32_e32 v3, v24541; GFX900-NEXT: v_mov_b32_e32 v5, v04542; GFX900-NEXT: global_store_dwordx4 v4, v[2:5], s[16:17]4543; GFX900-NEXT: s_waitcnt vmcnt(0)4544; GFX900-NEXT: s_setpc_b64 s[30:31]4545;4546; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_u_3:4547; GFX90A: ; %bb.0:4548; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4549; GFX90A-NEXT: v_mov_b32_e32 v4, 04550; GFX90A-NEXT: ;;#ASMSTART4551; GFX90A-NEXT: ; def v[0:2]4552; GFX90A-NEXT: ;;#ASMEND4553; GFX90A-NEXT: v_mov_b32_e32 v3, v24554; GFX90A-NEXT: v_mov_b32_e32 v5, v04555; GFX90A-NEXT: global_store_dwordx4 v4, v[2:5], s[16:17]4556; GFX90A-NEXT: s_waitcnt vmcnt(0)4557; GFX90A-NEXT: s_setpc_b64 s[30:31]4558;4559; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_u_3:4560; GFX942: ; %bb.0:4561; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4562; GFX942-NEXT: v_mov_b32_e32 v4, 04563; GFX942-NEXT: ;;#ASMSTART4564; GFX942-NEXT: ; def v[0:2]4565; GFX942-NEXT: ;;#ASMEND4566; GFX942-NEXT: s_nop 04567; GFX942-NEXT: v_mov_b32_e32 v3, v24568; GFX942-NEXT: v_mov_b32_e32 v5, v04569; GFX942-NEXT: global_store_dwordx4 v4, v[2:5], s[0:1]4570; GFX942-NEXT: s_waitcnt vmcnt(0)4571; GFX942-NEXT: s_setpc_b64 s[30:31]4572 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4573 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4574 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 3>4575 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164576 ret void4577}4578 4579define void @v_shuffle_v4p3_v3p3__5_5_0_3(ptr addrspace(1) inreg %ptr) {4580; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_0_3:4581; GFX900: ; %bb.0:4582; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4583; GFX900-NEXT: ;;#ASMSTART4584; GFX900-NEXT: ; def v[4:6]4585; GFX900-NEXT: ;;#ASMEND4586; GFX900-NEXT: v_mov_b32_e32 v7, 04587; GFX900-NEXT: ;;#ASMSTART4588; GFX900-NEXT: ; def v[0:2]4589; GFX900-NEXT: ;;#ASMEND4590; GFX900-NEXT: v_mov_b32_e32 v3, v24591; GFX900-NEXT: v_mov_b32_e32 v5, v04592; GFX900-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]4593; GFX900-NEXT: s_waitcnt vmcnt(0)4594; GFX900-NEXT: s_setpc_b64 s[30:31]4595;4596; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_0_3:4597; GFX90A: ; %bb.0:4598; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4599; GFX90A-NEXT: ;;#ASMSTART4600; GFX90A-NEXT: ; def v[4:6]4601; GFX90A-NEXT: ;;#ASMEND4602; GFX90A-NEXT: v_mov_b32_e32 v7, 04603; GFX90A-NEXT: ;;#ASMSTART4604; GFX90A-NEXT: ; def v[0:2]4605; GFX90A-NEXT: ;;#ASMEND4606; GFX90A-NEXT: v_mov_b32_e32 v3, v24607; GFX90A-NEXT: v_mov_b32_e32 v5, v04608; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]4609; GFX90A-NEXT: s_waitcnt vmcnt(0)4610; GFX90A-NEXT: s_setpc_b64 s[30:31]4611;4612; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_0_3:4613; GFX942: ; %bb.0:4614; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4615; GFX942-NEXT: ;;#ASMSTART4616; GFX942-NEXT: ; def v[4:6]4617; GFX942-NEXT: ;;#ASMEND4618; GFX942-NEXT: v_mov_b32_e32 v7, 04619; GFX942-NEXT: ;;#ASMSTART4620; GFX942-NEXT: ; def v[0:2]4621; GFX942-NEXT: ;;#ASMEND4622; GFX942-NEXT: s_nop 04623; GFX942-NEXT: v_mov_b32_e32 v3, v24624; GFX942-NEXT: v_mov_b32_e32 v5, v04625; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]4626; GFX942-NEXT: s_waitcnt vmcnt(0)4627; GFX942-NEXT: s_setpc_b64 s[30:31]4628 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4629 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4630 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 3>4631 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164632 ret void4633}4634 4635define void @v_shuffle_v4p3_v3p3__5_5_1_3(ptr addrspace(1) inreg %ptr) {4636; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_1_3:4637; GFX900: ; %bb.0:4638; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4639; GFX900-NEXT: ;;#ASMSTART4640; GFX900-NEXT: ; def v[3:5]4641; GFX900-NEXT: ;;#ASMEND4642; GFX900-NEXT: v_mov_b32_e32 v6, 04643; GFX900-NEXT: ;;#ASMSTART4644; GFX900-NEXT: ; def v[0:2]4645; GFX900-NEXT: ;;#ASMEND4646; GFX900-NEXT: v_mov_b32_e32 v3, v24647; GFX900-NEXT: v_mov_b32_e32 v5, v04648; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]4649; GFX900-NEXT: s_waitcnt vmcnt(0)4650; GFX900-NEXT: s_setpc_b64 s[30:31]4651;4652; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_1_3:4653; GFX90A: ; %bb.0:4654; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4655; GFX90A-NEXT: ;;#ASMSTART4656; GFX90A-NEXT: ; def v[2:4]4657; GFX90A-NEXT: ;;#ASMEND4658; GFX90A-NEXT: v_mov_b32_e32 v6, 04659; GFX90A-NEXT: ;;#ASMSTART4660; GFX90A-NEXT: ; def v[0:2]4661; GFX90A-NEXT: ;;#ASMEND4662; GFX90A-NEXT: v_pk_mov_b32 v[4:5], v[2:3], v[0:1] op_sel:[1,0]4663; GFX90A-NEXT: v_mov_b32_e32 v3, v24664; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]4665; GFX90A-NEXT: s_waitcnt vmcnt(0)4666; GFX90A-NEXT: s_setpc_b64 s[30:31]4667;4668; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_1_3:4669; GFX942: ; %bb.0:4670; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4671; GFX942-NEXT: ;;#ASMSTART4672; GFX942-NEXT: ; def v[2:4]4673; GFX942-NEXT: ;;#ASMEND4674; GFX942-NEXT: v_mov_b32_e32 v6, 04675; GFX942-NEXT: ;;#ASMSTART4676; GFX942-NEXT: ; def v[0:2]4677; GFX942-NEXT: ;;#ASMEND4678; GFX942-NEXT: s_nop 04679; GFX942-NEXT: v_pk_mov_b32 v[4:5], v[2:3], v[0:1] op_sel:[1,0]4680; GFX942-NEXT: v_mov_b32_e32 v3, v24681; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]4682; GFX942-NEXT: s_waitcnt vmcnt(0)4683; GFX942-NEXT: s_setpc_b64 s[30:31]4684 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4685 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4686 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 3>4687 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164688 ret void4689}4690 4691define void @v_shuffle_v4p3_v3p3__5_5_2_3(ptr addrspace(1) inreg %ptr) {4692; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_2_3:4693; GFX900: ; %bb.0:4694; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4695; GFX900-NEXT: ;;#ASMSTART4696; GFX900-NEXT: ; def v[2:4]4697; GFX900-NEXT: ;;#ASMEND4698; GFX900-NEXT: v_mov_b32_e32 v6, 04699; GFX900-NEXT: ;;#ASMSTART4700; GFX900-NEXT: ; def v[0:2]4701; GFX900-NEXT: ;;#ASMEND4702; GFX900-NEXT: v_mov_b32_e32 v3, v24703; GFX900-NEXT: v_mov_b32_e32 v5, v04704; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]4705; GFX900-NEXT: s_waitcnt vmcnt(0)4706; GFX900-NEXT: s_setpc_b64 s[30:31]4707;4708; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_2_3:4709; GFX90A: ; %bb.0:4710; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4711; GFX90A-NEXT: ;;#ASMSTART4712; GFX90A-NEXT: ; def v[2:4]4713; GFX90A-NEXT: ;;#ASMEND4714; GFX90A-NEXT: v_mov_b32_e32 v6, 04715; GFX90A-NEXT: ;;#ASMSTART4716; GFX90A-NEXT: ; def v[0:2]4717; GFX90A-NEXT: ;;#ASMEND4718; GFX90A-NEXT: v_mov_b32_e32 v3, v24719; GFX90A-NEXT: v_mov_b32_e32 v5, v04720; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]4721; GFX90A-NEXT: s_waitcnt vmcnt(0)4722; GFX90A-NEXT: s_setpc_b64 s[30:31]4723;4724; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_2_3:4725; GFX942: ; %bb.0:4726; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4727; GFX942-NEXT: ;;#ASMSTART4728; GFX942-NEXT: ; def v[2:4]4729; GFX942-NEXT: ;;#ASMEND4730; GFX942-NEXT: v_mov_b32_e32 v6, 04731; GFX942-NEXT: ;;#ASMSTART4732; GFX942-NEXT: ; def v[0:2]4733; GFX942-NEXT: ;;#ASMEND4734; GFX942-NEXT: s_nop 04735; GFX942-NEXT: v_mov_b32_e32 v3, v24736; GFX942-NEXT: v_mov_b32_e32 v5, v04737; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]4738; GFX942-NEXT: s_waitcnt vmcnt(0)4739; GFX942-NEXT: s_setpc_b64 s[30:31]4740 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4741 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4742 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 3>4743 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164744 ret void4745}4746 4747define void @v_shuffle_v4p3_v3p3__5_5_4_3(ptr addrspace(1) inreg %ptr) {4748; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_4_3:4749; GFX900: ; %bb.0:4750; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4751; GFX900-NEXT: v_mov_b32_e32 v6, 04752; GFX900-NEXT: ;;#ASMSTART4753; GFX900-NEXT: ; def v[0:2]4754; GFX900-NEXT: ;;#ASMEND4755; GFX900-NEXT: v_mov_b32_e32 v3, v24756; GFX900-NEXT: v_mov_b32_e32 v4, v14757; GFX900-NEXT: v_mov_b32_e32 v5, v04758; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]4759; GFX900-NEXT: s_waitcnt vmcnt(0)4760; GFX900-NEXT: s_setpc_b64 s[30:31]4761;4762; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_4_3:4763; GFX90A: ; %bb.0:4764; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4765; GFX90A-NEXT: v_mov_b32_e32 v6, 04766; GFX90A-NEXT: ;;#ASMSTART4767; GFX90A-NEXT: ; def v[0:2]4768; GFX90A-NEXT: ;;#ASMEND4769; GFX90A-NEXT: v_pk_mov_b32 v[4:5], v[0:1], v[0:1] op_sel:[1,0]4770; GFX90A-NEXT: v_mov_b32_e32 v3, v24771; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]4772; GFX90A-NEXT: s_waitcnt vmcnt(0)4773; GFX90A-NEXT: s_setpc_b64 s[30:31]4774;4775; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_4_3:4776; GFX942: ; %bb.0:4777; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4778; GFX942-NEXT: v_mov_b32_e32 v6, 04779; GFX942-NEXT: ;;#ASMSTART4780; GFX942-NEXT: ; def v[0:2]4781; GFX942-NEXT: ;;#ASMEND4782; GFX942-NEXT: s_nop 04783; GFX942-NEXT: v_pk_mov_b32 v[4:5], v[0:1], v[0:1] op_sel:[1,0]4784; GFX942-NEXT: v_mov_b32_e32 v3, v24785; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]4786; GFX942-NEXT: s_waitcnt vmcnt(0)4787; GFX942-NEXT: s_setpc_b64 s[30:31]4788 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4789 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4790 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 3>4791 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164792 ret void4793}4794 4795define void @v_shuffle_v4p3_v3p3__u_4_4_4(ptr addrspace(1) inreg %ptr) {4796; GFX900-LABEL: v_shuffle_v4p3_v3p3__u_4_4_4:4797; GFX900: ; %bb.0:4798; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4799; GFX900-NEXT: ;;#ASMSTART4800; GFX900-NEXT: ; def v[0:2]4801; GFX900-NEXT: ;;#ASMEND4802; GFX900-NEXT: v_mov_b32_e32 v4, 04803; GFX900-NEXT: v_mov_b32_e32 v2, v14804; GFX900-NEXT: v_mov_b32_e32 v3, v14805; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]4806; GFX900-NEXT: s_waitcnt vmcnt(0)4807; GFX900-NEXT: s_setpc_b64 s[30:31]4808;4809; GFX90A-LABEL: v_shuffle_v4p3_v3p3__u_4_4_4:4810; GFX90A: ; %bb.0:4811; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4812; GFX90A-NEXT: ;;#ASMSTART4813; GFX90A-NEXT: ; def v[0:2]4814; GFX90A-NEXT: ;;#ASMEND4815; GFX90A-NEXT: v_mov_b32_e32 v4, 04816; GFX90A-NEXT: v_mov_b32_e32 v2, v14817; GFX90A-NEXT: v_mov_b32_e32 v3, v14818; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]4819; GFX90A-NEXT: s_waitcnt vmcnt(0)4820; GFX90A-NEXT: s_setpc_b64 s[30:31]4821;4822; GFX942-LABEL: v_shuffle_v4p3_v3p3__u_4_4_4:4823; GFX942: ; %bb.0:4824; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4825; GFX942-NEXT: ;;#ASMSTART4826; GFX942-NEXT: ; def v[0:2]4827; GFX942-NEXT: ;;#ASMEND4828; GFX942-NEXT: v_mov_b32_e32 v4, 04829; GFX942-NEXT: v_mov_b32_e32 v2, v14830; GFX942-NEXT: v_mov_b32_e32 v3, v14831; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]4832; GFX942-NEXT: s_waitcnt vmcnt(0)4833; GFX942-NEXT: s_setpc_b64 s[30:31]4834 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4835 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4836 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 poison, i32 4, i32 4, i32 4>4837 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164838 ret void4839}4840 4841define void @v_shuffle_v4p3_v3p3__0_4_4_4(ptr addrspace(1) inreg %ptr) {4842; GFX900-LABEL: v_shuffle_v4p3_v3p3__0_4_4_4:4843; GFX900: ; %bb.0:4844; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4845; GFX900-NEXT: ;;#ASMSTART4846; GFX900-NEXT: ; def v[0:2]4847; GFX900-NEXT: ;;#ASMEND4848; GFX900-NEXT: ;;#ASMSTART4849; GFX900-NEXT: ; def v[1:3]4850; GFX900-NEXT: ;;#ASMEND4851; GFX900-NEXT: v_mov_b32_e32 v4, 04852; GFX900-NEXT: v_mov_b32_e32 v1, v24853; GFX900-NEXT: v_mov_b32_e32 v3, v24854; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]4855; GFX900-NEXT: s_waitcnt vmcnt(0)4856; GFX900-NEXT: s_setpc_b64 s[30:31]4857;4858; GFX90A-LABEL: v_shuffle_v4p3_v3p3__0_4_4_4:4859; GFX90A: ; %bb.0:4860; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4861; GFX90A-NEXT: ;;#ASMSTART4862; GFX90A-NEXT: ; def v[0:2]4863; GFX90A-NEXT: ;;#ASMEND4864; GFX90A-NEXT: ;;#ASMSTART4865; GFX90A-NEXT: ; def v[2:4]4866; GFX90A-NEXT: ;;#ASMEND4867; GFX90A-NEXT: v_mov_b32_e32 v5, 04868; GFX90A-NEXT: v_mov_b32_e32 v1, v34869; GFX90A-NEXT: v_mov_b32_e32 v2, v34870; GFX90A-NEXT: global_store_dwordx4 v5, v[0:3], s[16:17]4871; GFX90A-NEXT: s_waitcnt vmcnt(0)4872; GFX90A-NEXT: s_setpc_b64 s[30:31]4873;4874; GFX942-LABEL: v_shuffle_v4p3_v3p3__0_4_4_4:4875; GFX942: ; %bb.0:4876; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4877; GFX942-NEXT: ;;#ASMSTART4878; GFX942-NEXT: ; def v[0:2]4879; GFX942-NEXT: ;;#ASMEND4880; GFX942-NEXT: v_mov_b32_e32 v5, 04881; GFX942-NEXT: ;;#ASMSTART4882; GFX942-NEXT: ; def v[2:4]4883; GFX942-NEXT: ;;#ASMEND4884; GFX942-NEXT: s_nop 04885; GFX942-NEXT: v_mov_b32_e32 v1, v34886; GFX942-NEXT: v_mov_b32_e32 v2, v34887; GFX942-NEXT: global_store_dwordx4 v5, v[0:3], s[0:1]4888; GFX942-NEXT: s_waitcnt vmcnt(0)4889; GFX942-NEXT: s_setpc_b64 s[30:31]4890 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4891 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4892 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 0, i32 4, i32 4, i32 4>4893 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164894 ret void4895}4896 4897define void @v_shuffle_v4p3_v3p3__1_4_4_4(ptr addrspace(1) inreg %ptr) {4898; GFX900-LABEL: v_shuffle_v4p3_v3p3__1_4_4_4:4899; GFX900: ; %bb.0:4900; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4901; GFX900-NEXT: ;;#ASMSTART4902; GFX900-NEXT: ; def v[0:2]4903; GFX900-NEXT: ;;#ASMEND4904; GFX900-NEXT: ;;#ASMSTART4905; GFX900-NEXT: ; def v[2:4]4906; GFX900-NEXT: ;;#ASMEND4907; GFX900-NEXT: v_mov_b32_e32 v5, 04908; GFX900-NEXT: v_mov_b32_e32 v2, v34909; GFX900-NEXT: v_mov_b32_e32 v4, v34910; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]4911; GFX900-NEXT: s_waitcnt vmcnt(0)4912; GFX900-NEXT: s_setpc_b64 s[30:31]4913;4914; GFX90A-LABEL: v_shuffle_v4p3_v3p3__1_4_4_4:4915; GFX90A: ; %bb.0:4916; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4917; GFX90A-NEXT: ;;#ASMSTART4918; GFX90A-NEXT: ; def v[2:4]4919; GFX90A-NEXT: ;;#ASMEND4920; GFX90A-NEXT: ;;#ASMSTART4921; GFX90A-NEXT: ; def v[0:2]4922; GFX90A-NEXT: ;;#ASMEND4923; GFX90A-NEXT: v_mov_b32_e32 v5, 04924; GFX90A-NEXT: v_mov_b32_e32 v0, v34925; GFX90A-NEXT: v_mov_b32_e32 v2, v14926; GFX90A-NEXT: v_mov_b32_e32 v3, v14927; GFX90A-NEXT: global_store_dwordx4 v5, v[0:3], s[16:17]4928; GFX90A-NEXT: s_waitcnt vmcnt(0)4929; GFX90A-NEXT: s_setpc_b64 s[30:31]4930;4931; GFX942-LABEL: v_shuffle_v4p3_v3p3__1_4_4_4:4932; GFX942: ; %bb.0:4933; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4934; GFX942-NEXT: ;;#ASMSTART4935; GFX942-NEXT: ; def v[2:4]4936; GFX942-NEXT: ;;#ASMEND4937; GFX942-NEXT: v_mov_b32_e32 v5, 04938; GFX942-NEXT: ;;#ASMSTART4939; GFX942-NEXT: ; def v[0:2]4940; GFX942-NEXT: ;;#ASMEND4941; GFX942-NEXT: s_nop 04942; GFX942-NEXT: v_mov_b32_e32 v0, v34943; GFX942-NEXT: v_mov_b32_e32 v2, v14944; GFX942-NEXT: v_mov_b32_e32 v3, v14945; GFX942-NEXT: global_store_dwordx4 v5, v[0:3], s[0:1]4946; GFX942-NEXT: s_waitcnt vmcnt(0)4947; GFX942-NEXT: s_setpc_b64 s[30:31]4948 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4949 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()4950 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 1, i32 4, i32 4, i32 4>4951 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 164952 ret void4953}4954 4955define void @v_shuffle_v4p3_v3p3__2_4_4_4(ptr addrspace(1) inreg %ptr) {4956; GFX900-LABEL: v_shuffle_v4p3_v3p3__2_4_4_4:4957; GFX900: ; %bb.0:4958; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4959; GFX900-NEXT: ;;#ASMSTART4960; GFX900-NEXT: ; def v[3:5]4961; GFX900-NEXT: ;;#ASMEND4962; GFX900-NEXT: v_mov_b32_e32 v6, 04963; GFX900-NEXT: v_mov_b32_e32 v3, v44964; GFX900-NEXT: v_mov_b32_e32 v5, v44965; GFX900-NEXT: ;;#ASMSTART4966; GFX900-NEXT: ; def v[0:2]4967; GFX900-NEXT: ;;#ASMEND4968; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]4969; GFX900-NEXT: s_waitcnt vmcnt(0)4970; GFX900-NEXT: s_setpc_b64 s[30:31]4971;4972; GFX90A-LABEL: v_shuffle_v4p3_v3p3__2_4_4_4:4973; GFX90A: ; %bb.0:4974; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4975; GFX90A-NEXT: ;;#ASMSTART4976; GFX90A-NEXT: ; def v[4:6]4977; GFX90A-NEXT: ;;#ASMEND4978; GFX90A-NEXT: v_mov_b32_e32 v7, 04979; GFX90A-NEXT: v_mov_b32_e32 v3, v54980; GFX90A-NEXT: v_mov_b32_e32 v4, v54981; GFX90A-NEXT: ;;#ASMSTART4982; GFX90A-NEXT: ; def v[0:2]4983; GFX90A-NEXT: ;;#ASMEND4984; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]4985; GFX90A-NEXT: s_waitcnt vmcnt(0)4986; GFX90A-NEXT: s_setpc_b64 s[30:31]4987;4988; GFX942-LABEL: v_shuffle_v4p3_v3p3__2_4_4_4:4989; GFX942: ; %bb.0:4990; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4991; GFX942-NEXT: ;;#ASMSTART4992; GFX942-NEXT: ; def v[4:6]4993; GFX942-NEXT: ;;#ASMEND4994; GFX942-NEXT: v_mov_b32_e32 v7, 04995; GFX942-NEXT: v_mov_b32_e32 v3, v54996; GFX942-NEXT: v_mov_b32_e32 v4, v54997; GFX942-NEXT: ;;#ASMSTART4998; GFX942-NEXT: ; def v[0:2]4999; GFX942-NEXT: ;;#ASMEND5000; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]5001; GFX942-NEXT: s_waitcnt vmcnt(0)5002; GFX942-NEXT: s_setpc_b64 s[30:31]5003 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5004 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5005 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 2, i32 4, i32 4, i32 4>5006 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165007 ret void5008}5009 5010define void @v_shuffle_v4p3_v3p3__3_4_4_4(ptr addrspace(1) inreg %ptr) {5011; GFX900-LABEL: v_shuffle_v4p3_v3p3__3_4_4_4:5012; GFX900: ; %bb.0:5013; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5014; GFX900-NEXT: ;;#ASMSTART5015; GFX900-NEXT: ; def v[0:2]5016; GFX900-NEXT: ;;#ASMEND5017; GFX900-NEXT: v_mov_b32_e32 v4, 05018; GFX900-NEXT: v_mov_b32_e32 v2, v15019; GFX900-NEXT: v_mov_b32_e32 v3, v15020; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]5021; GFX900-NEXT: s_waitcnt vmcnt(0)5022; GFX900-NEXT: s_setpc_b64 s[30:31]5023;5024; GFX90A-LABEL: v_shuffle_v4p3_v3p3__3_4_4_4:5025; GFX90A: ; %bb.0:5026; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5027; GFX90A-NEXT: ;;#ASMSTART5028; GFX90A-NEXT: ; def v[0:2]5029; GFX90A-NEXT: ;;#ASMEND5030; GFX90A-NEXT: v_mov_b32_e32 v4, 05031; GFX90A-NEXT: v_mov_b32_e32 v2, v15032; GFX90A-NEXT: v_mov_b32_e32 v3, v15033; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]5034; GFX90A-NEXT: s_waitcnt vmcnt(0)5035; GFX90A-NEXT: s_setpc_b64 s[30:31]5036;5037; GFX942-LABEL: v_shuffle_v4p3_v3p3__3_4_4_4:5038; GFX942: ; %bb.0:5039; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5040; GFX942-NEXT: ;;#ASMSTART5041; GFX942-NEXT: ; def v[0:2]5042; GFX942-NEXT: ;;#ASMEND5043; GFX942-NEXT: v_mov_b32_e32 v4, 05044; GFX942-NEXT: v_mov_b32_e32 v2, v15045; GFX942-NEXT: v_mov_b32_e32 v3, v15046; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]5047; GFX942-NEXT: s_waitcnt vmcnt(0)5048; GFX942-NEXT: s_setpc_b64 s[30:31]5049 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5050 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5051 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 4, i32 4, i32 4>5052 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165053 ret void5054}5055 5056define void @v_shuffle_v4p3_v3p3__4_4_4_4(ptr addrspace(1) inreg %ptr) {5057; GFX900-LABEL: v_shuffle_v4p3_v3p3__4_4_4_4:5058; GFX900: ; %bb.0:5059; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5060; GFX900-NEXT: ;;#ASMSTART5061; GFX900-NEXT: ; def v[0:2]5062; GFX900-NEXT: ;;#ASMEND5063; GFX900-NEXT: v_mov_b32_e32 v5, 05064; GFX900-NEXT: v_mov_b32_e32 v2, v15065; GFX900-NEXT: v_mov_b32_e32 v3, v15066; GFX900-NEXT: v_mov_b32_e32 v4, v15067; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]5068; GFX900-NEXT: s_waitcnt vmcnt(0)5069; GFX900-NEXT: s_setpc_b64 s[30:31]5070;5071; GFX90A-LABEL: v_shuffle_v4p3_v3p3__4_4_4_4:5072; GFX90A: ; %bb.0:5073; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5074; GFX90A-NEXT: ;;#ASMSTART5075; GFX90A-NEXT: ; def v[0:2]5076; GFX90A-NEXT: ;;#ASMEND5077; GFX90A-NEXT: v_mov_b32_e32 v4, 05078; GFX90A-NEXT: v_mov_b32_e32 v0, v15079; GFX90A-NEXT: v_mov_b32_e32 v2, v15080; GFX90A-NEXT: v_mov_b32_e32 v3, v15081; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]5082; GFX90A-NEXT: s_waitcnt vmcnt(0)5083; GFX90A-NEXT: s_setpc_b64 s[30:31]5084;5085; GFX942-LABEL: v_shuffle_v4p3_v3p3__4_4_4_4:5086; GFX942: ; %bb.0:5087; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5088; GFX942-NEXT: ;;#ASMSTART5089; GFX942-NEXT: ; def v[0:2]5090; GFX942-NEXT: ;;#ASMEND5091; GFX942-NEXT: v_mov_b32_e32 v4, 05092; GFX942-NEXT: v_mov_b32_e32 v0, v15093; GFX942-NEXT: v_mov_b32_e32 v2, v15094; GFX942-NEXT: v_mov_b32_e32 v3, v15095; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]5096; GFX942-NEXT: s_waitcnt vmcnt(0)5097; GFX942-NEXT: s_setpc_b64 s[30:31]5098 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5099 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5100 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 4, i32 4, i32 4, i32 4>5101 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165102 ret void5103}5104 5105define void @v_shuffle_v4p3_v3p3__5_4_4_4(ptr addrspace(1) inreg %ptr) {5106; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_4_4_4:5107; GFX900: ; %bb.0:5108; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5109; GFX900-NEXT: v_mov_b32_e32 v6, 05110; GFX900-NEXT: ;;#ASMSTART5111; GFX900-NEXT: ; def v[0:2]5112; GFX900-NEXT: ;;#ASMEND5113; GFX900-NEXT: v_mov_b32_e32 v3, v15114; GFX900-NEXT: v_mov_b32_e32 v4, v15115; GFX900-NEXT: v_mov_b32_e32 v5, v15116; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], 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_v4p3_v3p3__5_4_4_4:5121; GFX90A: ; %bb.0:5122; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5123; GFX90A-NEXT: v_mov_b32_e32 v6, 05124; GFX90A-NEXT: ;;#ASMSTART5125; GFX90A-NEXT: ; def v[0:2]5126; GFX90A-NEXT: ;;#ASMEND5127; GFX90A-NEXT: v_mov_b32_e32 v3, v15128; GFX90A-NEXT: v_mov_b32_e32 v4, v15129; GFX90A-NEXT: v_mov_b32_e32 v5, v15130; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]5131; GFX90A-NEXT: s_waitcnt vmcnt(0)5132; GFX90A-NEXT: s_setpc_b64 s[30:31]5133;5134; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_4_4_4:5135; GFX942: ; %bb.0:5136; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5137; GFX942-NEXT: v_mov_b32_e32 v6, 05138; GFX942-NEXT: ;;#ASMSTART5139; GFX942-NEXT: ; def v[0:2]5140; GFX942-NEXT: ;;#ASMEND5141; GFX942-NEXT: s_nop 05142; GFX942-NEXT: v_mov_b32_e32 v3, v15143; GFX942-NEXT: v_mov_b32_e32 v4, v15144; GFX942-NEXT: v_mov_b32_e32 v5, v15145; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]5146; GFX942-NEXT: s_waitcnt vmcnt(0)5147; GFX942-NEXT: s_setpc_b64 s[30:31]5148 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5149 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5150 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 4, i32 4, i32 4>5151 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165152 ret void5153}5154 5155define void @v_shuffle_v4p3_v3p3__5_u_4_4(ptr addrspace(1) inreg %ptr) {5156; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_u_4_4:5157; GFX900: ; %bb.0:5158; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5159; GFX900-NEXT: v_mov_b32_e32 v3, 05160; GFX900-NEXT: ;;#ASMSTART5161; GFX900-NEXT: ; def v[0:2]5162; GFX900-NEXT: ;;#ASMEND5163; GFX900-NEXT: v_mov_b32_e32 v4, v15164; GFX900-NEXT: v_mov_b32_e32 v5, v15165; GFX900-NEXT: global_store_dwordx4 v3, v[2:5], s[16:17]5166; GFX900-NEXT: s_waitcnt vmcnt(0)5167; GFX900-NEXT: s_setpc_b64 s[30:31]5168;5169; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_u_4_4:5170; GFX90A: ; %bb.0:5171; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5172; GFX90A-NEXT: v_mov_b32_e32 v3, 05173; GFX90A-NEXT: ;;#ASMSTART5174; GFX90A-NEXT: ; def v[0:2]5175; GFX90A-NEXT: ;;#ASMEND5176; GFX90A-NEXT: v_mov_b32_e32 v4, v15177; GFX90A-NEXT: v_mov_b32_e32 v5, v15178; GFX90A-NEXT: global_store_dwordx4 v3, v[2:5], s[16:17]5179; GFX90A-NEXT: s_waitcnt vmcnt(0)5180; GFX90A-NEXT: s_setpc_b64 s[30:31]5181;5182; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_u_4_4:5183; GFX942: ; %bb.0:5184; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5185; GFX942-NEXT: v_mov_b32_e32 v3, 05186; GFX942-NEXT: ;;#ASMSTART5187; GFX942-NEXT: ; def v[0:2]5188; GFX942-NEXT: ;;#ASMEND5189; GFX942-NEXT: s_nop 05190; GFX942-NEXT: v_mov_b32_e32 v4, v15191; GFX942-NEXT: v_mov_b32_e32 v5, v15192; GFX942-NEXT: global_store_dwordx4 v3, v[2:5], s[0:1]5193; GFX942-NEXT: s_waitcnt vmcnt(0)5194; GFX942-NEXT: s_setpc_b64 s[30:31]5195 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5196 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5197 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 poison, i32 4, i32 4>5198 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165199 ret void5200}5201 5202define void @v_shuffle_v4p3_v3p3__5_0_4_4(ptr addrspace(1) inreg %ptr) {5203; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_0_4_4:5204; GFX900: ; %bb.0:5205; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5206; GFX900-NEXT: ;;#ASMSTART5207; GFX900-NEXT: ; def v[3:5]5208; GFX900-NEXT: ;;#ASMEND5209; GFX900-NEXT: v_mov_b32_e32 v6, 05210; GFX900-NEXT: ;;#ASMSTART5211; GFX900-NEXT: ; def v[0:2]5212; GFX900-NEXT: ;;#ASMEND5213; GFX900-NEXT: v_mov_b32_e32 v4, v15214; GFX900-NEXT: v_mov_b32_e32 v5, v15215; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]5216; GFX900-NEXT: s_waitcnt vmcnt(0)5217; GFX900-NEXT: s_setpc_b64 s[30:31]5218;5219; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_0_4_4:5220; GFX90A: ; %bb.0:5221; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5222; GFX90A-NEXT: ;;#ASMSTART5223; GFX90A-NEXT: ; def v[4:6]5224; GFX90A-NEXT: ;;#ASMEND5225; GFX90A-NEXT: v_mov_b32_e32 v7, 05226; GFX90A-NEXT: ;;#ASMSTART5227; GFX90A-NEXT: ; def v[0:2]5228; GFX90A-NEXT: ;;#ASMEND5229; GFX90A-NEXT: v_mov_b32_e32 v3, v45230; GFX90A-NEXT: v_mov_b32_e32 v4, v15231; GFX90A-NEXT: v_mov_b32_e32 v5, v15232; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]5233; GFX90A-NEXT: s_waitcnt vmcnt(0)5234; GFX90A-NEXT: s_setpc_b64 s[30:31]5235;5236; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_0_4_4:5237; GFX942: ; %bb.0:5238; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5239; GFX942-NEXT: ;;#ASMSTART5240; GFX942-NEXT: ; def v[4:6]5241; GFX942-NEXT: ;;#ASMEND5242; GFX942-NEXT: v_mov_b32_e32 v7, 05243; GFX942-NEXT: ;;#ASMSTART5244; GFX942-NEXT: ; def v[0:2]5245; GFX942-NEXT: ;;#ASMEND5246; GFX942-NEXT: v_mov_b32_e32 v3, v45247; GFX942-NEXT: v_mov_b32_e32 v4, v15248; GFX942-NEXT: v_mov_b32_e32 v5, v15249; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]5250; GFX942-NEXT: s_waitcnt vmcnt(0)5251; GFX942-NEXT: s_setpc_b64 s[30:31]5252 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5253 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5254 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 0, i32 4, i32 4>5255 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165256 ret void5257}5258 5259define void @v_shuffle_v4p3_v3p3__5_1_4_4(ptr addrspace(1) inreg %ptr) {5260; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_1_4_4:5261; GFX900: ; %bb.0:5262; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5263; GFX900-NEXT: ;;#ASMSTART5264; GFX900-NEXT: ; def v[2:4]5265; GFX900-NEXT: ;;#ASMEND5266; GFX900-NEXT: v_mov_b32_e32 v6, 05267; GFX900-NEXT: ;;#ASMSTART5268; GFX900-NEXT: ; def v[0:2]5269; GFX900-NEXT: ;;#ASMEND5270; GFX900-NEXT: v_mov_b32_e32 v4, v15271; GFX900-NEXT: v_mov_b32_e32 v5, v15272; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]5273; GFX900-NEXT: s_waitcnt vmcnt(0)5274; GFX900-NEXT: s_setpc_b64 s[30:31]5275;5276; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_1_4_4:5277; GFX90A: ; %bb.0:5278; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5279; GFX90A-NEXT: ;;#ASMSTART5280; GFX90A-NEXT: ; def v[2:4]5281; GFX90A-NEXT: ;;#ASMEND5282; GFX90A-NEXT: v_mov_b32_e32 v6, 05283; GFX90A-NEXT: ;;#ASMSTART5284; GFX90A-NEXT: ; def v[0:2]5285; GFX90A-NEXT: ;;#ASMEND5286; GFX90A-NEXT: v_mov_b32_e32 v4, v15287; GFX90A-NEXT: v_mov_b32_e32 v5, v15288; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], 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_v4p3_v3p3__5_1_4_4:5293; GFX942: ; %bb.0:5294; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5295; GFX942-NEXT: ;;#ASMSTART5296; GFX942-NEXT: ; def v[2:4]5297; GFX942-NEXT: ;;#ASMEND5298; GFX942-NEXT: v_mov_b32_e32 v6, 05299; GFX942-NEXT: ;;#ASMSTART5300; GFX942-NEXT: ; def v[0:2]5301; GFX942-NEXT: ;;#ASMEND5302; GFX942-NEXT: s_nop 05303; GFX942-NEXT: v_mov_b32_e32 v4, v15304; GFX942-NEXT: v_mov_b32_e32 v5, v15305; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]5306; GFX942-NEXT: s_waitcnt vmcnt(0)5307; GFX942-NEXT: s_setpc_b64 s[30:31]5308 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5309 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5310 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 1, i32 4, i32 4>5311 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165312 ret void5313}5314 5315define void @v_shuffle_v4p3_v3p3__5_2_4_4(ptr addrspace(1) inreg %ptr) {5316; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_2_4_4:5317; GFX900: ; %bb.0:5318; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5319; GFX900-NEXT: ;;#ASMSTART5320; GFX900-NEXT: ; def v[1:3]5321; GFX900-NEXT: ;;#ASMEND5322; GFX900-NEXT: v_mov_b32_e32 v6, 05323; GFX900-NEXT: ;;#ASMSTART5324; GFX900-NEXT: ; def v[0:2]5325; GFX900-NEXT: ;;#ASMEND5326; GFX900-NEXT: v_mov_b32_e32 v4, v15327; GFX900-NEXT: v_mov_b32_e32 v5, v15328; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]5329; GFX900-NEXT: s_waitcnt vmcnt(0)5330; GFX900-NEXT: s_setpc_b64 s[30:31]5331;5332; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_2_4_4:5333; GFX90A: ; %bb.0:5334; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5335; GFX90A-NEXT: ;;#ASMSTART5336; GFX90A-NEXT: ; def v[2:4]5337; GFX90A-NEXT: ;;#ASMEND5338; GFX90A-NEXT: v_mov_b32_e32 v6, 05339; GFX90A-NEXT: ;;#ASMSTART5340; GFX90A-NEXT: ; def v[0:2]5341; GFX90A-NEXT: ;;#ASMEND5342; GFX90A-NEXT: v_mov_b32_e32 v3, v45343; GFX90A-NEXT: v_mov_b32_e32 v4, v15344; GFX90A-NEXT: v_mov_b32_e32 v5, v15345; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]5346; GFX90A-NEXT: s_waitcnt vmcnt(0)5347; GFX90A-NEXT: s_setpc_b64 s[30:31]5348;5349; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_2_4_4:5350; GFX942: ; %bb.0:5351; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5352; GFX942-NEXT: ;;#ASMSTART5353; GFX942-NEXT: ; def v[2:4]5354; GFX942-NEXT: ;;#ASMEND5355; GFX942-NEXT: v_mov_b32_e32 v6, 05356; GFX942-NEXT: ;;#ASMSTART5357; GFX942-NEXT: ; def v[0:2]5358; GFX942-NEXT: ;;#ASMEND5359; GFX942-NEXT: v_mov_b32_e32 v3, v45360; GFX942-NEXT: v_mov_b32_e32 v4, v15361; GFX942-NEXT: v_mov_b32_e32 v5, v15362; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]5363; GFX942-NEXT: s_waitcnt vmcnt(0)5364; GFX942-NEXT: s_setpc_b64 s[30:31]5365 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5366 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5367 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 2, i32 4, i32 4>5368 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165369 ret void5370}5371 5372define void @v_shuffle_v4p3_v3p3__5_3_4_4(ptr addrspace(1) inreg %ptr) {5373; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_3_4_4:5374; GFX900: ; %bb.0:5375; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5376; GFX900-NEXT: v_mov_b32_e32 v6, 05377; GFX900-NEXT: ;;#ASMSTART5378; GFX900-NEXT: ; def v[0:2]5379; GFX900-NEXT: ;;#ASMEND5380; GFX900-NEXT: v_mov_b32_e32 v3, v05381; GFX900-NEXT: v_mov_b32_e32 v4, v15382; GFX900-NEXT: v_mov_b32_e32 v5, v15383; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]5384; GFX900-NEXT: s_waitcnt vmcnt(0)5385; GFX900-NEXT: s_setpc_b64 s[30:31]5386;5387; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_3_4_4:5388; GFX90A: ; %bb.0:5389; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5390; GFX90A-NEXT: v_mov_b32_e32 v6, 05391; GFX90A-NEXT: ;;#ASMSTART5392; GFX90A-NEXT: ; def v[0:2]5393; GFX90A-NEXT: ;;#ASMEND5394; GFX90A-NEXT: v_mov_b32_e32 v3, v05395; GFX90A-NEXT: v_mov_b32_e32 v4, v15396; GFX90A-NEXT: v_mov_b32_e32 v5, v15397; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]5398; GFX90A-NEXT: s_waitcnt vmcnt(0)5399; GFX90A-NEXT: s_setpc_b64 s[30:31]5400;5401; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_3_4_4:5402; GFX942: ; %bb.0:5403; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5404; GFX942-NEXT: v_mov_b32_e32 v6, 05405; GFX942-NEXT: ;;#ASMSTART5406; GFX942-NEXT: ; def v[0:2]5407; GFX942-NEXT: ;;#ASMEND5408; GFX942-NEXT: s_nop 05409; GFX942-NEXT: v_mov_b32_e32 v3, v05410; GFX942-NEXT: v_mov_b32_e32 v4, v15411; GFX942-NEXT: v_mov_b32_e32 v5, v15412; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]5413; GFX942-NEXT: s_waitcnt vmcnt(0)5414; GFX942-NEXT: s_setpc_b64 s[30:31]5415 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5416 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5417 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 3, i32 4, i32 4>5418 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165419 ret void5420}5421 5422define void @v_shuffle_v4p3_v3p3__5_5_4_4(ptr addrspace(1) inreg %ptr) {5423; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_4_4:5424; GFX900: ; %bb.0:5425; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5426; GFX900-NEXT: v_mov_b32_e32 v6, 05427; GFX900-NEXT: ;;#ASMSTART5428; GFX900-NEXT: ; def v[0:2]5429; GFX900-NEXT: ;;#ASMEND5430; GFX900-NEXT: v_mov_b32_e32 v3, v25431; GFX900-NEXT: v_mov_b32_e32 v4, v15432; GFX900-NEXT: v_mov_b32_e32 v5, v15433; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]5434; GFX900-NEXT: s_waitcnt vmcnt(0)5435; GFX900-NEXT: s_setpc_b64 s[30:31]5436;5437; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_4_4:5438; GFX90A: ; %bb.0:5439; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5440; GFX90A-NEXT: v_mov_b32_e32 v6, 05441; GFX90A-NEXT: ;;#ASMSTART5442; GFX90A-NEXT: ; def v[0:2]5443; GFX90A-NEXT: ;;#ASMEND5444; GFX90A-NEXT: v_mov_b32_e32 v3, v25445; GFX90A-NEXT: v_mov_b32_e32 v4, v15446; GFX90A-NEXT: v_mov_b32_e32 v5, v15447; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]5448; GFX90A-NEXT: s_waitcnt vmcnt(0)5449; GFX90A-NEXT: s_setpc_b64 s[30:31]5450;5451; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_4_4:5452; GFX942: ; %bb.0:5453; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5454; GFX942-NEXT: v_mov_b32_e32 v6, 05455; GFX942-NEXT: ;;#ASMSTART5456; GFX942-NEXT: ; def v[0:2]5457; GFX942-NEXT: ;;#ASMEND5458; GFX942-NEXT: s_nop 05459; GFX942-NEXT: v_mov_b32_e32 v3, v25460; GFX942-NEXT: v_mov_b32_e32 v4, v15461; GFX942-NEXT: v_mov_b32_e32 v5, v15462; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]5463; GFX942-NEXT: s_waitcnt vmcnt(0)5464; GFX942-NEXT: s_setpc_b64 s[30:31]5465 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5466 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5467 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 4>5468 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165469 ret void5470}5471 5472define void @v_shuffle_v4p3_v3p3__5_5_u_4(ptr addrspace(1) inreg %ptr) {5473; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_u_4:5474; GFX900: ; %bb.0:5475; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5476; GFX900-NEXT: v_mov_b32_e32 v4, 05477; GFX900-NEXT: ;;#ASMSTART5478; GFX900-NEXT: ; def v[0:2]5479; GFX900-NEXT: ;;#ASMEND5480; GFX900-NEXT: v_mov_b32_e32 v3, v25481; GFX900-NEXT: v_mov_b32_e32 v5, v15482; GFX900-NEXT: global_store_dwordx4 v4, v[2:5], s[16:17]5483; GFX900-NEXT: s_waitcnt vmcnt(0)5484; GFX900-NEXT: s_setpc_b64 s[30:31]5485;5486; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_u_4:5487; GFX90A: ; %bb.0:5488; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5489; GFX90A-NEXT: v_mov_b32_e32 v4, 05490; GFX90A-NEXT: ;;#ASMSTART5491; GFX90A-NEXT: ; def v[0:2]5492; GFX90A-NEXT: ;;#ASMEND5493; GFX90A-NEXT: v_mov_b32_e32 v3, v25494; GFX90A-NEXT: v_mov_b32_e32 v5, v15495; GFX90A-NEXT: global_store_dwordx4 v4, v[2:5], s[16:17]5496; GFX90A-NEXT: s_waitcnt vmcnt(0)5497; GFX90A-NEXT: s_setpc_b64 s[30:31]5498;5499; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_u_4:5500; GFX942: ; %bb.0:5501; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5502; GFX942-NEXT: v_mov_b32_e32 v4, 05503; GFX942-NEXT: ;;#ASMSTART5504; GFX942-NEXT: ; def v[0:2]5505; GFX942-NEXT: ;;#ASMEND5506; GFX942-NEXT: s_nop 05507; GFX942-NEXT: v_mov_b32_e32 v3, v25508; GFX942-NEXT: v_mov_b32_e32 v5, v15509; GFX942-NEXT: global_store_dwordx4 v4, v[2:5], s[0:1]5510; GFX942-NEXT: s_waitcnt vmcnt(0)5511; GFX942-NEXT: s_setpc_b64 s[30:31]5512 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5513 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5514 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 4>5515 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165516 ret void5517}5518 5519define void @v_shuffle_v4p3_v3p3__5_5_0_4(ptr addrspace(1) inreg %ptr) {5520; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_0_4:5521; GFX900: ; %bb.0:5522; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5523; GFX900-NEXT: ;;#ASMSTART5524; GFX900-NEXT: ; def v[4:6]5525; GFX900-NEXT: ;;#ASMEND5526; GFX900-NEXT: v_mov_b32_e32 v7, 05527; GFX900-NEXT: ;;#ASMSTART5528; GFX900-NEXT: ; def v[0:2]5529; GFX900-NEXT: ;;#ASMEND5530; GFX900-NEXT: v_mov_b32_e32 v3, v25531; GFX900-NEXT: v_mov_b32_e32 v5, v15532; GFX900-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]5533; GFX900-NEXT: s_waitcnt vmcnt(0)5534; GFX900-NEXT: s_setpc_b64 s[30:31]5535;5536; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_0_4:5537; GFX90A: ; %bb.0:5538; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5539; GFX90A-NEXT: ;;#ASMSTART5540; GFX90A-NEXT: ; def v[4:6]5541; GFX90A-NEXT: ;;#ASMEND5542; GFX90A-NEXT: v_mov_b32_e32 v7, 05543; GFX90A-NEXT: ;;#ASMSTART5544; GFX90A-NEXT: ; def v[0:2]5545; GFX90A-NEXT: ;;#ASMEND5546; GFX90A-NEXT: v_mov_b32_e32 v3, v25547; GFX90A-NEXT: v_mov_b32_e32 v5, v15548; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]5549; GFX90A-NEXT: s_waitcnt vmcnt(0)5550; GFX90A-NEXT: s_setpc_b64 s[30:31]5551;5552; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_0_4:5553; GFX942: ; %bb.0:5554; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5555; GFX942-NEXT: ;;#ASMSTART5556; GFX942-NEXT: ; def v[4:6]5557; GFX942-NEXT: ;;#ASMEND5558; GFX942-NEXT: v_mov_b32_e32 v7, 05559; GFX942-NEXT: ;;#ASMSTART5560; GFX942-NEXT: ; def v[0:2]5561; GFX942-NEXT: ;;#ASMEND5562; GFX942-NEXT: s_nop 05563; GFX942-NEXT: v_mov_b32_e32 v3, v25564; GFX942-NEXT: v_mov_b32_e32 v5, v15565; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]5566; GFX942-NEXT: s_waitcnt vmcnt(0)5567; GFX942-NEXT: s_setpc_b64 s[30:31]5568 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5569 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5570 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 4>5571 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165572 ret void5573}5574 5575define void @v_shuffle_v4p3_v3p3__5_5_1_4(ptr addrspace(1) inreg %ptr) {5576; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_1_4:5577; GFX900: ; %bb.0:5578; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5579; GFX900-NEXT: ;;#ASMSTART5580; GFX900-NEXT: ; def v[3:5]5581; GFX900-NEXT: ;;#ASMEND5582; GFX900-NEXT: v_mov_b32_e32 v6, 05583; GFX900-NEXT: ;;#ASMSTART5584; GFX900-NEXT: ; def v[0:2]5585; GFX900-NEXT: ;;#ASMEND5586; GFX900-NEXT: v_mov_b32_e32 v3, v25587; GFX900-NEXT: v_mov_b32_e32 v5, v15588; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]5589; GFX900-NEXT: s_waitcnt vmcnt(0)5590; GFX900-NEXT: s_setpc_b64 s[30:31]5591;5592; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_1_4:5593; GFX90A: ; %bb.0:5594; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5595; GFX90A-NEXT: ;;#ASMSTART5596; GFX90A-NEXT: ; def v[4:6]5597; GFX90A-NEXT: ;;#ASMEND5598; GFX90A-NEXT: v_mov_b32_e32 v7, 05599; GFX90A-NEXT: ;;#ASMSTART5600; GFX90A-NEXT: ; def v[0:2]5601; GFX90A-NEXT: ;;#ASMEND5602; GFX90A-NEXT: v_mov_b32_e32 v3, v25603; GFX90A-NEXT: v_mov_b32_e32 v4, v55604; GFX90A-NEXT: v_mov_b32_e32 v5, v15605; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]5606; GFX90A-NEXT: s_waitcnt vmcnt(0)5607; GFX90A-NEXT: s_setpc_b64 s[30:31]5608;5609; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_1_4:5610; GFX942: ; %bb.0:5611; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5612; GFX942-NEXT: ;;#ASMSTART5613; GFX942-NEXT: ; def v[4:6]5614; GFX942-NEXT: ;;#ASMEND5615; GFX942-NEXT: v_mov_b32_e32 v7, 05616; GFX942-NEXT: ;;#ASMSTART5617; GFX942-NEXT: ; def v[0:2]5618; GFX942-NEXT: ;;#ASMEND5619; GFX942-NEXT: v_mov_b32_e32 v4, v55620; GFX942-NEXT: v_mov_b32_e32 v3, v25621; GFX942-NEXT: v_mov_b32_e32 v5, v15622; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]5623; GFX942-NEXT: s_waitcnt vmcnt(0)5624; GFX942-NEXT: s_setpc_b64 s[30:31]5625 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5626 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5627 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 4>5628 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165629 ret void5630}5631 5632define void @v_shuffle_v4p3_v3p3__5_5_2_4(ptr addrspace(1) inreg %ptr) {5633; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_2_4:5634; GFX900: ; %bb.0:5635; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5636; GFX900-NEXT: ;;#ASMSTART5637; GFX900-NEXT: ; def v[2:4]5638; GFX900-NEXT: ;;#ASMEND5639; GFX900-NEXT: v_mov_b32_e32 v6, 05640; GFX900-NEXT: ;;#ASMSTART5641; GFX900-NEXT: ; def v[0:2]5642; GFX900-NEXT: ;;#ASMEND5643; GFX900-NEXT: v_mov_b32_e32 v3, v25644; GFX900-NEXT: v_mov_b32_e32 v5, v15645; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]5646; GFX900-NEXT: s_waitcnt vmcnt(0)5647; GFX900-NEXT: s_setpc_b64 s[30:31]5648;5649; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_2_4:5650; GFX90A: ; %bb.0:5651; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5652; GFX90A-NEXT: ;;#ASMSTART5653; GFX90A-NEXT: ; def v[2:4]5654; GFX90A-NEXT: ;;#ASMEND5655; GFX90A-NEXT: v_mov_b32_e32 v6, 05656; GFX90A-NEXT: ;;#ASMSTART5657; GFX90A-NEXT: ; def v[0:2]5658; GFX90A-NEXT: ;;#ASMEND5659; GFX90A-NEXT: v_mov_b32_e32 v3, v25660; GFX90A-NEXT: v_mov_b32_e32 v5, v15661; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]5662; GFX90A-NEXT: s_waitcnt vmcnt(0)5663; GFX90A-NEXT: s_setpc_b64 s[30:31]5664;5665; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_2_4:5666; GFX942: ; %bb.0:5667; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5668; GFX942-NEXT: ;;#ASMSTART5669; GFX942-NEXT: ; def v[2:4]5670; GFX942-NEXT: ;;#ASMEND5671; GFX942-NEXT: v_mov_b32_e32 v6, 05672; GFX942-NEXT: ;;#ASMSTART5673; GFX942-NEXT: ; def v[0:2]5674; GFX942-NEXT: ;;#ASMEND5675; GFX942-NEXT: s_nop 05676; GFX942-NEXT: v_mov_b32_e32 v3, v25677; GFX942-NEXT: v_mov_b32_e32 v5, v15678; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]5679; GFX942-NEXT: s_waitcnt vmcnt(0)5680; GFX942-NEXT: s_setpc_b64 s[30:31]5681 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5682 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5683 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 4>5684 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165685 ret void5686}5687 5688define void @v_shuffle_v4p3_v3p3__5_5_3_4(ptr addrspace(1) inreg %ptr) {5689; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_3_4:5690; GFX900: ; %bb.0:5691; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5692; GFX900-NEXT: v_mov_b32_e32 v6, 05693; GFX900-NEXT: ;;#ASMSTART5694; GFX900-NEXT: ; def v[0:2]5695; GFX900-NEXT: ;;#ASMEND5696; GFX900-NEXT: v_mov_b32_e32 v3, v25697; GFX900-NEXT: v_mov_b32_e32 v4, v05698; GFX900-NEXT: v_mov_b32_e32 v5, v15699; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]5700; GFX900-NEXT: s_waitcnt vmcnt(0)5701; GFX900-NEXT: s_setpc_b64 s[30:31]5702;5703; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_3_4:5704; GFX90A: ; %bb.0:5705; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5706; GFX90A-NEXT: v_mov_b32_e32 v6, 05707; GFX90A-NEXT: ;;#ASMSTART5708; GFX90A-NEXT: ; def v[0:2]5709; GFX90A-NEXT: ;;#ASMEND5710; GFX90A-NEXT: v_mov_b32_e32 v3, v25711; GFX90A-NEXT: v_mov_b32_e32 v4, v05712; GFX90A-NEXT: v_mov_b32_e32 v5, v15713; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]5714; GFX90A-NEXT: s_waitcnt vmcnt(0)5715; GFX90A-NEXT: s_setpc_b64 s[30:31]5716;5717; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_3_4:5718; GFX942: ; %bb.0:5719; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5720; GFX942-NEXT: v_mov_b32_e32 v6, 05721; GFX942-NEXT: ;;#ASMSTART5722; GFX942-NEXT: ; def v[0:2]5723; GFX942-NEXT: ;;#ASMEND5724; GFX942-NEXT: s_nop 05725; GFX942-NEXT: v_mov_b32_e32 v3, v25726; GFX942-NEXT: v_mov_b32_e32 v4, v05727; GFX942-NEXT: v_mov_b32_e32 v5, v15728; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]5729; GFX942-NEXT: s_waitcnt vmcnt(0)5730; GFX942-NEXT: s_setpc_b64 s[30:31]5731 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5732 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5733 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 4>5734 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165735 ret void5736}5737 5738define void @v_shuffle_v4p3_v3p3__u_5_5_5(ptr addrspace(1) inreg %ptr) {5739; GFX900-LABEL: v_shuffle_v4p3_v3p3__u_5_5_5:5740; GFX900: ; %bb.0:5741; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5742; GFX900-NEXT: v_mov_b32_e32 v5, 05743; GFX900-NEXT: ;;#ASMSTART5744; GFX900-NEXT: ; def v[0:2]5745; GFX900-NEXT: ;;#ASMEND5746; GFX900-NEXT: v_mov_b32_e32 v3, v25747; GFX900-NEXT: v_mov_b32_e32 v4, v25748; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]5749; GFX900-NEXT: s_waitcnt vmcnt(0)5750; GFX900-NEXT: s_setpc_b64 s[30:31]5751;5752; GFX90A-LABEL: v_shuffle_v4p3_v3p3__u_5_5_5:5753; GFX90A: ; %bb.0:5754; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5755; GFX90A-NEXT: ;;#ASMSTART5756; GFX90A-NEXT: ; def v[0:2]5757; GFX90A-NEXT: ;;#ASMEND5758; GFX90A-NEXT: v_mov_b32_e32 v4, 05759; GFX90A-NEXT: v_mov_b32_e32 v1, v25760; GFX90A-NEXT: v_mov_b32_e32 v3, v25761; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]5762; GFX90A-NEXT: s_waitcnt vmcnt(0)5763; GFX90A-NEXT: s_setpc_b64 s[30:31]5764;5765; GFX942-LABEL: v_shuffle_v4p3_v3p3__u_5_5_5:5766; GFX942: ; %bb.0:5767; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5768; GFX942-NEXT: ;;#ASMSTART5769; GFX942-NEXT: ; def v[0:2]5770; GFX942-NEXT: ;;#ASMEND5771; GFX942-NEXT: v_mov_b32_e32 v4, 05772; GFX942-NEXT: v_mov_b32_e32 v1, v25773; GFX942-NEXT: v_mov_b32_e32 v3, v25774; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]5775; GFX942-NEXT: s_waitcnt vmcnt(0)5776; GFX942-NEXT: s_setpc_b64 s[30:31]5777 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5778 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5779 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 poison, i32 5, i32 5, i32 5>5780 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165781 ret void5782}5783 5784define void @v_shuffle_v4p3_v3p3__0_5_5_5(ptr addrspace(1) inreg %ptr) {5785; GFX900-LABEL: v_shuffle_v4p3_v3p3__0_5_5_5:5786; GFX900: ; %bb.0:5787; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5788; GFX900-NEXT: ;;#ASMSTART5789; GFX900-NEXT: ; def v[0:2]5790; GFX900-NEXT: ;;#ASMEND5791; GFX900-NEXT: ;;#ASMSTART5792; GFX900-NEXT: ; def v[1:3]5793; GFX900-NEXT: ;;#ASMEND5794; GFX900-NEXT: v_mov_b32_e32 v4, 05795; GFX900-NEXT: v_mov_b32_e32 v1, v35796; GFX900-NEXT: v_mov_b32_e32 v2, v35797; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]5798; GFX900-NEXT: s_waitcnt vmcnt(0)5799; GFX900-NEXT: s_setpc_b64 s[30:31]5800;5801; GFX90A-LABEL: v_shuffle_v4p3_v3p3__0_5_5_5:5802; GFX90A: ; %bb.0:5803; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5804; GFX90A-NEXT: ;;#ASMSTART5805; GFX90A-NEXT: ; def v[0:2]5806; GFX90A-NEXT: ;;#ASMEND5807; GFX90A-NEXT: ;;#ASMSTART5808; GFX90A-NEXT: ; def v[2:4]5809; GFX90A-NEXT: ;;#ASMEND5810; GFX90A-NEXT: v_mov_b32_e32 v5, 05811; GFX90A-NEXT: v_mov_b32_e32 v1, v45812; GFX90A-NEXT: v_mov_b32_e32 v2, v45813; GFX90A-NEXT: v_mov_b32_e32 v3, v45814; GFX90A-NEXT: global_store_dwordx4 v5, v[0:3], s[16:17]5815; GFX90A-NEXT: s_waitcnt vmcnt(0)5816; GFX90A-NEXT: s_setpc_b64 s[30:31]5817;5818; GFX942-LABEL: v_shuffle_v4p3_v3p3__0_5_5_5:5819; GFX942: ; %bb.0:5820; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5821; GFX942-NEXT: ;;#ASMSTART5822; GFX942-NEXT: ; def v[0:2]5823; GFX942-NEXT: ;;#ASMEND5824; GFX942-NEXT: v_mov_b32_e32 v5, 05825; GFX942-NEXT: ;;#ASMSTART5826; GFX942-NEXT: ; def v[2:4]5827; GFX942-NEXT: ;;#ASMEND5828; GFX942-NEXT: s_nop 05829; GFX942-NEXT: v_mov_b32_e32 v1, v45830; GFX942-NEXT: v_mov_b32_e32 v2, v45831; GFX942-NEXT: v_mov_b32_e32 v3, v45832; GFX942-NEXT: global_store_dwordx4 v5, v[0:3], s[0:1]5833; GFX942-NEXT: s_waitcnt vmcnt(0)5834; GFX942-NEXT: s_setpc_b64 s[30:31]5835 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5836 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5837 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 0, i32 5, i32 5, i32 5>5838 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165839 ret void5840}5841 5842define void @v_shuffle_v4p3_v3p3__1_5_5_5(ptr addrspace(1) inreg %ptr) {5843; GFX900-LABEL: v_shuffle_v4p3_v3p3__1_5_5_5:5844; GFX900: ; %bb.0:5845; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5846; GFX900-NEXT: ;;#ASMSTART5847; GFX900-NEXT: ; def v[0:2]5848; GFX900-NEXT: ;;#ASMEND5849; GFX900-NEXT: ;;#ASMSTART5850; GFX900-NEXT: ; def v[2:4]5851; GFX900-NEXT: ;;#ASMEND5852; GFX900-NEXT: v_mov_b32_e32 v5, 05853; GFX900-NEXT: v_mov_b32_e32 v2, v45854; GFX900-NEXT: v_mov_b32_e32 v3, v45855; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]5856; GFX900-NEXT: s_waitcnt vmcnt(0)5857; GFX900-NEXT: s_setpc_b64 s[30:31]5858;5859; GFX90A-LABEL: v_shuffle_v4p3_v3p3__1_5_5_5:5860; GFX90A: ; %bb.0:5861; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5862; GFX90A-NEXT: ;;#ASMSTART5863; GFX90A-NEXT: ; def v[2:4]5864; GFX90A-NEXT: ;;#ASMEND5865; GFX90A-NEXT: ;;#ASMSTART5866; GFX90A-NEXT: ; def v[0:2]5867; GFX90A-NEXT: ;;#ASMEND5868; GFX90A-NEXT: v_mov_b32_e32 v5, 05869; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]5870; GFX90A-NEXT: v_mov_b32_e32 v3, v25871; GFX90A-NEXT: global_store_dwordx4 v5, v[0:3], s[16:17]5872; GFX90A-NEXT: s_waitcnt vmcnt(0)5873; GFX90A-NEXT: s_setpc_b64 s[30:31]5874;5875; GFX942-LABEL: v_shuffle_v4p3_v3p3__1_5_5_5:5876; GFX942: ; %bb.0:5877; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5878; GFX942-NEXT: ;;#ASMSTART5879; GFX942-NEXT: ; def v[2:4]5880; GFX942-NEXT: ;;#ASMEND5881; GFX942-NEXT: v_mov_b32_e32 v5, 05882; GFX942-NEXT: ;;#ASMSTART5883; GFX942-NEXT: ; def v[0:2]5884; GFX942-NEXT: ;;#ASMEND5885; GFX942-NEXT: s_nop 05886; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[2:3], v[2:3] op_sel:[1,0]5887; GFX942-NEXT: v_mov_b32_e32 v3, v25888; GFX942-NEXT: global_store_dwordx4 v5, v[0:3], s[0:1]5889; GFX942-NEXT: s_waitcnt vmcnt(0)5890; GFX942-NEXT: s_setpc_b64 s[30:31]5891 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5892 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5893 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 1, i32 5, i32 5, i32 5>5894 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165895 ret void5896}5897 5898define void @v_shuffle_v4p3_v3p3__2_5_5_5(ptr addrspace(1) inreg %ptr) {5899; GFX900-LABEL: v_shuffle_v4p3_v3p3__2_5_5_5:5900; GFX900: ; %bb.0:5901; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5902; GFX900-NEXT: ;;#ASMSTART5903; GFX900-NEXT: ; def v[3:5]5904; GFX900-NEXT: ;;#ASMEND5905; GFX900-NEXT: v_mov_b32_e32 v6, 05906; GFX900-NEXT: v_mov_b32_e32 v3, v55907; GFX900-NEXT: v_mov_b32_e32 v4, v55908; GFX900-NEXT: ;;#ASMSTART5909; GFX900-NEXT: ; def v[0:2]5910; GFX900-NEXT: ;;#ASMEND5911; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]5912; GFX900-NEXT: s_waitcnt vmcnt(0)5913; GFX900-NEXT: s_setpc_b64 s[30:31]5914;5915; GFX90A-LABEL: v_shuffle_v4p3_v3p3__2_5_5_5:5916; GFX90A: ; %bb.0:5917; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5918; GFX90A-NEXT: ;;#ASMSTART5919; GFX90A-NEXT: ; def v[4:6]5920; GFX90A-NEXT: ;;#ASMEND5921; GFX90A-NEXT: v_mov_b32_e32 v7, 05922; GFX90A-NEXT: v_mov_b32_e32 v3, v65923; GFX90A-NEXT: v_mov_b32_e32 v4, v65924; GFX90A-NEXT: v_mov_b32_e32 v5, v65925; GFX90A-NEXT: ;;#ASMSTART5926; GFX90A-NEXT: ; def v[0:2]5927; GFX90A-NEXT: ;;#ASMEND5928; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]5929; GFX90A-NEXT: s_waitcnt vmcnt(0)5930; GFX90A-NEXT: s_setpc_b64 s[30:31]5931;5932; GFX942-LABEL: v_shuffle_v4p3_v3p3__2_5_5_5:5933; GFX942: ; %bb.0:5934; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5935; GFX942-NEXT: ;;#ASMSTART5936; GFX942-NEXT: ; def v[4:6]5937; GFX942-NEXT: ;;#ASMEND5938; GFX942-NEXT: v_mov_b32_e32 v7, 05939; GFX942-NEXT: v_mov_b32_e32 v3, v65940; GFX942-NEXT: v_mov_b32_e32 v4, v65941; GFX942-NEXT: v_mov_b32_e32 v5, v65942; GFX942-NEXT: ;;#ASMSTART5943; GFX942-NEXT: ; def v[0:2]5944; GFX942-NEXT: ;;#ASMEND5945; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]5946; GFX942-NEXT: s_waitcnt vmcnt(0)5947; GFX942-NEXT: s_setpc_b64 s[30:31]5948 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5949 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5950 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 2, i32 5, i32 5, i32 5>5951 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165952 ret void5953}5954 5955define void @v_shuffle_v4p3_v3p3__3_5_5_5(ptr addrspace(1) inreg %ptr) {5956; GFX900-LABEL: v_shuffle_v4p3_v3p3__3_5_5_5:5957; GFX900: ; %bb.0:5958; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5959; GFX900-NEXT: ;;#ASMSTART5960; GFX900-NEXT: ; def v[0:2]5961; GFX900-NEXT: ;;#ASMEND5962; GFX900-NEXT: v_mov_b32_e32 v4, 05963; GFX900-NEXT: v_mov_b32_e32 v1, v25964; GFX900-NEXT: v_mov_b32_e32 v3, v25965; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]5966; GFX900-NEXT: s_waitcnt vmcnt(0)5967; GFX900-NEXT: s_setpc_b64 s[30:31]5968;5969; GFX90A-LABEL: v_shuffle_v4p3_v3p3__3_5_5_5:5970; GFX90A: ; %bb.0:5971; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5972; GFX90A-NEXT: ;;#ASMSTART5973; GFX90A-NEXT: ; def v[0:2]5974; GFX90A-NEXT: ;;#ASMEND5975; GFX90A-NEXT: v_mov_b32_e32 v4, 05976; GFX90A-NEXT: v_mov_b32_e32 v1, v25977; GFX90A-NEXT: v_mov_b32_e32 v3, v25978; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]5979; GFX90A-NEXT: s_waitcnt vmcnt(0)5980; GFX90A-NEXT: s_setpc_b64 s[30:31]5981;5982; GFX942-LABEL: v_shuffle_v4p3_v3p3__3_5_5_5:5983; GFX942: ; %bb.0:5984; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5985; GFX942-NEXT: ;;#ASMSTART5986; GFX942-NEXT: ; def v[0:2]5987; GFX942-NEXT: ;;#ASMEND5988; GFX942-NEXT: v_mov_b32_e32 v4, 05989; GFX942-NEXT: v_mov_b32_e32 v1, v25990; GFX942-NEXT: v_mov_b32_e32 v3, v25991; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]5992; GFX942-NEXT: s_waitcnt vmcnt(0)5993; GFX942-NEXT: s_setpc_b64 s[30:31]5994 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5995 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()5996 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 5, i32 5, i32 5>5997 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 165998 ret void5999}6000 6001define void @v_shuffle_v4p3_v3p3__4_5_5_5(ptr addrspace(1) inreg %ptr) {6002; GFX900-LABEL: v_shuffle_v4p3_v3p3__4_5_5_5:6003; GFX900: ; %bb.0:6004; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6005; GFX900-NEXT: v_mov_b32_e32 v5, 06006; GFX900-NEXT: ;;#ASMSTART6007; GFX900-NEXT: ; def v[0:2]6008; GFX900-NEXT: ;;#ASMEND6009; GFX900-NEXT: v_mov_b32_e32 v3, v26010; GFX900-NEXT: v_mov_b32_e32 v4, v26011; GFX900-NEXT: global_store_dwordx4 v5, v[1:4], s[16:17]6012; GFX900-NEXT: s_waitcnt vmcnt(0)6013; GFX900-NEXT: s_setpc_b64 s[30:31]6014;6015; GFX90A-LABEL: v_shuffle_v4p3_v3p3__4_5_5_5:6016; GFX90A: ; %bb.0:6017; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6018; GFX90A-NEXT: ;;#ASMSTART6019; GFX90A-NEXT: ; def v[0:2]6020; GFX90A-NEXT: ;;#ASMEND6021; GFX90A-NEXT: v_mov_b32_e32 v4, 06022; GFX90A-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[2:3] op_sel:[1,0]6023; GFX90A-NEXT: v_mov_b32_e32 v3, v26024; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]6025; GFX90A-NEXT: s_waitcnt vmcnt(0)6026; GFX90A-NEXT: s_setpc_b64 s[30:31]6027;6028; GFX942-LABEL: v_shuffle_v4p3_v3p3__4_5_5_5:6029; GFX942: ; %bb.0:6030; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6031; GFX942-NEXT: ;;#ASMSTART6032; GFX942-NEXT: ; def v[0:2]6033; GFX942-NEXT: ;;#ASMEND6034; GFX942-NEXT: v_mov_b32_e32 v4, 06035; GFX942-NEXT: v_pk_mov_b32 v[0:1], v[0:1], v[2:3] op_sel:[1,0]6036; GFX942-NEXT: v_mov_b32_e32 v3, v26037; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]6038; GFX942-NEXT: s_waitcnt vmcnt(0)6039; GFX942-NEXT: s_setpc_b64 s[30:31]6040 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()6041 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()6042 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 4, i32 5, i32 5, i32 5>6043 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166044 ret void6045}6046 6047define void @v_shuffle_v4p3_v3p3__5_u_5_5(ptr addrspace(1) inreg %ptr) {6048; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_u_5_5:6049; GFX900: ; %bb.0:6050; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6051; GFX900-NEXT: v_mov_b32_e32 v3, 06052; GFX900-NEXT: ;;#ASMSTART6053; GFX900-NEXT: ; def v[0:2]6054; GFX900-NEXT: ;;#ASMEND6055; GFX900-NEXT: v_mov_b32_e32 v4, v26056; GFX900-NEXT: v_mov_b32_e32 v5, v26057; GFX900-NEXT: global_store_dwordx4 v3, v[2:5], s[16:17]6058; GFX900-NEXT: s_waitcnt vmcnt(0)6059; GFX900-NEXT: s_setpc_b64 s[30:31]6060;6061; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_u_5_5:6062; GFX90A: ; %bb.0:6063; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6064; GFX90A-NEXT: v_mov_b32_e32 v3, 06065; GFX90A-NEXT: ;;#ASMSTART6066; GFX90A-NEXT: ; def v[0:2]6067; GFX90A-NEXT: ;;#ASMEND6068; GFX90A-NEXT: v_mov_b32_e32 v4, v26069; GFX90A-NEXT: v_mov_b32_e32 v5, v26070; GFX90A-NEXT: global_store_dwordx4 v3, v[2:5], s[16:17]6071; GFX90A-NEXT: s_waitcnt vmcnt(0)6072; GFX90A-NEXT: s_setpc_b64 s[30:31]6073;6074; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_u_5_5:6075; GFX942: ; %bb.0:6076; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6077; GFX942-NEXT: v_mov_b32_e32 v3, 06078; GFX942-NEXT: ;;#ASMSTART6079; GFX942-NEXT: ; def v[0:2]6080; GFX942-NEXT: ;;#ASMEND6081; GFX942-NEXT: s_nop 06082; GFX942-NEXT: v_mov_b32_e32 v4, v26083; GFX942-NEXT: v_mov_b32_e32 v5, v26084; GFX942-NEXT: global_store_dwordx4 v3, v[2:5], s[0:1]6085; GFX942-NEXT: s_waitcnt vmcnt(0)6086; GFX942-NEXT: s_setpc_b64 s[30:31]6087 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()6088 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()6089 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 poison, i32 5, i32 5>6090 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166091 ret void6092}6093 6094define void @v_shuffle_v4p3_v3p3__5_0_5_5(ptr addrspace(1) inreg %ptr) {6095; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_0_5_5:6096; GFX900: ; %bb.0:6097; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6098; GFX900-NEXT: ;;#ASMSTART6099; GFX900-NEXT: ; def v[3:5]6100; GFX900-NEXT: ;;#ASMEND6101; GFX900-NEXT: v_mov_b32_e32 v6, 06102; GFX900-NEXT: ;;#ASMSTART6103; GFX900-NEXT: ; def v[0:2]6104; GFX900-NEXT: ;;#ASMEND6105; GFX900-NEXT: v_mov_b32_e32 v4, v26106; GFX900-NEXT: v_mov_b32_e32 v5, v26107; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]6108; GFX900-NEXT: s_waitcnt vmcnt(0)6109; GFX900-NEXT: s_setpc_b64 s[30:31]6110;6111; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_0_5_5:6112; GFX90A: ; %bb.0:6113; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6114; GFX90A-NEXT: ;;#ASMSTART6115; GFX90A-NEXT: ; def v[4:6]6116; GFX90A-NEXT: ;;#ASMEND6117; GFX90A-NEXT: v_mov_b32_e32 v7, 06118; GFX90A-NEXT: ;;#ASMSTART6119; GFX90A-NEXT: ; def v[0:2]6120; GFX90A-NEXT: ;;#ASMEND6121; GFX90A-NEXT: v_mov_b32_e32 v3, v46122; GFX90A-NEXT: v_mov_b32_e32 v4, v26123; GFX90A-NEXT: v_mov_b32_e32 v5, v26124; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]6125; GFX90A-NEXT: s_waitcnt vmcnt(0)6126; GFX90A-NEXT: s_setpc_b64 s[30:31]6127;6128; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_0_5_5:6129; GFX942: ; %bb.0:6130; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6131; GFX942-NEXT: ;;#ASMSTART6132; GFX942-NEXT: ; def v[4:6]6133; GFX942-NEXT: ;;#ASMEND6134; GFX942-NEXT: v_mov_b32_e32 v7, 06135; GFX942-NEXT: ;;#ASMSTART6136; GFX942-NEXT: ; def v[0:2]6137; GFX942-NEXT: ;;#ASMEND6138; GFX942-NEXT: v_mov_b32_e32 v3, v46139; GFX942-NEXT: v_mov_b32_e32 v4, v26140; GFX942-NEXT: v_mov_b32_e32 v5, v26141; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]6142; GFX942-NEXT: s_waitcnt vmcnt(0)6143; GFX942-NEXT: s_setpc_b64 s[30:31]6144 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()6145 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()6146 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 0, i32 5, i32 5>6147 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166148 ret void6149}6150 6151define void @v_shuffle_v4p3_v3p3__5_1_5_5(ptr addrspace(1) inreg %ptr) {6152; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_1_5_5:6153; GFX900: ; %bb.0:6154; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6155; GFX900-NEXT: ;;#ASMSTART6156; GFX900-NEXT: ; def v[2:4]6157; GFX900-NEXT: ;;#ASMEND6158; GFX900-NEXT: v_mov_b32_e32 v6, 06159; GFX900-NEXT: ;;#ASMSTART6160; GFX900-NEXT: ; def v[0:2]6161; GFX900-NEXT: ;;#ASMEND6162; GFX900-NEXT: v_mov_b32_e32 v4, v26163; GFX900-NEXT: v_mov_b32_e32 v5, v26164; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]6165; GFX900-NEXT: s_waitcnt vmcnt(0)6166; GFX900-NEXT: s_setpc_b64 s[30:31]6167;6168; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_1_5_5:6169; GFX90A: ; %bb.0:6170; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6171; GFX90A-NEXT: ;;#ASMSTART6172; GFX90A-NEXT: ; def v[2:4]6173; GFX90A-NEXT: ;;#ASMEND6174; GFX90A-NEXT: v_mov_b32_e32 v6, 06175; GFX90A-NEXT: ;;#ASMSTART6176; GFX90A-NEXT: ; def v[0:2]6177; GFX90A-NEXT: ;;#ASMEND6178; GFX90A-NEXT: v_mov_b32_e32 v4, v26179; GFX90A-NEXT: v_mov_b32_e32 v5, v26180; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]6181; GFX90A-NEXT: s_waitcnt vmcnt(0)6182; GFX90A-NEXT: s_setpc_b64 s[30:31]6183;6184; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_1_5_5:6185; GFX942: ; %bb.0:6186; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6187; GFX942-NEXT: ;;#ASMSTART6188; GFX942-NEXT: ; def v[2:4]6189; GFX942-NEXT: ;;#ASMEND6190; GFX942-NEXT: v_mov_b32_e32 v6, 06191; GFX942-NEXT: ;;#ASMSTART6192; GFX942-NEXT: ; def v[0:2]6193; GFX942-NEXT: ;;#ASMEND6194; GFX942-NEXT: s_nop 06195; GFX942-NEXT: v_mov_b32_e32 v4, v26196; GFX942-NEXT: v_mov_b32_e32 v5, v26197; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]6198; GFX942-NEXT: s_waitcnt vmcnt(0)6199; GFX942-NEXT: s_setpc_b64 s[30:31]6200 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()6201 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()6202 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 1, i32 5, i32 5>6203 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166204 ret void6205}6206 6207define void @v_shuffle_v4p3_v3p3__5_2_5_5(ptr addrspace(1) inreg %ptr) {6208; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_2_5_5:6209; GFX900: ; %bb.0:6210; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6211; GFX900-NEXT: ;;#ASMSTART6212; GFX900-NEXT: ; def v[1:3]6213; GFX900-NEXT: ;;#ASMEND6214; GFX900-NEXT: v_mov_b32_e32 v6, 06215; GFX900-NEXT: ;;#ASMSTART6216; GFX900-NEXT: ; def v[0:2]6217; GFX900-NEXT: ;;#ASMEND6218; GFX900-NEXT: v_mov_b32_e32 v4, v26219; GFX900-NEXT: v_mov_b32_e32 v5, v26220; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]6221; GFX900-NEXT: s_waitcnt vmcnt(0)6222; GFX900-NEXT: s_setpc_b64 s[30:31]6223;6224; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_2_5_5:6225; GFX90A: ; %bb.0:6226; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6227; GFX90A-NEXT: ;;#ASMSTART6228; GFX90A-NEXT: ; def v[2:4]6229; GFX90A-NEXT: ;;#ASMEND6230; GFX90A-NEXT: v_mov_b32_e32 v6, 06231; GFX90A-NEXT: ;;#ASMSTART6232; GFX90A-NEXT: ; def v[0:2]6233; GFX90A-NEXT: ;;#ASMEND6234; GFX90A-NEXT: v_mov_b32_e32 v3, v46235; GFX90A-NEXT: v_mov_b32_e32 v4, v26236; GFX90A-NEXT: v_mov_b32_e32 v5, v26237; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]6238; GFX90A-NEXT: s_waitcnt vmcnt(0)6239; GFX90A-NEXT: s_setpc_b64 s[30:31]6240;6241; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_2_5_5:6242; GFX942: ; %bb.0:6243; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6244; GFX942-NEXT: ;;#ASMSTART6245; GFX942-NEXT: ; def v[2:4]6246; GFX942-NEXT: ;;#ASMEND6247; GFX942-NEXT: v_mov_b32_e32 v6, 06248; GFX942-NEXT: ;;#ASMSTART6249; GFX942-NEXT: ; def v[0:2]6250; GFX942-NEXT: ;;#ASMEND6251; GFX942-NEXT: v_mov_b32_e32 v3, v46252; GFX942-NEXT: v_mov_b32_e32 v4, v26253; GFX942-NEXT: v_mov_b32_e32 v5, v26254; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]6255; GFX942-NEXT: s_waitcnt vmcnt(0)6256; GFX942-NEXT: s_setpc_b64 s[30:31]6257 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()6258 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()6259 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 2, i32 5, i32 5>6260 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166261 ret void6262}6263 6264define void @v_shuffle_v4p3_v3p3__5_3_5_5(ptr addrspace(1) inreg %ptr) {6265; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_3_5_5:6266; GFX900: ; %bb.0:6267; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6268; GFX900-NEXT: v_mov_b32_e32 v6, 06269; GFX900-NEXT: ;;#ASMSTART6270; GFX900-NEXT: ; def v[0:2]6271; GFX900-NEXT: ;;#ASMEND6272; GFX900-NEXT: v_mov_b32_e32 v3, v06273; GFX900-NEXT: v_mov_b32_e32 v4, v26274; GFX900-NEXT: v_mov_b32_e32 v5, v26275; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]6276; GFX900-NEXT: s_waitcnt vmcnt(0)6277; GFX900-NEXT: s_setpc_b64 s[30:31]6278;6279; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_3_5_5:6280; GFX90A: ; %bb.0:6281; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6282; GFX90A-NEXT: v_mov_b32_e32 v6, 06283; GFX90A-NEXT: ;;#ASMSTART6284; GFX90A-NEXT: ; def v[0:2]6285; GFX90A-NEXT: ;;#ASMEND6286; GFX90A-NEXT: v_mov_b32_e32 v3, v06287; GFX90A-NEXT: v_mov_b32_e32 v4, v26288; GFX90A-NEXT: v_mov_b32_e32 v5, v26289; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]6290; GFX90A-NEXT: s_waitcnt vmcnt(0)6291; GFX90A-NEXT: s_setpc_b64 s[30:31]6292;6293; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_3_5_5:6294; GFX942: ; %bb.0:6295; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6296; GFX942-NEXT: v_mov_b32_e32 v6, 06297; GFX942-NEXT: ;;#ASMSTART6298; GFX942-NEXT: ; def v[0:2]6299; GFX942-NEXT: ;;#ASMEND6300; GFX942-NEXT: s_nop 06301; GFX942-NEXT: v_mov_b32_e32 v3, v06302; GFX942-NEXT: v_mov_b32_e32 v4, v26303; GFX942-NEXT: v_mov_b32_e32 v5, v26304; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]6305; GFX942-NEXT: s_waitcnt vmcnt(0)6306; GFX942-NEXT: s_setpc_b64 s[30:31]6307 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()6308 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()6309 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 3, i32 5, i32 5>6310 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166311 ret void6312}6313 6314define void @v_shuffle_v4p3_v3p3__5_4_5_5(ptr addrspace(1) inreg %ptr) {6315; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_4_5_5:6316; GFX900: ; %bb.0:6317; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6318; GFX900-NEXT: v_mov_b32_e32 v6, 06319; GFX900-NEXT: ;;#ASMSTART6320; GFX900-NEXT: ; def v[0:2]6321; GFX900-NEXT: ;;#ASMEND6322; GFX900-NEXT: v_mov_b32_e32 v3, v16323; GFX900-NEXT: v_mov_b32_e32 v4, v26324; GFX900-NEXT: v_mov_b32_e32 v5, v26325; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]6326; GFX900-NEXT: s_waitcnt vmcnt(0)6327; GFX900-NEXT: s_setpc_b64 s[30:31]6328;6329; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_4_5_5:6330; GFX90A: ; %bb.0:6331; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6332; GFX90A-NEXT: v_mov_b32_e32 v6, 06333; GFX90A-NEXT: ;;#ASMSTART6334; GFX90A-NEXT: ; def v[0:2]6335; GFX90A-NEXT: ;;#ASMEND6336; GFX90A-NEXT: v_mov_b32_e32 v3, v16337; GFX90A-NEXT: v_mov_b32_e32 v4, v26338; GFX90A-NEXT: v_mov_b32_e32 v5, v26339; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]6340; GFX90A-NEXT: s_waitcnt vmcnt(0)6341; GFX90A-NEXT: s_setpc_b64 s[30:31]6342;6343; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_4_5_5:6344; GFX942: ; %bb.0:6345; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6346; GFX942-NEXT: v_mov_b32_e32 v6, 06347; GFX942-NEXT: ;;#ASMSTART6348; GFX942-NEXT: ; def v[0:2]6349; GFX942-NEXT: ;;#ASMEND6350; GFX942-NEXT: s_nop 06351; GFX942-NEXT: v_mov_b32_e32 v3, v16352; GFX942-NEXT: v_mov_b32_e32 v4, v26353; GFX942-NEXT: v_mov_b32_e32 v5, v26354; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]6355; GFX942-NEXT: s_waitcnt vmcnt(0)6356; GFX942-NEXT: s_setpc_b64 s[30:31]6357 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()6358 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()6359 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 4, i32 5, i32 5>6360 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166361 ret void6362}6363 6364define void @v_shuffle_v4p3_v3p3__5_5_u_5(ptr addrspace(1) inreg %ptr) {6365; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_u_5:6366; GFX900: ; %bb.0:6367; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6368; GFX900-NEXT: v_mov_b32_e32 v4, 06369; GFX900-NEXT: ;;#ASMSTART6370; GFX900-NEXT: ; def v[0:2]6371; GFX900-NEXT: ;;#ASMEND6372; GFX900-NEXT: v_mov_b32_e32 v3, v26373; GFX900-NEXT: v_mov_b32_e32 v5, v26374; GFX900-NEXT: global_store_dwordx4 v4, v[2:5], s[16:17]6375; GFX900-NEXT: s_waitcnt vmcnt(0)6376; GFX900-NEXT: s_setpc_b64 s[30:31]6377;6378; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_u_5:6379; GFX90A: ; %bb.0:6380; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6381; GFX90A-NEXT: v_mov_b32_e32 v4, 06382; GFX90A-NEXT: ;;#ASMSTART6383; GFX90A-NEXT: ; def v[0:2]6384; GFX90A-NEXT: ;;#ASMEND6385; GFX90A-NEXT: v_mov_b32_e32 v3, v26386; GFX90A-NEXT: v_mov_b32_e32 v5, v26387; GFX90A-NEXT: global_store_dwordx4 v4, v[2:5], s[16:17]6388; GFX90A-NEXT: s_waitcnt vmcnt(0)6389; GFX90A-NEXT: s_setpc_b64 s[30:31]6390;6391; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_u_5:6392; GFX942: ; %bb.0:6393; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6394; GFX942-NEXT: v_mov_b32_e32 v4, 06395; GFX942-NEXT: ;;#ASMSTART6396; GFX942-NEXT: ; def v[0:2]6397; GFX942-NEXT: ;;#ASMEND6398; GFX942-NEXT: s_nop 06399; GFX942-NEXT: v_mov_b32_e32 v3, v26400; GFX942-NEXT: v_mov_b32_e32 v5, v26401; GFX942-NEXT: global_store_dwordx4 v4, v[2:5], s[0:1]6402; GFX942-NEXT: s_waitcnt vmcnt(0)6403; GFX942-NEXT: s_setpc_b64 s[30:31]6404 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()6405 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()6406 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 5>6407 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166408 ret void6409}6410 6411define void @v_shuffle_v4p3_v3p3__5_5_0_5(ptr addrspace(1) inreg %ptr) {6412; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_0_5:6413; GFX900: ; %bb.0:6414; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6415; GFX900-NEXT: ;;#ASMSTART6416; GFX900-NEXT: ; def v[4:6]6417; GFX900-NEXT: ;;#ASMEND6418; GFX900-NEXT: v_mov_b32_e32 v7, 06419; GFX900-NEXT: ;;#ASMSTART6420; GFX900-NEXT: ; def v[0:2]6421; GFX900-NEXT: ;;#ASMEND6422; GFX900-NEXT: v_mov_b32_e32 v3, v26423; GFX900-NEXT: v_mov_b32_e32 v5, v26424; GFX900-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]6425; GFX900-NEXT: s_waitcnt vmcnt(0)6426; GFX900-NEXT: s_setpc_b64 s[30:31]6427;6428; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_0_5:6429; GFX90A: ; %bb.0:6430; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6431; GFX90A-NEXT: ;;#ASMSTART6432; GFX90A-NEXT: ; def v[4:6]6433; GFX90A-NEXT: ;;#ASMEND6434; GFX90A-NEXT: v_mov_b32_e32 v7, 06435; GFX90A-NEXT: ;;#ASMSTART6436; GFX90A-NEXT: ; def v[0:2]6437; GFX90A-NEXT: ;;#ASMEND6438; GFX90A-NEXT: v_mov_b32_e32 v3, v26439; GFX90A-NEXT: v_mov_b32_e32 v5, v26440; GFX90A-NEXT: global_store_dwordx4 v7, v[2:5], s[16:17]6441; GFX90A-NEXT: s_waitcnt vmcnt(0)6442; GFX90A-NEXT: s_setpc_b64 s[30:31]6443;6444; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_0_5:6445; GFX942: ; %bb.0:6446; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6447; GFX942-NEXT: ;;#ASMSTART6448; GFX942-NEXT: ; def v[4:6]6449; GFX942-NEXT: ;;#ASMEND6450; GFX942-NEXT: v_mov_b32_e32 v7, 06451; GFX942-NEXT: ;;#ASMSTART6452; GFX942-NEXT: ; def v[0:2]6453; GFX942-NEXT: ;;#ASMEND6454; GFX942-NEXT: s_nop 06455; GFX942-NEXT: v_mov_b32_e32 v3, v26456; GFX942-NEXT: v_mov_b32_e32 v5, v26457; GFX942-NEXT: global_store_dwordx4 v7, v[2:5], s[0:1]6458; GFX942-NEXT: s_waitcnt vmcnt(0)6459; GFX942-NEXT: s_setpc_b64 s[30:31]6460 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()6461 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()6462 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 5>6463 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166464 ret void6465}6466 6467define void @v_shuffle_v4p3_v3p3__5_5_1_5(ptr addrspace(1) inreg %ptr) {6468; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_1_5:6469; GFX900: ; %bb.0:6470; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6471; GFX900-NEXT: ;;#ASMSTART6472; GFX900-NEXT: ; def v[3:5]6473; GFX900-NEXT: ;;#ASMEND6474; GFX900-NEXT: v_mov_b32_e32 v6, 06475; GFX900-NEXT: ;;#ASMSTART6476; GFX900-NEXT: ; def v[0:2]6477; GFX900-NEXT: ;;#ASMEND6478; GFX900-NEXT: v_mov_b32_e32 v3, v26479; GFX900-NEXT: v_mov_b32_e32 v5, v26480; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]6481; GFX900-NEXT: s_waitcnt vmcnt(0)6482; GFX900-NEXT: s_setpc_b64 s[30:31]6483;6484; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_1_5:6485; GFX90A: ; %bb.0:6486; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6487; GFX90A-NEXT: ;;#ASMSTART6488; GFX90A-NEXT: ; def v[2:4]6489; GFX90A-NEXT: ;;#ASMEND6490; GFX90A-NEXT: v_mov_b32_e32 v6, 06491; GFX90A-NEXT: ;;#ASMSTART6492; GFX90A-NEXT: ; def v[0:2]6493; GFX90A-NEXT: ;;#ASMEND6494; GFX90A-NEXT: v_pk_mov_b32 v[4:5], v[2:3], v[2:3] op_sel:[1,0]6495; GFX90A-NEXT: v_mov_b32_e32 v3, v26496; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]6497; GFX90A-NEXT: s_waitcnt vmcnt(0)6498; GFX90A-NEXT: s_setpc_b64 s[30:31]6499;6500; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_1_5:6501; GFX942: ; %bb.0:6502; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6503; GFX942-NEXT: ;;#ASMSTART6504; GFX942-NEXT: ; def v[2:4]6505; GFX942-NEXT: ;;#ASMEND6506; GFX942-NEXT: v_mov_b32_e32 v6, 06507; GFX942-NEXT: ;;#ASMSTART6508; GFX942-NEXT: ; def v[0:2]6509; GFX942-NEXT: ;;#ASMEND6510; GFX942-NEXT: s_nop 06511; GFX942-NEXT: v_pk_mov_b32 v[4:5], v[2:3], v[2:3] op_sel:[1,0]6512; GFX942-NEXT: v_mov_b32_e32 v3, v26513; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]6514; GFX942-NEXT: s_waitcnt vmcnt(0)6515; GFX942-NEXT: s_setpc_b64 s[30:31]6516 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()6517 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()6518 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 5>6519 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166520 ret void6521}6522 6523define void @v_shuffle_v4p3_v3p3__5_5_2_5(ptr addrspace(1) inreg %ptr) {6524; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_2_5:6525; GFX900: ; %bb.0:6526; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6527; GFX900-NEXT: ;;#ASMSTART6528; GFX900-NEXT: ; def v[2:4]6529; GFX900-NEXT: ;;#ASMEND6530; GFX900-NEXT: v_mov_b32_e32 v6, 06531; GFX900-NEXT: ;;#ASMSTART6532; GFX900-NEXT: ; def v[0:2]6533; GFX900-NEXT: ;;#ASMEND6534; GFX900-NEXT: v_mov_b32_e32 v3, v26535; GFX900-NEXT: v_mov_b32_e32 v5, v26536; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]6537; GFX900-NEXT: s_waitcnt vmcnt(0)6538; GFX900-NEXT: s_setpc_b64 s[30:31]6539;6540; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_2_5:6541; GFX90A: ; %bb.0:6542; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6543; GFX90A-NEXT: ;;#ASMSTART6544; GFX90A-NEXT: ; def v[2:4]6545; GFX90A-NEXT: ;;#ASMEND6546; GFX90A-NEXT: v_mov_b32_e32 v6, 06547; GFX90A-NEXT: ;;#ASMSTART6548; GFX90A-NEXT: ; def v[0:2]6549; GFX90A-NEXT: ;;#ASMEND6550; GFX90A-NEXT: v_mov_b32_e32 v3, v26551; GFX90A-NEXT: v_mov_b32_e32 v5, v26552; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]6553; GFX90A-NEXT: s_waitcnt vmcnt(0)6554; GFX90A-NEXT: s_setpc_b64 s[30:31]6555;6556; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_2_5:6557; GFX942: ; %bb.0:6558; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6559; GFX942-NEXT: ;;#ASMSTART6560; GFX942-NEXT: ; def v[2:4]6561; GFX942-NEXT: ;;#ASMEND6562; GFX942-NEXT: v_mov_b32_e32 v6, 06563; GFX942-NEXT: ;;#ASMSTART6564; GFX942-NEXT: ; def v[0:2]6565; GFX942-NEXT: ;;#ASMEND6566; GFX942-NEXT: s_nop 06567; GFX942-NEXT: v_mov_b32_e32 v3, v26568; GFX942-NEXT: v_mov_b32_e32 v5, v26569; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]6570; GFX942-NEXT: s_waitcnt vmcnt(0)6571; GFX942-NEXT: s_setpc_b64 s[30:31]6572 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()6573 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()6574 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 5>6575 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166576 ret void6577}6578 6579define void @v_shuffle_v4p3_v3p3__5_5_3_5(ptr addrspace(1) inreg %ptr) {6580; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_3_5:6581; GFX900: ; %bb.0:6582; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6583; GFX900-NEXT: v_mov_b32_e32 v6, 06584; GFX900-NEXT: ;;#ASMSTART6585; GFX900-NEXT: ; def v[0:2]6586; GFX900-NEXT: ;;#ASMEND6587; GFX900-NEXT: v_mov_b32_e32 v3, v26588; GFX900-NEXT: v_mov_b32_e32 v4, v06589; GFX900-NEXT: v_mov_b32_e32 v5, v26590; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]6591; GFX900-NEXT: s_waitcnt vmcnt(0)6592; GFX900-NEXT: s_setpc_b64 s[30:31]6593;6594; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_3_5:6595; GFX90A: ; %bb.0:6596; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6597; GFX90A-NEXT: v_mov_b32_e32 v6, 06598; GFX90A-NEXT: ;;#ASMSTART6599; GFX90A-NEXT: ; def v[0:2]6600; GFX90A-NEXT: ;;#ASMEND6601; GFX90A-NEXT: v_mov_b32_e32 v3, v26602; GFX90A-NEXT: v_mov_b32_e32 v4, v06603; GFX90A-NEXT: v_mov_b32_e32 v5, v26604; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]6605; GFX90A-NEXT: s_waitcnt vmcnt(0)6606; GFX90A-NEXT: s_setpc_b64 s[30:31]6607;6608; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_3_5:6609; GFX942: ; %bb.0:6610; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6611; GFX942-NEXT: v_mov_b32_e32 v6, 06612; GFX942-NEXT: ;;#ASMSTART6613; GFX942-NEXT: ; def v[0:2]6614; GFX942-NEXT: ;;#ASMEND6615; GFX942-NEXT: s_nop 06616; GFX942-NEXT: v_mov_b32_e32 v3, v26617; GFX942-NEXT: v_mov_b32_e32 v4, v06618; GFX942-NEXT: v_mov_b32_e32 v5, v26619; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]6620; GFX942-NEXT: s_waitcnt vmcnt(0)6621; GFX942-NEXT: s_setpc_b64 s[30:31]6622 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()6623 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()6624 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 5>6625 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166626 ret void6627}6628 6629define void @v_shuffle_v4p3_v3p3__5_5_4_5(ptr addrspace(1) inreg %ptr) {6630; GFX900-LABEL: v_shuffle_v4p3_v3p3__5_5_4_5:6631; GFX900: ; %bb.0:6632; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6633; GFX900-NEXT: v_mov_b32_e32 v6, 06634; GFX900-NEXT: ;;#ASMSTART6635; GFX900-NEXT: ; def v[0:2]6636; GFX900-NEXT: ;;#ASMEND6637; GFX900-NEXT: v_mov_b32_e32 v3, v26638; GFX900-NEXT: v_mov_b32_e32 v4, v16639; GFX900-NEXT: v_mov_b32_e32 v5, v26640; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]6641; GFX900-NEXT: s_waitcnt vmcnt(0)6642; GFX900-NEXT: s_setpc_b64 s[30:31]6643;6644; GFX90A-LABEL: v_shuffle_v4p3_v3p3__5_5_4_5:6645; GFX90A: ; %bb.0:6646; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6647; GFX90A-NEXT: v_mov_b32_e32 v6, 06648; GFX90A-NEXT: ;;#ASMSTART6649; GFX90A-NEXT: ; def v[0:2]6650; GFX90A-NEXT: ;;#ASMEND6651; GFX90A-NEXT: v_pk_mov_b32 v[4:5], v[0:1], v[2:3] op_sel:[1,0]6652; GFX90A-NEXT: v_mov_b32_e32 v3, v26653; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]6654; GFX90A-NEXT: s_waitcnt vmcnt(0)6655; GFX90A-NEXT: s_setpc_b64 s[30:31]6656;6657; GFX942-LABEL: v_shuffle_v4p3_v3p3__5_5_4_5:6658; GFX942: ; %bb.0:6659; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6660; GFX942-NEXT: v_mov_b32_e32 v6, 06661; GFX942-NEXT: ;;#ASMSTART6662; GFX942-NEXT: ; def v[0:2]6663; GFX942-NEXT: ;;#ASMEND6664; GFX942-NEXT: s_nop 06665; GFX942-NEXT: v_pk_mov_b32 v[4:5], v[0:1], v[2:3] op_sel:[1,0]6666; GFX942-NEXT: v_mov_b32_e32 v3, v26667; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]6668; GFX942-NEXT: s_waitcnt vmcnt(0)6669; GFX942-NEXT: s_setpc_b64 s[30:31]6670 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()6671 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=v"()6672 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 5>6673 store <4 x ptr addrspace(3)> %shuf, ptr addrspace(1) %ptr, align 166674 ret void6675}6676 6677define void @s_shuffle_v4p3_v3p3__u_u_u_u() {6678; GFX9-LABEL: s_shuffle_v4p3_v3p3__u_u_u_u:6679; GFX9: ; %bb.0:6680; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6681; GFX9-NEXT: ;;#ASMSTART6682; GFX9-NEXT: ; use s[8:11]6683; GFX9-NEXT: ;;#ASMEND6684; GFX9-NEXT: s_setpc_b64 s[30:31]6685 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()6686 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> poison6687 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)6688 ret void6689}6690 6691define void @s_shuffle_v4p3_v3p3__0_u_u_u() {6692; GFX900-LABEL: s_shuffle_v4p3_v3p3__0_u_u_u:6693; GFX900: ; %bb.0:6694; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6695; GFX900-NEXT: ;;#ASMSTART6696; GFX900-NEXT: ; def s[8:10]6697; GFX900-NEXT: ;;#ASMEND6698; GFX900-NEXT: ;;#ASMSTART6699; GFX900-NEXT: ; use s[8:11]6700; GFX900-NEXT: ;;#ASMEND6701; GFX900-NEXT: s_setpc_b64 s[30:31]6702;6703; GFX90A-LABEL: s_shuffle_v4p3_v3p3__0_u_u_u:6704; GFX90A: ; %bb.0:6705; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6706; GFX90A-NEXT: ;;#ASMSTART6707; GFX90A-NEXT: ; def s[8:10]6708; GFX90A-NEXT: ;;#ASMEND6709; GFX90A-NEXT: ;;#ASMSTART6710; GFX90A-NEXT: ; use s[8:11]6711; GFX90A-NEXT: ;;#ASMEND6712; GFX90A-NEXT: s_setpc_b64 s[30:31]6713;6714; GFX942-LABEL: s_shuffle_v4p3_v3p3__0_u_u_u:6715; GFX942: ; %bb.0:6716; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6717; GFX942-NEXT: ;;#ASMSTART6718; GFX942-NEXT: ; def s[8:10]6719; GFX942-NEXT: ;;#ASMEND6720; GFX942-NEXT: s_nop 06721; GFX942-NEXT: ;;#ASMSTART6722; GFX942-NEXT: ; use s[8:11]6723; GFX942-NEXT: ;;#ASMEND6724; GFX942-NEXT: s_setpc_b64 s[30:31]6725 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()6726 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 0, i32 poison, i32 poison, i32 poison>6727 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)6728 ret void6729}6730 6731define void @s_shuffle_v4p3_v3p3__1_u_u_u() {6732; GFX900-LABEL: s_shuffle_v4p3_v3p3__1_u_u_u:6733; GFX900: ; %bb.0:6734; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6735; GFX900-NEXT: ;;#ASMSTART6736; GFX900-NEXT: ; def s[4:6]6737; GFX900-NEXT: ;;#ASMEND6738; GFX900-NEXT: s_mov_b32 s8, s56739; GFX900-NEXT: ;;#ASMSTART6740; GFX900-NEXT: ; use s[8:11]6741; GFX900-NEXT: ;;#ASMEND6742; GFX900-NEXT: s_setpc_b64 s[30:31]6743;6744; GFX90A-LABEL: s_shuffle_v4p3_v3p3__1_u_u_u:6745; GFX90A: ; %bb.0:6746; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6747; GFX90A-NEXT: ;;#ASMSTART6748; GFX90A-NEXT: ; def s[4:6]6749; GFX90A-NEXT: ;;#ASMEND6750; GFX90A-NEXT: s_mov_b32 s8, s56751; GFX90A-NEXT: ;;#ASMSTART6752; GFX90A-NEXT: ; use s[8:11]6753; GFX90A-NEXT: ;;#ASMEND6754; GFX90A-NEXT: s_setpc_b64 s[30:31]6755;6756; GFX942-LABEL: s_shuffle_v4p3_v3p3__1_u_u_u:6757; GFX942: ; %bb.0:6758; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6759; GFX942-NEXT: ;;#ASMSTART6760; GFX942-NEXT: ; def s[0:2]6761; GFX942-NEXT: ;;#ASMEND6762; GFX942-NEXT: s_mov_b32 s8, s16763; GFX942-NEXT: ;;#ASMSTART6764; GFX942-NEXT: ; use s[8:11]6765; GFX942-NEXT: ;;#ASMEND6766; GFX942-NEXT: s_setpc_b64 s[30:31]6767 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()6768 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 1, i32 poison, i32 poison, i32 poison>6769 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)6770 ret void6771}6772 6773define void @s_shuffle_v4p3_v3p3__2_u_u_u() {6774; GFX900-LABEL: s_shuffle_v4p3_v3p3__2_u_u_u:6775; GFX900: ; %bb.0:6776; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6777; GFX900-NEXT: ;;#ASMSTART6778; GFX900-NEXT: ; def s[4:6]6779; GFX900-NEXT: ;;#ASMEND6780; GFX900-NEXT: s_mov_b32 s8, s66781; GFX900-NEXT: ;;#ASMSTART6782; GFX900-NEXT: ; use s[8:11]6783; GFX900-NEXT: ;;#ASMEND6784; GFX900-NEXT: s_setpc_b64 s[30:31]6785;6786; GFX90A-LABEL: s_shuffle_v4p3_v3p3__2_u_u_u:6787; GFX90A: ; %bb.0:6788; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6789; GFX90A-NEXT: ;;#ASMSTART6790; GFX90A-NEXT: ; def s[4:6]6791; GFX90A-NEXT: ;;#ASMEND6792; GFX90A-NEXT: s_mov_b32 s8, s66793; GFX90A-NEXT: ;;#ASMSTART6794; GFX90A-NEXT: ; use s[8:11]6795; GFX90A-NEXT: ;;#ASMEND6796; GFX90A-NEXT: s_setpc_b64 s[30:31]6797;6798; GFX942-LABEL: s_shuffle_v4p3_v3p3__2_u_u_u:6799; GFX942: ; %bb.0:6800; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6801; GFX942-NEXT: ;;#ASMSTART6802; GFX942-NEXT: ; def s[0:2]6803; GFX942-NEXT: ;;#ASMEND6804; GFX942-NEXT: s_mov_b32 s8, s26805; GFX942-NEXT: ;;#ASMSTART6806; GFX942-NEXT: ; use s[8:11]6807; GFX942-NEXT: ;;#ASMEND6808; GFX942-NEXT: s_setpc_b64 s[30:31]6809 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()6810 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 2, i32 poison, i32 poison, i32 poison>6811 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)6812 ret void6813}6814 6815define void @s_shuffle_v4p3_v3p3__3_u_u_u() {6816; GFX9-LABEL: s_shuffle_v4p3_v3p3__3_u_u_u:6817; GFX9: ; %bb.0:6818; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6819; GFX9-NEXT: ;;#ASMSTART6820; GFX9-NEXT: ; use s[8:11]6821; GFX9-NEXT: ;;#ASMEND6822; GFX9-NEXT: s_setpc_b64 s[30:31]6823 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()6824 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 3, i32 poison, i32 poison, i32 poison>6825 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)6826 ret void6827}6828 6829define void @s_shuffle_v4p3_v3p3__4_u_u_u() {6830; GFX900-LABEL: s_shuffle_v4p3_v3p3__4_u_u_u:6831; GFX900: ; %bb.0:6832; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6833; GFX900-NEXT: ;;#ASMSTART6834; GFX900-NEXT: ; def s[4:6]6835; GFX900-NEXT: ;;#ASMEND6836; GFX900-NEXT: s_mov_b32 s8, s56837; GFX900-NEXT: ;;#ASMSTART6838; GFX900-NEXT: ; use s[8:11]6839; GFX900-NEXT: ;;#ASMEND6840; GFX900-NEXT: s_setpc_b64 s[30:31]6841;6842; GFX90A-LABEL: s_shuffle_v4p3_v3p3__4_u_u_u:6843; GFX90A: ; %bb.0:6844; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6845; GFX90A-NEXT: ;;#ASMSTART6846; GFX90A-NEXT: ; def s[4:6]6847; GFX90A-NEXT: ;;#ASMEND6848; GFX90A-NEXT: s_mov_b32 s8, s56849; GFX90A-NEXT: ;;#ASMSTART6850; GFX90A-NEXT: ; use s[8:11]6851; GFX90A-NEXT: ;;#ASMEND6852; GFX90A-NEXT: s_setpc_b64 s[30:31]6853;6854; GFX942-LABEL: s_shuffle_v4p3_v3p3__4_u_u_u:6855; GFX942: ; %bb.0:6856; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6857; GFX942-NEXT: ;;#ASMSTART6858; GFX942-NEXT: ; def s[0:2]6859; GFX942-NEXT: ;;#ASMEND6860; GFX942-NEXT: s_mov_b32 s8, s16861; GFX942-NEXT: ;;#ASMSTART6862; GFX942-NEXT: ; use s[8:11]6863; GFX942-NEXT: ;;#ASMEND6864; GFX942-NEXT: s_setpc_b64 s[30:31]6865 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()6866 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()6867 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 4, i32 poison, i32 poison, i32 poison>6868 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)6869 ret void6870}6871 6872define void @s_shuffle_v4p3_v3p3__5_u_u_u() {6873; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_u_u_u:6874; GFX900: ; %bb.0:6875; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6876; GFX900-NEXT: ;;#ASMSTART6877; GFX900-NEXT: ; def s[4:6]6878; GFX900-NEXT: ;;#ASMEND6879; GFX900-NEXT: s_mov_b32 s8, s66880; GFX900-NEXT: ;;#ASMSTART6881; GFX900-NEXT: ; use s[8:11]6882; GFX900-NEXT: ;;#ASMEND6883; GFX900-NEXT: s_setpc_b64 s[30:31]6884;6885; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_u_u_u:6886; GFX90A: ; %bb.0:6887; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6888; GFX90A-NEXT: ;;#ASMSTART6889; GFX90A-NEXT: ; def s[4:6]6890; GFX90A-NEXT: ;;#ASMEND6891; GFX90A-NEXT: s_mov_b32 s8, s66892; GFX90A-NEXT: ;;#ASMSTART6893; GFX90A-NEXT: ; use s[8:11]6894; GFX90A-NEXT: ;;#ASMEND6895; GFX90A-NEXT: s_setpc_b64 s[30:31]6896;6897; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_u_u_u:6898; GFX942: ; %bb.0:6899; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6900; GFX942-NEXT: ;;#ASMSTART6901; GFX942-NEXT: ; def s[0:2]6902; GFX942-NEXT: ;;#ASMEND6903; GFX942-NEXT: s_mov_b32 s8, s26904; GFX942-NEXT: ;;#ASMSTART6905; GFX942-NEXT: ; use s[8:11]6906; GFX942-NEXT: ;;#ASMEND6907; GFX942-NEXT: s_setpc_b64 s[30:31]6908 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()6909 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()6910 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 poison, i32 poison, i32 poison>6911 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)6912 ret void6913}6914 6915define void @s_shuffle_v4p3_v3p3__5_0_u_u() {6916; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_0_u_u:6917; GFX900: ; %bb.0:6918; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6919; GFX900-NEXT: ;;#ASMSTART6920; GFX900-NEXT: ; def s[8:10]6921; GFX900-NEXT: ;;#ASMEND6922; GFX900-NEXT: ;;#ASMSTART6923; GFX900-NEXT: ; def s[4:6]6924; GFX900-NEXT: ;;#ASMEND6925; GFX900-NEXT: s_mov_b32 s8, s106926; GFX900-NEXT: s_mov_b32 s9, s46927; GFX900-NEXT: ;;#ASMSTART6928; GFX900-NEXT: ; use s[8:11]6929; GFX900-NEXT: ;;#ASMEND6930; GFX900-NEXT: s_setpc_b64 s[30:31]6931;6932; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_0_u_u:6933; GFX90A: ; %bb.0:6934; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6935; GFX90A-NEXT: ;;#ASMSTART6936; GFX90A-NEXT: ; def s[8:10]6937; GFX90A-NEXT: ;;#ASMEND6938; GFX90A-NEXT: ;;#ASMSTART6939; GFX90A-NEXT: ; def s[4:6]6940; GFX90A-NEXT: ;;#ASMEND6941; GFX90A-NEXT: s_mov_b32 s8, s106942; GFX90A-NEXT: s_mov_b32 s9, s46943; GFX90A-NEXT: ;;#ASMSTART6944; GFX90A-NEXT: ; use s[8:11]6945; GFX90A-NEXT: ;;#ASMEND6946; GFX90A-NEXT: s_setpc_b64 s[30:31]6947;6948; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_0_u_u:6949; GFX942: ; %bb.0:6950; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6951; GFX942-NEXT: ;;#ASMSTART6952; GFX942-NEXT: ; def s[0:2]6953; GFX942-NEXT: ;;#ASMEND6954; GFX942-NEXT: ;;#ASMSTART6955; GFX942-NEXT: ; def s[4:6]6956; GFX942-NEXT: ;;#ASMEND6957; GFX942-NEXT: s_mov_b32 s8, s66958; GFX942-NEXT: s_mov_b32 s9, s06959; GFX942-NEXT: ;;#ASMSTART6960; GFX942-NEXT: ; use s[8:11]6961; GFX942-NEXT: ;;#ASMEND6962; GFX942-NEXT: s_setpc_b64 s[30:31]6963 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()6964 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()6965 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 0, i32 poison, i32 poison>6966 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)6967 ret void6968}6969 6970define void @s_shuffle_v4p3_v3p3__5_1_u_u() {6971; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_1_u_u:6972; GFX900: ; %bb.0:6973; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6974; GFX900-NEXT: ;;#ASMSTART6975; GFX900-NEXT: ; def s[8:10]6976; GFX900-NEXT: ;;#ASMEND6977; GFX900-NEXT: ;;#ASMSTART6978; GFX900-NEXT: ; def s[4:6]6979; GFX900-NEXT: ;;#ASMEND6980; GFX900-NEXT: s_mov_b32 s8, s66981; GFX900-NEXT: ;;#ASMSTART6982; GFX900-NEXT: ; use s[8:11]6983; GFX900-NEXT: ;;#ASMEND6984; GFX900-NEXT: s_setpc_b64 s[30:31]6985;6986; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_1_u_u:6987; GFX90A: ; %bb.0:6988; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6989; GFX90A-NEXT: ;;#ASMSTART6990; GFX90A-NEXT: ; def s[8:10]6991; GFX90A-NEXT: ;;#ASMEND6992; GFX90A-NEXT: ;;#ASMSTART6993; GFX90A-NEXT: ; def s[4:6]6994; GFX90A-NEXT: ;;#ASMEND6995; GFX90A-NEXT: s_mov_b32 s8, s66996; GFX90A-NEXT: ;;#ASMSTART6997; GFX90A-NEXT: ; use s[8:11]6998; GFX90A-NEXT: ;;#ASMEND6999; GFX90A-NEXT: s_setpc_b64 s[30:31]7000;7001; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_1_u_u:7002; GFX942: ; %bb.0:7003; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7004; GFX942-NEXT: ;;#ASMSTART7005; GFX942-NEXT: ; def s[8:10]7006; GFX942-NEXT: ;;#ASMEND7007; GFX942-NEXT: ;;#ASMSTART7008; GFX942-NEXT: ; def s[0:2]7009; GFX942-NEXT: ;;#ASMEND7010; GFX942-NEXT: s_mov_b32 s8, s27011; GFX942-NEXT: ;;#ASMSTART7012; GFX942-NEXT: ; use s[8:11]7013; GFX942-NEXT: ;;#ASMEND7014; GFX942-NEXT: s_setpc_b64 s[30:31]7015 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7016 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7017 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 1, i32 poison, i32 poison>7018 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)7019 ret void7020}7021 7022define void @s_shuffle_v4p3_v3p3__5_2_u_u() {7023; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_2_u_u:7024; GFX900: ; %bb.0:7025; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7026; GFX900-NEXT: ;;#ASMSTART7027; GFX900-NEXT: ; def s[8:10]7028; GFX900-NEXT: ;;#ASMEND7029; GFX900-NEXT: ;;#ASMSTART7030; GFX900-NEXT: ; def s[4:6]7031; GFX900-NEXT: ;;#ASMEND7032; GFX900-NEXT: s_mov_b32 s8, s107033; GFX900-NEXT: s_mov_b32 s9, s67034; GFX900-NEXT: ;;#ASMSTART7035; GFX900-NEXT: ; use s[8:11]7036; GFX900-NEXT: ;;#ASMEND7037; GFX900-NEXT: s_setpc_b64 s[30:31]7038;7039; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_2_u_u:7040; GFX90A: ; %bb.0:7041; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7042; GFX90A-NEXT: ;;#ASMSTART7043; GFX90A-NEXT: ; def s[8:10]7044; GFX90A-NEXT: ;;#ASMEND7045; GFX90A-NEXT: ;;#ASMSTART7046; GFX90A-NEXT: ; def s[4:6]7047; GFX90A-NEXT: ;;#ASMEND7048; GFX90A-NEXT: s_mov_b32 s8, s107049; GFX90A-NEXT: s_mov_b32 s9, s67050; GFX90A-NEXT: ;;#ASMSTART7051; GFX90A-NEXT: ; use s[8:11]7052; GFX90A-NEXT: ;;#ASMEND7053; GFX90A-NEXT: s_setpc_b64 s[30:31]7054;7055; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_2_u_u:7056; GFX942: ; %bb.0:7057; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7058; GFX942-NEXT: ;;#ASMSTART7059; GFX942-NEXT: ; def s[0:2]7060; GFX942-NEXT: ;;#ASMEND7061; GFX942-NEXT: ;;#ASMSTART7062; GFX942-NEXT: ; def s[4:6]7063; GFX942-NEXT: ;;#ASMEND7064; GFX942-NEXT: s_mov_b32 s8, s67065; GFX942-NEXT: s_mov_b32 s9, s27066; GFX942-NEXT: ;;#ASMSTART7067; GFX942-NEXT: ; use s[8:11]7068; GFX942-NEXT: ;;#ASMEND7069; GFX942-NEXT: s_setpc_b64 s[30:31]7070 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7071 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7072 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 2, i32 poison, i32 poison>7073 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)7074 ret void7075}7076 7077define void @s_shuffle_v4p3_v3p3__5_3_u_u() {7078; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_3_u_u:7079; GFX900: ; %bb.0:7080; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7081; GFX900-NEXT: ;;#ASMSTART7082; GFX900-NEXT: ; def s[4:6]7083; GFX900-NEXT: ;;#ASMEND7084; GFX900-NEXT: s_mov_b32 s8, s67085; GFX900-NEXT: s_mov_b32 s9, s47086; GFX900-NEXT: ;;#ASMSTART7087; GFX900-NEXT: ; use s[8:11]7088; GFX900-NEXT: ;;#ASMEND7089; GFX900-NEXT: s_setpc_b64 s[30:31]7090;7091; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_3_u_u:7092; GFX90A: ; %bb.0:7093; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7094; GFX90A-NEXT: ;;#ASMSTART7095; GFX90A-NEXT: ; def s[4:6]7096; GFX90A-NEXT: ;;#ASMEND7097; GFX90A-NEXT: s_mov_b32 s8, s67098; GFX90A-NEXT: s_mov_b32 s9, s47099; GFX90A-NEXT: ;;#ASMSTART7100; GFX90A-NEXT: ; use s[8:11]7101; GFX90A-NEXT: ;;#ASMEND7102; GFX90A-NEXT: s_setpc_b64 s[30:31]7103;7104; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_3_u_u:7105; GFX942: ; %bb.0:7106; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7107; GFX942-NEXT: ;;#ASMSTART7108; GFX942-NEXT: ; def s[0:2]7109; GFX942-NEXT: ;;#ASMEND7110; GFX942-NEXT: s_mov_b32 s8, s27111; GFX942-NEXT: s_mov_b32 s9, s07112; GFX942-NEXT: ;;#ASMSTART7113; GFX942-NEXT: ; use s[8:11]7114; GFX942-NEXT: ;;#ASMEND7115; GFX942-NEXT: s_setpc_b64 s[30:31]7116 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7117 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7118 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 3, i32 poison, i32 poison>7119 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)7120 ret void7121}7122 7123define void @s_shuffle_v4p3_v3p3__5_4_u_u() {7124; GFX9-LABEL: s_shuffle_v4p3_v3p3__5_4_u_u:7125; GFX9: ; %bb.0:7126; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7127; GFX9-NEXT: ;;#ASMSTART7128; GFX9-NEXT: ; def s[8:10]7129; GFX9-NEXT: ;;#ASMEND7130; GFX9-NEXT: s_mov_b32 s8, s107131; GFX9-NEXT: ;;#ASMSTART7132; GFX9-NEXT: ; use s[8:11]7133; GFX9-NEXT: ;;#ASMEND7134; GFX9-NEXT: s_setpc_b64 s[30:31]7135 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7136 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7137 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 4, i32 poison, i32 poison>7138 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)7139 ret void7140}7141 7142define void @s_shuffle_v4p3_v3p3__5_5_u_u() {7143; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_u_u:7144; GFX900: ; %bb.0:7145; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7146; GFX900-NEXT: ;;#ASMSTART7147; GFX900-NEXT: ; def s[4:6]7148; GFX900-NEXT: ;;#ASMEND7149; GFX900-NEXT: s_mov_b32 s8, s67150; GFX900-NEXT: s_mov_b32 s9, s67151; GFX900-NEXT: ;;#ASMSTART7152; GFX900-NEXT: ; use s[8:11]7153; GFX900-NEXT: ;;#ASMEND7154; GFX900-NEXT: s_setpc_b64 s[30:31]7155;7156; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_u_u:7157; GFX90A: ; %bb.0:7158; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7159; GFX90A-NEXT: ;;#ASMSTART7160; GFX90A-NEXT: ; def s[4:6]7161; GFX90A-NEXT: ;;#ASMEND7162; GFX90A-NEXT: s_mov_b32 s8, s67163; GFX90A-NEXT: s_mov_b32 s9, s67164; GFX90A-NEXT: ;;#ASMSTART7165; GFX90A-NEXT: ; use s[8:11]7166; GFX90A-NEXT: ;;#ASMEND7167; GFX90A-NEXT: s_setpc_b64 s[30:31]7168;7169; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_u_u:7170; GFX942: ; %bb.0:7171; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7172; GFX942-NEXT: ;;#ASMSTART7173; GFX942-NEXT: ; def s[0:2]7174; GFX942-NEXT: ;;#ASMEND7175; GFX942-NEXT: s_mov_b32 s8, s27176; GFX942-NEXT: s_mov_b32 s9, s27177; GFX942-NEXT: ;;#ASMSTART7178; GFX942-NEXT: ; use s[8:11]7179; GFX942-NEXT: ;;#ASMEND7180; GFX942-NEXT: s_setpc_b64 s[30:31]7181 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7182 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7183 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 poison>7184 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)7185 ret void7186}7187 7188define void @s_shuffle_v4p3_v3p3__5_5_0_u() {7189; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_0_u:7190; GFX900: ; %bb.0:7191; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7192; GFX900-NEXT: ;;#ASMSTART7193; GFX900-NEXT: ; def s[8:10]7194; GFX900-NEXT: ;;#ASMEND7195; GFX900-NEXT: ;;#ASMSTART7196; GFX900-NEXT: ; def s[4:6]7197; GFX900-NEXT: ;;#ASMEND7198; GFX900-NEXT: s_mov_b32 s8, s107199; GFX900-NEXT: s_mov_b32 s9, s107200; GFX900-NEXT: s_mov_b32 s10, s47201; GFX900-NEXT: ;;#ASMSTART7202; GFX900-NEXT: ; use s[8:11]7203; GFX900-NEXT: ;;#ASMEND7204; GFX900-NEXT: s_setpc_b64 s[30:31]7205;7206; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_0_u:7207; GFX90A: ; %bb.0:7208; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7209; GFX90A-NEXT: ;;#ASMSTART7210; GFX90A-NEXT: ; def s[8:10]7211; GFX90A-NEXT: ;;#ASMEND7212; GFX90A-NEXT: ;;#ASMSTART7213; GFX90A-NEXT: ; def s[4:6]7214; GFX90A-NEXT: ;;#ASMEND7215; GFX90A-NEXT: s_mov_b32 s8, s107216; GFX90A-NEXT: s_mov_b32 s9, s107217; GFX90A-NEXT: s_mov_b32 s10, s47218; GFX90A-NEXT: ;;#ASMSTART7219; GFX90A-NEXT: ; use s[8:11]7220; GFX90A-NEXT: ;;#ASMEND7221; GFX90A-NEXT: s_setpc_b64 s[30:31]7222;7223; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_0_u:7224; GFX942: ; %bb.0:7225; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7226; GFX942-NEXT: ;;#ASMSTART7227; GFX942-NEXT: ; def s[0:2]7228; GFX942-NEXT: ;;#ASMEND7229; GFX942-NEXT: ;;#ASMSTART7230; GFX942-NEXT: ; def s[4:6]7231; GFX942-NEXT: ;;#ASMEND7232; GFX942-NEXT: s_mov_b32 s8, s67233; GFX942-NEXT: s_mov_b32 s9, s67234; GFX942-NEXT: s_mov_b32 s10, s07235; GFX942-NEXT: ;;#ASMSTART7236; GFX942-NEXT: ; use s[8:11]7237; GFX942-NEXT: ;;#ASMEND7238; GFX942-NEXT: s_setpc_b64 s[30:31]7239 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7240 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7241 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 poison>7242 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)7243 ret void7244}7245 7246define void @s_shuffle_v4p3_v3p3__5_5_1_u() {7247; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_1_u:7248; GFX900: ; %bb.0:7249; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7250; GFX900-NEXT: ;;#ASMSTART7251; GFX900-NEXT: ; def s[8:10]7252; GFX900-NEXT: ;;#ASMEND7253; GFX900-NEXT: ;;#ASMSTART7254; GFX900-NEXT: ; def s[4:6]7255; GFX900-NEXT: ;;#ASMEND7256; GFX900-NEXT: s_mov_b32 s8, s107257; GFX900-NEXT: s_mov_b32 s9, s107258; GFX900-NEXT: s_mov_b32 s10, s57259; GFX900-NEXT: ;;#ASMSTART7260; GFX900-NEXT: ; use s[8:11]7261; GFX900-NEXT: ;;#ASMEND7262; GFX900-NEXT: s_setpc_b64 s[30:31]7263;7264; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_1_u:7265; GFX90A: ; %bb.0:7266; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7267; GFX90A-NEXT: ;;#ASMSTART7268; GFX90A-NEXT: ; def s[8:10]7269; GFX90A-NEXT: ;;#ASMEND7270; GFX90A-NEXT: ;;#ASMSTART7271; GFX90A-NEXT: ; def s[4:6]7272; GFX90A-NEXT: ;;#ASMEND7273; GFX90A-NEXT: s_mov_b32 s8, s107274; GFX90A-NEXT: s_mov_b32 s9, s107275; GFX90A-NEXT: s_mov_b32 s10, s57276; GFX90A-NEXT: ;;#ASMSTART7277; GFX90A-NEXT: ; use s[8:11]7278; GFX90A-NEXT: ;;#ASMEND7279; GFX90A-NEXT: s_setpc_b64 s[30:31]7280;7281; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_1_u:7282; GFX942: ; %bb.0:7283; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7284; GFX942-NEXT: ;;#ASMSTART7285; GFX942-NEXT: ; def s[0:2]7286; GFX942-NEXT: ;;#ASMEND7287; GFX942-NEXT: ;;#ASMSTART7288; GFX942-NEXT: ; def s[4:6]7289; GFX942-NEXT: ;;#ASMEND7290; GFX942-NEXT: s_mov_b32 s8, s67291; GFX942-NEXT: s_mov_b32 s9, s67292; GFX942-NEXT: s_mov_b32 s10, s17293; GFX942-NEXT: ;;#ASMSTART7294; GFX942-NEXT: ; use s[8:11]7295; GFX942-NEXT: ;;#ASMEND7296; GFX942-NEXT: s_setpc_b64 s[30:31]7297 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7298 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7299 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 poison>7300 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)7301 ret void7302}7303 7304define void @s_shuffle_v4p3_v3p3__5_5_2_u() {7305; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_2_u:7306; GFX900: ; %bb.0:7307; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7308; GFX900-NEXT: ;;#ASMSTART7309; GFX900-NEXT: ; def s[8:10]7310; GFX900-NEXT: ;;#ASMEND7311; GFX900-NEXT: ;;#ASMSTART7312; GFX900-NEXT: ; def s[4:6]7313; GFX900-NEXT: ;;#ASMEND7314; GFX900-NEXT: s_mov_b32 s8, s67315; GFX900-NEXT: s_mov_b32 s9, s67316; GFX900-NEXT: ;;#ASMSTART7317; GFX900-NEXT: ; use s[8:11]7318; GFX900-NEXT: ;;#ASMEND7319; GFX900-NEXT: s_setpc_b64 s[30:31]7320;7321; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_2_u:7322; GFX90A: ; %bb.0:7323; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7324; GFX90A-NEXT: ;;#ASMSTART7325; GFX90A-NEXT: ; def s[8:10]7326; GFX90A-NEXT: ;;#ASMEND7327; GFX90A-NEXT: ;;#ASMSTART7328; GFX90A-NEXT: ; def s[4:6]7329; GFX90A-NEXT: ;;#ASMEND7330; GFX90A-NEXT: s_mov_b32 s8, s67331; GFX90A-NEXT: s_mov_b32 s9, s67332; GFX90A-NEXT: ;;#ASMSTART7333; GFX90A-NEXT: ; use s[8:11]7334; GFX90A-NEXT: ;;#ASMEND7335; GFX90A-NEXT: s_setpc_b64 s[30:31]7336;7337; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_2_u:7338; GFX942: ; %bb.0:7339; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7340; GFX942-NEXT: ;;#ASMSTART7341; GFX942-NEXT: ; def s[8:10]7342; GFX942-NEXT: ;;#ASMEND7343; GFX942-NEXT: ;;#ASMSTART7344; GFX942-NEXT: ; def s[0:2]7345; GFX942-NEXT: ;;#ASMEND7346; GFX942-NEXT: s_mov_b32 s8, s27347; GFX942-NEXT: s_mov_b32 s9, s27348; GFX942-NEXT: ;;#ASMSTART7349; GFX942-NEXT: ; use s[8:11]7350; GFX942-NEXT: ;;#ASMEND7351; GFX942-NEXT: s_setpc_b64 s[30:31]7352 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7353 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7354 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 poison>7355 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)7356 ret void7357}7358 7359define void @s_shuffle_v4p3_v3p3__5_5_3_u() {7360; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_3_u:7361; GFX900: ; %bb.0:7362; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7363; GFX900-NEXT: ;;#ASMSTART7364; GFX900-NEXT: ; def s[4:6]7365; GFX900-NEXT: ;;#ASMEND7366; GFX900-NEXT: s_mov_b32 s8, s67367; GFX900-NEXT: s_mov_b32 s9, s67368; GFX900-NEXT: s_mov_b32 s10, s47369; GFX900-NEXT: ;;#ASMSTART7370; GFX900-NEXT: ; use s[8:11]7371; GFX900-NEXT: ;;#ASMEND7372; GFX900-NEXT: s_setpc_b64 s[30:31]7373;7374; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_3_u:7375; GFX90A: ; %bb.0:7376; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7377; GFX90A-NEXT: ;;#ASMSTART7378; GFX90A-NEXT: ; def s[4:6]7379; GFX90A-NEXT: ;;#ASMEND7380; GFX90A-NEXT: s_mov_b32 s8, s67381; GFX90A-NEXT: s_mov_b32 s9, s67382; GFX90A-NEXT: s_mov_b32 s10, s47383; GFX90A-NEXT: ;;#ASMSTART7384; GFX90A-NEXT: ; use s[8:11]7385; GFX90A-NEXT: ;;#ASMEND7386; GFX90A-NEXT: s_setpc_b64 s[30:31]7387;7388; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_3_u:7389; GFX942: ; %bb.0:7390; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7391; GFX942-NEXT: ;;#ASMSTART7392; GFX942-NEXT: ; def s[0:2]7393; GFX942-NEXT: ;;#ASMEND7394; GFX942-NEXT: s_mov_b32 s8, s27395; GFX942-NEXT: s_mov_b32 s9, s27396; GFX942-NEXT: s_mov_b32 s10, s07397; GFX942-NEXT: ;;#ASMSTART7398; GFX942-NEXT: ; use s[8:11]7399; GFX942-NEXT: ;;#ASMEND7400; GFX942-NEXT: s_setpc_b64 s[30:31]7401 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7402 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7403 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 poison>7404 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)7405 ret void7406}7407 7408define void @s_shuffle_v4p3_v3p3__5_5_4_u() {7409; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_4_u:7410; GFX900: ; %bb.0:7411; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7412; GFX900-NEXT: ;;#ASMSTART7413; GFX900-NEXT: ; def s[4:6]7414; GFX900-NEXT: ;;#ASMEND7415; GFX900-NEXT: s_mov_b32 s8, s67416; GFX900-NEXT: s_mov_b32 s9, s67417; GFX900-NEXT: s_mov_b32 s10, s57418; GFX900-NEXT: ;;#ASMSTART7419; GFX900-NEXT: ; use s[8:11]7420; GFX900-NEXT: ;;#ASMEND7421; GFX900-NEXT: s_setpc_b64 s[30:31]7422;7423; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_4_u:7424; GFX90A: ; %bb.0:7425; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7426; GFX90A-NEXT: ;;#ASMSTART7427; GFX90A-NEXT: ; def s[4:6]7428; GFX90A-NEXT: ;;#ASMEND7429; GFX90A-NEXT: s_mov_b32 s8, s67430; GFX90A-NEXT: s_mov_b32 s9, s67431; GFX90A-NEXT: s_mov_b32 s10, s57432; GFX90A-NEXT: ;;#ASMSTART7433; GFX90A-NEXT: ; use s[8:11]7434; GFX90A-NEXT: ;;#ASMEND7435; GFX90A-NEXT: s_setpc_b64 s[30:31]7436;7437; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_4_u:7438; GFX942: ; %bb.0:7439; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7440; GFX942-NEXT: ;;#ASMSTART7441; GFX942-NEXT: ; def s[0:2]7442; GFX942-NEXT: ;;#ASMEND7443; GFX942-NEXT: s_mov_b32 s8, s27444; GFX942-NEXT: s_mov_b32 s9, s27445; GFX942-NEXT: s_mov_b32 s10, s17446; GFX942-NEXT: ;;#ASMSTART7447; GFX942-NEXT: ; use s[8:11]7448; GFX942-NEXT: ;;#ASMEND7449; GFX942-NEXT: s_setpc_b64 s[30:31]7450 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7451 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7452 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 poison>7453 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)7454 ret void7455}7456 7457define void @s_shuffle_v4p3_v3p3__5_5_5_u() {7458; GFX9-LABEL: s_shuffle_v4p3_v3p3__5_5_5_u:7459; GFX9: ; %bb.0:7460; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7461; GFX9-NEXT: ;;#ASMSTART7462; GFX9-NEXT: ; def s[8:10]7463; GFX9-NEXT: ;;#ASMEND7464; GFX9-NEXT: s_mov_b32 s8, s107465; GFX9-NEXT: s_mov_b32 s9, s107466; GFX9-NEXT: ;;#ASMSTART7467; GFX9-NEXT: ; use s[8:11]7468; GFX9-NEXT: ;;#ASMEND7469; GFX9-NEXT: s_setpc_b64 s[30:31]7470 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7471 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7472 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 poison>7473 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)7474 ret void7475}7476 7477define void @s_shuffle_v4p3_v3p3__5_5_5_0() {7478; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_5_0:7479; GFX900: ; %bb.0:7480; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7481; GFX900-NEXT: ;;#ASMSTART7482; GFX900-NEXT: ; def s[8:10]7483; GFX900-NEXT: ;;#ASMEND7484; GFX900-NEXT: ;;#ASMSTART7485; GFX900-NEXT: ; def s[4:6]7486; GFX900-NEXT: ;;#ASMEND7487; GFX900-NEXT: s_mov_b32 s8, s107488; GFX900-NEXT: s_mov_b32 s9, s107489; GFX900-NEXT: s_mov_b32 s11, s47490; GFX900-NEXT: ;;#ASMSTART7491; GFX900-NEXT: ; use s[8:11]7492; GFX900-NEXT: ;;#ASMEND7493; GFX900-NEXT: s_setpc_b64 s[30:31]7494;7495; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_5_0:7496; GFX90A: ; %bb.0:7497; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7498; GFX90A-NEXT: ;;#ASMSTART7499; GFX90A-NEXT: ; def s[8:10]7500; GFX90A-NEXT: ;;#ASMEND7501; GFX90A-NEXT: ;;#ASMSTART7502; GFX90A-NEXT: ; def s[4:6]7503; GFX90A-NEXT: ;;#ASMEND7504; GFX90A-NEXT: s_mov_b32 s8, s107505; GFX90A-NEXT: s_mov_b32 s9, s107506; GFX90A-NEXT: s_mov_b32 s11, s47507; GFX90A-NEXT: ;;#ASMSTART7508; GFX90A-NEXT: ; use s[8:11]7509; GFX90A-NEXT: ;;#ASMEND7510; GFX90A-NEXT: s_setpc_b64 s[30:31]7511;7512; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_5_0:7513; GFX942: ; %bb.0:7514; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7515; GFX942-NEXT: ;;#ASMSTART7516; GFX942-NEXT: ; def s[8:10]7517; GFX942-NEXT: ;;#ASMEND7518; GFX942-NEXT: ;;#ASMSTART7519; GFX942-NEXT: ; def s[0:2]7520; GFX942-NEXT: ;;#ASMEND7521; GFX942-NEXT: s_mov_b32 s8, s107522; GFX942-NEXT: s_mov_b32 s9, s107523; GFX942-NEXT: s_mov_b32 s11, s07524; GFX942-NEXT: ;;#ASMSTART7525; GFX942-NEXT: ; use s[8:11]7526; GFX942-NEXT: ;;#ASMEND7527; GFX942-NEXT: s_setpc_b64 s[30:31]7528 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7529 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7530 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 0>7531 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)7532 ret void7533}7534 7535define void @s_shuffle_v4p3_v3p3__5_5_5_1() {7536; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_5_1:7537; GFX900: ; %bb.0:7538; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7539; GFX900-NEXT: ;;#ASMSTART7540; GFX900-NEXT: ; def s[8:10]7541; GFX900-NEXT: ;;#ASMEND7542; GFX900-NEXT: ;;#ASMSTART7543; GFX900-NEXT: ; def s[4:6]7544; GFX900-NEXT: ;;#ASMEND7545; GFX900-NEXT: s_mov_b32 s8, s107546; GFX900-NEXT: s_mov_b32 s9, s107547; GFX900-NEXT: s_mov_b32 s11, s57548; GFX900-NEXT: ;;#ASMSTART7549; GFX900-NEXT: ; use s[8:11]7550; GFX900-NEXT: ;;#ASMEND7551; GFX900-NEXT: s_setpc_b64 s[30:31]7552;7553; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_5_1:7554; GFX90A: ; %bb.0:7555; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7556; GFX90A-NEXT: ;;#ASMSTART7557; GFX90A-NEXT: ; def s[8:10]7558; GFX90A-NEXT: ;;#ASMEND7559; GFX90A-NEXT: ;;#ASMSTART7560; GFX90A-NEXT: ; def s[4:6]7561; GFX90A-NEXT: ;;#ASMEND7562; GFX90A-NEXT: s_mov_b32 s8, s107563; GFX90A-NEXT: s_mov_b32 s9, s107564; GFX90A-NEXT: s_mov_b32 s11, s57565; GFX90A-NEXT: ;;#ASMSTART7566; GFX90A-NEXT: ; use s[8:11]7567; GFX90A-NEXT: ;;#ASMEND7568; GFX90A-NEXT: s_setpc_b64 s[30:31]7569;7570; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_5_1:7571; GFX942: ; %bb.0:7572; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7573; GFX942-NEXT: ;;#ASMSTART7574; GFX942-NEXT: ; def s[8:10]7575; GFX942-NEXT: ;;#ASMEND7576; GFX942-NEXT: ;;#ASMSTART7577; GFX942-NEXT: ; def s[0:2]7578; GFX942-NEXT: ;;#ASMEND7579; GFX942-NEXT: s_mov_b32 s8, s107580; GFX942-NEXT: s_mov_b32 s9, s107581; GFX942-NEXT: s_mov_b32 s11, s17582; GFX942-NEXT: ;;#ASMSTART7583; GFX942-NEXT: ; use s[8:11]7584; GFX942-NEXT: ;;#ASMEND7585; GFX942-NEXT: s_setpc_b64 s[30:31]7586 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7587 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7588 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 1>7589 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)7590 ret void7591}7592 7593define void @s_shuffle_v4p3_v3p3__5_5_5_2() {7594; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_5_2:7595; GFX900: ; %bb.0:7596; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7597; GFX900-NEXT: ;;#ASMSTART7598; GFX900-NEXT: ; def s[8:10]7599; GFX900-NEXT: ;;#ASMEND7600; GFX900-NEXT: ;;#ASMSTART7601; GFX900-NEXT: ; def s[4:6]7602; GFX900-NEXT: ;;#ASMEND7603; GFX900-NEXT: s_mov_b32 s8, s107604; GFX900-NEXT: s_mov_b32 s9, s107605; GFX900-NEXT: s_mov_b32 s11, s67606; GFX900-NEXT: ;;#ASMSTART7607; GFX900-NEXT: ; use s[8:11]7608; GFX900-NEXT: ;;#ASMEND7609; GFX900-NEXT: s_setpc_b64 s[30:31]7610;7611; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_5_2:7612; GFX90A: ; %bb.0:7613; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7614; GFX90A-NEXT: ;;#ASMSTART7615; GFX90A-NEXT: ; def s[8:10]7616; GFX90A-NEXT: ;;#ASMEND7617; GFX90A-NEXT: ;;#ASMSTART7618; GFX90A-NEXT: ; def s[4:6]7619; GFX90A-NEXT: ;;#ASMEND7620; GFX90A-NEXT: s_mov_b32 s8, s107621; GFX90A-NEXT: s_mov_b32 s9, s107622; GFX90A-NEXT: s_mov_b32 s11, s67623; GFX90A-NEXT: ;;#ASMSTART7624; GFX90A-NEXT: ; use s[8:11]7625; GFX90A-NEXT: ;;#ASMEND7626; GFX90A-NEXT: s_setpc_b64 s[30:31]7627;7628; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_5_2:7629; GFX942: ; %bb.0:7630; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7631; GFX942-NEXT: ;;#ASMSTART7632; GFX942-NEXT: ; def s[8:10]7633; GFX942-NEXT: ;;#ASMEND7634; GFX942-NEXT: ;;#ASMSTART7635; GFX942-NEXT: ; def s[0:2]7636; GFX942-NEXT: ;;#ASMEND7637; GFX942-NEXT: s_mov_b32 s8, s107638; GFX942-NEXT: s_mov_b32 s9, s107639; GFX942-NEXT: s_mov_b32 s11, s27640; GFX942-NEXT: ;;#ASMSTART7641; GFX942-NEXT: ; use s[8:11]7642; GFX942-NEXT: ;;#ASMEND7643; GFX942-NEXT: s_setpc_b64 s[30:31]7644 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7645 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7646 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 2>7647 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)7648 ret void7649}7650 7651define void @s_shuffle_v4p3_v3p3__5_5_5_3() {7652; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_5_3:7653; GFX900: ; %bb.0:7654; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7655; GFX900-NEXT: ;;#ASMSTART7656; GFX900-NEXT: ; def s[4:6]7657; GFX900-NEXT: ;;#ASMEND7658; GFX900-NEXT: s_mov_b32 s8, s67659; GFX900-NEXT: s_mov_b32 s9, s67660; GFX900-NEXT: s_mov_b32 s10, s67661; GFX900-NEXT: s_mov_b32 s11, s47662; GFX900-NEXT: ;;#ASMSTART7663; GFX900-NEXT: ; use s[8:11]7664; GFX900-NEXT: ;;#ASMEND7665; GFX900-NEXT: s_setpc_b64 s[30:31]7666;7667; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_5_3:7668; GFX90A: ; %bb.0:7669; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7670; GFX90A-NEXT: ;;#ASMSTART7671; GFX90A-NEXT: ; def s[4:6]7672; GFX90A-NEXT: ;;#ASMEND7673; GFX90A-NEXT: s_mov_b32 s8, s67674; GFX90A-NEXT: s_mov_b32 s9, s67675; GFX90A-NEXT: s_mov_b32 s10, s67676; GFX90A-NEXT: s_mov_b32 s11, s47677; GFX90A-NEXT: ;;#ASMSTART7678; GFX90A-NEXT: ; use s[8:11]7679; GFX90A-NEXT: ;;#ASMEND7680; GFX90A-NEXT: s_setpc_b64 s[30:31]7681;7682; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_5_3:7683; GFX942: ; %bb.0:7684; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7685; GFX942-NEXT: ;;#ASMSTART7686; GFX942-NEXT: ; def s[0:2]7687; GFX942-NEXT: ;;#ASMEND7688; GFX942-NEXT: s_mov_b32 s8, s27689; GFX942-NEXT: s_mov_b32 s9, s27690; GFX942-NEXT: s_mov_b32 s10, s27691; GFX942-NEXT: s_mov_b32 s11, s07692; GFX942-NEXT: ;;#ASMSTART7693; GFX942-NEXT: ; use s[8:11]7694; GFX942-NEXT: ;;#ASMEND7695; GFX942-NEXT: s_setpc_b64 s[30:31]7696 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7697 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7698 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 3>7699 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)7700 ret void7701}7702 7703define void @s_shuffle_v4p3_v3p3__5_5_5_4() {7704; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_5_4:7705; GFX900: ; %bb.0:7706; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7707; GFX900-NEXT: ;;#ASMSTART7708; GFX900-NEXT: ; def s[4:6]7709; GFX900-NEXT: ;;#ASMEND7710; GFX900-NEXT: s_mov_b32 s8, s67711; GFX900-NEXT: s_mov_b32 s9, s67712; GFX900-NEXT: s_mov_b32 s10, s67713; GFX900-NEXT: s_mov_b32 s11, s57714; GFX900-NEXT: ;;#ASMSTART7715; GFX900-NEXT: ; use s[8:11]7716; GFX900-NEXT: ;;#ASMEND7717; GFX900-NEXT: s_setpc_b64 s[30:31]7718;7719; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_5_4:7720; GFX90A: ; %bb.0:7721; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7722; GFX90A-NEXT: ;;#ASMSTART7723; GFX90A-NEXT: ; def s[4:6]7724; GFX90A-NEXT: ;;#ASMEND7725; GFX90A-NEXT: s_mov_b32 s8, s67726; GFX90A-NEXT: s_mov_b32 s9, s67727; GFX90A-NEXT: s_mov_b32 s10, s67728; GFX90A-NEXT: s_mov_b32 s11, s57729; GFX90A-NEXT: ;;#ASMSTART7730; GFX90A-NEXT: ; use s[8:11]7731; GFX90A-NEXT: ;;#ASMEND7732; GFX90A-NEXT: s_setpc_b64 s[30:31]7733;7734; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_5_4:7735; GFX942: ; %bb.0:7736; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7737; GFX942-NEXT: ;;#ASMSTART7738; GFX942-NEXT: ; def s[0:2]7739; GFX942-NEXT: ;;#ASMEND7740; GFX942-NEXT: s_mov_b32 s8, s27741; GFX942-NEXT: s_mov_b32 s9, s27742; GFX942-NEXT: s_mov_b32 s10, s27743; GFX942-NEXT: s_mov_b32 s11, s17744; GFX942-NEXT: ;;#ASMSTART7745; GFX942-NEXT: ; use s[8:11]7746; GFX942-NEXT: ;;#ASMEND7747; GFX942-NEXT: s_setpc_b64 s[30:31]7748 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7749 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7750 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 4>7751 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)7752 ret void7753}7754 7755define void @s_shuffle_v4p3_v3p3__5_5_5_5() {7756; GFX9-LABEL: s_shuffle_v4p3_v3p3__5_5_5_5:7757; GFX9: ; %bb.0:7758; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7759; GFX9-NEXT: ;;#ASMSTART7760; GFX9-NEXT: ; def s[8:10]7761; GFX9-NEXT: ;;#ASMEND7762; GFX9-NEXT: s_mov_b32 s8, s107763; GFX9-NEXT: s_mov_b32 s9, s107764; GFX9-NEXT: s_mov_b32 s11, s107765; GFX9-NEXT: ;;#ASMSTART7766; GFX9-NEXT: ; use s[8:11]7767; GFX9-NEXT: ;;#ASMEND7768; GFX9-NEXT: s_setpc_b64 s[30:31]7769 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7770 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7771 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 5, i32 5>7772 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)7773 ret void7774}7775 7776define void @s_shuffle_v4p3_v3p3__u_0_0_0() {7777; GFX900-LABEL: s_shuffle_v4p3_v3p3__u_0_0_0:7778; GFX900: ; %bb.0:7779; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7780; GFX900-NEXT: ;;#ASMSTART7781; GFX900-NEXT: ; def s[4:6]7782; GFX900-NEXT: ;;#ASMEND7783; GFX900-NEXT: s_mov_b32 s9, s47784; GFX900-NEXT: s_mov_b32 s10, s47785; GFX900-NEXT: s_mov_b32 s11, s47786; GFX900-NEXT: ;;#ASMSTART7787; GFX900-NEXT: ; use s[8:11]7788; GFX900-NEXT: ;;#ASMEND7789; GFX900-NEXT: s_setpc_b64 s[30:31]7790;7791; GFX90A-LABEL: s_shuffle_v4p3_v3p3__u_0_0_0:7792; GFX90A: ; %bb.0:7793; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7794; GFX90A-NEXT: ;;#ASMSTART7795; GFX90A-NEXT: ; def s[4:6]7796; GFX90A-NEXT: ;;#ASMEND7797; GFX90A-NEXT: s_mov_b32 s9, s47798; GFX90A-NEXT: s_mov_b32 s10, s47799; GFX90A-NEXT: s_mov_b32 s11, s47800; GFX90A-NEXT: ;;#ASMSTART7801; GFX90A-NEXT: ; use s[8:11]7802; GFX90A-NEXT: ;;#ASMEND7803; GFX90A-NEXT: s_setpc_b64 s[30:31]7804;7805; GFX942-LABEL: s_shuffle_v4p3_v3p3__u_0_0_0:7806; GFX942: ; %bb.0:7807; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7808; GFX942-NEXT: ;;#ASMSTART7809; GFX942-NEXT: ; def s[0:2]7810; GFX942-NEXT: ;;#ASMEND7811; GFX942-NEXT: s_mov_b32 s9, s07812; GFX942-NEXT: s_mov_b32 s10, s07813; GFX942-NEXT: s_mov_b32 s11, s07814; GFX942-NEXT: ;;#ASMSTART7815; GFX942-NEXT: ; use s[8:11]7816; GFX942-NEXT: ;;#ASMEND7817; GFX942-NEXT: s_setpc_b64 s[30:31]7818 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7819 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 poison, i32 0, i32 0, i32 0>7820 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)7821 ret void7822}7823 7824define void @s_shuffle_v4p3_v3p3__0_0_0_0() {7825; GFX9-LABEL: s_shuffle_v4p3_v3p3__0_0_0_0:7826; GFX9: ; %bb.0:7827; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7828; GFX9-NEXT: ;;#ASMSTART7829; GFX9-NEXT: ; def s[8:10]7830; GFX9-NEXT: ;;#ASMEND7831; GFX9-NEXT: s_mov_b32 s9, s87832; GFX9-NEXT: s_mov_b32 s10, s87833; GFX9-NEXT: s_mov_b32 s11, s87834; GFX9-NEXT: ;;#ASMSTART7835; GFX9-NEXT: ; use s[8:11]7836; GFX9-NEXT: ;;#ASMEND7837; GFX9-NEXT: s_setpc_b64 s[30:31]7838 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7839 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> zeroinitializer7840 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)7841 ret void7842}7843 7844define void @s_shuffle_v4p3_v3p3__1_0_0_0() {7845; GFX900-LABEL: s_shuffle_v4p3_v3p3__1_0_0_0:7846; GFX900: ; %bb.0:7847; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7848; GFX900-NEXT: ;;#ASMSTART7849; GFX900-NEXT: ; def s[4:6]7850; GFX900-NEXT: ;;#ASMEND7851; GFX900-NEXT: s_mov_b32 s8, s57852; GFX900-NEXT: s_mov_b32 s9, s47853; GFX900-NEXT: s_mov_b32 s10, s47854; GFX900-NEXT: s_mov_b32 s11, s47855; GFX900-NEXT: ;;#ASMSTART7856; GFX900-NEXT: ; use s[8:11]7857; GFX900-NEXT: ;;#ASMEND7858; GFX900-NEXT: s_setpc_b64 s[30:31]7859;7860; GFX90A-LABEL: s_shuffle_v4p3_v3p3__1_0_0_0:7861; GFX90A: ; %bb.0:7862; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7863; GFX90A-NEXT: ;;#ASMSTART7864; GFX90A-NEXT: ; def s[4:6]7865; GFX90A-NEXT: ;;#ASMEND7866; GFX90A-NEXT: s_mov_b32 s8, s57867; GFX90A-NEXT: s_mov_b32 s9, s47868; GFX90A-NEXT: s_mov_b32 s10, s47869; GFX90A-NEXT: s_mov_b32 s11, s47870; GFX90A-NEXT: ;;#ASMSTART7871; GFX90A-NEXT: ; use s[8:11]7872; GFX90A-NEXT: ;;#ASMEND7873; GFX90A-NEXT: s_setpc_b64 s[30:31]7874;7875; GFX942-LABEL: s_shuffle_v4p3_v3p3__1_0_0_0:7876; GFX942: ; %bb.0:7877; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7878; GFX942-NEXT: ;;#ASMSTART7879; GFX942-NEXT: ; def s[0:2]7880; GFX942-NEXT: ;;#ASMEND7881; GFX942-NEXT: s_mov_b32 s8, s17882; GFX942-NEXT: s_mov_b32 s9, s07883; GFX942-NEXT: s_mov_b32 s10, s07884; GFX942-NEXT: s_mov_b32 s11, s07885; GFX942-NEXT: ;;#ASMSTART7886; GFX942-NEXT: ; use s[8:11]7887; GFX942-NEXT: ;;#ASMEND7888; GFX942-NEXT: s_setpc_b64 s[30:31]7889 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7890 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 0>7891 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)7892 ret void7893}7894 7895define void @s_shuffle_v4p3_v3p3__2_0_0_0() {7896; GFX900-LABEL: s_shuffle_v4p3_v3p3__2_0_0_0:7897; GFX900: ; %bb.0:7898; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7899; GFX900-NEXT: ;;#ASMSTART7900; GFX900-NEXT: ; def s[4:6]7901; GFX900-NEXT: ;;#ASMEND7902; GFX900-NEXT: s_mov_b32 s8, s67903; GFX900-NEXT: s_mov_b32 s9, s47904; GFX900-NEXT: s_mov_b32 s10, s47905; GFX900-NEXT: s_mov_b32 s11, s47906; GFX900-NEXT: ;;#ASMSTART7907; GFX900-NEXT: ; use s[8:11]7908; GFX900-NEXT: ;;#ASMEND7909; GFX900-NEXT: s_setpc_b64 s[30:31]7910;7911; GFX90A-LABEL: s_shuffle_v4p3_v3p3__2_0_0_0:7912; GFX90A: ; %bb.0:7913; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7914; GFX90A-NEXT: ;;#ASMSTART7915; GFX90A-NEXT: ; def s[4:6]7916; GFX90A-NEXT: ;;#ASMEND7917; GFX90A-NEXT: s_mov_b32 s8, s67918; GFX90A-NEXT: s_mov_b32 s9, s47919; GFX90A-NEXT: s_mov_b32 s10, s47920; GFX90A-NEXT: s_mov_b32 s11, s47921; GFX90A-NEXT: ;;#ASMSTART7922; GFX90A-NEXT: ; use s[8:11]7923; GFX90A-NEXT: ;;#ASMEND7924; GFX90A-NEXT: s_setpc_b64 s[30:31]7925;7926; GFX942-LABEL: s_shuffle_v4p3_v3p3__2_0_0_0:7927; GFX942: ; %bb.0:7928; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7929; GFX942-NEXT: ;;#ASMSTART7930; GFX942-NEXT: ; def s[0:2]7931; GFX942-NEXT: ;;#ASMEND7932; GFX942-NEXT: s_mov_b32 s8, s27933; GFX942-NEXT: s_mov_b32 s9, s07934; GFX942-NEXT: s_mov_b32 s10, s07935; GFX942-NEXT: s_mov_b32 s11, s07936; GFX942-NEXT: ;;#ASMSTART7937; GFX942-NEXT: ; use s[8:11]7938; GFX942-NEXT: ;;#ASMEND7939; GFX942-NEXT: s_setpc_b64 s[30:31]7940 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7941 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 2, i32 0, i32 0, i32 0>7942 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)7943 ret void7944}7945 7946define void @s_shuffle_v4p3_v3p3__3_0_0_0() {7947; GFX900-LABEL: s_shuffle_v4p3_v3p3__3_0_0_0:7948; GFX900: ; %bb.0:7949; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7950; GFX900-NEXT: ;;#ASMSTART7951; GFX900-NEXT: ; def s[4:6]7952; GFX900-NEXT: ;;#ASMEND7953; GFX900-NEXT: s_mov_b32 s9, s47954; GFX900-NEXT: s_mov_b32 s10, s47955; GFX900-NEXT: s_mov_b32 s11, s47956; GFX900-NEXT: ;;#ASMSTART7957; GFX900-NEXT: ; use s[8:11]7958; GFX900-NEXT: ;;#ASMEND7959; GFX900-NEXT: s_setpc_b64 s[30:31]7960;7961; GFX90A-LABEL: s_shuffle_v4p3_v3p3__3_0_0_0:7962; GFX90A: ; %bb.0:7963; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7964; GFX90A-NEXT: ;;#ASMSTART7965; GFX90A-NEXT: ; def s[4:6]7966; GFX90A-NEXT: ;;#ASMEND7967; GFX90A-NEXT: s_mov_b32 s9, s47968; GFX90A-NEXT: s_mov_b32 s10, s47969; GFX90A-NEXT: s_mov_b32 s11, s47970; GFX90A-NEXT: ;;#ASMSTART7971; GFX90A-NEXT: ; use s[8:11]7972; GFX90A-NEXT: ;;#ASMEND7973; GFX90A-NEXT: s_setpc_b64 s[30:31]7974;7975; GFX942-LABEL: s_shuffle_v4p3_v3p3__3_0_0_0:7976; GFX942: ; %bb.0:7977; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7978; GFX942-NEXT: ;;#ASMSTART7979; GFX942-NEXT: ; def s[0:2]7980; GFX942-NEXT: ;;#ASMEND7981; GFX942-NEXT: s_mov_b32 s9, s07982; GFX942-NEXT: s_mov_b32 s10, s07983; GFX942-NEXT: s_mov_b32 s11, s07984; GFX942-NEXT: ;;#ASMSTART7985; GFX942-NEXT: ; use s[8:11]7986; GFX942-NEXT: ;;#ASMEND7987; GFX942-NEXT: s_setpc_b64 s[30:31]7988 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()7989 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 3, i32 0, i32 0, i32 0>7990 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)7991 ret void7992}7993 7994define void @s_shuffle_v4p3_v3p3__4_0_0_0() {7995; GFX900-LABEL: s_shuffle_v4p3_v3p3__4_0_0_0:7996; GFX900: ; %bb.0:7997; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7998; GFX900-NEXT: ;;#ASMSTART7999; GFX900-NEXT: ; def s[8:10]8000; GFX900-NEXT: ;;#ASMEND8001; GFX900-NEXT: ;;#ASMSTART8002; GFX900-NEXT: ; def s[4:6]8003; GFX900-NEXT: ;;#ASMEND8004; GFX900-NEXT: s_mov_b32 s8, s98005; GFX900-NEXT: s_mov_b32 s9, s48006; GFX900-NEXT: s_mov_b32 s10, s48007; GFX900-NEXT: s_mov_b32 s11, s48008; GFX900-NEXT: ;;#ASMSTART8009; GFX900-NEXT: ; use s[8:11]8010; GFX900-NEXT: ;;#ASMEND8011; GFX900-NEXT: s_setpc_b64 s[30:31]8012;8013; GFX90A-LABEL: s_shuffle_v4p3_v3p3__4_0_0_0:8014; GFX90A: ; %bb.0:8015; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8016; GFX90A-NEXT: ;;#ASMSTART8017; GFX90A-NEXT: ; def s[8:10]8018; GFX90A-NEXT: ;;#ASMEND8019; GFX90A-NEXT: ;;#ASMSTART8020; GFX90A-NEXT: ; def s[4:6]8021; GFX90A-NEXT: ;;#ASMEND8022; GFX90A-NEXT: s_mov_b32 s8, s98023; GFX90A-NEXT: s_mov_b32 s9, s48024; GFX90A-NEXT: s_mov_b32 s10, s48025; GFX90A-NEXT: s_mov_b32 s11, s48026; GFX90A-NEXT: ;;#ASMSTART8027; GFX90A-NEXT: ; use s[8:11]8028; GFX90A-NEXT: ;;#ASMEND8029; GFX90A-NEXT: s_setpc_b64 s[30:31]8030;8031; GFX942-LABEL: s_shuffle_v4p3_v3p3__4_0_0_0:8032; GFX942: ; %bb.0:8033; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8034; GFX942-NEXT: ;;#ASMSTART8035; GFX942-NEXT: ; def s[0:2]8036; GFX942-NEXT: ;;#ASMEND8037; GFX942-NEXT: ;;#ASMSTART8038; GFX942-NEXT: ; def s[4:6]8039; GFX942-NEXT: ;;#ASMEND8040; GFX942-NEXT: s_mov_b32 s8, s58041; GFX942-NEXT: s_mov_b32 s9, s08042; GFX942-NEXT: s_mov_b32 s10, s08043; GFX942-NEXT: s_mov_b32 s11, s08044; GFX942-NEXT: ;;#ASMSTART8045; GFX942-NEXT: ; use s[8:11]8046; GFX942-NEXT: ;;#ASMEND8047; GFX942-NEXT: s_setpc_b64 s[30:31]8048 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8049 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8050 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 4, i32 0, i32 0, i32 0>8051 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)8052 ret void8053}8054 8055define void @s_shuffle_v4p3_v3p3__5_0_0_0() {8056; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_0_0_0:8057; GFX900: ; %bb.0:8058; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8059; GFX900-NEXT: ;;#ASMSTART8060; GFX900-NEXT: ; def s[8:10]8061; GFX900-NEXT: ;;#ASMEND8062; GFX900-NEXT: ;;#ASMSTART8063; GFX900-NEXT: ; def s[4:6]8064; GFX900-NEXT: ;;#ASMEND8065; GFX900-NEXT: s_mov_b32 s8, s108066; GFX900-NEXT: s_mov_b32 s9, s48067; GFX900-NEXT: s_mov_b32 s10, s48068; GFX900-NEXT: s_mov_b32 s11, s48069; GFX900-NEXT: ;;#ASMSTART8070; GFX900-NEXT: ; use s[8:11]8071; GFX900-NEXT: ;;#ASMEND8072; GFX900-NEXT: s_setpc_b64 s[30:31]8073;8074; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_0_0_0:8075; GFX90A: ; %bb.0:8076; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8077; GFX90A-NEXT: ;;#ASMSTART8078; GFX90A-NEXT: ; def s[8:10]8079; GFX90A-NEXT: ;;#ASMEND8080; GFX90A-NEXT: ;;#ASMSTART8081; GFX90A-NEXT: ; def s[4:6]8082; GFX90A-NEXT: ;;#ASMEND8083; GFX90A-NEXT: s_mov_b32 s8, s108084; GFX90A-NEXT: s_mov_b32 s9, s48085; GFX90A-NEXT: s_mov_b32 s10, s48086; GFX90A-NEXT: s_mov_b32 s11, s48087; GFX90A-NEXT: ;;#ASMSTART8088; GFX90A-NEXT: ; use s[8:11]8089; GFX90A-NEXT: ;;#ASMEND8090; GFX90A-NEXT: s_setpc_b64 s[30:31]8091;8092; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_0_0_0:8093; GFX942: ; %bb.0:8094; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8095; GFX942-NEXT: ;;#ASMSTART8096; GFX942-NEXT: ; def s[0:2]8097; GFX942-NEXT: ;;#ASMEND8098; GFX942-NEXT: ;;#ASMSTART8099; GFX942-NEXT: ; def s[4:6]8100; GFX942-NEXT: ;;#ASMEND8101; GFX942-NEXT: s_mov_b32 s8, s68102; GFX942-NEXT: s_mov_b32 s9, s08103; GFX942-NEXT: s_mov_b32 s10, s08104; GFX942-NEXT: s_mov_b32 s11, s08105; GFX942-NEXT: ;;#ASMSTART8106; GFX942-NEXT: ; use s[8:11]8107; GFX942-NEXT: ;;#ASMEND8108; GFX942-NEXT: s_setpc_b64 s[30:31]8109 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8110 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8111 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 0, i32 0, i32 0>8112 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)8113 ret void8114}8115 8116define void @s_shuffle_v4p3_v3p3__5_u_0_0() {8117; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_u_0_0:8118; GFX900: ; %bb.0:8119; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8120; GFX900-NEXT: ;;#ASMSTART8121; GFX900-NEXT: ; def s[8:10]8122; GFX900-NEXT: ;;#ASMEND8123; GFX900-NEXT: ;;#ASMSTART8124; GFX900-NEXT: ; def s[4:6]8125; GFX900-NEXT: ;;#ASMEND8126; GFX900-NEXT: s_mov_b32 s8, s108127; GFX900-NEXT: s_mov_b32 s10, s48128; GFX900-NEXT: s_mov_b32 s11, s48129; GFX900-NEXT: ;;#ASMSTART8130; GFX900-NEXT: ; use s[8:11]8131; GFX900-NEXT: ;;#ASMEND8132; GFX900-NEXT: s_setpc_b64 s[30:31]8133;8134; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_u_0_0:8135; GFX90A: ; %bb.0:8136; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8137; GFX90A-NEXT: ;;#ASMSTART8138; GFX90A-NEXT: ; def s[8:10]8139; GFX90A-NEXT: ;;#ASMEND8140; GFX90A-NEXT: ;;#ASMSTART8141; GFX90A-NEXT: ; def s[4:6]8142; GFX90A-NEXT: ;;#ASMEND8143; GFX90A-NEXT: s_mov_b32 s8, s108144; GFX90A-NEXT: s_mov_b32 s10, s48145; GFX90A-NEXT: s_mov_b32 s11, s48146; GFX90A-NEXT: ;;#ASMSTART8147; GFX90A-NEXT: ; use s[8:11]8148; GFX90A-NEXT: ;;#ASMEND8149; GFX90A-NEXT: s_setpc_b64 s[30:31]8150;8151; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_u_0_0:8152; GFX942: ; %bb.0:8153; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8154; GFX942-NEXT: ;;#ASMSTART8155; GFX942-NEXT: ; def s[0:2]8156; GFX942-NEXT: ;;#ASMEND8157; GFX942-NEXT: ;;#ASMSTART8158; GFX942-NEXT: ; def s[4:6]8159; GFX942-NEXT: ;;#ASMEND8160; GFX942-NEXT: s_mov_b32 s8, s68161; GFX942-NEXT: s_mov_b32 s10, s08162; GFX942-NEXT: s_mov_b32 s11, s08163; GFX942-NEXT: ;;#ASMSTART8164; GFX942-NEXT: ; use s[8:11]8165; GFX942-NEXT: ;;#ASMEND8166; GFX942-NEXT: s_setpc_b64 s[30:31]8167 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8168 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8169 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 poison, i32 0, i32 0>8170 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)8171 ret void8172}8173 8174define void @s_shuffle_v4p3_v3p3__5_1_0_0() {8175; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_1_0_0:8176; GFX900: ; %bb.0:8177; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8178; GFX900-NEXT: ;;#ASMSTART8179; GFX900-NEXT: ; def s[8:10]8180; GFX900-NEXT: ;;#ASMEND8181; GFX900-NEXT: ;;#ASMSTART8182; GFX900-NEXT: ; def s[4:6]8183; GFX900-NEXT: ;;#ASMEND8184; GFX900-NEXT: s_mov_b32 s8, s108185; GFX900-NEXT: s_mov_b32 s9, s58186; GFX900-NEXT: s_mov_b32 s10, s48187; GFX900-NEXT: s_mov_b32 s11, s48188; GFX900-NEXT: ;;#ASMSTART8189; GFX900-NEXT: ; use s[8:11]8190; GFX900-NEXT: ;;#ASMEND8191; GFX900-NEXT: s_setpc_b64 s[30:31]8192;8193; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_1_0_0:8194; GFX90A: ; %bb.0:8195; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8196; GFX90A-NEXT: ;;#ASMSTART8197; GFX90A-NEXT: ; def s[8:10]8198; GFX90A-NEXT: ;;#ASMEND8199; GFX90A-NEXT: ;;#ASMSTART8200; GFX90A-NEXT: ; def s[4:6]8201; GFX90A-NEXT: ;;#ASMEND8202; GFX90A-NEXT: s_mov_b32 s8, s108203; GFX90A-NEXT: s_mov_b32 s9, s58204; GFX90A-NEXT: s_mov_b32 s10, s48205; GFX90A-NEXT: s_mov_b32 s11, s48206; GFX90A-NEXT: ;;#ASMSTART8207; GFX90A-NEXT: ; use s[8:11]8208; GFX90A-NEXT: ;;#ASMEND8209; GFX90A-NEXT: s_setpc_b64 s[30:31]8210;8211; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_1_0_0:8212; GFX942: ; %bb.0:8213; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8214; GFX942-NEXT: ;;#ASMSTART8215; GFX942-NEXT: ; def s[0:2]8216; GFX942-NEXT: ;;#ASMEND8217; GFX942-NEXT: ;;#ASMSTART8218; GFX942-NEXT: ; def s[4:6]8219; GFX942-NEXT: ;;#ASMEND8220; GFX942-NEXT: s_mov_b32 s8, s68221; GFX942-NEXT: s_mov_b32 s9, s18222; GFX942-NEXT: s_mov_b32 s10, s08223; GFX942-NEXT: s_mov_b32 s11, s08224; GFX942-NEXT: ;;#ASMSTART8225; GFX942-NEXT: ; use s[8:11]8226; GFX942-NEXT: ;;#ASMEND8227; GFX942-NEXT: s_setpc_b64 s[30:31]8228 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8229 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8230 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 1, i32 0, i32 0>8231 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)8232 ret void8233}8234 8235define void @s_shuffle_v4p3_v3p3__5_2_0_0() {8236; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_2_0_0:8237; GFX900: ; %bb.0:8238; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8239; GFX900-NEXT: ;;#ASMSTART8240; GFX900-NEXT: ; def s[8:10]8241; GFX900-NEXT: ;;#ASMEND8242; GFX900-NEXT: ;;#ASMSTART8243; GFX900-NEXT: ; def s[4:6]8244; GFX900-NEXT: ;;#ASMEND8245; GFX900-NEXT: s_mov_b32 s8, s108246; GFX900-NEXT: s_mov_b32 s9, s68247; GFX900-NEXT: s_mov_b32 s10, s48248; GFX900-NEXT: s_mov_b32 s11, s48249; GFX900-NEXT: ;;#ASMSTART8250; GFX900-NEXT: ; use s[8:11]8251; GFX900-NEXT: ;;#ASMEND8252; GFX900-NEXT: s_setpc_b64 s[30:31]8253;8254; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_2_0_0:8255; GFX90A: ; %bb.0:8256; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8257; GFX90A-NEXT: ;;#ASMSTART8258; GFX90A-NEXT: ; def s[8:10]8259; GFX90A-NEXT: ;;#ASMEND8260; GFX90A-NEXT: ;;#ASMSTART8261; GFX90A-NEXT: ; def s[4:6]8262; GFX90A-NEXT: ;;#ASMEND8263; GFX90A-NEXT: s_mov_b32 s8, s108264; GFX90A-NEXT: s_mov_b32 s9, s68265; GFX90A-NEXT: s_mov_b32 s10, s48266; GFX90A-NEXT: s_mov_b32 s11, s48267; GFX90A-NEXT: ;;#ASMSTART8268; GFX90A-NEXT: ; use s[8:11]8269; GFX90A-NEXT: ;;#ASMEND8270; GFX90A-NEXT: s_setpc_b64 s[30:31]8271;8272; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_2_0_0:8273; GFX942: ; %bb.0:8274; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8275; GFX942-NEXT: ;;#ASMSTART8276; GFX942-NEXT: ; def s[0:2]8277; GFX942-NEXT: ;;#ASMEND8278; GFX942-NEXT: ;;#ASMSTART8279; GFX942-NEXT: ; def s[4:6]8280; GFX942-NEXT: ;;#ASMEND8281; GFX942-NEXT: s_mov_b32 s8, s68282; GFX942-NEXT: s_mov_b32 s9, s28283; GFX942-NEXT: s_mov_b32 s10, s08284; GFX942-NEXT: s_mov_b32 s11, s08285; GFX942-NEXT: ;;#ASMSTART8286; GFX942-NEXT: ; use s[8:11]8287; GFX942-NEXT: ;;#ASMEND8288; GFX942-NEXT: s_setpc_b64 s[30:31]8289 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8290 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8291 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 2, i32 0, i32 0>8292 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)8293 ret void8294}8295 8296define void @s_shuffle_v4p3_v3p3__5_3_0_0() {8297; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_3_0_0:8298; GFX900: ; %bb.0:8299; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8300; GFX900-NEXT: ;;#ASMSTART8301; GFX900-NEXT: ; def s[4:6]8302; GFX900-NEXT: ;;#ASMEND8303; GFX900-NEXT: ;;#ASMSTART8304; GFX900-NEXT: ; def s[12:14]8305; GFX900-NEXT: ;;#ASMEND8306; GFX900-NEXT: s_mov_b32 s8, s148307; GFX900-NEXT: s_mov_b32 s9, s128308; GFX900-NEXT: s_mov_b32 s10, s48309; GFX900-NEXT: s_mov_b32 s11, s48310; GFX900-NEXT: ;;#ASMSTART8311; GFX900-NEXT: ; use s[8:11]8312; GFX900-NEXT: ;;#ASMEND8313; GFX900-NEXT: s_setpc_b64 s[30:31]8314;8315; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_3_0_0:8316; GFX90A: ; %bb.0:8317; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8318; GFX90A-NEXT: ;;#ASMSTART8319; GFX90A-NEXT: ; def s[4:6]8320; GFX90A-NEXT: ;;#ASMEND8321; GFX90A-NEXT: ;;#ASMSTART8322; GFX90A-NEXT: ; def s[12:14]8323; GFX90A-NEXT: ;;#ASMEND8324; GFX90A-NEXT: s_mov_b32 s8, s148325; GFX90A-NEXT: s_mov_b32 s9, s128326; GFX90A-NEXT: s_mov_b32 s10, s48327; GFX90A-NEXT: s_mov_b32 s11, s48328; GFX90A-NEXT: ;;#ASMSTART8329; GFX90A-NEXT: ; use s[8:11]8330; GFX90A-NEXT: ;;#ASMEND8331; GFX90A-NEXT: s_setpc_b64 s[30:31]8332;8333; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_3_0_0:8334; GFX942: ; %bb.0:8335; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8336; GFX942-NEXT: ;;#ASMSTART8337; GFX942-NEXT: ; def s[0:2]8338; GFX942-NEXT: ;;#ASMEND8339; GFX942-NEXT: ;;#ASMSTART8340; GFX942-NEXT: ; def s[4:6]8341; GFX942-NEXT: ;;#ASMEND8342; GFX942-NEXT: s_mov_b32 s8, s68343; GFX942-NEXT: s_mov_b32 s9, s48344; GFX942-NEXT: s_mov_b32 s10, s08345; GFX942-NEXT: s_mov_b32 s11, s08346; GFX942-NEXT: ;;#ASMSTART8347; GFX942-NEXT: ; use s[8:11]8348; GFX942-NEXT: ;;#ASMEND8349; GFX942-NEXT: s_setpc_b64 s[30:31]8350 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8351 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8352 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 3, i32 0, i32 0>8353 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)8354 ret void8355}8356 8357define void @s_shuffle_v4p3_v3p3__5_4_0_0() {8358; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_4_0_0:8359; GFX900: ; %bb.0:8360; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8361; GFX900-NEXT: ;;#ASMSTART8362; GFX900-NEXT: ; def s[8:10]8363; GFX900-NEXT: ;;#ASMEND8364; GFX900-NEXT: ;;#ASMSTART8365; GFX900-NEXT: ; def s[4:6]8366; GFX900-NEXT: ;;#ASMEND8367; GFX900-NEXT: s_mov_b32 s8, s108368; GFX900-NEXT: s_mov_b32 s10, s48369; GFX900-NEXT: s_mov_b32 s11, s48370; GFX900-NEXT: ;;#ASMSTART8371; GFX900-NEXT: ; use s[8:11]8372; GFX900-NEXT: ;;#ASMEND8373; GFX900-NEXT: s_setpc_b64 s[30:31]8374;8375; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_4_0_0:8376; GFX90A: ; %bb.0:8377; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8378; GFX90A-NEXT: ;;#ASMSTART8379; GFX90A-NEXT: ; def s[8:10]8380; GFX90A-NEXT: ;;#ASMEND8381; GFX90A-NEXT: ;;#ASMSTART8382; GFX90A-NEXT: ; def s[4:6]8383; GFX90A-NEXT: ;;#ASMEND8384; GFX90A-NEXT: s_mov_b32 s8, s108385; GFX90A-NEXT: s_mov_b32 s10, s48386; GFX90A-NEXT: s_mov_b32 s11, s48387; GFX90A-NEXT: ;;#ASMSTART8388; GFX90A-NEXT: ; use s[8:11]8389; GFX90A-NEXT: ;;#ASMEND8390; GFX90A-NEXT: s_setpc_b64 s[30:31]8391;8392; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_4_0_0:8393; GFX942: ; %bb.0:8394; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8395; GFX942-NEXT: ;;#ASMSTART8396; GFX942-NEXT: ; def s[8:10]8397; GFX942-NEXT: ;;#ASMEND8398; GFX942-NEXT: ;;#ASMSTART8399; GFX942-NEXT: ; def s[0:2]8400; GFX942-NEXT: ;;#ASMEND8401; GFX942-NEXT: s_mov_b32 s8, s108402; GFX942-NEXT: s_mov_b32 s10, s08403; GFX942-NEXT: s_mov_b32 s11, s08404; GFX942-NEXT: ;;#ASMSTART8405; GFX942-NEXT: ; use s[8:11]8406; GFX942-NEXT: ;;#ASMEND8407; GFX942-NEXT: s_setpc_b64 s[30:31]8408 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8409 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8410 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 4, i32 0, i32 0>8411 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)8412 ret void8413}8414 8415define void @s_shuffle_v4p3_v3p3__5_5_0_0() {8416; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_0_0:8417; GFX900: ; %bb.0:8418; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8419; GFX900-NEXT: ;;#ASMSTART8420; GFX900-NEXT: ; def s[8:10]8421; GFX900-NEXT: ;;#ASMEND8422; GFX900-NEXT: ;;#ASMSTART8423; GFX900-NEXT: ; def s[4:6]8424; GFX900-NEXT: ;;#ASMEND8425; GFX900-NEXT: s_mov_b32 s8, s108426; GFX900-NEXT: s_mov_b32 s9, s108427; GFX900-NEXT: s_mov_b32 s10, s48428; GFX900-NEXT: s_mov_b32 s11, s48429; GFX900-NEXT: ;;#ASMSTART8430; GFX900-NEXT: ; use s[8:11]8431; GFX900-NEXT: ;;#ASMEND8432; GFX900-NEXT: s_setpc_b64 s[30:31]8433;8434; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_0_0:8435; GFX90A: ; %bb.0:8436; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8437; GFX90A-NEXT: ;;#ASMSTART8438; GFX90A-NEXT: ; def s[8:10]8439; GFX90A-NEXT: ;;#ASMEND8440; GFX90A-NEXT: ;;#ASMSTART8441; GFX90A-NEXT: ; def s[4:6]8442; GFX90A-NEXT: ;;#ASMEND8443; GFX90A-NEXT: s_mov_b32 s8, s108444; GFX90A-NEXT: s_mov_b32 s9, s108445; GFX90A-NEXT: s_mov_b32 s10, s48446; GFX90A-NEXT: s_mov_b32 s11, s48447; GFX90A-NEXT: ;;#ASMSTART8448; GFX90A-NEXT: ; use s[8:11]8449; GFX90A-NEXT: ;;#ASMEND8450; GFX90A-NEXT: s_setpc_b64 s[30:31]8451;8452; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_0_0:8453; GFX942: ; %bb.0:8454; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8455; GFX942-NEXT: ;;#ASMSTART8456; GFX942-NEXT: ; def s[0:2]8457; GFX942-NEXT: ;;#ASMEND8458; GFX942-NEXT: ;;#ASMSTART8459; GFX942-NEXT: ; def s[4:6]8460; GFX942-NEXT: ;;#ASMEND8461; GFX942-NEXT: s_mov_b32 s8, s68462; GFX942-NEXT: s_mov_b32 s9, s68463; GFX942-NEXT: s_mov_b32 s10, s08464; GFX942-NEXT: s_mov_b32 s11, s08465; GFX942-NEXT: ;;#ASMSTART8466; GFX942-NEXT: ; use s[8:11]8467; GFX942-NEXT: ;;#ASMEND8468; GFX942-NEXT: s_setpc_b64 s[30:31]8469 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8470 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8471 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 0>8472 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)8473 ret void8474}8475 8476define void @s_shuffle_v4p3_v3p3__5_5_u_0() {8477; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_u_0:8478; GFX900: ; %bb.0:8479; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8480; GFX900-NEXT: ;;#ASMSTART8481; GFX900-NEXT: ; def s[8:10]8482; GFX900-NEXT: ;;#ASMEND8483; GFX900-NEXT: ;;#ASMSTART8484; GFX900-NEXT: ; def s[4:6]8485; GFX900-NEXT: ;;#ASMEND8486; GFX900-NEXT: s_mov_b32 s8, s108487; GFX900-NEXT: s_mov_b32 s9, s108488; GFX900-NEXT: s_mov_b32 s11, s48489; GFX900-NEXT: ;;#ASMSTART8490; GFX900-NEXT: ; use s[8:11]8491; GFX900-NEXT: ;;#ASMEND8492; GFX900-NEXT: s_setpc_b64 s[30:31]8493;8494; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_u_0:8495; GFX90A: ; %bb.0:8496; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8497; GFX90A-NEXT: ;;#ASMSTART8498; GFX90A-NEXT: ; def s[8:10]8499; GFX90A-NEXT: ;;#ASMEND8500; GFX90A-NEXT: ;;#ASMSTART8501; GFX90A-NEXT: ; def s[4:6]8502; GFX90A-NEXT: ;;#ASMEND8503; GFX90A-NEXT: s_mov_b32 s8, s108504; GFX90A-NEXT: s_mov_b32 s9, s108505; GFX90A-NEXT: s_mov_b32 s11, s48506; GFX90A-NEXT: ;;#ASMSTART8507; GFX90A-NEXT: ; use s[8:11]8508; GFX90A-NEXT: ;;#ASMEND8509; GFX90A-NEXT: s_setpc_b64 s[30:31]8510;8511; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_u_0:8512; GFX942: ; %bb.0:8513; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8514; GFX942-NEXT: ;;#ASMSTART8515; GFX942-NEXT: ; def s[0:2]8516; GFX942-NEXT: ;;#ASMEND8517; GFX942-NEXT: ;;#ASMSTART8518; GFX942-NEXT: ; def s[4:6]8519; GFX942-NEXT: ;;#ASMEND8520; GFX942-NEXT: s_mov_b32 s8, s68521; GFX942-NEXT: s_mov_b32 s9, s68522; GFX942-NEXT: s_mov_b32 s11, s08523; GFX942-NEXT: ;;#ASMSTART8524; GFX942-NEXT: ; use s[8:11]8525; GFX942-NEXT: ;;#ASMEND8526; GFX942-NEXT: s_setpc_b64 s[30:31]8527 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8528 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8529 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 0>8530 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)8531 ret void8532}8533 8534define void @s_shuffle_v4p3_v3p3__5_5_1_0() {8535; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_1_0:8536; GFX900: ; %bb.0:8537; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8538; GFX900-NEXT: ;;#ASMSTART8539; GFX900-NEXT: ; def s[8:10]8540; GFX900-NEXT: ;;#ASMEND8541; GFX900-NEXT: ;;#ASMSTART8542; GFX900-NEXT: ; def s[4:6]8543; GFX900-NEXT: ;;#ASMEND8544; GFX900-NEXT: s_mov_b32 s8, s108545; GFX900-NEXT: s_mov_b32 s9, s108546; GFX900-NEXT: s_mov_b32 s10, s58547; GFX900-NEXT: s_mov_b32 s11, s48548; GFX900-NEXT: ;;#ASMSTART8549; GFX900-NEXT: ; use s[8:11]8550; GFX900-NEXT: ;;#ASMEND8551; GFX900-NEXT: s_setpc_b64 s[30:31]8552;8553; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_1_0:8554; GFX90A: ; %bb.0:8555; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8556; GFX90A-NEXT: ;;#ASMSTART8557; GFX90A-NEXT: ; def s[8:10]8558; GFX90A-NEXT: ;;#ASMEND8559; GFX90A-NEXT: ;;#ASMSTART8560; GFX90A-NEXT: ; def s[4:6]8561; GFX90A-NEXT: ;;#ASMEND8562; GFX90A-NEXT: s_mov_b32 s8, s108563; GFX90A-NEXT: s_mov_b32 s9, s108564; GFX90A-NEXT: s_mov_b32 s10, s58565; GFX90A-NEXT: s_mov_b32 s11, s48566; GFX90A-NEXT: ;;#ASMSTART8567; GFX90A-NEXT: ; use s[8:11]8568; GFX90A-NEXT: ;;#ASMEND8569; GFX90A-NEXT: s_setpc_b64 s[30:31]8570;8571; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_1_0:8572; GFX942: ; %bb.0:8573; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8574; GFX942-NEXT: ;;#ASMSTART8575; GFX942-NEXT: ; def s[0:2]8576; GFX942-NEXT: ;;#ASMEND8577; GFX942-NEXT: ;;#ASMSTART8578; GFX942-NEXT: ; def s[4:6]8579; GFX942-NEXT: ;;#ASMEND8580; GFX942-NEXT: s_mov_b32 s8, s68581; GFX942-NEXT: s_mov_b32 s9, s68582; GFX942-NEXT: s_mov_b32 s10, s18583; GFX942-NEXT: s_mov_b32 s11, s08584; GFX942-NEXT: ;;#ASMSTART8585; GFX942-NEXT: ; use s[8:11]8586; GFX942-NEXT: ;;#ASMEND8587; GFX942-NEXT: s_setpc_b64 s[30:31]8588 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8589 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8590 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 0>8591 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)8592 ret void8593}8594 8595define void @s_shuffle_v4p3_v3p3__5_5_2_0() {8596; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_2_0:8597; GFX900: ; %bb.0:8598; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8599; GFX900-NEXT: ;;#ASMSTART8600; GFX900-NEXT: ; def s[8:10]8601; GFX900-NEXT: ;;#ASMEND8602; GFX900-NEXT: ;;#ASMSTART8603; GFX900-NEXT: ; def s[4:6]8604; GFX900-NEXT: ;;#ASMEND8605; GFX900-NEXT: s_mov_b32 s8, s108606; GFX900-NEXT: s_mov_b32 s9, s108607; GFX900-NEXT: s_mov_b32 s10, s68608; GFX900-NEXT: s_mov_b32 s11, s48609; GFX900-NEXT: ;;#ASMSTART8610; GFX900-NEXT: ; use s[8:11]8611; GFX900-NEXT: ;;#ASMEND8612; GFX900-NEXT: s_setpc_b64 s[30:31]8613;8614; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_2_0:8615; GFX90A: ; %bb.0:8616; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8617; GFX90A-NEXT: ;;#ASMSTART8618; GFX90A-NEXT: ; def s[8:10]8619; GFX90A-NEXT: ;;#ASMEND8620; GFX90A-NEXT: ;;#ASMSTART8621; GFX90A-NEXT: ; def s[4:6]8622; GFX90A-NEXT: ;;#ASMEND8623; GFX90A-NEXT: s_mov_b32 s8, s108624; GFX90A-NEXT: s_mov_b32 s9, s108625; GFX90A-NEXT: s_mov_b32 s10, s68626; GFX90A-NEXT: s_mov_b32 s11, s48627; GFX90A-NEXT: ;;#ASMSTART8628; GFX90A-NEXT: ; use s[8:11]8629; GFX90A-NEXT: ;;#ASMEND8630; GFX90A-NEXT: s_setpc_b64 s[30:31]8631;8632; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_2_0:8633; GFX942: ; %bb.0:8634; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8635; GFX942-NEXT: ;;#ASMSTART8636; GFX942-NEXT: ; def s[0:2]8637; GFX942-NEXT: ;;#ASMEND8638; GFX942-NEXT: ;;#ASMSTART8639; GFX942-NEXT: ; def s[4:6]8640; GFX942-NEXT: ;;#ASMEND8641; GFX942-NEXT: s_mov_b32 s8, s68642; GFX942-NEXT: s_mov_b32 s9, s68643; GFX942-NEXT: s_mov_b32 s10, s28644; GFX942-NEXT: s_mov_b32 s11, s08645; GFX942-NEXT: ;;#ASMSTART8646; GFX942-NEXT: ; use s[8:11]8647; GFX942-NEXT: ;;#ASMEND8648; GFX942-NEXT: s_setpc_b64 s[30:31]8649 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8650 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8651 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 0>8652 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)8653 ret void8654}8655 8656define void @s_shuffle_v4p3_v3p3__5_5_3_0() {8657; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_3_0:8658; GFX900: ; %bb.0:8659; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8660; GFX900-NEXT: ;;#ASMSTART8661; GFX900-NEXT: ; def s[4:6]8662; GFX900-NEXT: ;;#ASMEND8663; GFX900-NEXT: ;;#ASMSTART8664; GFX900-NEXT: ; def s[12:14]8665; GFX900-NEXT: ;;#ASMEND8666; GFX900-NEXT: s_mov_b32 s8, s148667; GFX900-NEXT: s_mov_b32 s9, s148668; GFX900-NEXT: s_mov_b32 s10, s128669; GFX900-NEXT: s_mov_b32 s11, s48670; GFX900-NEXT: ;;#ASMSTART8671; GFX900-NEXT: ; use s[8:11]8672; GFX900-NEXT: ;;#ASMEND8673; GFX900-NEXT: s_setpc_b64 s[30:31]8674;8675; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_3_0:8676; GFX90A: ; %bb.0:8677; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8678; GFX90A-NEXT: ;;#ASMSTART8679; GFX90A-NEXT: ; def s[4:6]8680; GFX90A-NEXT: ;;#ASMEND8681; GFX90A-NEXT: ;;#ASMSTART8682; GFX90A-NEXT: ; def s[12:14]8683; GFX90A-NEXT: ;;#ASMEND8684; GFX90A-NEXT: s_mov_b32 s8, s148685; GFX90A-NEXT: s_mov_b32 s9, s148686; GFX90A-NEXT: s_mov_b32 s10, s128687; GFX90A-NEXT: s_mov_b32 s11, s48688; GFX90A-NEXT: ;;#ASMSTART8689; GFX90A-NEXT: ; use s[8:11]8690; GFX90A-NEXT: ;;#ASMEND8691; GFX90A-NEXT: s_setpc_b64 s[30:31]8692;8693; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_3_0:8694; GFX942: ; %bb.0:8695; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8696; GFX942-NEXT: ;;#ASMSTART8697; GFX942-NEXT: ; def s[0:2]8698; GFX942-NEXT: ;;#ASMEND8699; GFX942-NEXT: ;;#ASMSTART8700; GFX942-NEXT: ; def s[4:6]8701; GFX942-NEXT: ;;#ASMEND8702; GFX942-NEXT: s_mov_b32 s8, s68703; GFX942-NEXT: s_mov_b32 s9, s68704; GFX942-NEXT: s_mov_b32 s10, s48705; GFX942-NEXT: s_mov_b32 s11, s08706; GFX942-NEXT: ;;#ASMSTART8707; GFX942-NEXT: ; use s[8:11]8708; GFX942-NEXT: ;;#ASMEND8709; GFX942-NEXT: s_setpc_b64 s[30:31]8710 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8711 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8712 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 0>8713 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)8714 ret void8715}8716 8717define void @s_shuffle_v4p3_v3p3__5_5_4_0() {8718; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_4_0:8719; GFX900: ; %bb.0:8720; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8721; GFX900-NEXT: ;;#ASMSTART8722; GFX900-NEXT: ; def s[4:6]8723; GFX900-NEXT: ;;#ASMEND8724; GFX900-NEXT: ;;#ASMSTART8725; GFX900-NEXT: ; def s[12:14]8726; GFX900-NEXT: ;;#ASMEND8727; GFX900-NEXT: s_mov_b32 s8, s148728; GFX900-NEXT: s_mov_b32 s9, s148729; GFX900-NEXT: s_mov_b32 s10, s138730; GFX900-NEXT: s_mov_b32 s11, s48731; GFX900-NEXT: ;;#ASMSTART8732; GFX900-NEXT: ; use s[8:11]8733; GFX900-NEXT: ;;#ASMEND8734; GFX900-NEXT: s_setpc_b64 s[30:31]8735;8736; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_4_0:8737; GFX90A: ; %bb.0:8738; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8739; GFX90A-NEXT: ;;#ASMSTART8740; GFX90A-NEXT: ; def s[4:6]8741; GFX90A-NEXT: ;;#ASMEND8742; GFX90A-NEXT: ;;#ASMSTART8743; GFX90A-NEXT: ; def s[12:14]8744; GFX90A-NEXT: ;;#ASMEND8745; GFX90A-NEXT: s_mov_b32 s8, s148746; GFX90A-NEXT: s_mov_b32 s9, s148747; GFX90A-NEXT: s_mov_b32 s10, s138748; GFX90A-NEXT: s_mov_b32 s11, s48749; GFX90A-NEXT: ;;#ASMSTART8750; GFX90A-NEXT: ; use s[8:11]8751; GFX90A-NEXT: ;;#ASMEND8752; GFX90A-NEXT: s_setpc_b64 s[30:31]8753;8754; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_4_0:8755; GFX942: ; %bb.0:8756; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8757; GFX942-NEXT: ;;#ASMSTART8758; GFX942-NEXT: ; def s[0:2]8759; GFX942-NEXT: ;;#ASMEND8760; GFX942-NEXT: ;;#ASMSTART8761; GFX942-NEXT: ; def s[4:6]8762; GFX942-NEXT: ;;#ASMEND8763; GFX942-NEXT: s_mov_b32 s8, s68764; GFX942-NEXT: s_mov_b32 s9, s68765; GFX942-NEXT: s_mov_b32 s10, s58766; GFX942-NEXT: s_mov_b32 s11, s08767; GFX942-NEXT: ;;#ASMSTART8768; GFX942-NEXT: ; use s[8:11]8769; GFX942-NEXT: ;;#ASMEND8770; GFX942-NEXT: s_setpc_b64 s[30:31]8771 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8772 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8773 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 0>8774 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)8775 ret void8776}8777 8778define void @s_shuffle_v4p3_v3p3__u_1_1_1() {8779; GFX9-LABEL: s_shuffle_v4p3_v3p3__u_1_1_1:8780; GFX9: ; %bb.0:8781; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8782; GFX9-NEXT: ;;#ASMSTART8783; GFX9-NEXT: ; def s[8:10]8784; GFX9-NEXT: ;;#ASMEND8785; GFX9-NEXT: s_mov_b32 s10, s98786; GFX9-NEXT: s_mov_b32 s11, s98787; GFX9-NEXT: ;;#ASMSTART8788; GFX9-NEXT: ; use s[8:11]8789; GFX9-NEXT: ;;#ASMEND8790; GFX9-NEXT: s_setpc_b64 s[30:31]8791 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8792 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 poison, i32 1, i32 1, i32 1>8793 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)8794 ret void8795}8796 8797define void @s_shuffle_v4p3_v3p3__0_1_1_1() {8798; GFX9-LABEL: s_shuffle_v4p3_v3p3__0_1_1_1:8799; GFX9: ; %bb.0:8800; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8801; GFX9-NEXT: ;;#ASMSTART8802; GFX9-NEXT: ; def s[8:10]8803; GFX9-NEXT: ;;#ASMEND8804; GFX9-NEXT: s_mov_b32 s10, s98805; GFX9-NEXT: s_mov_b32 s11, s98806; GFX9-NEXT: ;;#ASMSTART8807; GFX9-NEXT: ; use s[8:11]8808; GFX9-NEXT: ;;#ASMEND8809; GFX9-NEXT: s_setpc_b64 s[30:31]8810 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8811 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 1>8812 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)8813 ret void8814}8815 8816define void @s_shuffle_v4p3_v3p3__1_1_1_1() {8817; GFX9-LABEL: s_shuffle_v4p3_v3p3__1_1_1_1:8818; GFX9: ; %bb.0:8819; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8820; GFX9-NEXT: ;;#ASMSTART8821; GFX9-NEXT: ; def s[8:10]8822; GFX9-NEXT: ;;#ASMEND8823; GFX9-NEXT: s_mov_b32 s8, s98824; GFX9-NEXT: s_mov_b32 s10, s98825; GFX9-NEXT: s_mov_b32 s11, s98826; GFX9-NEXT: ;;#ASMSTART8827; GFX9-NEXT: ; use s[8:11]8828; GFX9-NEXT: ;;#ASMEND8829; GFX9-NEXT: s_setpc_b64 s[30:31]8830 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8831 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>8832 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)8833 ret void8834}8835 8836define void @s_shuffle_v4p3_v3p3__2_1_1_1() {8837; GFX9-LABEL: s_shuffle_v4p3_v3p3__2_1_1_1:8838; GFX9: ; %bb.0:8839; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8840; GFX9-NEXT: ;;#ASMSTART8841; GFX9-NEXT: ; def s[8:10]8842; GFX9-NEXT: ;;#ASMEND8843; GFX9-NEXT: s_mov_b32 s8, s108844; GFX9-NEXT: s_mov_b32 s10, s98845; GFX9-NEXT: s_mov_b32 s11, s98846; GFX9-NEXT: ;;#ASMSTART8847; GFX9-NEXT: ; use s[8:11]8848; GFX9-NEXT: ;;#ASMEND8849; GFX9-NEXT: s_setpc_b64 s[30:31]8850 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8851 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 2, i32 1, i32 1, i32 1>8852 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)8853 ret void8854}8855 8856define void @s_shuffle_v4p3_v3p3__3_1_1_1() {8857; GFX9-LABEL: s_shuffle_v4p3_v3p3__3_1_1_1:8858; GFX9: ; %bb.0:8859; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8860; GFX9-NEXT: ;;#ASMSTART8861; GFX9-NEXT: ; def s[8:10]8862; GFX9-NEXT: ;;#ASMEND8863; GFX9-NEXT: s_mov_b32 s10, s98864; GFX9-NEXT: s_mov_b32 s11, s98865; GFX9-NEXT: ;;#ASMSTART8866; GFX9-NEXT: ; use s[8:11]8867; GFX9-NEXT: ;;#ASMEND8868; GFX9-NEXT: s_setpc_b64 s[30:31]8869 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8870 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 3, i32 1, i32 1, i32 1>8871 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)8872 ret void8873}8874 8875define void @s_shuffle_v4p3_v3p3__4_1_1_1() {8876; GFX900-LABEL: s_shuffle_v4p3_v3p3__4_1_1_1:8877; GFX900: ; %bb.0:8878; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8879; GFX900-NEXT: ;;#ASMSTART8880; GFX900-NEXT: ; def s[8:10]8881; GFX900-NEXT: ;;#ASMEND8882; GFX900-NEXT: ;;#ASMSTART8883; GFX900-NEXT: ; def s[4:6]8884; GFX900-NEXT: ;;#ASMEND8885; GFX900-NEXT: s_mov_b32 s8, s58886; GFX900-NEXT: s_mov_b32 s10, s98887; GFX900-NEXT: s_mov_b32 s11, s98888; GFX900-NEXT: ;;#ASMSTART8889; GFX900-NEXT: ; use s[8:11]8890; GFX900-NEXT: ;;#ASMEND8891; GFX900-NEXT: s_setpc_b64 s[30:31]8892;8893; GFX90A-LABEL: s_shuffle_v4p3_v3p3__4_1_1_1:8894; GFX90A: ; %bb.0:8895; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8896; GFX90A-NEXT: ;;#ASMSTART8897; GFX90A-NEXT: ; def s[8:10]8898; GFX90A-NEXT: ;;#ASMEND8899; GFX90A-NEXT: ;;#ASMSTART8900; GFX90A-NEXT: ; def s[4:6]8901; GFX90A-NEXT: ;;#ASMEND8902; GFX90A-NEXT: s_mov_b32 s8, s58903; GFX90A-NEXT: s_mov_b32 s10, s98904; GFX90A-NEXT: s_mov_b32 s11, s98905; GFX90A-NEXT: ;;#ASMSTART8906; GFX90A-NEXT: ; use s[8:11]8907; GFX90A-NEXT: ;;#ASMEND8908; GFX90A-NEXT: s_setpc_b64 s[30:31]8909;8910; GFX942-LABEL: s_shuffle_v4p3_v3p3__4_1_1_1:8911; GFX942: ; %bb.0:8912; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8913; GFX942-NEXT: ;;#ASMSTART8914; GFX942-NEXT: ; def s[8:10]8915; GFX942-NEXT: ;;#ASMEND8916; GFX942-NEXT: ;;#ASMSTART8917; GFX942-NEXT: ; def s[0:2]8918; GFX942-NEXT: ;;#ASMEND8919; GFX942-NEXT: s_mov_b32 s8, s18920; GFX942-NEXT: s_mov_b32 s10, s98921; GFX942-NEXT: s_mov_b32 s11, s98922; GFX942-NEXT: ;;#ASMSTART8923; GFX942-NEXT: ; use s[8:11]8924; GFX942-NEXT: ;;#ASMEND8925; GFX942-NEXT: s_setpc_b64 s[30:31]8926 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8927 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8928 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 4, i32 1, i32 1, i32 1>8929 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)8930 ret void8931}8932 8933define void @s_shuffle_v4p3_v3p3__5_1_1_1() {8934; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_1_1_1:8935; GFX900: ; %bb.0:8936; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8937; GFX900-NEXT: ;;#ASMSTART8938; GFX900-NEXT: ; def s[8:10]8939; GFX900-NEXT: ;;#ASMEND8940; GFX900-NEXT: ;;#ASMSTART8941; GFX900-NEXT: ; def s[4:6]8942; GFX900-NEXT: ;;#ASMEND8943; GFX900-NEXT: s_mov_b32 s8, s68944; GFX900-NEXT: s_mov_b32 s10, s98945; GFX900-NEXT: s_mov_b32 s11, s98946; GFX900-NEXT: ;;#ASMSTART8947; GFX900-NEXT: ; use s[8:11]8948; GFX900-NEXT: ;;#ASMEND8949; GFX900-NEXT: s_setpc_b64 s[30:31]8950;8951; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_1_1_1:8952; GFX90A: ; %bb.0:8953; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8954; GFX90A-NEXT: ;;#ASMSTART8955; GFX90A-NEXT: ; def s[8:10]8956; GFX90A-NEXT: ;;#ASMEND8957; GFX90A-NEXT: ;;#ASMSTART8958; GFX90A-NEXT: ; def s[4:6]8959; GFX90A-NEXT: ;;#ASMEND8960; GFX90A-NEXT: s_mov_b32 s8, s68961; GFX90A-NEXT: s_mov_b32 s10, s98962; GFX90A-NEXT: s_mov_b32 s11, s98963; GFX90A-NEXT: ;;#ASMSTART8964; GFX90A-NEXT: ; use s[8:11]8965; GFX90A-NEXT: ;;#ASMEND8966; GFX90A-NEXT: s_setpc_b64 s[30:31]8967;8968; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_1_1_1:8969; GFX942: ; %bb.0:8970; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8971; GFX942-NEXT: ;;#ASMSTART8972; GFX942-NEXT: ; def s[8:10]8973; GFX942-NEXT: ;;#ASMEND8974; GFX942-NEXT: ;;#ASMSTART8975; GFX942-NEXT: ; def s[0:2]8976; GFX942-NEXT: ;;#ASMEND8977; GFX942-NEXT: s_mov_b32 s8, s28978; GFX942-NEXT: s_mov_b32 s10, s98979; GFX942-NEXT: s_mov_b32 s11, s98980; GFX942-NEXT: ;;#ASMSTART8981; GFX942-NEXT: ; use s[8:11]8982; GFX942-NEXT: ;;#ASMEND8983; GFX942-NEXT: s_setpc_b64 s[30:31]8984 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8985 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()8986 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 1, i32 1, i32 1>8987 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)8988 ret void8989}8990 8991define void @s_shuffle_v4p3_v3p3__5_u_1_1() {8992; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_u_1_1:8993; GFX900: ; %bb.0:8994; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)8995; GFX900-NEXT: ;;#ASMSTART8996; GFX900-NEXT: ; def s[8:10]8997; GFX900-NEXT: ;;#ASMEND8998; GFX900-NEXT: ;;#ASMSTART8999; GFX900-NEXT: ; def s[4:6]9000; GFX900-NEXT: ;;#ASMEND9001; GFX900-NEXT: s_mov_b32 s8, s109002; GFX900-NEXT: s_mov_b32 s10, s59003; GFX900-NEXT: s_mov_b32 s11, s59004; GFX900-NEXT: ;;#ASMSTART9005; GFX900-NEXT: ; use s[8:11]9006; GFX900-NEXT: ;;#ASMEND9007; GFX900-NEXT: s_setpc_b64 s[30:31]9008;9009; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_u_1_1:9010; GFX90A: ; %bb.0:9011; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9012; GFX90A-NEXT: ;;#ASMSTART9013; GFX90A-NEXT: ; def s[8:10]9014; GFX90A-NEXT: ;;#ASMEND9015; GFX90A-NEXT: ;;#ASMSTART9016; GFX90A-NEXT: ; def s[4:6]9017; GFX90A-NEXT: ;;#ASMEND9018; GFX90A-NEXT: s_mov_b32 s8, s109019; GFX90A-NEXT: s_mov_b32 s10, s59020; GFX90A-NEXT: s_mov_b32 s11, s59021; GFX90A-NEXT: ;;#ASMSTART9022; GFX90A-NEXT: ; use s[8:11]9023; GFX90A-NEXT: ;;#ASMEND9024; GFX90A-NEXT: s_setpc_b64 s[30:31]9025;9026; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_u_1_1:9027; GFX942: ; %bb.0:9028; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9029; GFX942-NEXT: ;;#ASMSTART9030; GFX942-NEXT: ; def s[0:2]9031; GFX942-NEXT: ;;#ASMEND9032; GFX942-NEXT: ;;#ASMSTART9033; GFX942-NEXT: ; def s[4:6]9034; GFX942-NEXT: ;;#ASMEND9035; GFX942-NEXT: s_mov_b32 s8, s69036; GFX942-NEXT: s_mov_b32 s10, s19037; GFX942-NEXT: s_mov_b32 s11, s19038; GFX942-NEXT: ;;#ASMSTART9039; GFX942-NEXT: ; use s[8:11]9040; GFX942-NEXT: ;;#ASMEND9041; GFX942-NEXT: s_setpc_b64 s[30:31]9042 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9043 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9044 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 poison, i32 1, i32 1>9045 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)9046 ret void9047}9048 9049define void @s_shuffle_v4p3_v3p3__5_0_1_1() {9050; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_0_1_1:9051; GFX900: ; %bb.0:9052; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9053; GFX900-NEXT: ;;#ASMSTART9054; GFX900-NEXT: ; def s[8:10]9055; GFX900-NEXT: ;;#ASMEND9056; GFX900-NEXT: ;;#ASMSTART9057; GFX900-NEXT: ; def s[4:6]9058; GFX900-NEXT: ;;#ASMEND9059; GFX900-NEXT: s_mov_b32 s8, s109060; GFX900-NEXT: s_mov_b32 s9, s49061; GFX900-NEXT: s_mov_b32 s10, s59062; GFX900-NEXT: s_mov_b32 s11, s59063; GFX900-NEXT: ;;#ASMSTART9064; GFX900-NEXT: ; use s[8:11]9065; GFX900-NEXT: ;;#ASMEND9066; GFX900-NEXT: s_setpc_b64 s[30:31]9067;9068; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_0_1_1:9069; GFX90A: ; %bb.0:9070; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9071; GFX90A-NEXT: ;;#ASMSTART9072; GFX90A-NEXT: ; def s[8:10]9073; GFX90A-NEXT: ;;#ASMEND9074; GFX90A-NEXT: ;;#ASMSTART9075; GFX90A-NEXT: ; def s[4:6]9076; GFX90A-NEXT: ;;#ASMEND9077; GFX90A-NEXT: s_mov_b32 s8, s109078; GFX90A-NEXT: s_mov_b32 s9, s49079; GFX90A-NEXT: s_mov_b32 s10, s59080; GFX90A-NEXT: s_mov_b32 s11, s59081; GFX90A-NEXT: ;;#ASMSTART9082; GFX90A-NEXT: ; use s[8:11]9083; GFX90A-NEXT: ;;#ASMEND9084; GFX90A-NEXT: s_setpc_b64 s[30:31]9085;9086; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_0_1_1:9087; GFX942: ; %bb.0:9088; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9089; GFX942-NEXT: ;;#ASMSTART9090; GFX942-NEXT: ; def s[0:2]9091; GFX942-NEXT: ;;#ASMEND9092; GFX942-NEXT: ;;#ASMSTART9093; GFX942-NEXT: ; def s[4:6]9094; GFX942-NEXT: ;;#ASMEND9095; GFX942-NEXT: s_mov_b32 s8, s69096; GFX942-NEXT: s_mov_b32 s9, s09097; GFX942-NEXT: s_mov_b32 s10, s19098; GFX942-NEXT: s_mov_b32 s11, s19099; GFX942-NEXT: ;;#ASMSTART9100; GFX942-NEXT: ; use s[8:11]9101; GFX942-NEXT: ;;#ASMEND9102; GFX942-NEXT: s_setpc_b64 s[30:31]9103 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9104 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9105 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 0, i32 1, i32 1>9106 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)9107 ret void9108}9109 9110define void @s_shuffle_v4p3_v3p3__5_2_1_1() {9111; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_2_1_1:9112; GFX900: ; %bb.0:9113; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9114; GFX900-NEXT: ;;#ASMSTART9115; GFX900-NEXT: ; def s[8:10]9116; GFX900-NEXT: ;;#ASMEND9117; GFX900-NEXT: ;;#ASMSTART9118; GFX900-NEXT: ; def s[4:6]9119; GFX900-NEXT: ;;#ASMEND9120; GFX900-NEXT: s_mov_b32 s8, s109121; GFX900-NEXT: s_mov_b32 s9, s69122; GFX900-NEXT: s_mov_b32 s10, s59123; GFX900-NEXT: s_mov_b32 s11, s59124; GFX900-NEXT: ;;#ASMSTART9125; GFX900-NEXT: ; use s[8:11]9126; GFX900-NEXT: ;;#ASMEND9127; GFX900-NEXT: s_setpc_b64 s[30:31]9128;9129; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_2_1_1:9130; GFX90A: ; %bb.0:9131; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9132; GFX90A-NEXT: ;;#ASMSTART9133; GFX90A-NEXT: ; def s[8:10]9134; GFX90A-NEXT: ;;#ASMEND9135; GFX90A-NEXT: ;;#ASMSTART9136; GFX90A-NEXT: ; def s[4:6]9137; GFX90A-NEXT: ;;#ASMEND9138; GFX90A-NEXT: s_mov_b32 s8, s109139; GFX90A-NEXT: s_mov_b32 s9, s69140; GFX90A-NEXT: s_mov_b32 s10, s59141; GFX90A-NEXT: s_mov_b32 s11, s59142; GFX90A-NEXT: ;;#ASMSTART9143; GFX90A-NEXT: ; use s[8:11]9144; GFX90A-NEXT: ;;#ASMEND9145; GFX90A-NEXT: s_setpc_b64 s[30:31]9146;9147; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_2_1_1:9148; GFX942: ; %bb.0:9149; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9150; GFX942-NEXT: ;;#ASMSTART9151; GFX942-NEXT: ; def s[0:2]9152; GFX942-NEXT: ;;#ASMEND9153; GFX942-NEXT: ;;#ASMSTART9154; GFX942-NEXT: ; def s[4:6]9155; GFX942-NEXT: ;;#ASMEND9156; GFX942-NEXT: s_mov_b32 s8, s69157; GFX942-NEXT: s_mov_b32 s9, s29158; GFX942-NEXT: s_mov_b32 s10, s19159; GFX942-NEXT: s_mov_b32 s11, s19160; GFX942-NEXT: ;;#ASMSTART9161; GFX942-NEXT: ; use s[8:11]9162; GFX942-NEXT: ;;#ASMEND9163; GFX942-NEXT: s_setpc_b64 s[30:31]9164 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9165 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9166 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 2, i32 1, i32 1>9167 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)9168 ret void9169}9170 9171define void @s_shuffle_v4p3_v3p3__5_3_1_1() {9172; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_3_1_1:9173; GFX900: ; %bb.0:9174; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9175; GFX900-NEXT: ;;#ASMSTART9176; GFX900-NEXT: ; def s[4:6]9177; GFX900-NEXT: ;;#ASMEND9178; GFX900-NEXT: ;;#ASMSTART9179; GFX900-NEXT: ; def s[12:14]9180; GFX900-NEXT: ;;#ASMEND9181; GFX900-NEXT: s_mov_b32 s8, s149182; GFX900-NEXT: s_mov_b32 s9, s129183; GFX900-NEXT: s_mov_b32 s10, s59184; GFX900-NEXT: s_mov_b32 s11, s59185; GFX900-NEXT: ;;#ASMSTART9186; GFX900-NEXT: ; use s[8:11]9187; GFX900-NEXT: ;;#ASMEND9188; GFX900-NEXT: s_setpc_b64 s[30:31]9189;9190; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_3_1_1:9191; GFX90A: ; %bb.0:9192; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9193; GFX90A-NEXT: ;;#ASMSTART9194; GFX90A-NEXT: ; def s[4:6]9195; GFX90A-NEXT: ;;#ASMEND9196; GFX90A-NEXT: ;;#ASMSTART9197; GFX90A-NEXT: ; def s[12:14]9198; GFX90A-NEXT: ;;#ASMEND9199; GFX90A-NEXT: s_mov_b32 s8, s149200; GFX90A-NEXT: s_mov_b32 s9, s129201; GFX90A-NEXT: s_mov_b32 s10, s59202; GFX90A-NEXT: s_mov_b32 s11, s59203; GFX90A-NEXT: ;;#ASMSTART9204; GFX90A-NEXT: ; use s[8:11]9205; GFX90A-NEXT: ;;#ASMEND9206; GFX90A-NEXT: s_setpc_b64 s[30:31]9207;9208; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_3_1_1:9209; GFX942: ; %bb.0:9210; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9211; GFX942-NEXT: ;;#ASMSTART9212; GFX942-NEXT: ; def s[0:2]9213; GFX942-NEXT: ;;#ASMEND9214; GFX942-NEXT: ;;#ASMSTART9215; GFX942-NEXT: ; def s[4:6]9216; GFX942-NEXT: ;;#ASMEND9217; GFX942-NEXT: s_mov_b32 s8, s69218; GFX942-NEXT: s_mov_b32 s9, s49219; GFX942-NEXT: s_mov_b32 s10, s19220; GFX942-NEXT: s_mov_b32 s11, s19221; GFX942-NEXT: ;;#ASMSTART9222; GFX942-NEXT: ; use s[8:11]9223; GFX942-NEXT: ;;#ASMEND9224; GFX942-NEXT: s_setpc_b64 s[30:31]9225 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9226 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9227 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 3, i32 1, i32 1>9228 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)9229 ret void9230}9231 9232define void @s_shuffle_v4p3_v3p3__5_4_1_1() {9233; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_4_1_1:9234; GFX900: ; %bb.0:9235; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9236; GFX900-NEXT: ;;#ASMSTART9237; GFX900-NEXT: ; def s[8:10]9238; GFX900-NEXT: ;;#ASMEND9239; GFX900-NEXT: ;;#ASMSTART9240; GFX900-NEXT: ; def s[4:6]9241; GFX900-NEXT: ;;#ASMEND9242; GFX900-NEXT: s_mov_b32 s8, s109243; GFX900-NEXT: s_mov_b32 s10, s59244; GFX900-NEXT: s_mov_b32 s11, s59245; GFX900-NEXT: ;;#ASMSTART9246; GFX900-NEXT: ; use s[8:11]9247; GFX900-NEXT: ;;#ASMEND9248; GFX900-NEXT: s_setpc_b64 s[30:31]9249;9250; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_4_1_1:9251; GFX90A: ; %bb.0:9252; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9253; GFX90A-NEXT: ;;#ASMSTART9254; GFX90A-NEXT: ; def s[8:10]9255; GFX90A-NEXT: ;;#ASMEND9256; GFX90A-NEXT: ;;#ASMSTART9257; GFX90A-NEXT: ; def s[4:6]9258; GFX90A-NEXT: ;;#ASMEND9259; GFX90A-NEXT: s_mov_b32 s8, s109260; GFX90A-NEXT: s_mov_b32 s10, s59261; GFX90A-NEXT: s_mov_b32 s11, s59262; GFX90A-NEXT: ;;#ASMSTART9263; GFX90A-NEXT: ; use s[8:11]9264; GFX90A-NEXT: ;;#ASMEND9265; GFX90A-NEXT: s_setpc_b64 s[30:31]9266;9267; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_4_1_1:9268; GFX942: ; %bb.0:9269; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9270; GFX942-NEXT: ;;#ASMSTART9271; GFX942-NEXT: ; def s[8:10]9272; GFX942-NEXT: ;;#ASMEND9273; GFX942-NEXT: ;;#ASMSTART9274; GFX942-NEXT: ; def s[0:2]9275; GFX942-NEXT: ;;#ASMEND9276; GFX942-NEXT: s_mov_b32 s8, s109277; GFX942-NEXT: s_mov_b32 s10, s19278; GFX942-NEXT: s_mov_b32 s11, s19279; GFX942-NEXT: ;;#ASMSTART9280; GFX942-NEXT: ; use s[8:11]9281; GFX942-NEXT: ;;#ASMEND9282; GFX942-NEXT: s_setpc_b64 s[30:31]9283 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9284 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9285 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 4, i32 1, i32 1>9286 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)9287 ret void9288}9289 9290define void @s_shuffle_v4p3_v3p3__5_5_1_1() {9291; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_1_1:9292; GFX900: ; %bb.0:9293; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9294; GFX900-NEXT: ;;#ASMSTART9295; GFX900-NEXT: ; def s[8:10]9296; GFX900-NEXT: ;;#ASMEND9297; GFX900-NEXT: ;;#ASMSTART9298; GFX900-NEXT: ; def s[4:6]9299; GFX900-NEXT: ;;#ASMEND9300; GFX900-NEXT: s_mov_b32 s8, s109301; GFX900-NEXT: s_mov_b32 s9, s109302; GFX900-NEXT: s_mov_b32 s10, s59303; GFX900-NEXT: s_mov_b32 s11, s59304; GFX900-NEXT: ;;#ASMSTART9305; GFX900-NEXT: ; use s[8:11]9306; GFX900-NEXT: ;;#ASMEND9307; GFX900-NEXT: s_setpc_b64 s[30:31]9308;9309; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_1_1:9310; GFX90A: ; %bb.0:9311; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9312; GFX90A-NEXT: ;;#ASMSTART9313; GFX90A-NEXT: ; def s[8:10]9314; GFX90A-NEXT: ;;#ASMEND9315; GFX90A-NEXT: ;;#ASMSTART9316; GFX90A-NEXT: ; def s[4:6]9317; GFX90A-NEXT: ;;#ASMEND9318; GFX90A-NEXT: s_mov_b32 s8, s109319; GFX90A-NEXT: s_mov_b32 s9, s109320; GFX90A-NEXT: s_mov_b32 s10, s59321; GFX90A-NEXT: s_mov_b32 s11, s59322; GFX90A-NEXT: ;;#ASMSTART9323; GFX90A-NEXT: ; use s[8:11]9324; GFX90A-NEXT: ;;#ASMEND9325; GFX90A-NEXT: s_setpc_b64 s[30:31]9326;9327; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_1_1:9328; GFX942: ; %bb.0:9329; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9330; GFX942-NEXT: ;;#ASMSTART9331; GFX942-NEXT: ; def s[0:2]9332; GFX942-NEXT: ;;#ASMEND9333; GFX942-NEXT: ;;#ASMSTART9334; GFX942-NEXT: ; def s[4:6]9335; GFX942-NEXT: ;;#ASMEND9336; GFX942-NEXT: s_mov_b32 s8, s69337; GFX942-NEXT: s_mov_b32 s9, s69338; GFX942-NEXT: s_mov_b32 s10, s19339; GFX942-NEXT: s_mov_b32 s11, s19340; GFX942-NEXT: ;;#ASMSTART9341; GFX942-NEXT: ; use s[8:11]9342; GFX942-NEXT: ;;#ASMEND9343; GFX942-NEXT: s_setpc_b64 s[30:31]9344 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9345 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9346 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 1>9347 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)9348 ret void9349}9350 9351define void @s_shuffle_v4p3_v3p3__5_5_u_1() {9352; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_u_1:9353; GFX900: ; %bb.0:9354; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9355; GFX900-NEXT: ;;#ASMSTART9356; GFX900-NEXT: ; def s[8:10]9357; GFX900-NEXT: ;;#ASMEND9358; GFX900-NEXT: ;;#ASMSTART9359; GFX900-NEXT: ; def s[4:6]9360; GFX900-NEXT: ;;#ASMEND9361; GFX900-NEXT: s_mov_b32 s8, s109362; GFX900-NEXT: s_mov_b32 s9, s109363; GFX900-NEXT: s_mov_b32 s11, s59364; GFX900-NEXT: ;;#ASMSTART9365; GFX900-NEXT: ; use s[8:11]9366; GFX900-NEXT: ;;#ASMEND9367; GFX900-NEXT: s_setpc_b64 s[30:31]9368;9369; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_u_1:9370; GFX90A: ; %bb.0:9371; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9372; GFX90A-NEXT: ;;#ASMSTART9373; GFX90A-NEXT: ; def s[8:10]9374; GFX90A-NEXT: ;;#ASMEND9375; GFX90A-NEXT: ;;#ASMSTART9376; GFX90A-NEXT: ; def s[4:6]9377; GFX90A-NEXT: ;;#ASMEND9378; GFX90A-NEXT: s_mov_b32 s8, s109379; GFX90A-NEXT: s_mov_b32 s9, s109380; GFX90A-NEXT: s_mov_b32 s11, s59381; GFX90A-NEXT: ;;#ASMSTART9382; GFX90A-NEXT: ; use s[8:11]9383; GFX90A-NEXT: ;;#ASMEND9384; GFX90A-NEXT: s_setpc_b64 s[30:31]9385;9386; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_u_1:9387; GFX942: ; %bb.0:9388; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9389; GFX942-NEXT: ;;#ASMSTART9390; GFX942-NEXT: ; def s[0:2]9391; GFX942-NEXT: ;;#ASMEND9392; GFX942-NEXT: ;;#ASMSTART9393; GFX942-NEXT: ; def s[4:6]9394; GFX942-NEXT: ;;#ASMEND9395; GFX942-NEXT: s_mov_b32 s8, s69396; GFX942-NEXT: s_mov_b32 s9, s69397; GFX942-NEXT: s_mov_b32 s11, s19398; GFX942-NEXT: ;;#ASMSTART9399; GFX942-NEXT: ; use s[8:11]9400; GFX942-NEXT: ;;#ASMEND9401; GFX942-NEXT: s_setpc_b64 s[30:31]9402 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9403 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9404 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 1>9405 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)9406 ret void9407}9408 9409define void @s_shuffle_v4p3_v3p3__5_5_0_1() {9410; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_0_1:9411; GFX900: ; %bb.0:9412; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9413; GFX900-NEXT: ;;#ASMSTART9414; GFX900-NEXT: ; def s[8:10]9415; GFX900-NEXT: ;;#ASMEND9416; GFX900-NEXT: ;;#ASMSTART9417; GFX900-NEXT: ; def s[4:6]9418; GFX900-NEXT: ;;#ASMEND9419; GFX900-NEXT: s_mov_b32 s8, s109420; GFX900-NEXT: s_mov_b32 s9, s109421; GFX900-NEXT: s_mov_b32 s10, s49422; GFX900-NEXT: s_mov_b32 s11, s59423; GFX900-NEXT: ;;#ASMSTART9424; GFX900-NEXT: ; use s[8:11]9425; GFX900-NEXT: ;;#ASMEND9426; GFX900-NEXT: s_setpc_b64 s[30:31]9427;9428; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_0_1:9429; GFX90A: ; %bb.0:9430; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9431; GFX90A-NEXT: ;;#ASMSTART9432; GFX90A-NEXT: ; def s[8:10]9433; GFX90A-NEXT: ;;#ASMEND9434; GFX90A-NEXT: ;;#ASMSTART9435; GFX90A-NEXT: ; def s[4:6]9436; GFX90A-NEXT: ;;#ASMEND9437; GFX90A-NEXT: s_mov_b32 s8, s109438; GFX90A-NEXT: s_mov_b32 s9, s109439; GFX90A-NEXT: s_mov_b32 s10, s49440; GFX90A-NEXT: s_mov_b32 s11, s59441; GFX90A-NEXT: ;;#ASMSTART9442; GFX90A-NEXT: ; use s[8:11]9443; GFX90A-NEXT: ;;#ASMEND9444; GFX90A-NEXT: s_setpc_b64 s[30:31]9445;9446; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_0_1:9447; GFX942: ; %bb.0:9448; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9449; GFX942-NEXT: ;;#ASMSTART9450; GFX942-NEXT: ; def s[0:2]9451; GFX942-NEXT: ;;#ASMEND9452; GFX942-NEXT: ;;#ASMSTART9453; GFX942-NEXT: ; def s[4:6]9454; GFX942-NEXT: ;;#ASMEND9455; GFX942-NEXT: s_mov_b32 s8, s69456; GFX942-NEXT: s_mov_b32 s9, s69457; GFX942-NEXT: s_mov_b32 s10, s09458; GFX942-NEXT: s_mov_b32 s11, s19459; GFX942-NEXT: ;;#ASMSTART9460; GFX942-NEXT: ; use s[8:11]9461; GFX942-NEXT: ;;#ASMEND9462; GFX942-NEXT: s_setpc_b64 s[30:31]9463 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9464 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9465 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 1>9466 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)9467 ret void9468}9469 9470define void @s_shuffle_v4p3_v3p3__5_5_2_1() {9471; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_2_1:9472; GFX900: ; %bb.0:9473; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9474; GFX900-NEXT: ;;#ASMSTART9475; GFX900-NEXT: ; def s[8:10]9476; GFX900-NEXT: ;;#ASMEND9477; GFX900-NEXT: ;;#ASMSTART9478; GFX900-NEXT: ; def s[4:6]9479; GFX900-NEXT: ;;#ASMEND9480; GFX900-NEXT: s_mov_b32 s8, s109481; GFX900-NEXT: s_mov_b32 s9, s109482; GFX900-NEXT: s_mov_b32 s10, s69483; GFX900-NEXT: s_mov_b32 s11, s59484; GFX900-NEXT: ;;#ASMSTART9485; GFX900-NEXT: ; use s[8:11]9486; GFX900-NEXT: ;;#ASMEND9487; GFX900-NEXT: s_setpc_b64 s[30:31]9488;9489; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_2_1:9490; GFX90A: ; %bb.0:9491; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9492; GFX90A-NEXT: ;;#ASMSTART9493; GFX90A-NEXT: ; def s[8:10]9494; GFX90A-NEXT: ;;#ASMEND9495; GFX90A-NEXT: ;;#ASMSTART9496; GFX90A-NEXT: ; def s[4:6]9497; GFX90A-NEXT: ;;#ASMEND9498; GFX90A-NEXT: s_mov_b32 s8, s109499; GFX90A-NEXT: s_mov_b32 s9, s109500; GFX90A-NEXT: s_mov_b32 s10, s69501; GFX90A-NEXT: s_mov_b32 s11, s59502; GFX90A-NEXT: ;;#ASMSTART9503; GFX90A-NEXT: ; use s[8:11]9504; GFX90A-NEXT: ;;#ASMEND9505; GFX90A-NEXT: s_setpc_b64 s[30:31]9506;9507; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_2_1:9508; GFX942: ; %bb.0:9509; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9510; GFX942-NEXT: ;;#ASMSTART9511; GFX942-NEXT: ; def s[0:2]9512; GFX942-NEXT: ;;#ASMEND9513; GFX942-NEXT: ;;#ASMSTART9514; GFX942-NEXT: ; def s[4:6]9515; GFX942-NEXT: ;;#ASMEND9516; GFX942-NEXT: s_mov_b32 s8, s69517; GFX942-NEXT: s_mov_b32 s9, s69518; GFX942-NEXT: s_mov_b32 s10, s29519; GFX942-NEXT: s_mov_b32 s11, s19520; GFX942-NEXT: ;;#ASMSTART9521; GFX942-NEXT: ; use s[8:11]9522; GFX942-NEXT: ;;#ASMEND9523; GFX942-NEXT: s_setpc_b64 s[30:31]9524 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9525 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9526 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 1>9527 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)9528 ret void9529}9530 9531define void @s_shuffle_v4p3_v3p3__5_5_3_1() {9532; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_3_1:9533; GFX900: ; %bb.0:9534; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9535; GFX900-NEXT: ;;#ASMSTART9536; GFX900-NEXT: ; def s[4:6]9537; GFX900-NEXT: ;;#ASMEND9538; GFX900-NEXT: ;;#ASMSTART9539; GFX900-NEXT: ; def s[12:14]9540; GFX900-NEXT: ;;#ASMEND9541; GFX900-NEXT: s_mov_b32 s8, s149542; GFX900-NEXT: s_mov_b32 s9, s149543; GFX900-NEXT: s_mov_b32 s10, s129544; GFX900-NEXT: s_mov_b32 s11, s59545; GFX900-NEXT: ;;#ASMSTART9546; GFX900-NEXT: ; use s[8:11]9547; GFX900-NEXT: ;;#ASMEND9548; GFX900-NEXT: s_setpc_b64 s[30:31]9549;9550; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_3_1:9551; GFX90A: ; %bb.0:9552; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9553; GFX90A-NEXT: ;;#ASMSTART9554; GFX90A-NEXT: ; def s[4:6]9555; GFX90A-NEXT: ;;#ASMEND9556; GFX90A-NEXT: ;;#ASMSTART9557; GFX90A-NEXT: ; def s[12:14]9558; GFX90A-NEXT: ;;#ASMEND9559; GFX90A-NEXT: s_mov_b32 s8, s149560; GFX90A-NEXT: s_mov_b32 s9, s149561; GFX90A-NEXT: s_mov_b32 s10, s129562; GFX90A-NEXT: s_mov_b32 s11, s59563; GFX90A-NEXT: ;;#ASMSTART9564; GFX90A-NEXT: ; use s[8:11]9565; GFX90A-NEXT: ;;#ASMEND9566; GFX90A-NEXT: s_setpc_b64 s[30:31]9567;9568; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_3_1:9569; GFX942: ; %bb.0:9570; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9571; GFX942-NEXT: ;;#ASMSTART9572; GFX942-NEXT: ; def s[0:2]9573; GFX942-NEXT: ;;#ASMEND9574; GFX942-NEXT: ;;#ASMSTART9575; GFX942-NEXT: ; def s[4:6]9576; GFX942-NEXT: ;;#ASMEND9577; GFX942-NEXT: s_mov_b32 s8, s69578; GFX942-NEXT: s_mov_b32 s9, s69579; GFX942-NEXT: s_mov_b32 s10, s49580; GFX942-NEXT: s_mov_b32 s11, s19581; GFX942-NEXT: ;;#ASMSTART9582; GFX942-NEXT: ; use s[8:11]9583; GFX942-NEXT: ;;#ASMEND9584; GFX942-NEXT: s_setpc_b64 s[30:31]9585 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9586 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9587 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 1>9588 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)9589 ret void9590}9591 9592define void @s_shuffle_v4p3_v3p3__5_5_4_1() {9593; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_4_1:9594; GFX900: ; %bb.0:9595; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9596; GFX900-NEXT: ;;#ASMSTART9597; GFX900-NEXT: ; def s[4:6]9598; GFX900-NEXT: ;;#ASMEND9599; GFX900-NEXT: ;;#ASMSTART9600; GFX900-NEXT: ; def s[12:14]9601; GFX900-NEXT: ;;#ASMEND9602; GFX900-NEXT: s_mov_b32 s8, s149603; GFX900-NEXT: s_mov_b32 s9, s149604; GFX900-NEXT: s_mov_b32 s10, s139605; GFX900-NEXT: s_mov_b32 s11, s59606; GFX900-NEXT: ;;#ASMSTART9607; GFX900-NEXT: ; use s[8:11]9608; GFX900-NEXT: ;;#ASMEND9609; GFX900-NEXT: s_setpc_b64 s[30:31]9610;9611; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_4_1:9612; GFX90A: ; %bb.0:9613; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9614; GFX90A-NEXT: ;;#ASMSTART9615; GFX90A-NEXT: ; def s[4:6]9616; GFX90A-NEXT: ;;#ASMEND9617; GFX90A-NEXT: ;;#ASMSTART9618; GFX90A-NEXT: ; def s[12:14]9619; GFX90A-NEXT: ;;#ASMEND9620; GFX90A-NEXT: s_mov_b32 s8, s149621; GFX90A-NEXT: s_mov_b32 s9, s149622; GFX90A-NEXT: s_mov_b32 s10, s139623; GFX90A-NEXT: s_mov_b32 s11, s59624; GFX90A-NEXT: ;;#ASMSTART9625; GFX90A-NEXT: ; use s[8:11]9626; GFX90A-NEXT: ;;#ASMEND9627; GFX90A-NEXT: s_setpc_b64 s[30:31]9628;9629; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_4_1:9630; GFX942: ; %bb.0:9631; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9632; GFX942-NEXT: ;;#ASMSTART9633; GFX942-NEXT: ; def s[0:2]9634; GFX942-NEXT: ;;#ASMEND9635; GFX942-NEXT: ;;#ASMSTART9636; GFX942-NEXT: ; def s[4:6]9637; GFX942-NEXT: ;;#ASMEND9638; GFX942-NEXT: s_mov_b32 s8, s69639; GFX942-NEXT: s_mov_b32 s9, s69640; GFX942-NEXT: s_mov_b32 s10, s59641; GFX942-NEXT: s_mov_b32 s11, s19642; GFX942-NEXT: ;;#ASMSTART9643; GFX942-NEXT: ; use s[8:11]9644; GFX942-NEXT: ;;#ASMEND9645; GFX942-NEXT: s_setpc_b64 s[30:31]9646 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9647 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9648 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 1>9649 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)9650 ret void9651}9652 9653define void @s_shuffle_v4p3_v3p3__u_2_2_2() {9654; GFX9-LABEL: s_shuffle_v4p3_v3p3__u_2_2_2:9655; GFX9: ; %bb.0:9656; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9657; GFX9-NEXT: ;;#ASMSTART9658; GFX9-NEXT: ; def s[8:10]9659; GFX9-NEXT: ;;#ASMEND9660; GFX9-NEXT: s_mov_b32 s9, s109661; GFX9-NEXT: s_mov_b32 s11, s109662; GFX9-NEXT: ;;#ASMSTART9663; GFX9-NEXT: ; use s[8:11]9664; GFX9-NEXT: ;;#ASMEND9665; GFX9-NEXT: s_setpc_b64 s[30:31]9666 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9667 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 poison, i32 2, i32 2, i32 2>9668 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)9669 ret void9670}9671 9672define void @s_shuffle_v4p3_v3p3__0_2_2_2() {9673; GFX9-LABEL: s_shuffle_v4p3_v3p3__0_2_2_2:9674; GFX9: ; %bb.0:9675; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9676; GFX9-NEXT: ;;#ASMSTART9677; GFX9-NEXT: ; def s[8:10]9678; GFX9-NEXT: ;;#ASMEND9679; GFX9-NEXT: s_mov_b32 s9, s109680; GFX9-NEXT: s_mov_b32 s11, s109681; GFX9-NEXT: ;;#ASMSTART9682; GFX9-NEXT: ; use s[8:11]9683; GFX9-NEXT: ;;#ASMEND9684; GFX9-NEXT: s_setpc_b64 s[30:31]9685 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9686 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 0, i32 2, i32 2, i32 2>9687 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)9688 ret void9689}9690 9691define void @s_shuffle_v4p3_v3p3__1_2_2_2() {9692; GFX9-LABEL: s_shuffle_v4p3_v3p3__1_2_2_2:9693; GFX9: ; %bb.0:9694; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9695; GFX9-NEXT: ;;#ASMSTART9696; GFX9-NEXT: ; def s[8:10]9697; GFX9-NEXT: ;;#ASMEND9698; GFX9-NEXT: s_mov_b32 s8, s99699; GFX9-NEXT: s_mov_b32 s9, s109700; GFX9-NEXT: s_mov_b32 s11, s109701; GFX9-NEXT: ;;#ASMSTART9702; GFX9-NEXT: ; use s[8:11]9703; GFX9-NEXT: ;;#ASMEND9704; GFX9-NEXT: s_setpc_b64 s[30:31]9705 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9706 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 1, i32 2, i32 2, i32 2>9707 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)9708 ret void9709}9710 9711define void @s_shuffle_v4p3_v3p3__2_2_2_2() {9712; GFX9-LABEL: s_shuffle_v4p3_v3p3__2_2_2_2:9713; GFX9: ; %bb.0:9714; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9715; GFX9-NEXT: ;;#ASMSTART9716; GFX9-NEXT: ; def s[8:10]9717; GFX9-NEXT: ;;#ASMEND9718; GFX9-NEXT: s_mov_b32 s8, s109719; GFX9-NEXT: s_mov_b32 s9, s109720; GFX9-NEXT: s_mov_b32 s11, s109721; GFX9-NEXT: ;;#ASMSTART9722; GFX9-NEXT: ; use s[8:11]9723; GFX9-NEXT: ;;#ASMEND9724; GFX9-NEXT: s_setpc_b64 s[30:31]9725 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9726 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 2, i32 2, i32 2, i32 2>9727 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)9728 ret void9729}9730 9731define void @s_shuffle_v4p3_v3p3__3_2_2_2() {9732; GFX9-LABEL: s_shuffle_v4p3_v3p3__3_2_2_2:9733; GFX9: ; %bb.0:9734; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9735; GFX9-NEXT: ;;#ASMSTART9736; GFX9-NEXT: ; def s[8:10]9737; GFX9-NEXT: ;;#ASMEND9738; GFX9-NEXT: s_mov_b32 s9, s109739; GFX9-NEXT: s_mov_b32 s11, s109740; GFX9-NEXT: ;;#ASMSTART9741; GFX9-NEXT: ; use s[8:11]9742; GFX9-NEXT: ;;#ASMEND9743; GFX9-NEXT: s_setpc_b64 s[30:31]9744 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9745 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 3, i32 2, i32 2, i32 2>9746 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)9747 ret void9748}9749 9750define void @s_shuffle_v4p3_v3p3__4_2_2_2() {9751; GFX900-LABEL: s_shuffle_v4p3_v3p3__4_2_2_2:9752; GFX900: ; %bb.0:9753; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9754; GFX900-NEXT: ;;#ASMSTART9755; GFX900-NEXT: ; def s[8:10]9756; GFX900-NEXT: ;;#ASMEND9757; GFX900-NEXT: ;;#ASMSTART9758; GFX900-NEXT: ; def s[4:6]9759; GFX900-NEXT: ;;#ASMEND9760; GFX900-NEXT: s_mov_b32 s8, s59761; GFX900-NEXT: s_mov_b32 s9, s109762; GFX900-NEXT: s_mov_b32 s11, s109763; GFX900-NEXT: ;;#ASMSTART9764; GFX900-NEXT: ; use s[8:11]9765; GFX900-NEXT: ;;#ASMEND9766; GFX900-NEXT: s_setpc_b64 s[30:31]9767;9768; GFX90A-LABEL: s_shuffle_v4p3_v3p3__4_2_2_2:9769; GFX90A: ; %bb.0:9770; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9771; GFX90A-NEXT: ;;#ASMSTART9772; GFX90A-NEXT: ; def s[8:10]9773; GFX90A-NEXT: ;;#ASMEND9774; GFX90A-NEXT: ;;#ASMSTART9775; GFX90A-NEXT: ; def s[4:6]9776; GFX90A-NEXT: ;;#ASMEND9777; GFX90A-NEXT: s_mov_b32 s8, s59778; GFX90A-NEXT: s_mov_b32 s9, s109779; GFX90A-NEXT: s_mov_b32 s11, s109780; GFX90A-NEXT: ;;#ASMSTART9781; GFX90A-NEXT: ; use s[8:11]9782; GFX90A-NEXT: ;;#ASMEND9783; GFX90A-NEXT: s_setpc_b64 s[30:31]9784;9785; GFX942-LABEL: s_shuffle_v4p3_v3p3__4_2_2_2:9786; GFX942: ; %bb.0:9787; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9788; GFX942-NEXT: ;;#ASMSTART9789; GFX942-NEXT: ; def s[8:10]9790; GFX942-NEXT: ;;#ASMEND9791; GFX942-NEXT: ;;#ASMSTART9792; GFX942-NEXT: ; def s[0:2]9793; GFX942-NEXT: ;;#ASMEND9794; GFX942-NEXT: s_mov_b32 s8, s19795; GFX942-NEXT: s_mov_b32 s9, s109796; GFX942-NEXT: s_mov_b32 s11, s109797; GFX942-NEXT: ;;#ASMSTART9798; GFX942-NEXT: ; use s[8:11]9799; GFX942-NEXT: ;;#ASMEND9800; GFX942-NEXT: s_setpc_b64 s[30:31]9801 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9802 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9803 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 4, i32 2, i32 2, i32 2>9804 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)9805 ret void9806}9807 9808define void @s_shuffle_v4p3_v3p3__5_2_2_2() {9809; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_2_2_2:9810; GFX900: ; %bb.0:9811; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9812; GFX900-NEXT: ;;#ASMSTART9813; GFX900-NEXT: ; def s[8:10]9814; GFX900-NEXT: ;;#ASMEND9815; GFX900-NEXT: ;;#ASMSTART9816; GFX900-NEXT: ; def s[4:6]9817; GFX900-NEXT: ;;#ASMEND9818; GFX900-NEXT: s_mov_b32 s8, s69819; GFX900-NEXT: s_mov_b32 s9, s109820; GFX900-NEXT: s_mov_b32 s11, s109821; GFX900-NEXT: ;;#ASMSTART9822; GFX900-NEXT: ; use s[8:11]9823; GFX900-NEXT: ;;#ASMEND9824; GFX900-NEXT: s_setpc_b64 s[30:31]9825;9826; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_2_2_2:9827; GFX90A: ; %bb.0:9828; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9829; GFX90A-NEXT: ;;#ASMSTART9830; GFX90A-NEXT: ; def s[8:10]9831; GFX90A-NEXT: ;;#ASMEND9832; GFX90A-NEXT: ;;#ASMSTART9833; GFX90A-NEXT: ; def s[4:6]9834; GFX90A-NEXT: ;;#ASMEND9835; GFX90A-NEXT: s_mov_b32 s8, s69836; GFX90A-NEXT: s_mov_b32 s9, s109837; GFX90A-NEXT: s_mov_b32 s11, s109838; GFX90A-NEXT: ;;#ASMSTART9839; GFX90A-NEXT: ; use s[8:11]9840; GFX90A-NEXT: ;;#ASMEND9841; GFX90A-NEXT: s_setpc_b64 s[30:31]9842;9843; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_2_2_2:9844; GFX942: ; %bb.0:9845; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9846; GFX942-NEXT: ;;#ASMSTART9847; GFX942-NEXT: ; def s[8:10]9848; GFX942-NEXT: ;;#ASMEND9849; GFX942-NEXT: ;;#ASMSTART9850; GFX942-NEXT: ; def s[0:2]9851; GFX942-NEXT: ;;#ASMEND9852; GFX942-NEXT: s_mov_b32 s8, s29853; GFX942-NEXT: s_mov_b32 s9, s109854; GFX942-NEXT: s_mov_b32 s11, s109855; GFX942-NEXT: ;;#ASMSTART9856; GFX942-NEXT: ; use s[8:11]9857; GFX942-NEXT: ;;#ASMEND9858; GFX942-NEXT: s_setpc_b64 s[30:31]9859 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9860 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9861 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 2, i32 2, i32 2>9862 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)9863 ret void9864}9865 9866define void @s_shuffle_v4p3_v3p3__5_u_2_2() {9867; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_u_2_2:9868; GFX900: ; %bb.0:9869; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9870; GFX900-NEXT: ;;#ASMSTART9871; GFX900-NEXT: ; def s[8:10]9872; GFX900-NEXT: ;;#ASMEND9873; GFX900-NEXT: ;;#ASMSTART9874; GFX900-NEXT: ; def s[4:6]9875; GFX900-NEXT: ;;#ASMEND9876; GFX900-NEXT: s_mov_b32 s8, s69877; GFX900-NEXT: s_mov_b32 s11, s109878; GFX900-NEXT: ;;#ASMSTART9879; GFX900-NEXT: ; use s[8:11]9880; GFX900-NEXT: ;;#ASMEND9881; GFX900-NEXT: s_setpc_b64 s[30:31]9882;9883; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_u_2_2:9884; GFX90A: ; %bb.0:9885; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9886; GFX90A-NEXT: ;;#ASMSTART9887; GFX90A-NEXT: ; def s[8:10]9888; GFX90A-NEXT: ;;#ASMEND9889; GFX90A-NEXT: ;;#ASMSTART9890; GFX90A-NEXT: ; def s[4:6]9891; GFX90A-NEXT: ;;#ASMEND9892; GFX90A-NEXT: s_mov_b32 s8, s69893; GFX90A-NEXT: s_mov_b32 s11, s109894; GFX90A-NEXT: ;;#ASMSTART9895; GFX90A-NEXT: ; use s[8:11]9896; GFX90A-NEXT: ;;#ASMEND9897; GFX90A-NEXT: s_setpc_b64 s[30:31]9898;9899; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_u_2_2:9900; GFX942: ; %bb.0:9901; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9902; GFX942-NEXT: ;;#ASMSTART9903; GFX942-NEXT: ; def s[8:10]9904; GFX942-NEXT: ;;#ASMEND9905; GFX942-NEXT: ;;#ASMSTART9906; GFX942-NEXT: ; def s[0:2]9907; GFX942-NEXT: ;;#ASMEND9908; GFX942-NEXT: s_mov_b32 s8, s29909; GFX942-NEXT: s_mov_b32 s11, s109910; GFX942-NEXT: ;;#ASMSTART9911; GFX942-NEXT: ; use s[8:11]9912; GFX942-NEXT: ;;#ASMEND9913; GFX942-NEXT: s_setpc_b64 s[30:31]9914 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9915 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9916 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 poison, i32 2, i32 2>9917 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)9918 ret void9919}9920 9921define void @s_shuffle_v4p3_v3p3__5_0_2_2() {9922; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_0_2_2:9923; GFX900: ; %bb.0:9924; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9925; GFX900-NEXT: ;;#ASMSTART9926; GFX900-NEXT: ; def s[8:10]9927; GFX900-NEXT: ;;#ASMEND9928; GFX900-NEXT: ;;#ASMSTART9929; GFX900-NEXT: ; def s[4:6]9930; GFX900-NEXT: ;;#ASMEND9931; GFX900-NEXT: s_mov_b32 s8, s109932; GFX900-NEXT: s_mov_b32 s9, s49933; GFX900-NEXT: s_mov_b32 s10, s69934; GFX900-NEXT: s_mov_b32 s11, s69935; GFX900-NEXT: ;;#ASMSTART9936; GFX900-NEXT: ; use s[8:11]9937; GFX900-NEXT: ;;#ASMEND9938; GFX900-NEXT: s_setpc_b64 s[30:31]9939;9940; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_0_2_2:9941; GFX90A: ; %bb.0:9942; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9943; GFX90A-NEXT: ;;#ASMSTART9944; GFX90A-NEXT: ; def s[8:10]9945; GFX90A-NEXT: ;;#ASMEND9946; GFX90A-NEXT: ;;#ASMSTART9947; GFX90A-NEXT: ; def s[4:6]9948; GFX90A-NEXT: ;;#ASMEND9949; GFX90A-NEXT: s_mov_b32 s8, s109950; GFX90A-NEXT: s_mov_b32 s9, s49951; GFX90A-NEXT: s_mov_b32 s10, s69952; GFX90A-NEXT: s_mov_b32 s11, s69953; GFX90A-NEXT: ;;#ASMSTART9954; GFX90A-NEXT: ; use s[8:11]9955; GFX90A-NEXT: ;;#ASMEND9956; GFX90A-NEXT: s_setpc_b64 s[30:31]9957;9958; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_0_2_2:9959; GFX942: ; %bb.0:9960; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9961; GFX942-NEXT: ;;#ASMSTART9962; GFX942-NEXT: ; def s[0:2]9963; GFX942-NEXT: ;;#ASMEND9964; GFX942-NEXT: ;;#ASMSTART9965; GFX942-NEXT: ; def s[4:6]9966; GFX942-NEXT: ;;#ASMEND9967; GFX942-NEXT: s_mov_b32 s8, s69968; GFX942-NEXT: s_mov_b32 s9, s09969; GFX942-NEXT: s_mov_b32 s10, s29970; GFX942-NEXT: s_mov_b32 s11, s29971; GFX942-NEXT: ;;#ASMSTART9972; GFX942-NEXT: ; use s[8:11]9973; GFX942-NEXT: ;;#ASMEND9974; GFX942-NEXT: s_setpc_b64 s[30:31]9975 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9976 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()9977 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 0, i32 2, i32 2>9978 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)9979 ret void9980}9981 9982define void @s_shuffle_v4p3_v3p3__5_1_2_2() {9983; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_1_2_2:9984; GFX900: ; %bb.0:9985; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)9986; GFX900-NEXT: ;;#ASMSTART9987; GFX900-NEXT: ; def s[8:10]9988; GFX900-NEXT: ;;#ASMEND9989; GFX900-NEXT: ;;#ASMSTART9990; GFX900-NEXT: ; def s[4:6]9991; GFX900-NEXT: ;;#ASMEND9992; GFX900-NEXT: s_mov_b32 s8, s69993; GFX900-NEXT: s_mov_b32 s11, s109994; GFX900-NEXT: ;;#ASMSTART9995; GFX900-NEXT: ; use s[8:11]9996; GFX900-NEXT: ;;#ASMEND9997; GFX900-NEXT: s_setpc_b64 s[30:31]9998;9999; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_1_2_2:10000; GFX90A: ; %bb.0:10001; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10002; GFX90A-NEXT: ;;#ASMSTART10003; GFX90A-NEXT: ; def s[8:10]10004; GFX90A-NEXT: ;;#ASMEND10005; GFX90A-NEXT: ;;#ASMSTART10006; GFX90A-NEXT: ; def s[4:6]10007; GFX90A-NEXT: ;;#ASMEND10008; GFX90A-NEXT: s_mov_b32 s8, s610009; GFX90A-NEXT: s_mov_b32 s11, s1010010; GFX90A-NEXT: ;;#ASMSTART10011; GFX90A-NEXT: ; use s[8:11]10012; GFX90A-NEXT: ;;#ASMEND10013; GFX90A-NEXT: s_setpc_b64 s[30:31]10014;10015; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_1_2_2:10016; GFX942: ; %bb.0:10017; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10018; GFX942-NEXT: ;;#ASMSTART10019; GFX942-NEXT: ; def s[8:10]10020; GFX942-NEXT: ;;#ASMEND10021; GFX942-NEXT: ;;#ASMSTART10022; GFX942-NEXT: ; def s[0:2]10023; GFX942-NEXT: ;;#ASMEND10024; GFX942-NEXT: s_mov_b32 s8, s210025; GFX942-NEXT: s_mov_b32 s11, s1010026; GFX942-NEXT: ;;#ASMSTART10027; GFX942-NEXT: ; use s[8:11]10028; GFX942-NEXT: ;;#ASMEND10029; GFX942-NEXT: s_setpc_b64 s[30:31]10030 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10031 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10032 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 1, i32 2, i32 2>10033 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)10034 ret void10035}10036 10037define void @s_shuffle_v4p3_v3p3__5_3_2_2() {10038; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_3_2_2:10039; GFX900: ; %bb.0:10040; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10041; GFX900-NEXT: ;;#ASMSTART10042; GFX900-NEXT: ; def s[8:10]10043; GFX900-NEXT: ;;#ASMEND10044; GFX900-NEXT: ;;#ASMSTART10045; GFX900-NEXT: ; def s[4:6]10046; GFX900-NEXT: ;;#ASMEND10047; GFX900-NEXT: s_mov_b32 s8, s610048; GFX900-NEXT: s_mov_b32 s9, s410049; GFX900-NEXT: s_mov_b32 s11, s1010050; GFX900-NEXT: ;;#ASMSTART10051; GFX900-NEXT: ; use s[8:11]10052; GFX900-NEXT: ;;#ASMEND10053; GFX900-NEXT: s_setpc_b64 s[30:31]10054;10055; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_3_2_2:10056; GFX90A: ; %bb.0:10057; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10058; GFX90A-NEXT: ;;#ASMSTART10059; GFX90A-NEXT: ; def s[8:10]10060; GFX90A-NEXT: ;;#ASMEND10061; GFX90A-NEXT: ;;#ASMSTART10062; GFX90A-NEXT: ; def s[4:6]10063; GFX90A-NEXT: ;;#ASMEND10064; GFX90A-NEXT: s_mov_b32 s8, s610065; GFX90A-NEXT: s_mov_b32 s9, s410066; GFX90A-NEXT: s_mov_b32 s11, s1010067; GFX90A-NEXT: ;;#ASMSTART10068; GFX90A-NEXT: ; use s[8:11]10069; GFX90A-NEXT: ;;#ASMEND10070; GFX90A-NEXT: s_setpc_b64 s[30:31]10071;10072; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_3_2_2:10073; GFX942: ; %bb.0:10074; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10075; GFX942-NEXT: ;;#ASMSTART10076; GFX942-NEXT: ; def s[8:10]10077; GFX942-NEXT: ;;#ASMEND10078; GFX942-NEXT: ;;#ASMSTART10079; GFX942-NEXT: ; def s[0:2]10080; GFX942-NEXT: ;;#ASMEND10081; GFX942-NEXT: s_mov_b32 s8, s210082; GFX942-NEXT: s_mov_b32 s9, s010083; GFX942-NEXT: s_mov_b32 s11, s1010084; GFX942-NEXT: ;;#ASMSTART10085; GFX942-NEXT: ; use s[8:11]10086; GFX942-NEXT: ;;#ASMEND10087; GFX942-NEXT: s_setpc_b64 s[30:31]10088 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10089 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10090 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 3, i32 2, i32 2>10091 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)10092 ret void10093}10094 10095define void @s_shuffle_v4p3_v3p3__5_4_2_2() {10096; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_4_2_2:10097; GFX900: ; %bb.0:10098; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10099; GFX900-NEXT: ;;#ASMSTART10100; GFX900-NEXT: ; def s[8:10]10101; GFX900-NEXT: ;;#ASMEND10102; GFX900-NEXT: ;;#ASMSTART10103; GFX900-NEXT: ; def s[4:6]10104; GFX900-NEXT: ;;#ASMEND10105; GFX900-NEXT: s_mov_b32 s8, s1010106; GFX900-NEXT: s_mov_b32 s10, s610107; GFX900-NEXT: s_mov_b32 s11, s610108; GFX900-NEXT: ;;#ASMSTART10109; GFX900-NEXT: ; use s[8:11]10110; GFX900-NEXT: ;;#ASMEND10111; GFX900-NEXT: s_setpc_b64 s[30:31]10112;10113; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_4_2_2:10114; GFX90A: ; %bb.0:10115; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10116; GFX90A-NEXT: ;;#ASMSTART10117; GFX90A-NEXT: ; def s[8:10]10118; GFX90A-NEXT: ;;#ASMEND10119; GFX90A-NEXT: ;;#ASMSTART10120; GFX90A-NEXT: ; def s[4:6]10121; GFX90A-NEXT: ;;#ASMEND10122; GFX90A-NEXT: s_mov_b32 s8, s1010123; GFX90A-NEXT: s_mov_b32 s10, s610124; GFX90A-NEXT: s_mov_b32 s11, s610125; GFX90A-NEXT: ;;#ASMSTART10126; GFX90A-NEXT: ; use s[8:11]10127; GFX90A-NEXT: ;;#ASMEND10128; GFX90A-NEXT: s_setpc_b64 s[30:31]10129;10130; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_4_2_2:10131; GFX942: ; %bb.0:10132; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10133; GFX942-NEXT: ;;#ASMSTART10134; GFX942-NEXT: ; def s[8:10]10135; GFX942-NEXT: ;;#ASMEND10136; GFX942-NEXT: ;;#ASMSTART10137; GFX942-NEXT: ; def s[0:2]10138; GFX942-NEXT: ;;#ASMEND10139; GFX942-NEXT: s_mov_b32 s8, s1010140; GFX942-NEXT: s_mov_b32 s10, s210141; GFX942-NEXT: s_mov_b32 s11, s210142; GFX942-NEXT: ;;#ASMSTART10143; GFX942-NEXT: ; use s[8:11]10144; GFX942-NEXT: ;;#ASMEND10145; GFX942-NEXT: s_setpc_b64 s[30:31]10146 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10147 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10148 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 4, i32 2, i32 2>10149 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)10150 ret void10151}10152 10153define void @s_shuffle_v4p3_v3p3__5_5_2_2() {10154; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_2_2:10155; GFX900: ; %bb.0:10156; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10157; GFX900-NEXT: ;;#ASMSTART10158; GFX900-NEXT: ; def s[8:10]10159; GFX900-NEXT: ;;#ASMEND10160; GFX900-NEXT: ;;#ASMSTART10161; GFX900-NEXT: ; def s[4:6]10162; GFX900-NEXT: ;;#ASMEND10163; GFX900-NEXT: s_mov_b32 s8, s610164; GFX900-NEXT: s_mov_b32 s9, s610165; GFX900-NEXT: s_mov_b32 s11, s1010166; GFX900-NEXT: ;;#ASMSTART10167; GFX900-NEXT: ; use s[8:11]10168; GFX900-NEXT: ;;#ASMEND10169; GFX900-NEXT: s_setpc_b64 s[30:31]10170;10171; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_2_2:10172; GFX90A: ; %bb.0:10173; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10174; GFX90A-NEXT: ;;#ASMSTART10175; GFX90A-NEXT: ; def s[8:10]10176; GFX90A-NEXT: ;;#ASMEND10177; GFX90A-NEXT: ;;#ASMSTART10178; GFX90A-NEXT: ; def s[4:6]10179; GFX90A-NEXT: ;;#ASMEND10180; GFX90A-NEXT: s_mov_b32 s8, s610181; GFX90A-NEXT: s_mov_b32 s9, s610182; GFX90A-NEXT: s_mov_b32 s11, s1010183; GFX90A-NEXT: ;;#ASMSTART10184; GFX90A-NEXT: ; use s[8:11]10185; GFX90A-NEXT: ;;#ASMEND10186; GFX90A-NEXT: s_setpc_b64 s[30:31]10187;10188; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_2_2:10189; GFX942: ; %bb.0:10190; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10191; GFX942-NEXT: ;;#ASMSTART10192; GFX942-NEXT: ; def s[8:10]10193; GFX942-NEXT: ;;#ASMEND10194; GFX942-NEXT: ;;#ASMSTART10195; GFX942-NEXT: ; def s[0:2]10196; GFX942-NEXT: ;;#ASMEND10197; GFX942-NEXT: s_mov_b32 s8, s210198; GFX942-NEXT: s_mov_b32 s9, s210199; GFX942-NEXT: s_mov_b32 s11, s1010200; GFX942-NEXT: ;;#ASMSTART10201; GFX942-NEXT: ; use s[8:11]10202; GFX942-NEXT: ;;#ASMEND10203; GFX942-NEXT: s_setpc_b64 s[30:31]10204 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10205 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10206 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 2>10207 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)10208 ret void10209}10210 10211define void @s_shuffle_v4p3_v3p3__5_5_u_2() {10212; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_u_2:10213; GFX900: ; %bb.0:10214; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10215; GFX900-NEXT: ;;#ASMSTART10216; GFX900-NEXT: ; def s[8:10]10217; GFX900-NEXT: ;;#ASMEND10218; GFX900-NEXT: ;;#ASMSTART10219; GFX900-NEXT: ; def s[4:6]10220; GFX900-NEXT: ;;#ASMEND10221; GFX900-NEXT: s_mov_b32 s8, s1010222; GFX900-NEXT: s_mov_b32 s9, s1010223; GFX900-NEXT: s_mov_b32 s11, s610224; GFX900-NEXT: ;;#ASMSTART10225; GFX900-NEXT: ; use s[8:11]10226; GFX900-NEXT: ;;#ASMEND10227; GFX900-NEXT: s_setpc_b64 s[30:31]10228;10229; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_u_2:10230; GFX90A: ; %bb.0:10231; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10232; GFX90A-NEXT: ;;#ASMSTART10233; GFX90A-NEXT: ; def s[8:10]10234; GFX90A-NEXT: ;;#ASMEND10235; GFX90A-NEXT: ;;#ASMSTART10236; GFX90A-NEXT: ; def s[4:6]10237; GFX90A-NEXT: ;;#ASMEND10238; GFX90A-NEXT: s_mov_b32 s8, s1010239; GFX90A-NEXT: s_mov_b32 s9, s1010240; GFX90A-NEXT: s_mov_b32 s11, s610241; GFX90A-NEXT: ;;#ASMSTART10242; GFX90A-NEXT: ; use s[8:11]10243; GFX90A-NEXT: ;;#ASMEND10244; GFX90A-NEXT: s_setpc_b64 s[30:31]10245;10246; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_u_2:10247; GFX942: ; %bb.0:10248; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10249; GFX942-NEXT: ;;#ASMSTART10250; GFX942-NEXT: ; def s[0:2]10251; GFX942-NEXT: ;;#ASMEND10252; GFX942-NEXT: ;;#ASMSTART10253; GFX942-NEXT: ; def s[4:6]10254; GFX942-NEXT: ;;#ASMEND10255; GFX942-NEXT: s_mov_b32 s8, s610256; GFX942-NEXT: s_mov_b32 s9, s610257; GFX942-NEXT: s_mov_b32 s11, s210258; GFX942-NEXT: ;;#ASMSTART10259; GFX942-NEXT: ; use s[8:11]10260; GFX942-NEXT: ;;#ASMEND10261; GFX942-NEXT: s_setpc_b64 s[30:31]10262 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10263 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10264 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 2>10265 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)10266 ret void10267}10268 10269define void @s_shuffle_v4p3_v3p3__5_5_0_2() {10270; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_0_2:10271; GFX900: ; %bb.0:10272; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10273; GFX900-NEXT: ;;#ASMSTART10274; GFX900-NEXT: ; def s[8:10]10275; GFX900-NEXT: ;;#ASMEND10276; GFX900-NEXT: ;;#ASMSTART10277; GFX900-NEXT: ; def s[4:6]10278; GFX900-NEXT: ;;#ASMEND10279; GFX900-NEXT: s_mov_b32 s8, s1010280; GFX900-NEXT: s_mov_b32 s9, s1010281; GFX900-NEXT: s_mov_b32 s10, s410282; GFX900-NEXT: s_mov_b32 s11, s610283; GFX900-NEXT: ;;#ASMSTART10284; GFX900-NEXT: ; use s[8:11]10285; GFX900-NEXT: ;;#ASMEND10286; GFX900-NEXT: s_setpc_b64 s[30:31]10287;10288; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_0_2:10289; GFX90A: ; %bb.0:10290; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10291; GFX90A-NEXT: ;;#ASMSTART10292; GFX90A-NEXT: ; def s[8:10]10293; GFX90A-NEXT: ;;#ASMEND10294; GFX90A-NEXT: ;;#ASMSTART10295; GFX90A-NEXT: ; def s[4:6]10296; GFX90A-NEXT: ;;#ASMEND10297; GFX90A-NEXT: s_mov_b32 s8, s1010298; GFX90A-NEXT: s_mov_b32 s9, s1010299; GFX90A-NEXT: s_mov_b32 s10, s410300; GFX90A-NEXT: s_mov_b32 s11, s610301; GFX90A-NEXT: ;;#ASMSTART10302; GFX90A-NEXT: ; use s[8:11]10303; GFX90A-NEXT: ;;#ASMEND10304; GFX90A-NEXT: s_setpc_b64 s[30:31]10305;10306; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_0_2:10307; GFX942: ; %bb.0:10308; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10309; GFX942-NEXT: ;;#ASMSTART10310; GFX942-NEXT: ; def s[0:2]10311; GFX942-NEXT: ;;#ASMEND10312; GFX942-NEXT: ;;#ASMSTART10313; GFX942-NEXT: ; def s[4:6]10314; GFX942-NEXT: ;;#ASMEND10315; GFX942-NEXT: s_mov_b32 s8, s610316; GFX942-NEXT: s_mov_b32 s9, s610317; GFX942-NEXT: s_mov_b32 s10, s010318; GFX942-NEXT: s_mov_b32 s11, s210319; GFX942-NEXT: ;;#ASMSTART10320; GFX942-NEXT: ; use s[8:11]10321; GFX942-NEXT: ;;#ASMEND10322; GFX942-NEXT: s_setpc_b64 s[30:31]10323 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10324 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10325 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 2>10326 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)10327 ret void10328}10329 10330define void @s_shuffle_v4p3_v3p3__5_5_1_2() {10331; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_1_2:10332; GFX900: ; %bb.0:10333; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10334; GFX900-NEXT: ;;#ASMSTART10335; GFX900-NEXT: ; def s[8:10]10336; GFX900-NEXT: ;;#ASMEND10337; GFX900-NEXT: ;;#ASMSTART10338; GFX900-NEXT: ; def s[4:6]10339; GFX900-NEXT: ;;#ASMEND10340; GFX900-NEXT: s_mov_b32 s8, s1010341; GFX900-NEXT: s_mov_b32 s9, s1010342; GFX900-NEXT: s_mov_b32 s10, s510343; GFX900-NEXT: s_mov_b32 s11, s610344; GFX900-NEXT: ;;#ASMSTART10345; GFX900-NEXT: ; use s[8:11]10346; GFX900-NEXT: ;;#ASMEND10347; GFX900-NEXT: s_setpc_b64 s[30:31]10348;10349; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_1_2:10350; GFX90A: ; %bb.0:10351; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10352; GFX90A-NEXT: ;;#ASMSTART10353; GFX90A-NEXT: ; def s[8:10]10354; GFX90A-NEXT: ;;#ASMEND10355; GFX90A-NEXT: ;;#ASMSTART10356; GFX90A-NEXT: ; def s[4:6]10357; GFX90A-NEXT: ;;#ASMEND10358; GFX90A-NEXT: s_mov_b32 s8, s1010359; GFX90A-NEXT: s_mov_b32 s9, s1010360; GFX90A-NEXT: s_mov_b32 s10, s510361; GFX90A-NEXT: s_mov_b32 s11, s610362; GFX90A-NEXT: ;;#ASMSTART10363; GFX90A-NEXT: ; use s[8:11]10364; GFX90A-NEXT: ;;#ASMEND10365; GFX90A-NEXT: s_setpc_b64 s[30:31]10366;10367; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_1_2:10368; GFX942: ; %bb.0:10369; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10370; GFX942-NEXT: ;;#ASMSTART10371; GFX942-NEXT: ; def s[0:2]10372; GFX942-NEXT: ;;#ASMEND10373; GFX942-NEXT: ;;#ASMSTART10374; GFX942-NEXT: ; def s[4:6]10375; GFX942-NEXT: ;;#ASMEND10376; GFX942-NEXT: s_mov_b32 s8, s610377; GFX942-NEXT: s_mov_b32 s9, s610378; GFX942-NEXT: s_mov_b32 s10, s110379; GFX942-NEXT: s_mov_b32 s11, s210380; GFX942-NEXT: ;;#ASMSTART10381; GFX942-NEXT: ; use s[8:11]10382; GFX942-NEXT: ;;#ASMEND10383; GFX942-NEXT: s_setpc_b64 s[30:31]10384 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10385 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10386 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 2>10387 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)10388 ret void10389}10390 10391define void @s_shuffle_v4p3_v3p3__5_5_3_2() {10392; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_3_2:10393; GFX900: ; %bb.0:10394; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10395; GFX900-NEXT: ;;#ASMSTART10396; GFX900-NEXT: ; def s[4:6]10397; GFX900-NEXT: ;;#ASMEND10398; GFX900-NEXT: ;;#ASMSTART10399; GFX900-NEXT: ; def s[12:14]10400; GFX900-NEXT: ;;#ASMEND10401; GFX900-NEXT: s_mov_b32 s8, s1410402; GFX900-NEXT: s_mov_b32 s9, s1410403; GFX900-NEXT: s_mov_b32 s10, s1210404; GFX900-NEXT: s_mov_b32 s11, s610405; GFX900-NEXT: ;;#ASMSTART10406; GFX900-NEXT: ; use s[8:11]10407; GFX900-NEXT: ;;#ASMEND10408; GFX900-NEXT: s_setpc_b64 s[30:31]10409;10410; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_3_2:10411; GFX90A: ; %bb.0:10412; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10413; GFX90A-NEXT: ;;#ASMSTART10414; GFX90A-NEXT: ; def s[4:6]10415; GFX90A-NEXT: ;;#ASMEND10416; GFX90A-NEXT: ;;#ASMSTART10417; GFX90A-NEXT: ; def s[12:14]10418; GFX90A-NEXT: ;;#ASMEND10419; GFX90A-NEXT: s_mov_b32 s8, s1410420; GFX90A-NEXT: s_mov_b32 s9, s1410421; GFX90A-NEXT: s_mov_b32 s10, s1210422; GFX90A-NEXT: s_mov_b32 s11, s610423; GFX90A-NEXT: ;;#ASMSTART10424; GFX90A-NEXT: ; use s[8:11]10425; GFX90A-NEXT: ;;#ASMEND10426; GFX90A-NEXT: s_setpc_b64 s[30:31]10427;10428; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_3_2:10429; GFX942: ; %bb.0:10430; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10431; GFX942-NEXT: ;;#ASMSTART10432; GFX942-NEXT: ; def s[0:2]10433; GFX942-NEXT: ;;#ASMEND10434; GFX942-NEXT: ;;#ASMSTART10435; GFX942-NEXT: ; def s[4:6]10436; GFX942-NEXT: ;;#ASMEND10437; GFX942-NEXT: s_mov_b32 s8, s610438; GFX942-NEXT: s_mov_b32 s9, s610439; GFX942-NEXT: s_mov_b32 s10, s410440; GFX942-NEXT: s_mov_b32 s11, s210441; GFX942-NEXT: ;;#ASMSTART10442; GFX942-NEXT: ; use s[8:11]10443; GFX942-NEXT: ;;#ASMEND10444; GFX942-NEXT: s_setpc_b64 s[30:31]10445 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10446 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10447 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 2>10448 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)10449 ret void10450}10451 10452define void @s_shuffle_v4p3_v3p3__5_5_4_2() {10453; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_4_2:10454; GFX900: ; %bb.0:10455; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10456; GFX900-NEXT: ;;#ASMSTART10457; GFX900-NEXT: ; def s[4:6]10458; GFX900-NEXT: ;;#ASMEND10459; GFX900-NEXT: ;;#ASMSTART10460; GFX900-NEXT: ; def s[12:14]10461; GFX900-NEXT: ;;#ASMEND10462; GFX900-NEXT: s_mov_b32 s8, s1410463; GFX900-NEXT: s_mov_b32 s9, s1410464; GFX900-NEXT: s_mov_b32 s10, s1310465; GFX900-NEXT: s_mov_b32 s11, s610466; GFX900-NEXT: ;;#ASMSTART10467; GFX900-NEXT: ; use s[8:11]10468; GFX900-NEXT: ;;#ASMEND10469; GFX900-NEXT: s_setpc_b64 s[30:31]10470;10471; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_4_2:10472; GFX90A: ; %bb.0:10473; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10474; GFX90A-NEXT: ;;#ASMSTART10475; GFX90A-NEXT: ; def s[4:6]10476; GFX90A-NEXT: ;;#ASMEND10477; GFX90A-NEXT: ;;#ASMSTART10478; GFX90A-NEXT: ; def s[12:14]10479; GFX90A-NEXT: ;;#ASMEND10480; GFX90A-NEXT: s_mov_b32 s8, s1410481; GFX90A-NEXT: s_mov_b32 s9, s1410482; GFX90A-NEXT: s_mov_b32 s10, s1310483; GFX90A-NEXT: s_mov_b32 s11, s610484; GFX90A-NEXT: ;;#ASMSTART10485; GFX90A-NEXT: ; use s[8:11]10486; GFX90A-NEXT: ;;#ASMEND10487; GFX90A-NEXT: s_setpc_b64 s[30:31]10488;10489; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_4_2:10490; GFX942: ; %bb.0:10491; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10492; GFX942-NEXT: ;;#ASMSTART10493; GFX942-NEXT: ; def s[0:2]10494; GFX942-NEXT: ;;#ASMEND10495; GFX942-NEXT: ;;#ASMSTART10496; GFX942-NEXT: ; def s[4:6]10497; GFX942-NEXT: ;;#ASMEND10498; GFX942-NEXT: s_mov_b32 s8, s610499; GFX942-NEXT: s_mov_b32 s9, s610500; GFX942-NEXT: s_mov_b32 s10, s510501; GFX942-NEXT: s_mov_b32 s11, s210502; GFX942-NEXT: ;;#ASMSTART10503; GFX942-NEXT: ; use s[8:11]10504; GFX942-NEXT: ;;#ASMEND10505; GFX942-NEXT: s_setpc_b64 s[30:31]10506 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10507 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10508 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 2>10509 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)10510 ret void10511}10512 10513define void @s_shuffle_v4p3_v3p3__u_3_3_3() {10514; GFX9-LABEL: s_shuffle_v4p3_v3p3__u_3_3_3:10515; GFX9: ; %bb.0:10516; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10517; GFX9-NEXT: ;;#ASMSTART10518; GFX9-NEXT: ; use s[8:11]10519; GFX9-NEXT: ;;#ASMEND10520; GFX9-NEXT: s_setpc_b64 s[30:31]10521 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10522 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 poison, i32 3, i32 3, i32 3>10523 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)10524 ret void10525}10526 10527define void @s_shuffle_v4p3_v3p3__0_3_3_3() {10528; GFX900-LABEL: s_shuffle_v4p3_v3p3__0_3_3_3:10529; GFX900: ; %bb.0:10530; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10531; GFX900-NEXT: ;;#ASMSTART10532; GFX900-NEXT: ; def s[8:10]10533; GFX900-NEXT: ;;#ASMEND10534; GFX900-NEXT: ;;#ASMSTART10535; GFX900-NEXT: ; use s[8:11]10536; GFX900-NEXT: ;;#ASMEND10537; GFX900-NEXT: s_setpc_b64 s[30:31]10538;10539; GFX90A-LABEL: s_shuffle_v4p3_v3p3__0_3_3_3:10540; GFX90A: ; %bb.0:10541; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10542; GFX90A-NEXT: ;;#ASMSTART10543; GFX90A-NEXT: ; def s[8:10]10544; GFX90A-NEXT: ;;#ASMEND10545; GFX90A-NEXT: ;;#ASMSTART10546; GFX90A-NEXT: ; use s[8:11]10547; GFX90A-NEXT: ;;#ASMEND10548; GFX90A-NEXT: s_setpc_b64 s[30:31]10549;10550; GFX942-LABEL: s_shuffle_v4p3_v3p3__0_3_3_3:10551; GFX942: ; %bb.0:10552; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10553; GFX942-NEXT: ;;#ASMSTART10554; GFX942-NEXT: ; def s[8:10]10555; GFX942-NEXT: ;;#ASMEND10556; GFX942-NEXT: s_nop 010557; GFX942-NEXT: ;;#ASMSTART10558; GFX942-NEXT: ; use s[8:11]10559; GFX942-NEXT: ;;#ASMEND10560; GFX942-NEXT: s_setpc_b64 s[30:31]10561 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10562 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 0, i32 3, i32 3, i32 3>10563 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)10564 ret void10565}10566 10567define void @s_shuffle_v4p3_v3p3__1_3_3_3() {10568; GFX900-LABEL: s_shuffle_v4p3_v3p3__1_3_3_3:10569; GFX900: ; %bb.0:10570; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10571; GFX900-NEXT: ;;#ASMSTART10572; GFX900-NEXT: ; def s[4:6]10573; GFX900-NEXT: ;;#ASMEND10574; GFX900-NEXT: s_mov_b32 s8, s510575; GFX900-NEXT: ;;#ASMSTART10576; GFX900-NEXT: ; use s[8:11]10577; GFX900-NEXT: ;;#ASMEND10578; GFX900-NEXT: s_setpc_b64 s[30:31]10579;10580; GFX90A-LABEL: s_shuffle_v4p3_v3p3__1_3_3_3:10581; GFX90A: ; %bb.0:10582; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10583; GFX90A-NEXT: ;;#ASMSTART10584; GFX90A-NEXT: ; def s[4:6]10585; GFX90A-NEXT: ;;#ASMEND10586; GFX90A-NEXT: s_mov_b32 s8, s510587; GFX90A-NEXT: ;;#ASMSTART10588; GFX90A-NEXT: ; use s[8:11]10589; GFX90A-NEXT: ;;#ASMEND10590; GFX90A-NEXT: s_setpc_b64 s[30:31]10591;10592; GFX942-LABEL: s_shuffle_v4p3_v3p3__1_3_3_3:10593; GFX942: ; %bb.0:10594; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10595; GFX942-NEXT: ;;#ASMSTART10596; GFX942-NEXT: ; def s[0:2]10597; GFX942-NEXT: ;;#ASMEND10598; GFX942-NEXT: s_mov_b32 s8, s110599; GFX942-NEXT: ;;#ASMSTART10600; GFX942-NEXT: ; use s[8:11]10601; GFX942-NEXT: ;;#ASMEND10602; GFX942-NEXT: s_setpc_b64 s[30:31]10603 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10604 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 1, i32 3, i32 3, i32 3>10605 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)10606 ret void10607}10608 10609define void @s_shuffle_v4p3_v3p3__2_3_3_3() {10610; GFX900-LABEL: s_shuffle_v4p3_v3p3__2_3_3_3:10611; GFX900: ; %bb.0:10612; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10613; GFX900-NEXT: ;;#ASMSTART10614; GFX900-NEXT: ; def s[4:6]10615; GFX900-NEXT: ;;#ASMEND10616; GFX900-NEXT: s_mov_b32 s8, s610617; GFX900-NEXT: ;;#ASMSTART10618; GFX900-NEXT: ; use s[8:11]10619; GFX900-NEXT: ;;#ASMEND10620; GFX900-NEXT: s_setpc_b64 s[30:31]10621;10622; GFX90A-LABEL: s_shuffle_v4p3_v3p3__2_3_3_3:10623; GFX90A: ; %bb.0:10624; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10625; GFX90A-NEXT: ;;#ASMSTART10626; GFX90A-NEXT: ; def s[4:6]10627; GFX90A-NEXT: ;;#ASMEND10628; GFX90A-NEXT: s_mov_b32 s8, s610629; GFX90A-NEXT: ;;#ASMSTART10630; GFX90A-NEXT: ; use s[8:11]10631; GFX90A-NEXT: ;;#ASMEND10632; GFX90A-NEXT: s_setpc_b64 s[30:31]10633;10634; GFX942-LABEL: s_shuffle_v4p3_v3p3__2_3_3_3:10635; GFX942: ; %bb.0:10636; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10637; GFX942-NEXT: ;;#ASMSTART10638; GFX942-NEXT: ; def s[0:2]10639; GFX942-NEXT: ;;#ASMEND10640; GFX942-NEXT: s_mov_b32 s8, s210641; GFX942-NEXT: ;;#ASMSTART10642; GFX942-NEXT: ; use s[8:11]10643; GFX942-NEXT: ;;#ASMEND10644; GFX942-NEXT: s_setpc_b64 s[30:31]10645 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10646 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 2, i32 3, i32 3, i32 3>10647 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)10648 ret void10649}10650 10651define void @s_shuffle_v4p3_v3p3__3_3_3_3() {10652; GFX9-LABEL: s_shuffle_v4p3_v3p3__3_3_3_3:10653; GFX9: ; %bb.0:10654; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10655; GFX9-NEXT: ;;#ASMSTART10656; GFX9-NEXT: ; use s[8:11]10657; GFX9-NEXT: ;;#ASMEND10658; GFX9-NEXT: s_setpc_b64 s[30:31]10659 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10660 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> poison, <4 x i32> <i32 3, i32 3, i32 3, i32 3>10661 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)10662 ret void10663}10664 10665define void @s_shuffle_v4p3_v3p3__4_3_3_3() {10666; GFX900-LABEL: s_shuffle_v4p3_v3p3__4_3_3_3:10667; GFX900: ; %bb.0:10668; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10669; GFX900-NEXT: ;;#ASMSTART10670; GFX900-NEXT: ; def s[4:6]10671; GFX900-NEXT: ;;#ASMEND10672; GFX900-NEXT: s_mov_b32 s8, s510673; GFX900-NEXT: s_mov_b32 s9, s410674; GFX900-NEXT: s_mov_b32 s10, s410675; GFX900-NEXT: s_mov_b32 s11, s410676; GFX900-NEXT: ;;#ASMSTART10677; GFX900-NEXT: ; use s[8:11]10678; GFX900-NEXT: ;;#ASMEND10679; GFX900-NEXT: s_setpc_b64 s[30:31]10680;10681; GFX90A-LABEL: s_shuffle_v4p3_v3p3__4_3_3_3:10682; GFX90A: ; %bb.0:10683; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10684; GFX90A-NEXT: ;;#ASMSTART10685; GFX90A-NEXT: ; def s[4:6]10686; GFX90A-NEXT: ;;#ASMEND10687; GFX90A-NEXT: s_mov_b32 s8, s510688; GFX90A-NEXT: s_mov_b32 s9, s410689; GFX90A-NEXT: s_mov_b32 s10, s410690; GFX90A-NEXT: s_mov_b32 s11, s410691; GFX90A-NEXT: ;;#ASMSTART10692; GFX90A-NEXT: ; use s[8:11]10693; GFX90A-NEXT: ;;#ASMEND10694; GFX90A-NEXT: s_setpc_b64 s[30:31]10695;10696; GFX942-LABEL: s_shuffle_v4p3_v3p3__4_3_3_3:10697; GFX942: ; %bb.0:10698; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10699; GFX942-NEXT: ;;#ASMSTART10700; GFX942-NEXT: ; def s[0:2]10701; GFX942-NEXT: ;;#ASMEND10702; GFX942-NEXT: s_mov_b32 s8, s110703; GFX942-NEXT: s_mov_b32 s9, s010704; GFX942-NEXT: s_mov_b32 s10, s010705; GFX942-NEXT: s_mov_b32 s11, s010706; GFX942-NEXT: ;;#ASMSTART10707; GFX942-NEXT: ; use s[8:11]10708; GFX942-NEXT: ;;#ASMEND10709; GFX942-NEXT: s_setpc_b64 s[30:31]10710 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10711 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10712 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 4, i32 3, i32 3, i32 3>10713 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)10714 ret void10715}10716 10717define void @s_shuffle_v4p3_v3p3__5_3_3_3() {10718; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_3_3_3:10719; GFX900: ; %bb.0:10720; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10721; GFX900-NEXT: ;;#ASMSTART10722; GFX900-NEXT: ; def s[4:6]10723; GFX900-NEXT: ;;#ASMEND10724; GFX900-NEXT: s_mov_b32 s8, s610725; GFX900-NEXT: s_mov_b32 s9, s410726; GFX900-NEXT: s_mov_b32 s10, s410727; GFX900-NEXT: s_mov_b32 s11, s410728; GFX900-NEXT: ;;#ASMSTART10729; GFX900-NEXT: ; use s[8:11]10730; GFX900-NEXT: ;;#ASMEND10731; GFX900-NEXT: s_setpc_b64 s[30:31]10732;10733; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_3_3_3:10734; GFX90A: ; %bb.0:10735; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10736; GFX90A-NEXT: ;;#ASMSTART10737; GFX90A-NEXT: ; def s[4:6]10738; GFX90A-NEXT: ;;#ASMEND10739; GFX90A-NEXT: s_mov_b32 s8, s610740; GFX90A-NEXT: s_mov_b32 s9, s410741; GFX90A-NEXT: s_mov_b32 s10, s410742; GFX90A-NEXT: s_mov_b32 s11, s410743; GFX90A-NEXT: ;;#ASMSTART10744; GFX90A-NEXT: ; use s[8:11]10745; GFX90A-NEXT: ;;#ASMEND10746; GFX90A-NEXT: s_setpc_b64 s[30:31]10747;10748; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_3_3_3:10749; GFX942: ; %bb.0:10750; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10751; GFX942-NEXT: ;;#ASMSTART10752; GFX942-NEXT: ; def s[0:2]10753; GFX942-NEXT: ;;#ASMEND10754; GFX942-NEXT: s_mov_b32 s8, s210755; GFX942-NEXT: s_mov_b32 s9, s010756; GFX942-NEXT: s_mov_b32 s10, s010757; GFX942-NEXT: s_mov_b32 s11, s010758; GFX942-NEXT: ;;#ASMSTART10759; GFX942-NEXT: ; use s[8:11]10760; GFX942-NEXT: ;;#ASMEND10761; GFX942-NEXT: s_setpc_b64 s[30:31]10762 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10763 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10764 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 3, i32 3, i32 3>10765 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)10766 ret void10767}10768 10769define void @s_shuffle_v4p3_v3p3__5_u_3_3() {10770; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_u_3_3:10771; GFX900: ; %bb.0:10772; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10773; GFX900-NEXT: ;;#ASMSTART10774; GFX900-NEXT: ; def s[4:6]10775; GFX900-NEXT: ;;#ASMEND10776; GFX900-NEXT: s_mov_b32 s8, s610777; GFX900-NEXT: s_mov_b32 s10, s410778; GFX900-NEXT: s_mov_b32 s11, s410779; GFX900-NEXT: ;;#ASMSTART10780; GFX900-NEXT: ; use s[8:11]10781; GFX900-NEXT: ;;#ASMEND10782; GFX900-NEXT: s_setpc_b64 s[30:31]10783;10784; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_u_3_3:10785; GFX90A: ; %bb.0:10786; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10787; GFX90A-NEXT: ;;#ASMSTART10788; GFX90A-NEXT: ; def s[4:6]10789; GFX90A-NEXT: ;;#ASMEND10790; GFX90A-NEXT: s_mov_b32 s8, s610791; GFX90A-NEXT: s_mov_b32 s10, s410792; GFX90A-NEXT: s_mov_b32 s11, s410793; GFX90A-NEXT: ;;#ASMSTART10794; GFX90A-NEXT: ; use s[8:11]10795; GFX90A-NEXT: ;;#ASMEND10796; GFX90A-NEXT: s_setpc_b64 s[30:31]10797;10798; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_u_3_3:10799; GFX942: ; %bb.0:10800; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10801; GFX942-NEXT: ;;#ASMSTART10802; GFX942-NEXT: ; def s[0:2]10803; GFX942-NEXT: ;;#ASMEND10804; GFX942-NEXT: s_mov_b32 s8, s210805; GFX942-NEXT: s_mov_b32 s10, s010806; GFX942-NEXT: s_mov_b32 s11, s010807; GFX942-NEXT: ;;#ASMSTART10808; GFX942-NEXT: ; use s[8:11]10809; GFX942-NEXT: ;;#ASMEND10810; GFX942-NEXT: s_setpc_b64 s[30:31]10811 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10812 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10813 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 poison, i32 3, i32 3>10814 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)10815 ret void10816}10817 10818define void @s_shuffle_v4p3_v3p3__5_0_3_3() {10819; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_0_3_3:10820; GFX900: ; %bb.0:10821; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10822; GFX900-NEXT: ;;#ASMSTART10823; GFX900-NEXT: ; def s[4:6]10824; GFX900-NEXT: ;;#ASMEND10825; GFX900-NEXT: ;;#ASMSTART10826; GFX900-NEXT: ; def s[12:14]10827; GFX900-NEXT: ;;#ASMEND10828; GFX900-NEXT: s_mov_b32 s8, s1410829; GFX900-NEXT: s_mov_b32 s9, s410830; GFX900-NEXT: s_mov_b32 s10, s1210831; GFX900-NEXT: s_mov_b32 s11, s1210832; GFX900-NEXT: ;;#ASMSTART10833; GFX900-NEXT: ; use s[8:11]10834; GFX900-NEXT: ;;#ASMEND10835; GFX900-NEXT: s_setpc_b64 s[30:31]10836;10837; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_0_3_3:10838; GFX90A: ; %bb.0:10839; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10840; GFX90A-NEXT: ;;#ASMSTART10841; GFX90A-NEXT: ; def s[4:6]10842; GFX90A-NEXT: ;;#ASMEND10843; GFX90A-NEXT: ;;#ASMSTART10844; GFX90A-NEXT: ; def s[12:14]10845; GFX90A-NEXT: ;;#ASMEND10846; GFX90A-NEXT: s_mov_b32 s8, s1410847; GFX90A-NEXT: s_mov_b32 s9, s410848; GFX90A-NEXT: s_mov_b32 s10, s1210849; GFX90A-NEXT: s_mov_b32 s11, s1210850; GFX90A-NEXT: ;;#ASMSTART10851; GFX90A-NEXT: ; use s[8:11]10852; GFX90A-NEXT: ;;#ASMEND10853; GFX90A-NEXT: s_setpc_b64 s[30:31]10854;10855; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_0_3_3:10856; GFX942: ; %bb.0:10857; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10858; GFX942-NEXT: ;;#ASMSTART10859; GFX942-NEXT: ; def s[0:2]10860; GFX942-NEXT: ;;#ASMEND10861; GFX942-NEXT: ;;#ASMSTART10862; GFX942-NEXT: ; def s[4:6]10863; GFX942-NEXT: ;;#ASMEND10864; GFX942-NEXT: s_mov_b32 s8, s610865; GFX942-NEXT: s_mov_b32 s9, s010866; GFX942-NEXT: s_mov_b32 s10, s410867; GFX942-NEXT: s_mov_b32 s11, s410868; GFX942-NEXT: ;;#ASMSTART10869; GFX942-NEXT: ; use s[8:11]10870; GFX942-NEXT: ;;#ASMEND10871; GFX942-NEXT: s_setpc_b64 s[30:31]10872 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10873 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10874 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 0, i32 3, i32 3>10875 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)10876 ret void10877}10878 10879define void @s_shuffle_v4p3_v3p3__5_1_3_3() {10880; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_1_3_3:10881; GFX900: ; %bb.0:10882; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10883; GFX900-NEXT: ;;#ASMSTART10884; GFX900-NEXT: ; def s[8:10]10885; GFX900-NEXT: ;;#ASMEND10886; GFX900-NEXT: ;;#ASMSTART10887; GFX900-NEXT: ; def s[4:6]10888; GFX900-NEXT: ;;#ASMEND10889; GFX900-NEXT: s_mov_b32 s8, s610890; GFX900-NEXT: s_mov_b32 s10, s410891; GFX900-NEXT: s_mov_b32 s11, s410892; GFX900-NEXT: ;;#ASMSTART10893; GFX900-NEXT: ; use s[8:11]10894; GFX900-NEXT: ;;#ASMEND10895; GFX900-NEXT: s_setpc_b64 s[30:31]10896;10897; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_1_3_3:10898; GFX90A: ; %bb.0:10899; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10900; GFX90A-NEXT: ;;#ASMSTART10901; GFX90A-NEXT: ; def s[8:10]10902; GFX90A-NEXT: ;;#ASMEND10903; GFX90A-NEXT: ;;#ASMSTART10904; GFX90A-NEXT: ; def s[4:6]10905; GFX90A-NEXT: ;;#ASMEND10906; GFX90A-NEXT: s_mov_b32 s8, s610907; GFX90A-NEXT: s_mov_b32 s10, s410908; GFX90A-NEXT: s_mov_b32 s11, s410909; GFX90A-NEXT: ;;#ASMSTART10910; GFX90A-NEXT: ; use s[8:11]10911; GFX90A-NEXT: ;;#ASMEND10912; GFX90A-NEXT: s_setpc_b64 s[30:31]10913;10914; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_1_3_3:10915; GFX942: ; %bb.0:10916; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10917; GFX942-NEXT: ;;#ASMSTART10918; GFX942-NEXT: ; def s[8:10]10919; GFX942-NEXT: ;;#ASMEND10920; GFX942-NEXT: ;;#ASMSTART10921; GFX942-NEXT: ; def s[0:2]10922; GFX942-NEXT: ;;#ASMEND10923; GFX942-NEXT: s_mov_b32 s8, s210924; GFX942-NEXT: s_mov_b32 s10, s010925; GFX942-NEXT: s_mov_b32 s11, s010926; GFX942-NEXT: ;;#ASMSTART10927; GFX942-NEXT: ; use s[8:11]10928; GFX942-NEXT: ;;#ASMEND10929; GFX942-NEXT: s_setpc_b64 s[30:31]10930 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10931 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10932 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 1, i32 3, i32 3>10933 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)10934 ret void10935}10936 10937define void @s_shuffle_v4p3_v3p3__5_2_3_3() {10938; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_2_3_3:10939; GFX900: ; %bb.0:10940; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10941; GFX900-NEXT: ;;#ASMSTART10942; GFX900-NEXT: ; def s[4:6]10943; GFX900-NEXT: ;;#ASMEND10944; GFX900-NEXT: ;;#ASMSTART10945; GFX900-NEXT: ; def s[12:14]10946; GFX900-NEXT: ;;#ASMEND10947; GFX900-NEXT: s_mov_b32 s8, s1410948; GFX900-NEXT: s_mov_b32 s9, s610949; GFX900-NEXT: s_mov_b32 s10, s1210950; GFX900-NEXT: s_mov_b32 s11, s1210951; GFX900-NEXT: ;;#ASMSTART10952; GFX900-NEXT: ; use s[8:11]10953; GFX900-NEXT: ;;#ASMEND10954; GFX900-NEXT: s_setpc_b64 s[30:31]10955;10956; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_2_3_3:10957; GFX90A: ; %bb.0:10958; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10959; GFX90A-NEXT: ;;#ASMSTART10960; GFX90A-NEXT: ; def s[4:6]10961; GFX90A-NEXT: ;;#ASMEND10962; GFX90A-NEXT: ;;#ASMSTART10963; GFX90A-NEXT: ; def s[12:14]10964; GFX90A-NEXT: ;;#ASMEND10965; GFX90A-NEXT: s_mov_b32 s8, s1410966; GFX90A-NEXT: s_mov_b32 s9, s610967; GFX90A-NEXT: s_mov_b32 s10, s1210968; GFX90A-NEXT: s_mov_b32 s11, s1210969; GFX90A-NEXT: ;;#ASMSTART10970; GFX90A-NEXT: ; use s[8:11]10971; GFX90A-NEXT: ;;#ASMEND10972; GFX90A-NEXT: s_setpc_b64 s[30:31]10973;10974; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_2_3_3:10975; GFX942: ; %bb.0:10976; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)10977; GFX942-NEXT: ;;#ASMSTART10978; GFX942-NEXT: ; def s[0:2]10979; GFX942-NEXT: ;;#ASMEND10980; GFX942-NEXT: ;;#ASMSTART10981; GFX942-NEXT: ; def s[4:6]10982; GFX942-NEXT: ;;#ASMEND10983; GFX942-NEXT: s_mov_b32 s8, s610984; GFX942-NEXT: s_mov_b32 s9, s210985; GFX942-NEXT: s_mov_b32 s10, s410986; GFX942-NEXT: s_mov_b32 s11, s410987; GFX942-NEXT: ;;#ASMSTART10988; GFX942-NEXT: ; use s[8:11]10989; GFX942-NEXT: ;;#ASMEND10990; GFX942-NEXT: s_setpc_b64 s[30:31]10991 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10992 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()10993 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 2, i32 3, i32 3>10994 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)10995 ret void10996}10997 10998define void @s_shuffle_v4p3_v3p3__5_4_3_3() {10999; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_4_3_3:11000; GFX900: ; %bb.0:11001; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11002; GFX900-NEXT: ;;#ASMSTART11003; GFX900-NEXT: ; def s[4:6]11004; GFX900-NEXT: ;;#ASMEND11005; GFX900-NEXT: s_mov_b32 s8, s611006; GFX900-NEXT: s_mov_b32 s9, s511007; GFX900-NEXT: s_mov_b32 s10, s411008; GFX900-NEXT: s_mov_b32 s11, s411009; GFX900-NEXT: ;;#ASMSTART11010; GFX900-NEXT: ; use s[8:11]11011; GFX900-NEXT: ;;#ASMEND11012; GFX900-NEXT: s_setpc_b64 s[30:31]11013;11014; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_4_3_3:11015; GFX90A: ; %bb.0:11016; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11017; GFX90A-NEXT: ;;#ASMSTART11018; GFX90A-NEXT: ; def s[4:6]11019; GFX90A-NEXT: ;;#ASMEND11020; GFX90A-NEXT: s_mov_b32 s8, s611021; GFX90A-NEXT: s_mov_b32 s9, s511022; GFX90A-NEXT: s_mov_b32 s10, s411023; GFX90A-NEXT: s_mov_b32 s11, s411024; GFX90A-NEXT: ;;#ASMSTART11025; GFX90A-NEXT: ; use s[8:11]11026; GFX90A-NEXT: ;;#ASMEND11027; GFX90A-NEXT: s_setpc_b64 s[30:31]11028;11029; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_4_3_3:11030; GFX942: ; %bb.0:11031; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11032; GFX942-NEXT: ;;#ASMSTART11033; GFX942-NEXT: ; def s[0:2]11034; GFX942-NEXT: ;;#ASMEND11035; GFX942-NEXT: s_mov_b32 s8, s211036; GFX942-NEXT: s_mov_b32 s9, s111037; GFX942-NEXT: s_mov_b32 s10, s011038; GFX942-NEXT: s_mov_b32 s11, s011039; GFX942-NEXT: ;;#ASMSTART11040; GFX942-NEXT: ; use s[8:11]11041; GFX942-NEXT: ;;#ASMEND11042; GFX942-NEXT: s_setpc_b64 s[30:31]11043 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11044 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11045 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 4, i32 3, i32 3>11046 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)11047 ret void11048}11049 11050define void @s_shuffle_v4p3_v3p3__5_5_3_3() {11051; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_3_3:11052; GFX900: ; %bb.0:11053; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11054; GFX900-NEXT: ;;#ASMSTART11055; GFX900-NEXT: ; def s[4:6]11056; GFX900-NEXT: ;;#ASMEND11057; GFX900-NEXT: s_mov_b32 s8, s611058; GFX900-NEXT: s_mov_b32 s9, s611059; GFX900-NEXT: s_mov_b32 s10, s411060; GFX900-NEXT: s_mov_b32 s11, s411061; GFX900-NEXT: ;;#ASMSTART11062; GFX900-NEXT: ; use s[8:11]11063; GFX900-NEXT: ;;#ASMEND11064; GFX900-NEXT: s_setpc_b64 s[30:31]11065;11066; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_3_3:11067; GFX90A: ; %bb.0:11068; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11069; GFX90A-NEXT: ;;#ASMSTART11070; GFX90A-NEXT: ; def s[4:6]11071; GFX90A-NEXT: ;;#ASMEND11072; GFX90A-NEXT: s_mov_b32 s8, s611073; GFX90A-NEXT: s_mov_b32 s9, s611074; GFX90A-NEXT: s_mov_b32 s10, s411075; GFX90A-NEXT: s_mov_b32 s11, s411076; GFX90A-NEXT: ;;#ASMSTART11077; GFX90A-NEXT: ; use s[8:11]11078; GFX90A-NEXT: ;;#ASMEND11079; GFX90A-NEXT: s_setpc_b64 s[30:31]11080;11081; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_3_3:11082; GFX942: ; %bb.0:11083; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11084; GFX942-NEXT: ;;#ASMSTART11085; GFX942-NEXT: ; def s[0:2]11086; GFX942-NEXT: ;;#ASMEND11087; GFX942-NEXT: s_mov_b32 s8, s211088; GFX942-NEXT: s_mov_b32 s9, s211089; GFX942-NEXT: s_mov_b32 s10, s011090; GFX942-NEXT: s_mov_b32 s11, s011091; GFX942-NEXT: ;;#ASMSTART11092; GFX942-NEXT: ; use s[8:11]11093; GFX942-NEXT: ;;#ASMEND11094; GFX942-NEXT: s_setpc_b64 s[30:31]11095 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11096 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11097 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 3>11098 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)11099 ret void11100}11101 11102define void @s_shuffle_v4p3_v3p3__5_5_u_3() {11103; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_u_3:11104; GFX900: ; %bb.0:11105; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11106; GFX900-NEXT: ;;#ASMSTART11107; GFX900-NEXT: ; def s[4:6]11108; GFX900-NEXT: ;;#ASMEND11109; GFX900-NEXT: s_mov_b32 s8, s611110; GFX900-NEXT: s_mov_b32 s9, s611111; GFX900-NEXT: s_mov_b32 s11, s411112; GFX900-NEXT: ;;#ASMSTART11113; GFX900-NEXT: ; use s[8:11]11114; GFX900-NEXT: ;;#ASMEND11115; GFX900-NEXT: s_setpc_b64 s[30:31]11116;11117; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_u_3:11118; GFX90A: ; %bb.0:11119; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11120; GFX90A-NEXT: ;;#ASMSTART11121; GFX90A-NEXT: ; def s[4:6]11122; GFX90A-NEXT: ;;#ASMEND11123; GFX90A-NEXT: s_mov_b32 s8, s611124; GFX90A-NEXT: s_mov_b32 s9, s611125; GFX90A-NEXT: s_mov_b32 s11, s411126; GFX90A-NEXT: ;;#ASMSTART11127; GFX90A-NEXT: ; use s[8:11]11128; GFX90A-NEXT: ;;#ASMEND11129; GFX90A-NEXT: s_setpc_b64 s[30:31]11130;11131; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_u_3:11132; GFX942: ; %bb.0:11133; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11134; GFX942-NEXT: ;;#ASMSTART11135; GFX942-NEXT: ; def s[0:2]11136; GFX942-NEXT: ;;#ASMEND11137; GFX942-NEXT: s_mov_b32 s8, s211138; GFX942-NEXT: s_mov_b32 s9, s211139; GFX942-NEXT: s_mov_b32 s11, s011140; GFX942-NEXT: ;;#ASMSTART11141; GFX942-NEXT: ; use s[8:11]11142; GFX942-NEXT: ;;#ASMEND11143; GFX942-NEXT: s_setpc_b64 s[30:31]11144 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11145 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11146 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 3>11147 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)11148 ret void11149}11150 11151define void @s_shuffle_v4p3_v3p3__5_5_0_3() {11152; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_0_3:11153; GFX900: ; %bb.0:11154; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11155; GFX900-NEXT: ;;#ASMSTART11156; GFX900-NEXT: ; def s[4:6]11157; GFX900-NEXT: ;;#ASMEND11158; GFX900-NEXT: ;;#ASMSTART11159; GFX900-NEXT: ; def s[12:14]11160; GFX900-NEXT: ;;#ASMEND11161; GFX900-NEXT: s_mov_b32 s8, s1411162; GFX900-NEXT: s_mov_b32 s9, s1411163; GFX900-NEXT: s_mov_b32 s10, s411164; GFX900-NEXT: s_mov_b32 s11, s1211165; GFX900-NEXT: ;;#ASMSTART11166; GFX900-NEXT: ; use s[8:11]11167; GFX900-NEXT: ;;#ASMEND11168; GFX900-NEXT: s_setpc_b64 s[30:31]11169;11170; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_0_3:11171; GFX90A: ; %bb.0:11172; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11173; GFX90A-NEXT: ;;#ASMSTART11174; GFX90A-NEXT: ; def s[4:6]11175; GFX90A-NEXT: ;;#ASMEND11176; GFX90A-NEXT: ;;#ASMSTART11177; GFX90A-NEXT: ; def s[12:14]11178; GFX90A-NEXT: ;;#ASMEND11179; GFX90A-NEXT: s_mov_b32 s8, s1411180; GFX90A-NEXT: s_mov_b32 s9, s1411181; GFX90A-NEXT: s_mov_b32 s10, s411182; GFX90A-NEXT: s_mov_b32 s11, s1211183; GFX90A-NEXT: ;;#ASMSTART11184; GFX90A-NEXT: ; use s[8:11]11185; GFX90A-NEXT: ;;#ASMEND11186; GFX90A-NEXT: s_setpc_b64 s[30:31]11187;11188; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_0_3:11189; GFX942: ; %bb.0:11190; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11191; GFX942-NEXT: ;;#ASMSTART11192; GFX942-NEXT: ; def s[0:2]11193; GFX942-NEXT: ;;#ASMEND11194; GFX942-NEXT: ;;#ASMSTART11195; GFX942-NEXT: ; def s[4:6]11196; GFX942-NEXT: ;;#ASMEND11197; GFX942-NEXT: s_mov_b32 s8, s611198; GFX942-NEXT: s_mov_b32 s9, s611199; GFX942-NEXT: s_mov_b32 s10, s011200; GFX942-NEXT: s_mov_b32 s11, s411201; GFX942-NEXT: ;;#ASMSTART11202; GFX942-NEXT: ; use s[8:11]11203; GFX942-NEXT: ;;#ASMEND11204; GFX942-NEXT: s_setpc_b64 s[30:31]11205 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11206 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11207 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 3>11208 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)11209 ret void11210}11211 11212define void @s_shuffle_v4p3_v3p3__5_5_1_3() {11213; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_1_3:11214; GFX900: ; %bb.0:11215; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11216; GFX900-NEXT: ;;#ASMSTART11217; GFX900-NEXT: ; def s[4:6]11218; GFX900-NEXT: ;;#ASMEND11219; GFX900-NEXT: ;;#ASMSTART11220; GFX900-NEXT: ; def s[12:14]11221; GFX900-NEXT: ;;#ASMEND11222; GFX900-NEXT: s_mov_b32 s8, s1411223; GFX900-NEXT: s_mov_b32 s9, s1411224; GFX900-NEXT: s_mov_b32 s10, s511225; GFX900-NEXT: s_mov_b32 s11, s1211226; GFX900-NEXT: ;;#ASMSTART11227; GFX900-NEXT: ; use s[8:11]11228; GFX900-NEXT: ;;#ASMEND11229; GFX900-NEXT: s_setpc_b64 s[30:31]11230;11231; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_1_3:11232; GFX90A: ; %bb.0:11233; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11234; GFX90A-NEXT: ;;#ASMSTART11235; GFX90A-NEXT: ; def s[4:6]11236; GFX90A-NEXT: ;;#ASMEND11237; GFX90A-NEXT: ;;#ASMSTART11238; GFX90A-NEXT: ; def s[12:14]11239; GFX90A-NEXT: ;;#ASMEND11240; GFX90A-NEXT: s_mov_b32 s8, s1411241; GFX90A-NEXT: s_mov_b32 s9, s1411242; GFX90A-NEXT: s_mov_b32 s10, s511243; GFX90A-NEXT: s_mov_b32 s11, s1211244; GFX90A-NEXT: ;;#ASMSTART11245; GFX90A-NEXT: ; use s[8:11]11246; GFX90A-NEXT: ;;#ASMEND11247; GFX90A-NEXT: s_setpc_b64 s[30:31]11248;11249; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_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[0:2]11254; GFX942-NEXT: ;;#ASMEND11255; GFX942-NEXT: ;;#ASMSTART11256; GFX942-NEXT: ; def s[4:6]11257; GFX942-NEXT: ;;#ASMEND11258; GFX942-NEXT: s_mov_b32 s8, s611259; GFX942-NEXT: s_mov_b32 s9, s611260; GFX942-NEXT: s_mov_b32 s10, s111261; GFX942-NEXT: s_mov_b32 s11, s411262; GFX942-NEXT: ;;#ASMSTART11263; GFX942-NEXT: ; use s[8:11]11264; GFX942-NEXT: ;;#ASMEND11265; GFX942-NEXT: s_setpc_b64 s[30:31]11266 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11267 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11268 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 3>11269 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)11270 ret void11271}11272 11273define void @s_shuffle_v4p3_v3p3__5_5_2_3() {11274; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_2_3:11275; GFX900: ; %bb.0:11276; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11277; GFX900-NEXT: ;;#ASMSTART11278; GFX900-NEXT: ; def s[8:10]11279; GFX900-NEXT: ;;#ASMEND11280; GFX900-NEXT: ;;#ASMSTART11281; GFX900-NEXT: ; def s[4:6]11282; GFX900-NEXT: ;;#ASMEND11283; GFX900-NEXT: s_mov_b32 s8, s611284; GFX900-NEXT: s_mov_b32 s9, s611285; GFX900-NEXT: s_mov_b32 s11, s411286; GFX900-NEXT: ;;#ASMSTART11287; GFX900-NEXT: ; use s[8:11]11288; GFX900-NEXT: ;;#ASMEND11289; GFX900-NEXT: s_setpc_b64 s[30:31]11290;11291; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_2_3:11292; GFX90A: ; %bb.0:11293; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11294; GFX90A-NEXT: ;;#ASMSTART11295; GFX90A-NEXT: ; def s[8:10]11296; GFX90A-NEXT: ;;#ASMEND11297; GFX90A-NEXT: ;;#ASMSTART11298; GFX90A-NEXT: ; def s[4:6]11299; GFX90A-NEXT: ;;#ASMEND11300; GFX90A-NEXT: s_mov_b32 s8, s611301; GFX90A-NEXT: s_mov_b32 s9, s611302; GFX90A-NEXT: s_mov_b32 s11, s411303; GFX90A-NEXT: ;;#ASMSTART11304; GFX90A-NEXT: ; use s[8:11]11305; GFX90A-NEXT: ;;#ASMEND11306; GFX90A-NEXT: s_setpc_b64 s[30:31]11307;11308; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_2_3:11309; GFX942: ; %bb.0:11310; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11311; GFX942-NEXT: ;;#ASMSTART11312; GFX942-NEXT: ; def s[8:10]11313; GFX942-NEXT: ;;#ASMEND11314; GFX942-NEXT: ;;#ASMSTART11315; GFX942-NEXT: ; def s[0:2]11316; GFX942-NEXT: ;;#ASMEND11317; GFX942-NEXT: s_mov_b32 s8, s211318; GFX942-NEXT: s_mov_b32 s9, s211319; GFX942-NEXT: s_mov_b32 s11, s011320; GFX942-NEXT: ;;#ASMSTART11321; GFX942-NEXT: ; use s[8:11]11322; GFX942-NEXT: ;;#ASMEND11323; GFX942-NEXT: s_setpc_b64 s[30:31]11324 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11325 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11326 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 3>11327 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)11328 ret void11329}11330 11331define void @s_shuffle_v4p3_v3p3__5_5_4_3() {11332; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_4_3:11333; GFX900: ; %bb.0:11334; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11335; GFX900-NEXT: ;;#ASMSTART11336; GFX900-NEXT: ; def s[4:6]11337; GFX900-NEXT: ;;#ASMEND11338; GFX900-NEXT: s_mov_b32 s8, s611339; GFX900-NEXT: s_mov_b32 s9, s611340; GFX900-NEXT: s_mov_b32 s10, s511341; GFX900-NEXT: s_mov_b32 s11, s411342; GFX900-NEXT: ;;#ASMSTART11343; GFX900-NEXT: ; use s[8:11]11344; GFX900-NEXT: ;;#ASMEND11345; GFX900-NEXT: s_setpc_b64 s[30:31]11346;11347; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_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:6]11352; GFX90A-NEXT: ;;#ASMEND11353; GFX90A-NEXT: s_mov_b32 s8, s611354; GFX90A-NEXT: s_mov_b32 s9, s611355; GFX90A-NEXT: s_mov_b32 s10, s511356; GFX90A-NEXT: s_mov_b32 s11, s411357; GFX90A-NEXT: ;;#ASMSTART11358; GFX90A-NEXT: ; use s[8:11]11359; GFX90A-NEXT: ;;#ASMEND11360; GFX90A-NEXT: s_setpc_b64 s[30:31]11361;11362; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_4_3:11363; GFX942: ; %bb.0:11364; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11365; GFX942-NEXT: ;;#ASMSTART11366; GFX942-NEXT: ; def s[0:2]11367; GFX942-NEXT: ;;#ASMEND11368; GFX942-NEXT: s_mov_b32 s8, s211369; GFX942-NEXT: s_mov_b32 s9, s211370; GFX942-NEXT: s_mov_b32 s10, s111371; GFX942-NEXT: s_mov_b32 s11, s011372; GFX942-NEXT: ;;#ASMSTART11373; GFX942-NEXT: ; use s[8:11]11374; GFX942-NEXT: ;;#ASMEND11375; GFX942-NEXT: s_setpc_b64 s[30:31]11376 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11377 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11378 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 3>11379 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)11380 ret void11381}11382 11383define void @s_shuffle_v4p3_v3p3__u_4_4_4() {11384; GFX9-LABEL: s_shuffle_v4p3_v3p3__u_4_4_4:11385; GFX9: ; %bb.0:11386; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11387; GFX9-NEXT: ;;#ASMSTART11388; GFX9-NEXT: ; def s[8:10]11389; GFX9-NEXT: ;;#ASMEND11390; GFX9-NEXT: s_mov_b32 s10, s911391; GFX9-NEXT: s_mov_b32 s11, s911392; GFX9-NEXT: ;;#ASMSTART11393; GFX9-NEXT: ; use s[8:11]11394; GFX9-NEXT: ;;#ASMEND11395; GFX9-NEXT: s_setpc_b64 s[30:31]11396 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11397 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11398 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 poison, i32 4, i32 4, i32 4>11399 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)11400 ret void11401}11402 11403define void @s_shuffle_v4p3_v3p3__0_4_4_4() {11404; GFX900-LABEL: s_shuffle_v4p3_v3p3__0_4_4_4:11405; GFX900: ; %bb.0:11406; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11407; GFX900-NEXT: ;;#ASMSTART11408; GFX900-NEXT: ; def s[8:10]11409; GFX900-NEXT: ;;#ASMEND11410; GFX900-NEXT: ;;#ASMSTART11411; GFX900-NEXT: ; def s[4:6]11412; GFX900-NEXT: ;;#ASMEND11413; GFX900-NEXT: s_mov_b32 s9, s511414; GFX900-NEXT: s_mov_b32 s10, s511415; GFX900-NEXT: s_mov_b32 s11, s511416; GFX900-NEXT: ;;#ASMSTART11417; GFX900-NEXT: ; use s[8:11]11418; GFX900-NEXT: ;;#ASMEND11419; GFX900-NEXT: s_setpc_b64 s[30:31]11420;11421; GFX90A-LABEL: s_shuffle_v4p3_v3p3__0_4_4_4:11422; GFX90A: ; %bb.0:11423; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11424; GFX90A-NEXT: ;;#ASMSTART11425; GFX90A-NEXT: ; def s[8:10]11426; GFX90A-NEXT: ;;#ASMEND11427; GFX90A-NEXT: ;;#ASMSTART11428; GFX90A-NEXT: ; def s[4:6]11429; GFX90A-NEXT: ;;#ASMEND11430; GFX90A-NEXT: s_mov_b32 s9, s511431; GFX90A-NEXT: s_mov_b32 s10, s511432; GFX90A-NEXT: s_mov_b32 s11, s511433; GFX90A-NEXT: ;;#ASMSTART11434; GFX90A-NEXT: ; use s[8:11]11435; GFX90A-NEXT: ;;#ASMEND11436; GFX90A-NEXT: s_setpc_b64 s[30:31]11437;11438; GFX942-LABEL: s_shuffle_v4p3_v3p3__0_4_4_4:11439; GFX942: ; %bb.0:11440; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11441; GFX942-NEXT: ;;#ASMSTART11442; GFX942-NEXT: ; def s[8:10]11443; GFX942-NEXT: ;;#ASMEND11444; GFX942-NEXT: ;;#ASMSTART11445; GFX942-NEXT: ; def s[0:2]11446; GFX942-NEXT: ;;#ASMEND11447; GFX942-NEXT: s_mov_b32 s9, s111448; GFX942-NEXT: s_mov_b32 s10, s111449; GFX942-NEXT: s_mov_b32 s11, s111450; GFX942-NEXT: ;;#ASMSTART11451; GFX942-NEXT: ; use s[8:11]11452; GFX942-NEXT: ;;#ASMEND11453; GFX942-NEXT: s_setpc_b64 s[30:31]11454 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11455 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11456 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 0, i32 4, i32 4, i32 4>11457 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)11458 ret void11459}11460 11461define void @s_shuffle_v4p3_v3p3__1_4_4_4() {11462; GFX900-LABEL: s_shuffle_v4p3_v3p3__1_4_4_4:11463; GFX900: ; %bb.0:11464; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11465; GFX900-NEXT: ;;#ASMSTART11466; GFX900-NEXT: ; def s[8:10]11467; GFX900-NEXT: ;;#ASMEND11468; GFX900-NEXT: ;;#ASMSTART11469; GFX900-NEXT: ; def s[4:6]11470; GFX900-NEXT: ;;#ASMEND11471; GFX900-NEXT: s_mov_b32 s8, s511472; GFX900-NEXT: s_mov_b32 s10, s911473; GFX900-NEXT: s_mov_b32 s11, s911474; GFX900-NEXT: ;;#ASMSTART11475; GFX900-NEXT: ; use s[8:11]11476; GFX900-NEXT: ;;#ASMEND11477; GFX900-NEXT: s_setpc_b64 s[30:31]11478;11479; GFX90A-LABEL: s_shuffle_v4p3_v3p3__1_4_4_4:11480; GFX90A: ; %bb.0:11481; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11482; GFX90A-NEXT: ;;#ASMSTART11483; GFX90A-NEXT: ; def s[8:10]11484; GFX90A-NEXT: ;;#ASMEND11485; GFX90A-NEXT: ;;#ASMSTART11486; GFX90A-NEXT: ; def s[4:6]11487; GFX90A-NEXT: ;;#ASMEND11488; GFX90A-NEXT: s_mov_b32 s8, s511489; GFX90A-NEXT: s_mov_b32 s10, s911490; GFX90A-NEXT: s_mov_b32 s11, s911491; GFX90A-NEXT: ;;#ASMSTART11492; GFX90A-NEXT: ; use s[8:11]11493; GFX90A-NEXT: ;;#ASMEND11494; GFX90A-NEXT: s_setpc_b64 s[30:31]11495;11496; GFX942-LABEL: s_shuffle_v4p3_v3p3__1_4_4_4:11497; GFX942: ; %bb.0:11498; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11499; GFX942-NEXT: ;;#ASMSTART11500; GFX942-NEXT: ; def s[8:10]11501; GFX942-NEXT: ;;#ASMEND11502; GFX942-NEXT: ;;#ASMSTART11503; GFX942-NEXT: ; def s[0:2]11504; GFX942-NEXT: ;;#ASMEND11505; GFX942-NEXT: s_mov_b32 s8, s111506; GFX942-NEXT: s_mov_b32 s10, s911507; GFX942-NEXT: s_mov_b32 s11, s911508; GFX942-NEXT: ;;#ASMSTART11509; GFX942-NEXT: ; use s[8:11]11510; GFX942-NEXT: ;;#ASMEND11511; GFX942-NEXT: s_setpc_b64 s[30:31]11512 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11513 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11514 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 1, i32 4, i32 4, i32 4>11515 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)11516 ret void11517}11518 11519define void @s_shuffle_v4p3_v3p3__2_4_4_4() {11520; GFX900-LABEL: s_shuffle_v4p3_v3p3__2_4_4_4:11521; GFX900: ; %bb.0:11522; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11523; GFX900-NEXT: ;;#ASMSTART11524; GFX900-NEXT: ; def s[8:10]11525; GFX900-NEXT: ;;#ASMEND11526; GFX900-NEXT: ;;#ASMSTART11527; GFX900-NEXT: ; def s[4:6]11528; GFX900-NEXT: ;;#ASMEND11529; GFX900-NEXT: s_mov_b32 s8, s611530; GFX900-NEXT: s_mov_b32 s10, s911531; GFX900-NEXT: s_mov_b32 s11, s911532; GFX900-NEXT: ;;#ASMSTART11533; GFX900-NEXT: ; use s[8:11]11534; GFX900-NEXT: ;;#ASMEND11535; GFX900-NEXT: s_setpc_b64 s[30:31]11536;11537; GFX90A-LABEL: s_shuffle_v4p3_v3p3__2_4_4_4:11538; GFX90A: ; %bb.0:11539; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11540; GFX90A-NEXT: ;;#ASMSTART11541; GFX90A-NEXT: ; def s[8:10]11542; GFX90A-NEXT: ;;#ASMEND11543; GFX90A-NEXT: ;;#ASMSTART11544; GFX90A-NEXT: ; def s[4:6]11545; GFX90A-NEXT: ;;#ASMEND11546; GFX90A-NEXT: s_mov_b32 s8, s611547; GFX90A-NEXT: s_mov_b32 s10, s911548; GFX90A-NEXT: s_mov_b32 s11, s911549; GFX90A-NEXT: ;;#ASMSTART11550; GFX90A-NEXT: ; use s[8:11]11551; GFX90A-NEXT: ;;#ASMEND11552; GFX90A-NEXT: s_setpc_b64 s[30:31]11553;11554; GFX942-LABEL: s_shuffle_v4p3_v3p3__2_4_4_4:11555; GFX942: ; %bb.0:11556; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11557; GFX942-NEXT: ;;#ASMSTART11558; GFX942-NEXT: ; def s[8:10]11559; GFX942-NEXT: ;;#ASMEND11560; GFX942-NEXT: ;;#ASMSTART11561; GFX942-NEXT: ; def s[0:2]11562; GFX942-NEXT: ;;#ASMEND11563; GFX942-NEXT: s_mov_b32 s8, s211564; GFX942-NEXT: s_mov_b32 s10, s911565; GFX942-NEXT: s_mov_b32 s11, s911566; GFX942-NEXT: ;;#ASMSTART11567; GFX942-NEXT: ; use s[8:11]11568; GFX942-NEXT: ;;#ASMEND11569; GFX942-NEXT: s_setpc_b64 s[30:31]11570 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11571 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11572 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 2, i32 4, i32 4, i32 4>11573 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)11574 ret void11575}11576 11577define void @s_shuffle_v4p3_v3p3__3_4_4_4() {11578; GFX9-LABEL: s_shuffle_v4p3_v3p3__3_4_4_4:11579; GFX9: ; %bb.0:11580; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11581; GFX9-NEXT: ;;#ASMSTART11582; GFX9-NEXT: ; def s[8:10]11583; GFX9-NEXT: ;;#ASMEND11584; GFX9-NEXT: s_mov_b32 s10, s911585; GFX9-NEXT: s_mov_b32 s11, s911586; GFX9-NEXT: ;;#ASMSTART11587; GFX9-NEXT: ; use s[8:11]11588; GFX9-NEXT: ;;#ASMEND11589; GFX9-NEXT: s_setpc_b64 s[30:31]11590 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11591 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11592 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 4, i32 4, i32 4>11593 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)11594 ret void11595}11596 11597define void @s_shuffle_v4p3_v3p3__4_4_4_4() {11598; GFX9-LABEL: s_shuffle_v4p3_v3p3__4_4_4_4:11599; GFX9: ; %bb.0:11600; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11601; GFX9-NEXT: ;;#ASMSTART11602; GFX9-NEXT: ; def s[8:10]11603; GFX9-NEXT: ;;#ASMEND11604; GFX9-NEXT: s_mov_b32 s8, s911605; GFX9-NEXT: s_mov_b32 s10, s911606; GFX9-NEXT: s_mov_b32 s11, s911607; GFX9-NEXT: ;;#ASMSTART11608; GFX9-NEXT: ; use s[8:11]11609; GFX9-NEXT: ;;#ASMEND11610; GFX9-NEXT: s_setpc_b64 s[30:31]11611 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11612 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11613 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 4, i32 4, i32 4, i32 4>11614 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)11615 ret void11616}11617 11618define void @s_shuffle_v4p3_v3p3__5_4_4_4() {11619; GFX9-LABEL: s_shuffle_v4p3_v3p3__5_4_4_4:11620; GFX9: ; %bb.0:11621; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11622; GFX9-NEXT: ;;#ASMSTART11623; GFX9-NEXT: ; def s[8:10]11624; GFX9-NEXT: ;;#ASMEND11625; GFX9-NEXT: s_mov_b32 s8, s1011626; GFX9-NEXT: s_mov_b32 s10, s911627; GFX9-NEXT: s_mov_b32 s11, s911628; GFX9-NEXT: ;;#ASMSTART11629; GFX9-NEXT: ; use s[8:11]11630; GFX9-NEXT: ;;#ASMEND11631; GFX9-NEXT: s_setpc_b64 s[30:31]11632 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11633 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11634 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 4, i32 4, i32 4>11635 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)11636 ret void11637}11638 11639define void @s_shuffle_v4p3_v3p3__5_u_4_4() {11640; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_u_4_4:11641; GFX900: ; %bb.0:11642; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11643; GFX900-NEXT: ;;#ASMSTART11644; GFX900-NEXT: ; def s[4:6]11645; GFX900-NEXT: ;;#ASMEND11646; GFX900-NEXT: s_mov_b32 s8, s611647; GFX900-NEXT: s_mov_b32 s10, s511648; GFX900-NEXT: s_mov_b32 s11, s511649; GFX900-NEXT: ;;#ASMSTART11650; GFX900-NEXT: ; use s[8:11]11651; GFX900-NEXT: ;;#ASMEND11652; GFX900-NEXT: s_setpc_b64 s[30:31]11653;11654; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_u_4_4:11655; GFX90A: ; %bb.0:11656; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11657; GFX90A-NEXT: ;;#ASMSTART11658; GFX90A-NEXT: ; def s[4:6]11659; GFX90A-NEXT: ;;#ASMEND11660; GFX90A-NEXT: s_mov_b32 s8, s611661; GFX90A-NEXT: s_mov_b32 s10, s511662; GFX90A-NEXT: s_mov_b32 s11, s511663; GFX90A-NEXT: ;;#ASMSTART11664; GFX90A-NEXT: ; use s[8:11]11665; GFX90A-NEXT: ;;#ASMEND11666; GFX90A-NEXT: s_setpc_b64 s[30:31]11667;11668; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_u_4_4:11669; GFX942: ; %bb.0:11670; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11671; GFX942-NEXT: ;;#ASMSTART11672; GFX942-NEXT: ; def s[0:2]11673; GFX942-NEXT: ;;#ASMEND11674; GFX942-NEXT: s_mov_b32 s8, s211675; GFX942-NEXT: s_mov_b32 s10, s111676; GFX942-NEXT: s_mov_b32 s11, s111677; GFX942-NEXT: ;;#ASMSTART11678; GFX942-NEXT: ; use s[8:11]11679; GFX942-NEXT: ;;#ASMEND11680; GFX942-NEXT: s_setpc_b64 s[30:31]11681 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11682 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11683 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 poison, i32 4, i32 4>11684 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)11685 ret void11686}11687 11688define void @s_shuffle_v4p3_v3p3__5_0_4_4() {11689; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_0_4_4:11690; GFX900: ; %bb.0:11691; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11692; GFX900-NEXT: ;;#ASMSTART11693; GFX900-NEXT: ; def s[4:6]11694; GFX900-NEXT: ;;#ASMEND11695; GFX900-NEXT: ;;#ASMSTART11696; GFX900-NEXT: ; def s[12:14]11697; GFX900-NEXT: ;;#ASMEND11698; GFX900-NEXT: s_mov_b32 s8, s1411699; GFX900-NEXT: s_mov_b32 s9, s411700; GFX900-NEXT: s_mov_b32 s10, s1311701; GFX900-NEXT: s_mov_b32 s11, s1311702; GFX900-NEXT: ;;#ASMSTART11703; GFX900-NEXT: ; use s[8:11]11704; GFX900-NEXT: ;;#ASMEND11705; GFX900-NEXT: s_setpc_b64 s[30:31]11706;11707; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_0_4_4:11708; GFX90A: ; %bb.0:11709; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11710; GFX90A-NEXT: ;;#ASMSTART11711; GFX90A-NEXT: ; def s[4:6]11712; GFX90A-NEXT: ;;#ASMEND11713; GFX90A-NEXT: ;;#ASMSTART11714; GFX90A-NEXT: ; def s[12:14]11715; GFX90A-NEXT: ;;#ASMEND11716; GFX90A-NEXT: s_mov_b32 s8, s1411717; GFX90A-NEXT: s_mov_b32 s9, s411718; GFX90A-NEXT: s_mov_b32 s10, s1311719; GFX90A-NEXT: s_mov_b32 s11, s1311720; GFX90A-NEXT: ;;#ASMSTART11721; GFX90A-NEXT: ; use s[8:11]11722; GFX90A-NEXT: ;;#ASMEND11723; GFX90A-NEXT: s_setpc_b64 s[30:31]11724;11725; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_0_4_4:11726; GFX942: ; %bb.0:11727; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11728; GFX942-NEXT: ;;#ASMSTART11729; GFX942-NEXT: ; def s[0:2]11730; GFX942-NEXT: ;;#ASMEND11731; GFX942-NEXT: ;;#ASMSTART11732; GFX942-NEXT: ; def s[4:6]11733; GFX942-NEXT: ;;#ASMEND11734; GFX942-NEXT: s_mov_b32 s8, s611735; GFX942-NEXT: s_mov_b32 s9, s011736; GFX942-NEXT: s_mov_b32 s10, s511737; GFX942-NEXT: s_mov_b32 s11, s511738; GFX942-NEXT: ;;#ASMSTART11739; GFX942-NEXT: ; use s[8:11]11740; GFX942-NEXT: ;;#ASMEND11741; GFX942-NEXT: s_setpc_b64 s[30:31]11742 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11743 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11744 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 0, i32 4, i32 4>11745 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)11746 ret void11747}11748 11749define void @s_shuffle_v4p3_v3p3__5_1_4_4() {11750; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_1_4_4:11751; GFX900: ; %bb.0:11752; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11753; GFX900-NEXT: ;;#ASMSTART11754; GFX900-NEXT: ; def s[8:10]11755; GFX900-NEXT: ;;#ASMEND11756; GFX900-NEXT: ;;#ASMSTART11757; GFX900-NEXT: ; def s[4:6]11758; GFX900-NEXT: ;;#ASMEND11759; GFX900-NEXT: s_mov_b32 s8, s611760; GFX900-NEXT: s_mov_b32 s10, s511761; GFX900-NEXT: s_mov_b32 s11, s511762; GFX900-NEXT: ;;#ASMSTART11763; GFX900-NEXT: ; use s[8:11]11764; GFX900-NEXT: ;;#ASMEND11765; GFX900-NEXT: s_setpc_b64 s[30:31]11766;11767; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_1_4_4:11768; GFX90A: ; %bb.0:11769; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11770; GFX90A-NEXT: ;;#ASMSTART11771; GFX90A-NEXT: ; def s[8:10]11772; GFX90A-NEXT: ;;#ASMEND11773; GFX90A-NEXT: ;;#ASMSTART11774; GFX90A-NEXT: ; def s[4:6]11775; GFX90A-NEXT: ;;#ASMEND11776; GFX90A-NEXT: s_mov_b32 s8, s611777; GFX90A-NEXT: s_mov_b32 s10, s511778; GFX90A-NEXT: s_mov_b32 s11, s511779; GFX90A-NEXT: ;;#ASMSTART11780; GFX90A-NEXT: ; use s[8:11]11781; GFX90A-NEXT: ;;#ASMEND11782; GFX90A-NEXT: s_setpc_b64 s[30:31]11783;11784; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_1_4_4:11785; GFX942: ; %bb.0:11786; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11787; GFX942-NEXT: ;;#ASMSTART11788; GFX942-NEXT: ; def s[8:10]11789; GFX942-NEXT: ;;#ASMEND11790; GFX942-NEXT: ;;#ASMSTART11791; GFX942-NEXT: ; def s[0:2]11792; GFX942-NEXT: ;;#ASMEND11793; GFX942-NEXT: s_mov_b32 s8, s211794; GFX942-NEXT: s_mov_b32 s10, s111795; GFX942-NEXT: s_mov_b32 s11, s111796; GFX942-NEXT: ;;#ASMSTART11797; GFX942-NEXT: ; use s[8:11]11798; GFX942-NEXT: ;;#ASMEND11799; GFX942-NEXT: s_setpc_b64 s[30:31]11800 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11801 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11802 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 1, i32 4, i32 4>11803 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)11804 ret void11805}11806 11807define void @s_shuffle_v4p3_v3p3__5_2_4_4() {11808; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_2_4_4:11809; GFX900: ; %bb.0:11810; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11811; GFX900-NEXT: ;;#ASMSTART11812; GFX900-NEXT: ; def s[4:6]11813; GFX900-NEXT: ;;#ASMEND11814; GFX900-NEXT: ;;#ASMSTART11815; GFX900-NEXT: ; def s[12:14]11816; GFX900-NEXT: ;;#ASMEND11817; GFX900-NEXT: s_mov_b32 s8, s1411818; GFX900-NEXT: s_mov_b32 s9, s611819; GFX900-NEXT: s_mov_b32 s10, s1311820; GFX900-NEXT: s_mov_b32 s11, s1311821; GFX900-NEXT: ;;#ASMSTART11822; GFX900-NEXT: ; use s[8:11]11823; GFX900-NEXT: ;;#ASMEND11824; GFX900-NEXT: s_setpc_b64 s[30:31]11825;11826; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_2_4_4:11827; GFX90A: ; %bb.0:11828; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11829; GFX90A-NEXT: ;;#ASMSTART11830; GFX90A-NEXT: ; def s[4:6]11831; GFX90A-NEXT: ;;#ASMEND11832; GFX90A-NEXT: ;;#ASMSTART11833; GFX90A-NEXT: ; def s[12:14]11834; GFX90A-NEXT: ;;#ASMEND11835; GFX90A-NEXT: s_mov_b32 s8, s1411836; GFX90A-NEXT: s_mov_b32 s9, s611837; GFX90A-NEXT: s_mov_b32 s10, s1311838; GFX90A-NEXT: s_mov_b32 s11, s1311839; GFX90A-NEXT: ;;#ASMSTART11840; GFX90A-NEXT: ; use s[8:11]11841; GFX90A-NEXT: ;;#ASMEND11842; GFX90A-NEXT: s_setpc_b64 s[30:31]11843;11844; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_2_4_4:11845; GFX942: ; %bb.0:11846; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11847; GFX942-NEXT: ;;#ASMSTART11848; GFX942-NEXT: ; def s[0:2]11849; GFX942-NEXT: ;;#ASMEND11850; GFX942-NEXT: ;;#ASMSTART11851; GFX942-NEXT: ; def s[4:6]11852; GFX942-NEXT: ;;#ASMEND11853; GFX942-NEXT: s_mov_b32 s8, s611854; GFX942-NEXT: s_mov_b32 s9, s211855; GFX942-NEXT: s_mov_b32 s10, s511856; GFX942-NEXT: s_mov_b32 s11, s511857; GFX942-NEXT: ;;#ASMSTART11858; GFX942-NEXT: ; use s[8:11]11859; GFX942-NEXT: ;;#ASMEND11860; GFX942-NEXT: s_setpc_b64 s[30:31]11861 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11862 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11863 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 2, i32 4, i32 4>11864 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)11865 ret void11866}11867 11868define void @s_shuffle_v4p3_v3p3__5_3_4_4() {11869; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_3_4_4:11870; GFX900: ; %bb.0:11871; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11872; GFX900-NEXT: ;;#ASMSTART11873; GFX900-NEXT: ; def s[4:6]11874; GFX900-NEXT: ;;#ASMEND11875; GFX900-NEXT: s_mov_b32 s8, s611876; GFX900-NEXT: s_mov_b32 s9, s411877; GFX900-NEXT: s_mov_b32 s10, s511878; GFX900-NEXT: s_mov_b32 s11, s511879; GFX900-NEXT: ;;#ASMSTART11880; GFX900-NEXT: ; use s[8:11]11881; GFX900-NEXT: ;;#ASMEND11882; GFX900-NEXT: s_setpc_b64 s[30:31]11883;11884; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_3_4_4:11885; GFX90A: ; %bb.0:11886; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11887; GFX90A-NEXT: ;;#ASMSTART11888; GFX90A-NEXT: ; def s[4:6]11889; GFX90A-NEXT: ;;#ASMEND11890; GFX90A-NEXT: s_mov_b32 s8, s611891; GFX90A-NEXT: s_mov_b32 s9, s411892; GFX90A-NEXT: s_mov_b32 s10, s511893; GFX90A-NEXT: s_mov_b32 s11, s511894; GFX90A-NEXT: ;;#ASMSTART11895; GFX90A-NEXT: ; use s[8:11]11896; GFX90A-NEXT: ;;#ASMEND11897; GFX90A-NEXT: s_setpc_b64 s[30:31]11898;11899; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_3_4_4:11900; GFX942: ; %bb.0:11901; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11902; GFX942-NEXT: ;;#ASMSTART11903; GFX942-NEXT: ; def s[0:2]11904; GFX942-NEXT: ;;#ASMEND11905; GFX942-NEXT: s_mov_b32 s8, s211906; GFX942-NEXT: s_mov_b32 s9, s011907; GFX942-NEXT: s_mov_b32 s10, s111908; GFX942-NEXT: s_mov_b32 s11, s111909; GFX942-NEXT: ;;#ASMSTART11910; GFX942-NEXT: ; use s[8:11]11911; GFX942-NEXT: ;;#ASMEND11912; GFX942-NEXT: s_setpc_b64 s[30:31]11913 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11914 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11915 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 3, i32 4, i32 4>11916 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)11917 ret void11918}11919 11920define void @s_shuffle_v4p3_v3p3__5_5_4_4() {11921; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_4_4:11922; GFX900: ; %bb.0:11923; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11924; GFX900-NEXT: ;;#ASMSTART11925; GFX900-NEXT: ; def s[4:6]11926; GFX900-NEXT: ;;#ASMEND11927; GFX900-NEXT: s_mov_b32 s8, s611928; GFX900-NEXT: s_mov_b32 s9, s611929; GFX900-NEXT: s_mov_b32 s10, s511930; GFX900-NEXT: s_mov_b32 s11, s511931; GFX900-NEXT: ;;#ASMSTART11932; GFX900-NEXT: ; use s[8:11]11933; GFX900-NEXT: ;;#ASMEND11934; GFX900-NEXT: s_setpc_b64 s[30:31]11935;11936; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_4_4:11937; GFX90A: ; %bb.0:11938; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11939; GFX90A-NEXT: ;;#ASMSTART11940; GFX90A-NEXT: ; def s[4:6]11941; GFX90A-NEXT: ;;#ASMEND11942; GFX90A-NEXT: s_mov_b32 s8, s611943; GFX90A-NEXT: s_mov_b32 s9, s611944; GFX90A-NEXT: s_mov_b32 s10, s511945; GFX90A-NEXT: s_mov_b32 s11, s511946; GFX90A-NEXT: ;;#ASMSTART11947; GFX90A-NEXT: ; use s[8:11]11948; GFX90A-NEXT: ;;#ASMEND11949; GFX90A-NEXT: s_setpc_b64 s[30:31]11950;11951; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_4_4:11952; GFX942: ; %bb.0:11953; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11954; GFX942-NEXT: ;;#ASMSTART11955; GFX942-NEXT: ; def s[0:2]11956; GFX942-NEXT: ;;#ASMEND11957; GFX942-NEXT: s_mov_b32 s8, s211958; GFX942-NEXT: s_mov_b32 s9, s211959; GFX942-NEXT: s_mov_b32 s10, s111960; GFX942-NEXT: s_mov_b32 s11, s111961; GFX942-NEXT: ;;#ASMSTART11962; GFX942-NEXT: ; use s[8:11]11963; GFX942-NEXT: ;;#ASMEND11964; GFX942-NEXT: s_setpc_b64 s[30:31]11965 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11966 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()11967 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 4>11968 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)11969 ret void11970}11971 11972define void @s_shuffle_v4p3_v3p3__5_5_u_4() {11973; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_u_4:11974; GFX900: ; %bb.0:11975; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11976; GFX900-NEXT: ;;#ASMSTART11977; GFX900-NEXT: ; def s[4:6]11978; GFX900-NEXT: ;;#ASMEND11979; GFX900-NEXT: s_mov_b32 s8, s611980; GFX900-NEXT: s_mov_b32 s9, s611981; GFX900-NEXT: s_mov_b32 s11, s511982; GFX900-NEXT: ;;#ASMSTART11983; GFX900-NEXT: ; use s[8:11]11984; GFX900-NEXT: ;;#ASMEND11985; GFX900-NEXT: s_setpc_b64 s[30:31]11986;11987; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_u_4:11988; GFX90A: ; %bb.0:11989; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11990; GFX90A-NEXT: ;;#ASMSTART11991; GFX90A-NEXT: ; def s[4:6]11992; GFX90A-NEXT: ;;#ASMEND11993; GFX90A-NEXT: s_mov_b32 s8, s611994; GFX90A-NEXT: s_mov_b32 s9, s611995; GFX90A-NEXT: s_mov_b32 s11, s511996; GFX90A-NEXT: ;;#ASMSTART11997; GFX90A-NEXT: ; use s[8:11]11998; GFX90A-NEXT: ;;#ASMEND11999; GFX90A-NEXT: s_setpc_b64 s[30:31]12000;12001; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_u_4:12002; GFX942: ; %bb.0:12003; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12004; GFX942-NEXT: ;;#ASMSTART12005; GFX942-NEXT: ; def s[0:2]12006; GFX942-NEXT: ;;#ASMEND12007; GFX942-NEXT: s_mov_b32 s8, s212008; GFX942-NEXT: s_mov_b32 s9, s212009; GFX942-NEXT: s_mov_b32 s11, s112010; GFX942-NEXT: ;;#ASMSTART12011; GFX942-NEXT: ; use s[8:11]12012; GFX942-NEXT: ;;#ASMEND12013; GFX942-NEXT: s_setpc_b64 s[30:31]12014 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12015 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12016 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 4>12017 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)12018 ret void12019}12020 12021define void @s_shuffle_v4p3_v3p3__5_5_0_4() {12022; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_0_4:12023; GFX900: ; %bb.0:12024; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12025; GFX900-NEXT: ;;#ASMSTART12026; GFX900-NEXT: ; def s[4:6]12027; GFX900-NEXT: ;;#ASMEND12028; GFX900-NEXT: ;;#ASMSTART12029; GFX900-NEXT: ; def s[12:14]12030; GFX900-NEXT: ;;#ASMEND12031; GFX900-NEXT: s_mov_b32 s8, s1412032; GFX900-NEXT: s_mov_b32 s9, s1412033; GFX900-NEXT: s_mov_b32 s10, s412034; GFX900-NEXT: s_mov_b32 s11, s1312035; GFX900-NEXT: ;;#ASMSTART12036; GFX900-NEXT: ; use s[8:11]12037; GFX900-NEXT: ;;#ASMEND12038; GFX900-NEXT: s_setpc_b64 s[30:31]12039;12040; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_0_4:12041; GFX90A: ; %bb.0:12042; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12043; GFX90A-NEXT: ;;#ASMSTART12044; GFX90A-NEXT: ; def s[4:6]12045; GFX90A-NEXT: ;;#ASMEND12046; GFX90A-NEXT: ;;#ASMSTART12047; GFX90A-NEXT: ; def s[12:14]12048; GFX90A-NEXT: ;;#ASMEND12049; GFX90A-NEXT: s_mov_b32 s8, s1412050; GFX90A-NEXT: s_mov_b32 s9, s1412051; GFX90A-NEXT: s_mov_b32 s10, s412052; GFX90A-NEXT: s_mov_b32 s11, s1312053; GFX90A-NEXT: ;;#ASMSTART12054; GFX90A-NEXT: ; use s[8:11]12055; GFX90A-NEXT: ;;#ASMEND12056; GFX90A-NEXT: s_setpc_b64 s[30:31]12057;12058; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_0_4:12059; GFX942: ; %bb.0:12060; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12061; GFX942-NEXT: ;;#ASMSTART12062; GFX942-NEXT: ; def s[0:2]12063; GFX942-NEXT: ;;#ASMEND12064; GFX942-NEXT: ;;#ASMSTART12065; GFX942-NEXT: ; def s[4:6]12066; GFX942-NEXT: ;;#ASMEND12067; GFX942-NEXT: s_mov_b32 s8, s612068; GFX942-NEXT: s_mov_b32 s9, s612069; GFX942-NEXT: s_mov_b32 s10, s012070; GFX942-NEXT: s_mov_b32 s11, s512071; GFX942-NEXT: ;;#ASMSTART12072; GFX942-NEXT: ; use s[8:11]12073; GFX942-NEXT: ;;#ASMEND12074; GFX942-NEXT: s_setpc_b64 s[30:31]12075 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12076 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12077 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 4>12078 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)12079 ret void12080}12081 12082define void @s_shuffle_v4p3_v3p3__5_5_1_4() {12083; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_1_4:12084; GFX900: ; %bb.0:12085; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12086; GFX900-NEXT: ;;#ASMSTART12087; GFX900-NEXT: ; def s[4:6]12088; GFX900-NEXT: ;;#ASMEND12089; GFX900-NEXT: ;;#ASMSTART12090; GFX900-NEXT: ; def s[12:14]12091; GFX900-NEXT: ;;#ASMEND12092; GFX900-NEXT: s_mov_b32 s8, s1412093; GFX900-NEXT: s_mov_b32 s9, s1412094; GFX900-NEXT: s_mov_b32 s10, s512095; GFX900-NEXT: s_mov_b32 s11, s1312096; GFX900-NEXT: ;;#ASMSTART12097; GFX900-NEXT: ; use s[8:11]12098; GFX900-NEXT: ;;#ASMEND12099; GFX900-NEXT: s_setpc_b64 s[30:31]12100;12101; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_1_4:12102; GFX90A: ; %bb.0:12103; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12104; GFX90A-NEXT: ;;#ASMSTART12105; GFX90A-NEXT: ; def s[4:6]12106; GFX90A-NEXT: ;;#ASMEND12107; GFX90A-NEXT: ;;#ASMSTART12108; GFX90A-NEXT: ; def s[12:14]12109; GFX90A-NEXT: ;;#ASMEND12110; GFX90A-NEXT: s_mov_b32 s8, s1412111; GFX90A-NEXT: s_mov_b32 s9, s1412112; GFX90A-NEXT: s_mov_b32 s10, s512113; GFX90A-NEXT: s_mov_b32 s11, s1312114; GFX90A-NEXT: ;;#ASMSTART12115; GFX90A-NEXT: ; use s[8:11]12116; GFX90A-NEXT: ;;#ASMEND12117; GFX90A-NEXT: s_setpc_b64 s[30:31]12118;12119; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_1_4:12120; GFX942: ; %bb.0:12121; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12122; GFX942-NEXT: ;;#ASMSTART12123; GFX942-NEXT: ; def s[0:2]12124; GFX942-NEXT: ;;#ASMEND12125; GFX942-NEXT: ;;#ASMSTART12126; GFX942-NEXT: ; def s[4:6]12127; GFX942-NEXT: ;;#ASMEND12128; GFX942-NEXT: s_mov_b32 s8, s612129; GFX942-NEXT: s_mov_b32 s9, s612130; GFX942-NEXT: s_mov_b32 s10, s112131; GFX942-NEXT: s_mov_b32 s11, s512132; GFX942-NEXT: ;;#ASMSTART12133; GFX942-NEXT: ; use s[8:11]12134; GFX942-NEXT: ;;#ASMEND12135; GFX942-NEXT: s_setpc_b64 s[30:31]12136 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12137 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12138 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 4>12139 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)12140 ret void12141}12142 12143define void @s_shuffle_v4p3_v3p3__5_5_2_4() {12144; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_2_4:12145; GFX900: ; %bb.0:12146; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12147; GFX900-NEXT: ;;#ASMSTART12148; GFX900-NEXT: ; def s[8:10]12149; GFX900-NEXT: ;;#ASMEND12150; GFX900-NEXT: ;;#ASMSTART12151; GFX900-NEXT: ; def s[4:6]12152; GFX900-NEXT: ;;#ASMEND12153; GFX900-NEXT: s_mov_b32 s8, s612154; GFX900-NEXT: s_mov_b32 s9, s612155; GFX900-NEXT: s_mov_b32 s11, s512156; GFX900-NEXT: ;;#ASMSTART12157; GFX900-NEXT: ; use s[8:11]12158; GFX900-NEXT: ;;#ASMEND12159; GFX900-NEXT: s_setpc_b64 s[30:31]12160;12161; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_2_4:12162; GFX90A: ; %bb.0:12163; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12164; GFX90A-NEXT: ;;#ASMSTART12165; GFX90A-NEXT: ; def s[8:10]12166; GFX90A-NEXT: ;;#ASMEND12167; GFX90A-NEXT: ;;#ASMSTART12168; GFX90A-NEXT: ; def s[4:6]12169; GFX90A-NEXT: ;;#ASMEND12170; GFX90A-NEXT: s_mov_b32 s8, s612171; GFX90A-NEXT: s_mov_b32 s9, s612172; GFX90A-NEXT: s_mov_b32 s11, s512173; GFX90A-NEXT: ;;#ASMSTART12174; GFX90A-NEXT: ; use s[8:11]12175; GFX90A-NEXT: ;;#ASMEND12176; GFX90A-NEXT: s_setpc_b64 s[30:31]12177;12178; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_2_4:12179; GFX942: ; %bb.0:12180; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12181; GFX942-NEXT: ;;#ASMSTART12182; GFX942-NEXT: ; def s[8:10]12183; GFX942-NEXT: ;;#ASMEND12184; GFX942-NEXT: ;;#ASMSTART12185; GFX942-NEXT: ; def s[0:2]12186; GFX942-NEXT: ;;#ASMEND12187; GFX942-NEXT: s_mov_b32 s8, s212188; GFX942-NEXT: s_mov_b32 s9, s212189; GFX942-NEXT: s_mov_b32 s11, s112190; GFX942-NEXT: ;;#ASMSTART12191; GFX942-NEXT: ; use s[8:11]12192; GFX942-NEXT: ;;#ASMEND12193; GFX942-NEXT: s_setpc_b64 s[30:31]12194 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12195 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12196 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 4>12197 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)12198 ret void12199}12200 12201define void @s_shuffle_v4p3_v3p3__5_5_3_4() {12202; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_3_4:12203; GFX900: ; %bb.0:12204; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12205; GFX900-NEXT: ;;#ASMSTART12206; GFX900-NEXT: ; def s[4:6]12207; GFX900-NEXT: ;;#ASMEND12208; GFX900-NEXT: s_mov_b32 s8, s612209; GFX900-NEXT: s_mov_b32 s9, s612210; GFX900-NEXT: s_mov_b32 s10, s412211; GFX900-NEXT: s_mov_b32 s11, s512212; GFX900-NEXT: ;;#ASMSTART12213; GFX900-NEXT: ; use s[8:11]12214; GFX900-NEXT: ;;#ASMEND12215; GFX900-NEXT: s_setpc_b64 s[30:31]12216;12217; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_3_4:12218; GFX90A: ; %bb.0:12219; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12220; GFX90A-NEXT: ;;#ASMSTART12221; GFX90A-NEXT: ; def s[4:6]12222; GFX90A-NEXT: ;;#ASMEND12223; GFX90A-NEXT: s_mov_b32 s8, s612224; GFX90A-NEXT: s_mov_b32 s9, s612225; GFX90A-NEXT: s_mov_b32 s10, s412226; GFX90A-NEXT: s_mov_b32 s11, s512227; GFX90A-NEXT: ;;#ASMSTART12228; GFX90A-NEXT: ; use s[8:11]12229; GFX90A-NEXT: ;;#ASMEND12230; GFX90A-NEXT: s_setpc_b64 s[30:31]12231;12232; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_3_4:12233; GFX942: ; %bb.0:12234; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12235; GFX942-NEXT: ;;#ASMSTART12236; GFX942-NEXT: ; def s[0:2]12237; GFX942-NEXT: ;;#ASMEND12238; GFX942-NEXT: s_mov_b32 s8, s212239; GFX942-NEXT: s_mov_b32 s9, s212240; GFX942-NEXT: s_mov_b32 s10, s012241; GFX942-NEXT: s_mov_b32 s11, s112242; GFX942-NEXT: ;;#ASMSTART12243; GFX942-NEXT: ; use s[8:11]12244; GFX942-NEXT: ;;#ASMEND12245; GFX942-NEXT: s_setpc_b64 s[30:31]12246 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12247 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12248 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 4>12249 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)12250 ret void12251}12252 12253define void @s_shuffle_v4p3_v3p3__u_5_5_5() {12254; GFX9-LABEL: s_shuffle_v4p3_v3p3__u_5_5_5:12255; GFX9: ; %bb.0:12256; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12257; GFX9-NEXT: ;;#ASMSTART12258; GFX9-NEXT: ; def s[8:10]12259; GFX9-NEXT: ;;#ASMEND12260; GFX9-NEXT: s_mov_b32 s9, s1012261; GFX9-NEXT: s_mov_b32 s11, s1012262; GFX9-NEXT: ;;#ASMSTART12263; GFX9-NEXT: ; use s[8:11]12264; GFX9-NEXT: ;;#ASMEND12265; GFX9-NEXT: s_setpc_b64 s[30:31]12266 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12267 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12268 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 poison, i32 5, i32 5, i32 5>12269 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)12270 ret void12271}12272 12273define void @s_shuffle_v4p3_v3p3__0_5_5_5() {12274; GFX900-LABEL: s_shuffle_v4p3_v3p3__0_5_5_5:12275; GFX900: ; %bb.0:12276; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12277; GFX900-NEXT: ;;#ASMSTART12278; GFX900-NEXT: ; def s[8:10]12279; GFX900-NEXT: ;;#ASMEND12280; GFX900-NEXT: ;;#ASMSTART12281; GFX900-NEXT: ; def s[4:6]12282; GFX900-NEXT: ;;#ASMEND12283; GFX900-NEXT: s_mov_b32 s9, s612284; GFX900-NEXT: s_mov_b32 s10, s612285; GFX900-NEXT: s_mov_b32 s11, s612286; GFX900-NEXT: ;;#ASMSTART12287; GFX900-NEXT: ; use s[8:11]12288; GFX900-NEXT: ;;#ASMEND12289; GFX900-NEXT: s_setpc_b64 s[30:31]12290;12291; GFX90A-LABEL: s_shuffle_v4p3_v3p3__0_5_5_5:12292; GFX90A: ; %bb.0:12293; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12294; GFX90A-NEXT: ;;#ASMSTART12295; GFX90A-NEXT: ; def s[8:10]12296; GFX90A-NEXT: ;;#ASMEND12297; GFX90A-NEXT: ;;#ASMSTART12298; GFX90A-NEXT: ; def s[4:6]12299; GFX90A-NEXT: ;;#ASMEND12300; GFX90A-NEXT: s_mov_b32 s9, s612301; GFX90A-NEXT: s_mov_b32 s10, s612302; GFX90A-NEXT: s_mov_b32 s11, s612303; GFX90A-NEXT: ;;#ASMSTART12304; GFX90A-NEXT: ; use s[8:11]12305; GFX90A-NEXT: ;;#ASMEND12306; GFX90A-NEXT: s_setpc_b64 s[30:31]12307;12308; GFX942-LABEL: s_shuffle_v4p3_v3p3__0_5_5_5:12309; GFX942: ; %bb.0:12310; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12311; GFX942-NEXT: ;;#ASMSTART12312; GFX942-NEXT: ; def s[8:10]12313; GFX942-NEXT: ;;#ASMEND12314; GFX942-NEXT: ;;#ASMSTART12315; GFX942-NEXT: ; def s[0:2]12316; GFX942-NEXT: ;;#ASMEND12317; GFX942-NEXT: s_mov_b32 s9, s212318; GFX942-NEXT: s_mov_b32 s10, s212319; GFX942-NEXT: s_mov_b32 s11, s212320; GFX942-NEXT: ;;#ASMSTART12321; GFX942-NEXT: ; use s[8:11]12322; GFX942-NEXT: ;;#ASMEND12323; GFX942-NEXT: s_setpc_b64 s[30:31]12324 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12325 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12326 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 0, i32 5, i32 5, i32 5>12327 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)12328 ret void12329}12330 12331define void @s_shuffle_v4p3_v3p3__1_5_5_5() {12332; GFX900-LABEL: s_shuffle_v4p3_v3p3__1_5_5_5:12333; GFX900: ; %bb.0:12334; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12335; GFX900-NEXT: ;;#ASMSTART12336; GFX900-NEXT: ; def s[8:10]12337; GFX900-NEXT: ;;#ASMEND12338; GFX900-NEXT: ;;#ASMSTART12339; GFX900-NEXT: ; def s[4:6]12340; GFX900-NEXT: ;;#ASMEND12341; GFX900-NEXT: s_mov_b32 s8, s512342; GFX900-NEXT: s_mov_b32 s9, s1012343; GFX900-NEXT: s_mov_b32 s11, s1012344; GFX900-NEXT: ;;#ASMSTART12345; GFX900-NEXT: ; use s[8:11]12346; GFX900-NEXT: ;;#ASMEND12347; GFX900-NEXT: s_setpc_b64 s[30:31]12348;12349; GFX90A-LABEL: s_shuffle_v4p3_v3p3__1_5_5_5:12350; GFX90A: ; %bb.0:12351; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12352; GFX90A-NEXT: ;;#ASMSTART12353; GFX90A-NEXT: ; def s[8:10]12354; GFX90A-NEXT: ;;#ASMEND12355; GFX90A-NEXT: ;;#ASMSTART12356; GFX90A-NEXT: ; def s[4:6]12357; GFX90A-NEXT: ;;#ASMEND12358; GFX90A-NEXT: s_mov_b32 s8, s512359; GFX90A-NEXT: s_mov_b32 s9, s1012360; GFX90A-NEXT: s_mov_b32 s11, s1012361; GFX90A-NEXT: ;;#ASMSTART12362; GFX90A-NEXT: ; use s[8:11]12363; GFX90A-NEXT: ;;#ASMEND12364; GFX90A-NEXT: s_setpc_b64 s[30:31]12365;12366; GFX942-LABEL: s_shuffle_v4p3_v3p3__1_5_5_5:12367; GFX942: ; %bb.0:12368; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12369; GFX942-NEXT: ;;#ASMSTART12370; GFX942-NEXT: ; def s[8:10]12371; GFX942-NEXT: ;;#ASMEND12372; GFX942-NEXT: ;;#ASMSTART12373; GFX942-NEXT: ; def s[0:2]12374; GFX942-NEXT: ;;#ASMEND12375; GFX942-NEXT: s_mov_b32 s8, s112376; GFX942-NEXT: s_mov_b32 s9, s1012377; GFX942-NEXT: s_mov_b32 s11, s1012378; GFX942-NEXT: ;;#ASMSTART12379; GFX942-NEXT: ; use s[8:11]12380; GFX942-NEXT: ;;#ASMEND12381; GFX942-NEXT: s_setpc_b64 s[30:31]12382 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12383 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12384 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 1, i32 5, i32 5, i32 5>12385 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)12386 ret void12387}12388 12389define void @s_shuffle_v4p3_v3p3__2_5_5_5() {12390; GFX900-LABEL: s_shuffle_v4p3_v3p3__2_5_5_5:12391; GFX900: ; %bb.0:12392; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12393; GFX900-NEXT: ;;#ASMSTART12394; GFX900-NEXT: ; def s[8:10]12395; GFX900-NEXT: ;;#ASMEND12396; GFX900-NEXT: ;;#ASMSTART12397; GFX900-NEXT: ; def s[4:6]12398; GFX900-NEXT: ;;#ASMEND12399; GFX900-NEXT: s_mov_b32 s8, s612400; GFX900-NEXT: s_mov_b32 s9, s1012401; GFX900-NEXT: s_mov_b32 s11, s1012402; GFX900-NEXT: ;;#ASMSTART12403; GFX900-NEXT: ; use s[8:11]12404; GFX900-NEXT: ;;#ASMEND12405; GFX900-NEXT: s_setpc_b64 s[30:31]12406;12407; GFX90A-LABEL: s_shuffle_v4p3_v3p3__2_5_5_5:12408; GFX90A: ; %bb.0:12409; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12410; GFX90A-NEXT: ;;#ASMSTART12411; GFX90A-NEXT: ; def s[8:10]12412; GFX90A-NEXT: ;;#ASMEND12413; GFX90A-NEXT: ;;#ASMSTART12414; GFX90A-NEXT: ; def s[4:6]12415; GFX90A-NEXT: ;;#ASMEND12416; GFX90A-NEXT: s_mov_b32 s8, s612417; GFX90A-NEXT: s_mov_b32 s9, s1012418; GFX90A-NEXT: s_mov_b32 s11, s1012419; GFX90A-NEXT: ;;#ASMSTART12420; GFX90A-NEXT: ; use s[8:11]12421; GFX90A-NEXT: ;;#ASMEND12422; GFX90A-NEXT: s_setpc_b64 s[30:31]12423;12424; GFX942-LABEL: s_shuffle_v4p3_v3p3__2_5_5_5:12425; GFX942: ; %bb.0:12426; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12427; GFX942-NEXT: ;;#ASMSTART12428; GFX942-NEXT: ; def s[8:10]12429; GFX942-NEXT: ;;#ASMEND12430; GFX942-NEXT: ;;#ASMSTART12431; GFX942-NEXT: ; def s[0:2]12432; GFX942-NEXT: ;;#ASMEND12433; GFX942-NEXT: s_mov_b32 s8, s212434; GFX942-NEXT: s_mov_b32 s9, s1012435; GFX942-NEXT: s_mov_b32 s11, s1012436; GFX942-NEXT: ;;#ASMSTART12437; GFX942-NEXT: ; use s[8:11]12438; GFX942-NEXT: ;;#ASMEND12439; GFX942-NEXT: s_setpc_b64 s[30:31]12440 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12441 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12442 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 2, i32 5, i32 5, i32 5>12443 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)12444 ret void12445}12446 12447define void @s_shuffle_v4p3_v3p3__3_5_5_5() {12448; GFX9-LABEL: s_shuffle_v4p3_v3p3__3_5_5_5:12449; GFX9: ; %bb.0:12450; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12451; GFX9-NEXT: ;;#ASMSTART12452; GFX9-NEXT: ; def s[8:10]12453; GFX9-NEXT: ;;#ASMEND12454; GFX9-NEXT: s_mov_b32 s9, s1012455; GFX9-NEXT: s_mov_b32 s11, s1012456; GFX9-NEXT: ;;#ASMSTART12457; GFX9-NEXT: ; use s[8:11]12458; GFX9-NEXT: ;;#ASMEND12459; GFX9-NEXT: s_setpc_b64 s[30:31]12460 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12461 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12462 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 3, i32 5, i32 5, i32 5>12463 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)12464 ret void12465}12466 12467define void @s_shuffle_v4p3_v3p3__4_5_5_5() {12468; GFX9-LABEL: s_shuffle_v4p3_v3p3__4_5_5_5:12469; GFX9: ; %bb.0:12470; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12471; GFX9-NEXT: ;;#ASMSTART12472; GFX9-NEXT: ; def s[8:10]12473; GFX9-NEXT: ;;#ASMEND12474; GFX9-NEXT: s_mov_b32 s8, s912475; GFX9-NEXT: s_mov_b32 s9, s1012476; GFX9-NEXT: s_mov_b32 s11, s1012477; GFX9-NEXT: ;;#ASMSTART12478; GFX9-NEXT: ; use s[8:11]12479; GFX9-NEXT: ;;#ASMEND12480; GFX9-NEXT: s_setpc_b64 s[30:31]12481 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12482 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12483 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 4, i32 5, i32 5, i32 5>12484 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)12485 ret void12486}12487 12488define void @s_shuffle_v4p3_v3p3__5_u_5_5() {12489; GFX9-LABEL: s_shuffle_v4p3_v3p3__5_u_5_5:12490; GFX9: ; %bb.0:12491; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12492; GFX9-NEXT: ;;#ASMSTART12493; GFX9-NEXT: ; def s[8:10]12494; GFX9-NEXT: ;;#ASMEND12495; GFX9-NEXT: s_mov_b32 s8, s1012496; GFX9-NEXT: s_mov_b32 s11, s1012497; GFX9-NEXT: ;;#ASMSTART12498; GFX9-NEXT: ; use s[8:11]12499; GFX9-NEXT: ;;#ASMEND12500; GFX9-NEXT: s_setpc_b64 s[30:31]12501 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12502 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12503 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 poison, i32 5, i32 5>12504 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)12505 ret void12506}12507 12508define void @s_shuffle_v4p3_v3p3__5_0_5_5() {12509; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_0_5_5:12510; GFX900: ; %bb.0:12511; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12512; GFX900-NEXT: ;;#ASMSTART12513; GFX900-NEXT: ; def s[8:10]12514; GFX900-NEXT: ;;#ASMEND12515; GFX900-NEXT: ;;#ASMSTART12516; GFX900-NEXT: ; def s[4:6]12517; GFX900-NEXT: ;;#ASMEND12518; GFX900-NEXT: s_mov_b32 s8, s1012519; GFX900-NEXT: s_mov_b32 s9, s412520; GFX900-NEXT: s_mov_b32 s11, s1012521; GFX900-NEXT: ;;#ASMSTART12522; GFX900-NEXT: ; use s[8:11]12523; GFX900-NEXT: ;;#ASMEND12524; GFX900-NEXT: s_setpc_b64 s[30:31]12525;12526; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_0_5_5:12527; GFX90A: ; %bb.0:12528; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12529; GFX90A-NEXT: ;;#ASMSTART12530; GFX90A-NEXT: ; def s[8:10]12531; GFX90A-NEXT: ;;#ASMEND12532; GFX90A-NEXT: ;;#ASMSTART12533; GFX90A-NEXT: ; def s[4:6]12534; GFX90A-NEXT: ;;#ASMEND12535; GFX90A-NEXT: s_mov_b32 s8, s1012536; GFX90A-NEXT: s_mov_b32 s9, s412537; GFX90A-NEXT: s_mov_b32 s11, s1012538; GFX90A-NEXT: ;;#ASMSTART12539; GFX90A-NEXT: ; use s[8:11]12540; GFX90A-NEXT: ;;#ASMEND12541; GFX90A-NEXT: s_setpc_b64 s[30:31]12542;12543; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_0_5_5:12544; GFX942: ; %bb.0:12545; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12546; GFX942-NEXT: ;;#ASMSTART12547; GFX942-NEXT: ; def s[8:10]12548; GFX942-NEXT: ;;#ASMEND12549; GFX942-NEXT: ;;#ASMSTART12550; GFX942-NEXT: ; def s[0:2]12551; GFX942-NEXT: ;;#ASMEND12552; GFX942-NEXT: s_mov_b32 s8, s1012553; GFX942-NEXT: s_mov_b32 s9, s012554; GFX942-NEXT: s_mov_b32 s11, s1012555; GFX942-NEXT: ;;#ASMSTART12556; GFX942-NEXT: ; use s[8:11]12557; GFX942-NEXT: ;;#ASMEND12558; GFX942-NEXT: s_setpc_b64 s[30:31]12559 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12560 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12561 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 0, i32 5, i32 5>12562 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)12563 ret void12564}12565 12566define void @s_shuffle_v4p3_v3p3__5_1_5_5() {12567; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_1_5_5:12568; GFX900: ; %bb.0:12569; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12570; GFX900-NEXT: ;;#ASMSTART12571; GFX900-NEXT: ; def s[8:10]12572; GFX900-NEXT: ;;#ASMEND12573; GFX900-NEXT: ;;#ASMSTART12574; GFX900-NEXT: ; def s[4:6]12575; GFX900-NEXT: ;;#ASMEND12576; GFX900-NEXT: s_mov_b32 s8, s612577; GFX900-NEXT: s_mov_b32 s10, s612578; GFX900-NEXT: s_mov_b32 s11, s612579; GFX900-NEXT: ;;#ASMSTART12580; GFX900-NEXT: ; use s[8:11]12581; GFX900-NEXT: ;;#ASMEND12582; GFX900-NEXT: s_setpc_b64 s[30:31]12583;12584; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_1_5_5:12585; GFX90A: ; %bb.0:12586; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12587; GFX90A-NEXT: ;;#ASMSTART12588; GFX90A-NEXT: ; def s[8:10]12589; GFX90A-NEXT: ;;#ASMEND12590; GFX90A-NEXT: ;;#ASMSTART12591; GFX90A-NEXT: ; def s[4:6]12592; GFX90A-NEXT: ;;#ASMEND12593; GFX90A-NEXT: s_mov_b32 s8, s612594; GFX90A-NEXT: s_mov_b32 s10, s612595; GFX90A-NEXT: s_mov_b32 s11, s612596; GFX90A-NEXT: ;;#ASMSTART12597; GFX90A-NEXT: ; use s[8:11]12598; GFX90A-NEXT: ;;#ASMEND12599; GFX90A-NEXT: s_setpc_b64 s[30:31]12600;12601; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_1_5_5:12602; GFX942: ; %bb.0:12603; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12604; GFX942-NEXT: ;;#ASMSTART12605; GFX942-NEXT: ; def s[8:10]12606; GFX942-NEXT: ;;#ASMEND12607; GFX942-NEXT: ;;#ASMSTART12608; GFX942-NEXT: ; def s[0:2]12609; GFX942-NEXT: ;;#ASMEND12610; GFX942-NEXT: s_mov_b32 s8, s212611; GFX942-NEXT: s_mov_b32 s10, s212612; GFX942-NEXT: s_mov_b32 s11, s212613; GFX942-NEXT: ;;#ASMSTART12614; GFX942-NEXT: ; use s[8:11]12615; GFX942-NEXT: ;;#ASMEND12616; GFX942-NEXT: s_setpc_b64 s[30:31]12617 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12618 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12619 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 1, i32 5, i32 5>12620 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)12621 ret void12622}12623 12624define void @s_shuffle_v4p3_v3p3__5_2_5_5() {12625; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_2_5_5:12626; GFX900: ; %bb.0:12627; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12628; GFX900-NEXT: ;;#ASMSTART12629; GFX900-NEXT: ; def s[8:10]12630; GFX900-NEXT: ;;#ASMEND12631; GFX900-NEXT: ;;#ASMSTART12632; GFX900-NEXT: ; def s[4:6]12633; GFX900-NEXT: ;;#ASMEND12634; GFX900-NEXT: s_mov_b32 s8, s1012635; GFX900-NEXT: s_mov_b32 s9, s612636; GFX900-NEXT: s_mov_b32 s11, s1012637; GFX900-NEXT: ;;#ASMSTART12638; GFX900-NEXT: ; use s[8:11]12639; GFX900-NEXT: ;;#ASMEND12640; GFX900-NEXT: s_setpc_b64 s[30:31]12641;12642; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_2_5_5:12643; GFX90A: ; %bb.0:12644; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12645; GFX90A-NEXT: ;;#ASMSTART12646; GFX90A-NEXT: ; def s[8:10]12647; GFX90A-NEXT: ;;#ASMEND12648; GFX90A-NEXT: ;;#ASMSTART12649; GFX90A-NEXT: ; def s[4:6]12650; GFX90A-NEXT: ;;#ASMEND12651; GFX90A-NEXT: s_mov_b32 s8, s1012652; GFX90A-NEXT: s_mov_b32 s9, s612653; GFX90A-NEXT: s_mov_b32 s11, s1012654; GFX90A-NEXT: ;;#ASMSTART12655; GFX90A-NEXT: ; use s[8:11]12656; GFX90A-NEXT: ;;#ASMEND12657; GFX90A-NEXT: s_setpc_b64 s[30:31]12658;12659; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_2_5_5:12660; GFX942: ; %bb.0:12661; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12662; GFX942-NEXT: ;;#ASMSTART12663; GFX942-NEXT: ; def s[8:10]12664; GFX942-NEXT: ;;#ASMEND12665; GFX942-NEXT: ;;#ASMSTART12666; GFX942-NEXT: ; def s[0:2]12667; GFX942-NEXT: ;;#ASMEND12668; GFX942-NEXT: s_mov_b32 s8, s1012669; GFX942-NEXT: s_mov_b32 s9, s212670; GFX942-NEXT: s_mov_b32 s11, s1012671; GFX942-NEXT: ;;#ASMSTART12672; GFX942-NEXT: ; use s[8:11]12673; GFX942-NEXT: ;;#ASMEND12674; GFX942-NEXT: s_setpc_b64 s[30:31]12675 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12676 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12677 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 2, i32 5, i32 5>12678 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)12679 ret void12680}12681 12682define void @s_shuffle_v4p3_v3p3__5_3_5_5() {12683; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_3_5_5:12684; GFX900: ; %bb.0:12685; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12686; GFX900-NEXT: ;;#ASMSTART12687; GFX900-NEXT: ; def s[4:6]12688; GFX900-NEXT: ;;#ASMEND12689; GFX900-NEXT: s_mov_b32 s8, s612690; GFX900-NEXT: s_mov_b32 s9, s412691; GFX900-NEXT: s_mov_b32 s10, s612692; GFX900-NEXT: s_mov_b32 s11, s612693; GFX900-NEXT: ;;#ASMSTART12694; GFX900-NEXT: ; use s[8:11]12695; GFX900-NEXT: ;;#ASMEND12696; GFX900-NEXT: s_setpc_b64 s[30:31]12697;12698; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_3_5_5:12699; GFX90A: ; %bb.0:12700; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12701; GFX90A-NEXT: ;;#ASMSTART12702; GFX90A-NEXT: ; def s[4:6]12703; GFX90A-NEXT: ;;#ASMEND12704; GFX90A-NEXT: s_mov_b32 s8, s612705; GFX90A-NEXT: s_mov_b32 s9, s412706; GFX90A-NEXT: s_mov_b32 s10, s612707; GFX90A-NEXT: s_mov_b32 s11, s612708; GFX90A-NEXT: ;;#ASMSTART12709; GFX90A-NEXT: ; use s[8:11]12710; GFX90A-NEXT: ;;#ASMEND12711; GFX90A-NEXT: s_setpc_b64 s[30:31]12712;12713; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_3_5_5:12714; GFX942: ; %bb.0:12715; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12716; GFX942-NEXT: ;;#ASMSTART12717; GFX942-NEXT: ; def s[0:2]12718; GFX942-NEXT: ;;#ASMEND12719; GFX942-NEXT: s_mov_b32 s8, s212720; GFX942-NEXT: s_mov_b32 s9, s012721; GFX942-NEXT: s_mov_b32 s10, s212722; GFX942-NEXT: s_mov_b32 s11, s212723; GFX942-NEXT: ;;#ASMSTART12724; GFX942-NEXT: ; use s[8:11]12725; GFX942-NEXT: ;;#ASMEND12726; GFX942-NEXT: s_setpc_b64 s[30:31]12727 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12728 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12729 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 3, i32 5, i32 5>12730 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)12731 ret void12732}12733 12734define void @s_shuffle_v4p3_v3p3__5_4_5_5() {12735; GFX9-LABEL: s_shuffle_v4p3_v3p3__5_4_5_5:12736; GFX9: ; %bb.0:12737; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12738; GFX9-NEXT: ;;#ASMSTART12739; GFX9-NEXT: ; def s[8:10]12740; GFX9-NEXT: ;;#ASMEND12741; GFX9-NEXT: s_mov_b32 s8, s1012742; GFX9-NEXT: s_mov_b32 s11, s1012743; GFX9-NEXT: ;;#ASMSTART12744; GFX9-NEXT: ; use s[8:11]12745; GFX9-NEXT: ;;#ASMEND12746; GFX9-NEXT: s_setpc_b64 s[30:31]12747 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12748 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12749 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 4, i32 5, i32 5>12750 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)12751 ret void12752}12753 12754define void @s_shuffle_v4p3_v3p3__5_5_u_5() {12755; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_u_5:12756; GFX900: ; %bb.0:12757; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12758; GFX900-NEXT: ;;#ASMSTART12759; GFX900-NEXT: ; def s[4:6]12760; GFX900-NEXT: ;;#ASMEND12761; GFX900-NEXT: s_mov_b32 s8, s612762; GFX900-NEXT: s_mov_b32 s9, s612763; GFX900-NEXT: s_mov_b32 s11, s612764; GFX900-NEXT: ;;#ASMSTART12765; GFX900-NEXT: ; use s[8:11]12766; GFX900-NEXT: ;;#ASMEND12767; GFX900-NEXT: s_setpc_b64 s[30:31]12768;12769; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_u_5:12770; GFX90A: ; %bb.0:12771; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12772; GFX90A-NEXT: ;;#ASMSTART12773; GFX90A-NEXT: ; def s[4:6]12774; GFX90A-NEXT: ;;#ASMEND12775; GFX90A-NEXT: s_mov_b32 s8, s612776; GFX90A-NEXT: s_mov_b32 s9, s612777; GFX90A-NEXT: s_mov_b32 s11, s612778; GFX90A-NEXT: ;;#ASMSTART12779; GFX90A-NEXT: ; use s[8:11]12780; GFX90A-NEXT: ;;#ASMEND12781; GFX90A-NEXT: s_setpc_b64 s[30:31]12782;12783; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_u_5:12784; GFX942: ; %bb.0:12785; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12786; GFX942-NEXT: ;;#ASMSTART12787; GFX942-NEXT: ; def s[0:2]12788; GFX942-NEXT: ;;#ASMEND12789; GFX942-NEXT: s_mov_b32 s8, s212790; GFX942-NEXT: s_mov_b32 s9, s212791; GFX942-NEXT: s_mov_b32 s11, s212792; GFX942-NEXT: ;;#ASMSTART12793; GFX942-NEXT: ; use s[8:11]12794; GFX942-NEXT: ;;#ASMEND12795; GFX942-NEXT: s_setpc_b64 s[30:31]12796 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12797 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12798 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 poison, i32 5>12799 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)12800 ret void12801}12802 12803define void @s_shuffle_v4p3_v3p3__5_5_0_5() {12804; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_0_5:12805; GFX900: ; %bb.0:12806; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12807; GFX900-NEXT: ;;#ASMSTART12808; GFX900-NEXT: ; def s[4:6]12809; GFX900-NEXT: ;;#ASMEND12810; GFX900-NEXT: ;;#ASMSTART12811; GFX900-NEXT: ; def s[12:14]12812; GFX900-NEXT: ;;#ASMEND12813; GFX900-NEXT: s_mov_b32 s8, s1412814; GFX900-NEXT: s_mov_b32 s9, s1412815; GFX900-NEXT: s_mov_b32 s10, s412816; GFX900-NEXT: s_mov_b32 s11, s1412817; GFX900-NEXT: ;;#ASMSTART12818; GFX900-NEXT: ; use s[8:11]12819; GFX900-NEXT: ;;#ASMEND12820; GFX900-NEXT: s_setpc_b64 s[30:31]12821;12822; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_0_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:6]12827; GFX90A-NEXT: ;;#ASMEND12828; GFX90A-NEXT: ;;#ASMSTART12829; GFX90A-NEXT: ; def s[12:14]12830; GFX90A-NEXT: ;;#ASMEND12831; GFX90A-NEXT: s_mov_b32 s8, s1412832; GFX90A-NEXT: s_mov_b32 s9, s1412833; GFX90A-NEXT: s_mov_b32 s10, s412834; GFX90A-NEXT: s_mov_b32 s11, s1412835; GFX90A-NEXT: ;;#ASMSTART12836; GFX90A-NEXT: ; use s[8:11]12837; GFX90A-NEXT: ;;#ASMEND12838; GFX90A-NEXT: s_setpc_b64 s[30:31]12839;12840; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_0_5:12841; GFX942: ; %bb.0:12842; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12843; GFX942-NEXT: ;;#ASMSTART12844; GFX942-NEXT: ; def s[0:2]12845; GFX942-NEXT: ;;#ASMEND12846; GFX942-NEXT: ;;#ASMSTART12847; GFX942-NEXT: ; def s[4:6]12848; GFX942-NEXT: ;;#ASMEND12849; GFX942-NEXT: s_mov_b32 s8, s612850; GFX942-NEXT: s_mov_b32 s9, s612851; GFX942-NEXT: s_mov_b32 s10, s012852; GFX942-NEXT: s_mov_b32 s11, s612853; GFX942-NEXT: ;;#ASMSTART12854; GFX942-NEXT: ; use s[8:11]12855; GFX942-NEXT: ;;#ASMEND12856; GFX942-NEXT: s_setpc_b64 s[30:31]12857 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12858 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12859 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 0, i32 5>12860 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)12861 ret void12862}12863 12864define void @s_shuffle_v4p3_v3p3__5_5_1_5() {12865; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_1_5:12866; GFX900: ; %bb.0:12867; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12868; GFX900-NEXT: ;;#ASMSTART12869; GFX900-NEXT: ; def s[4:6]12870; GFX900-NEXT: ;;#ASMEND12871; GFX900-NEXT: ;;#ASMSTART12872; GFX900-NEXT: ; def s[12:14]12873; GFX900-NEXT: ;;#ASMEND12874; GFX900-NEXT: s_mov_b32 s8, s1412875; GFX900-NEXT: s_mov_b32 s9, s1412876; GFX900-NEXT: s_mov_b32 s10, s512877; GFX900-NEXT: s_mov_b32 s11, s1412878; GFX900-NEXT: ;;#ASMSTART12879; GFX900-NEXT: ; use s[8:11]12880; GFX900-NEXT: ;;#ASMEND12881; GFX900-NEXT: s_setpc_b64 s[30:31]12882;12883; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_1_5:12884; GFX90A: ; %bb.0:12885; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12886; GFX90A-NEXT: ;;#ASMSTART12887; GFX90A-NEXT: ; def s[4:6]12888; GFX90A-NEXT: ;;#ASMEND12889; GFX90A-NEXT: ;;#ASMSTART12890; GFX90A-NEXT: ; def s[12:14]12891; GFX90A-NEXT: ;;#ASMEND12892; GFX90A-NEXT: s_mov_b32 s8, s1412893; GFX90A-NEXT: s_mov_b32 s9, s1412894; GFX90A-NEXT: s_mov_b32 s10, s512895; GFX90A-NEXT: s_mov_b32 s11, s1412896; GFX90A-NEXT: ;;#ASMSTART12897; GFX90A-NEXT: ; use s[8:11]12898; GFX90A-NEXT: ;;#ASMEND12899; GFX90A-NEXT: s_setpc_b64 s[30:31]12900;12901; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_1_5:12902; GFX942: ; %bb.0:12903; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12904; GFX942-NEXT: ;;#ASMSTART12905; GFX942-NEXT: ; def s[0:2]12906; GFX942-NEXT: ;;#ASMEND12907; GFX942-NEXT: ;;#ASMSTART12908; GFX942-NEXT: ; def s[4:6]12909; GFX942-NEXT: ;;#ASMEND12910; GFX942-NEXT: s_mov_b32 s8, s612911; GFX942-NEXT: s_mov_b32 s9, s612912; GFX942-NEXT: s_mov_b32 s10, s112913; GFX942-NEXT: s_mov_b32 s11, s612914; GFX942-NEXT: ;;#ASMSTART12915; GFX942-NEXT: ; use s[8:11]12916; GFX942-NEXT: ;;#ASMEND12917; GFX942-NEXT: s_setpc_b64 s[30:31]12918 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12919 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12920 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 1, i32 5>12921 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)12922 ret void12923}12924 12925define void @s_shuffle_v4p3_v3p3__5_5_2_5() {12926; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_2_5:12927; GFX900: ; %bb.0:12928; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12929; GFX900-NEXT: ;;#ASMSTART12930; GFX900-NEXT: ; def s[8:10]12931; GFX900-NEXT: ;;#ASMEND12932; GFX900-NEXT: ;;#ASMSTART12933; GFX900-NEXT: ; def s[4:6]12934; GFX900-NEXT: ;;#ASMEND12935; GFX900-NEXT: s_mov_b32 s8, s612936; GFX900-NEXT: s_mov_b32 s9, s612937; GFX900-NEXT: s_mov_b32 s11, s612938; GFX900-NEXT: ;;#ASMSTART12939; GFX900-NEXT: ; use s[8:11]12940; GFX900-NEXT: ;;#ASMEND12941; GFX900-NEXT: s_setpc_b64 s[30:31]12942;12943; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_2_5:12944; GFX90A: ; %bb.0:12945; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12946; GFX90A-NEXT: ;;#ASMSTART12947; GFX90A-NEXT: ; def s[8:10]12948; GFX90A-NEXT: ;;#ASMEND12949; GFX90A-NEXT: ;;#ASMSTART12950; GFX90A-NEXT: ; def s[4:6]12951; GFX90A-NEXT: ;;#ASMEND12952; GFX90A-NEXT: s_mov_b32 s8, s612953; GFX90A-NEXT: s_mov_b32 s9, s612954; GFX90A-NEXT: s_mov_b32 s11, s612955; GFX90A-NEXT: ;;#ASMSTART12956; GFX90A-NEXT: ; use s[8:11]12957; GFX90A-NEXT: ;;#ASMEND12958; GFX90A-NEXT: s_setpc_b64 s[30:31]12959;12960; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_2_5:12961; GFX942: ; %bb.0:12962; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12963; GFX942-NEXT: ;;#ASMSTART12964; GFX942-NEXT: ; def s[8:10]12965; GFX942-NEXT: ;;#ASMEND12966; GFX942-NEXT: ;;#ASMSTART12967; GFX942-NEXT: ; def s[0:2]12968; GFX942-NEXT: ;;#ASMEND12969; GFX942-NEXT: s_mov_b32 s8, s212970; GFX942-NEXT: s_mov_b32 s9, s212971; GFX942-NEXT: s_mov_b32 s11, s212972; GFX942-NEXT: ;;#ASMSTART12973; GFX942-NEXT: ; use s[8:11]12974; GFX942-NEXT: ;;#ASMEND12975; GFX942-NEXT: s_setpc_b64 s[30:31]12976 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12977 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()12978 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 2, i32 5>12979 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)12980 ret void12981}12982 12983define void @s_shuffle_v4p3_v3p3__5_5_3_5() {12984; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_3_5:12985; GFX900: ; %bb.0:12986; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)12987; GFX900-NEXT: ;;#ASMSTART12988; GFX900-NEXT: ; def s[4:6]12989; GFX900-NEXT: ;;#ASMEND12990; GFX900-NEXT: s_mov_b32 s8, s612991; GFX900-NEXT: s_mov_b32 s9, s612992; GFX900-NEXT: s_mov_b32 s10, s412993; GFX900-NEXT: s_mov_b32 s11, s612994; GFX900-NEXT: ;;#ASMSTART12995; GFX900-NEXT: ; use s[8:11]12996; GFX900-NEXT: ;;#ASMEND12997; GFX900-NEXT: s_setpc_b64 s[30:31]12998;12999; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_3_5:13000; GFX90A: ; %bb.0:13001; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13002; GFX90A-NEXT: ;;#ASMSTART13003; GFX90A-NEXT: ; def s[4:6]13004; GFX90A-NEXT: ;;#ASMEND13005; GFX90A-NEXT: s_mov_b32 s8, s613006; GFX90A-NEXT: s_mov_b32 s9, s613007; GFX90A-NEXT: s_mov_b32 s10, s413008; GFX90A-NEXT: s_mov_b32 s11, s613009; GFX90A-NEXT: ;;#ASMSTART13010; GFX90A-NEXT: ; use s[8:11]13011; GFX90A-NEXT: ;;#ASMEND13012; GFX90A-NEXT: s_setpc_b64 s[30:31]13013;13014; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_3_5:13015; GFX942: ; %bb.0:13016; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13017; GFX942-NEXT: ;;#ASMSTART13018; GFX942-NEXT: ; def s[0:2]13019; GFX942-NEXT: ;;#ASMEND13020; GFX942-NEXT: s_mov_b32 s8, s213021; GFX942-NEXT: s_mov_b32 s9, s213022; GFX942-NEXT: s_mov_b32 s10, s013023; GFX942-NEXT: s_mov_b32 s11, s213024; GFX942-NEXT: ;;#ASMSTART13025; GFX942-NEXT: ; use s[8:11]13026; GFX942-NEXT: ;;#ASMEND13027; GFX942-NEXT: s_setpc_b64 s[30:31]13028 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()13029 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()13030 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 3, i32 5>13031 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)13032 ret void13033}13034 13035define void @s_shuffle_v4p3_v3p3__5_5_4_5() {13036; GFX900-LABEL: s_shuffle_v4p3_v3p3__5_5_4_5:13037; GFX900: ; %bb.0:13038; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13039; GFX900-NEXT: ;;#ASMSTART13040; GFX900-NEXT: ; def s[4:6]13041; GFX900-NEXT: ;;#ASMEND13042; GFX900-NEXT: s_mov_b32 s8, s613043; GFX900-NEXT: s_mov_b32 s9, s613044; GFX900-NEXT: s_mov_b32 s10, s513045; GFX900-NEXT: s_mov_b32 s11, s613046; GFX900-NEXT: ;;#ASMSTART13047; GFX900-NEXT: ; use s[8:11]13048; GFX900-NEXT: ;;#ASMEND13049; GFX900-NEXT: s_setpc_b64 s[30:31]13050;13051; GFX90A-LABEL: s_shuffle_v4p3_v3p3__5_5_4_5:13052; GFX90A: ; %bb.0:13053; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13054; GFX90A-NEXT: ;;#ASMSTART13055; GFX90A-NEXT: ; def s[4:6]13056; GFX90A-NEXT: ;;#ASMEND13057; GFX90A-NEXT: s_mov_b32 s8, s613058; GFX90A-NEXT: s_mov_b32 s9, s613059; GFX90A-NEXT: s_mov_b32 s10, s513060; GFX90A-NEXT: s_mov_b32 s11, s613061; GFX90A-NEXT: ;;#ASMSTART13062; GFX90A-NEXT: ; use s[8:11]13063; GFX90A-NEXT: ;;#ASMEND13064; GFX90A-NEXT: s_setpc_b64 s[30:31]13065;13066; GFX942-LABEL: s_shuffle_v4p3_v3p3__5_5_4_5:13067; GFX942: ; %bb.0:13068; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)13069; GFX942-NEXT: ;;#ASMSTART13070; GFX942-NEXT: ; def s[0:2]13071; GFX942-NEXT: ;;#ASMEND13072; GFX942-NEXT: s_mov_b32 s8, s213073; GFX942-NEXT: s_mov_b32 s9, s213074; GFX942-NEXT: s_mov_b32 s10, s113075; GFX942-NEXT: s_mov_b32 s11, s213076; GFX942-NEXT: ;;#ASMSTART13077; GFX942-NEXT: ; use s[8:11]13078; GFX942-NEXT: ;;#ASMEND13079; GFX942-NEXT: s_setpc_b64 s[30:31]13080 %vec0 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()13081 %vec1 = call <3 x ptr addrspace(3)> asm "; def $0", "=s"()13082 %shuf = shufflevector <3 x ptr addrspace(3)> %vec0, <3 x ptr addrspace(3)> %vec1, <4 x i32> <i32 5, i32 5, i32 4, i32 5>13083 call void asm sideeffect "; use $0", "{s[8:11]}"(<4 x ptr addrspace(3)> %shuf)13084 ret void13085}13086;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:13087; GFX90APLUS: {{.*}}13088