7703 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_v3p0_v3p0__u_u_u(ptr addrspace(1) inreg %ptr) {8; GFX9-LABEL: v_shuffle_v3p0_v3p0__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> asm "; def $0", "=v"()13 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> poison14 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 3215 ret void16}17 18define void @v_shuffle_v3p0_v3p0__0_u_u(ptr addrspace(1) inreg %ptr) {19; GFX900-LABEL: v_shuffle_v3p0_v3p0__0_u_u:20; GFX900: ; %bb.0:21; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22; GFX900-NEXT: v_mov_b32_e32 v6, 023; GFX900-NEXT: ;;#ASMSTART24; GFX900-NEXT: ; def v[0:5]25; GFX900-NEXT: ;;#ASMEND26; GFX900-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17] offset:1627; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]28; GFX900-NEXT: s_waitcnt vmcnt(0)29; GFX900-NEXT: s_setpc_b64 s[30:31]30;31; GFX90A-LABEL: v_shuffle_v3p0_v3p0__0_u_u:32; GFX90A: ; %bb.0:33; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)34; GFX90A-NEXT: v_mov_b32_e32 v6, 035; GFX90A-NEXT: ;;#ASMSTART36; GFX90A-NEXT: ; def v[0:5]37; GFX90A-NEXT: ;;#ASMEND38; GFX90A-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17] offset:1639; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]40; GFX90A-NEXT: s_waitcnt vmcnt(0)41; GFX90A-NEXT: s_setpc_b64 s[30:31]42;43; GFX942-LABEL: v_shuffle_v3p0_v3p0__0_u_u:44; GFX942: ; %bb.0:45; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)46; GFX942-NEXT: v_mov_b32_e32 v6, 047; GFX942-NEXT: ;;#ASMSTART48; GFX942-NEXT: ; def v[0:5]49; GFX942-NEXT: ;;#ASMEND50; GFX942-NEXT: global_store_dwordx2 v6, v[4:5], s[0:1] offset:1651; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]52; GFX942-NEXT: s_waitcnt vmcnt(0)53; GFX942-NEXT: s_setpc_b64 s[30:31]54 %vec0 = call <3 x ptr> asm "; def $0", "=v"()55 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 0, i32 poison, i32 poison>56 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 3257 ret void58}59 60define void @v_shuffle_v3p0_v3p0__1_u_u(ptr addrspace(1) inreg %ptr) {61; GFX900-LABEL: v_shuffle_v3p0_v3p0__1_u_u:62; GFX900: ; %bb.0:63; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)64; GFX900-NEXT: v_mov_b32_e32 v6, 065; GFX900-NEXT: ;;#ASMSTART66; GFX900-NEXT: ; def v[0:5]67; GFX900-NEXT: ;;#ASMEND68; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]69; GFX900-NEXT: s_waitcnt vmcnt(0)70; GFX900-NEXT: s_setpc_b64 s[30:31]71;72; GFX90A-LABEL: v_shuffle_v3p0_v3p0__1_u_u:73; GFX90A: ; %bb.0:74; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)75; GFX90A-NEXT: v_mov_b32_e32 v6, 076; GFX90A-NEXT: ;;#ASMSTART77; GFX90A-NEXT: ; def v[0:5]78; GFX90A-NEXT: ;;#ASMEND79; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]80; GFX90A-NEXT: s_waitcnt vmcnt(0)81; GFX90A-NEXT: s_setpc_b64 s[30:31]82;83; GFX942-LABEL: v_shuffle_v3p0_v3p0__1_u_u:84; GFX942: ; %bb.0:85; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)86; GFX942-NEXT: v_mov_b32_e32 v6, 087; GFX942-NEXT: ;;#ASMSTART88; GFX942-NEXT: ; def v[0:5]89; GFX942-NEXT: ;;#ASMEND90; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]91; GFX942-NEXT: s_waitcnt vmcnt(0)92; GFX942-NEXT: s_setpc_b64 s[30:31]93 %vec0 = call <3 x ptr> asm "; def $0", "=v"()94 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 1, i32 poison, i32 poison>95 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 3296 ret void97}98 99define void @v_shuffle_v3p0_v3p0__2_u_u(ptr addrspace(1) inreg %ptr) {100; GFX900-LABEL: v_shuffle_v3p0_v3p0__2_u_u:101; GFX900: ; %bb.0:102; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)103; GFX900-NEXT: v_mov_b32_e32 v6, 0104; GFX900-NEXT: ;;#ASMSTART105; GFX900-NEXT: ; def v[0:5]106; GFX900-NEXT: ;;#ASMEND107; GFX900-NEXT: global_store_dwordx4 v6, v[4:7], s[16:17]108; GFX900-NEXT: s_waitcnt vmcnt(0)109; GFX900-NEXT: s_setpc_b64 s[30:31]110;111; GFX90A-LABEL: v_shuffle_v3p0_v3p0__2_u_u:112; GFX90A: ; %bb.0:113; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)114; GFX90A-NEXT: v_mov_b32_e32 v6, 0115; GFX90A-NEXT: ;;#ASMSTART116; GFX90A-NEXT: ; def v[0:5]117; GFX90A-NEXT: ;;#ASMEND118; GFX90A-NEXT: global_store_dwordx4 v6, v[4:7], s[16:17]119; GFX90A-NEXT: s_waitcnt vmcnt(0)120; GFX90A-NEXT: s_setpc_b64 s[30:31]121;122; GFX942-LABEL: v_shuffle_v3p0_v3p0__2_u_u:123; GFX942: ; %bb.0:124; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)125; GFX942-NEXT: v_mov_b32_e32 v6, 0126; GFX942-NEXT: ;;#ASMSTART127; GFX942-NEXT: ; def v[0:5]128; GFX942-NEXT: ;;#ASMEND129; GFX942-NEXT: global_store_dwordx4 v6, v[4:7], s[0:1]130; GFX942-NEXT: s_waitcnt vmcnt(0)131; GFX942-NEXT: s_setpc_b64 s[30:31]132 %vec0 = call <3 x ptr> asm "; def $0", "=v"()133 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 2, i32 poison, i32 poison>134 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32135 ret void136}137 138define void @v_shuffle_v3p0_v3p0__3_u_u(ptr addrspace(1) inreg %ptr) {139; GFX9-LABEL: v_shuffle_v3p0_v3p0__3_u_u:140; GFX9: ; %bb.0:141; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)142; GFX9-NEXT: s_setpc_b64 s[30:31]143 %vec0 = call <3 x ptr> asm "; def $0", "=v"()144 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 3, i32 poison, i32 poison>145 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32146 ret void147}148 149define void @v_shuffle_v3p0_v3p0__4_u_u(ptr addrspace(1) inreg %ptr) {150; GFX900-LABEL: v_shuffle_v3p0_v3p0__4_u_u:151; GFX900: ; %bb.0:152; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)153; GFX900-NEXT: v_mov_b32_e32 v6, 0154; GFX900-NEXT: ;;#ASMSTART155; GFX900-NEXT: ; def v[0:5]156; GFX900-NEXT: ;;#ASMEND157; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]158; GFX900-NEXT: s_waitcnt vmcnt(0)159; GFX900-NEXT: s_setpc_b64 s[30:31]160;161; GFX90A-LABEL: v_shuffle_v3p0_v3p0__4_u_u:162; GFX90A: ; %bb.0:163; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)164; GFX90A-NEXT: v_mov_b32_e32 v6, 0165; GFX90A-NEXT: ;;#ASMSTART166; GFX90A-NEXT: ; def v[0:5]167; GFX90A-NEXT: ;;#ASMEND168; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], 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_v3p0_v3p0__4_u_u:173; GFX942: ; %bb.0:174; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)175; GFX942-NEXT: v_mov_b32_e32 v6, 0176; GFX942-NEXT: ;;#ASMSTART177; GFX942-NEXT: ; def v[0:5]178; GFX942-NEXT: ;;#ASMEND179; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]180; GFX942-NEXT: s_waitcnt vmcnt(0)181; GFX942-NEXT: s_setpc_b64 s[30:31]182 %vec0 = call <3 x ptr> asm "; def $0", "=v"()183 %vec1 = call <3 x ptr> asm "; def $0", "=v"()184 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 4, i32 poison, i32 poison>185 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32186 ret void187}188 189define void @v_shuffle_v3p0_v3p0__5_u_u(ptr addrspace(1) inreg %ptr) {190; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_u_u:191; GFX900: ; %bb.0:192; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)193; GFX900-NEXT: v_mov_b32_e32 v6, 0194; GFX900-NEXT: ;;#ASMSTART195; GFX900-NEXT: ; def v[0:5]196; GFX900-NEXT: ;;#ASMEND197; GFX900-NEXT: global_store_dwordx4 v6, v[4:7], s[16:17]198; GFX900-NEXT: s_waitcnt vmcnt(0)199; GFX900-NEXT: s_setpc_b64 s[30:31]200;201; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_u_u:202; GFX90A: ; %bb.0:203; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)204; GFX90A-NEXT: v_mov_b32_e32 v6, 0205; GFX90A-NEXT: ;;#ASMSTART206; GFX90A-NEXT: ; def v[0:5]207; GFX90A-NEXT: ;;#ASMEND208; GFX90A-NEXT: global_store_dwordx4 v6, v[4:7], s[16:17]209; GFX90A-NEXT: s_waitcnt vmcnt(0)210; GFX90A-NEXT: s_setpc_b64 s[30:31]211;212; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_u_u:213; GFX942: ; %bb.0:214; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)215; GFX942-NEXT: v_mov_b32_e32 v6, 0216; GFX942-NEXT: ;;#ASMSTART217; GFX942-NEXT: ; def v[0:5]218; GFX942-NEXT: ;;#ASMEND219; GFX942-NEXT: global_store_dwordx4 v6, v[4:7], s[0:1]220; GFX942-NEXT: s_waitcnt vmcnt(0)221; GFX942-NEXT: s_setpc_b64 s[30:31]222 %vec0 = call <3 x ptr> asm "; def $0", "=v"()223 %vec1 = call <3 x ptr> asm "; def $0", "=v"()224 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 poison, i32 poison>225 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32226 ret void227}228 229define void @v_shuffle_v3p0_v3p0__5_0_u(ptr addrspace(1) inreg %ptr) {230; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_0_u:231; GFX900: ; %bb.0:232; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)233; GFX900-NEXT: v_mov_b32_e32 v12, 0234; GFX900-NEXT: ;;#ASMSTART235; GFX900-NEXT: ; def v[6:11]236; GFX900-NEXT: ;;#ASMEND237; GFX900-NEXT: ;;#ASMSTART238; GFX900-NEXT: ; def v[0:5]239; GFX900-NEXT: ;;#ASMEND240; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]241; GFX900-NEXT: s_waitcnt vmcnt(0)242; GFX900-NEXT: s_setpc_b64 s[30:31]243;244; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_0_u:245; GFX90A: ; %bb.0:246; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)247; GFX90A-NEXT: v_mov_b32_e32 v12, 0248; GFX90A-NEXT: ;;#ASMSTART249; GFX90A-NEXT: ; def v[6:11]250; GFX90A-NEXT: ;;#ASMEND251; GFX90A-NEXT: ;;#ASMSTART252; GFX90A-NEXT: ; def v[0:5]253; GFX90A-NEXT: ;;#ASMEND254; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]255; GFX90A-NEXT: s_waitcnt vmcnt(0)256; GFX90A-NEXT: s_setpc_b64 s[30:31]257;258; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_0_u:259; GFX942: ; %bb.0:260; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)261; GFX942-NEXT: v_mov_b32_e32 v12, 0262; GFX942-NEXT: ;;#ASMSTART263; GFX942-NEXT: ; def v[6:11]264; GFX942-NEXT: ;;#ASMEND265; GFX942-NEXT: ;;#ASMSTART266; GFX942-NEXT: ; def v[0:5]267; GFX942-NEXT: ;;#ASMEND268; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]269; GFX942-NEXT: s_waitcnt vmcnt(0)270; GFX942-NEXT: s_setpc_b64 s[30:31]271 %vec0 = call <3 x ptr> asm "; def $0", "=v"()272 %vec1 = call <3 x ptr> asm "; def $0", "=v"()273 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 0, i32 poison>274 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32275 ret void276}277 278define void @v_shuffle_v3p0_v3p0__5_1_u(ptr addrspace(1) inreg %ptr) {279; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_1_u:280; GFX900: ; %bb.0:281; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)282; GFX900-NEXT: v_mov_b32_e32 v10, 0283; GFX900-NEXT: ;;#ASMSTART284; GFX900-NEXT: ; def v[4:9]285; GFX900-NEXT: ;;#ASMEND286; GFX900-NEXT: ;;#ASMSTART287; GFX900-NEXT: ; def v[0:5]288; GFX900-NEXT: ;;#ASMEND289; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]290; GFX900-NEXT: s_waitcnt vmcnt(0)291; GFX900-NEXT: s_setpc_b64 s[30:31]292;293; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_1_u:294; GFX90A: ; %bb.0:295; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)296; GFX90A-NEXT: v_mov_b32_e32 v10, 0297; GFX90A-NEXT: ;;#ASMSTART298; GFX90A-NEXT: ; def v[4:9]299; GFX90A-NEXT: ;;#ASMEND300; GFX90A-NEXT: ;;#ASMSTART301; GFX90A-NEXT: ; def v[0:5]302; GFX90A-NEXT: ;;#ASMEND303; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]304; GFX90A-NEXT: s_waitcnt vmcnt(0)305; GFX90A-NEXT: s_setpc_b64 s[30:31]306;307; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_1_u:308; GFX942: ; %bb.0:309; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)310; GFX942-NEXT: v_mov_b32_e32 v10, 0311; GFX942-NEXT: ;;#ASMSTART312; GFX942-NEXT: ; def v[4:9]313; GFX942-NEXT: ;;#ASMEND314; GFX942-NEXT: s_nop 0315; GFX942-NEXT: ;;#ASMSTART316; GFX942-NEXT: ; def v[0:5]317; GFX942-NEXT: ;;#ASMEND318; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]319; GFX942-NEXT: s_waitcnt vmcnt(0)320; GFX942-NEXT: s_setpc_b64 s[30:31]321 %vec0 = call <3 x ptr> asm "; def $0", "=v"()322 %vec1 = call <3 x ptr> asm "; def $0", "=v"()323 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 1, i32 poison>324 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32325 ret void326}327 328define void @v_shuffle_v3p0_v3p0__5_2_u(ptr addrspace(1) inreg %ptr) {329; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_2_u:330; GFX900: ; %bb.0:331; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)332; GFX900-NEXT: v_mov_b32_e32 v8, 0333; GFX900-NEXT: ;;#ASMSTART334; GFX900-NEXT: ; def v[2:7]335; GFX900-NEXT: ;;#ASMEND336; GFX900-NEXT: ;;#ASMSTART337; GFX900-NEXT: ; def v[0:5]338; GFX900-NEXT: ;;#ASMEND339; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]340; GFX900-NEXT: s_waitcnt vmcnt(0)341; GFX900-NEXT: s_setpc_b64 s[30:31]342;343; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_2_u:344; GFX90A: ; %bb.0:345; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)346; GFX90A-NEXT: v_mov_b32_e32 v8, 0347; GFX90A-NEXT: ;;#ASMSTART348; GFX90A-NEXT: ; def v[2:7]349; GFX90A-NEXT: ;;#ASMEND350; GFX90A-NEXT: ;;#ASMSTART351; GFX90A-NEXT: ; def v[0:5]352; GFX90A-NEXT: ;;#ASMEND353; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]354; GFX90A-NEXT: s_waitcnt vmcnt(0)355; GFX90A-NEXT: s_setpc_b64 s[30:31]356;357; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_2_u:358; GFX942: ; %bb.0:359; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)360; GFX942-NEXT: v_mov_b32_e32 v8, 0361; GFX942-NEXT: ;;#ASMSTART362; GFX942-NEXT: ; def v[2:7]363; GFX942-NEXT: ;;#ASMEND364; GFX942-NEXT: s_nop 0365; GFX942-NEXT: ;;#ASMSTART366; GFX942-NEXT: ; def v[0:5]367; GFX942-NEXT: ;;#ASMEND368; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]369; GFX942-NEXT: s_waitcnt vmcnt(0)370; GFX942-NEXT: s_setpc_b64 s[30:31]371 %vec0 = call <3 x ptr> asm "; def $0", "=v"()372 %vec1 = call <3 x ptr> asm "; def $0", "=v"()373 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 2, i32 poison>374 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32375 ret void376}377 378define void @v_shuffle_v3p0_v3p0__5_3_u(ptr addrspace(1) inreg %ptr) {379; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_3_u:380; GFX900: ; %bb.0:381; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)382; GFX900-NEXT: v_mov_b32_e32 v8, 0383; GFX900-NEXT: ;;#ASMSTART384; GFX900-NEXT: ; def v[0:5]385; GFX900-NEXT: ;;#ASMEND386; GFX900-NEXT: v_mov_b32_e32 v6, v0387; GFX900-NEXT: v_mov_b32_e32 v7, v1388; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]389; GFX900-NEXT: s_waitcnt vmcnt(0)390; GFX900-NEXT: s_setpc_b64 s[30:31]391;392; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_3_u:393; GFX90A: ; %bb.0:394; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)395; GFX90A-NEXT: v_mov_b32_e32 v8, 0396; GFX90A-NEXT: ;;#ASMSTART397; GFX90A-NEXT: ; def v[0:5]398; GFX90A-NEXT: ;;#ASMEND399; GFX90A-NEXT: v_mov_b32_e32 v6, v0400; GFX90A-NEXT: v_mov_b32_e32 v7, v1401; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]402; GFX90A-NEXT: s_waitcnt vmcnt(0)403; GFX90A-NEXT: s_setpc_b64 s[30:31]404;405; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_3_u:406; GFX942: ; %bb.0:407; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)408; GFX942-NEXT: v_mov_b32_e32 v8, 0409; GFX942-NEXT: ;;#ASMSTART410; GFX942-NEXT: ; def v[0:5]411; GFX942-NEXT: ;;#ASMEND412; GFX942-NEXT: s_nop 0413; GFX942-NEXT: v_mov_b32_e32 v6, v0414; GFX942-NEXT: v_mov_b32_e32 v7, v1415; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]416; GFX942-NEXT: s_waitcnt vmcnt(0)417; GFX942-NEXT: s_setpc_b64 s[30:31]418 %vec0 = call <3 x ptr> asm "; def $0", "=v"()419 %vec1 = call <3 x ptr> asm "; def $0", "=v"()420 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 3, i32 poison>421 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32422 ret void423}424 425define void @v_shuffle_v3p0_v3p0__5_4_u(ptr addrspace(1) inreg %ptr) {426; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_4_u:427; GFX900: ; %bb.0:428; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)429; GFX900-NEXT: v_mov_b32_e32 v8, 0430; GFX900-NEXT: ;;#ASMSTART431; GFX900-NEXT: ; def v[0:5]432; GFX900-NEXT: ;;#ASMEND433; GFX900-NEXT: v_mov_b32_e32 v6, v2434; GFX900-NEXT: v_mov_b32_e32 v7, v3435; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]436; GFX900-NEXT: s_waitcnt vmcnt(0)437; GFX900-NEXT: s_setpc_b64 s[30:31]438;439; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_4_u:440; GFX90A: ; %bb.0:441; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)442; GFX90A-NEXT: v_mov_b32_e32 v8, 0443; GFX90A-NEXT: ;;#ASMSTART444; GFX90A-NEXT: ; def v[0:5]445; GFX90A-NEXT: ;;#ASMEND446; GFX90A-NEXT: v_mov_b32_e32 v6, v2447; GFX90A-NEXT: v_mov_b32_e32 v7, v3448; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], 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_v3p0_v3p0__5_4_u:453; GFX942: ; %bb.0:454; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)455; GFX942-NEXT: v_mov_b32_e32 v8, 0456; GFX942-NEXT: ;;#ASMSTART457; GFX942-NEXT: ; def v[0:5]458; GFX942-NEXT: ;;#ASMEND459; GFX942-NEXT: s_nop 0460; GFX942-NEXT: v_mov_b32_e32 v6, v2461; GFX942-NEXT: v_mov_b32_e32 v7, v3462; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]463; GFX942-NEXT: s_waitcnt vmcnt(0)464; GFX942-NEXT: s_setpc_b64 s[30:31]465 %vec0 = call <3 x ptr> asm "; def $0", "=v"()466 %vec1 = call <3 x ptr> asm "; def $0", "=v"()467 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 4, i32 poison>468 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32469 ret void470}471 472define void @v_shuffle_v3p0_v3p0__5_5_u(ptr addrspace(1) inreg %ptr) {473; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_5_u:474; GFX900: ; %bb.0:475; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)476; GFX900-NEXT: v_mov_b32_e32 v8, 0477; GFX900-NEXT: ;;#ASMSTART478; GFX900-NEXT: ; def v[0:5]479; GFX900-NEXT: ;;#ASMEND480; GFX900-NEXT: v_mov_b32_e32 v6, v4481; GFX900-NEXT: v_mov_b32_e32 v7, v5482; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]483; GFX900-NEXT: s_waitcnt vmcnt(0)484; GFX900-NEXT: s_setpc_b64 s[30:31]485;486; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_5_u:487; GFX90A: ; %bb.0:488; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)489; GFX90A-NEXT: v_mov_b32_e32 v8, 0490; GFX90A-NEXT: ;;#ASMSTART491; GFX90A-NEXT: ; def v[0:5]492; GFX90A-NEXT: ;;#ASMEND493; GFX90A-NEXT: v_mov_b32_e32 v6, v4494; GFX90A-NEXT: v_mov_b32_e32 v7, v5495; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]496; GFX90A-NEXT: s_waitcnt vmcnt(0)497; GFX90A-NEXT: s_setpc_b64 s[30:31]498;499; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_5_u:500; GFX942: ; %bb.0:501; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)502; GFX942-NEXT: v_mov_b32_e32 v8, 0503; GFX942-NEXT: ;;#ASMSTART504; GFX942-NEXT: ; def v[0:5]505; GFX942-NEXT: ;;#ASMEND506; GFX942-NEXT: s_nop 0507; GFX942-NEXT: v_mov_b32_e32 v6, v4508; GFX942-NEXT: v_mov_b32_e32 v7, v5509; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]510; GFX942-NEXT: s_waitcnt vmcnt(0)511; GFX942-NEXT: s_setpc_b64 s[30:31]512 %vec0 = call <3 x ptr> asm "; def $0", "=v"()513 %vec1 = call <3 x ptr> asm "; def $0", "=v"()514 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 5, i32 poison>515 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32516 ret void517}518 519define void @v_shuffle_v3p0_v3p0__5_5_0(ptr addrspace(1) inreg %ptr) {520; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_5_0:521; GFX900: ; %bb.0:522; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)523; GFX900-NEXT: v_mov_b32_e32 v12, 0524; GFX900-NEXT: ;;#ASMSTART525; GFX900-NEXT: ; def v[6:11]526; GFX900-NEXT: ;;#ASMEND527; GFX900-NEXT: ;;#ASMSTART528; GFX900-NEXT: ; def v[0:5]529; GFX900-NEXT: ;;#ASMEND530; GFX900-NEXT: global_store_dwordx2 v12, v[6:7], s[16:17] offset:16531; GFX900-NEXT: v_mov_b32_e32 v6, v4532; GFX900-NEXT: v_mov_b32_e32 v7, v5533; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]534; GFX900-NEXT: s_waitcnt vmcnt(0)535; GFX900-NEXT: s_setpc_b64 s[30:31]536;537; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_5_0:538; GFX90A: ; %bb.0:539; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)540; GFX90A-NEXT: v_mov_b32_e32 v12, 0541; GFX90A-NEXT: ;;#ASMSTART542; GFX90A-NEXT: ; def v[6:11]543; GFX90A-NEXT: ;;#ASMEND544; GFX90A-NEXT: ;;#ASMSTART545; GFX90A-NEXT: ; def v[0:5]546; GFX90A-NEXT: ;;#ASMEND547; GFX90A-NEXT: global_store_dwordx2 v12, v[6:7], s[16:17] offset:16548; GFX90A-NEXT: v_mov_b32_e32 v6, v4549; GFX90A-NEXT: v_mov_b32_e32 v7, v5550; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]551; GFX90A-NEXT: s_waitcnt vmcnt(0)552; GFX90A-NEXT: s_setpc_b64 s[30:31]553;554; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_5_0:555; GFX942: ; %bb.0:556; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)557; GFX942-NEXT: v_mov_b32_e32 v12, 0558; GFX942-NEXT: ;;#ASMSTART559; GFX942-NEXT: ; def v[6:11]560; GFX942-NEXT: ;;#ASMEND561; GFX942-NEXT: ;;#ASMSTART562; GFX942-NEXT: ; def v[0:5]563; GFX942-NEXT: ;;#ASMEND564; GFX942-NEXT: global_store_dwordx2 v12, v[6:7], s[0:1] offset:16565; GFX942-NEXT: v_mov_b32_e32 v6, v4566; GFX942-NEXT: v_mov_b32_e32 v7, v5567; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]568; GFX942-NEXT: s_waitcnt vmcnt(0)569; GFX942-NEXT: s_setpc_b64 s[30:31]570 %vec0 = call <3 x ptr> asm "; def $0", "=v"()571 %vec1 = call <3 x ptr> asm "; def $0", "=v"()572 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 5, i32 0>573 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32574 ret void575}576 577define void @v_shuffle_v3p0_v3p0__5_5_1(ptr addrspace(1) inreg %ptr) {578; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_5_1:579; GFX900: ; %bb.0:580; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)581; GFX900-NEXT: v_mov_b32_e32 v10, 0582; GFX900-NEXT: ;;#ASMSTART583; GFX900-NEXT: ; def v[4:9]584; GFX900-NEXT: ;;#ASMEND585; GFX900-NEXT: ;;#ASMSTART586; GFX900-NEXT: ; def v[0:5]587; GFX900-NEXT: ;;#ASMEND588; GFX900-NEXT: global_store_dwordx2 v10, v[6:7], s[16:17] offset:16589; GFX900-NEXT: v_mov_b32_e32 v6, v4590; GFX900-NEXT: v_mov_b32_e32 v7, v5591; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]592; GFX900-NEXT: s_waitcnt vmcnt(0)593; GFX900-NEXT: s_setpc_b64 s[30:31]594;595; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_5_1:596; GFX90A: ; %bb.0:597; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)598; GFX90A-NEXT: v_mov_b32_e32 v10, 0599; GFX90A-NEXT: ;;#ASMSTART600; GFX90A-NEXT: ; def v[4:9]601; GFX90A-NEXT: ;;#ASMEND602; GFX90A-NEXT: ;;#ASMSTART603; GFX90A-NEXT: ; def v[0:5]604; GFX90A-NEXT: ;;#ASMEND605; GFX90A-NEXT: global_store_dwordx2 v10, v[6:7], s[16:17] offset:16606; GFX90A-NEXT: v_mov_b32_e32 v6, v4607; GFX90A-NEXT: v_mov_b32_e32 v7, v5608; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]609; GFX90A-NEXT: s_waitcnt vmcnt(0)610; GFX90A-NEXT: s_setpc_b64 s[30:31]611;612; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_5_1:613; GFX942: ; %bb.0:614; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)615; GFX942-NEXT: v_mov_b32_e32 v10, 0616; GFX942-NEXT: ;;#ASMSTART617; GFX942-NEXT: ; def v[4:9]618; GFX942-NEXT: ;;#ASMEND619; GFX942-NEXT: global_store_dwordx2 v10, v[6:7], s[0:1] offset:16620; GFX942-NEXT: ;;#ASMSTART621; GFX942-NEXT: ; def v[0:5]622; GFX942-NEXT: ;;#ASMEND623; GFX942-NEXT: s_nop 0624; GFX942-NEXT: v_mov_b32_e32 v6, v4625; GFX942-NEXT: v_mov_b32_e32 v7, v5626; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]627; GFX942-NEXT: s_waitcnt vmcnt(0)628; GFX942-NEXT: s_setpc_b64 s[30:31]629 %vec0 = call <3 x ptr> asm "; def $0", "=v"()630 %vec1 = call <3 x ptr> asm "; def $0", "=v"()631 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 5, i32 1>632 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32633 ret void634}635 636define void @v_shuffle_v3p0_v3p0__5_5_2(ptr addrspace(1) inreg %ptr) {637; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_5_2:638; GFX900: ; %bb.0:639; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)640; GFX900-NEXT: v_mov_b32_e32 v8, 0641; GFX900-NEXT: ;;#ASMSTART642; GFX900-NEXT: ; def v[2:7]643; GFX900-NEXT: ;;#ASMEND644; GFX900-NEXT: ;;#ASMSTART645; GFX900-NEXT: ; def v[0:5]646; GFX900-NEXT: ;;#ASMEND647; GFX900-NEXT: global_store_dwordx2 v8, v[6:7], s[16:17] offset:16648; GFX900-NEXT: v_mov_b32_e32 v6, v4649; GFX900-NEXT: v_mov_b32_e32 v7, v5650; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]651; GFX900-NEXT: s_waitcnt vmcnt(0)652; GFX900-NEXT: s_setpc_b64 s[30:31]653;654; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_5_2:655; GFX90A: ; %bb.0:656; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)657; GFX90A-NEXT: v_mov_b32_e32 v8, 0658; GFX90A-NEXT: ;;#ASMSTART659; GFX90A-NEXT: ; def v[2:7]660; GFX90A-NEXT: ;;#ASMEND661; GFX90A-NEXT: ;;#ASMSTART662; GFX90A-NEXT: ; def v[0:5]663; GFX90A-NEXT: ;;#ASMEND664; GFX90A-NEXT: global_store_dwordx2 v8, v[6:7], s[16:17] offset:16665; GFX90A-NEXT: v_mov_b32_e32 v6, v4666; GFX90A-NEXT: v_mov_b32_e32 v7, v5667; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]668; GFX90A-NEXT: s_waitcnt vmcnt(0)669; GFX90A-NEXT: s_setpc_b64 s[30:31]670;671; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_5_2:672; GFX942: ; %bb.0:673; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)674; GFX942-NEXT: v_mov_b32_e32 v8, 0675; GFX942-NEXT: ;;#ASMSTART676; GFX942-NEXT: ; def v[2:7]677; GFX942-NEXT: ;;#ASMEND678; GFX942-NEXT: global_store_dwordx2 v8, v[6:7], s[0:1] offset:16679; GFX942-NEXT: ;;#ASMSTART680; GFX942-NEXT: ; def v[0:5]681; GFX942-NEXT: ;;#ASMEND682; GFX942-NEXT: s_nop 0683; GFX942-NEXT: v_mov_b32_e32 v6, v4684; GFX942-NEXT: v_mov_b32_e32 v7, v5685; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]686; GFX942-NEXT: s_waitcnt vmcnt(0)687; GFX942-NEXT: s_setpc_b64 s[30:31]688 %vec0 = call <3 x ptr> asm "; def $0", "=v"()689 %vec1 = call <3 x ptr> asm "; def $0", "=v"()690 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 5, i32 2>691 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32692 ret void693}694 695define void @v_shuffle_v3p0_v3p0__5_5_3(ptr addrspace(1) inreg %ptr) {696; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_5_3:697; GFX900: ; %bb.0:698; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)699; GFX900-NEXT: v_mov_b32_e32 v8, 0700; GFX900-NEXT: ;;#ASMSTART701; GFX900-NEXT: ; def v[0:5]702; GFX900-NEXT: ;;#ASMEND703; GFX900-NEXT: v_mov_b32_e32 v6, v4704; GFX900-NEXT: v_mov_b32_e32 v7, v5705; GFX900-NEXT: global_store_dwordx2 v8, v[0:1], s[16:17] offset:16706; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]707; GFX900-NEXT: s_waitcnt vmcnt(0)708; GFX900-NEXT: s_setpc_b64 s[30:31]709;710; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_5_3:711; GFX90A: ; %bb.0:712; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)713; GFX90A-NEXT: v_mov_b32_e32 v8, 0714; GFX90A-NEXT: ;;#ASMSTART715; GFX90A-NEXT: ; def v[0:5]716; GFX90A-NEXT: ;;#ASMEND717; GFX90A-NEXT: v_mov_b32_e32 v6, v4718; GFX90A-NEXT: v_mov_b32_e32 v7, v5719; GFX90A-NEXT: global_store_dwordx2 v8, v[0:1], s[16:17] offset:16720; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]721; GFX90A-NEXT: s_waitcnt vmcnt(0)722; GFX90A-NEXT: s_setpc_b64 s[30:31]723;724; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_5_3:725; GFX942: ; %bb.0:726; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)727; GFX942-NEXT: v_mov_b32_e32 v8, 0728; GFX942-NEXT: ;;#ASMSTART729; GFX942-NEXT: ; def v[0:5]730; GFX942-NEXT: ;;#ASMEND731; GFX942-NEXT: global_store_dwordx2 v8, v[0:1], s[0:1] offset:16732; GFX942-NEXT: v_mov_b32_e32 v6, v4733; GFX942-NEXT: v_mov_b32_e32 v7, v5734; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]735; GFX942-NEXT: s_waitcnt vmcnt(0)736; GFX942-NEXT: s_setpc_b64 s[30:31]737 %vec0 = call <3 x ptr> asm "; def $0", "=v"()738 %vec1 = call <3 x ptr> asm "; def $0", "=v"()739 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 5, i32 3>740 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32741 ret void742}743 744define void @v_shuffle_v3p0_v3p0__5_5_4(ptr addrspace(1) inreg %ptr) {745; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_5_4:746; GFX900: ; %bb.0:747; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)748; GFX900-NEXT: v_mov_b32_e32 v8, 0749; GFX900-NEXT: ;;#ASMSTART750; GFX900-NEXT: ; def v[0:5]751; GFX900-NEXT: ;;#ASMEND752; GFX900-NEXT: v_mov_b32_e32 v6, v4753; GFX900-NEXT: v_mov_b32_e32 v7, v5754; GFX900-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17] offset:16755; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]756; GFX900-NEXT: s_waitcnt vmcnt(0)757; GFX900-NEXT: s_setpc_b64 s[30:31]758;759; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_5_4:760; GFX90A: ; %bb.0:761; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)762; GFX90A-NEXT: v_mov_b32_e32 v8, 0763; GFX90A-NEXT: ;;#ASMSTART764; GFX90A-NEXT: ; def v[0:5]765; GFX90A-NEXT: ;;#ASMEND766; GFX90A-NEXT: v_mov_b32_e32 v6, v4767; GFX90A-NEXT: v_mov_b32_e32 v7, v5768; GFX90A-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17] offset:16769; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]770; GFX90A-NEXT: s_waitcnt vmcnt(0)771; GFX90A-NEXT: s_setpc_b64 s[30:31]772;773; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_5_4:774; GFX942: ; %bb.0:775; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)776; GFX942-NEXT: v_mov_b32_e32 v8, 0777; GFX942-NEXT: ;;#ASMSTART778; GFX942-NEXT: ; def v[0:5]779; GFX942-NEXT: ;;#ASMEND780; GFX942-NEXT: global_store_dwordx2 v8, v[2:3], s[0:1] offset:16781; GFX942-NEXT: v_mov_b32_e32 v6, v4782; GFX942-NEXT: v_mov_b32_e32 v7, v5783; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]784; GFX942-NEXT: s_waitcnt vmcnt(0)785; GFX942-NEXT: s_setpc_b64 s[30:31]786 %vec0 = call <3 x ptr> asm "; def $0", "=v"()787 %vec1 = call <3 x ptr> asm "; def $0", "=v"()788 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 5, i32 4>789 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32790 ret void791}792 793define void @v_shuffle_v3p0_v3p0__5_5_5(ptr addrspace(1) inreg %ptr) {794; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_5_5:795; GFX900: ; %bb.0:796; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)797; GFX900-NEXT: v_mov_b32_e32 v8, 0798; GFX900-NEXT: ;;#ASMSTART799; GFX900-NEXT: ; def v[0:5]800; GFX900-NEXT: ;;#ASMEND801; GFX900-NEXT: v_mov_b32_e32 v6, v4802; GFX900-NEXT: v_mov_b32_e32 v7, v5803; GFX900-NEXT: global_store_dwordx2 v8, v[4:5], s[16:17] offset:16804; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]805; GFX900-NEXT: s_waitcnt vmcnt(0)806; GFX900-NEXT: s_setpc_b64 s[30:31]807;808; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_5_5:809; GFX90A: ; %bb.0:810; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)811; GFX90A-NEXT: v_mov_b32_e32 v8, 0812; GFX90A-NEXT: ;;#ASMSTART813; GFX90A-NEXT: ; def v[0:5]814; GFX90A-NEXT: ;;#ASMEND815; GFX90A-NEXT: v_mov_b32_e32 v6, v4816; GFX90A-NEXT: v_mov_b32_e32 v7, v5817; GFX90A-NEXT: global_store_dwordx2 v8, v[4:5], s[16:17] offset:16818; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]819; GFX90A-NEXT: s_waitcnt vmcnt(0)820; GFX90A-NEXT: s_setpc_b64 s[30:31]821;822; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_5_5:823; GFX942: ; %bb.0:824; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)825; GFX942-NEXT: v_mov_b32_e32 v8, 0826; GFX942-NEXT: ;;#ASMSTART827; GFX942-NEXT: ; def v[0:5]828; GFX942-NEXT: ;;#ASMEND829; GFX942-NEXT: global_store_dwordx2 v8, v[4:5], s[0:1] offset:16830; GFX942-NEXT: v_mov_b32_e32 v6, v4831; GFX942-NEXT: v_mov_b32_e32 v7, v5832; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]833; GFX942-NEXT: s_waitcnt vmcnt(0)834; GFX942-NEXT: s_setpc_b64 s[30:31]835 %vec0 = call <3 x ptr> asm "; def $0", "=v"()836 %vec1 = call <3 x ptr> asm "; def $0", "=v"()837 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 5, i32 5>838 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32839 ret void840}841 842define void @v_shuffle_v3p0_v3p0__u_0_0(ptr addrspace(1) inreg %ptr) {843; GFX900-LABEL: v_shuffle_v3p0_v3p0__u_0_0:844; GFX900: ; %bb.0:845; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)846; GFX900-NEXT: v_mov_b32_e32 v0, 0847; GFX900-NEXT: ;;#ASMSTART848; GFX900-NEXT: ; def v[2:7]849; GFX900-NEXT: ;;#ASMEND850; GFX900-NEXT: global_store_dwordx2 v0, v[2:3], s[16:17] offset:16851; GFX900-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17]852; GFX900-NEXT: s_waitcnt vmcnt(0)853; GFX900-NEXT: s_setpc_b64 s[30:31]854;855; GFX90A-LABEL: v_shuffle_v3p0_v3p0__u_0_0:856; GFX90A: ; %bb.0:857; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)858; GFX90A-NEXT: v_mov_b32_e32 v0, 0859; GFX90A-NEXT: ;;#ASMSTART860; GFX90A-NEXT: ; def v[2:7]861; GFX90A-NEXT: ;;#ASMEND862; GFX90A-NEXT: global_store_dwordx2 v0, v[2:3], s[16:17] offset:16863; GFX90A-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17]864; GFX90A-NEXT: s_waitcnt vmcnt(0)865; GFX90A-NEXT: s_setpc_b64 s[30:31]866;867; GFX942-LABEL: v_shuffle_v3p0_v3p0__u_0_0:868; GFX942: ; %bb.0:869; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)870; GFX942-NEXT: v_mov_b32_e32 v0, 0871; GFX942-NEXT: ;;#ASMSTART872; GFX942-NEXT: ; def v[2:7]873; GFX942-NEXT: ;;#ASMEND874; GFX942-NEXT: global_store_dwordx2 v0, v[2:3], s[0:1] offset:16875; GFX942-NEXT: global_store_dwordx4 v0, v[0:3], s[0:1]876; GFX942-NEXT: s_waitcnt vmcnt(0)877; GFX942-NEXT: s_setpc_b64 s[30:31]878 %vec0 = call <3 x ptr> asm "; def $0", "=v"()879 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 poison, i32 0, i32 0>880 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32881 ret void882}883 884define void @v_shuffle_v3p0_v3p0__0_0_0(ptr addrspace(1) inreg %ptr) {885; GFX900-LABEL: v_shuffle_v3p0_v3p0__0_0_0:886; GFX900: ; %bb.0:887; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)888; GFX900-NEXT: ;;#ASMSTART889; GFX900-NEXT: ; def v[0:5]890; GFX900-NEXT: ;;#ASMEND891; GFX900-NEXT: v_mov_b32_e32 v6, 0892; GFX900-NEXT: v_mov_b32_e32 v2, v0893; GFX900-NEXT: v_mov_b32_e32 v3, v1894; GFX900-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17] offset:16895; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]896; GFX900-NEXT: s_waitcnt vmcnt(0)897; GFX900-NEXT: s_setpc_b64 s[30:31]898;899; GFX90A-LABEL: v_shuffle_v3p0_v3p0__0_0_0:900; GFX90A: ; %bb.0:901; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)902; GFX90A-NEXT: ;;#ASMSTART903; GFX90A-NEXT: ; def v[0:5]904; GFX90A-NEXT: ;;#ASMEND905; GFX90A-NEXT: v_mov_b32_e32 v6, 0906; GFX90A-NEXT: v_mov_b32_e32 v2, v0907; GFX90A-NEXT: v_mov_b32_e32 v3, v1908; GFX90A-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17] offset:16909; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]910; GFX90A-NEXT: s_waitcnt vmcnt(0)911; GFX90A-NEXT: s_setpc_b64 s[30:31]912;913; GFX942-LABEL: v_shuffle_v3p0_v3p0__0_0_0:914; GFX942: ; %bb.0:915; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)916; GFX942-NEXT: ;;#ASMSTART917; GFX942-NEXT: ; def v[0:5]918; GFX942-NEXT: ;;#ASMEND919; GFX942-NEXT: v_mov_b32_e32 v6, 0920; GFX942-NEXT: v_mov_b32_e32 v2, v0921; GFX942-NEXT: v_mov_b32_e32 v3, v1922; GFX942-NEXT: global_store_dwordx2 v6, v[0:1], s[0:1] offset:16923; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]924; GFX942-NEXT: s_waitcnt vmcnt(0)925; GFX942-NEXT: s_setpc_b64 s[30:31]926 %vec0 = call <3 x ptr> asm "; def $0", "=v"()927 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> zeroinitializer928 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32929 ret void930}931 932define void @v_shuffle_v3p0_v3p0__1_0_0(ptr addrspace(1) inreg %ptr) {933; GFX900-LABEL: v_shuffle_v3p0_v3p0__1_0_0:934; GFX900: ; %bb.0:935; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)936; GFX900-NEXT: ;;#ASMSTART937; GFX900-NEXT: ; def v[0:5]938; GFX900-NEXT: ;;#ASMEND939; GFX900-NEXT: v_mov_b32_e32 v6, 0940; GFX900-NEXT: v_mov_b32_e32 v4, v0941; GFX900-NEXT: v_mov_b32_e32 v5, v1942; GFX900-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17] offset:16943; 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_v3p0_v3p0__1_0_0:948; GFX90A: ; %bb.0:949; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)950; GFX90A-NEXT: ;;#ASMSTART951; GFX90A-NEXT: ; def v[0:5]952; GFX90A-NEXT: ;;#ASMEND953; GFX90A-NEXT: v_mov_b32_e32 v6, 0954; GFX90A-NEXT: v_mov_b32_e32 v4, v0955; GFX90A-NEXT: v_mov_b32_e32 v5, v1956; GFX90A-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17] offset:16957; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]958; GFX90A-NEXT: s_waitcnt vmcnt(0)959; GFX90A-NEXT: s_setpc_b64 s[30:31]960;961; GFX942-LABEL: v_shuffle_v3p0_v3p0__1_0_0:962; GFX942: ; %bb.0:963; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)964; GFX942-NEXT: ;;#ASMSTART965; GFX942-NEXT: ; def v[0:5]966; GFX942-NEXT: ;;#ASMEND967; GFX942-NEXT: v_mov_b32_e32 v6, 0968; GFX942-NEXT: v_mov_b32_e32 v4, v0969; GFX942-NEXT: v_mov_b32_e32 v5, v1970; GFX942-NEXT: global_store_dwordx2 v6, v[0:1], s[0:1] offset:16971; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]972; GFX942-NEXT: s_waitcnt vmcnt(0)973; GFX942-NEXT: s_setpc_b64 s[30:31]974 %vec0 = call <3 x ptr> asm "; def $0", "=v"()975 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 1, i32 0, i32 0>976 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 32977 ret void978}979 980define void @v_shuffle_v3p0_v3p0__2_0_0(ptr addrspace(1) inreg %ptr) {981; GFX900-LABEL: v_shuffle_v3p0_v3p0__2_0_0:982; GFX900: ; %bb.0:983; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)984; GFX900-NEXT: v_mov_b32_e32 v8, 0985; GFX900-NEXT: ;;#ASMSTART986; GFX900-NEXT: ; def v[0:5]987; GFX900-NEXT: ;;#ASMEND988; GFX900-NEXT: v_mov_b32_e32 v6, v0989; GFX900-NEXT: v_mov_b32_e32 v7, v1990; GFX900-NEXT: global_store_dwordx2 v8, v[0:1], s[16:17] offset:16991; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]992; GFX900-NEXT: s_waitcnt vmcnt(0)993; GFX900-NEXT: s_setpc_b64 s[30:31]994;995; GFX90A-LABEL: v_shuffle_v3p0_v3p0__2_0_0:996; GFX90A: ; %bb.0:997; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)998; GFX90A-NEXT: v_mov_b32_e32 v8, 0999; GFX90A-NEXT: ;;#ASMSTART1000; GFX90A-NEXT: ; def v[0:5]1001; GFX90A-NEXT: ;;#ASMEND1002; GFX90A-NEXT: v_mov_b32_e32 v6, v01003; GFX90A-NEXT: v_mov_b32_e32 v7, v11004; GFX90A-NEXT: global_store_dwordx2 v8, v[0:1], s[16:17] offset:161005; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]1006; GFX90A-NEXT: s_waitcnt vmcnt(0)1007; GFX90A-NEXT: s_setpc_b64 s[30:31]1008;1009; GFX942-LABEL: v_shuffle_v3p0_v3p0__2_0_0:1010; GFX942: ; %bb.0:1011; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1012; GFX942-NEXT: v_mov_b32_e32 v8, 01013; GFX942-NEXT: ;;#ASMSTART1014; GFX942-NEXT: ; def v[0:5]1015; GFX942-NEXT: ;;#ASMEND1016; GFX942-NEXT: global_store_dwordx2 v8, v[0:1], s[0:1] offset:161017; GFX942-NEXT: v_mov_b32_e32 v6, v01018; GFX942-NEXT: v_mov_b32_e32 v7, v11019; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]1020; GFX942-NEXT: s_waitcnt vmcnt(0)1021; GFX942-NEXT: s_setpc_b64 s[30:31]1022 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1023 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 2, i32 0, i32 0>1024 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321025 ret void1026}1027 1028define void @v_shuffle_v3p0_v3p0__3_0_0(ptr addrspace(1) inreg %ptr) {1029; GFX900-LABEL: v_shuffle_v3p0_v3p0__3_0_0:1030; GFX900: ; %bb.0:1031; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1032; GFX900-NEXT: v_mov_b32_e32 v0, 01033; GFX900-NEXT: ;;#ASMSTART1034; GFX900-NEXT: ; def v[2:7]1035; GFX900-NEXT: ;;#ASMEND1036; GFX900-NEXT: global_store_dwordx2 v0, v[2:3], s[16:17] offset:161037; GFX900-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17]1038; GFX900-NEXT: s_waitcnt vmcnt(0)1039; GFX900-NEXT: s_setpc_b64 s[30:31]1040;1041; GFX90A-LABEL: v_shuffle_v3p0_v3p0__3_0_0:1042; GFX90A: ; %bb.0:1043; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1044; GFX90A-NEXT: v_mov_b32_e32 v0, 01045; GFX90A-NEXT: ;;#ASMSTART1046; GFX90A-NEXT: ; def v[2:7]1047; GFX90A-NEXT: ;;#ASMEND1048; GFX90A-NEXT: global_store_dwordx2 v0, v[2:3], s[16:17] offset:161049; GFX90A-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17]1050; GFX90A-NEXT: s_waitcnt vmcnt(0)1051; GFX90A-NEXT: s_setpc_b64 s[30:31]1052;1053; GFX942-LABEL: v_shuffle_v3p0_v3p0__3_0_0:1054; GFX942: ; %bb.0:1055; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1056; GFX942-NEXT: v_mov_b32_e32 v0, 01057; GFX942-NEXT: ;;#ASMSTART1058; GFX942-NEXT: ; def v[2:7]1059; GFX942-NEXT: ;;#ASMEND1060; GFX942-NEXT: global_store_dwordx2 v0, v[2:3], s[0:1] offset:161061; GFX942-NEXT: global_store_dwordx4 v0, v[0:3], s[0:1]1062; GFX942-NEXT: s_waitcnt vmcnt(0)1063; GFX942-NEXT: s_setpc_b64 s[30:31]1064 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1065 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 3, i32 0, i32 0>1066 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321067 ret void1068}1069 1070define void @v_shuffle_v3p0_v3p0__4_0_0(ptr addrspace(1) inreg %ptr) {1071; GFX900-LABEL: v_shuffle_v3p0_v3p0__4_0_0:1072; GFX900: ; %bb.0:1073; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1074; GFX900-NEXT: ;;#ASMSTART1075; GFX900-NEXT: ; def v[0:5]1076; GFX900-NEXT: ;;#ASMEND1077; GFX900-NEXT: ;;#ASMSTART1078; GFX900-NEXT: ; def v[2:7]1079; GFX900-NEXT: ;;#ASMEND1080; GFX900-NEXT: v_mov_b32_e32 v8, 01081; GFX900-NEXT: v_mov_b32_e32 v6, v01082; GFX900-NEXT: v_mov_b32_e32 v7, v11083; GFX900-NEXT: global_store_dwordx2 v8, v[0:1], s[16:17] offset:161084; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]1085; GFX900-NEXT: s_waitcnt vmcnt(0)1086; GFX900-NEXT: s_setpc_b64 s[30:31]1087;1088; GFX90A-LABEL: v_shuffle_v3p0_v3p0__4_0_0:1089; GFX90A: ; %bb.0:1090; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1091; GFX90A-NEXT: ;;#ASMSTART1092; GFX90A-NEXT: ; def v[0:5]1093; GFX90A-NEXT: ;;#ASMEND1094; GFX90A-NEXT: ;;#ASMSTART1095; GFX90A-NEXT: ; def v[2:7]1096; GFX90A-NEXT: ;;#ASMEND1097; GFX90A-NEXT: v_mov_b32_e32 v8, 01098; GFX90A-NEXT: v_mov_b32_e32 v6, v01099; GFX90A-NEXT: v_mov_b32_e32 v7, v11100; GFX90A-NEXT: global_store_dwordx2 v8, v[0:1], s[16:17] offset:161101; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]1102; GFX90A-NEXT: s_waitcnt vmcnt(0)1103; GFX90A-NEXT: s_setpc_b64 s[30:31]1104;1105; GFX942-LABEL: v_shuffle_v3p0_v3p0__4_0_0:1106; GFX942: ; %bb.0:1107; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1108; GFX942-NEXT: ;;#ASMSTART1109; GFX942-NEXT: ; def v[0:5]1110; GFX942-NEXT: ;;#ASMEND1111; GFX942-NEXT: v_mov_b32_e32 v8, 01112; GFX942-NEXT: ;;#ASMSTART1113; GFX942-NEXT: ; def v[2:7]1114; GFX942-NEXT: ;;#ASMEND1115; GFX942-NEXT: global_store_dwordx2 v8, v[0:1], s[0:1] offset:161116; GFX942-NEXT: v_mov_b32_e32 v6, v01117; GFX942-NEXT: v_mov_b32_e32 v7, v11118; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]1119; GFX942-NEXT: s_waitcnt vmcnt(0)1120; GFX942-NEXT: s_setpc_b64 s[30:31]1121 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1122 %vec1 = call <3 x ptr> asm "; def $0", "=v"()1123 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 4, i32 0, i32 0>1124 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321125 ret void1126}1127 1128define void @v_shuffle_v3p0_v3p0__5_0_0(ptr addrspace(1) inreg %ptr) {1129; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_0_0:1130; GFX900: ; %bb.0:1131; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1132; GFX900-NEXT: v_mov_b32_e32 v12, 01133; GFX900-NEXT: ;;#ASMSTART1134; GFX900-NEXT: ; def v[6:11]1135; GFX900-NEXT: ;;#ASMEND1136; GFX900-NEXT: ;;#ASMSTART1137; GFX900-NEXT: ; def v[0:5]1138; GFX900-NEXT: ;;#ASMEND1139; GFX900-NEXT: global_store_dwordx2 v12, v[6:7], s[16:17] offset:161140; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]1141; GFX900-NEXT: s_waitcnt vmcnt(0)1142; GFX900-NEXT: s_setpc_b64 s[30:31]1143;1144; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_0_0:1145; GFX90A: ; %bb.0:1146; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1147; GFX90A-NEXT: v_mov_b32_e32 v12, 01148; GFX90A-NEXT: ;;#ASMSTART1149; GFX90A-NEXT: ; def v[6:11]1150; GFX90A-NEXT: ;;#ASMEND1151; GFX90A-NEXT: ;;#ASMSTART1152; GFX90A-NEXT: ; def v[0:5]1153; GFX90A-NEXT: ;;#ASMEND1154; GFX90A-NEXT: global_store_dwordx2 v12, v[6:7], s[16:17] offset:161155; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]1156; GFX90A-NEXT: s_waitcnt vmcnt(0)1157; GFX90A-NEXT: s_setpc_b64 s[30:31]1158;1159; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_0_0:1160; GFX942: ; %bb.0:1161; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1162; GFX942-NEXT: v_mov_b32_e32 v12, 01163; GFX942-NEXT: ;;#ASMSTART1164; GFX942-NEXT: ; def v[6:11]1165; GFX942-NEXT: ;;#ASMEND1166; GFX942-NEXT: ;;#ASMSTART1167; GFX942-NEXT: ; def v[0:5]1168; GFX942-NEXT: ;;#ASMEND1169; GFX942-NEXT: global_store_dwordx2 v12, v[6:7], s[0:1] offset:161170; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]1171; GFX942-NEXT: s_waitcnt vmcnt(0)1172; GFX942-NEXT: s_setpc_b64 s[30:31]1173 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1174 %vec1 = call <3 x ptr> asm "; def $0", "=v"()1175 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 0, i32 0>1176 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321177 ret void1178}1179 1180define void @v_shuffle_v3p0_v3p0__5_u_0(ptr addrspace(1) inreg %ptr) {1181; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_u_0:1182; GFX900: ; %bb.0:1183; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1184; GFX900-NEXT: v_mov_b32_e32 v12, 01185; GFX900-NEXT: ;;#ASMSTART1186; GFX900-NEXT: ; def v[6:11]1187; GFX900-NEXT: ;;#ASMEND1188; GFX900-NEXT: ;;#ASMSTART1189; GFX900-NEXT: ; def v[0:5]1190; GFX900-NEXT: ;;#ASMEND1191; GFX900-NEXT: global_store_dwordx2 v12, v[6:7], s[16:17] offset:161192; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]1193; GFX900-NEXT: s_waitcnt vmcnt(0)1194; GFX900-NEXT: s_setpc_b64 s[30:31]1195;1196; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_u_0:1197; GFX90A: ; %bb.0:1198; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1199; GFX90A-NEXT: v_mov_b32_e32 v12, 01200; GFX90A-NEXT: ;;#ASMSTART1201; GFX90A-NEXT: ; def v[6:11]1202; GFX90A-NEXT: ;;#ASMEND1203; GFX90A-NEXT: ;;#ASMSTART1204; GFX90A-NEXT: ; def v[0:5]1205; GFX90A-NEXT: ;;#ASMEND1206; GFX90A-NEXT: global_store_dwordx2 v12, v[6:7], s[16:17] offset:161207; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], 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_v3p0_v3p0__5_u_0:1212; GFX942: ; %bb.0:1213; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1214; GFX942-NEXT: v_mov_b32_e32 v12, 01215; GFX942-NEXT: ;;#ASMSTART1216; GFX942-NEXT: ; def v[6:11]1217; GFX942-NEXT: ;;#ASMEND1218; GFX942-NEXT: ;;#ASMSTART1219; GFX942-NEXT: ; def v[0:5]1220; GFX942-NEXT: ;;#ASMEND1221; GFX942-NEXT: global_store_dwordx2 v12, v[6:7], s[0:1] offset:161222; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]1223; GFX942-NEXT: s_waitcnt vmcnt(0)1224; GFX942-NEXT: s_setpc_b64 s[30:31]1225 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1226 %vec1 = call <3 x ptr> asm "; def $0", "=v"()1227 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 poison, i32 0>1228 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321229 ret void1230}1231 1232define void @v_shuffle_v3p0_v3p0__5_1_0(ptr addrspace(1) inreg %ptr) {1233; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_1_0:1234; GFX900: ; %bb.0:1235; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1236; GFX900-NEXT: v_mov_b32_e32 v12, 01237; GFX900-NEXT: ;;#ASMSTART1238; GFX900-NEXT: ; def v[6:11]1239; GFX900-NEXT: ;;#ASMEND1240; GFX900-NEXT: global_store_dwordx2 v12, v[6:7], s[16:17] offset:161241; GFX900-NEXT: v_mov_b32_e32 v6, v81242; GFX900-NEXT: v_mov_b32_e32 v7, v91243; GFX900-NEXT: ;;#ASMSTART1244; GFX900-NEXT: ; def v[0:5]1245; GFX900-NEXT: ;;#ASMEND1246; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]1247; GFX900-NEXT: s_waitcnt vmcnt(0)1248; GFX900-NEXT: s_setpc_b64 s[30:31]1249;1250; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_1_0:1251; GFX90A: ; %bb.0:1252; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1253; GFX90A-NEXT: v_mov_b32_e32 v12, 01254; GFX90A-NEXT: ;;#ASMSTART1255; GFX90A-NEXT: ; def v[6:11]1256; GFX90A-NEXT: ;;#ASMEND1257; GFX90A-NEXT: global_store_dwordx2 v12, v[6:7], s[16:17] offset:161258; GFX90A-NEXT: v_mov_b32_e32 v6, v81259; GFX90A-NEXT: v_mov_b32_e32 v7, v91260; GFX90A-NEXT: ;;#ASMSTART1261; GFX90A-NEXT: ; def v[0:5]1262; GFX90A-NEXT: ;;#ASMEND1263; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]1264; GFX90A-NEXT: s_waitcnt vmcnt(0)1265; GFX90A-NEXT: s_setpc_b64 s[30:31]1266;1267; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_1_0:1268; GFX942: ; %bb.0:1269; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1270; GFX942-NEXT: v_mov_b32_e32 v12, 01271; GFX942-NEXT: ;;#ASMSTART1272; GFX942-NEXT: ; def v[6:11]1273; GFX942-NEXT: ;;#ASMEND1274; GFX942-NEXT: global_store_dwordx2 v12, v[6:7], s[0:1] offset:161275; GFX942-NEXT: v_mov_b32_e32 v6, v81276; GFX942-NEXT: v_mov_b32_e32 v7, v91277; GFX942-NEXT: ;;#ASMSTART1278; GFX942-NEXT: ; def v[0:5]1279; GFX942-NEXT: ;;#ASMEND1280; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]1281; GFX942-NEXT: s_waitcnt vmcnt(0)1282; GFX942-NEXT: s_setpc_b64 s[30:31]1283 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1284 %vec1 = call <3 x ptr> asm "; def $0", "=v"()1285 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 1, i32 0>1286 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321287 ret void1288}1289 1290define void @v_shuffle_v3p0_v3p0__5_2_0(ptr addrspace(1) inreg %ptr) {1291; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_2_0:1292; GFX900: ; %bb.0:1293; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1294; GFX900-NEXT: v_mov_b32_e32 v12, 01295; GFX900-NEXT: ;;#ASMSTART1296; GFX900-NEXT: ; def v[6:11]1297; GFX900-NEXT: ;;#ASMEND1298; GFX900-NEXT: global_store_dwordx2 v12, v[6:7], s[16:17] offset:161299; GFX900-NEXT: v_mov_b32_e32 v6, v101300; GFX900-NEXT: v_mov_b32_e32 v7, v111301; GFX900-NEXT: ;;#ASMSTART1302; GFX900-NEXT: ; def v[0:5]1303; GFX900-NEXT: ;;#ASMEND1304; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]1305; GFX900-NEXT: s_waitcnt vmcnt(0)1306; GFX900-NEXT: s_setpc_b64 s[30:31]1307;1308; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_2_0:1309; GFX90A: ; %bb.0:1310; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1311; GFX90A-NEXT: v_mov_b32_e32 v12, 01312; GFX90A-NEXT: ;;#ASMSTART1313; GFX90A-NEXT: ; def v[6:11]1314; GFX90A-NEXT: ;;#ASMEND1315; GFX90A-NEXT: global_store_dwordx2 v12, v[6:7], s[16:17] offset:161316; GFX90A-NEXT: v_mov_b32_e32 v6, v101317; GFX90A-NEXT: v_mov_b32_e32 v7, v111318; GFX90A-NEXT: ;;#ASMSTART1319; GFX90A-NEXT: ; def v[0:5]1320; GFX90A-NEXT: ;;#ASMEND1321; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]1322; GFX90A-NEXT: s_waitcnt vmcnt(0)1323; GFX90A-NEXT: s_setpc_b64 s[30:31]1324;1325; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_2_0:1326; GFX942: ; %bb.0:1327; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1328; GFX942-NEXT: v_mov_b32_e32 v12, 01329; GFX942-NEXT: ;;#ASMSTART1330; GFX942-NEXT: ; def v[6:11]1331; GFX942-NEXT: ;;#ASMEND1332; GFX942-NEXT: global_store_dwordx2 v12, v[6:7], s[0:1] offset:161333; GFX942-NEXT: v_mov_b32_e32 v6, v101334; GFX942-NEXT: v_mov_b32_e32 v7, v111335; GFX942-NEXT: ;;#ASMSTART1336; GFX942-NEXT: ; def v[0:5]1337; GFX942-NEXT: ;;#ASMEND1338; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]1339; GFX942-NEXT: s_waitcnt vmcnt(0)1340; GFX942-NEXT: s_setpc_b64 s[30:31]1341 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1342 %vec1 = call <3 x ptr> asm "; def $0", "=v"()1343 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 2, i32 0>1344 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321345 ret void1346}1347 1348define void @v_shuffle_v3p0_v3p0__5_3_0(ptr addrspace(1) inreg %ptr) {1349; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_3_0:1350; GFX900: ; %bb.0:1351; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1352; GFX900-NEXT: v_mov_b32_e32 v12, 01353; GFX900-NEXT: ;;#ASMSTART1354; GFX900-NEXT: ; def v[6:11]1355; GFX900-NEXT: ;;#ASMEND1356; GFX900-NEXT: ;;#ASMSTART1357; GFX900-NEXT: ; def v[0:5]1358; GFX900-NEXT: ;;#ASMEND1359; GFX900-NEXT: global_store_dwordx2 v12, v[6:7], s[16:17] offset:161360; GFX900-NEXT: v_mov_b32_e32 v6, v01361; GFX900-NEXT: v_mov_b32_e32 v7, v11362; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]1363; GFX900-NEXT: s_waitcnt vmcnt(0)1364; GFX900-NEXT: s_setpc_b64 s[30:31]1365;1366; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_3_0:1367; GFX90A: ; %bb.0:1368; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1369; GFX90A-NEXT: v_mov_b32_e32 v12, 01370; GFX90A-NEXT: ;;#ASMSTART1371; GFX90A-NEXT: ; def v[6:11]1372; GFX90A-NEXT: ;;#ASMEND1373; GFX90A-NEXT: ;;#ASMSTART1374; GFX90A-NEXT: ; def v[0:5]1375; GFX90A-NEXT: ;;#ASMEND1376; GFX90A-NEXT: global_store_dwordx2 v12, v[6:7], s[16:17] offset:161377; GFX90A-NEXT: v_mov_b32_e32 v6, v01378; GFX90A-NEXT: v_mov_b32_e32 v7, v11379; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]1380; GFX90A-NEXT: s_waitcnt vmcnt(0)1381; GFX90A-NEXT: s_setpc_b64 s[30:31]1382;1383; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_3_0:1384; GFX942: ; %bb.0:1385; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1386; GFX942-NEXT: v_mov_b32_e32 v12, 01387; GFX942-NEXT: ;;#ASMSTART1388; GFX942-NEXT: ; def v[6:11]1389; GFX942-NEXT: ;;#ASMEND1390; GFX942-NEXT: ;;#ASMSTART1391; GFX942-NEXT: ; def v[0:5]1392; GFX942-NEXT: ;;#ASMEND1393; GFX942-NEXT: global_store_dwordx2 v12, v[6:7], s[0:1] offset:161394; GFX942-NEXT: v_mov_b32_e32 v6, v01395; GFX942-NEXT: v_mov_b32_e32 v7, v11396; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]1397; GFX942-NEXT: s_waitcnt vmcnt(0)1398; GFX942-NEXT: s_setpc_b64 s[30:31]1399 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1400 %vec1 = call <3 x ptr> asm "; def $0", "=v"()1401 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 3, i32 0>1402 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321403 ret void1404}1405 1406define void @v_shuffle_v3p0_v3p0__5_4_0(ptr addrspace(1) inreg %ptr) {1407; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_4_0:1408; GFX900: ; %bb.0:1409; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1410; GFX900-NEXT: v_mov_b32_e32 v12, 01411; GFX900-NEXT: ;;#ASMSTART1412; GFX900-NEXT: ; def v[6:11]1413; GFX900-NEXT: ;;#ASMEND1414; GFX900-NEXT: ;;#ASMSTART1415; GFX900-NEXT: ; def v[0:5]1416; GFX900-NEXT: ;;#ASMEND1417; GFX900-NEXT: global_store_dwordx2 v12, v[6:7], s[16:17] offset:161418; GFX900-NEXT: v_mov_b32_e32 v6, v21419; GFX900-NEXT: v_mov_b32_e32 v7, v31420; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]1421; GFX900-NEXT: s_waitcnt vmcnt(0)1422; GFX900-NEXT: s_setpc_b64 s[30:31]1423;1424; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_4_0:1425; GFX90A: ; %bb.0:1426; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1427; GFX90A-NEXT: v_mov_b32_e32 v12, 01428; GFX90A-NEXT: ;;#ASMSTART1429; GFX90A-NEXT: ; def v[6:11]1430; GFX90A-NEXT: ;;#ASMEND1431; GFX90A-NEXT: ;;#ASMSTART1432; GFX90A-NEXT: ; def v[0:5]1433; GFX90A-NEXT: ;;#ASMEND1434; GFX90A-NEXT: global_store_dwordx2 v12, v[6:7], s[16:17] offset:161435; GFX90A-NEXT: v_mov_b32_e32 v6, v21436; GFX90A-NEXT: v_mov_b32_e32 v7, v31437; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]1438; GFX90A-NEXT: s_waitcnt vmcnt(0)1439; GFX90A-NEXT: s_setpc_b64 s[30:31]1440;1441; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_4_0:1442; GFX942: ; %bb.0:1443; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1444; GFX942-NEXT: v_mov_b32_e32 v12, 01445; GFX942-NEXT: ;;#ASMSTART1446; GFX942-NEXT: ; def v[6:11]1447; GFX942-NEXT: ;;#ASMEND1448; GFX942-NEXT: ;;#ASMSTART1449; GFX942-NEXT: ; def v[0:5]1450; GFX942-NEXT: ;;#ASMEND1451; GFX942-NEXT: global_store_dwordx2 v12, v[6:7], s[0:1] offset:161452; GFX942-NEXT: v_mov_b32_e32 v6, v21453; GFX942-NEXT: v_mov_b32_e32 v7, v31454; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]1455; GFX942-NEXT: s_waitcnt vmcnt(0)1456; GFX942-NEXT: s_setpc_b64 s[30:31]1457 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1458 %vec1 = call <3 x ptr> asm "; def $0", "=v"()1459 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 4, i32 0>1460 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321461 ret void1462}1463 1464define void @v_shuffle_v3p0_v3p0__u_1_1(ptr addrspace(1) inreg %ptr) {1465; GFX900-LABEL: v_shuffle_v3p0_v3p0__u_1_1:1466; GFX900: ; %bb.0:1467; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1468; GFX900-NEXT: v_mov_b32_e32 v6, 01469; GFX900-NEXT: ;;#ASMSTART1470; GFX900-NEXT: ; def v[0:5]1471; GFX900-NEXT: ;;#ASMEND1472; GFX900-NEXT: global_store_dwordx2 v6, v[2:3], s[16:17] offset:161473; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]1474; GFX900-NEXT: s_waitcnt vmcnt(0)1475; GFX900-NEXT: s_setpc_b64 s[30:31]1476;1477; GFX90A-LABEL: v_shuffle_v3p0_v3p0__u_1_1:1478; GFX90A: ; %bb.0:1479; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1480; GFX90A-NEXT: v_mov_b32_e32 v6, 01481; GFX90A-NEXT: ;;#ASMSTART1482; GFX90A-NEXT: ; def v[0:5]1483; GFX90A-NEXT: ;;#ASMEND1484; GFX90A-NEXT: global_store_dwordx2 v6, v[2:3], s[16:17] offset:161485; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]1486; GFX90A-NEXT: s_waitcnt vmcnt(0)1487; GFX90A-NEXT: s_setpc_b64 s[30:31]1488;1489; GFX942-LABEL: v_shuffle_v3p0_v3p0__u_1_1:1490; GFX942: ; %bb.0:1491; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1492; GFX942-NEXT: v_mov_b32_e32 v6, 01493; GFX942-NEXT: ;;#ASMSTART1494; GFX942-NEXT: ; def v[0:5]1495; GFX942-NEXT: ;;#ASMEND1496; GFX942-NEXT: global_store_dwordx2 v6, v[2:3], s[0:1] offset:161497; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]1498; GFX942-NEXT: s_waitcnt vmcnt(0)1499; GFX942-NEXT: s_setpc_b64 s[30:31]1500 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1501 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 poison, i32 1, i32 1>1502 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321503 ret void1504}1505 1506define void @v_shuffle_v3p0_v3p0__0_1_1(ptr addrspace(1) inreg %ptr) {1507; GFX900-LABEL: v_shuffle_v3p0_v3p0__0_1_1:1508; GFX900: ; %bb.0:1509; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1510; GFX900-NEXT: v_mov_b32_e32 v6, 01511; GFX900-NEXT: ;;#ASMSTART1512; GFX900-NEXT: ; def v[0:5]1513; GFX900-NEXT: ;;#ASMEND1514; GFX900-NEXT: global_store_dwordx2 v6, v[2:3], s[16:17] offset:161515; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]1516; GFX900-NEXT: s_waitcnt vmcnt(0)1517; GFX900-NEXT: s_setpc_b64 s[30:31]1518;1519; GFX90A-LABEL: v_shuffle_v3p0_v3p0__0_1_1:1520; GFX90A: ; %bb.0:1521; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1522; GFX90A-NEXT: v_mov_b32_e32 v6, 01523; GFX90A-NEXT: ;;#ASMSTART1524; GFX90A-NEXT: ; def v[0:5]1525; GFX90A-NEXT: ;;#ASMEND1526; GFX90A-NEXT: global_store_dwordx2 v6, v[2:3], s[16:17] offset:161527; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]1528; GFX90A-NEXT: s_waitcnt vmcnt(0)1529; GFX90A-NEXT: s_setpc_b64 s[30:31]1530;1531; GFX942-LABEL: v_shuffle_v3p0_v3p0__0_1_1:1532; GFX942: ; %bb.0:1533; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1534; GFX942-NEXT: v_mov_b32_e32 v6, 01535; GFX942-NEXT: ;;#ASMSTART1536; GFX942-NEXT: ; def v[0:5]1537; GFX942-NEXT: ;;#ASMEND1538; GFX942-NEXT: global_store_dwordx2 v6, v[2:3], s[0:1] offset:161539; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]1540; GFX942-NEXT: s_waitcnt vmcnt(0)1541; GFX942-NEXT: s_setpc_b64 s[30:31]1542 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1543 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 0, i32 1, i32 1>1544 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321545 ret void1546}1547 1548define void @v_shuffle_v3p0_v3p0__1_1_1(ptr addrspace(1) inreg %ptr) {1549; GFX900-LABEL: v_shuffle_v3p0_v3p0__1_1_1:1550; GFX900: ; %bb.0:1551; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1552; GFX900-NEXT: ;;#ASMSTART1553; GFX900-NEXT: ; def v[0:5]1554; GFX900-NEXT: ;;#ASMEND1555; GFX900-NEXT: v_mov_b32_e32 v6, 01556; GFX900-NEXT: v_mov_b32_e32 v4, v21557; GFX900-NEXT: v_mov_b32_e32 v5, v31558; GFX900-NEXT: global_store_dwordx2 v6, v[2:3], s[16:17] offset:161559; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1560; GFX900-NEXT: s_waitcnt vmcnt(0)1561; GFX900-NEXT: s_setpc_b64 s[30:31]1562;1563; GFX90A-LABEL: v_shuffle_v3p0_v3p0__1_1_1:1564; GFX90A: ; %bb.0:1565; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1566; GFX90A-NEXT: ;;#ASMSTART1567; GFX90A-NEXT: ; def v[0:5]1568; GFX90A-NEXT: ;;#ASMEND1569; GFX90A-NEXT: v_mov_b32_e32 v6, 01570; GFX90A-NEXT: v_mov_b32_e32 v4, v21571; GFX90A-NEXT: v_mov_b32_e32 v5, v31572; GFX90A-NEXT: global_store_dwordx2 v6, v[2:3], s[16:17] offset:161573; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]1574; GFX90A-NEXT: s_waitcnt vmcnt(0)1575; GFX90A-NEXT: s_setpc_b64 s[30:31]1576;1577; GFX942-LABEL: v_shuffle_v3p0_v3p0__1_1_1:1578; GFX942: ; %bb.0:1579; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1580; GFX942-NEXT: ;;#ASMSTART1581; GFX942-NEXT: ; def v[0:5]1582; GFX942-NEXT: ;;#ASMEND1583; GFX942-NEXT: v_mov_b32_e32 v6, 01584; GFX942-NEXT: v_mov_b32_e32 v4, v21585; GFX942-NEXT: v_mov_b32_e32 v5, v31586; GFX942-NEXT: global_store_dwordx2 v6, v[2:3], s[0:1] offset:161587; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]1588; GFX942-NEXT: s_waitcnt vmcnt(0)1589; GFX942-NEXT: s_setpc_b64 s[30:31]1590 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1591 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 1, i32 1, i32 1>1592 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321593 ret void1594}1595 1596define void @v_shuffle_v3p0_v3p0__2_1_1(ptr addrspace(1) inreg %ptr) {1597; GFX900-LABEL: v_shuffle_v3p0_v3p0__2_1_1:1598; GFX900: ; %bb.0:1599; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1600; GFX900-NEXT: v_mov_b32_e32 v8, 01601; GFX900-NEXT: ;;#ASMSTART1602; GFX900-NEXT: ; def v[0:5]1603; GFX900-NEXT: ;;#ASMEND1604; GFX900-NEXT: v_mov_b32_e32 v6, v21605; GFX900-NEXT: v_mov_b32_e32 v7, v31606; GFX900-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17] offset:161607; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]1608; GFX900-NEXT: s_waitcnt vmcnt(0)1609; GFX900-NEXT: s_setpc_b64 s[30:31]1610;1611; GFX90A-LABEL: v_shuffle_v3p0_v3p0__2_1_1:1612; GFX90A: ; %bb.0:1613; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1614; GFX90A-NEXT: v_mov_b32_e32 v8, 01615; GFX90A-NEXT: ;;#ASMSTART1616; GFX90A-NEXT: ; def v[0:5]1617; GFX90A-NEXT: ;;#ASMEND1618; GFX90A-NEXT: v_mov_b32_e32 v6, v21619; GFX90A-NEXT: v_mov_b32_e32 v7, v31620; GFX90A-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17] offset:161621; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]1622; GFX90A-NEXT: s_waitcnt vmcnt(0)1623; GFX90A-NEXT: s_setpc_b64 s[30:31]1624;1625; GFX942-LABEL: v_shuffle_v3p0_v3p0__2_1_1:1626; GFX942: ; %bb.0:1627; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1628; GFX942-NEXT: v_mov_b32_e32 v8, 01629; GFX942-NEXT: ;;#ASMSTART1630; GFX942-NEXT: ; def v[0:5]1631; GFX942-NEXT: ;;#ASMEND1632; GFX942-NEXT: global_store_dwordx2 v8, v[2:3], s[0:1] offset:161633; GFX942-NEXT: v_mov_b32_e32 v6, v21634; GFX942-NEXT: v_mov_b32_e32 v7, v31635; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]1636; GFX942-NEXT: s_waitcnt vmcnt(0)1637; GFX942-NEXT: s_setpc_b64 s[30:31]1638 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1639 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 2, i32 1, i32 1>1640 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321641 ret void1642}1643 1644define void @v_shuffle_v3p0_v3p0__3_1_1(ptr addrspace(1) inreg %ptr) {1645; GFX900-LABEL: v_shuffle_v3p0_v3p0__3_1_1:1646; GFX900: ; %bb.0:1647; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1648; GFX900-NEXT: v_mov_b32_e32 v6, 01649; GFX900-NEXT: ;;#ASMSTART1650; GFX900-NEXT: ; def v[0:5]1651; GFX900-NEXT: ;;#ASMEND1652; GFX900-NEXT: global_store_dwordx2 v6, v[2:3], s[16:17] offset:161653; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]1654; GFX900-NEXT: s_waitcnt vmcnt(0)1655; GFX900-NEXT: s_setpc_b64 s[30:31]1656;1657; GFX90A-LABEL: v_shuffle_v3p0_v3p0__3_1_1:1658; GFX90A: ; %bb.0:1659; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1660; GFX90A-NEXT: v_mov_b32_e32 v6, 01661; GFX90A-NEXT: ;;#ASMSTART1662; GFX90A-NEXT: ; def v[0:5]1663; GFX90A-NEXT: ;;#ASMEND1664; GFX90A-NEXT: global_store_dwordx2 v6, v[2:3], s[16:17] offset:161665; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]1666; GFX90A-NEXT: s_waitcnt vmcnt(0)1667; GFX90A-NEXT: s_setpc_b64 s[30:31]1668;1669; GFX942-LABEL: v_shuffle_v3p0_v3p0__3_1_1:1670; GFX942: ; %bb.0:1671; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1672; GFX942-NEXT: v_mov_b32_e32 v6, 01673; GFX942-NEXT: ;;#ASMSTART1674; GFX942-NEXT: ; def v[0:5]1675; GFX942-NEXT: ;;#ASMEND1676; GFX942-NEXT: global_store_dwordx2 v6, v[2:3], s[0:1] offset:161677; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]1678; GFX942-NEXT: s_waitcnt vmcnt(0)1679; GFX942-NEXT: s_setpc_b64 s[30:31]1680 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1681 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 3, i32 1, i32 1>1682 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321683 ret void1684}1685 1686define void @v_shuffle_v3p0_v3p0__4_1_1(ptr addrspace(1) inreg %ptr) {1687; GFX900-LABEL: v_shuffle_v3p0_v3p0__4_1_1:1688; GFX900: ; %bb.0:1689; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1690; GFX900-NEXT: ;;#ASMSTART1691; GFX900-NEXT: ; def v[0:5]1692; GFX900-NEXT: ;;#ASMEND1693; GFX900-NEXT: ;;#ASMSTART1694; GFX900-NEXT: ; def v[4:9]1695; GFX900-NEXT: ;;#ASMEND1696; GFX900-NEXT: v_mov_b32_e32 v10, 01697; GFX900-NEXT: v_mov_b32_e32 v8, v21698; GFX900-NEXT: v_mov_b32_e32 v9, v31699; GFX900-NEXT: global_store_dwordx2 v10, v[2:3], s[16:17] offset:161700; GFX900-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]1701; GFX900-NEXT: s_waitcnt vmcnt(0)1702; GFX900-NEXT: s_setpc_b64 s[30:31]1703;1704; GFX90A-LABEL: v_shuffle_v3p0_v3p0__4_1_1:1705; GFX90A: ; %bb.0:1706; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1707; GFX90A-NEXT: ;;#ASMSTART1708; GFX90A-NEXT: ; def v[0:5]1709; GFX90A-NEXT: ;;#ASMEND1710; GFX90A-NEXT: ;;#ASMSTART1711; GFX90A-NEXT: ; def v[4:9]1712; GFX90A-NEXT: ;;#ASMEND1713; GFX90A-NEXT: v_mov_b32_e32 v10, 01714; GFX90A-NEXT: v_mov_b32_e32 v8, v21715; GFX90A-NEXT: v_mov_b32_e32 v9, v31716; GFX90A-NEXT: global_store_dwordx2 v10, v[2:3], s[16:17] offset:161717; GFX90A-NEXT: global_store_dwordx4 v10, v[6:9], s[16:17]1718; GFX90A-NEXT: s_waitcnt vmcnt(0)1719; GFX90A-NEXT: s_setpc_b64 s[30:31]1720;1721; GFX942-LABEL: v_shuffle_v3p0_v3p0__4_1_1:1722; GFX942: ; %bb.0:1723; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1724; GFX942-NEXT: ;;#ASMSTART1725; GFX942-NEXT: ; def v[0:5]1726; GFX942-NEXT: ;;#ASMEND1727; GFX942-NEXT: v_mov_b32_e32 v10, 01728; GFX942-NEXT: ;;#ASMSTART1729; GFX942-NEXT: ; def v[4:9]1730; GFX942-NEXT: ;;#ASMEND1731; GFX942-NEXT: global_store_dwordx2 v10, v[2:3], s[0:1] offset:161732; GFX942-NEXT: v_mov_b32_e32 v8, v21733; GFX942-NEXT: v_mov_b32_e32 v9, v31734; GFX942-NEXT: global_store_dwordx4 v10, v[6:9], s[0:1]1735; GFX942-NEXT: s_waitcnt vmcnt(0)1736; GFX942-NEXT: s_setpc_b64 s[30:31]1737 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1738 %vec1 = call <3 x ptr> asm "; def $0", "=v"()1739 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 4, i32 1, i32 1>1740 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321741 ret void1742}1743 1744define void @v_shuffle_v3p0_v3p0__5_1_1(ptr addrspace(1) inreg %ptr) {1745; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_1_1:1746; GFX900: ; %bb.0:1747; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1748; GFX900-NEXT: ;;#ASMSTART1749; GFX900-NEXT: ; def v[4:9]1750; GFX900-NEXT: ;;#ASMEND1751; GFX900-NEXT: v_mov_b32_e32 v10, 01752; GFX900-NEXT: ;;#ASMSTART1753; GFX900-NEXT: ; def v[0:5]1754; GFX900-NEXT: ;;#ASMEND1755; GFX900-NEXT: global_store_dwordx2 v10, v[6:7], s[16:17] offset:161756; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]1757; GFX900-NEXT: s_waitcnt vmcnt(0)1758; GFX900-NEXT: s_setpc_b64 s[30:31]1759;1760; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_1_1:1761; GFX90A: ; %bb.0:1762; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1763; GFX90A-NEXT: ;;#ASMSTART1764; GFX90A-NEXT: ; def v[4:9]1765; GFX90A-NEXT: ;;#ASMEND1766; GFX90A-NEXT: v_mov_b32_e32 v10, 01767; GFX90A-NEXT: ;;#ASMSTART1768; GFX90A-NEXT: ; def v[0:5]1769; GFX90A-NEXT: ;;#ASMEND1770; GFX90A-NEXT: global_store_dwordx2 v10, v[6:7], s[16:17] offset:161771; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]1772; GFX90A-NEXT: s_waitcnt vmcnt(0)1773; GFX90A-NEXT: s_setpc_b64 s[30:31]1774;1775; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_1_1:1776; GFX942: ; %bb.0:1777; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1778; GFX942-NEXT: ;;#ASMSTART1779; GFX942-NEXT: ; def v[4:9]1780; GFX942-NEXT: ;;#ASMEND1781; GFX942-NEXT: v_mov_b32_e32 v10, 01782; GFX942-NEXT: ;;#ASMSTART1783; GFX942-NEXT: ; def v[0:5]1784; GFX942-NEXT: ;;#ASMEND1785; GFX942-NEXT: global_store_dwordx2 v10, v[6:7], s[0:1] offset:161786; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]1787; GFX942-NEXT: s_waitcnt vmcnt(0)1788; GFX942-NEXT: s_setpc_b64 s[30:31]1789 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1790 %vec1 = call <3 x ptr> asm "; def $0", "=v"()1791 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 1, i32 1>1792 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321793 ret void1794}1795 1796define void @v_shuffle_v3p0_v3p0__5_u_1(ptr addrspace(1) inreg %ptr) {1797; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_u_1:1798; GFX900: ; %bb.0:1799; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1800; GFX900-NEXT: ;;#ASMSTART1801; GFX900-NEXT: ; def v[4:9]1802; GFX900-NEXT: ;;#ASMEND1803; GFX900-NEXT: v_mov_b32_e32 v10, 01804; GFX900-NEXT: ;;#ASMSTART1805; GFX900-NEXT: ; def v[0:5]1806; GFX900-NEXT: ;;#ASMEND1807; GFX900-NEXT: global_store_dwordx2 v10, v[6:7], s[16:17] offset:161808; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]1809; GFX900-NEXT: s_waitcnt vmcnt(0)1810; GFX900-NEXT: s_setpc_b64 s[30:31]1811;1812; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_u_1:1813; GFX90A: ; %bb.0:1814; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1815; GFX90A-NEXT: ;;#ASMSTART1816; GFX90A-NEXT: ; def v[4:9]1817; GFX90A-NEXT: ;;#ASMEND1818; GFX90A-NEXT: v_mov_b32_e32 v10, 01819; GFX90A-NEXT: ;;#ASMSTART1820; GFX90A-NEXT: ; def v[0:5]1821; GFX90A-NEXT: ;;#ASMEND1822; GFX90A-NEXT: global_store_dwordx2 v10, v[6:7], s[16:17] offset:161823; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]1824; GFX90A-NEXT: s_waitcnt vmcnt(0)1825; GFX90A-NEXT: s_setpc_b64 s[30:31]1826;1827; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_u_1:1828; GFX942: ; %bb.0:1829; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1830; GFX942-NEXT: ;;#ASMSTART1831; GFX942-NEXT: ; def v[4:9]1832; GFX942-NEXT: ;;#ASMEND1833; GFX942-NEXT: v_mov_b32_e32 v10, 01834; GFX942-NEXT: ;;#ASMSTART1835; GFX942-NEXT: ; def v[0:5]1836; GFX942-NEXT: ;;#ASMEND1837; GFX942-NEXT: global_store_dwordx2 v10, v[6:7], s[0:1] offset:161838; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]1839; GFX942-NEXT: s_waitcnt vmcnt(0)1840; GFX942-NEXT: s_setpc_b64 s[30:31]1841 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1842 %vec1 = call <3 x ptr> asm "; def $0", "=v"()1843 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 poison, i32 1>1844 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321845 ret void1846}1847 1848define void @v_shuffle_v3p0_v3p0__5_0_1(ptr addrspace(1) inreg %ptr) {1849; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_0_1:1850; GFX900: ; %bb.0:1851; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1852; GFX900-NEXT: v_mov_b32_e32 v12, 01853; GFX900-NEXT: ;;#ASMSTART1854; GFX900-NEXT: ; def v[6:11]1855; GFX900-NEXT: ;;#ASMEND1856; GFX900-NEXT: ;;#ASMSTART1857; GFX900-NEXT: ; def v[0:5]1858; GFX900-NEXT: ;;#ASMEND1859; GFX900-NEXT: global_store_dwordx2 v12, v[8:9], s[16:17] offset:161860; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]1861; GFX900-NEXT: s_waitcnt vmcnt(0)1862; GFX900-NEXT: s_setpc_b64 s[30:31]1863;1864; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_0_1:1865; GFX90A: ; %bb.0:1866; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1867; GFX90A-NEXT: v_mov_b32_e32 v12, 01868; GFX90A-NEXT: ;;#ASMSTART1869; GFX90A-NEXT: ; def v[6:11]1870; GFX90A-NEXT: ;;#ASMEND1871; GFX90A-NEXT: ;;#ASMSTART1872; GFX90A-NEXT: ; def v[0:5]1873; GFX90A-NEXT: ;;#ASMEND1874; GFX90A-NEXT: global_store_dwordx2 v12, v[8:9], s[16:17] offset:161875; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]1876; GFX90A-NEXT: s_waitcnt vmcnt(0)1877; GFX90A-NEXT: s_setpc_b64 s[30:31]1878;1879; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_0_1:1880; GFX942: ; %bb.0:1881; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1882; GFX942-NEXT: v_mov_b32_e32 v12, 01883; GFX942-NEXT: ;;#ASMSTART1884; GFX942-NEXT: ; def v[6:11]1885; GFX942-NEXT: ;;#ASMEND1886; GFX942-NEXT: ;;#ASMSTART1887; GFX942-NEXT: ; def v[0:5]1888; GFX942-NEXT: ;;#ASMEND1889; GFX942-NEXT: global_store_dwordx2 v12, v[8:9], s[0:1] offset:161890; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]1891; GFX942-NEXT: s_waitcnt vmcnt(0)1892; GFX942-NEXT: s_setpc_b64 s[30:31]1893 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1894 %vec1 = call <3 x ptr> asm "; def $0", "=v"()1895 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 0, i32 1>1896 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321897 ret void1898}1899 1900define void @v_shuffle_v3p0_v3p0__5_2_1(ptr addrspace(1) inreg %ptr) {1901; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_2_1:1902; GFX900: ; %bb.0:1903; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1904; GFX900-NEXT: v_mov_b32_e32 v10, 01905; GFX900-NEXT: ;;#ASMSTART1906; GFX900-NEXT: ; def v[4:9]1907; GFX900-NEXT: ;;#ASMEND1908; GFX900-NEXT: global_store_dwordx2 v10, v[6:7], s[16:17] offset:161909; GFX900-NEXT: v_mov_b32_e32 v6, v81910; GFX900-NEXT: v_mov_b32_e32 v7, v91911; GFX900-NEXT: ;;#ASMSTART1912; GFX900-NEXT: ; def v[0:5]1913; GFX900-NEXT: ;;#ASMEND1914; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]1915; GFX900-NEXT: s_waitcnt vmcnt(0)1916; GFX900-NEXT: s_setpc_b64 s[30:31]1917;1918; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_2_1:1919; GFX90A: ; %bb.0:1920; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1921; GFX90A-NEXT: v_mov_b32_e32 v10, 01922; GFX90A-NEXT: ;;#ASMSTART1923; GFX90A-NEXT: ; def v[4:9]1924; GFX90A-NEXT: ;;#ASMEND1925; GFX90A-NEXT: global_store_dwordx2 v10, v[6:7], s[16:17] offset:161926; GFX90A-NEXT: v_mov_b32_e32 v6, v81927; GFX90A-NEXT: v_mov_b32_e32 v7, v91928; GFX90A-NEXT: ;;#ASMSTART1929; GFX90A-NEXT: ; def v[0:5]1930; GFX90A-NEXT: ;;#ASMEND1931; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]1932; GFX90A-NEXT: s_waitcnt vmcnt(0)1933; GFX90A-NEXT: s_setpc_b64 s[30:31]1934;1935; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_2_1:1936; GFX942: ; %bb.0:1937; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1938; GFX942-NEXT: v_mov_b32_e32 v10, 01939; GFX942-NEXT: ;;#ASMSTART1940; GFX942-NEXT: ; def v[4:9]1941; GFX942-NEXT: ;;#ASMEND1942; GFX942-NEXT: global_store_dwordx2 v10, v[6:7], s[0:1] offset:161943; GFX942-NEXT: v_mov_b32_e32 v6, v81944; GFX942-NEXT: v_mov_b32_e32 v7, v91945; GFX942-NEXT: ;;#ASMSTART1946; GFX942-NEXT: ; def v[0:5]1947; GFX942-NEXT: ;;#ASMEND1948; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]1949; GFX942-NEXT: s_waitcnt vmcnt(0)1950; GFX942-NEXT: s_setpc_b64 s[30:31]1951 %vec0 = call <3 x ptr> asm "; def $0", "=v"()1952 %vec1 = call <3 x ptr> asm "; def $0", "=v"()1953 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 2, i32 1>1954 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 321955 ret void1956}1957 1958define void @v_shuffle_v3p0_v3p0__5_3_1(ptr addrspace(1) inreg %ptr) {1959; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_3_1:1960; GFX900: ; %bb.0:1961; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1962; GFX900-NEXT: v_mov_b32_e32 v10, 01963; GFX900-NEXT: ;;#ASMSTART1964; GFX900-NEXT: ; def v[4:9]1965; GFX900-NEXT: ;;#ASMEND1966; GFX900-NEXT: ;;#ASMSTART1967; GFX900-NEXT: ; def v[0:5]1968; GFX900-NEXT: ;;#ASMEND1969; GFX900-NEXT: global_store_dwordx2 v10, v[6:7], s[16:17] offset:161970; GFX900-NEXT: v_mov_b32_e32 v6, v01971; GFX900-NEXT: v_mov_b32_e32 v7, v11972; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]1973; GFX900-NEXT: s_waitcnt vmcnt(0)1974; GFX900-NEXT: s_setpc_b64 s[30:31]1975;1976; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_3_1:1977; GFX90A: ; %bb.0:1978; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1979; GFX90A-NEXT: v_mov_b32_e32 v10, 01980; GFX90A-NEXT: ;;#ASMSTART1981; GFX90A-NEXT: ; def v[4:9]1982; GFX90A-NEXT: ;;#ASMEND1983; GFX90A-NEXT: ;;#ASMSTART1984; GFX90A-NEXT: ; def v[0:5]1985; GFX90A-NEXT: ;;#ASMEND1986; GFX90A-NEXT: global_store_dwordx2 v10, v[6:7], s[16:17] offset:161987; GFX90A-NEXT: v_mov_b32_e32 v6, v01988; GFX90A-NEXT: v_mov_b32_e32 v7, v11989; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]1990; GFX90A-NEXT: s_waitcnt vmcnt(0)1991; GFX90A-NEXT: s_setpc_b64 s[30:31]1992;1993; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_3_1:1994; GFX942: ; %bb.0:1995; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1996; GFX942-NEXT: v_mov_b32_e32 v10, 01997; GFX942-NEXT: ;;#ASMSTART1998; GFX942-NEXT: ; def v[4:9]1999; GFX942-NEXT: ;;#ASMEND2000; GFX942-NEXT: global_store_dwordx2 v10, v[6:7], s[0:1] offset:162001; GFX942-NEXT: ;;#ASMSTART2002; GFX942-NEXT: ; def v[0:5]2003; GFX942-NEXT: ;;#ASMEND2004; GFX942-NEXT: s_nop 02005; GFX942-NEXT: v_mov_b32_e32 v6, v02006; GFX942-NEXT: v_mov_b32_e32 v7, v12007; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]2008; GFX942-NEXT: s_waitcnt vmcnt(0)2009; GFX942-NEXT: s_setpc_b64 s[30:31]2010 %vec0 = call <3 x ptr> asm "; def $0", "=v"()2011 %vec1 = call <3 x ptr> asm "; def $0", "=v"()2012 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 3, i32 1>2013 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 322014 ret void2015}2016 2017define void @v_shuffle_v3p0_v3p0__5_4_1(ptr addrspace(1) inreg %ptr) {2018; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_4_1:2019; GFX900: ; %bb.0:2020; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2021; GFX900-NEXT: v_mov_b32_e32 v10, 02022; GFX900-NEXT: ;;#ASMSTART2023; GFX900-NEXT: ; def v[4:9]2024; GFX900-NEXT: ;;#ASMEND2025; GFX900-NEXT: ;;#ASMSTART2026; GFX900-NEXT: ; def v[0:5]2027; GFX900-NEXT: ;;#ASMEND2028; GFX900-NEXT: global_store_dwordx2 v10, v[6:7], s[16:17] offset:162029; GFX900-NEXT: v_mov_b32_e32 v6, v22030; GFX900-NEXT: v_mov_b32_e32 v7, v32031; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]2032; GFX900-NEXT: s_waitcnt vmcnt(0)2033; GFX900-NEXT: s_setpc_b64 s[30:31]2034;2035; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_4_1:2036; GFX90A: ; %bb.0:2037; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2038; GFX90A-NEXT: v_mov_b32_e32 v10, 02039; GFX90A-NEXT: ;;#ASMSTART2040; GFX90A-NEXT: ; def v[4:9]2041; GFX90A-NEXT: ;;#ASMEND2042; GFX90A-NEXT: ;;#ASMSTART2043; GFX90A-NEXT: ; def v[0:5]2044; GFX90A-NEXT: ;;#ASMEND2045; GFX90A-NEXT: global_store_dwordx2 v10, v[6:7], s[16:17] offset:162046; GFX90A-NEXT: v_mov_b32_e32 v6, v22047; GFX90A-NEXT: v_mov_b32_e32 v7, v32048; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]2049; GFX90A-NEXT: s_waitcnt vmcnt(0)2050; GFX90A-NEXT: s_setpc_b64 s[30:31]2051;2052; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_4_1:2053; GFX942: ; %bb.0:2054; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2055; GFX942-NEXT: v_mov_b32_e32 v10, 02056; GFX942-NEXT: ;;#ASMSTART2057; GFX942-NEXT: ; def v[4:9]2058; GFX942-NEXT: ;;#ASMEND2059; GFX942-NEXT: global_store_dwordx2 v10, v[6:7], s[0:1] offset:162060; GFX942-NEXT: ;;#ASMSTART2061; GFX942-NEXT: ; def v[0:5]2062; GFX942-NEXT: ;;#ASMEND2063; GFX942-NEXT: s_nop 02064; GFX942-NEXT: v_mov_b32_e32 v6, v22065; GFX942-NEXT: v_mov_b32_e32 v7, v32066; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]2067; GFX942-NEXT: s_waitcnt vmcnt(0)2068; GFX942-NEXT: s_setpc_b64 s[30:31]2069 %vec0 = call <3 x ptr> asm "; def $0", "=v"()2070 %vec1 = call <3 x ptr> asm "; def $0", "=v"()2071 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 4, i32 1>2072 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 322073 ret void2074}2075 2076define void @v_shuffle_v3p0_v3p0__u_2_2(ptr addrspace(1) inreg %ptr) {2077; GFX900-LABEL: v_shuffle_v3p0_v3p0__u_2_2:2078; GFX900: ; %bb.0:2079; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2080; GFX900-NEXT: v_mov_b32_e32 v6, 02081; GFX900-NEXT: ;;#ASMSTART2082; GFX900-NEXT: ; def v[0:5]2083; GFX900-NEXT: ;;#ASMEND2084; GFX900-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17] offset:162085; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]2086; GFX900-NEXT: s_waitcnt vmcnt(0)2087; GFX900-NEXT: s_setpc_b64 s[30:31]2088;2089; GFX90A-LABEL: v_shuffle_v3p0_v3p0__u_2_2:2090; GFX90A: ; %bb.0:2091; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2092; GFX90A-NEXT: v_mov_b32_e32 v6, 02093; GFX90A-NEXT: ;;#ASMSTART2094; GFX90A-NEXT: ; def v[0:5]2095; GFX90A-NEXT: ;;#ASMEND2096; GFX90A-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17] offset:162097; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]2098; GFX90A-NEXT: s_waitcnt vmcnt(0)2099; GFX90A-NEXT: s_setpc_b64 s[30:31]2100;2101; GFX942-LABEL: v_shuffle_v3p0_v3p0__u_2_2:2102; GFX942: ; %bb.0:2103; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2104; GFX942-NEXT: v_mov_b32_e32 v6, 02105; GFX942-NEXT: ;;#ASMSTART2106; GFX942-NEXT: ; def v[0:5]2107; GFX942-NEXT: ;;#ASMEND2108; GFX942-NEXT: global_store_dwordx2 v6, v[4:5], s[0:1] offset:162109; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]2110; GFX942-NEXT: s_waitcnt vmcnt(0)2111; GFX942-NEXT: s_setpc_b64 s[30:31]2112 %vec0 = call <3 x ptr> asm "; def $0", "=v"()2113 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 poison, i32 2, i32 2>2114 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 322115 ret void2116}2117 2118define void @v_shuffle_v3p0_v3p0__0_2_2(ptr addrspace(1) inreg %ptr) {2119; GFX900-LABEL: v_shuffle_v3p0_v3p0__0_2_2:2120; GFX900: ; %bb.0:2121; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2122; GFX900-NEXT: ;;#ASMSTART2123; GFX900-NEXT: ; def v[0:5]2124; GFX900-NEXT: ;;#ASMEND2125; GFX900-NEXT: v_mov_b32_e32 v6, 02126; GFX900-NEXT: v_mov_b32_e32 v2, v42127; GFX900-NEXT: v_mov_b32_e32 v3, v52128; GFX900-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17] offset:162129; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]2130; GFX900-NEXT: s_waitcnt vmcnt(0)2131; GFX900-NEXT: s_setpc_b64 s[30:31]2132;2133; GFX90A-LABEL: v_shuffle_v3p0_v3p0__0_2_2:2134; GFX90A: ; %bb.0:2135; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2136; GFX90A-NEXT: ;;#ASMSTART2137; GFX90A-NEXT: ; def v[0:5]2138; GFX90A-NEXT: ;;#ASMEND2139; GFX90A-NEXT: v_mov_b32_e32 v6, 02140; GFX90A-NEXT: v_mov_b32_e32 v2, v42141; GFX90A-NEXT: v_mov_b32_e32 v3, v52142; GFX90A-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17] offset:162143; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]2144; GFX90A-NEXT: s_waitcnt vmcnt(0)2145; GFX90A-NEXT: s_setpc_b64 s[30:31]2146;2147; GFX942-LABEL: v_shuffle_v3p0_v3p0__0_2_2:2148; GFX942: ; %bb.0:2149; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2150; GFX942-NEXT: ;;#ASMSTART2151; GFX942-NEXT: ; def v[0:5]2152; GFX942-NEXT: ;;#ASMEND2153; GFX942-NEXT: v_mov_b32_e32 v6, 02154; GFX942-NEXT: v_mov_b32_e32 v2, v42155; GFX942-NEXT: v_mov_b32_e32 v3, v52156; GFX942-NEXT: global_store_dwordx2 v6, v[4:5], s[0:1] offset:162157; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]2158; GFX942-NEXT: s_waitcnt vmcnt(0)2159; GFX942-NEXT: s_setpc_b64 s[30:31]2160 %vec0 = call <3 x ptr> asm "; def $0", "=v"()2161 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 0, i32 2, i32 2>2162 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 322163 ret void2164}2165 2166define void @v_shuffle_v3p0_v3p0__1_2_2(ptr addrspace(1) inreg %ptr) {2167; GFX900-LABEL: v_shuffle_v3p0_v3p0__1_2_2:2168; GFX900: ; %bb.0:2169; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2170; GFX900-NEXT: v_mov_b32_e32 v6, 02171; GFX900-NEXT: ;;#ASMSTART2172; GFX900-NEXT: ; def v[0:5]2173; GFX900-NEXT: ;;#ASMEND2174; GFX900-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17] offset:162175; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]2176; GFX900-NEXT: s_waitcnt vmcnt(0)2177; GFX900-NEXT: s_setpc_b64 s[30:31]2178;2179; GFX90A-LABEL: v_shuffle_v3p0_v3p0__1_2_2:2180; GFX90A: ; %bb.0:2181; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2182; GFX90A-NEXT: v_mov_b32_e32 v6, 02183; GFX90A-NEXT: ;;#ASMSTART2184; GFX90A-NEXT: ; def v[0:5]2185; GFX90A-NEXT: ;;#ASMEND2186; GFX90A-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17] offset:162187; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]2188; GFX90A-NEXT: s_waitcnt vmcnt(0)2189; GFX90A-NEXT: s_setpc_b64 s[30:31]2190;2191; GFX942-LABEL: v_shuffle_v3p0_v3p0__1_2_2:2192; GFX942: ; %bb.0:2193; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2194; GFX942-NEXT: v_mov_b32_e32 v6, 02195; GFX942-NEXT: ;;#ASMSTART2196; GFX942-NEXT: ; def v[0:5]2197; GFX942-NEXT: ;;#ASMEND2198; GFX942-NEXT: global_store_dwordx2 v6, v[4:5], s[0:1] offset:162199; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]2200; GFX942-NEXT: s_waitcnt vmcnt(0)2201; GFX942-NEXT: s_setpc_b64 s[30:31]2202 %vec0 = call <3 x ptr> asm "; def $0", "=v"()2203 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 1, i32 2, i32 2>2204 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 322205 ret void2206}2207 2208define void @v_shuffle_v3p0_v3p0__2_2_2(ptr addrspace(1) inreg %ptr) {2209; GFX900-LABEL: v_shuffle_v3p0_v3p0__2_2_2:2210; GFX900: ; %bb.0:2211; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2212; GFX900-NEXT: v_mov_b32_e32 v8, 02213; GFX900-NEXT: ;;#ASMSTART2214; GFX900-NEXT: ; def v[0:5]2215; GFX900-NEXT: ;;#ASMEND2216; GFX900-NEXT: v_mov_b32_e32 v6, v42217; GFX900-NEXT: v_mov_b32_e32 v7, v52218; GFX900-NEXT: global_store_dwordx2 v8, v[4:5], s[16:17] offset:162219; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]2220; GFX900-NEXT: s_waitcnt vmcnt(0)2221; GFX900-NEXT: s_setpc_b64 s[30:31]2222;2223; GFX90A-LABEL: v_shuffle_v3p0_v3p0__2_2_2:2224; GFX90A: ; %bb.0:2225; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2226; GFX90A-NEXT: v_mov_b32_e32 v8, 02227; GFX90A-NEXT: ;;#ASMSTART2228; GFX90A-NEXT: ; def v[0:5]2229; GFX90A-NEXT: ;;#ASMEND2230; GFX90A-NEXT: v_mov_b32_e32 v6, v42231; GFX90A-NEXT: v_mov_b32_e32 v7, v52232; GFX90A-NEXT: global_store_dwordx2 v8, v[4:5], s[16:17] offset:162233; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]2234; GFX90A-NEXT: s_waitcnt vmcnt(0)2235; GFX90A-NEXT: s_setpc_b64 s[30:31]2236;2237; GFX942-LABEL: v_shuffle_v3p0_v3p0__2_2_2:2238; GFX942: ; %bb.0:2239; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2240; GFX942-NEXT: v_mov_b32_e32 v8, 02241; GFX942-NEXT: ;;#ASMSTART2242; GFX942-NEXT: ; def v[0:5]2243; GFX942-NEXT: ;;#ASMEND2244; GFX942-NEXT: global_store_dwordx2 v8, v[4:5], s[0:1] offset:162245; GFX942-NEXT: v_mov_b32_e32 v6, v42246; GFX942-NEXT: v_mov_b32_e32 v7, v52247; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]2248; GFX942-NEXT: s_waitcnt vmcnt(0)2249; GFX942-NEXT: s_setpc_b64 s[30:31]2250 %vec0 = call <3 x ptr> asm "; def $0", "=v"()2251 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 2, i32 2, i32 2>2252 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 322253 ret void2254}2255 2256define void @v_shuffle_v3p0_v3p0__3_2_2(ptr addrspace(1) inreg %ptr) {2257; GFX900-LABEL: v_shuffle_v3p0_v3p0__3_2_2:2258; GFX900: ; %bb.0:2259; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2260; GFX900-NEXT: v_mov_b32_e32 v6, 02261; GFX900-NEXT: ;;#ASMSTART2262; GFX900-NEXT: ; def v[0:5]2263; GFX900-NEXT: ;;#ASMEND2264; GFX900-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17] offset:162265; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]2266; GFX900-NEXT: s_waitcnt vmcnt(0)2267; GFX900-NEXT: s_setpc_b64 s[30:31]2268;2269; GFX90A-LABEL: v_shuffle_v3p0_v3p0__3_2_2:2270; GFX90A: ; %bb.0:2271; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2272; GFX90A-NEXT: v_mov_b32_e32 v6, 02273; GFX90A-NEXT: ;;#ASMSTART2274; GFX90A-NEXT: ; def v[0:5]2275; GFX90A-NEXT: ;;#ASMEND2276; GFX90A-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17] offset:162277; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]2278; GFX90A-NEXT: s_waitcnt vmcnt(0)2279; GFX90A-NEXT: s_setpc_b64 s[30:31]2280;2281; GFX942-LABEL: v_shuffle_v3p0_v3p0__3_2_2:2282; GFX942: ; %bb.0:2283; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2284; GFX942-NEXT: v_mov_b32_e32 v6, 02285; GFX942-NEXT: ;;#ASMSTART2286; GFX942-NEXT: ; def v[0:5]2287; GFX942-NEXT: ;;#ASMEND2288; GFX942-NEXT: global_store_dwordx2 v6, v[4:5], s[0:1] offset:162289; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]2290; GFX942-NEXT: s_waitcnt vmcnt(0)2291; GFX942-NEXT: s_setpc_b64 s[30:31]2292 %vec0 = call <3 x ptr> asm "; def $0", "=v"()2293 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 3, i32 2, i32 2>2294 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 322295 ret void2296}2297 2298define void @v_shuffle_v3p0_v3p0__4_2_2(ptr addrspace(1) inreg %ptr) {2299; GFX900-LABEL: v_shuffle_v3p0_v3p0__4_2_2:2300; GFX900: ; %bb.0:2301; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2302; GFX900-NEXT: ;;#ASMSTART2303; GFX900-NEXT: ; def v[6:11]2304; GFX900-NEXT: ;;#ASMEND2305; GFX900-NEXT: v_mov_b32_e32 v12, 02306; GFX900-NEXT: ;;#ASMSTART2307; GFX900-NEXT: ; def v[0:5]2308; GFX900-NEXT: ;;#ASMEND2309; GFX900-NEXT: v_mov_b32_e32 v10, v42310; GFX900-NEXT: v_mov_b32_e32 v11, v52311; GFX900-NEXT: global_store_dwordx2 v12, v[4:5], s[16:17] offset:162312; GFX900-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17]2313; GFX900-NEXT: s_waitcnt vmcnt(0)2314; GFX900-NEXT: s_setpc_b64 s[30:31]2315;2316; GFX90A-LABEL: v_shuffle_v3p0_v3p0__4_2_2:2317; GFX90A: ; %bb.0:2318; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2319; GFX90A-NEXT: ;;#ASMSTART2320; GFX90A-NEXT: ; def v[6:11]2321; GFX90A-NEXT: ;;#ASMEND2322; GFX90A-NEXT: v_mov_b32_e32 v12, 02323; GFX90A-NEXT: ;;#ASMSTART2324; GFX90A-NEXT: ; def v[0:5]2325; GFX90A-NEXT: ;;#ASMEND2326; GFX90A-NEXT: v_mov_b32_e32 v10, v42327; GFX90A-NEXT: v_mov_b32_e32 v11, v52328; GFX90A-NEXT: global_store_dwordx2 v12, v[4:5], s[16:17] offset:162329; GFX90A-NEXT: global_store_dwordx4 v12, v[8:11], s[16:17]2330; GFX90A-NEXT: s_waitcnt vmcnt(0)2331; GFX90A-NEXT: s_setpc_b64 s[30:31]2332;2333; GFX942-LABEL: v_shuffle_v3p0_v3p0__4_2_2:2334; GFX942: ; %bb.0:2335; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2336; GFX942-NEXT: ;;#ASMSTART2337; GFX942-NEXT: ; def v[6:11]2338; GFX942-NEXT: ;;#ASMEND2339; GFX942-NEXT: v_mov_b32_e32 v12, 02340; GFX942-NEXT: ;;#ASMSTART2341; GFX942-NEXT: ; def v[0:5]2342; GFX942-NEXT: ;;#ASMEND2343; GFX942-NEXT: global_store_dwordx2 v12, v[4:5], s[0:1] offset:162344; GFX942-NEXT: v_mov_b32_e32 v10, v42345; GFX942-NEXT: v_mov_b32_e32 v11, v52346; GFX942-NEXT: global_store_dwordx4 v12, v[8:11], s[0:1]2347; GFX942-NEXT: s_waitcnt vmcnt(0)2348; GFX942-NEXT: s_setpc_b64 s[30:31]2349 %vec0 = call <3 x ptr> asm "; def $0", "=v"()2350 %vec1 = call <3 x ptr> asm "; def $0", "=v"()2351 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 4, i32 2, i32 2>2352 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 322353 ret void2354}2355 2356define void @v_shuffle_v3p0_v3p0__5_2_2(ptr addrspace(1) inreg %ptr) {2357; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_2_2:2358; GFX900: ; %bb.0:2359; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2360; GFX900-NEXT: ;;#ASMSTART2361; GFX900-NEXT: ; def v[2:7]2362; GFX900-NEXT: ;;#ASMEND2363; GFX900-NEXT: v_mov_b32_e32 v8, 02364; GFX900-NEXT: ;;#ASMSTART2365; GFX900-NEXT: ; def v[0:5]2366; GFX900-NEXT: ;;#ASMEND2367; GFX900-NEXT: global_store_dwordx2 v8, v[6:7], s[16:17] offset:162368; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]2369; GFX900-NEXT: s_waitcnt vmcnt(0)2370; GFX900-NEXT: s_setpc_b64 s[30:31]2371;2372; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_2_2:2373; GFX90A: ; %bb.0:2374; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2375; GFX90A-NEXT: ;;#ASMSTART2376; GFX90A-NEXT: ; def v[2:7]2377; GFX90A-NEXT: ;;#ASMEND2378; GFX90A-NEXT: v_mov_b32_e32 v8, 02379; GFX90A-NEXT: ;;#ASMSTART2380; GFX90A-NEXT: ; def v[0:5]2381; GFX90A-NEXT: ;;#ASMEND2382; GFX90A-NEXT: global_store_dwordx2 v8, v[6:7], s[16:17] offset:162383; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]2384; GFX90A-NEXT: s_waitcnt vmcnt(0)2385; GFX90A-NEXT: s_setpc_b64 s[30:31]2386;2387; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_2_2:2388; GFX942: ; %bb.0:2389; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2390; GFX942-NEXT: ;;#ASMSTART2391; GFX942-NEXT: ; def v[2:7]2392; GFX942-NEXT: ;;#ASMEND2393; GFX942-NEXT: v_mov_b32_e32 v8, 02394; GFX942-NEXT: ;;#ASMSTART2395; GFX942-NEXT: ; def v[0:5]2396; GFX942-NEXT: ;;#ASMEND2397; GFX942-NEXT: global_store_dwordx2 v8, v[6:7], s[0:1] offset:162398; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]2399; GFX942-NEXT: s_waitcnt vmcnt(0)2400; GFX942-NEXT: s_setpc_b64 s[30:31]2401 %vec0 = call <3 x ptr> asm "; def $0", "=v"()2402 %vec1 = call <3 x ptr> asm "; def $0", "=v"()2403 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 2, i32 2>2404 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 322405 ret void2406}2407 2408define void @v_shuffle_v3p0_v3p0__5_u_2(ptr addrspace(1) inreg %ptr) {2409; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_u_2:2410; GFX900: ; %bb.0:2411; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2412; GFX900-NEXT: ;;#ASMSTART2413; GFX900-NEXT: ; def v[2:7]2414; GFX900-NEXT: ;;#ASMEND2415; GFX900-NEXT: v_mov_b32_e32 v8, 02416; GFX900-NEXT: ;;#ASMSTART2417; GFX900-NEXT: ; def v[0:5]2418; GFX900-NEXT: ;;#ASMEND2419; GFX900-NEXT: global_store_dwordx2 v8, v[6:7], s[16:17] offset:162420; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]2421; GFX900-NEXT: s_waitcnt vmcnt(0)2422; GFX900-NEXT: s_setpc_b64 s[30:31]2423;2424; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_u_2:2425; GFX90A: ; %bb.0:2426; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2427; GFX90A-NEXT: ;;#ASMSTART2428; GFX90A-NEXT: ; def v[2:7]2429; GFX90A-NEXT: ;;#ASMEND2430; GFX90A-NEXT: v_mov_b32_e32 v8, 02431; GFX90A-NEXT: ;;#ASMSTART2432; GFX90A-NEXT: ; def v[0:5]2433; GFX90A-NEXT: ;;#ASMEND2434; GFX90A-NEXT: global_store_dwordx2 v8, v[6:7], s[16:17] offset:162435; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]2436; GFX90A-NEXT: s_waitcnt vmcnt(0)2437; GFX90A-NEXT: s_setpc_b64 s[30:31]2438;2439; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_u_2:2440; GFX942: ; %bb.0:2441; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2442; GFX942-NEXT: ;;#ASMSTART2443; GFX942-NEXT: ; def v[2:7]2444; GFX942-NEXT: ;;#ASMEND2445; GFX942-NEXT: v_mov_b32_e32 v8, 02446; GFX942-NEXT: ;;#ASMSTART2447; GFX942-NEXT: ; def v[0:5]2448; GFX942-NEXT: ;;#ASMEND2449; GFX942-NEXT: global_store_dwordx2 v8, v[6:7], s[0:1] offset:162450; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]2451; GFX942-NEXT: s_waitcnt vmcnt(0)2452; GFX942-NEXT: s_setpc_b64 s[30:31]2453 %vec0 = call <3 x ptr> asm "; def $0", "=v"()2454 %vec1 = call <3 x ptr> asm "; def $0", "=v"()2455 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 poison, i32 2>2456 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 322457 ret void2458}2459 2460define void @v_shuffle_v3p0_v3p0__5_0_2(ptr addrspace(1) inreg %ptr) {2461; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_0_2:2462; GFX900: ; %bb.0:2463; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2464; GFX900-NEXT: v_mov_b32_e32 v12, 02465; GFX900-NEXT: ;;#ASMSTART2466; GFX900-NEXT: ; def v[6:11]2467; GFX900-NEXT: ;;#ASMEND2468; GFX900-NEXT: ;;#ASMSTART2469; GFX900-NEXT: ; def v[0:5]2470; GFX900-NEXT: ;;#ASMEND2471; GFX900-NEXT: global_store_dwordx2 v12, v[10:11], s[16:17] offset:162472; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]2473; GFX900-NEXT: s_waitcnt vmcnt(0)2474; GFX900-NEXT: s_setpc_b64 s[30:31]2475;2476; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_0_2:2477; GFX90A: ; %bb.0:2478; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2479; GFX90A-NEXT: v_mov_b32_e32 v12, 02480; GFX90A-NEXT: ;;#ASMSTART2481; GFX90A-NEXT: ; def v[6:11]2482; GFX90A-NEXT: ;;#ASMEND2483; GFX90A-NEXT: ;;#ASMSTART2484; GFX90A-NEXT: ; def v[0:5]2485; GFX90A-NEXT: ;;#ASMEND2486; GFX90A-NEXT: global_store_dwordx2 v12, v[10:11], s[16:17] offset:162487; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]2488; GFX90A-NEXT: s_waitcnt vmcnt(0)2489; GFX90A-NEXT: s_setpc_b64 s[30:31]2490;2491; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_0_2:2492; GFX942: ; %bb.0:2493; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2494; GFX942-NEXT: v_mov_b32_e32 v12, 02495; GFX942-NEXT: ;;#ASMSTART2496; GFX942-NEXT: ; def v[6:11]2497; GFX942-NEXT: ;;#ASMEND2498; GFX942-NEXT: ;;#ASMSTART2499; GFX942-NEXT: ; def v[0:5]2500; GFX942-NEXT: ;;#ASMEND2501; GFX942-NEXT: global_store_dwordx2 v12, v[10:11], s[0:1] offset:162502; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]2503; GFX942-NEXT: s_waitcnt vmcnt(0)2504; GFX942-NEXT: s_setpc_b64 s[30:31]2505 %vec0 = call <3 x ptr> asm "; def $0", "=v"()2506 %vec1 = call <3 x ptr> asm "; def $0", "=v"()2507 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 0, i32 2>2508 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 322509 ret void2510}2511 2512define void @v_shuffle_v3p0_v3p0__5_1_2(ptr addrspace(1) inreg %ptr) {2513; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_1_2:2514; GFX900: ; %bb.0:2515; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2516; GFX900-NEXT: v_mov_b32_e32 v10, 02517; GFX900-NEXT: ;;#ASMSTART2518; GFX900-NEXT: ; def v[4:9]2519; GFX900-NEXT: ;;#ASMEND2520; GFX900-NEXT: ;;#ASMSTART2521; GFX900-NEXT: ; def v[0:5]2522; GFX900-NEXT: ;;#ASMEND2523; GFX900-NEXT: global_store_dwordx2 v10, v[8:9], s[16:17] offset:162524; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]2525; GFX900-NEXT: s_waitcnt vmcnt(0)2526; GFX900-NEXT: s_setpc_b64 s[30:31]2527;2528; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_1_2:2529; GFX90A: ; %bb.0:2530; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2531; GFX90A-NEXT: v_mov_b32_e32 v10, 02532; GFX90A-NEXT: ;;#ASMSTART2533; GFX90A-NEXT: ; def v[4:9]2534; GFX90A-NEXT: ;;#ASMEND2535; GFX90A-NEXT: ;;#ASMSTART2536; GFX90A-NEXT: ; def v[0:5]2537; GFX90A-NEXT: ;;#ASMEND2538; GFX90A-NEXT: global_store_dwordx2 v10, v[8:9], s[16:17] offset:162539; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]2540; GFX90A-NEXT: s_waitcnt vmcnt(0)2541; GFX90A-NEXT: s_setpc_b64 s[30:31]2542;2543; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_1_2:2544; GFX942: ; %bb.0:2545; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2546; GFX942-NEXT: v_mov_b32_e32 v10, 02547; GFX942-NEXT: ;;#ASMSTART2548; GFX942-NEXT: ; def v[4:9]2549; GFX942-NEXT: ;;#ASMEND2550; GFX942-NEXT: s_nop 02551; GFX942-NEXT: ;;#ASMSTART2552; GFX942-NEXT: ; def v[0:5]2553; GFX942-NEXT: ;;#ASMEND2554; GFX942-NEXT: global_store_dwordx2 v10, v[8:9], s[0:1] offset:162555; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]2556; GFX942-NEXT: s_waitcnt vmcnt(0)2557; GFX942-NEXT: s_setpc_b64 s[30:31]2558 %vec0 = call <3 x ptr> asm "; def $0", "=v"()2559 %vec1 = call <3 x ptr> asm "; def $0", "=v"()2560 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 1, i32 2>2561 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 322562 ret void2563}2564 2565define void @v_shuffle_v3p0_v3p0__5_3_2(ptr addrspace(1) inreg %ptr) {2566; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_3_2:2567; GFX900: ; %bb.0:2568; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2569; GFX900-NEXT: v_mov_b32_e32 v8, 02570; GFX900-NEXT: ;;#ASMSTART2571; GFX900-NEXT: ; def v[2:7]2572; GFX900-NEXT: ;;#ASMEND2573; GFX900-NEXT: ;;#ASMSTART2574; GFX900-NEXT: ; def v[0:5]2575; GFX900-NEXT: ;;#ASMEND2576; GFX900-NEXT: global_store_dwordx2 v8, v[6:7], s[16:17] offset:162577; GFX900-NEXT: v_mov_b32_e32 v6, v02578; GFX900-NEXT: v_mov_b32_e32 v7, v12579; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]2580; GFX900-NEXT: s_waitcnt vmcnt(0)2581; GFX900-NEXT: s_setpc_b64 s[30:31]2582;2583; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_3_2:2584; GFX90A: ; %bb.0:2585; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2586; GFX90A-NEXT: v_mov_b32_e32 v8, 02587; GFX90A-NEXT: ;;#ASMSTART2588; GFX90A-NEXT: ; def v[2:7]2589; GFX90A-NEXT: ;;#ASMEND2590; GFX90A-NEXT: ;;#ASMSTART2591; GFX90A-NEXT: ; def v[0:5]2592; GFX90A-NEXT: ;;#ASMEND2593; GFX90A-NEXT: global_store_dwordx2 v8, v[6:7], s[16:17] offset:162594; GFX90A-NEXT: v_mov_b32_e32 v6, v02595; GFX90A-NEXT: v_mov_b32_e32 v7, v12596; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]2597; GFX90A-NEXT: s_waitcnt vmcnt(0)2598; GFX90A-NEXT: s_setpc_b64 s[30:31]2599;2600; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_3_2:2601; GFX942: ; %bb.0:2602; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2603; GFX942-NEXT: v_mov_b32_e32 v8, 02604; GFX942-NEXT: ;;#ASMSTART2605; GFX942-NEXT: ; def v[2:7]2606; GFX942-NEXT: ;;#ASMEND2607; GFX942-NEXT: global_store_dwordx2 v8, v[6:7], s[0:1] offset:162608; GFX942-NEXT: ;;#ASMSTART2609; GFX942-NEXT: ; def v[0:5]2610; GFX942-NEXT: ;;#ASMEND2611; GFX942-NEXT: s_nop 02612; GFX942-NEXT: v_mov_b32_e32 v6, v02613; GFX942-NEXT: v_mov_b32_e32 v7, v12614; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]2615; GFX942-NEXT: s_waitcnt vmcnt(0)2616; GFX942-NEXT: s_setpc_b64 s[30:31]2617 %vec0 = call <3 x ptr> asm "; def $0", "=v"()2618 %vec1 = call <3 x ptr> asm "; def $0", "=v"()2619 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 3, i32 2>2620 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 322621 ret void2622}2623 2624define void @v_shuffle_v3p0_v3p0__5_4_2(ptr addrspace(1) inreg %ptr) {2625; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_4_2:2626; GFX900: ; %bb.0:2627; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2628; GFX900-NEXT: v_mov_b32_e32 v8, 02629; GFX900-NEXT: ;;#ASMSTART2630; GFX900-NEXT: ; def v[2:7]2631; GFX900-NEXT: ;;#ASMEND2632; GFX900-NEXT: ;;#ASMSTART2633; GFX900-NEXT: ; def v[0:5]2634; GFX900-NEXT: ;;#ASMEND2635; GFX900-NEXT: global_store_dwordx2 v8, v[6:7], s[16:17] offset:162636; GFX900-NEXT: v_mov_b32_e32 v6, v22637; GFX900-NEXT: v_mov_b32_e32 v7, v32638; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]2639; GFX900-NEXT: s_waitcnt vmcnt(0)2640; GFX900-NEXT: s_setpc_b64 s[30:31]2641;2642; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_4_2:2643; GFX90A: ; %bb.0:2644; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2645; GFX90A-NEXT: v_mov_b32_e32 v8, 02646; GFX90A-NEXT: ;;#ASMSTART2647; GFX90A-NEXT: ; def v[2:7]2648; GFX90A-NEXT: ;;#ASMEND2649; GFX90A-NEXT: ;;#ASMSTART2650; GFX90A-NEXT: ; def v[0:5]2651; GFX90A-NEXT: ;;#ASMEND2652; GFX90A-NEXT: global_store_dwordx2 v8, v[6:7], s[16:17] offset:162653; GFX90A-NEXT: v_mov_b32_e32 v6, v22654; GFX90A-NEXT: v_mov_b32_e32 v7, v32655; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]2656; GFX90A-NEXT: s_waitcnt vmcnt(0)2657; GFX90A-NEXT: s_setpc_b64 s[30:31]2658;2659; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_4_2:2660; GFX942: ; %bb.0:2661; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2662; GFX942-NEXT: v_mov_b32_e32 v8, 02663; GFX942-NEXT: ;;#ASMSTART2664; GFX942-NEXT: ; def v[2:7]2665; GFX942-NEXT: ;;#ASMEND2666; GFX942-NEXT: global_store_dwordx2 v8, v[6:7], s[0:1] offset:162667; GFX942-NEXT: ;;#ASMSTART2668; GFX942-NEXT: ; def v[0:5]2669; GFX942-NEXT: ;;#ASMEND2670; GFX942-NEXT: s_nop 02671; GFX942-NEXT: v_mov_b32_e32 v6, v22672; GFX942-NEXT: v_mov_b32_e32 v7, v32673; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]2674; GFX942-NEXT: s_waitcnt vmcnt(0)2675; GFX942-NEXT: s_setpc_b64 s[30:31]2676 %vec0 = call <3 x ptr> asm "; def $0", "=v"()2677 %vec1 = call <3 x ptr> asm "; def $0", "=v"()2678 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 4, i32 2>2679 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 322680 ret void2681}2682 2683define void @v_shuffle_v3p0_v3p0__u_3_3(ptr addrspace(1) inreg %ptr) {2684; GFX9-LABEL: v_shuffle_v3p0_v3p0__u_3_3:2685; GFX9: ; %bb.0:2686; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2687; GFX9-NEXT: s_setpc_b64 s[30:31]2688 %vec0 = call <3 x ptr> asm "; def $0", "=v"()2689 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 poison, i32 3, i32 3>2690 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 322691 ret void2692}2693 2694define void @v_shuffle_v3p0_v3p0__0_3_3(ptr addrspace(1) inreg %ptr) {2695; GFX900-LABEL: v_shuffle_v3p0_v3p0__0_3_3:2696; GFX900: ; %bb.0:2697; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2698; GFX900-NEXT: v_mov_b32_e32 v6, 02699; GFX900-NEXT: ;;#ASMSTART2700; GFX900-NEXT: ; def v[0:5]2701; GFX900-NEXT: ;;#ASMEND2702; GFX900-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17] offset:162703; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]2704; GFX900-NEXT: s_waitcnt vmcnt(0)2705; GFX900-NEXT: s_setpc_b64 s[30:31]2706;2707; GFX90A-LABEL: v_shuffle_v3p0_v3p0__0_3_3:2708; GFX90A: ; %bb.0:2709; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2710; GFX90A-NEXT: v_mov_b32_e32 v6, 02711; GFX90A-NEXT: ;;#ASMSTART2712; GFX90A-NEXT: ; def v[0:5]2713; GFX90A-NEXT: ;;#ASMEND2714; GFX90A-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17] offset:162715; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]2716; GFX90A-NEXT: s_waitcnt vmcnt(0)2717; GFX90A-NEXT: s_setpc_b64 s[30:31]2718;2719; GFX942-LABEL: v_shuffle_v3p0_v3p0__0_3_3:2720; GFX942: ; %bb.0:2721; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2722; GFX942-NEXT: v_mov_b32_e32 v6, 02723; GFX942-NEXT: ;;#ASMSTART2724; GFX942-NEXT: ; def v[0:5]2725; GFX942-NEXT: ;;#ASMEND2726; GFX942-NEXT: global_store_dwordx2 v6, v[4:5], s[0:1] offset:162727; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]2728; GFX942-NEXT: s_waitcnt vmcnt(0)2729; GFX942-NEXT: s_setpc_b64 s[30:31]2730 %vec0 = call <3 x ptr> asm "; def $0", "=v"()2731 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 0, i32 3, i32 3>2732 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 322733 ret void2734}2735 2736define void @v_shuffle_v3p0_v3p0__1_3_3(ptr addrspace(1) inreg %ptr) {2737; GFX900-LABEL: v_shuffle_v3p0_v3p0__1_3_3:2738; GFX900: ; %bb.0:2739; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2740; GFX900-NEXT: v_mov_b32_e32 v6, 02741; GFX900-NEXT: ;;#ASMSTART2742; GFX900-NEXT: ; def v[0:5]2743; GFX900-NEXT: ;;#ASMEND2744; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]2745; GFX900-NEXT: s_waitcnt vmcnt(0)2746; GFX900-NEXT: s_setpc_b64 s[30:31]2747;2748; GFX90A-LABEL: v_shuffle_v3p0_v3p0__1_3_3:2749; GFX90A: ; %bb.0:2750; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2751; GFX90A-NEXT: v_mov_b32_e32 v6, 02752; GFX90A-NEXT: ;;#ASMSTART2753; GFX90A-NEXT: ; def v[0:5]2754; GFX90A-NEXT: ;;#ASMEND2755; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]2756; GFX90A-NEXT: s_waitcnt vmcnt(0)2757; GFX90A-NEXT: s_setpc_b64 s[30:31]2758;2759; GFX942-LABEL: v_shuffle_v3p0_v3p0__1_3_3:2760; GFX942: ; %bb.0:2761; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2762; GFX942-NEXT: v_mov_b32_e32 v6, 02763; GFX942-NEXT: ;;#ASMSTART2764; GFX942-NEXT: ; def v[0:5]2765; GFX942-NEXT: ;;#ASMEND2766; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]2767; GFX942-NEXT: s_waitcnt vmcnt(0)2768; GFX942-NEXT: s_setpc_b64 s[30:31]2769 %vec0 = call <3 x ptr> asm "; def $0", "=v"()2770 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 1, i32 3, i32 3>2771 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 322772 ret void2773}2774 2775define void @v_shuffle_v3p0_v3p0__2_3_3(ptr addrspace(1) inreg %ptr) {2776; GFX900-LABEL: v_shuffle_v3p0_v3p0__2_3_3:2777; GFX900: ; %bb.0:2778; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2779; GFX900-NEXT: v_mov_b32_e32 v6, 02780; GFX900-NEXT: ;;#ASMSTART2781; GFX900-NEXT: ; def v[0:5]2782; GFX900-NEXT: ;;#ASMEND2783; GFX900-NEXT: global_store_dwordx4 v6, v[4:7], s[16:17]2784; GFX900-NEXT: s_waitcnt vmcnt(0)2785; GFX900-NEXT: s_setpc_b64 s[30:31]2786;2787; GFX90A-LABEL: v_shuffle_v3p0_v3p0__2_3_3:2788; GFX90A: ; %bb.0:2789; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2790; GFX90A-NEXT: v_mov_b32_e32 v6, 02791; GFX90A-NEXT: ;;#ASMSTART2792; GFX90A-NEXT: ; def v[0:5]2793; GFX90A-NEXT: ;;#ASMEND2794; GFX90A-NEXT: global_store_dwordx4 v6, v[4:7], s[16:17]2795; GFX90A-NEXT: s_waitcnt vmcnt(0)2796; GFX90A-NEXT: s_setpc_b64 s[30:31]2797;2798; GFX942-LABEL: v_shuffle_v3p0_v3p0__2_3_3:2799; GFX942: ; %bb.0:2800; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2801; GFX942-NEXT: v_mov_b32_e32 v6, 02802; GFX942-NEXT: ;;#ASMSTART2803; GFX942-NEXT: ; def v[0:5]2804; GFX942-NEXT: ;;#ASMEND2805; GFX942-NEXT: global_store_dwordx4 v6, v[4:7], s[0:1]2806; GFX942-NEXT: s_waitcnt vmcnt(0)2807; GFX942-NEXT: s_setpc_b64 s[30:31]2808 %vec0 = call <3 x ptr> asm "; def $0", "=v"()2809 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 2, i32 3, i32 3>2810 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 322811 ret void2812}2813 2814define void @v_shuffle_v3p0_v3p0__3_3_3(ptr addrspace(1) inreg %ptr) {2815; GFX9-LABEL: v_shuffle_v3p0_v3p0__3_3_3:2816; GFX9: ; %bb.0:2817; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2818; GFX9-NEXT: s_setpc_b64 s[30:31]2819 %vec0 = call <3 x ptr> asm "; def $0", "=v"()2820 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 3, i32 3, i32 3>2821 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 322822 ret void2823}2824 2825define void @v_shuffle_v3p0_v3p0__4_3_3(ptr addrspace(1) inreg %ptr) {2826; GFX900-LABEL: v_shuffle_v3p0_v3p0__4_3_3:2827; GFX900: ; %bb.0:2828; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2829; GFX900-NEXT: ;;#ASMSTART2830; GFX900-NEXT: ; def v[0:5]2831; GFX900-NEXT: ;;#ASMEND2832; GFX900-NEXT: v_mov_b32_e32 v6, 02833; GFX900-NEXT: v_mov_b32_e32 v4, v02834; GFX900-NEXT: v_mov_b32_e32 v5, v12835; GFX900-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17] offset:162836; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]2837; GFX900-NEXT: s_waitcnt vmcnt(0)2838; GFX900-NEXT: s_setpc_b64 s[30:31]2839;2840; GFX90A-LABEL: v_shuffle_v3p0_v3p0__4_3_3:2841; GFX90A: ; %bb.0:2842; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2843; GFX90A-NEXT: ;;#ASMSTART2844; GFX90A-NEXT: ; def v[0:5]2845; GFX90A-NEXT: ;;#ASMEND2846; GFX90A-NEXT: v_mov_b32_e32 v6, 02847; GFX90A-NEXT: v_mov_b32_e32 v4, v02848; GFX90A-NEXT: v_mov_b32_e32 v5, v12849; GFX90A-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17] offset:162850; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]2851; GFX90A-NEXT: s_waitcnt vmcnt(0)2852; GFX90A-NEXT: s_setpc_b64 s[30:31]2853;2854; GFX942-LABEL: v_shuffle_v3p0_v3p0__4_3_3:2855; GFX942: ; %bb.0:2856; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2857; GFX942-NEXT: ;;#ASMSTART2858; GFX942-NEXT: ; def v[0:5]2859; GFX942-NEXT: ;;#ASMEND2860; GFX942-NEXT: v_mov_b32_e32 v6, 02861; GFX942-NEXT: v_mov_b32_e32 v4, v02862; GFX942-NEXT: v_mov_b32_e32 v5, v12863; GFX942-NEXT: global_store_dwordx2 v6, v[0:1], s[0:1] offset:162864; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]2865; GFX942-NEXT: s_waitcnt vmcnt(0)2866; GFX942-NEXT: s_setpc_b64 s[30:31]2867 %vec0 = call <3 x ptr> asm "; def $0", "=v"()2868 %vec1 = call <3 x ptr> asm "; def $0", "=v"()2869 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 4, i32 3, i32 3>2870 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 322871 ret void2872}2873 2874define void @v_shuffle_v3p0_v3p0__5_3_3(ptr addrspace(1) inreg %ptr) {2875; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_3_3:2876; GFX900: ; %bb.0:2877; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2878; GFX900-NEXT: v_mov_b32_e32 v8, 02879; GFX900-NEXT: ;;#ASMSTART2880; GFX900-NEXT: ; def v[0:5]2881; GFX900-NEXT: ;;#ASMEND2882; GFX900-NEXT: v_mov_b32_e32 v6, v02883; GFX900-NEXT: v_mov_b32_e32 v7, v12884; GFX900-NEXT: global_store_dwordx2 v8, v[0:1], s[16:17] offset:162885; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]2886; GFX900-NEXT: s_waitcnt vmcnt(0)2887; GFX900-NEXT: s_setpc_b64 s[30:31]2888;2889; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_3_3:2890; GFX90A: ; %bb.0:2891; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2892; GFX90A-NEXT: v_mov_b32_e32 v8, 02893; GFX90A-NEXT: ;;#ASMSTART2894; GFX90A-NEXT: ; def v[0:5]2895; GFX90A-NEXT: ;;#ASMEND2896; GFX90A-NEXT: v_mov_b32_e32 v6, v02897; GFX90A-NEXT: v_mov_b32_e32 v7, v12898; GFX90A-NEXT: global_store_dwordx2 v8, v[0:1], s[16:17] offset:162899; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]2900; GFX90A-NEXT: s_waitcnt vmcnt(0)2901; GFX90A-NEXT: s_setpc_b64 s[30:31]2902;2903; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_3_3:2904; GFX942: ; %bb.0:2905; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2906; GFX942-NEXT: v_mov_b32_e32 v8, 02907; GFX942-NEXT: ;;#ASMSTART2908; GFX942-NEXT: ; def v[0:5]2909; GFX942-NEXT: ;;#ASMEND2910; GFX942-NEXT: global_store_dwordx2 v8, v[0:1], s[0:1] offset:162911; GFX942-NEXT: v_mov_b32_e32 v6, v02912; GFX942-NEXT: v_mov_b32_e32 v7, v12913; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]2914; GFX942-NEXT: s_waitcnt vmcnt(0)2915; GFX942-NEXT: s_setpc_b64 s[30:31]2916 %vec0 = call <3 x ptr> asm "; def $0", "=v"()2917 %vec1 = call <3 x ptr> asm "; def $0", "=v"()2918 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 3, i32 3>2919 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 322920 ret void2921}2922 2923define void @v_shuffle_v3p0_v3p0__5_u_3(ptr addrspace(1) inreg %ptr) {2924; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_u_3:2925; GFX900: ; %bb.0:2926; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2927; GFX900-NEXT: v_mov_b32_e32 v6, 02928; GFX900-NEXT: ;;#ASMSTART2929; GFX900-NEXT: ; def v[0:5]2930; GFX900-NEXT: ;;#ASMEND2931; GFX900-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17] offset:162932; GFX900-NEXT: global_store_dwordx4 v6, v[4:7], s[16:17]2933; GFX900-NEXT: s_waitcnt vmcnt(0)2934; GFX900-NEXT: s_setpc_b64 s[30:31]2935;2936; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_u_3:2937; GFX90A: ; %bb.0:2938; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2939; GFX90A-NEXT: v_mov_b32_e32 v6, 02940; GFX90A-NEXT: ;;#ASMSTART2941; GFX90A-NEXT: ; def v[0:5]2942; GFX90A-NEXT: ;;#ASMEND2943; GFX90A-NEXT: global_store_dwordx2 v6, v[0:1], s[16:17] offset:162944; GFX90A-NEXT: global_store_dwordx4 v6, v[4:7], s[16:17]2945; GFX90A-NEXT: s_waitcnt vmcnt(0)2946; GFX90A-NEXT: s_setpc_b64 s[30:31]2947;2948; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_u_3:2949; GFX942: ; %bb.0:2950; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2951; GFX942-NEXT: v_mov_b32_e32 v6, 02952; GFX942-NEXT: ;;#ASMSTART2953; GFX942-NEXT: ; def v[0:5]2954; GFX942-NEXT: ;;#ASMEND2955; GFX942-NEXT: global_store_dwordx2 v6, v[0:1], s[0:1] offset:162956; GFX942-NEXT: global_store_dwordx4 v6, v[4:7], s[0:1]2957; GFX942-NEXT: s_waitcnt vmcnt(0)2958; GFX942-NEXT: s_setpc_b64 s[30:31]2959 %vec0 = call <3 x ptr> asm "; def $0", "=v"()2960 %vec1 = call <3 x ptr> asm "; def $0", "=v"()2961 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 poison, i32 3>2962 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 322963 ret void2964}2965 2966define void @v_shuffle_v3p0_v3p0__5_0_3(ptr addrspace(1) inreg %ptr) {2967; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_0_3:2968; GFX900: ; %bb.0:2969; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2970; GFX900-NEXT: v_mov_b32_e32 v12, 02971; GFX900-NEXT: ;;#ASMSTART2972; GFX900-NEXT: ; def v[0:5]2973; GFX900-NEXT: ;;#ASMEND2974; GFX900-NEXT: ;;#ASMSTART2975; GFX900-NEXT: ; def v[6:11]2976; GFX900-NEXT: ;;#ASMEND2977; GFX900-NEXT: global_store_dwordx2 v12, v[0:1], s[16:17] offset:162978; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]2979; GFX900-NEXT: s_waitcnt vmcnt(0)2980; GFX900-NEXT: s_setpc_b64 s[30:31]2981;2982; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_0_3:2983; GFX90A: ; %bb.0:2984; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)2985; GFX90A-NEXT: v_mov_b32_e32 v12, 02986; GFX90A-NEXT: ;;#ASMSTART2987; GFX90A-NEXT: ; def v[0:5]2988; GFX90A-NEXT: ;;#ASMEND2989; GFX90A-NEXT: ;;#ASMSTART2990; GFX90A-NEXT: ; def v[6:11]2991; GFX90A-NEXT: ;;#ASMEND2992; GFX90A-NEXT: global_store_dwordx2 v12, v[0:1], s[16:17] offset:162993; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]2994; GFX90A-NEXT: s_waitcnt vmcnt(0)2995; GFX90A-NEXT: s_setpc_b64 s[30:31]2996;2997; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_0_3:2998; GFX942: ; %bb.0:2999; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3000; GFX942-NEXT: v_mov_b32_e32 v12, 03001; GFX942-NEXT: ;;#ASMSTART3002; GFX942-NEXT: ; def v[0:5]3003; GFX942-NEXT: ;;#ASMEND3004; GFX942-NEXT: ;;#ASMSTART3005; GFX942-NEXT: ; def v[6:11]3006; GFX942-NEXT: ;;#ASMEND3007; GFX942-NEXT: global_store_dwordx2 v12, v[0:1], s[0:1] offset:163008; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]3009; GFX942-NEXT: s_waitcnt vmcnt(0)3010; GFX942-NEXT: s_setpc_b64 s[30:31]3011 %vec0 = call <3 x ptr> asm "; def $0", "=v"()3012 %vec1 = call <3 x ptr> asm "; def $0", "=v"()3013 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 0, i32 3>3014 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 323015 ret void3016}3017 3018define void @v_shuffle_v3p0_v3p0__5_1_3(ptr addrspace(1) inreg %ptr) {3019; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_1_3:3020; GFX900: ; %bb.0:3021; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3022; GFX900-NEXT: ;;#ASMSTART3023; GFX900-NEXT: ; def v[4:9]3024; GFX900-NEXT: ;;#ASMEND3025; GFX900-NEXT: v_mov_b32_e32 v10, 03026; GFX900-NEXT: ;;#ASMSTART3027; GFX900-NEXT: ; def v[0:5]3028; GFX900-NEXT: ;;#ASMEND3029; GFX900-NEXT: global_store_dwordx2 v10, v[0:1], s[16:17] offset:163030; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]3031; GFX900-NEXT: s_waitcnt vmcnt(0)3032; GFX900-NEXT: s_setpc_b64 s[30:31]3033;3034; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_1_3:3035; GFX90A: ; %bb.0:3036; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3037; GFX90A-NEXT: ;;#ASMSTART3038; GFX90A-NEXT: ; def v[4:9]3039; GFX90A-NEXT: ;;#ASMEND3040; GFX90A-NEXT: v_mov_b32_e32 v10, 03041; GFX90A-NEXT: ;;#ASMSTART3042; GFX90A-NEXT: ; def v[0:5]3043; GFX90A-NEXT: ;;#ASMEND3044; GFX90A-NEXT: global_store_dwordx2 v10, v[0:1], s[16:17] offset:163045; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]3046; GFX90A-NEXT: s_waitcnt vmcnt(0)3047; GFX90A-NEXT: s_setpc_b64 s[30:31]3048;3049; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_1_3:3050; GFX942: ; %bb.0:3051; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3052; GFX942-NEXT: ;;#ASMSTART3053; GFX942-NEXT: ; def v[4:9]3054; GFX942-NEXT: ;;#ASMEND3055; GFX942-NEXT: v_mov_b32_e32 v10, 03056; GFX942-NEXT: ;;#ASMSTART3057; GFX942-NEXT: ; def v[0:5]3058; GFX942-NEXT: ;;#ASMEND3059; GFX942-NEXT: global_store_dwordx2 v10, v[0:1], s[0:1] offset:163060; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]3061; GFX942-NEXT: s_waitcnt vmcnt(0)3062; GFX942-NEXT: s_setpc_b64 s[30:31]3063 %vec0 = call <3 x ptr> asm "; def $0", "=v"()3064 %vec1 = call <3 x ptr> asm "; def $0", "=v"()3065 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 1, i32 3>3066 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 323067 ret void3068}3069 3070define void @v_shuffle_v3p0_v3p0__5_2_3(ptr addrspace(1) inreg %ptr) {3071; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_2_3:3072; GFX900: ; %bb.0:3073; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3074; GFX900-NEXT: ;;#ASMSTART3075; GFX900-NEXT: ; def v[2:7]3076; GFX900-NEXT: ;;#ASMEND3077; GFX900-NEXT: v_mov_b32_e32 v8, 03078; GFX900-NEXT: ;;#ASMSTART3079; GFX900-NEXT: ; def v[0:5]3080; GFX900-NEXT: ;;#ASMEND3081; GFX900-NEXT: global_store_dwordx2 v8, v[0:1], s[16:17] offset:163082; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]3083; GFX900-NEXT: s_waitcnt vmcnt(0)3084; GFX900-NEXT: s_setpc_b64 s[30:31]3085;3086; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_2_3:3087; GFX90A: ; %bb.0:3088; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3089; GFX90A-NEXT: ;;#ASMSTART3090; GFX90A-NEXT: ; def v[2:7]3091; GFX90A-NEXT: ;;#ASMEND3092; GFX90A-NEXT: v_mov_b32_e32 v8, 03093; GFX90A-NEXT: ;;#ASMSTART3094; GFX90A-NEXT: ; def v[0:5]3095; GFX90A-NEXT: ;;#ASMEND3096; GFX90A-NEXT: global_store_dwordx2 v8, v[0:1], s[16:17] offset:163097; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]3098; GFX90A-NEXT: s_waitcnt vmcnt(0)3099; GFX90A-NEXT: s_setpc_b64 s[30:31]3100;3101; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_2_3:3102; GFX942: ; %bb.0:3103; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3104; GFX942-NEXT: ;;#ASMSTART3105; GFX942-NEXT: ; def v[2:7]3106; GFX942-NEXT: ;;#ASMEND3107; GFX942-NEXT: v_mov_b32_e32 v8, 03108; GFX942-NEXT: ;;#ASMSTART3109; GFX942-NEXT: ; def v[0:5]3110; GFX942-NEXT: ;;#ASMEND3111; GFX942-NEXT: global_store_dwordx2 v8, v[0:1], s[0:1] offset:163112; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]3113; GFX942-NEXT: s_waitcnt vmcnt(0)3114; GFX942-NEXT: s_setpc_b64 s[30:31]3115 %vec0 = call <3 x ptr> asm "; def $0", "=v"()3116 %vec1 = call <3 x ptr> asm "; def $0", "=v"()3117 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 2, i32 3>3118 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 323119 ret void3120}3121 3122define void @v_shuffle_v3p0_v3p0__5_4_3(ptr addrspace(1) inreg %ptr) {3123; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_4_3:3124; GFX900: ; %bb.0:3125; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3126; GFX900-NEXT: v_mov_b32_e32 v8, 03127; GFX900-NEXT: ;;#ASMSTART3128; GFX900-NEXT: ; def v[0:5]3129; GFX900-NEXT: ;;#ASMEND3130; GFX900-NEXT: v_mov_b32_e32 v6, v23131; GFX900-NEXT: v_mov_b32_e32 v7, v33132; GFX900-NEXT: global_store_dwordx2 v8, v[0:1], s[16:17] offset:163133; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], 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_v3p0_v3p0__5_4_3:3138; GFX90A: ; %bb.0:3139; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3140; GFX90A-NEXT: v_mov_b32_e32 v8, 03141; GFX90A-NEXT: ;;#ASMSTART3142; GFX90A-NEXT: ; def v[0:5]3143; GFX90A-NEXT: ;;#ASMEND3144; GFX90A-NEXT: v_mov_b32_e32 v6, v23145; GFX90A-NEXT: v_mov_b32_e32 v7, v33146; GFX90A-NEXT: global_store_dwordx2 v8, v[0:1], s[16:17] offset:163147; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]3148; GFX90A-NEXT: s_waitcnt vmcnt(0)3149; GFX90A-NEXT: s_setpc_b64 s[30:31]3150;3151; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_4_3:3152; GFX942: ; %bb.0:3153; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3154; GFX942-NEXT: v_mov_b32_e32 v8, 03155; GFX942-NEXT: ;;#ASMSTART3156; GFX942-NEXT: ; def v[0:5]3157; GFX942-NEXT: ;;#ASMEND3158; GFX942-NEXT: global_store_dwordx2 v8, v[0:1], s[0:1] offset:163159; GFX942-NEXT: v_mov_b32_e32 v6, v23160; GFX942-NEXT: v_mov_b32_e32 v7, v33161; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]3162; GFX942-NEXT: s_waitcnt vmcnt(0)3163; GFX942-NEXT: s_setpc_b64 s[30:31]3164 %vec0 = call <3 x ptr> asm "; def $0", "=v"()3165 %vec1 = call <3 x ptr> asm "; def $0", "=v"()3166 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 4, i32 3>3167 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 323168 ret void3169}3170 3171define void @v_shuffle_v3p0_v3p0__u_4_4(ptr addrspace(1) inreg %ptr) {3172; GFX900-LABEL: v_shuffle_v3p0_v3p0__u_4_4:3173; GFX900: ; %bb.0:3174; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3175; GFX900-NEXT: v_mov_b32_e32 v6, 03176; GFX900-NEXT: ;;#ASMSTART3177; GFX900-NEXT: ; def v[0:5]3178; GFX900-NEXT: ;;#ASMEND3179; GFX900-NEXT: global_store_dwordx2 v6, v[2:3], s[16:17] offset:163180; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]3181; GFX900-NEXT: s_waitcnt vmcnt(0)3182; GFX900-NEXT: s_setpc_b64 s[30:31]3183;3184; GFX90A-LABEL: v_shuffle_v3p0_v3p0__u_4_4:3185; GFX90A: ; %bb.0:3186; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3187; GFX90A-NEXT: v_mov_b32_e32 v6, 03188; GFX90A-NEXT: ;;#ASMSTART3189; GFX90A-NEXT: ; def v[0:5]3190; GFX90A-NEXT: ;;#ASMEND3191; GFX90A-NEXT: global_store_dwordx2 v6, v[2:3], s[16:17] offset:163192; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]3193; GFX90A-NEXT: s_waitcnt vmcnt(0)3194; GFX90A-NEXT: s_setpc_b64 s[30:31]3195;3196; GFX942-LABEL: v_shuffle_v3p0_v3p0__u_4_4:3197; GFX942: ; %bb.0:3198; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3199; GFX942-NEXT: v_mov_b32_e32 v6, 03200; GFX942-NEXT: ;;#ASMSTART3201; GFX942-NEXT: ; def v[0:5]3202; GFX942-NEXT: ;;#ASMEND3203; GFX942-NEXT: global_store_dwordx2 v6, v[2:3], s[0:1] offset:163204; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]3205; GFX942-NEXT: s_waitcnt vmcnt(0)3206; GFX942-NEXT: s_setpc_b64 s[30:31]3207 %vec0 = call <3 x ptr> asm "; def $0", "=v"()3208 %vec1 = call <3 x ptr> asm "; def $0", "=v"()3209 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 poison, i32 4, i32 4>3210 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 323211 ret void3212}3213 3214define void @v_shuffle_v3p0_v3p0__0_4_4(ptr addrspace(1) inreg %ptr) {3215; GFX900-LABEL: v_shuffle_v3p0_v3p0__0_4_4:3216; GFX900: ; %bb.0:3217; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3218; GFX900-NEXT: ;;#ASMSTART3219; GFX900-NEXT: ; def v[0:5]3220; GFX900-NEXT: ;;#ASMEND3221; GFX900-NEXT: ;;#ASMSTART3222; GFX900-NEXT: ; def v[2:7]3223; GFX900-NEXT: ;;#ASMEND3224; GFX900-NEXT: v_mov_b32_e32 v8, 03225; GFX900-NEXT: v_mov_b32_e32 v2, v43226; GFX900-NEXT: v_mov_b32_e32 v3, v53227; GFX900-NEXT: global_store_dwordx2 v8, v[4:5], s[16:17] offset:163228; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]3229; GFX900-NEXT: s_waitcnt vmcnt(0)3230; GFX900-NEXT: s_setpc_b64 s[30:31]3231;3232; GFX90A-LABEL: v_shuffle_v3p0_v3p0__0_4_4:3233; GFX90A: ; %bb.0:3234; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3235; GFX90A-NEXT: ;;#ASMSTART3236; GFX90A-NEXT: ; def v[0:5]3237; GFX90A-NEXT: ;;#ASMEND3238; GFX90A-NEXT: ;;#ASMSTART3239; GFX90A-NEXT: ; def v[2:7]3240; GFX90A-NEXT: ;;#ASMEND3241; GFX90A-NEXT: v_mov_b32_e32 v8, 03242; GFX90A-NEXT: v_mov_b32_e32 v2, v43243; GFX90A-NEXT: v_mov_b32_e32 v3, v53244; GFX90A-NEXT: global_store_dwordx2 v8, v[4:5], s[16:17] offset:163245; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]3246; GFX90A-NEXT: s_waitcnt vmcnt(0)3247; GFX90A-NEXT: s_setpc_b64 s[30:31]3248;3249; GFX942-LABEL: v_shuffle_v3p0_v3p0__0_4_4:3250; GFX942: ; %bb.0:3251; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3252; GFX942-NEXT: ;;#ASMSTART3253; GFX942-NEXT: ; def v[0:5]3254; GFX942-NEXT: ;;#ASMEND3255; GFX942-NEXT: v_mov_b32_e32 v8, 03256; GFX942-NEXT: ;;#ASMSTART3257; GFX942-NEXT: ; def v[2:7]3258; GFX942-NEXT: ;;#ASMEND3259; GFX942-NEXT: global_store_dwordx2 v8, v[4:5], s[0:1] offset:163260; GFX942-NEXT: v_mov_b32_e32 v2, v43261; GFX942-NEXT: v_mov_b32_e32 v3, v53262; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]3263; GFX942-NEXT: s_waitcnt vmcnt(0)3264; GFX942-NEXT: s_setpc_b64 s[30:31]3265 %vec0 = call <3 x ptr> asm "; def $0", "=v"()3266 %vec1 = call <3 x ptr> asm "; def $0", "=v"()3267 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 0, i32 4, i32 4>3268 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 323269 ret void3270}3271 3272define void @v_shuffle_v3p0_v3p0__1_4_4(ptr addrspace(1) inreg %ptr) {3273; GFX900-LABEL: v_shuffle_v3p0_v3p0__1_4_4:3274; GFX900: ; %bb.0:3275; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3276; GFX900-NEXT: ;;#ASMSTART3277; GFX900-NEXT: ; def v[0:5]3278; GFX900-NEXT: ;;#ASMEND3279; GFX900-NEXT: ;;#ASMSTART3280; GFX900-NEXT: ; def v[4:9]3281; GFX900-NEXT: ;;#ASMEND3282; GFX900-NEXT: v_mov_b32_e32 v10, 03283; GFX900-NEXT: v_mov_b32_e32 v4, v63284; GFX900-NEXT: v_mov_b32_e32 v5, v73285; GFX900-NEXT: global_store_dwordx2 v10, v[6:7], s[16:17] offset:163286; GFX900-NEXT: global_store_dwordx4 v10, v[2:5], s[16:17]3287; GFX900-NEXT: s_waitcnt vmcnt(0)3288; GFX900-NEXT: s_setpc_b64 s[30:31]3289;3290; GFX90A-LABEL: v_shuffle_v3p0_v3p0__1_4_4:3291; GFX90A: ; %bb.0:3292; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3293; GFX90A-NEXT: ;;#ASMSTART3294; GFX90A-NEXT: ; def v[0:5]3295; GFX90A-NEXT: ;;#ASMEND3296; GFX90A-NEXT: ;;#ASMSTART3297; GFX90A-NEXT: ; def v[4:9]3298; GFX90A-NEXT: ;;#ASMEND3299; GFX90A-NEXT: v_mov_b32_e32 v10, 03300; GFX90A-NEXT: v_mov_b32_e32 v4, v63301; GFX90A-NEXT: v_mov_b32_e32 v5, v73302; GFX90A-NEXT: global_store_dwordx2 v10, v[6:7], s[16:17] offset:163303; GFX90A-NEXT: global_store_dwordx4 v10, v[2:5], s[16:17]3304; GFX90A-NEXT: s_waitcnt vmcnt(0)3305; GFX90A-NEXT: s_setpc_b64 s[30:31]3306;3307; GFX942-LABEL: v_shuffle_v3p0_v3p0__1_4_4:3308; GFX942: ; %bb.0:3309; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3310; GFX942-NEXT: ;;#ASMSTART3311; GFX942-NEXT: ; def v[0:5]3312; GFX942-NEXT: ;;#ASMEND3313; GFX942-NEXT: v_mov_b32_e32 v10, 03314; GFX942-NEXT: ;;#ASMSTART3315; GFX942-NEXT: ; def v[4:9]3316; GFX942-NEXT: ;;#ASMEND3317; GFX942-NEXT: global_store_dwordx2 v10, v[6:7], s[0:1] offset:163318; GFX942-NEXT: v_mov_b32_e32 v4, v63319; GFX942-NEXT: v_mov_b32_e32 v5, v73320; GFX942-NEXT: global_store_dwordx4 v10, v[2:5], s[0:1]3321; GFX942-NEXT: s_waitcnt vmcnt(0)3322; GFX942-NEXT: s_setpc_b64 s[30:31]3323 %vec0 = call <3 x ptr> asm "; def $0", "=v"()3324 %vec1 = call <3 x ptr> asm "; def $0", "=v"()3325 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 1, i32 4, i32 4>3326 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 323327 ret void3328}3329 3330define void @v_shuffle_v3p0_v3p0__2_4_4(ptr addrspace(1) inreg %ptr) {3331; GFX900-LABEL: v_shuffle_v3p0_v3p0__2_4_4:3332; GFX900: ; %bb.0:3333; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3334; GFX900-NEXT: ;;#ASMSTART3335; GFX900-NEXT: ; def v[6:11]3336; GFX900-NEXT: ;;#ASMEND3337; GFX900-NEXT: v_mov_b32_e32 v12, 03338; GFX900-NEXT: v_mov_b32_e32 v6, v83339; GFX900-NEXT: v_mov_b32_e32 v7, v93340; GFX900-NEXT: ;;#ASMSTART3341; GFX900-NEXT: ; def v[0:5]3342; GFX900-NEXT: ;;#ASMEND3343; GFX900-NEXT: global_store_dwordx2 v12, v[8:9], s[16:17] offset:163344; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]3345; GFX900-NEXT: s_waitcnt vmcnt(0)3346; GFX900-NEXT: s_setpc_b64 s[30:31]3347;3348; GFX90A-LABEL: v_shuffle_v3p0_v3p0__2_4_4:3349; GFX90A: ; %bb.0:3350; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3351; GFX90A-NEXT: ;;#ASMSTART3352; GFX90A-NEXT: ; def v[6:11]3353; GFX90A-NEXT: ;;#ASMEND3354; GFX90A-NEXT: v_mov_b32_e32 v12, 03355; GFX90A-NEXT: v_mov_b32_e32 v6, v83356; GFX90A-NEXT: v_mov_b32_e32 v7, v93357; GFX90A-NEXT: ;;#ASMSTART3358; GFX90A-NEXT: ; def v[0:5]3359; GFX90A-NEXT: ;;#ASMEND3360; GFX90A-NEXT: global_store_dwordx2 v12, v[8:9], s[16:17] offset:163361; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]3362; GFX90A-NEXT: s_waitcnt vmcnt(0)3363; GFX90A-NEXT: s_setpc_b64 s[30:31]3364;3365; GFX942-LABEL: v_shuffle_v3p0_v3p0__2_4_4:3366; GFX942: ; %bb.0:3367; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3368; GFX942-NEXT: ;;#ASMSTART3369; GFX942-NEXT: ; def v[6:11]3370; GFX942-NEXT: ;;#ASMEND3371; GFX942-NEXT: v_mov_b32_e32 v12, 03372; GFX942-NEXT: v_mov_b32_e32 v6, v83373; GFX942-NEXT: v_mov_b32_e32 v7, v93374; GFX942-NEXT: ;;#ASMSTART3375; GFX942-NEXT: ; def v[0:5]3376; GFX942-NEXT: ;;#ASMEND3377; GFX942-NEXT: global_store_dwordx2 v12, v[8:9], s[0:1] offset:163378; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]3379; GFX942-NEXT: s_waitcnt vmcnt(0)3380; GFX942-NEXT: s_setpc_b64 s[30:31]3381 %vec0 = call <3 x ptr> asm "; def $0", "=v"()3382 %vec1 = call <3 x ptr> asm "; def $0", "=v"()3383 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 2, i32 4, i32 4>3384 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 323385 ret void3386}3387 3388define void @v_shuffle_v3p0_v3p0__3_4_4(ptr addrspace(1) inreg %ptr) {3389; GFX900-LABEL: v_shuffle_v3p0_v3p0__3_4_4:3390; GFX900: ; %bb.0:3391; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3392; GFX900-NEXT: v_mov_b32_e32 v6, 03393; GFX900-NEXT: ;;#ASMSTART3394; GFX900-NEXT: ; def v[0:5]3395; GFX900-NEXT: ;;#ASMEND3396; GFX900-NEXT: global_store_dwordx2 v6, v[2:3], s[16:17] offset:163397; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]3398; GFX900-NEXT: s_waitcnt vmcnt(0)3399; GFX900-NEXT: s_setpc_b64 s[30:31]3400;3401; GFX90A-LABEL: v_shuffle_v3p0_v3p0__3_4_4:3402; GFX90A: ; %bb.0:3403; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3404; GFX90A-NEXT: v_mov_b32_e32 v6, 03405; GFX90A-NEXT: ;;#ASMSTART3406; GFX90A-NEXT: ; def v[0:5]3407; GFX90A-NEXT: ;;#ASMEND3408; GFX90A-NEXT: global_store_dwordx2 v6, v[2:3], s[16:17] offset:163409; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]3410; GFX90A-NEXT: s_waitcnt vmcnt(0)3411; GFX90A-NEXT: s_setpc_b64 s[30:31]3412;3413; GFX942-LABEL: v_shuffle_v3p0_v3p0__3_4_4:3414; GFX942: ; %bb.0:3415; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3416; GFX942-NEXT: v_mov_b32_e32 v6, 03417; GFX942-NEXT: ;;#ASMSTART3418; GFX942-NEXT: ; def v[0:5]3419; GFX942-NEXT: ;;#ASMEND3420; GFX942-NEXT: global_store_dwordx2 v6, v[2:3], s[0:1] offset:163421; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]3422; GFX942-NEXT: s_waitcnt vmcnt(0)3423; GFX942-NEXT: s_setpc_b64 s[30:31]3424 %vec0 = call <3 x ptr> asm "; def $0", "=v"()3425 %vec1 = call <3 x ptr> asm "; def $0", "=v"()3426 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 3, i32 4, i32 4>3427 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 323428 ret void3429}3430 3431define void @v_shuffle_v3p0_v3p0__4_4_4(ptr addrspace(1) inreg %ptr) {3432; GFX900-LABEL: v_shuffle_v3p0_v3p0__4_4_4:3433; GFX900: ; %bb.0:3434; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3435; GFX900-NEXT: ;;#ASMSTART3436; GFX900-NEXT: ; def v[0:5]3437; GFX900-NEXT: ;;#ASMEND3438; GFX900-NEXT: v_mov_b32_e32 v6, 03439; GFX900-NEXT: v_mov_b32_e32 v4, v23440; GFX900-NEXT: v_mov_b32_e32 v5, v33441; GFX900-NEXT: global_store_dwordx2 v6, v[2:3], s[16:17] offset:163442; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]3443; GFX900-NEXT: s_waitcnt vmcnt(0)3444; GFX900-NEXT: s_setpc_b64 s[30:31]3445;3446; GFX90A-LABEL: v_shuffle_v3p0_v3p0__4_4_4:3447; GFX90A: ; %bb.0:3448; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3449; GFX90A-NEXT: ;;#ASMSTART3450; GFX90A-NEXT: ; def v[0:5]3451; GFX90A-NEXT: ;;#ASMEND3452; GFX90A-NEXT: v_mov_b32_e32 v6, 03453; GFX90A-NEXT: v_mov_b32_e32 v4, v23454; GFX90A-NEXT: v_mov_b32_e32 v5, v33455; GFX90A-NEXT: global_store_dwordx2 v6, v[2:3], s[16:17] offset:163456; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]3457; GFX90A-NEXT: s_waitcnt vmcnt(0)3458; GFX90A-NEXT: s_setpc_b64 s[30:31]3459;3460; GFX942-LABEL: v_shuffle_v3p0_v3p0__4_4_4:3461; GFX942: ; %bb.0:3462; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3463; GFX942-NEXT: ;;#ASMSTART3464; GFX942-NEXT: ; def v[0:5]3465; GFX942-NEXT: ;;#ASMEND3466; GFX942-NEXT: v_mov_b32_e32 v6, 03467; GFX942-NEXT: v_mov_b32_e32 v4, v23468; GFX942-NEXT: v_mov_b32_e32 v5, v33469; GFX942-NEXT: global_store_dwordx2 v6, v[2:3], s[0:1] offset:163470; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]3471; GFX942-NEXT: s_waitcnt vmcnt(0)3472; GFX942-NEXT: s_setpc_b64 s[30:31]3473 %vec0 = call <3 x ptr> asm "; def $0", "=v"()3474 %vec1 = call <3 x ptr> asm "; def $0", "=v"()3475 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 4, i32 4, i32 4>3476 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 323477 ret void3478}3479 3480define void @v_shuffle_v3p0_v3p0__5_4_4(ptr addrspace(1) inreg %ptr) {3481; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_4_4:3482; GFX900: ; %bb.0:3483; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3484; GFX900-NEXT: v_mov_b32_e32 v8, 03485; GFX900-NEXT: ;;#ASMSTART3486; GFX900-NEXT: ; def v[0:5]3487; GFX900-NEXT: ;;#ASMEND3488; GFX900-NEXT: v_mov_b32_e32 v6, v23489; GFX900-NEXT: v_mov_b32_e32 v7, v33490; GFX900-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17] offset:163491; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]3492; GFX900-NEXT: s_waitcnt vmcnt(0)3493; GFX900-NEXT: s_setpc_b64 s[30:31]3494;3495; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_4_4:3496; GFX90A: ; %bb.0:3497; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3498; GFX90A-NEXT: v_mov_b32_e32 v8, 03499; GFX90A-NEXT: ;;#ASMSTART3500; GFX90A-NEXT: ; def v[0:5]3501; GFX90A-NEXT: ;;#ASMEND3502; GFX90A-NEXT: v_mov_b32_e32 v6, v23503; GFX90A-NEXT: v_mov_b32_e32 v7, v33504; GFX90A-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17] offset:163505; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]3506; GFX90A-NEXT: s_waitcnt vmcnt(0)3507; GFX90A-NEXT: s_setpc_b64 s[30:31]3508;3509; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_4_4:3510; GFX942: ; %bb.0:3511; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3512; GFX942-NEXT: v_mov_b32_e32 v8, 03513; GFX942-NEXT: ;;#ASMSTART3514; GFX942-NEXT: ; def v[0:5]3515; GFX942-NEXT: ;;#ASMEND3516; GFX942-NEXT: global_store_dwordx2 v8, v[2:3], s[0:1] offset:163517; GFX942-NEXT: v_mov_b32_e32 v6, v23518; GFX942-NEXT: v_mov_b32_e32 v7, v33519; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]3520; GFX942-NEXT: s_waitcnt vmcnt(0)3521; GFX942-NEXT: s_setpc_b64 s[30:31]3522 %vec0 = call <3 x ptr> asm "; def $0", "=v"()3523 %vec1 = call <3 x ptr> asm "; def $0", "=v"()3524 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 4, i32 4>3525 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 323526 ret void3527}3528 3529define void @v_shuffle_v3p0_v3p0__5_u_4(ptr addrspace(1) inreg %ptr) {3530; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_u_4:3531; GFX900: ; %bb.0:3532; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3533; GFX900-NEXT: v_mov_b32_e32 v6, 03534; GFX900-NEXT: ;;#ASMSTART3535; GFX900-NEXT: ; def v[0:5]3536; GFX900-NEXT: ;;#ASMEND3537; GFX900-NEXT: global_store_dwordx2 v6, v[2:3], s[16:17] offset:163538; GFX900-NEXT: global_store_dwordx4 v6, v[4:7], s[16:17]3539; GFX900-NEXT: s_waitcnt vmcnt(0)3540; GFX900-NEXT: s_setpc_b64 s[30:31]3541;3542; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_u_4:3543; GFX90A: ; %bb.0:3544; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3545; GFX90A-NEXT: v_mov_b32_e32 v6, 03546; GFX90A-NEXT: ;;#ASMSTART3547; GFX90A-NEXT: ; def v[0:5]3548; GFX90A-NEXT: ;;#ASMEND3549; GFX90A-NEXT: global_store_dwordx2 v6, v[2:3], s[16:17] offset:163550; GFX90A-NEXT: global_store_dwordx4 v6, v[4:7], s[16:17]3551; GFX90A-NEXT: s_waitcnt vmcnt(0)3552; GFX90A-NEXT: s_setpc_b64 s[30:31]3553;3554; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_u_4:3555; GFX942: ; %bb.0:3556; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3557; GFX942-NEXT: v_mov_b32_e32 v6, 03558; GFX942-NEXT: ;;#ASMSTART3559; GFX942-NEXT: ; def v[0:5]3560; GFX942-NEXT: ;;#ASMEND3561; GFX942-NEXT: global_store_dwordx2 v6, v[2:3], s[0:1] offset:163562; GFX942-NEXT: global_store_dwordx4 v6, v[4:7], s[0:1]3563; GFX942-NEXT: s_waitcnt vmcnt(0)3564; GFX942-NEXT: s_setpc_b64 s[30:31]3565 %vec0 = call <3 x ptr> asm "; def $0", "=v"()3566 %vec1 = call <3 x ptr> asm "; def $0", "=v"()3567 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 poison, i32 4>3568 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 323569 ret void3570}3571 3572define void @v_shuffle_v3p0_v3p0__5_0_4(ptr addrspace(1) inreg %ptr) {3573; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_0_4:3574; GFX900: ; %bb.0:3575; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3576; GFX900-NEXT: v_mov_b32_e32 v12, 03577; GFX900-NEXT: ;;#ASMSTART3578; GFX900-NEXT: ; def v[0:5]3579; GFX900-NEXT: ;;#ASMEND3580; GFX900-NEXT: ;;#ASMSTART3581; GFX900-NEXT: ; def v[6:11]3582; GFX900-NEXT: ;;#ASMEND3583; GFX900-NEXT: global_store_dwordx2 v12, v[2:3], s[16:17] offset:163584; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]3585; GFX900-NEXT: s_waitcnt vmcnt(0)3586; GFX900-NEXT: s_setpc_b64 s[30:31]3587;3588; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_0_4:3589; GFX90A: ; %bb.0:3590; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3591; GFX90A-NEXT: v_mov_b32_e32 v12, 03592; GFX90A-NEXT: ;;#ASMSTART3593; GFX90A-NEXT: ; def v[0:5]3594; GFX90A-NEXT: ;;#ASMEND3595; GFX90A-NEXT: ;;#ASMSTART3596; GFX90A-NEXT: ; def v[6:11]3597; GFX90A-NEXT: ;;#ASMEND3598; GFX90A-NEXT: global_store_dwordx2 v12, v[2:3], s[16:17] offset:163599; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]3600; GFX90A-NEXT: s_waitcnt vmcnt(0)3601; GFX90A-NEXT: s_setpc_b64 s[30:31]3602;3603; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_0_4:3604; GFX942: ; %bb.0:3605; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3606; GFX942-NEXT: v_mov_b32_e32 v12, 03607; GFX942-NEXT: ;;#ASMSTART3608; GFX942-NEXT: ; def v[0:5]3609; GFX942-NEXT: ;;#ASMEND3610; GFX942-NEXT: ;;#ASMSTART3611; GFX942-NEXT: ; def v[6:11]3612; GFX942-NEXT: ;;#ASMEND3613; GFX942-NEXT: global_store_dwordx2 v12, v[2:3], s[0:1] offset:163614; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]3615; GFX942-NEXT: s_waitcnt vmcnt(0)3616; GFX942-NEXT: s_setpc_b64 s[30:31]3617 %vec0 = call <3 x ptr> asm "; def $0", "=v"()3618 %vec1 = call <3 x ptr> asm "; def $0", "=v"()3619 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 0, i32 4>3620 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 323621 ret void3622}3623 3624define void @v_shuffle_v3p0_v3p0__5_1_4(ptr addrspace(1) inreg %ptr) {3625; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_1_4:3626; GFX900: ; %bb.0:3627; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3628; GFX900-NEXT: ;;#ASMSTART3629; GFX900-NEXT: ; def v[4:9]3630; GFX900-NEXT: ;;#ASMEND3631; GFX900-NEXT: v_mov_b32_e32 v10, 03632; GFX900-NEXT: ;;#ASMSTART3633; GFX900-NEXT: ; def v[0:5]3634; GFX900-NEXT: ;;#ASMEND3635; GFX900-NEXT: global_store_dwordx2 v10, v[2:3], s[16:17] offset:163636; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]3637; GFX900-NEXT: s_waitcnt vmcnt(0)3638; GFX900-NEXT: s_setpc_b64 s[30:31]3639;3640; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_1_4:3641; GFX90A: ; %bb.0:3642; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3643; GFX90A-NEXT: ;;#ASMSTART3644; GFX90A-NEXT: ; def v[4:9]3645; GFX90A-NEXT: ;;#ASMEND3646; GFX90A-NEXT: v_mov_b32_e32 v10, 03647; GFX90A-NEXT: ;;#ASMSTART3648; GFX90A-NEXT: ; def v[0:5]3649; GFX90A-NEXT: ;;#ASMEND3650; GFX90A-NEXT: global_store_dwordx2 v10, v[2:3], s[16:17] offset:163651; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]3652; GFX90A-NEXT: s_waitcnt vmcnt(0)3653; GFX90A-NEXT: s_setpc_b64 s[30:31]3654;3655; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_1_4:3656; GFX942: ; %bb.0:3657; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3658; GFX942-NEXT: ;;#ASMSTART3659; GFX942-NEXT: ; def v[4:9]3660; GFX942-NEXT: ;;#ASMEND3661; GFX942-NEXT: v_mov_b32_e32 v10, 03662; GFX942-NEXT: ;;#ASMSTART3663; GFX942-NEXT: ; def v[0:5]3664; GFX942-NEXT: ;;#ASMEND3665; GFX942-NEXT: global_store_dwordx2 v10, v[2:3], s[0:1] offset:163666; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]3667; GFX942-NEXT: s_waitcnt vmcnt(0)3668; GFX942-NEXT: s_setpc_b64 s[30:31]3669 %vec0 = call <3 x ptr> asm "; def $0", "=v"()3670 %vec1 = call <3 x ptr> asm "; def $0", "=v"()3671 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 1, i32 4>3672 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 323673 ret void3674}3675 3676define void @v_shuffle_v3p0_v3p0__5_2_4(ptr addrspace(1) inreg %ptr) {3677; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_2_4:3678; GFX900: ; %bb.0:3679; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3680; GFX900-NEXT: ;;#ASMSTART3681; GFX900-NEXT: ; def v[2:7]3682; GFX900-NEXT: ;;#ASMEND3683; GFX900-NEXT: v_mov_b32_e32 v8, 03684; GFX900-NEXT: ;;#ASMSTART3685; GFX900-NEXT: ; def v[0:5]3686; GFX900-NEXT: ;;#ASMEND3687; GFX900-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17] offset:163688; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]3689; GFX900-NEXT: s_waitcnt vmcnt(0)3690; GFX900-NEXT: s_setpc_b64 s[30:31]3691;3692; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_2_4:3693; GFX90A: ; %bb.0:3694; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3695; GFX90A-NEXT: ;;#ASMSTART3696; GFX90A-NEXT: ; def v[2:7]3697; GFX90A-NEXT: ;;#ASMEND3698; GFX90A-NEXT: v_mov_b32_e32 v8, 03699; GFX90A-NEXT: ;;#ASMSTART3700; GFX90A-NEXT: ; def v[0:5]3701; GFX90A-NEXT: ;;#ASMEND3702; GFX90A-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17] offset:163703; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]3704; GFX90A-NEXT: s_waitcnt vmcnt(0)3705; GFX90A-NEXT: s_setpc_b64 s[30:31]3706;3707; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_2_4:3708; GFX942: ; %bb.0:3709; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3710; GFX942-NEXT: ;;#ASMSTART3711; GFX942-NEXT: ; def v[2:7]3712; GFX942-NEXT: ;;#ASMEND3713; GFX942-NEXT: v_mov_b32_e32 v8, 03714; GFX942-NEXT: ;;#ASMSTART3715; GFX942-NEXT: ; def v[0:5]3716; GFX942-NEXT: ;;#ASMEND3717; GFX942-NEXT: global_store_dwordx2 v8, v[2:3], s[0:1] offset:163718; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]3719; GFX942-NEXT: s_waitcnt vmcnt(0)3720; GFX942-NEXT: s_setpc_b64 s[30:31]3721 %vec0 = call <3 x ptr> asm "; def $0", "=v"()3722 %vec1 = call <3 x ptr> asm "; def $0", "=v"()3723 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 2, i32 4>3724 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 323725 ret void3726}3727 3728define void @v_shuffle_v3p0_v3p0__5_3_4(ptr addrspace(1) inreg %ptr) {3729; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_3_4:3730; GFX900: ; %bb.0:3731; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3732; GFX900-NEXT: v_mov_b32_e32 v8, 03733; GFX900-NEXT: ;;#ASMSTART3734; GFX900-NEXT: ; def v[0:5]3735; GFX900-NEXT: ;;#ASMEND3736; GFX900-NEXT: v_mov_b32_e32 v6, v03737; GFX900-NEXT: v_mov_b32_e32 v7, v13738; GFX900-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17] offset:163739; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]3740; GFX900-NEXT: s_waitcnt vmcnt(0)3741; GFX900-NEXT: s_setpc_b64 s[30:31]3742;3743; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_3_4:3744; GFX90A: ; %bb.0:3745; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3746; GFX90A-NEXT: v_mov_b32_e32 v8, 03747; GFX90A-NEXT: ;;#ASMSTART3748; GFX90A-NEXT: ; def v[0:5]3749; GFX90A-NEXT: ;;#ASMEND3750; GFX90A-NEXT: v_mov_b32_e32 v6, v03751; GFX90A-NEXT: v_mov_b32_e32 v7, v13752; GFX90A-NEXT: global_store_dwordx2 v8, v[2:3], s[16:17] offset:163753; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]3754; GFX90A-NEXT: s_waitcnt vmcnt(0)3755; GFX90A-NEXT: s_setpc_b64 s[30:31]3756;3757; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_3_4:3758; GFX942: ; %bb.0:3759; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3760; GFX942-NEXT: v_mov_b32_e32 v8, 03761; GFX942-NEXT: ;;#ASMSTART3762; GFX942-NEXT: ; def v[0:5]3763; GFX942-NEXT: ;;#ASMEND3764; GFX942-NEXT: global_store_dwordx2 v8, v[2:3], s[0:1] offset:163765; GFX942-NEXT: v_mov_b32_e32 v6, v03766; GFX942-NEXT: v_mov_b32_e32 v7, v13767; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]3768; GFX942-NEXT: s_waitcnt vmcnt(0)3769; GFX942-NEXT: s_setpc_b64 s[30:31]3770 %vec0 = call <3 x ptr> asm "; def $0", "=v"()3771 %vec1 = call <3 x ptr> asm "; def $0", "=v"()3772 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 3, i32 4>3773 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 323774 ret void3775}3776 3777define void @v_shuffle_v3p0_v3p0__u_5_5(ptr addrspace(1) inreg %ptr) {3778; GFX900-LABEL: v_shuffle_v3p0_v3p0__u_5_5:3779; GFX900: ; %bb.0:3780; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3781; GFX900-NEXT: v_mov_b32_e32 v6, 03782; GFX900-NEXT: ;;#ASMSTART3783; GFX900-NEXT: ; def v[0:5]3784; GFX900-NEXT: ;;#ASMEND3785; GFX900-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17] offset:163786; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]3787; GFX900-NEXT: s_waitcnt vmcnt(0)3788; GFX900-NEXT: s_setpc_b64 s[30:31]3789;3790; GFX90A-LABEL: v_shuffle_v3p0_v3p0__u_5_5:3791; GFX90A: ; %bb.0:3792; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3793; GFX90A-NEXT: v_mov_b32_e32 v6, 03794; GFX90A-NEXT: ;;#ASMSTART3795; GFX90A-NEXT: ; def v[0:5]3796; GFX90A-NEXT: ;;#ASMEND3797; GFX90A-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17] offset:163798; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]3799; GFX90A-NEXT: s_waitcnt vmcnt(0)3800; GFX90A-NEXT: s_setpc_b64 s[30:31]3801;3802; GFX942-LABEL: v_shuffle_v3p0_v3p0__u_5_5:3803; GFX942: ; %bb.0:3804; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3805; GFX942-NEXT: v_mov_b32_e32 v6, 03806; GFX942-NEXT: ;;#ASMSTART3807; GFX942-NEXT: ; def v[0:5]3808; GFX942-NEXT: ;;#ASMEND3809; GFX942-NEXT: global_store_dwordx2 v6, v[4:5], s[0:1] offset:163810; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]3811; GFX942-NEXT: s_waitcnt vmcnt(0)3812; GFX942-NEXT: s_setpc_b64 s[30:31]3813 %vec0 = call <3 x ptr> asm "; def $0", "=v"()3814 %vec1 = call <3 x ptr> asm "; def $0", "=v"()3815 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 poison, i32 5, i32 5>3816 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 323817 ret void3818}3819 3820define void @v_shuffle_v3p0_v3p0__0_5_5(ptr addrspace(1) inreg %ptr) {3821; GFX900-LABEL: v_shuffle_v3p0_v3p0__0_5_5:3822; GFX900: ; %bb.0:3823; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3824; GFX900-NEXT: ;;#ASMSTART3825; GFX900-NEXT: ; def v[0:5]3826; GFX900-NEXT: ;;#ASMEND3827; GFX900-NEXT: ;;#ASMSTART3828; GFX900-NEXT: ; def v[2:7]3829; GFX900-NEXT: ;;#ASMEND3830; GFX900-NEXT: v_mov_b32_e32 v8, 03831; GFX900-NEXT: v_mov_b32_e32 v2, v63832; GFX900-NEXT: v_mov_b32_e32 v3, v73833; GFX900-NEXT: global_store_dwordx2 v8, v[6:7], s[16:17] offset:163834; GFX900-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]3835; GFX900-NEXT: s_waitcnt vmcnt(0)3836; GFX900-NEXT: s_setpc_b64 s[30:31]3837;3838; GFX90A-LABEL: v_shuffle_v3p0_v3p0__0_5_5:3839; GFX90A: ; %bb.0:3840; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3841; GFX90A-NEXT: ;;#ASMSTART3842; GFX90A-NEXT: ; def v[0:5]3843; GFX90A-NEXT: ;;#ASMEND3844; GFX90A-NEXT: ;;#ASMSTART3845; GFX90A-NEXT: ; def v[2:7]3846; GFX90A-NEXT: ;;#ASMEND3847; GFX90A-NEXT: v_mov_b32_e32 v8, 03848; GFX90A-NEXT: v_mov_b32_e32 v2, v63849; GFX90A-NEXT: v_mov_b32_e32 v3, v73850; GFX90A-NEXT: global_store_dwordx2 v8, v[6:7], s[16:17] offset:163851; GFX90A-NEXT: global_store_dwordx4 v8, v[0:3], s[16:17]3852; GFX90A-NEXT: s_waitcnt vmcnt(0)3853; GFX90A-NEXT: s_setpc_b64 s[30:31]3854;3855; GFX942-LABEL: v_shuffle_v3p0_v3p0__0_5_5:3856; GFX942: ; %bb.0:3857; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3858; GFX942-NEXT: ;;#ASMSTART3859; GFX942-NEXT: ; def v[0:5]3860; GFX942-NEXT: ;;#ASMEND3861; GFX942-NEXT: v_mov_b32_e32 v8, 03862; GFX942-NEXT: ;;#ASMSTART3863; GFX942-NEXT: ; def v[2:7]3864; GFX942-NEXT: ;;#ASMEND3865; GFX942-NEXT: global_store_dwordx2 v8, v[6:7], s[0:1] offset:163866; GFX942-NEXT: v_mov_b32_e32 v2, v63867; GFX942-NEXT: v_mov_b32_e32 v3, v73868; GFX942-NEXT: global_store_dwordx4 v8, v[0:3], s[0:1]3869; GFX942-NEXT: s_waitcnt vmcnt(0)3870; GFX942-NEXT: s_setpc_b64 s[30:31]3871 %vec0 = call <3 x ptr> asm "; def $0", "=v"()3872 %vec1 = call <3 x ptr> asm "; def $0", "=v"()3873 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 0, i32 5, i32 5>3874 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 323875 ret void3876}3877 3878define void @v_shuffle_v3p0_v3p0__1_5_5(ptr addrspace(1) inreg %ptr) {3879; GFX900-LABEL: v_shuffle_v3p0_v3p0__1_5_5:3880; GFX900: ; %bb.0:3881; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3882; GFX900-NEXT: ;;#ASMSTART3883; GFX900-NEXT: ; def v[0:5]3884; GFX900-NEXT: ;;#ASMEND3885; GFX900-NEXT: ;;#ASMSTART3886; GFX900-NEXT: ; def v[4:9]3887; GFX900-NEXT: ;;#ASMEND3888; GFX900-NEXT: v_mov_b32_e32 v10, 03889; GFX900-NEXT: v_mov_b32_e32 v4, v83890; GFX900-NEXT: v_mov_b32_e32 v5, v93891; GFX900-NEXT: global_store_dwordx2 v10, v[8:9], s[16:17] offset:163892; GFX900-NEXT: global_store_dwordx4 v10, v[2:5], s[16:17]3893; GFX900-NEXT: s_waitcnt vmcnt(0)3894; GFX900-NEXT: s_setpc_b64 s[30:31]3895;3896; GFX90A-LABEL: v_shuffle_v3p0_v3p0__1_5_5:3897; GFX90A: ; %bb.0:3898; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3899; GFX90A-NEXT: ;;#ASMSTART3900; GFX90A-NEXT: ; def v[0:5]3901; GFX90A-NEXT: ;;#ASMEND3902; GFX90A-NEXT: ;;#ASMSTART3903; GFX90A-NEXT: ; def v[4:9]3904; GFX90A-NEXT: ;;#ASMEND3905; GFX90A-NEXT: v_mov_b32_e32 v10, 03906; GFX90A-NEXT: v_mov_b32_e32 v4, v83907; GFX90A-NEXT: v_mov_b32_e32 v5, v93908; GFX90A-NEXT: global_store_dwordx2 v10, v[8:9], s[16:17] offset:163909; GFX90A-NEXT: global_store_dwordx4 v10, v[2:5], s[16:17]3910; GFX90A-NEXT: s_waitcnt vmcnt(0)3911; GFX90A-NEXT: s_setpc_b64 s[30:31]3912;3913; GFX942-LABEL: v_shuffle_v3p0_v3p0__1_5_5:3914; GFX942: ; %bb.0:3915; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3916; GFX942-NEXT: ;;#ASMSTART3917; GFX942-NEXT: ; def v[0:5]3918; GFX942-NEXT: ;;#ASMEND3919; GFX942-NEXT: v_mov_b32_e32 v10, 03920; GFX942-NEXT: ;;#ASMSTART3921; GFX942-NEXT: ; def v[4:9]3922; GFX942-NEXT: ;;#ASMEND3923; GFX942-NEXT: global_store_dwordx2 v10, v[8:9], s[0:1] offset:163924; GFX942-NEXT: v_mov_b32_e32 v4, v83925; GFX942-NEXT: v_mov_b32_e32 v5, v93926; GFX942-NEXT: global_store_dwordx4 v10, v[2:5], s[0:1]3927; GFX942-NEXT: s_waitcnt vmcnt(0)3928; GFX942-NEXT: s_setpc_b64 s[30:31]3929 %vec0 = call <3 x ptr> asm "; def $0", "=v"()3930 %vec1 = call <3 x ptr> asm "; def $0", "=v"()3931 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 1, i32 5, i32 5>3932 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 323933 ret void3934}3935 3936define void @v_shuffle_v3p0_v3p0__2_5_5(ptr addrspace(1) inreg %ptr) {3937; GFX900-LABEL: v_shuffle_v3p0_v3p0__2_5_5:3938; GFX900: ; %bb.0:3939; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3940; GFX900-NEXT: ;;#ASMSTART3941; GFX900-NEXT: ; def v[6:11]3942; GFX900-NEXT: ;;#ASMEND3943; GFX900-NEXT: v_mov_b32_e32 v12, 03944; GFX900-NEXT: v_mov_b32_e32 v6, v103945; GFX900-NEXT: v_mov_b32_e32 v7, v113946; GFX900-NEXT: ;;#ASMSTART3947; GFX900-NEXT: ; def v[0:5]3948; GFX900-NEXT: ;;#ASMEND3949; GFX900-NEXT: global_store_dwordx2 v12, v[10:11], s[16:17] offset:163950; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]3951; GFX900-NEXT: s_waitcnt vmcnt(0)3952; GFX900-NEXT: s_setpc_b64 s[30:31]3953;3954; GFX90A-LABEL: v_shuffle_v3p0_v3p0__2_5_5:3955; GFX90A: ; %bb.0:3956; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3957; GFX90A-NEXT: ;;#ASMSTART3958; GFX90A-NEXT: ; def v[6:11]3959; GFX90A-NEXT: ;;#ASMEND3960; GFX90A-NEXT: v_mov_b32_e32 v12, 03961; GFX90A-NEXT: v_mov_b32_e32 v6, v103962; GFX90A-NEXT: v_mov_b32_e32 v7, v113963; GFX90A-NEXT: ;;#ASMSTART3964; GFX90A-NEXT: ; def v[0:5]3965; GFX90A-NEXT: ;;#ASMEND3966; GFX90A-NEXT: global_store_dwordx2 v12, v[10:11], s[16:17] offset:163967; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]3968; GFX90A-NEXT: s_waitcnt vmcnt(0)3969; GFX90A-NEXT: s_setpc_b64 s[30:31]3970;3971; GFX942-LABEL: v_shuffle_v3p0_v3p0__2_5_5:3972; GFX942: ; %bb.0:3973; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3974; GFX942-NEXT: ;;#ASMSTART3975; GFX942-NEXT: ; def v[6:11]3976; GFX942-NEXT: ;;#ASMEND3977; GFX942-NEXT: v_mov_b32_e32 v12, 03978; GFX942-NEXT: v_mov_b32_e32 v6, v103979; GFX942-NEXT: v_mov_b32_e32 v7, v113980; GFX942-NEXT: ;;#ASMSTART3981; GFX942-NEXT: ; def v[0:5]3982; GFX942-NEXT: ;;#ASMEND3983; GFX942-NEXT: global_store_dwordx2 v12, v[10:11], s[0:1] offset:163984; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]3985; GFX942-NEXT: s_waitcnt vmcnt(0)3986; GFX942-NEXT: s_setpc_b64 s[30:31]3987 %vec0 = call <3 x ptr> asm "; def $0", "=v"()3988 %vec1 = call <3 x ptr> asm "; def $0", "=v"()3989 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 2, i32 5, i32 5>3990 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 323991 ret void3992}3993 3994define void @v_shuffle_v3p0_v3p0__3_5_5(ptr addrspace(1) inreg %ptr) {3995; GFX900-LABEL: v_shuffle_v3p0_v3p0__3_5_5:3996; GFX900: ; %bb.0:3997; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)3998; GFX900-NEXT: ;;#ASMSTART3999; GFX900-NEXT: ; def v[0:5]4000; GFX900-NEXT: ;;#ASMEND4001; GFX900-NEXT: v_mov_b32_e32 v6, 04002; GFX900-NEXT: v_mov_b32_e32 v2, v44003; GFX900-NEXT: v_mov_b32_e32 v3, v54004; GFX900-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17] offset:164005; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]4006; GFX900-NEXT: s_waitcnt vmcnt(0)4007; GFX900-NEXT: s_setpc_b64 s[30:31]4008;4009; GFX90A-LABEL: v_shuffle_v3p0_v3p0__3_5_5:4010; GFX90A: ; %bb.0:4011; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4012; GFX90A-NEXT: ;;#ASMSTART4013; GFX90A-NEXT: ; def v[0:5]4014; GFX90A-NEXT: ;;#ASMEND4015; GFX90A-NEXT: v_mov_b32_e32 v6, 04016; GFX90A-NEXT: v_mov_b32_e32 v2, v44017; GFX90A-NEXT: v_mov_b32_e32 v3, v54018; GFX90A-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17] offset:164019; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]4020; GFX90A-NEXT: s_waitcnt vmcnt(0)4021; GFX90A-NEXT: s_setpc_b64 s[30:31]4022;4023; GFX942-LABEL: v_shuffle_v3p0_v3p0__3_5_5:4024; GFX942: ; %bb.0:4025; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4026; GFX942-NEXT: ;;#ASMSTART4027; GFX942-NEXT: ; def v[0:5]4028; GFX942-NEXT: ;;#ASMEND4029; GFX942-NEXT: v_mov_b32_e32 v6, 04030; GFX942-NEXT: v_mov_b32_e32 v2, v44031; GFX942-NEXT: v_mov_b32_e32 v3, v54032; GFX942-NEXT: global_store_dwordx2 v6, v[4:5], s[0:1] offset:164033; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]4034; GFX942-NEXT: s_waitcnt vmcnt(0)4035; GFX942-NEXT: s_setpc_b64 s[30:31]4036 %vec0 = call <3 x ptr> asm "; def $0", "=v"()4037 %vec1 = call <3 x ptr> asm "; def $0", "=v"()4038 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 3, i32 5, i32 5>4039 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 324040 ret void4041}4042 4043define void @v_shuffle_v3p0_v3p0__4_5_5(ptr addrspace(1) inreg %ptr) {4044; GFX900-LABEL: v_shuffle_v3p0_v3p0__4_5_5:4045; GFX900: ; %bb.0:4046; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4047; GFX900-NEXT: v_mov_b32_e32 v6, 04048; GFX900-NEXT: ;;#ASMSTART4049; GFX900-NEXT: ; def v[0:5]4050; GFX900-NEXT: ;;#ASMEND4051; GFX900-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17] offset:164052; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]4053; GFX900-NEXT: s_waitcnt vmcnt(0)4054; GFX900-NEXT: s_setpc_b64 s[30:31]4055;4056; GFX90A-LABEL: v_shuffle_v3p0_v3p0__4_5_5:4057; GFX90A: ; %bb.0:4058; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4059; GFX90A-NEXT: v_mov_b32_e32 v6, 04060; GFX90A-NEXT: ;;#ASMSTART4061; GFX90A-NEXT: ; def v[0:5]4062; GFX90A-NEXT: ;;#ASMEND4063; GFX90A-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17] offset:164064; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]4065; GFX90A-NEXT: s_waitcnt vmcnt(0)4066; GFX90A-NEXT: s_setpc_b64 s[30:31]4067;4068; GFX942-LABEL: v_shuffle_v3p0_v3p0__4_5_5:4069; GFX942: ; %bb.0:4070; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4071; GFX942-NEXT: v_mov_b32_e32 v6, 04072; GFX942-NEXT: ;;#ASMSTART4073; GFX942-NEXT: ; def v[0:5]4074; GFX942-NEXT: ;;#ASMEND4075; GFX942-NEXT: global_store_dwordx2 v6, v[4:5], s[0:1] offset:164076; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]4077; GFX942-NEXT: s_waitcnt vmcnt(0)4078; GFX942-NEXT: s_setpc_b64 s[30:31]4079 %vec0 = call <3 x ptr> asm "; def $0", "=v"()4080 %vec1 = call <3 x ptr> asm "; def $0", "=v"()4081 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 4, i32 5, i32 5>4082 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 324083 ret void4084}4085 4086define void @v_shuffle_v3p0_v3p0__5_u_5(ptr addrspace(1) inreg %ptr) {4087; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_u_5:4088; GFX900: ; %bb.0:4089; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4090; GFX900-NEXT: v_mov_b32_e32 v6, 04091; GFX900-NEXT: ;;#ASMSTART4092; GFX900-NEXT: ; def v[0:5]4093; GFX900-NEXT: ;;#ASMEND4094; GFX900-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17] offset:164095; GFX900-NEXT: global_store_dwordx4 v6, v[4:7], s[16:17]4096; GFX900-NEXT: s_waitcnt vmcnt(0)4097; GFX900-NEXT: s_setpc_b64 s[30:31]4098;4099; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_u_5:4100; GFX90A: ; %bb.0:4101; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4102; GFX90A-NEXT: v_mov_b32_e32 v6, 04103; GFX90A-NEXT: ;;#ASMSTART4104; GFX90A-NEXT: ; def v[0:5]4105; GFX90A-NEXT: ;;#ASMEND4106; GFX90A-NEXT: global_store_dwordx2 v6, v[4:5], s[16:17] offset:164107; GFX90A-NEXT: global_store_dwordx4 v6, v[4:7], s[16:17]4108; GFX90A-NEXT: s_waitcnt vmcnt(0)4109; GFX90A-NEXT: s_setpc_b64 s[30:31]4110;4111; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_u_5:4112; GFX942: ; %bb.0:4113; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4114; GFX942-NEXT: v_mov_b32_e32 v6, 04115; GFX942-NEXT: ;;#ASMSTART4116; GFX942-NEXT: ; def v[0:5]4117; GFX942-NEXT: ;;#ASMEND4118; GFX942-NEXT: global_store_dwordx2 v6, v[4:5], s[0:1] offset:164119; GFX942-NEXT: global_store_dwordx4 v6, v[4:7], s[0:1]4120; GFX942-NEXT: s_waitcnt vmcnt(0)4121; GFX942-NEXT: s_setpc_b64 s[30:31]4122 %vec0 = call <3 x ptr> asm "; def $0", "=v"()4123 %vec1 = call <3 x ptr> asm "; def $0", "=v"()4124 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 poison, i32 5>4125 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 324126 ret void4127}4128 4129define void @v_shuffle_v3p0_v3p0__5_0_5(ptr addrspace(1) inreg %ptr) {4130; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_0_5:4131; GFX900: ; %bb.0:4132; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4133; GFX900-NEXT: v_mov_b32_e32 v12, 04134; GFX900-NEXT: ;;#ASMSTART4135; GFX900-NEXT: ; def v[6:11]4136; GFX900-NEXT: ;;#ASMEND4137; GFX900-NEXT: ;;#ASMSTART4138; GFX900-NEXT: ; def v[0:5]4139; GFX900-NEXT: ;;#ASMEND4140; GFX900-NEXT: global_store_dwordx2 v12, v[4:5], s[16:17] offset:164141; GFX900-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]4142; GFX900-NEXT: s_waitcnt vmcnt(0)4143; GFX900-NEXT: s_setpc_b64 s[30:31]4144;4145; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_0_5:4146; GFX90A: ; %bb.0:4147; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4148; GFX90A-NEXT: v_mov_b32_e32 v12, 04149; GFX90A-NEXT: ;;#ASMSTART4150; GFX90A-NEXT: ; def v[6:11]4151; GFX90A-NEXT: ;;#ASMEND4152; GFX90A-NEXT: ;;#ASMSTART4153; GFX90A-NEXT: ; def v[0:5]4154; GFX90A-NEXT: ;;#ASMEND4155; GFX90A-NEXT: global_store_dwordx2 v12, v[4:5], s[16:17] offset:164156; GFX90A-NEXT: global_store_dwordx4 v12, v[4:7], s[16:17]4157; GFX90A-NEXT: s_waitcnt vmcnt(0)4158; GFX90A-NEXT: s_setpc_b64 s[30:31]4159;4160; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_0_5:4161; GFX942: ; %bb.0:4162; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4163; GFX942-NEXT: v_mov_b32_e32 v12, 04164; GFX942-NEXT: ;;#ASMSTART4165; GFX942-NEXT: ; def v[6:11]4166; GFX942-NEXT: ;;#ASMEND4167; GFX942-NEXT: ;;#ASMSTART4168; GFX942-NEXT: ; def v[0:5]4169; GFX942-NEXT: ;;#ASMEND4170; GFX942-NEXT: global_store_dwordx2 v12, v[4:5], s[0:1] offset:164171; GFX942-NEXT: global_store_dwordx4 v12, v[4:7], s[0:1]4172; GFX942-NEXT: s_waitcnt vmcnt(0)4173; GFX942-NEXT: s_setpc_b64 s[30:31]4174 %vec0 = call <3 x ptr> asm "; def $0", "=v"()4175 %vec1 = call <3 x ptr> asm "; def $0", "=v"()4176 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 0, i32 5>4177 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 324178 ret void4179}4180 4181define void @v_shuffle_v3p0_v3p0__5_1_5(ptr addrspace(1) inreg %ptr) {4182; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_1_5:4183; GFX900: ; %bb.0:4184; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4185; GFX900-NEXT: ;;#ASMSTART4186; GFX900-NEXT: ; def v[4:9]4187; GFX900-NEXT: ;;#ASMEND4188; GFX900-NEXT: v_mov_b32_e32 v10, 04189; GFX900-NEXT: ;;#ASMSTART4190; GFX900-NEXT: ; def v[0:5]4191; GFX900-NEXT: ;;#ASMEND4192; GFX900-NEXT: global_store_dwordx2 v10, v[4:5], s[16:17] offset:164193; GFX900-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]4194; GFX900-NEXT: s_waitcnt vmcnt(0)4195; GFX900-NEXT: s_setpc_b64 s[30:31]4196;4197; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_1_5:4198; GFX90A: ; %bb.0:4199; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4200; GFX90A-NEXT: ;;#ASMSTART4201; GFX90A-NEXT: ; def v[4:9]4202; GFX90A-NEXT: ;;#ASMEND4203; GFX90A-NEXT: v_mov_b32_e32 v10, 04204; GFX90A-NEXT: ;;#ASMSTART4205; GFX90A-NEXT: ; def v[0:5]4206; GFX90A-NEXT: ;;#ASMEND4207; GFX90A-NEXT: global_store_dwordx2 v10, v[4:5], s[16:17] offset:164208; GFX90A-NEXT: global_store_dwordx4 v10, v[4:7], s[16:17]4209; GFX90A-NEXT: s_waitcnt vmcnt(0)4210; GFX90A-NEXT: s_setpc_b64 s[30:31]4211;4212; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_1_5:4213; GFX942: ; %bb.0:4214; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4215; GFX942-NEXT: ;;#ASMSTART4216; GFX942-NEXT: ; def v[4:9]4217; GFX942-NEXT: ;;#ASMEND4218; GFX942-NEXT: v_mov_b32_e32 v10, 04219; GFX942-NEXT: ;;#ASMSTART4220; GFX942-NEXT: ; def v[0:5]4221; GFX942-NEXT: ;;#ASMEND4222; GFX942-NEXT: global_store_dwordx2 v10, v[4:5], s[0:1] offset:164223; GFX942-NEXT: global_store_dwordx4 v10, v[4:7], s[0:1]4224; GFX942-NEXT: s_waitcnt vmcnt(0)4225; GFX942-NEXT: s_setpc_b64 s[30:31]4226 %vec0 = call <3 x ptr> asm "; def $0", "=v"()4227 %vec1 = call <3 x ptr> asm "; def $0", "=v"()4228 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 1, i32 5>4229 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 324230 ret void4231}4232 4233define void @v_shuffle_v3p0_v3p0__5_2_5(ptr addrspace(1) inreg %ptr) {4234; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_2_5:4235; GFX900: ; %bb.0:4236; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4237; GFX900-NEXT: ;;#ASMSTART4238; GFX900-NEXT: ; def v[2:7]4239; GFX900-NEXT: ;;#ASMEND4240; GFX900-NEXT: v_mov_b32_e32 v8, 04241; GFX900-NEXT: ;;#ASMSTART4242; GFX900-NEXT: ; def v[0:5]4243; GFX900-NEXT: ;;#ASMEND4244; GFX900-NEXT: global_store_dwordx2 v8, v[4:5], s[16:17] offset:164245; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]4246; GFX900-NEXT: s_waitcnt vmcnt(0)4247; GFX900-NEXT: s_setpc_b64 s[30:31]4248;4249; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_2_5:4250; GFX90A: ; %bb.0:4251; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4252; GFX90A-NEXT: ;;#ASMSTART4253; GFX90A-NEXT: ; def v[2:7]4254; GFX90A-NEXT: ;;#ASMEND4255; GFX90A-NEXT: v_mov_b32_e32 v8, 04256; GFX90A-NEXT: ;;#ASMSTART4257; GFX90A-NEXT: ; def v[0:5]4258; GFX90A-NEXT: ;;#ASMEND4259; GFX90A-NEXT: global_store_dwordx2 v8, v[4:5], s[16:17] offset:164260; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]4261; GFX90A-NEXT: s_waitcnt vmcnt(0)4262; GFX90A-NEXT: s_setpc_b64 s[30:31]4263;4264; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_2_5:4265; GFX942: ; %bb.0:4266; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4267; GFX942-NEXT: ;;#ASMSTART4268; GFX942-NEXT: ; def v[2:7]4269; GFX942-NEXT: ;;#ASMEND4270; GFX942-NEXT: v_mov_b32_e32 v8, 04271; GFX942-NEXT: ;;#ASMSTART4272; GFX942-NEXT: ; def v[0:5]4273; GFX942-NEXT: ;;#ASMEND4274; GFX942-NEXT: global_store_dwordx2 v8, v[4:5], s[0:1] offset:164275; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]4276; GFX942-NEXT: s_waitcnt vmcnt(0)4277; GFX942-NEXT: s_setpc_b64 s[30:31]4278 %vec0 = call <3 x ptr> asm "; def $0", "=v"()4279 %vec1 = call <3 x ptr> asm "; def $0", "=v"()4280 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 2, i32 5>4281 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 324282 ret void4283}4284 4285define void @v_shuffle_v3p0_v3p0__5_3_5(ptr addrspace(1) inreg %ptr) {4286; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_3_5:4287; GFX900: ; %bb.0:4288; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4289; GFX900-NEXT: v_mov_b32_e32 v8, 04290; GFX900-NEXT: ;;#ASMSTART4291; GFX900-NEXT: ; def v[0:5]4292; GFX900-NEXT: ;;#ASMEND4293; GFX900-NEXT: v_mov_b32_e32 v6, v04294; GFX900-NEXT: v_mov_b32_e32 v7, v14295; GFX900-NEXT: global_store_dwordx2 v8, v[4:5], s[16:17] offset:164296; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]4297; GFX900-NEXT: s_waitcnt vmcnt(0)4298; GFX900-NEXT: s_setpc_b64 s[30:31]4299;4300; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_3_5:4301; GFX90A: ; %bb.0:4302; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4303; GFX90A-NEXT: v_mov_b32_e32 v8, 04304; GFX90A-NEXT: ;;#ASMSTART4305; GFX90A-NEXT: ; def v[0:5]4306; GFX90A-NEXT: ;;#ASMEND4307; GFX90A-NEXT: v_mov_b32_e32 v6, v04308; GFX90A-NEXT: v_mov_b32_e32 v7, v14309; GFX90A-NEXT: global_store_dwordx2 v8, v[4:5], s[16:17] offset:164310; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]4311; GFX90A-NEXT: s_waitcnt vmcnt(0)4312; GFX90A-NEXT: s_setpc_b64 s[30:31]4313;4314; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_3_5:4315; GFX942: ; %bb.0:4316; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4317; GFX942-NEXT: v_mov_b32_e32 v8, 04318; GFX942-NEXT: ;;#ASMSTART4319; GFX942-NEXT: ; def v[0:5]4320; GFX942-NEXT: ;;#ASMEND4321; GFX942-NEXT: global_store_dwordx2 v8, v[4:5], s[0:1] offset:164322; GFX942-NEXT: v_mov_b32_e32 v6, v04323; GFX942-NEXT: v_mov_b32_e32 v7, v14324; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]4325; GFX942-NEXT: s_waitcnt vmcnt(0)4326; GFX942-NEXT: s_setpc_b64 s[30:31]4327 %vec0 = call <3 x ptr> asm "; def $0", "=v"()4328 %vec1 = call <3 x ptr> asm "; def $0", "=v"()4329 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 3, i32 5>4330 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 324331 ret void4332}4333 4334define void @v_shuffle_v3p0_v3p0__5_4_5(ptr addrspace(1) inreg %ptr) {4335; GFX900-LABEL: v_shuffle_v3p0_v3p0__5_4_5:4336; GFX900: ; %bb.0:4337; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4338; GFX900-NEXT: v_mov_b32_e32 v8, 04339; GFX900-NEXT: ;;#ASMSTART4340; GFX900-NEXT: ; def v[0:5]4341; GFX900-NEXT: ;;#ASMEND4342; GFX900-NEXT: v_mov_b32_e32 v6, v24343; GFX900-NEXT: v_mov_b32_e32 v7, v34344; GFX900-NEXT: global_store_dwordx2 v8, v[4:5], s[16:17] offset:164345; GFX900-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]4346; GFX900-NEXT: s_waitcnt vmcnt(0)4347; GFX900-NEXT: s_setpc_b64 s[30:31]4348;4349; GFX90A-LABEL: v_shuffle_v3p0_v3p0__5_4_5:4350; GFX90A: ; %bb.0:4351; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4352; GFX90A-NEXT: v_mov_b32_e32 v8, 04353; GFX90A-NEXT: ;;#ASMSTART4354; GFX90A-NEXT: ; def v[0:5]4355; GFX90A-NEXT: ;;#ASMEND4356; GFX90A-NEXT: v_mov_b32_e32 v6, v24357; GFX90A-NEXT: v_mov_b32_e32 v7, v34358; GFX90A-NEXT: global_store_dwordx2 v8, v[4:5], s[16:17] offset:164359; GFX90A-NEXT: global_store_dwordx4 v8, v[4:7], s[16:17]4360; GFX90A-NEXT: s_waitcnt vmcnt(0)4361; GFX90A-NEXT: s_setpc_b64 s[30:31]4362;4363; GFX942-LABEL: v_shuffle_v3p0_v3p0__5_4_5:4364; GFX942: ; %bb.0:4365; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4366; GFX942-NEXT: v_mov_b32_e32 v8, 04367; GFX942-NEXT: ;;#ASMSTART4368; GFX942-NEXT: ; def v[0:5]4369; GFX942-NEXT: ;;#ASMEND4370; GFX942-NEXT: global_store_dwordx2 v8, v[4:5], s[0:1] offset:164371; GFX942-NEXT: v_mov_b32_e32 v6, v24372; GFX942-NEXT: v_mov_b32_e32 v7, v34373; GFX942-NEXT: global_store_dwordx4 v8, v[4:7], s[0:1]4374; GFX942-NEXT: s_waitcnt vmcnt(0)4375; GFX942-NEXT: s_setpc_b64 s[30:31]4376 %vec0 = call <3 x ptr> asm "; def $0", "=v"()4377 %vec1 = call <3 x ptr> asm "; def $0", "=v"()4378 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 4, i32 5>4379 store <3 x ptr> %shuf, ptr addrspace(1) %ptr, align 324380 ret void4381}4382 4383define void @s_shuffle_v3p0_v3p0__u_u_u() {4384; GFX9-LABEL: s_shuffle_v3p0_v3p0__u_u_u:4385; GFX9: ; %bb.0:4386; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4387; GFX9-NEXT: ;;#ASMSTART4388; GFX9-NEXT: ; use s[8:13]4389; GFX9-NEXT: ;;#ASMEND4390; GFX9-NEXT: s_setpc_b64 s[30:31]4391 %vec0 = call <3 x ptr> asm "; def $0", "=s"()4392 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> poison4393 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)4394 ret void4395}4396 4397define void @s_shuffle_v3p0_v3p0__0_u_u() {4398; GFX900-LABEL: s_shuffle_v3p0_v3p0__0_u_u:4399; GFX900: ; %bb.0:4400; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4401; GFX900-NEXT: ;;#ASMSTART4402; GFX900-NEXT: ; def s[8:13]4403; GFX900-NEXT: ;;#ASMEND4404; GFX900-NEXT: ;;#ASMSTART4405; GFX900-NEXT: ; use s[8:13]4406; GFX900-NEXT: ;;#ASMEND4407; GFX900-NEXT: s_setpc_b64 s[30:31]4408;4409; GFX90A-LABEL: s_shuffle_v3p0_v3p0__0_u_u:4410; GFX90A: ; %bb.0:4411; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4412; GFX90A-NEXT: ;;#ASMSTART4413; GFX90A-NEXT: ; def s[8:13]4414; GFX90A-NEXT: ;;#ASMEND4415; GFX90A-NEXT: ;;#ASMSTART4416; GFX90A-NEXT: ; use s[8:13]4417; GFX90A-NEXT: ;;#ASMEND4418; GFX90A-NEXT: s_setpc_b64 s[30:31]4419;4420; GFX942-LABEL: s_shuffle_v3p0_v3p0__0_u_u:4421; GFX942: ; %bb.0:4422; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4423; GFX942-NEXT: ;;#ASMSTART4424; GFX942-NEXT: ; def s[8:13]4425; GFX942-NEXT: ;;#ASMEND4426; GFX942-NEXT: s_nop 04427; GFX942-NEXT: ;;#ASMSTART4428; GFX942-NEXT: ; use s[8:13]4429; GFX942-NEXT: ;;#ASMEND4430; GFX942-NEXT: s_setpc_b64 s[30:31]4431 %vec0 = call <3 x ptr> asm "; def $0", "=s"()4432 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 0, i32 poison, i32 poison>4433 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)4434 ret void4435}4436 4437define void @s_shuffle_v3p0_v3p0__1_u_u() {4438; GFX900-LABEL: s_shuffle_v3p0_v3p0__1_u_u:4439; GFX900: ; %bb.0:4440; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4441; GFX900-NEXT: ;;#ASMSTART4442; GFX900-NEXT: ; def s[4:9]4443; GFX900-NEXT: ;;#ASMEND4444; GFX900-NEXT: s_mov_b32 s8, s64445; GFX900-NEXT: s_mov_b32 s9, s74446; GFX900-NEXT: ;;#ASMSTART4447; GFX900-NEXT: ; use s[8:13]4448; GFX900-NEXT: ;;#ASMEND4449; GFX900-NEXT: s_setpc_b64 s[30:31]4450;4451; GFX90A-LABEL: s_shuffle_v3p0_v3p0__1_u_u:4452; GFX90A: ; %bb.0:4453; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4454; GFX90A-NEXT: ;;#ASMSTART4455; GFX90A-NEXT: ; def s[4:9]4456; GFX90A-NEXT: ;;#ASMEND4457; GFX90A-NEXT: s_mov_b32 s8, s64458; GFX90A-NEXT: s_mov_b32 s9, s74459; GFX90A-NEXT: ;;#ASMSTART4460; GFX90A-NEXT: ; use s[8:13]4461; GFX90A-NEXT: ;;#ASMEND4462; GFX90A-NEXT: s_setpc_b64 s[30:31]4463;4464; GFX942-LABEL: s_shuffle_v3p0_v3p0__1_u_u:4465; GFX942: ; %bb.0:4466; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4467; GFX942-NEXT: ;;#ASMSTART4468; GFX942-NEXT: ; def s[0:5]4469; GFX942-NEXT: ;;#ASMEND4470; GFX942-NEXT: s_mov_b32 s8, s24471; GFX942-NEXT: s_mov_b32 s9, s34472; GFX942-NEXT: ;;#ASMSTART4473; GFX942-NEXT: ; use s[8:13]4474; GFX942-NEXT: ;;#ASMEND4475; GFX942-NEXT: s_setpc_b64 s[30:31]4476 %vec0 = call <3 x ptr> asm "; def $0", "=s"()4477 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 1, i32 poison, i32 poison>4478 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)4479 ret void4480}4481 4482define void @s_shuffle_v3p0_v3p0__2_u_u() {4483; GFX900-LABEL: s_shuffle_v3p0_v3p0__2_u_u:4484; GFX900: ; %bb.0:4485; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4486; GFX900-NEXT: ;;#ASMSTART4487; GFX900-NEXT: ; def s[4:9]4488; GFX900-NEXT: ;;#ASMEND4489; GFX900-NEXT: ;;#ASMSTART4490; GFX900-NEXT: ; use s[8:13]4491; GFX900-NEXT: ;;#ASMEND4492; GFX900-NEXT: s_setpc_b64 s[30:31]4493;4494; GFX90A-LABEL: s_shuffle_v3p0_v3p0__2_u_u:4495; GFX90A: ; %bb.0:4496; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4497; GFX90A-NEXT: ;;#ASMSTART4498; GFX90A-NEXT: ; def s[4:9]4499; GFX90A-NEXT: ;;#ASMEND4500; GFX90A-NEXT: ;;#ASMSTART4501; GFX90A-NEXT: ; use s[8:13]4502; GFX90A-NEXT: ;;#ASMEND4503; GFX90A-NEXT: s_setpc_b64 s[30:31]4504;4505; GFX942-LABEL: s_shuffle_v3p0_v3p0__2_u_u:4506; GFX942: ; %bb.0:4507; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4508; GFX942-NEXT: ;;#ASMSTART4509; GFX942-NEXT: ; def s[4:9]4510; GFX942-NEXT: ;;#ASMEND4511; GFX942-NEXT: s_nop 04512; GFX942-NEXT: ;;#ASMSTART4513; GFX942-NEXT: ; use s[8:13]4514; GFX942-NEXT: ;;#ASMEND4515; GFX942-NEXT: s_setpc_b64 s[30:31]4516 %vec0 = call <3 x ptr> asm "; def $0", "=s"()4517 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 2, i32 poison, i32 poison>4518 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)4519 ret void4520}4521 4522define void @s_shuffle_v3p0_v3p0__3_u_u() {4523; GFX9-LABEL: s_shuffle_v3p0_v3p0__3_u_u:4524; GFX9: ; %bb.0:4525; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4526; GFX9-NEXT: ;;#ASMSTART4527; GFX9-NEXT: ; use s[8:13]4528; GFX9-NEXT: ;;#ASMEND4529; GFX9-NEXT: s_setpc_b64 s[30:31]4530 %vec0 = call <3 x ptr> asm "; def $0", "=s"()4531 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 3, i32 poison, i32 poison>4532 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)4533 ret void4534}4535 4536define void @s_shuffle_v3p0_v3p0__4_u_u() {4537; GFX900-LABEL: s_shuffle_v3p0_v3p0__4_u_u:4538; GFX900: ; %bb.0:4539; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4540; GFX900-NEXT: ;;#ASMSTART4541; GFX900-NEXT: ; def s[4:9]4542; GFX900-NEXT: ;;#ASMEND4543; GFX900-NEXT: s_mov_b32 s8, s64544; GFX900-NEXT: s_mov_b32 s9, s74545; GFX900-NEXT: ;;#ASMSTART4546; GFX900-NEXT: ; use s[8:13]4547; GFX900-NEXT: ;;#ASMEND4548; GFX900-NEXT: s_setpc_b64 s[30:31]4549;4550; GFX90A-LABEL: s_shuffle_v3p0_v3p0__4_u_u:4551; GFX90A: ; %bb.0:4552; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4553; GFX90A-NEXT: ;;#ASMSTART4554; GFX90A-NEXT: ; def s[4:9]4555; GFX90A-NEXT: ;;#ASMEND4556; GFX90A-NEXT: s_mov_b32 s8, s64557; GFX90A-NEXT: s_mov_b32 s9, s74558; GFX90A-NEXT: ;;#ASMSTART4559; GFX90A-NEXT: ; use s[8:13]4560; GFX90A-NEXT: ;;#ASMEND4561; GFX90A-NEXT: s_setpc_b64 s[30:31]4562;4563; GFX942-LABEL: s_shuffle_v3p0_v3p0__4_u_u:4564; GFX942: ; %bb.0:4565; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4566; GFX942-NEXT: ;;#ASMSTART4567; GFX942-NEXT: ; def s[0:5]4568; GFX942-NEXT: ;;#ASMEND4569; GFX942-NEXT: s_mov_b32 s8, s24570; GFX942-NEXT: s_mov_b32 s9, s34571; GFX942-NEXT: ;;#ASMSTART4572; GFX942-NEXT: ; use s[8:13]4573; GFX942-NEXT: ;;#ASMEND4574; GFX942-NEXT: s_setpc_b64 s[30:31]4575 %vec0 = call <3 x ptr> asm "; def $0", "=s"()4576 %vec1 = call <3 x ptr> asm "; def $0", "=s"()4577 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 4, i32 poison, i32 poison>4578 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)4579 ret void4580}4581 4582define void @s_shuffle_v3p0_v3p0__5_u_u() {4583; GFX900-LABEL: s_shuffle_v3p0_v3p0__5_u_u:4584; GFX900: ; %bb.0:4585; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4586; GFX900-NEXT: ;;#ASMSTART4587; GFX900-NEXT: ; def s[4:9]4588; GFX900-NEXT: ;;#ASMEND4589; GFX900-NEXT: ;;#ASMSTART4590; GFX900-NEXT: ; use s[8:13]4591; GFX900-NEXT: ;;#ASMEND4592; GFX900-NEXT: s_setpc_b64 s[30:31]4593;4594; GFX90A-LABEL: s_shuffle_v3p0_v3p0__5_u_u:4595; GFX90A: ; %bb.0:4596; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4597; GFX90A-NEXT: ;;#ASMSTART4598; GFX90A-NEXT: ; def s[4:9]4599; GFX90A-NEXT: ;;#ASMEND4600; GFX90A-NEXT: ;;#ASMSTART4601; GFX90A-NEXT: ; use s[8:13]4602; GFX90A-NEXT: ;;#ASMEND4603; GFX90A-NEXT: s_setpc_b64 s[30:31]4604;4605; GFX942-LABEL: s_shuffle_v3p0_v3p0__5_u_u:4606; GFX942: ; %bb.0:4607; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4608; GFX942-NEXT: ;;#ASMSTART4609; GFX942-NEXT: ; def s[4:9]4610; GFX942-NEXT: ;;#ASMEND4611; GFX942-NEXT: s_nop 04612; GFX942-NEXT: ;;#ASMSTART4613; GFX942-NEXT: ; use s[8:13]4614; GFX942-NEXT: ;;#ASMEND4615; GFX942-NEXT: s_setpc_b64 s[30:31]4616 %vec0 = call <3 x ptr> asm "; def $0", "=s"()4617 %vec1 = call <3 x ptr> asm "; def $0", "=s"()4618 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 poison, i32 poison>4619 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)4620 ret void4621}4622 4623define void @s_shuffle_v3p0_v3p0__5_0_u() {4624; GFX900-LABEL: s_shuffle_v3p0_v3p0__5_0_u:4625; GFX900: ; %bb.0:4626; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4627; GFX900-NEXT: ;;#ASMSTART4628; GFX900-NEXT: ; def s[12:17]4629; GFX900-NEXT: ;;#ASMEND4630; GFX900-NEXT: ;;#ASMSTART4631; GFX900-NEXT: ; def s[4:9]4632; GFX900-NEXT: ;;#ASMEND4633; GFX900-NEXT: s_mov_b32 s10, s124634; GFX900-NEXT: s_mov_b32 s11, s134635; GFX900-NEXT: ;;#ASMSTART4636; GFX900-NEXT: ; use s[8:13]4637; GFX900-NEXT: ;;#ASMEND4638; GFX900-NEXT: s_setpc_b64 s[30:31]4639;4640; GFX90A-LABEL: s_shuffle_v3p0_v3p0__5_0_u:4641; GFX90A: ; %bb.0:4642; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4643; GFX90A-NEXT: ;;#ASMSTART4644; GFX90A-NEXT: ; def s[12:17]4645; GFX90A-NEXT: ;;#ASMEND4646; GFX90A-NEXT: ;;#ASMSTART4647; GFX90A-NEXT: ; def s[4:9]4648; GFX90A-NEXT: ;;#ASMEND4649; GFX90A-NEXT: s_mov_b32 s10, s124650; GFX90A-NEXT: s_mov_b32 s11, s134651; GFX90A-NEXT: ;;#ASMSTART4652; GFX90A-NEXT: ; use s[8:13]4653; GFX90A-NEXT: ;;#ASMEND4654; GFX90A-NEXT: s_setpc_b64 s[30:31]4655;4656; GFX942-LABEL: s_shuffle_v3p0_v3p0__5_0_u:4657; GFX942: ; %bb.0:4658; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4659; GFX942-NEXT: ;;#ASMSTART4660; GFX942-NEXT: ; def s[0:5]4661; GFX942-NEXT: ;;#ASMEND4662; GFX942-NEXT: s_mov_b32 s10, s04663; GFX942-NEXT: ;;#ASMSTART4664; GFX942-NEXT: ; def s[4:9]4665; GFX942-NEXT: ;;#ASMEND4666; GFX942-NEXT: s_mov_b32 s11, s14667; GFX942-NEXT: ;;#ASMSTART4668; GFX942-NEXT: ; use s[8:13]4669; GFX942-NEXT: ;;#ASMEND4670; GFX942-NEXT: s_setpc_b64 s[30:31]4671 %vec0 = call <3 x ptr> asm "; def $0", "=s"()4672 %vec1 = call <3 x ptr> asm "; def $0", "=s"()4673 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 0, i32 poison>4674 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)4675 ret void4676}4677 4678define void @s_shuffle_v3p0_v3p0__5_1_u() {4679; GFX900-LABEL: s_shuffle_v3p0_v3p0__5_1_u:4680; GFX900: ; %bb.0:4681; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4682; GFX900-NEXT: ;;#ASMSTART4683; GFX900-NEXT: ; def s[8:13]4684; GFX900-NEXT: ;;#ASMEND4685; GFX900-NEXT: ;;#ASMSTART4686; GFX900-NEXT: ; def s[4:9]4687; GFX900-NEXT: ;;#ASMEND4688; GFX900-NEXT: ;;#ASMSTART4689; GFX900-NEXT: ; use s[8:13]4690; GFX900-NEXT: ;;#ASMEND4691; GFX900-NEXT: s_setpc_b64 s[30:31]4692;4693; GFX90A-LABEL: s_shuffle_v3p0_v3p0__5_1_u:4694; GFX90A: ; %bb.0:4695; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4696; GFX90A-NEXT: ;;#ASMSTART4697; GFX90A-NEXT: ; def s[8:13]4698; GFX90A-NEXT: ;;#ASMEND4699; GFX90A-NEXT: ;;#ASMSTART4700; GFX90A-NEXT: ; def s[4:9]4701; GFX90A-NEXT: ;;#ASMEND4702; GFX90A-NEXT: ;;#ASMSTART4703; GFX90A-NEXT: ; use s[8:13]4704; GFX90A-NEXT: ;;#ASMEND4705; GFX90A-NEXT: s_setpc_b64 s[30:31]4706;4707; GFX942-LABEL: s_shuffle_v3p0_v3p0__5_1_u:4708; GFX942: ; %bb.0:4709; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4710; GFX942-NEXT: ;;#ASMSTART4711; GFX942-NEXT: ; def s[8:13]4712; GFX942-NEXT: ;;#ASMEND4713; GFX942-NEXT: s_nop 04714; GFX942-NEXT: ;;#ASMSTART4715; GFX942-NEXT: ; def s[4:9]4716; GFX942-NEXT: ;;#ASMEND4717; GFX942-NEXT: s_nop 04718; GFX942-NEXT: ;;#ASMSTART4719; GFX942-NEXT: ; use s[8:13]4720; GFX942-NEXT: ;;#ASMEND4721; GFX942-NEXT: s_setpc_b64 s[30:31]4722 %vec0 = call <3 x ptr> asm "; def $0", "=s"()4723 %vec1 = call <3 x ptr> asm "; def $0", "=s"()4724 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 1, i32 poison>4725 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)4726 ret void4727}4728 4729define void @s_shuffle_v3p0_v3p0__5_2_u() {4730; GFX900-LABEL: s_shuffle_v3p0_v3p0__5_2_u:4731; GFX900: ; %bb.0:4732; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4733; GFX900-NEXT: ;;#ASMSTART4734; GFX900-NEXT: ; def s[8:13]4735; GFX900-NEXT: ;;#ASMEND4736; GFX900-NEXT: ;;#ASMSTART4737; GFX900-NEXT: ; def s[4:9]4738; GFX900-NEXT: ;;#ASMEND4739; GFX900-NEXT: s_mov_b32 s10, s124740; GFX900-NEXT: s_mov_b32 s11, s134741; GFX900-NEXT: ;;#ASMSTART4742; GFX900-NEXT: ; use s[8:13]4743; GFX900-NEXT: ;;#ASMEND4744; GFX900-NEXT: s_setpc_b64 s[30:31]4745;4746; GFX90A-LABEL: s_shuffle_v3p0_v3p0__5_2_u:4747; GFX90A: ; %bb.0:4748; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4749; GFX90A-NEXT: ;;#ASMSTART4750; GFX90A-NEXT: ; def s[8:13]4751; GFX90A-NEXT: ;;#ASMEND4752; GFX90A-NEXT: ;;#ASMSTART4753; GFX90A-NEXT: ; def s[4:9]4754; GFX90A-NEXT: ;;#ASMEND4755; GFX90A-NEXT: s_mov_b32 s10, s124756; GFX90A-NEXT: s_mov_b32 s11, s134757; GFX90A-NEXT: ;;#ASMSTART4758; GFX90A-NEXT: ; use s[8:13]4759; GFX90A-NEXT: ;;#ASMEND4760; GFX90A-NEXT: s_setpc_b64 s[30:31]4761;4762; GFX942-LABEL: s_shuffle_v3p0_v3p0__5_2_u:4763; GFX942: ; %bb.0:4764; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4765; GFX942-NEXT: ;;#ASMSTART4766; GFX942-NEXT: ; def s[8:13]4767; GFX942-NEXT: ;;#ASMEND4768; GFX942-NEXT: s_mov_b32 s10, s124769; GFX942-NEXT: ;;#ASMSTART4770; GFX942-NEXT: ; def s[4:9]4771; GFX942-NEXT: ;;#ASMEND4772; GFX942-NEXT: s_mov_b32 s11, s134773; GFX942-NEXT: ;;#ASMSTART4774; GFX942-NEXT: ; use s[8:13]4775; GFX942-NEXT: ;;#ASMEND4776; GFX942-NEXT: s_setpc_b64 s[30:31]4777 %vec0 = call <3 x ptr> asm "; def $0", "=s"()4778 %vec1 = call <3 x ptr> asm "; def $0", "=s"()4779 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 2, i32 poison>4780 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)4781 ret void4782}4783 4784define void @s_shuffle_v3p0_v3p0__5_3_u() {4785; GFX9-LABEL: s_shuffle_v3p0_v3p0__5_3_u:4786; GFX9: ; %bb.0:4787; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4788; GFX9-NEXT: ;;#ASMSTART4789; GFX9-NEXT: ; def s[4:9]4790; GFX9-NEXT: ;;#ASMEND4791; GFX9-NEXT: s_mov_b32 s10, s44792; GFX9-NEXT: s_mov_b32 s11, s54793; GFX9-NEXT: ;;#ASMSTART4794; GFX9-NEXT: ; use s[8:13]4795; GFX9-NEXT: ;;#ASMEND4796; GFX9-NEXT: s_setpc_b64 s[30:31]4797 %vec0 = call <3 x ptr> asm "; def $0", "=s"()4798 %vec1 = call <3 x ptr> asm "; def $0", "=s"()4799 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 3, i32 poison>4800 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)4801 ret void4802}4803 4804define void @s_shuffle_v3p0_v3p0__5_4_u() {4805; GFX9-LABEL: s_shuffle_v3p0_v3p0__5_4_u:4806; GFX9: ; %bb.0:4807; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4808; GFX9-NEXT: ;;#ASMSTART4809; GFX9-NEXT: ; def s[4:9]4810; GFX9-NEXT: ;;#ASMEND4811; GFX9-NEXT: s_mov_b32 s10, s64812; GFX9-NEXT: s_mov_b32 s11, s74813; GFX9-NEXT: ;;#ASMSTART4814; GFX9-NEXT: ; use s[8:13]4815; GFX9-NEXT: ;;#ASMEND4816; GFX9-NEXT: s_setpc_b64 s[30:31]4817 %vec0 = call <3 x ptr> asm "; def $0", "=s"()4818 %vec1 = call <3 x ptr> asm "; def $0", "=s"()4819 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 4, i32 poison>4820 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)4821 ret void4822}4823 4824define void @s_shuffle_v3p0_v3p0__5_5_u() {4825; GFX9-LABEL: s_shuffle_v3p0_v3p0__5_5_u:4826; GFX9: ; %bb.0:4827; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4828; GFX9-NEXT: ;;#ASMSTART4829; GFX9-NEXT: ; def s[4:9]4830; GFX9-NEXT: ;;#ASMEND4831; GFX9-NEXT: s_mov_b32 s10, s84832; GFX9-NEXT: s_mov_b32 s11, s94833; GFX9-NEXT: ;;#ASMSTART4834; GFX9-NEXT: ; use s[8:13]4835; GFX9-NEXT: ;;#ASMEND4836; GFX9-NEXT: s_setpc_b64 s[30:31]4837 %vec0 = call <3 x ptr> asm "; def $0", "=s"()4838 %vec1 = call <3 x ptr> asm "; def $0", "=s"()4839 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 5, i32 poison>4840 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)4841 ret void4842}4843 4844define void @s_shuffle_v3p0_v3p0__5_5_0() {4845; GFX9-LABEL: s_shuffle_v3p0_v3p0__5_5_0:4846; GFX9: ; %bb.0:4847; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4848; GFX9-NEXT: ;;#ASMSTART4849; GFX9-NEXT: ; def s[12:17]4850; GFX9-NEXT: ;;#ASMEND4851; GFX9-NEXT: ;;#ASMSTART4852; GFX9-NEXT: ; def s[4:9]4853; GFX9-NEXT: ;;#ASMEND4854; GFX9-NEXT: s_mov_b32 s10, s84855; GFX9-NEXT: s_mov_b32 s11, s94856; GFX9-NEXT: ;;#ASMSTART4857; GFX9-NEXT: ; use s[8:13]4858; GFX9-NEXT: ;;#ASMEND4859; GFX9-NEXT: s_setpc_b64 s[30:31]4860 %vec0 = call <3 x ptr> asm "; def $0", "=s"()4861 %vec1 = call <3 x ptr> asm "; def $0", "=s"()4862 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 5, i32 0>4863 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)4864 ret void4865}4866 4867define void @s_shuffle_v3p0_v3p0__5_5_1() {4868; GFX900-LABEL: s_shuffle_v3p0_v3p0__5_5_1:4869; GFX900: ; %bb.0:4870; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4871; GFX900-NEXT: ;;#ASMSTART4872; GFX900-NEXT: ; def s[12:17]4873; GFX900-NEXT: ;;#ASMEND4874; GFX900-NEXT: ;;#ASMSTART4875; GFX900-NEXT: ; def s[4:9]4876; GFX900-NEXT: ;;#ASMEND4877; GFX900-NEXT: s_mov_b32 s10, s84878; GFX900-NEXT: s_mov_b32 s11, s94879; GFX900-NEXT: s_mov_b32 s12, s144880; GFX900-NEXT: s_mov_b32 s13, s154881; GFX900-NEXT: ;;#ASMSTART4882; GFX900-NEXT: ; use s[8:13]4883; GFX900-NEXT: ;;#ASMEND4884; GFX900-NEXT: s_setpc_b64 s[30:31]4885;4886; GFX90A-LABEL: s_shuffle_v3p0_v3p0__5_5_1:4887; GFX90A: ; %bb.0:4888; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4889; GFX90A-NEXT: ;;#ASMSTART4890; GFX90A-NEXT: ; def s[12:17]4891; GFX90A-NEXT: ;;#ASMEND4892; GFX90A-NEXT: ;;#ASMSTART4893; GFX90A-NEXT: ; def s[4:9]4894; GFX90A-NEXT: ;;#ASMEND4895; GFX90A-NEXT: s_mov_b32 s10, s84896; GFX90A-NEXT: s_mov_b32 s11, s94897; GFX90A-NEXT: s_mov_b32 s12, s144898; GFX90A-NEXT: s_mov_b32 s13, s154899; GFX90A-NEXT: ;;#ASMSTART4900; GFX90A-NEXT: ; use s[8:13]4901; GFX90A-NEXT: ;;#ASMEND4902; GFX90A-NEXT: s_setpc_b64 s[30:31]4903;4904; GFX942-LABEL: s_shuffle_v3p0_v3p0__5_5_1:4905; GFX942: ; %bb.0:4906; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4907; GFX942-NEXT: ;;#ASMSTART4908; GFX942-NEXT: ; def s[0:5]4909; GFX942-NEXT: ;;#ASMEND4910; GFX942-NEXT: s_mov_b32 s12, s24911; GFX942-NEXT: ;;#ASMSTART4912; GFX942-NEXT: ; def s[4:9]4913; GFX942-NEXT: ;;#ASMEND4914; GFX942-NEXT: s_mov_b32 s10, s84915; GFX942-NEXT: s_mov_b32 s11, s94916; GFX942-NEXT: s_mov_b32 s13, s34917; GFX942-NEXT: ;;#ASMSTART4918; GFX942-NEXT: ; use s[8:13]4919; GFX942-NEXT: ;;#ASMEND4920; GFX942-NEXT: s_setpc_b64 s[30:31]4921 %vec0 = call <3 x ptr> asm "; def $0", "=s"()4922 %vec1 = call <3 x ptr> asm "; def $0", "=s"()4923 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 5, i32 1>4924 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)4925 ret void4926}4927 4928define void @s_shuffle_v3p0_v3p0__5_5_2() {4929; GFX900-LABEL: s_shuffle_v3p0_v3p0__5_5_2:4930; GFX900: ; %bb.0:4931; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4932; GFX900-NEXT: ;;#ASMSTART4933; GFX900-NEXT: ; def s[8:13]4934; GFX900-NEXT: ;;#ASMEND4935; GFX900-NEXT: ;;#ASMSTART4936; GFX900-NEXT: ; def s[4:9]4937; GFX900-NEXT: ;;#ASMEND4938; GFX900-NEXT: s_mov_b32 s10, s84939; GFX900-NEXT: s_mov_b32 s11, s94940; GFX900-NEXT: ;;#ASMSTART4941; GFX900-NEXT: ; use s[8:13]4942; GFX900-NEXT: ;;#ASMEND4943; GFX900-NEXT: s_setpc_b64 s[30:31]4944;4945; GFX90A-LABEL: s_shuffle_v3p0_v3p0__5_5_2:4946; GFX90A: ; %bb.0:4947; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4948; GFX90A-NEXT: ;;#ASMSTART4949; GFX90A-NEXT: ; def s[8:13]4950; GFX90A-NEXT: ;;#ASMEND4951; GFX90A-NEXT: ;;#ASMSTART4952; GFX90A-NEXT: ; def s[4:9]4953; GFX90A-NEXT: ;;#ASMEND4954; GFX90A-NEXT: s_mov_b32 s10, s84955; GFX90A-NEXT: s_mov_b32 s11, s94956; GFX90A-NEXT: ;;#ASMSTART4957; GFX90A-NEXT: ; use s[8:13]4958; GFX90A-NEXT: ;;#ASMEND4959; GFX90A-NEXT: s_setpc_b64 s[30:31]4960;4961; GFX942-LABEL: s_shuffle_v3p0_v3p0__5_5_2:4962; GFX942: ; %bb.0:4963; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4964; GFX942-NEXT: ;;#ASMSTART4965; GFX942-NEXT: ; def s[8:13]4966; GFX942-NEXT: ;;#ASMEND4967; GFX942-NEXT: s_nop 04968; GFX942-NEXT: ;;#ASMSTART4969; GFX942-NEXT: ; def s[4:9]4970; GFX942-NEXT: ;;#ASMEND4971; GFX942-NEXT: s_mov_b32 s10, s84972; GFX942-NEXT: s_mov_b32 s11, s94973; GFX942-NEXT: ;;#ASMSTART4974; GFX942-NEXT: ; use s[8:13]4975; GFX942-NEXT: ;;#ASMEND4976; GFX942-NEXT: s_setpc_b64 s[30:31]4977 %vec0 = call <3 x ptr> asm "; def $0", "=s"()4978 %vec1 = call <3 x ptr> asm "; def $0", "=s"()4979 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 5, i32 2>4980 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)4981 ret void4982}4983 4984define void @s_shuffle_v3p0_v3p0__5_5_3() {4985; GFX9-LABEL: s_shuffle_v3p0_v3p0__5_5_3:4986; GFX9: ; %bb.0:4987; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)4988; GFX9-NEXT: ;;#ASMSTART4989; GFX9-NEXT: ; def s[4:9]4990; GFX9-NEXT: ;;#ASMEND4991; GFX9-NEXT: s_mov_b32 s10, s84992; GFX9-NEXT: s_mov_b32 s11, s94993; GFX9-NEXT: s_mov_b32 s12, s44994; GFX9-NEXT: s_mov_b32 s13, s54995; GFX9-NEXT: ;;#ASMSTART4996; GFX9-NEXT: ; use s[8:13]4997; GFX9-NEXT: ;;#ASMEND4998; GFX9-NEXT: s_setpc_b64 s[30:31]4999 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5000 %vec1 = call <3 x ptr> asm "; def $0", "=s"()5001 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 5, i32 3>5002 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5003 ret void5004}5005 5006define void @s_shuffle_v3p0_v3p0__5_5_4() {5007; GFX9-LABEL: s_shuffle_v3p0_v3p0__5_5_4:5008; GFX9: ; %bb.0:5009; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5010; GFX9-NEXT: ;;#ASMSTART5011; GFX9-NEXT: ; def s[4:9]5012; GFX9-NEXT: ;;#ASMEND5013; GFX9-NEXT: s_mov_b32 s10, s85014; GFX9-NEXT: s_mov_b32 s11, s95015; GFX9-NEXT: s_mov_b32 s12, s65016; GFX9-NEXT: s_mov_b32 s13, s75017; GFX9-NEXT: ;;#ASMSTART5018; GFX9-NEXT: ; use s[8:13]5019; GFX9-NEXT: ;;#ASMEND5020; GFX9-NEXT: s_setpc_b64 s[30:31]5021 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5022 %vec1 = call <3 x ptr> asm "; def $0", "=s"()5023 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 5, i32 4>5024 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5025 ret void5026}5027 5028define void @s_shuffle_v3p0_v3p0__5_5_5() {5029; GFX9-LABEL: s_shuffle_v3p0_v3p0__5_5_5:5030; GFX9: ; %bb.0:5031; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5032; GFX9-NEXT: ;;#ASMSTART5033; GFX9-NEXT: ; def s[4:9]5034; GFX9-NEXT: ;;#ASMEND5035; GFX9-NEXT: s_mov_b32 s10, s85036; GFX9-NEXT: s_mov_b32 s11, s95037; GFX9-NEXT: s_mov_b32 s12, s85038; GFX9-NEXT: s_mov_b32 s13, s95039; GFX9-NEXT: ;;#ASMSTART5040; GFX9-NEXT: ; use s[8:13]5041; GFX9-NEXT: ;;#ASMEND5042; GFX9-NEXT: s_setpc_b64 s[30:31]5043 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5044 %vec1 = call <3 x ptr> asm "; def $0", "=s"()5045 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 5, i32 5>5046 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5047 ret void5048}5049 5050define void @s_shuffle_v3p0_v3p0__u_0_0() {5051; GFX9-LABEL: s_shuffle_v3p0_v3p0__u_0_0:5052; GFX9: ; %bb.0:5053; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5054; GFX9-NEXT: ;;#ASMSTART5055; GFX9-NEXT: ; def s[12:17]5056; GFX9-NEXT: ;;#ASMEND5057; GFX9-NEXT: s_mov_b32 s10, s125058; GFX9-NEXT: s_mov_b32 s11, s135059; GFX9-NEXT: ;;#ASMSTART5060; GFX9-NEXT: ; use s[8:13]5061; GFX9-NEXT: ;;#ASMEND5062; GFX9-NEXT: s_setpc_b64 s[30:31]5063 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5064 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 poison, i32 0, i32 0>5065 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5066 ret void5067}5068 5069define void @s_shuffle_v3p0_v3p0__0_0_0() {5070; GFX9-LABEL: s_shuffle_v3p0_v3p0__0_0_0:5071; GFX9: ; %bb.0:5072; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5073; GFX9-NEXT: ;;#ASMSTART5074; GFX9-NEXT: ; def s[8:13]5075; GFX9-NEXT: ;;#ASMEND5076; GFX9-NEXT: s_mov_b32 s10, s85077; GFX9-NEXT: s_mov_b32 s11, s95078; GFX9-NEXT: s_mov_b32 s12, s85079; GFX9-NEXT: s_mov_b32 s13, s95080; GFX9-NEXT: ;;#ASMSTART5081; GFX9-NEXT: ; use s[8:13]5082; GFX9-NEXT: ;;#ASMEND5083; GFX9-NEXT: s_setpc_b64 s[30:31]5084 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5085 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> zeroinitializer5086 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5087 ret void5088}5089 5090define void @s_shuffle_v3p0_v3p0__1_0_0() {5091; GFX9-LABEL: s_shuffle_v3p0_v3p0__1_0_0:5092; GFX9: ; %bb.0:5093; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5094; GFX9-NEXT: ;;#ASMSTART5095; GFX9-NEXT: ; def s[12:17]5096; GFX9-NEXT: ;;#ASMEND5097; GFX9-NEXT: s_mov_b32 s8, s145098; GFX9-NEXT: s_mov_b32 s9, s155099; GFX9-NEXT: s_mov_b32 s10, s125100; GFX9-NEXT: s_mov_b32 s11, s135101; GFX9-NEXT: ;;#ASMSTART5102; GFX9-NEXT: ; use s[8:13]5103; GFX9-NEXT: ;;#ASMEND5104; GFX9-NEXT: s_setpc_b64 s[30:31]5105 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5106 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 1, i32 0, i32 0>5107 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5108 ret void5109}5110 5111define void @s_shuffle_v3p0_v3p0__2_0_0() {5112; GFX9-LABEL: s_shuffle_v3p0_v3p0__2_0_0:5113; GFX9: ; %bb.0:5114; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5115; GFX9-NEXT: ;;#ASMSTART5116; GFX9-NEXT: ; def s[4:9]5117; GFX9-NEXT: ;;#ASMEND5118; GFX9-NEXT: s_mov_b32 s10, s45119; GFX9-NEXT: s_mov_b32 s11, s55120; GFX9-NEXT: s_mov_b32 s12, s45121; GFX9-NEXT: s_mov_b32 s13, s55122; GFX9-NEXT: ;;#ASMSTART5123; GFX9-NEXT: ; use s[8:13]5124; GFX9-NEXT: ;;#ASMEND5125; GFX9-NEXT: s_setpc_b64 s[30:31]5126 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5127 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 2, i32 0, i32 0>5128 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5129 ret void5130}5131 5132define void @s_shuffle_v3p0_v3p0__3_0_0() {5133; GFX9-LABEL: s_shuffle_v3p0_v3p0__3_0_0:5134; GFX9: ; %bb.0:5135; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5136; GFX9-NEXT: ;;#ASMSTART5137; GFX9-NEXT: ; def s[12:17]5138; GFX9-NEXT: ;;#ASMEND5139; GFX9-NEXT: s_mov_b32 s10, s125140; GFX9-NEXT: s_mov_b32 s11, s135141; GFX9-NEXT: ;;#ASMSTART5142; GFX9-NEXT: ; use s[8:13]5143; GFX9-NEXT: ;;#ASMEND5144; GFX9-NEXT: s_setpc_b64 s[30:31]5145 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5146 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 3, i32 0, i32 0>5147 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5148 ret void5149}5150 5151define void @s_shuffle_v3p0_v3p0__4_0_0() {5152; GFX900-LABEL: s_shuffle_v3p0_v3p0__4_0_0:5153; GFX900: ; %bb.0:5154; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5155; GFX900-NEXT: ;;#ASMSTART5156; GFX900-NEXT: ; def s[4:9]5157; GFX900-NEXT: ;;#ASMEND5158; GFX900-NEXT: ;;#ASMSTART5159; GFX900-NEXT: ; def s[12:17]5160; GFX900-NEXT: ;;#ASMEND5161; GFX900-NEXT: s_mov_b32 s8, s65162; GFX900-NEXT: s_mov_b32 s9, s75163; GFX900-NEXT: s_mov_b32 s10, s125164; GFX900-NEXT: s_mov_b32 s11, s135165; GFX900-NEXT: ;;#ASMSTART5166; GFX900-NEXT: ; use s[8:13]5167; GFX900-NEXT: ;;#ASMEND5168; GFX900-NEXT: s_setpc_b64 s[30:31]5169;5170; GFX90A-LABEL: s_shuffle_v3p0_v3p0__4_0_0:5171; GFX90A: ; %bb.0:5172; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5173; GFX90A-NEXT: ;;#ASMSTART5174; GFX90A-NEXT: ; def s[4:9]5175; GFX90A-NEXT: ;;#ASMEND5176; GFX90A-NEXT: ;;#ASMSTART5177; GFX90A-NEXT: ; def s[12:17]5178; GFX90A-NEXT: ;;#ASMEND5179; GFX90A-NEXT: s_mov_b32 s8, s65180; GFX90A-NEXT: s_mov_b32 s9, s75181; GFX90A-NEXT: s_mov_b32 s10, s125182; GFX90A-NEXT: s_mov_b32 s11, s135183; GFX90A-NEXT: ;;#ASMSTART5184; GFX90A-NEXT: ; use s[8:13]5185; GFX90A-NEXT: ;;#ASMEND5186; GFX90A-NEXT: s_setpc_b64 s[30:31]5187;5188; GFX942-LABEL: s_shuffle_v3p0_v3p0__4_0_0:5189; GFX942: ; %bb.0:5190; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5191; GFX942-NEXT: ;;#ASMSTART5192; GFX942-NEXT: ; def s[12:17]5193; GFX942-NEXT: ;;#ASMEND5194; GFX942-NEXT: ;;#ASMSTART5195; GFX942-NEXT: ; def s[0:5]5196; GFX942-NEXT: ;;#ASMEND5197; GFX942-NEXT: s_mov_b32 s8, s25198; GFX942-NEXT: s_mov_b32 s9, s35199; GFX942-NEXT: s_mov_b32 s10, s125200; GFX942-NEXT: s_mov_b32 s11, s135201; GFX942-NEXT: ;;#ASMSTART5202; GFX942-NEXT: ; use s[8:13]5203; GFX942-NEXT: ;;#ASMEND5204; GFX942-NEXT: s_setpc_b64 s[30:31]5205 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5206 %vec1 = call <3 x ptr> asm "; def $0", "=s"()5207 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 4, i32 0, i32 0>5208 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5209 ret void5210}5211 5212define void @s_shuffle_v3p0_v3p0__5_0_0() {5213; GFX9-LABEL: s_shuffle_v3p0_v3p0__5_0_0:5214; GFX9: ; %bb.0:5215; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5216; GFX9-NEXT: ;;#ASMSTART5217; GFX9-NEXT: ; def s[12:17]5218; GFX9-NEXT: ;;#ASMEND5219; GFX9-NEXT: ;;#ASMSTART5220; GFX9-NEXT: ; def s[4:9]5221; GFX9-NEXT: ;;#ASMEND5222; GFX9-NEXT: s_mov_b32 s10, s125223; GFX9-NEXT: s_mov_b32 s11, s135224; GFX9-NEXT: ;;#ASMSTART5225; GFX9-NEXT: ; use s[8:13]5226; GFX9-NEXT: ;;#ASMEND5227; GFX9-NEXT: s_setpc_b64 s[30:31]5228 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5229 %vec1 = call <3 x ptr> asm "; def $0", "=s"()5230 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 0, i32 0>5231 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5232 ret void5233}5234 5235define void @s_shuffle_v3p0_v3p0__5_u_0() {5236; GFX900-LABEL: s_shuffle_v3p0_v3p0__5_u_0:5237; GFX900: ; %bb.0:5238; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5239; GFX900-NEXT: ;;#ASMSTART5240; GFX900-NEXT: ; def s[12:17]5241; GFX900-NEXT: ;;#ASMEND5242; GFX900-NEXT: ;;#ASMSTART5243; GFX900-NEXT: ; def s[4:9]5244; GFX900-NEXT: ;;#ASMEND5245; GFX900-NEXT: ;;#ASMSTART5246; GFX900-NEXT: ; use s[8:13]5247; GFX900-NEXT: ;;#ASMEND5248; GFX900-NEXT: s_setpc_b64 s[30:31]5249;5250; GFX90A-LABEL: s_shuffle_v3p0_v3p0__5_u_0:5251; GFX90A: ; %bb.0:5252; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5253; GFX90A-NEXT: ;;#ASMSTART5254; GFX90A-NEXT: ; def s[12:17]5255; GFX90A-NEXT: ;;#ASMEND5256; GFX90A-NEXT: ;;#ASMSTART5257; GFX90A-NEXT: ; def s[4:9]5258; GFX90A-NEXT: ;;#ASMEND5259; GFX90A-NEXT: ;;#ASMSTART5260; GFX90A-NEXT: ; use s[8:13]5261; GFX90A-NEXT: ;;#ASMEND5262; GFX90A-NEXT: s_setpc_b64 s[30:31]5263;5264; GFX942-LABEL: s_shuffle_v3p0_v3p0__5_u_0:5265; GFX942: ; %bb.0:5266; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5267; GFX942-NEXT: ;;#ASMSTART5268; GFX942-NEXT: ; def s[12:17]5269; GFX942-NEXT: ;;#ASMEND5270; GFX942-NEXT: ;;#ASMSTART5271; GFX942-NEXT: ; def s[4:9]5272; GFX942-NEXT: ;;#ASMEND5273; GFX942-NEXT: s_nop 05274; GFX942-NEXT: ;;#ASMSTART5275; GFX942-NEXT: ; use s[8:13]5276; GFX942-NEXT: ;;#ASMEND5277; GFX942-NEXT: s_setpc_b64 s[30:31]5278 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5279 %vec1 = call <3 x ptr> asm "; def $0", "=s"()5280 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 poison, i32 0>5281 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5282 ret void5283}5284 5285define void @s_shuffle_v3p0_v3p0__5_1_0() {5286; GFX9-LABEL: s_shuffle_v3p0_v3p0__5_1_0:5287; GFX9: ; %bb.0:5288; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5289; GFX9-NEXT: ;;#ASMSTART5290; GFX9-NEXT: ; def s[12:17]5291; GFX9-NEXT: ;;#ASMEND5292; GFX9-NEXT: ;;#ASMSTART5293; GFX9-NEXT: ; def s[4:9]5294; GFX9-NEXT: ;;#ASMEND5295; GFX9-NEXT: s_mov_b32 s10, s145296; GFX9-NEXT: s_mov_b32 s11, s155297; GFX9-NEXT: ;;#ASMSTART5298; GFX9-NEXT: ; use s[8:13]5299; GFX9-NEXT: ;;#ASMEND5300; GFX9-NEXT: s_setpc_b64 s[30:31]5301 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5302 %vec1 = call <3 x ptr> asm "; def $0", "=s"()5303 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 1, i32 0>5304 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5305 ret void5306}5307 5308define void @s_shuffle_v3p0_v3p0__5_2_0() {5309; GFX9-LABEL: s_shuffle_v3p0_v3p0__5_2_0:5310; GFX9: ; %bb.0:5311; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5312; GFX9-NEXT: ;;#ASMSTART5313; GFX9-NEXT: ; def s[12:17]5314; GFX9-NEXT: ;;#ASMEND5315; GFX9-NEXT: ;;#ASMSTART5316; GFX9-NEXT: ; def s[4:9]5317; GFX9-NEXT: ;;#ASMEND5318; GFX9-NEXT: s_mov_b32 s10, s165319; GFX9-NEXT: s_mov_b32 s11, s175320; GFX9-NEXT: ;;#ASMSTART5321; GFX9-NEXT: ; use s[8:13]5322; GFX9-NEXT: ;;#ASMEND5323; GFX9-NEXT: s_setpc_b64 s[30:31]5324 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5325 %vec1 = call <3 x ptr> asm "; def $0", "=s"()5326 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 2, i32 0>5327 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5328 ret void5329}5330 5331define void @s_shuffle_v3p0_v3p0__5_3_0() {5332; GFX9-LABEL: s_shuffle_v3p0_v3p0__5_3_0:5333; GFX9: ; %bb.0:5334; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5335; GFX9-NEXT: ;;#ASMSTART5336; GFX9-NEXT: ; def s[12:17]5337; GFX9-NEXT: ;;#ASMEND5338; GFX9-NEXT: ;;#ASMSTART5339; GFX9-NEXT: ; def s[4:9]5340; GFX9-NEXT: ;;#ASMEND5341; GFX9-NEXT: s_mov_b32 s10, s45342; GFX9-NEXT: s_mov_b32 s11, s55343; GFX9-NEXT: ;;#ASMSTART5344; GFX9-NEXT: ; use s[8:13]5345; GFX9-NEXT: ;;#ASMEND5346; GFX9-NEXT: s_setpc_b64 s[30:31]5347 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5348 %vec1 = call <3 x ptr> asm "; def $0", "=s"()5349 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 3, i32 0>5350 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5351 ret void5352}5353 5354define void @s_shuffle_v3p0_v3p0__5_4_0() {5355; GFX9-LABEL: s_shuffle_v3p0_v3p0__5_4_0:5356; GFX9: ; %bb.0:5357; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5358; GFX9-NEXT: ;;#ASMSTART5359; GFX9-NEXT: ; def s[12:17]5360; GFX9-NEXT: ;;#ASMEND5361; GFX9-NEXT: ;;#ASMSTART5362; GFX9-NEXT: ; def s[4:9]5363; GFX9-NEXT: ;;#ASMEND5364; GFX9-NEXT: s_mov_b32 s10, s65365; GFX9-NEXT: s_mov_b32 s11, s75366; GFX9-NEXT: ;;#ASMSTART5367; GFX9-NEXT: ; use s[8:13]5368; GFX9-NEXT: ;;#ASMEND5369; GFX9-NEXT: s_setpc_b64 s[30:31]5370 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5371 %vec1 = call <3 x ptr> asm "; def $0", "=s"()5372 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 4, i32 0>5373 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5374 ret void5375}5376 5377define void @s_shuffle_v3p0_v3p0__u_1_1() {5378; GFX9-LABEL: s_shuffle_v3p0_v3p0__u_1_1:5379; GFX9: ; %bb.0:5380; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5381; GFX9-NEXT: ;;#ASMSTART5382; GFX9-NEXT: ; def s[8:13]5383; GFX9-NEXT: ;;#ASMEND5384; GFX9-NEXT: s_mov_b32 s12, s105385; GFX9-NEXT: s_mov_b32 s13, s115386; GFX9-NEXT: ;;#ASMSTART5387; GFX9-NEXT: ; use s[8:13]5388; GFX9-NEXT: ;;#ASMEND5389; GFX9-NEXT: s_setpc_b64 s[30:31]5390 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5391 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 poison, i32 1, i32 1>5392 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5393 ret void5394}5395 5396define void @s_shuffle_v3p0_v3p0__0_1_1() {5397; GFX9-LABEL: s_shuffle_v3p0_v3p0__0_1_1:5398; GFX9: ; %bb.0:5399; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5400; GFX9-NEXT: ;;#ASMSTART5401; GFX9-NEXT: ; def s[8:13]5402; GFX9-NEXT: ;;#ASMEND5403; GFX9-NEXT: s_mov_b32 s12, s105404; GFX9-NEXT: s_mov_b32 s13, s115405; GFX9-NEXT: ;;#ASMSTART5406; GFX9-NEXT: ; use s[8:13]5407; GFX9-NEXT: ;;#ASMEND5408; GFX9-NEXT: s_setpc_b64 s[30:31]5409 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5410 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 0, i32 1, i32 1>5411 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5412 ret void5413}5414 5415define void @s_shuffle_v3p0_v3p0__1_1_1() {5416; GFX9-LABEL: s_shuffle_v3p0_v3p0__1_1_1:5417; GFX9: ; %bb.0:5418; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5419; GFX9-NEXT: ;;#ASMSTART5420; GFX9-NEXT: ; def s[8:13]5421; GFX9-NEXT: ;;#ASMEND5422; GFX9-NEXT: s_mov_b32 s8, s105423; GFX9-NEXT: s_mov_b32 s9, s115424; GFX9-NEXT: s_mov_b32 s12, s105425; GFX9-NEXT: s_mov_b32 s13, s115426; GFX9-NEXT: ;;#ASMSTART5427; GFX9-NEXT: ; use s[8:13]5428; GFX9-NEXT: ;;#ASMEND5429; GFX9-NEXT: s_setpc_b64 s[30:31]5430 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5431 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 1, i32 1, i32 1>5432 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5433 ret void5434}5435 5436define void @s_shuffle_v3p0_v3p0__2_1_1() {5437; GFX9-LABEL: s_shuffle_v3p0_v3p0__2_1_1:5438; GFX9: ; %bb.0:5439; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5440; GFX9-NEXT: ;;#ASMSTART5441; GFX9-NEXT: ; def s[4:9]5442; GFX9-NEXT: ;;#ASMEND5443; GFX9-NEXT: s_mov_b32 s10, s65444; GFX9-NEXT: s_mov_b32 s11, s75445; GFX9-NEXT: s_mov_b32 s12, s65446; GFX9-NEXT: s_mov_b32 s13, s75447; GFX9-NEXT: ;;#ASMSTART5448; GFX9-NEXT: ; use s[8:13]5449; GFX9-NEXT: ;;#ASMEND5450; GFX9-NEXT: s_setpc_b64 s[30:31]5451 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5452 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 2, i32 1, i32 1>5453 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5454 ret void5455}5456 5457define void @s_shuffle_v3p0_v3p0__3_1_1() {5458; GFX9-LABEL: s_shuffle_v3p0_v3p0__3_1_1:5459; GFX9: ; %bb.0:5460; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5461; GFX9-NEXT: ;;#ASMSTART5462; GFX9-NEXT: ; def s[8:13]5463; GFX9-NEXT: ;;#ASMEND5464; GFX9-NEXT: s_mov_b32 s12, s105465; GFX9-NEXT: s_mov_b32 s13, s115466; GFX9-NEXT: ;;#ASMSTART5467; GFX9-NEXT: ; use s[8:13]5468; GFX9-NEXT: ;;#ASMEND5469; GFX9-NEXT: s_setpc_b64 s[30:31]5470 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5471 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 3, i32 1, i32 1>5472 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5473 ret void5474}5475 5476define void @s_shuffle_v3p0_v3p0__4_1_1() {5477; GFX900-LABEL: s_shuffle_v3p0_v3p0__4_1_1:5478; GFX900: ; %bb.0:5479; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5480; GFX900-NEXT: ;;#ASMSTART5481; GFX900-NEXT: ; def s[8:13]5482; GFX900-NEXT: ;;#ASMEND5483; GFX900-NEXT: ;;#ASMSTART5484; GFX900-NEXT: ; def s[4:9]5485; GFX900-NEXT: ;;#ASMEND5486; GFX900-NEXT: s_mov_b32 s8, s65487; GFX900-NEXT: s_mov_b32 s9, s75488; GFX900-NEXT: s_mov_b32 s12, s105489; GFX900-NEXT: s_mov_b32 s13, s115490; GFX900-NEXT: ;;#ASMSTART5491; GFX900-NEXT: ; use s[8:13]5492; GFX900-NEXT: ;;#ASMEND5493; GFX900-NEXT: s_setpc_b64 s[30:31]5494;5495; GFX90A-LABEL: s_shuffle_v3p0_v3p0__4_1_1:5496; GFX90A: ; %bb.0:5497; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5498; GFX90A-NEXT: ;;#ASMSTART5499; GFX90A-NEXT: ; def s[8:13]5500; GFX90A-NEXT: ;;#ASMEND5501; GFX90A-NEXT: ;;#ASMSTART5502; GFX90A-NEXT: ; def s[4:9]5503; GFX90A-NEXT: ;;#ASMEND5504; GFX90A-NEXT: s_mov_b32 s8, s65505; GFX90A-NEXT: s_mov_b32 s9, s75506; GFX90A-NEXT: s_mov_b32 s12, s105507; GFX90A-NEXT: s_mov_b32 s13, s115508; GFX90A-NEXT: ;;#ASMSTART5509; GFX90A-NEXT: ; use s[8:13]5510; GFX90A-NEXT: ;;#ASMEND5511; GFX90A-NEXT: s_setpc_b64 s[30:31]5512;5513; GFX942-LABEL: s_shuffle_v3p0_v3p0__4_1_1:5514; GFX942: ; %bb.0:5515; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5516; GFX942-NEXT: ;;#ASMSTART5517; GFX942-NEXT: ; def s[8:13]5518; GFX942-NEXT: ;;#ASMEND5519; GFX942-NEXT: ;;#ASMSTART5520; GFX942-NEXT: ; def s[0:5]5521; GFX942-NEXT: ;;#ASMEND5522; GFX942-NEXT: s_mov_b32 s8, s25523; GFX942-NEXT: s_mov_b32 s9, s35524; GFX942-NEXT: s_mov_b32 s12, s105525; GFX942-NEXT: s_mov_b32 s13, s115526; GFX942-NEXT: ;;#ASMSTART5527; GFX942-NEXT: ; use s[8:13]5528; GFX942-NEXT: ;;#ASMEND5529; GFX942-NEXT: s_setpc_b64 s[30:31]5530 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5531 %vec1 = call <3 x ptr> asm "; def $0", "=s"()5532 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 4, i32 1, i32 1>5533 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5534 ret void5535}5536 5537define void @s_shuffle_v3p0_v3p0__5_1_1() {5538; GFX900-LABEL: s_shuffle_v3p0_v3p0__5_1_1:5539; GFX900: ; %bb.0:5540; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5541; GFX900-NEXT: ;;#ASMSTART5542; GFX900-NEXT: ; def s[8:13]5543; GFX900-NEXT: ;;#ASMEND5544; GFX900-NEXT: ;;#ASMSTART5545; GFX900-NEXT: ; def s[4:9]5546; GFX900-NEXT: ;;#ASMEND5547; GFX900-NEXT: s_mov_b32 s12, s105548; GFX900-NEXT: s_mov_b32 s13, s115549; GFX900-NEXT: ;;#ASMSTART5550; GFX900-NEXT: ; use s[8:13]5551; GFX900-NEXT: ;;#ASMEND5552; GFX900-NEXT: s_setpc_b64 s[30:31]5553;5554; GFX90A-LABEL: s_shuffle_v3p0_v3p0__5_1_1:5555; GFX90A: ; %bb.0:5556; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5557; GFX90A-NEXT: ;;#ASMSTART5558; GFX90A-NEXT: ; def s[8:13]5559; GFX90A-NEXT: ;;#ASMEND5560; GFX90A-NEXT: ;;#ASMSTART5561; GFX90A-NEXT: ; def s[4:9]5562; GFX90A-NEXT: ;;#ASMEND5563; GFX90A-NEXT: s_mov_b32 s12, s105564; GFX90A-NEXT: s_mov_b32 s13, s115565; GFX90A-NEXT: ;;#ASMSTART5566; GFX90A-NEXT: ; use s[8:13]5567; GFX90A-NEXT: ;;#ASMEND5568; GFX90A-NEXT: s_setpc_b64 s[30:31]5569;5570; GFX942-LABEL: s_shuffle_v3p0_v3p0__5_1_1:5571; GFX942: ; %bb.0:5572; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5573; GFX942-NEXT: ;;#ASMSTART5574; GFX942-NEXT: ; def s[8:13]5575; GFX942-NEXT: ;;#ASMEND5576; GFX942-NEXT: s_mov_b32 s12, s105577; GFX942-NEXT: ;;#ASMSTART5578; GFX942-NEXT: ; def s[4:9]5579; GFX942-NEXT: ;;#ASMEND5580; GFX942-NEXT: s_mov_b32 s13, s115581; GFX942-NEXT: ;;#ASMSTART5582; GFX942-NEXT: ; use s[8:13]5583; GFX942-NEXT: ;;#ASMEND5584; GFX942-NEXT: s_setpc_b64 s[30:31]5585 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5586 %vec1 = call <3 x ptr> asm "; def $0", "=s"()5587 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 1, i32 1>5588 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5589 ret void5590}5591 5592define void @s_shuffle_v3p0_v3p0__5_u_1() {5593; GFX900-LABEL: s_shuffle_v3p0_v3p0__5_u_1:5594; GFX900: ; %bb.0:5595; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5596; GFX900-NEXT: ;;#ASMSTART5597; GFX900-NEXT: ; def s[8:13]5598; GFX900-NEXT: ;;#ASMEND5599; GFX900-NEXT: ;;#ASMSTART5600; GFX900-NEXT: ; def s[4:9]5601; GFX900-NEXT: ;;#ASMEND5602; GFX900-NEXT: s_mov_b32 s12, s105603; GFX900-NEXT: s_mov_b32 s13, s115604; GFX900-NEXT: ;;#ASMSTART5605; GFX900-NEXT: ; use s[8:13]5606; GFX900-NEXT: ;;#ASMEND5607; GFX900-NEXT: s_setpc_b64 s[30:31]5608;5609; GFX90A-LABEL: s_shuffle_v3p0_v3p0__5_u_1:5610; GFX90A: ; %bb.0:5611; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5612; GFX90A-NEXT: ;;#ASMSTART5613; GFX90A-NEXT: ; def s[8:13]5614; GFX90A-NEXT: ;;#ASMEND5615; GFX90A-NEXT: ;;#ASMSTART5616; GFX90A-NEXT: ; def s[4:9]5617; GFX90A-NEXT: ;;#ASMEND5618; GFX90A-NEXT: s_mov_b32 s12, s105619; GFX90A-NEXT: s_mov_b32 s13, s115620; GFX90A-NEXT: ;;#ASMSTART5621; GFX90A-NEXT: ; use s[8:13]5622; GFX90A-NEXT: ;;#ASMEND5623; GFX90A-NEXT: s_setpc_b64 s[30:31]5624;5625; GFX942-LABEL: s_shuffle_v3p0_v3p0__5_u_1:5626; GFX942: ; %bb.0:5627; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5628; GFX942-NEXT: ;;#ASMSTART5629; GFX942-NEXT: ; def s[0:5]5630; GFX942-NEXT: ;;#ASMEND5631; GFX942-NEXT: s_mov_b32 s12, s25632; GFX942-NEXT: ;;#ASMSTART5633; GFX942-NEXT: ; def s[4:9]5634; GFX942-NEXT: ;;#ASMEND5635; GFX942-NEXT: s_mov_b32 s13, s35636; GFX942-NEXT: ;;#ASMSTART5637; GFX942-NEXT: ; use s[8:13]5638; GFX942-NEXT: ;;#ASMEND5639; GFX942-NEXT: s_setpc_b64 s[30:31]5640 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5641 %vec1 = call <3 x ptr> asm "; def $0", "=s"()5642 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 poison, i32 1>5643 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5644 ret void5645}5646 5647define void @s_shuffle_v3p0_v3p0__5_0_1() {5648; GFX900-LABEL: s_shuffle_v3p0_v3p0__5_0_1:5649; GFX900: ; %bb.0:5650; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5651; GFX900-NEXT: ;;#ASMSTART5652; GFX900-NEXT: ; def s[12:17]5653; GFX900-NEXT: ;;#ASMEND5654; GFX900-NEXT: ;;#ASMSTART5655; GFX900-NEXT: ; def s[4:9]5656; GFX900-NEXT: ;;#ASMEND5657; GFX900-NEXT: s_mov_b32 s10, s125658; GFX900-NEXT: s_mov_b32 s11, s135659; GFX900-NEXT: s_mov_b32 s12, s145660; GFX900-NEXT: s_mov_b32 s13, s155661; GFX900-NEXT: ;;#ASMSTART5662; GFX900-NEXT: ; use s[8:13]5663; GFX900-NEXT: ;;#ASMEND5664; GFX900-NEXT: s_setpc_b64 s[30:31]5665;5666; GFX90A-LABEL: s_shuffle_v3p0_v3p0__5_0_1:5667; GFX90A: ; %bb.0:5668; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5669; GFX90A-NEXT: ;;#ASMSTART5670; GFX90A-NEXT: ; def s[12:17]5671; GFX90A-NEXT: ;;#ASMEND5672; GFX90A-NEXT: ;;#ASMSTART5673; GFX90A-NEXT: ; def s[4:9]5674; GFX90A-NEXT: ;;#ASMEND5675; GFX90A-NEXT: s_mov_b32 s10, s125676; GFX90A-NEXT: s_mov_b32 s11, s135677; GFX90A-NEXT: s_mov_b32 s12, s145678; GFX90A-NEXT: s_mov_b32 s13, s155679; GFX90A-NEXT: ;;#ASMSTART5680; GFX90A-NEXT: ; use s[8:13]5681; GFX90A-NEXT: ;;#ASMEND5682; GFX90A-NEXT: s_setpc_b64 s[30:31]5683;5684; GFX942-LABEL: s_shuffle_v3p0_v3p0__5_0_1:5685; GFX942: ; %bb.0:5686; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5687; GFX942-NEXT: ;;#ASMSTART5688; GFX942-NEXT: ; def s[0:5]5689; GFX942-NEXT: ;;#ASMEND5690; GFX942-NEXT: s_mov_b32 s10, s05691; GFX942-NEXT: ;;#ASMSTART5692; GFX942-NEXT: ; def s[4:9]5693; GFX942-NEXT: ;;#ASMEND5694; GFX942-NEXT: s_mov_b32 s11, s15695; GFX942-NEXT: s_mov_b32 s12, s25696; GFX942-NEXT: s_mov_b32 s13, s35697; GFX942-NEXT: ;;#ASMSTART5698; GFX942-NEXT: ; use s[8:13]5699; GFX942-NEXT: ;;#ASMEND5700; GFX942-NEXT: s_setpc_b64 s[30:31]5701 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5702 %vec1 = call <3 x ptr> asm "; def $0", "=s"()5703 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 0, i32 1>5704 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5705 ret void5706}5707 5708define void @s_shuffle_v3p0_v3p0__5_2_1() {5709; GFX9-LABEL: s_shuffle_v3p0_v3p0__5_2_1:5710; GFX9: ; %bb.0:5711; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5712; GFX9-NEXT: ;;#ASMSTART5713; GFX9-NEXT: ; def s[12:17]5714; GFX9-NEXT: ;;#ASMEND5715; GFX9-NEXT: ;;#ASMSTART5716; GFX9-NEXT: ; def s[4:9]5717; GFX9-NEXT: ;;#ASMEND5718; GFX9-NEXT: s_mov_b32 s10, s165719; GFX9-NEXT: s_mov_b32 s11, s175720; GFX9-NEXT: s_mov_b32 s12, s145721; GFX9-NEXT: s_mov_b32 s13, s155722; GFX9-NEXT: ;;#ASMSTART5723; GFX9-NEXT: ; use s[8:13]5724; GFX9-NEXT: ;;#ASMEND5725; GFX9-NEXT: s_setpc_b64 s[30:31]5726 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5727 %vec1 = call <3 x ptr> asm "; def $0", "=s"()5728 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 2, i32 1>5729 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5730 ret void5731}5732 5733define void @s_shuffle_v3p0_v3p0__5_3_1() {5734; GFX900-LABEL: s_shuffle_v3p0_v3p0__5_3_1:5735; GFX900: ; %bb.0:5736; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5737; GFX900-NEXT: ;;#ASMSTART5738; GFX900-NEXT: ; def s[12:17]5739; GFX900-NEXT: ;;#ASMEND5740; GFX900-NEXT: ;;#ASMSTART5741; GFX900-NEXT: ; def s[4:9]5742; GFX900-NEXT: ;;#ASMEND5743; GFX900-NEXT: s_mov_b32 s10, s45744; GFX900-NEXT: s_mov_b32 s11, s55745; GFX900-NEXT: s_mov_b32 s12, s145746; GFX900-NEXT: s_mov_b32 s13, s155747; GFX900-NEXT: ;;#ASMSTART5748; GFX900-NEXT: ; use s[8:13]5749; GFX900-NEXT: ;;#ASMEND5750; GFX900-NEXT: s_setpc_b64 s[30:31]5751;5752; GFX90A-LABEL: s_shuffle_v3p0_v3p0__5_3_1:5753; GFX90A: ; %bb.0:5754; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5755; GFX90A-NEXT: ;;#ASMSTART5756; GFX90A-NEXT: ; def s[12:17]5757; GFX90A-NEXT: ;;#ASMEND5758; GFX90A-NEXT: ;;#ASMSTART5759; GFX90A-NEXT: ; def s[4:9]5760; GFX90A-NEXT: ;;#ASMEND5761; GFX90A-NEXT: s_mov_b32 s10, s45762; GFX90A-NEXT: s_mov_b32 s11, s55763; GFX90A-NEXT: s_mov_b32 s12, s145764; GFX90A-NEXT: s_mov_b32 s13, s155765; GFX90A-NEXT: ;;#ASMSTART5766; GFX90A-NEXT: ; use s[8:13]5767; GFX90A-NEXT: ;;#ASMEND5768; GFX90A-NEXT: s_setpc_b64 s[30:31]5769;5770; GFX942-LABEL: s_shuffle_v3p0_v3p0__5_3_1:5771; GFX942: ; %bb.0:5772; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5773; GFX942-NEXT: ;;#ASMSTART5774; GFX942-NEXT: ; def s[0:5]5775; GFX942-NEXT: ;;#ASMEND5776; GFX942-NEXT: s_mov_b32 s12, s25777; GFX942-NEXT: ;;#ASMSTART5778; GFX942-NEXT: ; def s[4:9]5779; GFX942-NEXT: ;;#ASMEND5780; GFX942-NEXT: s_mov_b32 s10, s45781; GFX942-NEXT: s_mov_b32 s11, s55782; GFX942-NEXT: s_mov_b32 s13, s35783; GFX942-NEXT: ;;#ASMSTART5784; GFX942-NEXT: ; use s[8:13]5785; GFX942-NEXT: ;;#ASMEND5786; GFX942-NEXT: s_setpc_b64 s[30:31]5787 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5788 %vec1 = call <3 x ptr> asm "; def $0", "=s"()5789 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 3, i32 1>5790 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5791 ret void5792}5793 5794define void @s_shuffle_v3p0_v3p0__5_4_1() {5795; GFX900-LABEL: s_shuffle_v3p0_v3p0__5_4_1:5796; GFX900: ; %bb.0:5797; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5798; GFX900-NEXT: ;;#ASMSTART5799; GFX900-NEXT: ; def s[12:17]5800; GFX900-NEXT: ;;#ASMEND5801; GFX900-NEXT: ;;#ASMSTART5802; GFX900-NEXT: ; def s[4:9]5803; GFX900-NEXT: ;;#ASMEND5804; GFX900-NEXT: s_mov_b32 s10, s65805; GFX900-NEXT: s_mov_b32 s11, s75806; GFX900-NEXT: s_mov_b32 s12, s145807; GFX900-NEXT: s_mov_b32 s13, s155808; GFX900-NEXT: ;;#ASMSTART5809; GFX900-NEXT: ; use s[8:13]5810; GFX900-NEXT: ;;#ASMEND5811; GFX900-NEXT: s_setpc_b64 s[30:31]5812;5813; GFX90A-LABEL: s_shuffle_v3p0_v3p0__5_4_1:5814; GFX90A: ; %bb.0:5815; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5816; GFX90A-NEXT: ;;#ASMSTART5817; GFX90A-NEXT: ; def s[12:17]5818; GFX90A-NEXT: ;;#ASMEND5819; GFX90A-NEXT: ;;#ASMSTART5820; GFX90A-NEXT: ; def s[4:9]5821; GFX90A-NEXT: ;;#ASMEND5822; GFX90A-NEXT: s_mov_b32 s10, s65823; GFX90A-NEXT: s_mov_b32 s11, s75824; GFX90A-NEXT: s_mov_b32 s12, s145825; GFX90A-NEXT: s_mov_b32 s13, s155826; GFX90A-NEXT: ;;#ASMSTART5827; GFX90A-NEXT: ; use s[8:13]5828; GFX90A-NEXT: ;;#ASMEND5829; GFX90A-NEXT: s_setpc_b64 s[30:31]5830;5831; GFX942-LABEL: s_shuffle_v3p0_v3p0__5_4_1:5832; GFX942: ; %bb.0:5833; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5834; GFX942-NEXT: ;;#ASMSTART5835; GFX942-NEXT: ; def s[0:5]5836; GFX942-NEXT: ;;#ASMEND5837; GFX942-NEXT: s_mov_b32 s12, s25838; GFX942-NEXT: ;;#ASMSTART5839; GFX942-NEXT: ; def s[4:9]5840; GFX942-NEXT: ;;#ASMEND5841; GFX942-NEXT: s_mov_b32 s10, s65842; GFX942-NEXT: s_mov_b32 s11, s75843; GFX942-NEXT: s_mov_b32 s13, s35844; GFX942-NEXT: ;;#ASMSTART5845; GFX942-NEXT: ; use s[8:13]5846; GFX942-NEXT: ;;#ASMEND5847; GFX942-NEXT: s_setpc_b64 s[30:31]5848 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5849 %vec1 = call <3 x ptr> asm "; def $0", "=s"()5850 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 4, i32 1>5851 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5852 ret void5853}5854 5855define void @s_shuffle_v3p0_v3p0__u_2_2() {5856; GFX9-LABEL: s_shuffle_v3p0_v3p0__u_2_2:5857; GFX9: ; %bb.0:5858; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5859; GFX9-NEXT: ;;#ASMSTART5860; GFX9-NEXT: ; def s[8:13]5861; GFX9-NEXT: ;;#ASMEND5862; GFX9-NEXT: s_mov_b32 s10, s125863; GFX9-NEXT: s_mov_b32 s11, s135864; GFX9-NEXT: ;;#ASMSTART5865; GFX9-NEXT: ; use s[8:13]5866; GFX9-NEXT: ;;#ASMEND5867; GFX9-NEXT: s_setpc_b64 s[30:31]5868 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5869 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 poison, i32 2, i32 2>5870 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5871 ret void5872}5873 5874define void @s_shuffle_v3p0_v3p0__0_2_2() {5875; GFX9-LABEL: s_shuffle_v3p0_v3p0__0_2_2:5876; GFX9: ; %bb.0:5877; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5878; GFX9-NEXT: ;;#ASMSTART5879; GFX9-NEXT: ; def s[8:13]5880; GFX9-NEXT: ;;#ASMEND5881; GFX9-NEXT: s_mov_b32 s10, s125882; GFX9-NEXT: s_mov_b32 s11, s135883; GFX9-NEXT: ;;#ASMSTART5884; GFX9-NEXT: ; use s[8:13]5885; GFX9-NEXT: ;;#ASMEND5886; GFX9-NEXT: s_setpc_b64 s[30:31]5887 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5888 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 0, i32 2, i32 2>5889 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5890 ret void5891}5892 5893define void @s_shuffle_v3p0_v3p0__1_2_2() {5894; GFX9-LABEL: s_shuffle_v3p0_v3p0__1_2_2:5895; GFX9: ; %bb.0:5896; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5897; GFX9-NEXT: ;;#ASMSTART5898; GFX9-NEXT: ; def s[8:13]5899; GFX9-NEXT: ;;#ASMEND5900; GFX9-NEXT: s_mov_b32 s8, s105901; GFX9-NEXT: s_mov_b32 s9, s115902; GFX9-NEXT: s_mov_b32 s10, s125903; GFX9-NEXT: s_mov_b32 s11, s135904; GFX9-NEXT: ;;#ASMSTART5905; GFX9-NEXT: ; use s[8:13]5906; GFX9-NEXT: ;;#ASMEND5907; GFX9-NEXT: s_setpc_b64 s[30:31]5908 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5909 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 1, i32 2, i32 2>5910 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5911 ret void5912}5913 5914define void @s_shuffle_v3p0_v3p0__2_2_2() {5915; GFX9-LABEL: s_shuffle_v3p0_v3p0__2_2_2:5916; GFX9: ; %bb.0:5917; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5918; GFX9-NEXT: ;;#ASMSTART5919; GFX9-NEXT: ; def s[4:9]5920; GFX9-NEXT: ;;#ASMEND5921; GFX9-NEXT: s_mov_b32 s10, s85922; GFX9-NEXT: s_mov_b32 s11, s95923; GFX9-NEXT: s_mov_b32 s12, s85924; GFX9-NEXT: s_mov_b32 s13, s95925; GFX9-NEXT: ;;#ASMSTART5926; GFX9-NEXT: ; use s[8:13]5927; GFX9-NEXT: ;;#ASMEND5928; GFX9-NEXT: s_setpc_b64 s[30:31]5929 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5930 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 2, i32 2, i32 2>5931 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5932 ret void5933}5934 5935define void @s_shuffle_v3p0_v3p0__3_2_2() {5936; GFX9-LABEL: s_shuffle_v3p0_v3p0__3_2_2:5937; GFX9: ; %bb.0:5938; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5939; GFX9-NEXT: ;;#ASMSTART5940; GFX9-NEXT: ; def s[8:13]5941; GFX9-NEXT: ;;#ASMEND5942; GFX9-NEXT: s_mov_b32 s10, s125943; GFX9-NEXT: s_mov_b32 s11, s135944; GFX9-NEXT: ;;#ASMSTART5945; GFX9-NEXT: ; use s[8:13]5946; GFX9-NEXT: ;;#ASMEND5947; GFX9-NEXT: s_setpc_b64 s[30:31]5948 %vec0 = call <3 x ptr> asm "; def $0", "=s"()5949 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 3, i32 2, i32 2>5950 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)5951 ret void5952}5953 5954define void @s_shuffle_v3p0_v3p0__4_2_2() {5955; GFX900-LABEL: s_shuffle_v3p0_v3p0__4_2_2:5956; GFX900: ; %bb.0:5957; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5958; GFX900-NEXT: ;;#ASMSTART5959; GFX900-NEXT: ; def s[8:13]5960; GFX900-NEXT: ;;#ASMEND5961; GFX900-NEXT: ;;#ASMSTART5962; GFX900-NEXT: ; def s[4:9]5963; GFX900-NEXT: ;;#ASMEND5964; GFX900-NEXT: s_mov_b32 s8, s65965; GFX900-NEXT: s_mov_b32 s9, s75966; GFX900-NEXT: s_mov_b32 s10, s125967; GFX900-NEXT: s_mov_b32 s11, s135968; GFX900-NEXT: ;;#ASMSTART5969; GFX900-NEXT: ; use s[8:13]5970; GFX900-NEXT: ;;#ASMEND5971; GFX900-NEXT: s_setpc_b64 s[30:31]5972;5973; GFX90A-LABEL: s_shuffle_v3p0_v3p0__4_2_2:5974; GFX90A: ; %bb.0:5975; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5976; GFX90A-NEXT: ;;#ASMSTART5977; GFX90A-NEXT: ; def s[8:13]5978; GFX90A-NEXT: ;;#ASMEND5979; GFX90A-NEXT: ;;#ASMSTART5980; GFX90A-NEXT: ; def s[4:9]5981; GFX90A-NEXT: ;;#ASMEND5982; GFX90A-NEXT: s_mov_b32 s8, s65983; GFX90A-NEXT: s_mov_b32 s9, s75984; GFX90A-NEXT: s_mov_b32 s10, s125985; GFX90A-NEXT: s_mov_b32 s11, s135986; GFX90A-NEXT: ;;#ASMSTART5987; GFX90A-NEXT: ; use s[8:13]5988; GFX90A-NEXT: ;;#ASMEND5989; GFX90A-NEXT: s_setpc_b64 s[30:31]5990;5991; GFX942-LABEL: s_shuffle_v3p0_v3p0__4_2_2:5992; GFX942: ; %bb.0:5993; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)5994; GFX942-NEXT: ;;#ASMSTART5995; GFX942-NEXT: ; def s[8:13]5996; GFX942-NEXT: ;;#ASMEND5997; GFX942-NEXT: ;;#ASMSTART5998; GFX942-NEXT: ; def s[0:5]5999; GFX942-NEXT: ;;#ASMEND6000; GFX942-NEXT: s_mov_b32 s8, s26001; GFX942-NEXT: s_mov_b32 s9, s36002; GFX942-NEXT: s_mov_b32 s10, s126003; GFX942-NEXT: s_mov_b32 s11, s136004; GFX942-NEXT: ;;#ASMSTART6005; GFX942-NEXT: ; use s[8:13]6006; GFX942-NEXT: ;;#ASMEND6007; GFX942-NEXT: s_setpc_b64 s[30:31]6008 %vec0 = call <3 x ptr> asm "; def $0", "=s"()6009 %vec1 = call <3 x ptr> asm "; def $0", "=s"()6010 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 4, i32 2, i32 2>6011 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)6012 ret void6013}6014 6015define void @s_shuffle_v3p0_v3p0__5_2_2() {6016; GFX900-LABEL: s_shuffle_v3p0_v3p0__5_2_2:6017; GFX900: ; %bb.0:6018; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6019; GFX900-NEXT: ;;#ASMSTART6020; GFX900-NEXT: ; def s[8:13]6021; GFX900-NEXT: ;;#ASMEND6022; GFX900-NEXT: ;;#ASMSTART6023; GFX900-NEXT: ; def s[4:9]6024; GFX900-NEXT: ;;#ASMEND6025; GFX900-NEXT: s_mov_b32 s10, s126026; GFX900-NEXT: s_mov_b32 s11, s136027; GFX900-NEXT: ;;#ASMSTART6028; GFX900-NEXT: ; use s[8:13]6029; GFX900-NEXT: ;;#ASMEND6030; GFX900-NEXT: s_setpc_b64 s[30:31]6031;6032; GFX90A-LABEL: s_shuffle_v3p0_v3p0__5_2_2:6033; GFX90A: ; %bb.0:6034; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6035; GFX90A-NEXT: ;;#ASMSTART6036; GFX90A-NEXT: ; def s[8:13]6037; GFX90A-NEXT: ;;#ASMEND6038; GFX90A-NEXT: ;;#ASMSTART6039; GFX90A-NEXT: ; def s[4:9]6040; GFX90A-NEXT: ;;#ASMEND6041; GFX90A-NEXT: s_mov_b32 s10, s126042; GFX90A-NEXT: s_mov_b32 s11, s136043; GFX90A-NEXT: ;;#ASMSTART6044; GFX90A-NEXT: ; use s[8:13]6045; GFX90A-NEXT: ;;#ASMEND6046; GFX90A-NEXT: s_setpc_b64 s[30:31]6047;6048; GFX942-LABEL: s_shuffle_v3p0_v3p0__5_2_2:6049; GFX942: ; %bb.0:6050; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6051; GFX942-NEXT: ;;#ASMSTART6052; GFX942-NEXT: ; def s[8:13]6053; GFX942-NEXT: ;;#ASMEND6054; GFX942-NEXT: s_mov_b32 s10, s126055; GFX942-NEXT: ;;#ASMSTART6056; GFX942-NEXT: ; def s[4:9]6057; GFX942-NEXT: ;;#ASMEND6058; GFX942-NEXT: s_mov_b32 s11, s136059; GFX942-NEXT: ;;#ASMSTART6060; GFX942-NEXT: ; use s[8:13]6061; GFX942-NEXT: ;;#ASMEND6062; GFX942-NEXT: s_setpc_b64 s[30:31]6063 %vec0 = call <3 x ptr> asm "; def $0", "=s"()6064 %vec1 = call <3 x ptr> asm "; def $0", "=s"()6065 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 2, i32 2>6066 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)6067 ret void6068}6069 6070define void @s_shuffle_v3p0_v3p0__5_u_2() {6071; GFX900-LABEL: s_shuffle_v3p0_v3p0__5_u_2:6072; GFX900: ; %bb.0:6073; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6074; GFX900-NEXT: ;;#ASMSTART6075; GFX900-NEXT: ; def s[8:13]6076; GFX900-NEXT: ;;#ASMEND6077; GFX900-NEXT: ;;#ASMSTART6078; GFX900-NEXT: ; def s[4:9]6079; GFX900-NEXT: ;;#ASMEND6080; GFX900-NEXT: ;;#ASMSTART6081; GFX900-NEXT: ; use s[8:13]6082; GFX900-NEXT: ;;#ASMEND6083; GFX900-NEXT: s_setpc_b64 s[30:31]6084;6085; GFX90A-LABEL: s_shuffle_v3p0_v3p0__5_u_2:6086; GFX90A: ; %bb.0:6087; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6088; GFX90A-NEXT: ;;#ASMSTART6089; GFX90A-NEXT: ; def s[8:13]6090; GFX90A-NEXT: ;;#ASMEND6091; GFX90A-NEXT: ;;#ASMSTART6092; GFX90A-NEXT: ; def s[4:9]6093; GFX90A-NEXT: ;;#ASMEND6094; GFX90A-NEXT: ;;#ASMSTART6095; GFX90A-NEXT: ; use s[8:13]6096; GFX90A-NEXT: ;;#ASMEND6097; GFX90A-NEXT: s_setpc_b64 s[30:31]6098;6099; GFX942-LABEL: s_shuffle_v3p0_v3p0__5_u_2:6100; GFX942: ; %bb.0:6101; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6102; GFX942-NEXT: ;;#ASMSTART6103; GFX942-NEXT: ; def s[8:13]6104; GFX942-NEXT: ;;#ASMEND6105; GFX942-NEXT: s_nop 06106; GFX942-NEXT: ;;#ASMSTART6107; GFX942-NEXT: ; def s[4:9]6108; GFX942-NEXT: ;;#ASMEND6109; GFX942-NEXT: s_nop 06110; GFX942-NEXT: ;;#ASMSTART6111; GFX942-NEXT: ; use s[8:13]6112; GFX942-NEXT: ;;#ASMEND6113; GFX942-NEXT: s_setpc_b64 s[30:31]6114 %vec0 = call <3 x ptr> asm "; def $0", "=s"()6115 %vec1 = call <3 x ptr> asm "; def $0", "=s"()6116 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 poison, i32 2>6117 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)6118 ret void6119}6120 6121define void @s_shuffle_v3p0_v3p0__5_0_2() {6122; GFX9-LABEL: s_shuffle_v3p0_v3p0__5_0_2:6123; GFX9: ; %bb.0:6124; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6125; GFX9-NEXT: ;;#ASMSTART6126; GFX9-NEXT: ; def s[12:17]6127; GFX9-NEXT: ;;#ASMEND6128; GFX9-NEXT: ;;#ASMSTART6129; GFX9-NEXT: ; def s[4:9]6130; GFX9-NEXT: ;;#ASMEND6131; GFX9-NEXT: s_mov_b32 s10, s126132; GFX9-NEXT: s_mov_b32 s11, s136133; GFX9-NEXT: s_mov_b32 s12, s166134; GFX9-NEXT: s_mov_b32 s13, s176135; GFX9-NEXT: ;;#ASMSTART6136; GFX9-NEXT: ; use s[8:13]6137; GFX9-NEXT: ;;#ASMEND6138; GFX9-NEXT: s_setpc_b64 s[30:31]6139 %vec0 = call <3 x ptr> asm "; def $0", "=s"()6140 %vec1 = call <3 x ptr> asm "; def $0", "=s"()6141 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 0, i32 2>6142 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)6143 ret void6144}6145 6146define void @s_shuffle_v3p0_v3p0__5_1_2() {6147; GFX900-LABEL: s_shuffle_v3p0_v3p0__5_1_2:6148; GFX900: ; %bb.0:6149; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6150; GFX900-NEXT: ;;#ASMSTART6151; GFX900-NEXT: ; def s[8:13]6152; GFX900-NEXT: ;;#ASMEND6153; GFX900-NEXT: ;;#ASMSTART6154; GFX900-NEXT: ; def s[4:9]6155; GFX900-NEXT: ;;#ASMEND6156; GFX900-NEXT: ;;#ASMSTART6157; GFX900-NEXT: ; use s[8:13]6158; GFX900-NEXT: ;;#ASMEND6159; GFX900-NEXT: s_setpc_b64 s[30:31]6160;6161; GFX90A-LABEL: s_shuffle_v3p0_v3p0__5_1_2:6162; GFX90A: ; %bb.0:6163; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6164; GFX90A-NEXT: ;;#ASMSTART6165; GFX90A-NEXT: ; def s[8:13]6166; GFX90A-NEXT: ;;#ASMEND6167; GFX90A-NEXT: ;;#ASMSTART6168; GFX90A-NEXT: ; def s[4:9]6169; GFX90A-NEXT: ;;#ASMEND6170; GFX90A-NEXT: ;;#ASMSTART6171; GFX90A-NEXT: ; use s[8:13]6172; GFX90A-NEXT: ;;#ASMEND6173; GFX90A-NEXT: s_setpc_b64 s[30:31]6174;6175; GFX942-LABEL: s_shuffle_v3p0_v3p0__5_1_2:6176; GFX942: ; %bb.0:6177; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6178; GFX942-NEXT: ;;#ASMSTART6179; GFX942-NEXT: ; def s[8:13]6180; GFX942-NEXT: ;;#ASMEND6181; GFX942-NEXT: s_nop 06182; GFX942-NEXT: ;;#ASMSTART6183; GFX942-NEXT: ; def s[4:9]6184; GFX942-NEXT: ;;#ASMEND6185; GFX942-NEXT: s_nop 06186; GFX942-NEXT: ;;#ASMSTART6187; GFX942-NEXT: ; use s[8:13]6188; GFX942-NEXT: ;;#ASMEND6189; GFX942-NEXT: s_setpc_b64 s[30:31]6190 %vec0 = call <3 x ptr> asm "; def $0", "=s"()6191 %vec1 = call <3 x ptr> asm "; def $0", "=s"()6192 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 1, i32 2>6193 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)6194 ret void6195}6196 6197define void @s_shuffle_v3p0_v3p0__5_3_2() {6198; GFX900-LABEL: s_shuffle_v3p0_v3p0__5_3_2:6199; GFX900: ; %bb.0:6200; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6201; GFX900-NEXT: ;;#ASMSTART6202; GFX900-NEXT: ; def s[8:13]6203; GFX900-NEXT: ;;#ASMEND6204; GFX900-NEXT: ;;#ASMSTART6205; GFX900-NEXT: ; def s[4:9]6206; GFX900-NEXT: ;;#ASMEND6207; GFX900-NEXT: s_mov_b32 s10, s46208; GFX900-NEXT: s_mov_b32 s11, s56209; GFX900-NEXT: ;;#ASMSTART6210; GFX900-NEXT: ; use s[8:13]6211; GFX900-NEXT: ;;#ASMEND6212; GFX900-NEXT: s_setpc_b64 s[30:31]6213;6214; GFX90A-LABEL: s_shuffle_v3p0_v3p0__5_3_2:6215; GFX90A: ; %bb.0:6216; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6217; GFX90A-NEXT: ;;#ASMSTART6218; GFX90A-NEXT: ; def s[8:13]6219; GFX90A-NEXT: ;;#ASMEND6220; GFX90A-NEXT: ;;#ASMSTART6221; GFX90A-NEXT: ; def s[4:9]6222; GFX90A-NEXT: ;;#ASMEND6223; GFX90A-NEXT: s_mov_b32 s10, s46224; GFX90A-NEXT: s_mov_b32 s11, s56225; GFX90A-NEXT: ;;#ASMSTART6226; GFX90A-NEXT: ; use s[8:13]6227; GFX90A-NEXT: ;;#ASMEND6228; GFX90A-NEXT: s_setpc_b64 s[30:31]6229;6230; GFX942-LABEL: s_shuffle_v3p0_v3p0__5_3_2:6231; GFX942: ; %bb.0:6232; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6233; GFX942-NEXT: ;;#ASMSTART6234; GFX942-NEXT: ; def s[8:13]6235; GFX942-NEXT: ;;#ASMEND6236; GFX942-NEXT: s_nop 06237; GFX942-NEXT: ;;#ASMSTART6238; GFX942-NEXT: ; def s[4:9]6239; GFX942-NEXT: ;;#ASMEND6240; GFX942-NEXT: s_mov_b32 s10, s46241; GFX942-NEXT: s_mov_b32 s11, s56242; GFX942-NEXT: ;;#ASMSTART6243; GFX942-NEXT: ; use s[8:13]6244; GFX942-NEXT: ;;#ASMEND6245; GFX942-NEXT: s_setpc_b64 s[30:31]6246 %vec0 = call <3 x ptr> asm "; def $0", "=s"()6247 %vec1 = call <3 x ptr> asm "; def $0", "=s"()6248 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 3, i32 2>6249 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)6250 ret void6251}6252 6253define void @s_shuffle_v3p0_v3p0__5_4_2() {6254; GFX900-LABEL: s_shuffle_v3p0_v3p0__5_4_2:6255; GFX900: ; %bb.0:6256; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6257; GFX900-NEXT: ;;#ASMSTART6258; GFX900-NEXT: ; def s[8:13]6259; GFX900-NEXT: ;;#ASMEND6260; GFX900-NEXT: ;;#ASMSTART6261; GFX900-NEXT: ; def s[4:9]6262; GFX900-NEXT: ;;#ASMEND6263; GFX900-NEXT: s_mov_b32 s10, s66264; GFX900-NEXT: s_mov_b32 s11, s76265; GFX900-NEXT: ;;#ASMSTART6266; GFX900-NEXT: ; use s[8:13]6267; GFX900-NEXT: ;;#ASMEND6268; GFX900-NEXT: s_setpc_b64 s[30:31]6269;6270; GFX90A-LABEL: s_shuffle_v3p0_v3p0__5_4_2:6271; GFX90A: ; %bb.0:6272; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6273; GFX90A-NEXT: ;;#ASMSTART6274; GFX90A-NEXT: ; def s[8:13]6275; GFX90A-NEXT: ;;#ASMEND6276; GFX90A-NEXT: ;;#ASMSTART6277; GFX90A-NEXT: ; def s[4:9]6278; GFX90A-NEXT: ;;#ASMEND6279; GFX90A-NEXT: s_mov_b32 s10, s66280; GFX90A-NEXT: s_mov_b32 s11, s76281; GFX90A-NEXT: ;;#ASMSTART6282; GFX90A-NEXT: ; use s[8:13]6283; GFX90A-NEXT: ;;#ASMEND6284; GFX90A-NEXT: s_setpc_b64 s[30:31]6285;6286; GFX942-LABEL: s_shuffle_v3p0_v3p0__5_4_2:6287; GFX942: ; %bb.0:6288; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6289; GFX942-NEXT: ;;#ASMSTART6290; GFX942-NEXT: ; def s[8:13]6291; GFX942-NEXT: ;;#ASMEND6292; GFX942-NEXT: s_nop 06293; GFX942-NEXT: ;;#ASMSTART6294; GFX942-NEXT: ; def s[4:9]6295; GFX942-NEXT: ;;#ASMEND6296; GFX942-NEXT: s_mov_b32 s10, s66297; GFX942-NEXT: s_mov_b32 s11, s76298; GFX942-NEXT: ;;#ASMSTART6299; GFX942-NEXT: ; use s[8:13]6300; GFX942-NEXT: ;;#ASMEND6301; GFX942-NEXT: s_setpc_b64 s[30:31]6302 %vec0 = call <3 x ptr> asm "; def $0", "=s"()6303 %vec1 = call <3 x ptr> asm "; def $0", "=s"()6304 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 4, i32 2>6305 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)6306 ret void6307}6308 6309define void @s_shuffle_v3p0_v3p0__u_3_3() {6310; GFX9-LABEL: s_shuffle_v3p0_v3p0__u_3_3:6311; GFX9: ; %bb.0:6312; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6313; GFX9-NEXT: ;;#ASMSTART6314; GFX9-NEXT: ; use s[8:13]6315; GFX9-NEXT: ;;#ASMEND6316; GFX9-NEXT: s_setpc_b64 s[30:31]6317 %vec0 = call <3 x ptr> asm "; def $0", "=s"()6318 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 poison, i32 3, i32 3>6319 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)6320 ret void6321}6322 6323define void @s_shuffle_v3p0_v3p0__0_3_3() {6324; GFX900-LABEL: s_shuffle_v3p0_v3p0__0_3_3:6325; GFX900: ; %bb.0:6326; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6327; GFX900-NEXT: ;;#ASMSTART6328; GFX900-NEXT: ; def s[8:13]6329; GFX900-NEXT: ;;#ASMEND6330; GFX900-NEXT: ;;#ASMSTART6331; GFX900-NEXT: ; use s[8:13]6332; GFX900-NEXT: ;;#ASMEND6333; GFX900-NEXT: s_setpc_b64 s[30:31]6334;6335; GFX90A-LABEL: s_shuffle_v3p0_v3p0__0_3_3:6336; GFX90A: ; %bb.0:6337; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6338; GFX90A-NEXT: ;;#ASMSTART6339; GFX90A-NEXT: ; def s[8:13]6340; GFX90A-NEXT: ;;#ASMEND6341; GFX90A-NEXT: ;;#ASMSTART6342; GFX90A-NEXT: ; use s[8:13]6343; GFX90A-NEXT: ;;#ASMEND6344; GFX90A-NEXT: s_setpc_b64 s[30:31]6345;6346; GFX942-LABEL: s_shuffle_v3p0_v3p0__0_3_3:6347; GFX942: ; %bb.0:6348; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6349; GFX942-NEXT: ;;#ASMSTART6350; GFX942-NEXT: ; def s[8:13]6351; GFX942-NEXT: ;;#ASMEND6352; GFX942-NEXT: s_nop 06353; GFX942-NEXT: ;;#ASMSTART6354; GFX942-NEXT: ; use s[8:13]6355; GFX942-NEXT: ;;#ASMEND6356; GFX942-NEXT: s_setpc_b64 s[30:31]6357 %vec0 = call <3 x ptr> asm "; def $0", "=s"()6358 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 0, i32 3, i32 3>6359 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)6360 ret void6361}6362 6363define void @s_shuffle_v3p0_v3p0__1_3_3() {6364; GFX900-LABEL: s_shuffle_v3p0_v3p0__1_3_3:6365; GFX900: ; %bb.0:6366; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6367; GFX900-NEXT: ;;#ASMSTART6368; GFX900-NEXT: ; def s[4:9]6369; GFX900-NEXT: ;;#ASMEND6370; GFX900-NEXT: s_mov_b32 s8, s66371; GFX900-NEXT: s_mov_b32 s9, s76372; GFX900-NEXT: ;;#ASMSTART6373; GFX900-NEXT: ; use s[8:13]6374; GFX900-NEXT: ;;#ASMEND6375; GFX900-NEXT: s_setpc_b64 s[30:31]6376;6377; GFX90A-LABEL: s_shuffle_v3p0_v3p0__1_3_3:6378; GFX90A: ; %bb.0:6379; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6380; GFX90A-NEXT: ;;#ASMSTART6381; GFX90A-NEXT: ; def s[4:9]6382; GFX90A-NEXT: ;;#ASMEND6383; GFX90A-NEXT: s_mov_b32 s8, s66384; GFX90A-NEXT: s_mov_b32 s9, s76385; GFX90A-NEXT: ;;#ASMSTART6386; GFX90A-NEXT: ; use s[8:13]6387; GFX90A-NEXT: ;;#ASMEND6388; GFX90A-NEXT: s_setpc_b64 s[30:31]6389;6390; GFX942-LABEL: s_shuffle_v3p0_v3p0__1_3_3:6391; GFX942: ; %bb.0:6392; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6393; GFX942-NEXT: ;;#ASMSTART6394; GFX942-NEXT: ; def s[0:5]6395; GFX942-NEXT: ;;#ASMEND6396; GFX942-NEXT: s_mov_b32 s8, s26397; GFX942-NEXT: s_mov_b32 s9, s36398; GFX942-NEXT: ;;#ASMSTART6399; GFX942-NEXT: ; use s[8:13]6400; GFX942-NEXT: ;;#ASMEND6401; GFX942-NEXT: s_setpc_b64 s[30:31]6402 %vec0 = call <3 x ptr> asm "; def $0", "=s"()6403 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 1, i32 3, i32 3>6404 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)6405 ret void6406}6407 6408define void @s_shuffle_v3p0_v3p0__2_3_3() {6409; GFX900-LABEL: s_shuffle_v3p0_v3p0__2_3_3:6410; GFX900: ; %bb.0:6411; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6412; GFX900-NEXT: ;;#ASMSTART6413; GFX900-NEXT: ; def s[4:9]6414; GFX900-NEXT: ;;#ASMEND6415; GFX900-NEXT: ;;#ASMSTART6416; GFX900-NEXT: ; use s[8:13]6417; GFX900-NEXT: ;;#ASMEND6418; GFX900-NEXT: s_setpc_b64 s[30:31]6419;6420; GFX90A-LABEL: s_shuffle_v3p0_v3p0__2_3_3:6421; GFX90A: ; %bb.0:6422; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6423; GFX90A-NEXT: ;;#ASMSTART6424; GFX90A-NEXT: ; def s[4:9]6425; GFX90A-NEXT: ;;#ASMEND6426; GFX90A-NEXT: ;;#ASMSTART6427; GFX90A-NEXT: ; use s[8:13]6428; GFX90A-NEXT: ;;#ASMEND6429; GFX90A-NEXT: s_setpc_b64 s[30:31]6430;6431; GFX942-LABEL: s_shuffle_v3p0_v3p0__2_3_3:6432; GFX942: ; %bb.0:6433; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6434; GFX942-NEXT: ;;#ASMSTART6435; GFX942-NEXT: ; def s[4:9]6436; GFX942-NEXT: ;;#ASMEND6437; GFX942-NEXT: s_nop 06438; GFX942-NEXT: ;;#ASMSTART6439; GFX942-NEXT: ; use s[8:13]6440; GFX942-NEXT: ;;#ASMEND6441; GFX942-NEXT: s_setpc_b64 s[30:31]6442 %vec0 = call <3 x ptr> asm "; def $0", "=s"()6443 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 2, i32 3, i32 3>6444 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)6445 ret void6446}6447 6448define void @s_shuffle_v3p0_v3p0__3_3_3() {6449; GFX9-LABEL: s_shuffle_v3p0_v3p0__3_3_3:6450; GFX9: ; %bb.0:6451; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6452; GFX9-NEXT: ;;#ASMSTART6453; GFX9-NEXT: ; use s[8:13]6454; GFX9-NEXT: ;;#ASMEND6455; GFX9-NEXT: s_setpc_b64 s[30:31]6456 %vec0 = call <3 x ptr> asm "; def $0", "=s"()6457 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> poison, <3 x i32> <i32 3, i32 3, i32 3>6458 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)6459 ret void6460}6461 6462define void @s_shuffle_v3p0_v3p0__4_3_3() {6463; GFX9-LABEL: s_shuffle_v3p0_v3p0__4_3_3:6464; GFX9: ; %bb.0:6465; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6466; GFX9-NEXT: ;;#ASMSTART6467; GFX9-NEXT: ; def s[12:17]6468; GFX9-NEXT: ;;#ASMEND6469; GFX9-NEXT: s_mov_b32 s8, s146470; GFX9-NEXT: s_mov_b32 s9, s156471; GFX9-NEXT: s_mov_b32 s10, s126472; GFX9-NEXT: s_mov_b32 s11, s136473; GFX9-NEXT: ;;#ASMSTART6474; GFX9-NEXT: ; use s[8:13]6475; GFX9-NEXT: ;;#ASMEND6476; GFX9-NEXT: s_setpc_b64 s[30:31]6477 %vec0 = call <3 x ptr> asm "; def $0", "=s"()6478 %vec1 = call <3 x ptr> asm "; def $0", "=s"()6479 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 4, i32 3, i32 3>6480 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)6481 ret void6482}6483 6484define void @s_shuffle_v3p0_v3p0__5_3_3() {6485; GFX9-LABEL: s_shuffle_v3p0_v3p0__5_3_3:6486; GFX9: ; %bb.0:6487; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6488; GFX9-NEXT: ;;#ASMSTART6489; GFX9-NEXT: ; def s[4:9]6490; GFX9-NEXT: ;;#ASMEND6491; GFX9-NEXT: s_mov_b32 s10, s46492; GFX9-NEXT: s_mov_b32 s11, s56493; GFX9-NEXT: s_mov_b32 s12, s46494; GFX9-NEXT: s_mov_b32 s13, s56495; GFX9-NEXT: ;;#ASMSTART6496; GFX9-NEXT: ; use s[8:13]6497; GFX9-NEXT: ;;#ASMEND6498; GFX9-NEXT: s_setpc_b64 s[30:31]6499 %vec0 = call <3 x ptr> asm "; def $0", "=s"()6500 %vec1 = call <3 x ptr> asm "; def $0", "=s"()6501 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 3, i32 3>6502 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)6503 ret void6504}6505 6506define void @s_shuffle_v3p0_v3p0__5_u_3() {6507; GFX9-LABEL: s_shuffle_v3p0_v3p0__5_u_3:6508; GFX9: ; %bb.0:6509; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6510; GFX9-NEXT: ;;#ASMSTART6511; GFX9-NEXT: ; def s[4:9]6512; GFX9-NEXT: ;;#ASMEND6513; GFX9-NEXT: s_mov_b32 s12, s46514; GFX9-NEXT: s_mov_b32 s13, s56515; GFX9-NEXT: ;;#ASMSTART6516; GFX9-NEXT: ; use s[8:13]6517; GFX9-NEXT: ;;#ASMEND6518; GFX9-NEXT: s_setpc_b64 s[30:31]6519 %vec0 = call <3 x ptr> asm "; def $0", "=s"()6520 %vec1 = call <3 x ptr> asm "; def $0", "=s"()6521 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 poison, i32 3>6522 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)6523 ret void6524}6525 6526define void @s_shuffle_v3p0_v3p0__5_0_3() {6527; GFX900-LABEL: s_shuffle_v3p0_v3p0__5_0_3:6528; GFX900: ; %bb.0:6529; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6530; GFX900-NEXT: ;;#ASMSTART6531; GFX900-NEXT: ; def s[12:17]6532; GFX900-NEXT: ;;#ASMEND6533; GFX900-NEXT: ;;#ASMSTART6534; GFX900-NEXT: ; def s[4:9]6535; GFX900-NEXT: ;;#ASMEND6536; GFX900-NEXT: s_mov_b32 s10, s126537; GFX900-NEXT: s_mov_b32 s11, s136538; GFX900-NEXT: s_mov_b32 s12, s46539; GFX900-NEXT: s_mov_b32 s13, s56540; GFX900-NEXT: ;;#ASMSTART6541; GFX900-NEXT: ; use s[8:13]6542; GFX900-NEXT: ;;#ASMEND6543; GFX900-NEXT: s_setpc_b64 s[30:31]6544;6545; GFX90A-LABEL: s_shuffle_v3p0_v3p0__5_0_3:6546; GFX90A: ; %bb.0:6547; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6548; GFX90A-NEXT: ;;#ASMSTART6549; GFX90A-NEXT: ; def s[12:17]6550; GFX90A-NEXT: ;;#ASMEND6551; GFX90A-NEXT: ;;#ASMSTART6552; GFX90A-NEXT: ; def s[4:9]6553; GFX90A-NEXT: ;;#ASMEND6554; GFX90A-NEXT: s_mov_b32 s10, s126555; GFX90A-NEXT: s_mov_b32 s11, s136556; GFX90A-NEXT: s_mov_b32 s12, s46557; GFX90A-NEXT: s_mov_b32 s13, s56558; GFX90A-NEXT: ;;#ASMSTART6559; GFX90A-NEXT: ; use s[8:13]6560; GFX90A-NEXT: ;;#ASMEND6561; GFX90A-NEXT: s_setpc_b64 s[30:31]6562;6563; GFX942-LABEL: s_shuffle_v3p0_v3p0__5_0_3:6564; GFX942: ; %bb.0:6565; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6566; GFX942-NEXT: ;;#ASMSTART6567; GFX942-NEXT: ; def s[0:5]6568; GFX942-NEXT: ;;#ASMEND6569; GFX942-NEXT: s_mov_b32 s10, s06570; GFX942-NEXT: ;;#ASMSTART6571; GFX942-NEXT: ; def s[4:9]6572; GFX942-NEXT: ;;#ASMEND6573; GFX942-NEXT: s_mov_b32 s11, s16574; GFX942-NEXT: s_mov_b32 s12, s46575; GFX942-NEXT: s_mov_b32 s13, s56576; GFX942-NEXT: ;;#ASMSTART6577; GFX942-NEXT: ; use s[8:13]6578; GFX942-NEXT: ;;#ASMEND6579; GFX942-NEXT: s_setpc_b64 s[30:31]6580 %vec0 = call <3 x ptr> asm "; def $0", "=s"()6581 %vec1 = call <3 x ptr> asm "; def $0", "=s"()6582 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 0, i32 3>6583 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)6584 ret void6585}6586 6587define void @s_shuffle_v3p0_v3p0__5_1_3() {6588; GFX900-LABEL: s_shuffle_v3p0_v3p0__5_1_3:6589; GFX900: ; %bb.0:6590; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6591; GFX900-NEXT: ;;#ASMSTART6592; GFX900-NEXT: ; def s[8:13]6593; GFX900-NEXT: ;;#ASMEND6594; GFX900-NEXT: ;;#ASMSTART6595; GFX900-NEXT: ; def s[4:9]6596; GFX900-NEXT: ;;#ASMEND6597; GFX900-NEXT: s_mov_b32 s12, s46598; GFX900-NEXT: s_mov_b32 s13, s56599; GFX900-NEXT: ;;#ASMSTART6600; GFX900-NEXT: ; use s[8:13]6601; GFX900-NEXT: ;;#ASMEND6602; GFX900-NEXT: s_setpc_b64 s[30:31]6603;6604; GFX90A-LABEL: s_shuffle_v3p0_v3p0__5_1_3:6605; GFX90A: ; %bb.0:6606; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6607; GFX90A-NEXT: ;;#ASMSTART6608; GFX90A-NEXT: ; def s[8:13]6609; GFX90A-NEXT: ;;#ASMEND6610; GFX90A-NEXT: ;;#ASMSTART6611; GFX90A-NEXT: ; def s[4:9]6612; GFX90A-NEXT: ;;#ASMEND6613; GFX90A-NEXT: s_mov_b32 s12, s46614; GFX90A-NEXT: s_mov_b32 s13, s56615; GFX90A-NEXT: ;;#ASMSTART6616; GFX90A-NEXT: ; use s[8:13]6617; GFX90A-NEXT: ;;#ASMEND6618; GFX90A-NEXT: s_setpc_b64 s[30:31]6619;6620; GFX942-LABEL: s_shuffle_v3p0_v3p0__5_1_3:6621; GFX942: ; %bb.0:6622; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6623; GFX942-NEXT: ;;#ASMSTART6624; GFX942-NEXT: ; def s[8:13]6625; GFX942-NEXT: ;;#ASMEND6626; GFX942-NEXT: s_nop 06627; GFX942-NEXT: ;;#ASMSTART6628; GFX942-NEXT: ; def s[4:9]6629; GFX942-NEXT: ;;#ASMEND6630; GFX942-NEXT: s_mov_b32 s12, s46631; GFX942-NEXT: s_mov_b32 s13, s56632; GFX942-NEXT: ;;#ASMSTART6633; GFX942-NEXT: ; use s[8:13]6634; GFX942-NEXT: ;;#ASMEND6635; GFX942-NEXT: s_setpc_b64 s[30:31]6636 %vec0 = call <3 x ptr> asm "; def $0", "=s"()6637 %vec1 = call <3 x ptr> asm "; def $0", "=s"()6638 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 1, i32 3>6639 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)6640 ret void6641}6642 6643define void @s_shuffle_v3p0_v3p0__5_2_3() {6644; GFX900-LABEL: s_shuffle_v3p0_v3p0__5_2_3:6645; GFX900: ; %bb.0:6646; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6647; GFX900-NEXT: ;;#ASMSTART6648; GFX900-NEXT: ; def s[8:13]6649; GFX900-NEXT: ;;#ASMEND6650; GFX900-NEXT: ;;#ASMSTART6651; GFX900-NEXT: ; def s[4:9]6652; GFX900-NEXT: ;;#ASMEND6653; GFX900-NEXT: s_mov_b32 s10, s126654; GFX900-NEXT: s_mov_b32 s11, s136655; GFX900-NEXT: s_mov_b32 s12, s46656; GFX900-NEXT: s_mov_b32 s13, s56657; GFX900-NEXT: ;;#ASMSTART6658; GFX900-NEXT: ; use s[8:13]6659; GFX900-NEXT: ;;#ASMEND6660; GFX900-NEXT: s_setpc_b64 s[30:31]6661;6662; GFX90A-LABEL: s_shuffle_v3p0_v3p0__5_2_3:6663; GFX90A: ; %bb.0:6664; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6665; GFX90A-NEXT: ;;#ASMSTART6666; GFX90A-NEXT: ; def s[8:13]6667; GFX90A-NEXT: ;;#ASMEND6668; GFX90A-NEXT: ;;#ASMSTART6669; GFX90A-NEXT: ; def s[4:9]6670; GFX90A-NEXT: ;;#ASMEND6671; GFX90A-NEXT: s_mov_b32 s10, s126672; GFX90A-NEXT: s_mov_b32 s11, s136673; GFX90A-NEXT: s_mov_b32 s12, s46674; GFX90A-NEXT: s_mov_b32 s13, s56675; GFX90A-NEXT: ;;#ASMSTART6676; GFX90A-NEXT: ; use s[8:13]6677; GFX90A-NEXT: ;;#ASMEND6678; GFX90A-NEXT: s_setpc_b64 s[30:31]6679;6680; GFX942-LABEL: s_shuffle_v3p0_v3p0__5_2_3:6681; GFX942: ; %bb.0:6682; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6683; GFX942-NEXT: ;;#ASMSTART6684; GFX942-NEXT: ; def s[8:13]6685; GFX942-NEXT: ;;#ASMEND6686; GFX942-NEXT: s_mov_b32 s10, s126687; GFX942-NEXT: ;;#ASMSTART6688; GFX942-NEXT: ; def s[4:9]6689; GFX942-NEXT: ;;#ASMEND6690; GFX942-NEXT: s_mov_b32 s11, s136691; GFX942-NEXT: s_mov_b32 s12, s46692; GFX942-NEXT: s_mov_b32 s13, s56693; GFX942-NEXT: ;;#ASMSTART6694; GFX942-NEXT: ; use s[8:13]6695; GFX942-NEXT: ;;#ASMEND6696; GFX942-NEXT: s_setpc_b64 s[30:31]6697 %vec0 = call <3 x ptr> asm "; def $0", "=s"()6698 %vec1 = call <3 x ptr> asm "; def $0", "=s"()6699 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 2, i32 3>6700 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)6701 ret void6702}6703 6704define void @s_shuffle_v3p0_v3p0__5_4_3() {6705; GFX9-LABEL: s_shuffle_v3p0_v3p0__5_4_3:6706; GFX9: ; %bb.0:6707; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6708; GFX9-NEXT: ;;#ASMSTART6709; GFX9-NEXT: ; def s[4:9]6710; GFX9-NEXT: ;;#ASMEND6711; GFX9-NEXT: s_mov_b32 s10, s66712; GFX9-NEXT: s_mov_b32 s11, s76713; GFX9-NEXT: s_mov_b32 s12, s46714; GFX9-NEXT: s_mov_b32 s13, s56715; GFX9-NEXT: ;;#ASMSTART6716; GFX9-NEXT: ; use s[8:13]6717; GFX9-NEXT: ;;#ASMEND6718; GFX9-NEXT: s_setpc_b64 s[30:31]6719 %vec0 = call <3 x ptr> asm "; def $0", "=s"()6720 %vec1 = call <3 x ptr> asm "; def $0", "=s"()6721 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 4, i32 3>6722 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)6723 ret void6724}6725 6726define void @s_shuffle_v3p0_v3p0__u_4_4() {6727; GFX9-LABEL: s_shuffle_v3p0_v3p0__u_4_4:6728; GFX9: ; %bb.0:6729; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6730; GFX9-NEXT: ;;#ASMSTART6731; GFX9-NEXT: ; def s[8:13]6732; GFX9-NEXT: ;;#ASMEND6733; GFX9-NEXT: s_mov_b32 s12, s106734; GFX9-NEXT: s_mov_b32 s13, s116735; GFX9-NEXT: ;;#ASMSTART6736; GFX9-NEXT: ; use s[8:13]6737; GFX9-NEXT: ;;#ASMEND6738; GFX9-NEXT: s_setpc_b64 s[30:31]6739 %vec0 = call <3 x ptr> asm "; def $0", "=s"()6740 %vec1 = call <3 x ptr> asm "; def $0", "=s"()6741 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 poison, i32 4, i32 4>6742 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)6743 ret void6744}6745 6746define void @s_shuffle_v3p0_v3p0__0_4_4() {6747; GFX900-LABEL: s_shuffle_v3p0_v3p0__0_4_4:6748; GFX900: ; %bb.0:6749; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6750; GFX900-NEXT: ;;#ASMSTART6751; GFX900-NEXT: ; def s[8:13]6752; GFX900-NEXT: ;;#ASMEND6753; GFX900-NEXT: ;;#ASMSTART6754; GFX900-NEXT: ; def s[12:17]6755; GFX900-NEXT: ;;#ASMEND6756; GFX900-NEXT: s_mov_b32 s10, s146757; GFX900-NEXT: s_mov_b32 s11, s156758; GFX900-NEXT: s_mov_b32 s12, s146759; GFX900-NEXT: s_mov_b32 s13, s156760; GFX900-NEXT: ;;#ASMSTART6761; GFX900-NEXT: ; use s[8:13]6762; GFX900-NEXT: ;;#ASMEND6763; GFX900-NEXT: s_setpc_b64 s[30:31]6764;6765; GFX90A-LABEL: s_shuffle_v3p0_v3p0__0_4_4:6766; GFX90A: ; %bb.0:6767; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6768; GFX90A-NEXT: ;;#ASMSTART6769; GFX90A-NEXT: ; def s[8:13]6770; GFX90A-NEXT: ;;#ASMEND6771; GFX90A-NEXT: ;;#ASMSTART6772; GFX90A-NEXT: ; def s[12:17]6773; GFX90A-NEXT: ;;#ASMEND6774; GFX90A-NEXT: s_mov_b32 s10, s146775; GFX90A-NEXT: s_mov_b32 s11, s156776; GFX90A-NEXT: s_mov_b32 s12, s146777; GFX90A-NEXT: s_mov_b32 s13, s156778; GFX90A-NEXT: ;;#ASMSTART6779; GFX90A-NEXT: ; use s[8:13]6780; GFX90A-NEXT: ;;#ASMEND6781; GFX90A-NEXT: s_setpc_b64 s[30:31]6782;6783; GFX942-LABEL: s_shuffle_v3p0_v3p0__0_4_4:6784; GFX942: ; %bb.0:6785; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6786; GFX942-NEXT: ;;#ASMSTART6787; GFX942-NEXT: ; def s[8:13]6788; GFX942-NEXT: ;;#ASMEND6789; GFX942-NEXT: ;;#ASMSTART6790; GFX942-NEXT: ; def s[0:5]6791; GFX942-NEXT: ;;#ASMEND6792; GFX942-NEXT: s_mov_b32 s10, s26793; GFX942-NEXT: s_mov_b32 s11, s36794; GFX942-NEXT: s_mov_b32 s12, s26795; GFX942-NEXT: s_mov_b32 s13, s36796; GFX942-NEXT: ;;#ASMSTART6797; GFX942-NEXT: ; use s[8:13]6798; GFX942-NEXT: ;;#ASMEND6799; GFX942-NEXT: s_setpc_b64 s[30:31]6800 %vec0 = call <3 x ptr> asm "; def $0", "=s"()6801 %vec1 = call <3 x ptr> asm "; def $0", "=s"()6802 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 0, i32 4, i32 4>6803 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)6804 ret void6805}6806 6807define void @s_shuffle_v3p0_v3p0__1_4_4() {6808; GFX900-LABEL: s_shuffle_v3p0_v3p0__1_4_4:6809; GFX900: ; %bb.0:6810; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6811; GFX900-NEXT: ;;#ASMSTART6812; GFX900-NEXT: ; def s[4:9]6813; GFX900-NEXT: ;;#ASMEND6814; GFX900-NEXT: ;;#ASMSTART6815; GFX900-NEXT: ; def s[8:13]6816; GFX900-NEXT: ;;#ASMEND6817; GFX900-NEXT: s_mov_b32 s8, s66818; GFX900-NEXT: s_mov_b32 s9, s76819; GFX900-NEXT: s_mov_b32 s12, s106820; GFX900-NEXT: s_mov_b32 s13, s116821; GFX900-NEXT: ;;#ASMSTART6822; GFX900-NEXT: ; use s[8:13]6823; GFX900-NEXT: ;;#ASMEND6824; GFX900-NEXT: s_setpc_b64 s[30:31]6825;6826; GFX90A-LABEL: s_shuffle_v3p0_v3p0__1_4_4:6827; GFX90A: ; %bb.0:6828; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6829; GFX90A-NEXT: ;;#ASMSTART6830; GFX90A-NEXT: ; def s[4:9]6831; GFX90A-NEXT: ;;#ASMEND6832; GFX90A-NEXT: ;;#ASMSTART6833; GFX90A-NEXT: ; def s[8:13]6834; GFX90A-NEXT: ;;#ASMEND6835; GFX90A-NEXT: s_mov_b32 s8, s66836; GFX90A-NEXT: s_mov_b32 s9, s76837; GFX90A-NEXT: s_mov_b32 s12, s106838; GFX90A-NEXT: s_mov_b32 s13, s116839; GFX90A-NEXT: ;;#ASMSTART6840; GFX90A-NEXT: ; use s[8:13]6841; GFX90A-NEXT: ;;#ASMEND6842; GFX90A-NEXT: s_setpc_b64 s[30:31]6843;6844; GFX942-LABEL: s_shuffle_v3p0_v3p0__1_4_4:6845; GFX942: ; %bb.0:6846; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6847; GFX942-NEXT: ;;#ASMSTART6848; GFX942-NEXT: ; def s[8:13]6849; GFX942-NEXT: ;;#ASMEND6850; GFX942-NEXT: ;;#ASMSTART6851; GFX942-NEXT: ; def s[0:5]6852; GFX942-NEXT: ;;#ASMEND6853; GFX942-NEXT: s_mov_b32 s8, s26854; GFX942-NEXT: s_mov_b32 s9, s36855; GFX942-NEXT: s_mov_b32 s12, s106856; GFX942-NEXT: s_mov_b32 s13, s116857; GFX942-NEXT: ;;#ASMSTART6858; GFX942-NEXT: ; use s[8:13]6859; GFX942-NEXT: ;;#ASMEND6860; GFX942-NEXT: s_setpc_b64 s[30:31]6861 %vec0 = call <3 x ptr> asm "; def $0", "=s"()6862 %vec1 = call <3 x ptr> asm "; def $0", "=s"()6863 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 1, i32 4, i32 4>6864 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)6865 ret void6866}6867 6868define void @s_shuffle_v3p0_v3p0__2_4_4() {6869; GFX900-LABEL: s_shuffle_v3p0_v3p0__2_4_4:6870; GFX900: ; %bb.0:6871; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6872; GFX900-NEXT: ;;#ASMSTART6873; GFX900-NEXT: ; def s[12:17]6874; GFX900-NEXT: ;;#ASMEND6875; GFX900-NEXT: ;;#ASMSTART6876; GFX900-NEXT: ; def s[4:9]6877; GFX900-NEXT: ;;#ASMEND6878; GFX900-NEXT: s_mov_b32 s10, s146879; GFX900-NEXT: s_mov_b32 s11, s156880; GFX900-NEXT: s_mov_b32 s12, s146881; GFX900-NEXT: s_mov_b32 s13, s156882; GFX900-NEXT: ;;#ASMSTART6883; GFX900-NEXT: ; use s[8:13]6884; GFX900-NEXT: ;;#ASMEND6885; GFX900-NEXT: s_setpc_b64 s[30:31]6886;6887; GFX90A-LABEL: s_shuffle_v3p0_v3p0__2_4_4:6888; GFX90A: ; %bb.0:6889; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6890; GFX90A-NEXT: ;;#ASMSTART6891; GFX90A-NEXT: ; def s[12:17]6892; GFX90A-NEXT: ;;#ASMEND6893; GFX90A-NEXT: ;;#ASMSTART6894; GFX90A-NEXT: ; def s[4:9]6895; GFX90A-NEXT: ;;#ASMEND6896; GFX90A-NEXT: s_mov_b32 s10, s146897; GFX90A-NEXT: s_mov_b32 s11, s156898; GFX90A-NEXT: s_mov_b32 s12, s146899; GFX90A-NEXT: s_mov_b32 s13, s156900; GFX90A-NEXT: ;;#ASMSTART6901; GFX90A-NEXT: ; use s[8:13]6902; GFX90A-NEXT: ;;#ASMEND6903; GFX90A-NEXT: s_setpc_b64 s[30:31]6904;6905; GFX942-LABEL: s_shuffle_v3p0_v3p0__2_4_4:6906; GFX942: ; %bb.0:6907; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6908; GFX942-NEXT: ;;#ASMSTART6909; GFX942-NEXT: ; def s[4:9]6910; GFX942-NEXT: ;;#ASMEND6911; GFX942-NEXT: s_nop 06912; GFX942-NEXT: ;;#ASMSTART6913; GFX942-NEXT: ; def s[0:5]6914; GFX942-NEXT: ;;#ASMEND6915; GFX942-NEXT: s_mov_b32 s10, s26916; GFX942-NEXT: s_mov_b32 s11, s36917; GFX942-NEXT: s_mov_b32 s12, s26918; GFX942-NEXT: s_mov_b32 s13, s36919; GFX942-NEXT: ;;#ASMSTART6920; GFX942-NEXT: ; use s[8:13]6921; GFX942-NEXT: ;;#ASMEND6922; GFX942-NEXT: s_setpc_b64 s[30:31]6923 %vec0 = call <3 x ptr> asm "; def $0", "=s"()6924 %vec1 = call <3 x ptr> asm "; def $0", "=s"()6925 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 2, i32 4, i32 4>6926 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)6927 ret void6928}6929 6930define void @s_shuffle_v3p0_v3p0__3_4_4() {6931; GFX9-LABEL: s_shuffle_v3p0_v3p0__3_4_4:6932; GFX9: ; %bb.0:6933; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6934; GFX9-NEXT: ;;#ASMSTART6935; GFX9-NEXT: ; def s[8:13]6936; GFX9-NEXT: ;;#ASMEND6937; GFX9-NEXT: s_mov_b32 s12, s106938; GFX9-NEXT: s_mov_b32 s13, s116939; GFX9-NEXT: ;;#ASMSTART6940; GFX9-NEXT: ; use s[8:13]6941; GFX9-NEXT: ;;#ASMEND6942; GFX9-NEXT: s_setpc_b64 s[30:31]6943 %vec0 = call <3 x ptr> asm "; def $0", "=s"()6944 %vec1 = call <3 x ptr> asm "; def $0", "=s"()6945 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 3, i32 4, i32 4>6946 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)6947 ret void6948}6949 6950define void @s_shuffle_v3p0_v3p0__4_4_4() {6951; GFX9-LABEL: s_shuffle_v3p0_v3p0__4_4_4:6952; GFX9: ; %bb.0:6953; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6954; GFX9-NEXT: ;;#ASMSTART6955; GFX9-NEXT: ; def s[8:13]6956; GFX9-NEXT: ;;#ASMEND6957; GFX9-NEXT: s_mov_b32 s8, s106958; GFX9-NEXT: s_mov_b32 s9, s116959; GFX9-NEXT: s_mov_b32 s12, s106960; GFX9-NEXT: s_mov_b32 s13, s116961; GFX9-NEXT: ;;#ASMSTART6962; GFX9-NEXT: ; use s[8:13]6963; GFX9-NEXT: ;;#ASMEND6964; GFX9-NEXT: s_setpc_b64 s[30:31]6965 %vec0 = call <3 x ptr> asm "; def $0", "=s"()6966 %vec1 = call <3 x ptr> asm "; def $0", "=s"()6967 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 4, i32 4, i32 4>6968 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)6969 ret void6970}6971 6972define void @s_shuffle_v3p0_v3p0__5_4_4() {6973; GFX9-LABEL: s_shuffle_v3p0_v3p0__5_4_4:6974; GFX9: ; %bb.0:6975; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6976; GFX9-NEXT: ;;#ASMSTART6977; GFX9-NEXT: ; def s[4:9]6978; GFX9-NEXT: ;;#ASMEND6979; GFX9-NEXT: s_mov_b32 s10, s66980; GFX9-NEXT: s_mov_b32 s11, s76981; GFX9-NEXT: s_mov_b32 s12, s66982; GFX9-NEXT: s_mov_b32 s13, s76983; GFX9-NEXT: ;;#ASMSTART6984; GFX9-NEXT: ; use s[8:13]6985; GFX9-NEXT: ;;#ASMEND6986; GFX9-NEXT: s_setpc_b64 s[30:31]6987 %vec0 = call <3 x ptr> asm "; def $0", "=s"()6988 %vec1 = call <3 x ptr> asm "; def $0", "=s"()6989 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 4, i32 4>6990 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)6991 ret void6992}6993 6994define void @s_shuffle_v3p0_v3p0__5_u_4() {6995; GFX9-LABEL: s_shuffle_v3p0_v3p0__5_u_4:6996; GFX9: ; %bb.0:6997; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)6998; GFX9-NEXT: ;;#ASMSTART6999; GFX9-NEXT: ; def s[4:9]7000; GFX9-NEXT: ;;#ASMEND7001; GFX9-NEXT: s_mov_b32 s12, s67002; GFX9-NEXT: s_mov_b32 s13, s77003; GFX9-NEXT: ;;#ASMSTART7004; GFX9-NEXT: ; use s[8:13]7005; GFX9-NEXT: ;;#ASMEND7006; GFX9-NEXT: s_setpc_b64 s[30:31]7007 %vec0 = call <3 x ptr> asm "; def $0", "=s"()7008 %vec1 = call <3 x ptr> asm "; def $0", "=s"()7009 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 poison, i32 4>7010 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)7011 ret void7012}7013 7014define void @s_shuffle_v3p0_v3p0__5_0_4() {7015; GFX900-LABEL: s_shuffle_v3p0_v3p0__5_0_4:7016; GFX900: ; %bb.0:7017; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7018; GFX900-NEXT: ;;#ASMSTART7019; GFX900-NEXT: ; def s[12:17]7020; GFX900-NEXT: ;;#ASMEND7021; GFX900-NEXT: ;;#ASMSTART7022; GFX900-NEXT: ; def s[4:9]7023; GFX900-NEXT: ;;#ASMEND7024; GFX900-NEXT: s_mov_b32 s10, s127025; GFX900-NEXT: s_mov_b32 s11, s137026; GFX900-NEXT: s_mov_b32 s12, s67027; GFX900-NEXT: s_mov_b32 s13, s77028; GFX900-NEXT: ;;#ASMSTART7029; GFX900-NEXT: ; use s[8:13]7030; GFX900-NEXT: ;;#ASMEND7031; GFX900-NEXT: s_setpc_b64 s[30:31]7032;7033; GFX90A-LABEL: s_shuffle_v3p0_v3p0__5_0_4:7034; GFX90A: ; %bb.0:7035; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7036; GFX90A-NEXT: ;;#ASMSTART7037; GFX90A-NEXT: ; def s[12:17]7038; GFX90A-NEXT: ;;#ASMEND7039; GFX90A-NEXT: ;;#ASMSTART7040; GFX90A-NEXT: ; def s[4:9]7041; GFX90A-NEXT: ;;#ASMEND7042; GFX90A-NEXT: s_mov_b32 s10, s127043; GFX90A-NEXT: s_mov_b32 s11, s137044; GFX90A-NEXT: s_mov_b32 s12, s67045; GFX90A-NEXT: s_mov_b32 s13, s77046; GFX90A-NEXT: ;;#ASMSTART7047; GFX90A-NEXT: ; use s[8:13]7048; GFX90A-NEXT: ;;#ASMEND7049; GFX90A-NEXT: s_setpc_b64 s[30:31]7050;7051; GFX942-LABEL: s_shuffle_v3p0_v3p0__5_0_4:7052; GFX942: ; %bb.0:7053; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7054; GFX942-NEXT: ;;#ASMSTART7055; GFX942-NEXT: ; def s[0:5]7056; GFX942-NEXT: ;;#ASMEND7057; GFX942-NEXT: s_mov_b32 s10, s07058; GFX942-NEXT: ;;#ASMSTART7059; GFX942-NEXT: ; def s[4:9]7060; GFX942-NEXT: ;;#ASMEND7061; GFX942-NEXT: s_mov_b32 s11, s17062; GFX942-NEXT: s_mov_b32 s12, s67063; GFX942-NEXT: s_mov_b32 s13, s77064; GFX942-NEXT: ;;#ASMSTART7065; GFX942-NEXT: ; use s[8:13]7066; GFX942-NEXT: ;;#ASMEND7067; GFX942-NEXT: s_setpc_b64 s[30:31]7068 %vec0 = call <3 x ptr> asm "; def $0", "=s"()7069 %vec1 = call <3 x ptr> asm "; def $0", "=s"()7070 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 0, i32 4>7071 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)7072 ret void7073}7074 7075define void @s_shuffle_v3p0_v3p0__5_1_4() {7076; GFX900-LABEL: s_shuffle_v3p0_v3p0__5_1_4:7077; GFX900: ; %bb.0:7078; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7079; GFX900-NEXT: ;;#ASMSTART7080; GFX900-NEXT: ; def s[8:13]7081; GFX900-NEXT: ;;#ASMEND7082; GFX900-NEXT: ;;#ASMSTART7083; GFX900-NEXT: ; def s[4:9]7084; GFX900-NEXT: ;;#ASMEND7085; GFX900-NEXT: s_mov_b32 s12, s67086; GFX900-NEXT: s_mov_b32 s13, s77087; GFX900-NEXT: ;;#ASMSTART7088; GFX900-NEXT: ; use s[8:13]7089; GFX900-NEXT: ;;#ASMEND7090; GFX900-NEXT: s_setpc_b64 s[30:31]7091;7092; GFX90A-LABEL: s_shuffle_v3p0_v3p0__5_1_4:7093; GFX90A: ; %bb.0:7094; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7095; GFX90A-NEXT: ;;#ASMSTART7096; GFX90A-NEXT: ; def s[8:13]7097; GFX90A-NEXT: ;;#ASMEND7098; GFX90A-NEXT: ;;#ASMSTART7099; GFX90A-NEXT: ; def s[4:9]7100; GFX90A-NEXT: ;;#ASMEND7101; GFX90A-NEXT: s_mov_b32 s12, s67102; GFX90A-NEXT: s_mov_b32 s13, s77103; GFX90A-NEXT: ;;#ASMSTART7104; GFX90A-NEXT: ; use s[8:13]7105; GFX90A-NEXT: ;;#ASMEND7106; GFX90A-NEXT: s_setpc_b64 s[30:31]7107;7108; GFX942-LABEL: s_shuffle_v3p0_v3p0__5_1_4:7109; GFX942: ; %bb.0:7110; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7111; GFX942-NEXT: ;;#ASMSTART7112; GFX942-NEXT: ; def s[8:13]7113; GFX942-NEXT: ;;#ASMEND7114; GFX942-NEXT: s_nop 07115; GFX942-NEXT: ;;#ASMSTART7116; GFX942-NEXT: ; def s[4:9]7117; GFX942-NEXT: ;;#ASMEND7118; GFX942-NEXT: s_mov_b32 s12, s67119; GFX942-NEXT: s_mov_b32 s13, s77120; GFX942-NEXT: ;;#ASMSTART7121; GFX942-NEXT: ; use s[8:13]7122; GFX942-NEXT: ;;#ASMEND7123; GFX942-NEXT: s_setpc_b64 s[30:31]7124 %vec0 = call <3 x ptr> asm "; def $0", "=s"()7125 %vec1 = call <3 x ptr> asm "; def $0", "=s"()7126 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 1, i32 4>7127 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)7128 ret void7129}7130 7131define void @s_shuffle_v3p0_v3p0__5_2_4() {7132; GFX900-LABEL: s_shuffle_v3p0_v3p0__5_2_4:7133; GFX900: ; %bb.0:7134; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7135; GFX900-NEXT: ;;#ASMSTART7136; GFX900-NEXT: ; def s[8:13]7137; GFX900-NEXT: ;;#ASMEND7138; GFX900-NEXT: ;;#ASMSTART7139; GFX900-NEXT: ; def s[4:9]7140; GFX900-NEXT: ;;#ASMEND7141; GFX900-NEXT: s_mov_b32 s10, s127142; GFX900-NEXT: s_mov_b32 s11, s137143; GFX900-NEXT: s_mov_b32 s12, s67144; GFX900-NEXT: s_mov_b32 s13, s77145; GFX900-NEXT: ;;#ASMSTART7146; GFX900-NEXT: ; use s[8:13]7147; GFX900-NEXT: ;;#ASMEND7148; GFX900-NEXT: s_setpc_b64 s[30:31]7149;7150; GFX90A-LABEL: s_shuffle_v3p0_v3p0__5_2_4:7151; GFX90A: ; %bb.0:7152; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7153; GFX90A-NEXT: ;;#ASMSTART7154; GFX90A-NEXT: ; def s[8:13]7155; GFX90A-NEXT: ;;#ASMEND7156; GFX90A-NEXT: ;;#ASMSTART7157; GFX90A-NEXT: ; def s[4:9]7158; GFX90A-NEXT: ;;#ASMEND7159; GFX90A-NEXT: s_mov_b32 s10, s127160; GFX90A-NEXT: s_mov_b32 s11, s137161; GFX90A-NEXT: s_mov_b32 s12, s67162; GFX90A-NEXT: s_mov_b32 s13, s77163; GFX90A-NEXT: ;;#ASMSTART7164; GFX90A-NEXT: ; use s[8:13]7165; GFX90A-NEXT: ;;#ASMEND7166; GFX90A-NEXT: s_setpc_b64 s[30:31]7167;7168; GFX942-LABEL: s_shuffle_v3p0_v3p0__5_2_4:7169; GFX942: ; %bb.0:7170; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7171; GFX942-NEXT: ;;#ASMSTART7172; GFX942-NEXT: ; def s[8:13]7173; GFX942-NEXT: ;;#ASMEND7174; GFX942-NEXT: s_mov_b32 s10, s127175; GFX942-NEXT: ;;#ASMSTART7176; GFX942-NEXT: ; def s[4:9]7177; GFX942-NEXT: ;;#ASMEND7178; GFX942-NEXT: s_mov_b32 s11, s137179; GFX942-NEXT: s_mov_b32 s12, s67180; GFX942-NEXT: s_mov_b32 s13, s77181; GFX942-NEXT: ;;#ASMSTART7182; GFX942-NEXT: ; use s[8:13]7183; GFX942-NEXT: ;;#ASMEND7184; GFX942-NEXT: s_setpc_b64 s[30:31]7185 %vec0 = call <3 x ptr> asm "; def $0", "=s"()7186 %vec1 = call <3 x ptr> asm "; def $0", "=s"()7187 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 2, i32 4>7188 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)7189 ret void7190}7191 7192define void @s_shuffle_v3p0_v3p0__5_3_4() {7193; GFX9-LABEL: s_shuffle_v3p0_v3p0__5_3_4:7194; GFX9: ; %bb.0:7195; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7196; GFX9-NEXT: ;;#ASMSTART7197; GFX9-NEXT: ; def s[4:9]7198; GFX9-NEXT: ;;#ASMEND7199; GFX9-NEXT: s_mov_b32 s10, s47200; GFX9-NEXT: s_mov_b32 s11, s57201; GFX9-NEXT: s_mov_b32 s12, s67202; GFX9-NEXT: s_mov_b32 s13, s77203; GFX9-NEXT: ;;#ASMSTART7204; GFX9-NEXT: ; use s[8:13]7205; GFX9-NEXT: ;;#ASMEND7206; GFX9-NEXT: s_setpc_b64 s[30:31]7207 %vec0 = call <3 x ptr> asm "; def $0", "=s"()7208 %vec1 = call <3 x ptr> asm "; def $0", "=s"()7209 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 3, i32 4>7210 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)7211 ret void7212}7213 7214define void @s_shuffle_v3p0_v3p0__u_5_5() {7215; GFX9-LABEL: s_shuffle_v3p0_v3p0__u_5_5:7216; GFX9: ; %bb.0:7217; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7218; GFX9-NEXT: ;;#ASMSTART7219; GFX9-NEXT: ; def s[8:13]7220; GFX9-NEXT: ;;#ASMEND7221; GFX9-NEXT: s_mov_b32 s10, s127222; GFX9-NEXT: s_mov_b32 s11, s137223; GFX9-NEXT: ;;#ASMSTART7224; GFX9-NEXT: ; use s[8:13]7225; GFX9-NEXT: ;;#ASMEND7226; GFX9-NEXT: s_setpc_b64 s[30:31]7227 %vec0 = call <3 x ptr> asm "; def $0", "=s"()7228 %vec1 = call <3 x ptr> asm "; def $0", "=s"()7229 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 poison, i32 5, i32 5>7230 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)7231 ret void7232}7233 7234define void @s_shuffle_v3p0_v3p0__0_5_5() {7235; GFX900-LABEL: s_shuffle_v3p0_v3p0__0_5_5:7236; GFX900: ; %bb.0:7237; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7238; GFX900-NEXT: ;;#ASMSTART7239; GFX900-NEXT: ; def s[8:13]7240; GFX900-NEXT: ;;#ASMEND7241; GFX900-NEXT: ;;#ASMSTART7242; GFX900-NEXT: ; def s[12:17]7243; GFX900-NEXT: ;;#ASMEND7244; GFX900-NEXT: s_mov_b32 s10, s167245; GFX900-NEXT: s_mov_b32 s11, s177246; GFX900-NEXT: s_mov_b32 s12, s167247; GFX900-NEXT: s_mov_b32 s13, s177248; GFX900-NEXT: ;;#ASMSTART7249; GFX900-NEXT: ; use s[8:13]7250; GFX900-NEXT: ;;#ASMEND7251; GFX900-NEXT: s_setpc_b64 s[30:31]7252;7253; GFX90A-LABEL: s_shuffle_v3p0_v3p0__0_5_5:7254; GFX90A: ; %bb.0:7255; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7256; GFX90A-NEXT: ;;#ASMSTART7257; GFX90A-NEXT: ; def s[8:13]7258; GFX90A-NEXT: ;;#ASMEND7259; GFX90A-NEXT: ;;#ASMSTART7260; GFX90A-NEXT: ; def s[12:17]7261; GFX90A-NEXT: ;;#ASMEND7262; GFX90A-NEXT: s_mov_b32 s10, s167263; GFX90A-NEXT: s_mov_b32 s11, s177264; GFX90A-NEXT: s_mov_b32 s12, s167265; GFX90A-NEXT: s_mov_b32 s13, s177266; GFX90A-NEXT: ;;#ASMSTART7267; GFX90A-NEXT: ; use s[8:13]7268; GFX90A-NEXT: ;;#ASMEND7269; GFX90A-NEXT: s_setpc_b64 s[30:31]7270;7271; GFX942-LABEL: s_shuffle_v3p0_v3p0__0_5_5:7272; GFX942: ; %bb.0:7273; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7274; GFX942-NEXT: ;;#ASMSTART7275; GFX942-NEXT: ; def s[8:13]7276; GFX942-NEXT: ;;#ASMEND7277; GFX942-NEXT: ;;#ASMSTART7278; GFX942-NEXT: ; def s[0:5]7279; GFX942-NEXT: ;;#ASMEND7280; GFX942-NEXT: s_mov_b32 s10, s47281; GFX942-NEXT: s_mov_b32 s11, s57282; GFX942-NEXT: s_mov_b32 s12, s47283; GFX942-NEXT: s_mov_b32 s13, s57284; GFX942-NEXT: ;;#ASMSTART7285; GFX942-NEXT: ; use s[8:13]7286; GFX942-NEXT: ;;#ASMEND7287; GFX942-NEXT: s_setpc_b64 s[30:31]7288 %vec0 = call <3 x ptr> asm "; def $0", "=s"()7289 %vec1 = call <3 x ptr> asm "; def $0", "=s"()7290 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 0, i32 5, i32 5>7291 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)7292 ret void7293}7294 7295define void @s_shuffle_v3p0_v3p0__1_5_5() {7296; GFX900-LABEL: s_shuffle_v3p0_v3p0__1_5_5:7297; GFX900: ; %bb.0:7298; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7299; GFX900-NEXT: ;;#ASMSTART7300; GFX900-NEXT: ; def s[4:9]7301; GFX900-NEXT: ;;#ASMEND7302; GFX900-NEXT: ;;#ASMSTART7303; GFX900-NEXT: ; def s[8:13]7304; GFX900-NEXT: ;;#ASMEND7305; GFX900-NEXT: s_mov_b32 s8, s67306; GFX900-NEXT: s_mov_b32 s9, s77307; GFX900-NEXT: s_mov_b32 s10, s127308; GFX900-NEXT: s_mov_b32 s11, s137309; GFX900-NEXT: ;;#ASMSTART7310; GFX900-NEXT: ; use s[8:13]7311; GFX900-NEXT: ;;#ASMEND7312; GFX900-NEXT: s_setpc_b64 s[30:31]7313;7314; GFX90A-LABEL: s_shuffle_v3p0_v3p0__1_5_5:7315; GFX90A: ; %bb.0:7316; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7317; GFX90A-NEXT: ;;#ASMSTART7318; GFX90A-NEXT: ; def s[4:9]7319; GFX90A-NEXT: ;;#ASMEND7320; GFX90A-NEXT: ;;#ASMSTART7321; GFX90A-NEXT: ; def s[8:13]7322; GFX90A-NEXT: ;;#ASMEND7323; GFX90A-NEXT: s_mov_b32 s8, s67324; GFX90A-NEXT: s_mov_b32 s9, s77325; GFX90A-NEXT: s_mov_b32 s10, s127326; GFX90A-NEXT: s_mov_b32 s11, s137327; GFX90A-NEXT: ;;#ASMSTART7328; GFX90A-NEXT: ; use s[8:13]7329; GFX90A-NEXT: ;;#ASMEND7330; GFX90A-NEXT: s_setpc_b64 s[30:31]7331;7332; GFX942-LABEL: s_shuffle_v3p0_v3p0__1_5_5:7333; GFX942: ; %bb.0:7334; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7335; GFX942-NEXT: ;;#ASMSTART7336; GFX942-NEXT: ; def s[8:13]7337; GFX942-NEXT: ;;#ASMEND7338; GFX942-NEXT: ;;#ASMSTART7339; GFX942-NEXT: ; def s[0:5]7340; GFX942-NEXT: ;;#ASMEND7341; GFX942-NEXT: s_mov_b32 s8, s27342; GFX942-NEXT: s_mov_b32 s9, s37343; GFX942-NEXT: s_mov_b32 s10, s127344; GFX942-NEXT: s_mov_b32 s11, s137345; GFX942-NEXT: ;;#ASMSTART7346; GFX942-NEXT: ; use s[8:13]7347; GFX942-NEXT: ;;#ASMEND7348; GFX942-NEXT: s_setpc_b64 s[30:31]7349 %vec0 = call <3 x ptr> asm "; def $0", "=s"()7350 %vec1 = call <3 x ptr> asm "; def $0", "=s"()7351 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 1, i32 5, i32 5>7352 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)7353 ret void7354}7355 7356define void @s_shuffle_v3p0_v3p0__2_5_5() {7357; GFX900-LABEL: s_shuffle_v3p0_v3p0__2_5_5:7358; GFX900: ; %bb.0:7359; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7360; GFX900-NEXT: ;;#ASMSTART7361; GFX900-NEXT: ; def s[12:17]7362; GFX900-NEXT: ;;#ASMEND7363; GFX900-NEXT: ;;#ASMSTART7364; GFX900-NEXT: ; def s[4:9]7365; GFX900-NEXT: ;;#ASMEND7366; GFX900-NEXT: s_mov_b32 s10, s167367; GFX900-NEXT: s_mov_b32 s11, s177368; GFX900-NEXT: s_mov_b32 s12, s167369; GFX900-NEXT: s_mov_b32 s13, s177370; GFX900-NEXT: ;;#ASMSTART7371; GFX900-NEXT: ; use s[8:13]7372; GFX900-NEXT: ;;#ASMEND7373; GFX900-NEXT: s_setpc_b64 s[30:31]7374;7375; GFX90A-LABEL: s_shuffle_v3p0_v3p0__2_5_5:7376; GFX90A: ; %bb.0:7377; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7378; GFX90A-NEXT: ;;#ASMSTART7379; GFX90A-NEXT: ; def s[12:17]7380; GFX90A-NEXT: ;;#ASMEND7381; GFX90A-NEXT: ;;#ASMSTART7382; GFX90A-NEXT: ; def s[4:9]7383; GFX90A-NEXT: ;;#ASMEND7384; GFX90A-NEXT: s_mov_b32 s10, s167385; GFX90A-NEXT: s_mov_b32 s11, s177386; GFX90A-NEXT: s_mov_b32 s12, s167387; GFX90A-NEXT: s_mov_b32 s13, s177388; GFX90A-NEXT: ;;#ASMSTART7389; GFX90A-NEXT: ; use s[8:13]7390; GFX90A-NEXT: ;;#ASMEND7391; GFX90A-NEXT: s_setpc_b64 s[30:31]7392;7393; GFX942-LABEL: s_shuffle_v3p0_v3p0__2_5_5:7394; GFX942: ; %bb.0:7395; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7396; GFX942-NEXT: ;;#ASMSTART7397; GFX942-NEXT: ; def s[4:9]7398; GFX942-NEXT: ;;#ASMEND7399; GFX942-NEXT: s_nop 07400; GFX942-NEXT: ;;#ASMSTART7401; GFX942-NEXT: ; def s[0:5]7402; GFX942-NEXT: ;;#ASMEND7403; GFX942-NEXT: s_mov_b32 s10, s47404; GFX942-NEXT: s_mov_b32 s11, s57405; GFX942-NEXT: s_mov_b32 s12, s47406; GFX942-NEXT: s_mov_b32 s13, s57407; GFX942-NEXT: ;;#ASMSTART7408; GFX942-NEXT: ; use s[8:13]7409; GFX942-NEXT: ;;#ASMEND7410; GFX942-NEXT: s_setpc_b64 s[30:31]7411 %vec0 = call <3 x ptr> asm "; def $0", "=s"()7412 %vec1 = call <3 x ptr> asm "; def $0", "=s"()7413 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 2, i32 5, i32 5>7414 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)7415 ret void7416}7417 7418define void @s_shuffle_v3p0_v3p0__3_5_5() {7419; GFX9-LABEL: s_shuffle_v3p0_v3p0__3_5_5:7420; GFX9: ; %bb.0:7421; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7422; GFX9-NEXT: ;;#ASMSTART7423; GFX9-NEXT: ; def s[8:13]7424; GFX9-NEXT: ;;#ASMEND7425; GFX9-NEXT: s_mov_b32 s10, s127426; GFX9-NEXT: s_mov_b32 s11, s137427; GFX9-NEXT: ;;#ASMSTART7428; GFX9-NEXT: ; use s[8:13]7429; GFX9-NEXT: ;;#ASMEND7430; GFX9-NEXT: s_setpc_b64 s[30:31]7431 %vec0 = call <3 x ptr> asm "; def $0", "=s"()7432 %vec1 = call <3 x ptr> asm "; def $0", "=s"()7433 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 3, i32 5, i32 5>7434 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)7435 ret void7436}7437 7438define void @s_shuffle_v3p0_v3p0__4_5_5() {7439; GFX9-LABEL: s_shuffle_v3p0_v3p0__4_5_5:7440; GFX9: ; %bb.0:7441; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7442; GFX9-NEXT: ;;#ASMSTART7443; GFX9-NEXT: ; def s[8:13]7444; GFX9-NEXT: ;;#ASMEND7445; GFX9-NEXT: s_mov_b32 s8, s107446; GFX9-NEXT: s_mov_b32 s9, s117447; GFX9-NEXT: s_mov_b32 s10, s127448; GFX9-NEXT: s_mov_b32 s11, s137449; GFX9-NEXT: ;;#ASMSTART7450; GFX9-NEXT: ; use s[8:13]7451; GFX9-NEXT: ;;#ASMEND7452; GFX9-NEXT: s_setpc_b64 s[30:31]7453 %vec0 = call <3 x ptr> asm "; def $0", "=s"()7454 %vec1 = call <3 x ptr> asm "; def $0", "=s"()7455 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 4, i32 5, i32 5>7456 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)7457 ret void7458}7459 7460define void @s_shuffle_v3p0_v3p0__5_u_5() {7461; GFX9-LABEL: s_shuffle_v3p0_v3p0__5_u_5:7462; GFX9: ; %bb.0:7463; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7464; GFX9-NEXT: ;;#ASMSTART7465; GFX9-NEXT: ; def s[4:9]7466; GFX9-NEXT: ;;#ASMEND7467; GFX9-NEXT: s_mov_b32 s12, s87468; GFX9-NEXT: s_mov_b32 s13, s97469; GFX9-NEXT: ;;#ASMSTART7470; GFX9-NEXT: ; use s[8:13]7471; GFX9-NEXT: ;;#ASMEND7472; GFX9-NEXT: s_setpc_b64 s[30:31]7473 %vec0 = call <3 x ptr> asm "; def $0", "=s"()7474 %vec1 = call <3 x ptr> asm "; def $0", "=s"()7475 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 poison, i32 5>7476 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)7477 ret void7478}7479 7480define void @s_shuffle_v3p0_v3p0__5_0_5() {7481; GFX900-LABEL: s_shuffle_v3p0_v3p0__5_0_5:7482; GFX900: ; %bb.0:7483; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7484; GFX900-NEXT: ;;#ASMSTART7485; GFX900-NEXT: ; def s[12:17]7486; GFX900-NEXT: ;;#ASMEND7487; GFX900-NEXT: ;;#ASMSTART7488; GFX900-NEXT: ; def s[4:9]7489; GFX900-NEXT: ;;#ASMEND7490; GFX900-NEXT: s_mov_b32 s10, s127491; GFX900-NEXT: s_mov_b32 s11, s137492; GFX900-NEXT: s_mov_b32 s12, s87493; GFX900-NEXT: s_mov_b32 s13, s97494; GFX900-NEXT: ;;#ASMSTART7495; GFX900-NEXT: ; use s[8:13]7496; GFX900-NEXT: ;;#ASMEND7497; GFX900-NEXT: s_setpc_b64 s[30:31]7498;7499; GFX90A-LABEL: s_shuffle_v3p0_v3p0__5_0_5:7500; GFX90A: ; %bb.0:7501; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7502; GFX90A-NEXT: ;;#ASMSTART7503; GFX90A-NEXT: ; def s[12:17]7504; GFX90A-NEXT: ;;#ASMEND7505; GFX90A-NEXT: ;;#ASMSTART7506; GFX90A-NEXT: ; def s[4:9]7507; GFX90A-NEXT: ;;#ASMEND7508; GFX90A-NEXT: s_mov_b32 s10, s127509; GFX90A-NEXT: s_mov_b32 s11, s137510; GFX90A-NEXT: s_mov_b32 s12, s87511; GFX90A-NEXT: s_mov_b32 s13, s97512; GFX90A-NEXT: ;;#ASMSTART7513; GFX90A-NEXT: ; use s[8:13]7514; GFX90A-NEXT: ;;#ASMEND7515; GFX90A-NEXT: s_setpc_b64 s[30:31]7516;7517; GFX942-LABEL: s_shuffle_v3p0_v3p0__5_0_5:7518; GFX942: ; %bb.0:7519; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7520; GFX942-NEXT: ;;#ASMSTART7521; GFX942-NEXT: ; def s[0:5]7522; GFX942-NEXT: ;;#ASMEND7523; GFX942-NEXT: s_mov_b32 s10, s07524; GFX942-NEXT: ;;#ASMSTART7525; GFX942-NEXT: ; def s[4:9]7526; GFX942-NEXT: ;;#ASMEND7527; GFX942-NEXT: s_mov_b32 s11, s17528; GFX942-NEXT: s_mov_b32 s12, s87529; GFX942-NEXT: s_mov_b32 s13, s97530; GFX942-NEXT: ;;#ASMSTART7531; GFX942-NEXT: ; use s[8:13]7532; GFX942-NEXT: ;;#ASMEND7533; GFX942-NEXT: s_setpc_b64 s[30:31]7534 %vec0 = call <3 x ptr> asm "; def $0", "=s"()7535 %vec1 = call <3 x ptr> asm "; def $0", "=s"()7536 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 0, i32 5>7537 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)7538 ret void7539}7540 7541define void @s_shuffle_v3p0_v3p0__5_1_5() {7542; GFX900-LABEL: s_shuffle_v3p0_v3p0__5_1_5:7543; GFX900: ; %bb.0:7544; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7545; GFX900-NEXT: ;;#ASMSTART7546; GFX900-NEXT: ; def s[8:13]7547; GFX900-NEXT: ;;#ASMEND7548; GFX900-NEXT: ;;#ASMSTART7549; GFX900-NEXT: ; def s[4:9]7550; GFX900-NEXT: ;;#ASMEND7551; GFX900-NEXT: s_mov_b32 s12, s87552; GFX900-NEXT: s_mov_b32 s13, s97553; GFX900-NEXT: ;;#ASMSTART7554; GFX900-NEXT: ; use s[8:13]7555; GFX900-NEXT: ;;#ASMEND7556; GFX900-NEXT: s_setpc_b64 s[30:31]7557;7558; GFX90A-LABEL: s_shuffle_v3p0_v3p0__5_1_5:7559; GFX90A: ; %bb.0:7560; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7561; GFX90A-NEXT: ;;#ASMSTART7562; GFX90A-NEXT: ; def s[8:13]7563; GFX90A-NEXT: ;;#ASMEND7564; GFX90A-NEXT: ;;#ASMSTART7565; GFX90A-NEXT: ; def s[4:9]7566; GFX90A-NEXT: ;;#ASMEND7567; GFX90A-NEXT: s_mov_b32 s12, s87568; GFX90A-NEXT: s_mov_b32 s13, s97569; GFX90A-NEXT: ;;#ASMSTART7570; GFX90A-NEXT: ; use s[8:13]7571; GFX90A-NEXT: ;;#ASMEND7572; GFX90A-NEXT: s_setpc_b64 s[30:31]7573;7574; GFX942-LABEL: s_shuffle_v3p0_v3p0__5_1_5:7575; GFX942: ; %bb.0:7576; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7577; GFX942-NEXT: ;;#ASMSTART7578; GFX942-NEXT: ; def s[8:13]7579; GFX942-NEXT: ;;#ASMEND7580; GFX942-NEXT: s_nop 07581; GFX942-NEXT: ;;#ASMSTART7582; GFX942-NEXT: ; def s[4:9]7583; GFX942-NEXT: ;;#ASMEND7584; GFX942-NEXT: s_mov_b32 s12, s87585; GFX942-NEXT: s_mov_b32 s13, s97586; GFX942-NEXT: ;;#ASMSTART7587; GFX942-NEXT: ; use s[8:13]7588; GFX942-NEXT: ;;#ASMEND7589; GFX942-NEXT: s_setpc_b64 s[30:31]7590 %vec0 = call <3 x ptr> asm "; def $0", "=s"()7591 %vec1 = call <3 x ptr> asm "; def $0", "=s"()7592 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 1, i32 5>7593 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)7594 ret void7595}7596 7597define void @s_shuffle_v3p0_v3p0__5_2_5() {7598; GFX900-LABEL: s_shuffle_v3p0_v3p0__5_2_5:7599; GFX900: ; %bb.0:7600; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7601; GFX900-NEXT: ;;#ASMSTART7602; GFX900-NEXT: ; def s[8:13]7603; GFX900-NEXT: ;;#ASMEND7604; GFX900-NEXT: ;;#ASMSTART7605; GFX900-NEXT: ; def s[4:9]7606; GFX900-NEXT: ;;#ASMEND7607; GFX900-NEXT: s_mov_b32 s10, s127608; GFX900-NEXT: s_mov_b32 s11, s137609; GFX900-NEXT: s_mov_b32 s12, s87610; GFX900-NEXT: s_mov_b32 s13, s97611; GFX900-NEXT: ;;#ASMSTART7612; GFX900-NEXT: ; use s[8:13]7613; GFX900-NEXT: ;;#ASMEND7614; GFX900-NEXT: s_setpc_b64 s[30:31]7615;7616; GFX90A-LABEL: s_shuffle_v3p0_v3p0__5_2_5:7617; GFX90A: ; %bb.0:7618; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7619; GFX90A-NEXT: ;;#ASMSTART7620; GFX90A-NEXT: ; def s[8:13]7621; GFX90A-NEXT: ;;#ASMEND7622; GFX90A-NEXT: ;;#ASMSTART7623; GFX90A-NEXT: ; def s[4:9]7624; GFX90A-NEXT: ;;#ASMEND7625; GFX90A-NEXT: s_mov_b32 s10, s127626; GFX90A-NEXT: s_mov_b32 s11, s137627; GFX90A-NEXT: s_mov_b32 s12, s87628; GFX90A-NEXT: s_mov_b32 s13, s97629; GFX90A-NEXT: ;;#ASMSTART7630; GFX90A-NEXT: ; use s[8:13]7631; GFX90A-NEXT: ;;#ASMEND7632; GFX90A-NEXT: s_setpc_b64 s[30:31]7633;7634; GFX942-LABEL: s_shuffle_v3p0_v3p0__5_2_5:7635; GFX942: ; %bb.0:7636; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7637; GFX942-NEXT: ;;#ASMSTART7638; GFX942-NEXT: ; def s[8:13]7639; GFX942-NEXT: ;;#ASMEND7640; GFX942-NEXT: s_mov_b32 s10, s127641; GFX942-NEXT: ;;#ASMSTART7642; GFX942-NEXT: ; def s[4:9]7643; GFX942-NEXT: ;;#ASMEND7644; GFX942-NEXT: s_mov_b32 s11, s137645; GFX942-NEXT: s_mov_b32 s12, s87646; GFX942-NEXT: s_mov_b32 s13, s97647; GFX942-NEXT: ;;#ASMSTART7648; GFX942-NEXT: ; use s[8:13]7649; GFX942-NEXT: ;;#ASMEND7650; GFX942-NEXT: s_setpc_b64 s[30:31]7651 %vec0 = call <3 x ptr> asm "; def $0", "=s"()7652 %vec1 = call <3 x ptr> asm "; def $0", "=s"()7653 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 2, i32 5>7654 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)7655 ret void7656}7657 7658define void @s_shuffle_v3p0_v3p0__5_3_5() {7659; GFX9-LABEL: s_shuffle_v3p0_v3p0__5_3_5:7660; GFX9: ; %bb.0:7661; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7662; GFX9-NEXT: ;;#ASMSTART7663; GFX9-NEXT: ; def s[4:9]7664; GFX9-NEXT: ;;#ASMEND7665; GFX9-NEXT: s_mov_b32 s10, s47666; GFX9-NEXT: s_mov_b32 s11, s57667; GFX9-NEXT: s_mov_b32 s12, s87668; GFX9-NEXT: s_mov_b32 s13, s97669; GFX9-NEXT: ;;#ASMSTART7670; GFX9-NEXT: ; use s[8:13]7671; GFX9-NEXT: ;;#ASMEND7672; GFX9-NEXT: s_setpc_b64 s[30:31]7673 %vec0 = call <3 x ptr> asm "; def $0", "=s"()7674 %vec1 = call <3 x ptr> asm "; def $0", "=s"()7675 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 3, i32 5>7676 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)7677 ret void7678}7679 7680define void @s_shuffle_v3p0_v3p0__5_4_5() {7681; GFX9-LABEL: s_shuffle_v3p0_v3p0__5_4_5:7682; GFX9: ; %bb.0:7683; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)7684; GFX9-NEXT: ;;#ASMSTART7685; GFX9-NEXT: ; def s[4:9]7686; GFX9-NEXT: ;;#ASMEND7687; GFX9-NEXT: s_mov_b32 s10, s67688; GFX9-NEXT: s_mov_b32 s11, s77689; GFX9-NEXT: s_mov_b32 s12, s87690; GFX9-NEXT: s_mov_b32 s13, s97691; GFX9-NEXT: ;;#ASMSTART7692; GFX9-NEXT: ; use s[8:13]7693; GFX9-NEXT: ;;#ASMEND7694; GFX9-NEXT: s_setpc_b64 s[30:31]7695 %vec0 = call <3 x ptr> asm "; def $0", "=s"()7696 %vec1 = call <3 x ptr> asm "; def $0", "=s"()7697 %shuf = shufflevector <3 x ptr> %vec0, <3 x ptr> %vec1, <3 x i32> <i32 5, i32 4, i32 5>7698 call void asm sideeffect "; use $0", "{s[8:13]}"(<3 x ptr> %shuf)7699 ret void7700}7701;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:7702; GFX90APLUS: {{.*}}7703