1915 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_v2p0_v2p0__u_u(ptr addrspace(1) inreg %ptr) {8; GFX9-LABEL: v_shuffle_v2p0_v2p0__u_u:9; GFX9: ; %bb.0:10; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)11; GFX9-NEXT: s_setpc_b64 s[30:31]12 %vec0 = call <2 x ptr> asm "; def $0", "=v"()13 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> poison14 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 1615 ret void16}17 18define void @v_shuffle_v2p0_v2p0__0_u(ptr addrspace(1) inreg %ptr) {19; GFX900-LABEL: v_shuffle_v2p0_v2p0__0_u:20; GFX900: ; %bb.0:21; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)22; GFX900-NEXT: v_mov_b32_e32 v4, 023; GFX900-NEXT: ;;#ASMSTART24; GFX900-NEXT: ; def v[0:3]25; GFX900-NEXT: ;;#ASMEND26; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]27; GFX900-NEXT: s_waitcnt vmcnt(0)28; GFX900-NEXT: s_setpc_b64 s[30:31]29;30; GFX90A-LABEL: v_shuffle_v2p0_v2p0__0_u:31; GFX90A: ; %bb.0:32; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)33; GFX90A-NEXT: v_mov_b32_e32 v4, 034; GFX90A-NEXT: ;;#ASMSTART35; GFX90A-NEXT: ; def v[0:3]36; GFX90A-NEXT: ;;#ASMEND37; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]38; GFX90A-NEXT: s_waitcnt vmcnt(0)39; GFX90A-NEXT: s_setpc_b64 s[30:31]40;41; GFX942-LABEL: v_shuffle_v2p0_v2p0__0_u:42; GFX942: ; %bb.0:43; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)44; GFX942-NEXT: v_mov_b32_e32 v4, 045; GFX942-NEXT: ;;#ASMSTART46; GFX942-NEXT: ; def v[0:3]47; GFX942-NEXT: ;;#ASMEND48; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]49; GFX942-NEXT: s_waitcnt vmcnt(0)50; GFX942-NEXT: s_setpc_b64 s[30:31]51 %vec0 = call <2 x ptr> asm "; def $0", "=v"()52 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> <i32 0, i32 poison>53 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 1654 ret void55}56 57define void @v_shuffle_v2p0_v2p0__1_u(ptr addrspace(1) inreg %ptr) {58; GFX900-LABEL: v_shuffle_v2p0_v2p0__1_u:59; GFX900: ; %bb.0:60; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)61; GFX900-NEXT: v_mov_b32_e32 v4, 062; GFX900-NEXT: ;;#ASMSTART63; GFX900-NEXT: ; def v[0:3]64; GFX900-NEXT: ;;#ASMEND65; GFX900-NEXT: global_store_dwordx4 v4, v[2:5], s[16:17]66; GFX900-NEXT: s_waitcnt vmcnt(0)67; GFX900-NEXT: s_setpc_b64 s[30:31]68;69; GFX90A-LABEL: v_shuffle_v2p0_v2p0__1_u:70; GFX90A: ; %bb.0:71; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)72; GFX90A-NEXT: v_mov_b32_e32 v4, 073; GFX90A-NEXT: ;;#ASMSTART74; GFX90A-NEXT: ; def v[0:3]75; GFX90A-NEXT: ;;#ASMEND76; GFX90A-NEXT: global_store_dwordx4 v4, v[2:5], s[16:17]77; GFX90A-NEXT: s_waitcnt vmcnt(0)78; GFX90A-NEXT: s_setpc_b64 s[30:31]79;80; GFX942-LABEL: v_shuffle_v2p0_v2p0__1_u:81; GFX942: ; %bb.0:82; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)83; GFX942-NEXT: v_mov_b32_e32 v4, 084; GFX942-NEXT: ;;#ASMSTART85; GFX942-NEXT: ; def v[0:3]86; GFX942-NEXT: ;;#ASMEND87; GFX942-NEXT: global_store_dwordx4 v4, v[2:5], s[0:1]88; GFX942-NEXT: s_waitcnt vmcnt(0)89; GFX942-NEXT: s_setpc_b64 s[30:31]90 %vec0 = call <2 x ptr> asm "; def $0", "=v"()91 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> <i32 1, i32 poison>92 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 1693 ret void94}95 96define void @v_shuffle_v2p0_v2p0__2_u(ptr addrspace(1) inreg %ptr) {97; GFX9-LABEL: v_shuffle_v2p0_v2p0__2_u:98; GFX9: ; %bb.0:99; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)100; GFX9-NEXT: s_setpc_b64 s[30:31]101 %vec0 = call <2 x ptr> asm "; def $0", "=v"()102 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> <i32 2, i32 poison>103 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16104 ret void105}106 107define void @v_shuffle_v2p0_v2p0__3_u(ptr addrspace(1) inreg %ptr) {108; GFX900-LABEL: v_shuffle_v2p0_v2p0__3_u:109; GFX900: ; %bb.0:110; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)111; GFX900-NEXT: v_mov_b32_e32 v4, 0112; GFX900-NEXT: ;;#ASMSTART113; GFX900-NEXT: ; def v[0:3]114; GFX900-NEXT: ;;#ASMEND115; GFX900-NEXT: global_store_dwordx4 v4, v[2:5], s[16:17]116; GFX900-NEXT: s_waitcnt vmcnt(0)117; GFX900-NEXT: s_setpc_b64 s[30:31]118;119; GFX90A-LABEL: v_shuffle_v2p0_v2p0__3_u:120; GFX90A: ; %bb.0:121; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)122; GFX90A-NEXT: v_mov_b32_e32 v4, 0123; GFX90A-NEXT: ;;#ASMSTART124; GFX90A-NEXT: ; def v[0:3]125; GFX90A-NEXT: ;;#ASMEND126; GFX90A-NEXT: global_store_dwordx4 v4, v[2:5], s[16:17]127; GFX90A-NEXT: s_waitcnt vmcnt(0)128; GFX90A-NEXT: s_setpc_b64 s[30:31]129;130; GFX942-LABEL: v_shuffle_v2p0_v2p0__3_u:131; GFX942: ; %bb.0:132; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)133; GFX942-NEXT: v_mov_b32_e32 v4, 0134; GFX942-NEXT: ;;#ASMSTART135; GFX942-NEXT: ; def v[0:3]136; GFX942-NEXT: ;;#ASMEND137; GFX942-NEXT: global_store_dwordx4 v4, v[2:5], s[0:1]138; GFX942-NEXT: s_waitcnt vmcnt(0)139; GFX942-NEXT: s_setpc_b64 s[30:31]140 %vec0 = call <2 x ptr> asm "; def $0", "=v"()141 %vec1 = call <2 x ptr> asm "; def $0", "=v"()142 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <2 x i32> <i32 3, i32 poison>143 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16144 ret void145}146 147define void @v_shuffle_v2p0_v2p0__3_0(ptr addrspace(1) inreg %ptr) {148; GFX900-LABEL: v_shuffle_v2p0_v2p0__3_0:149; GFX900: ; %bb.0:150; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)151; GFX900-NEXT: v_mov_b32_e32 v8, 0152; GFX900-NEXT: ;;#ASMSTART153; GFX900-NEXT: ; def v[4:7]154; GFX900-NEXT: ;;#ASMEND155; GFX900-NEXT: ;;#ASMSTART156; GFX900-NEXT: ; def v[0:3]157; GFX900-NEXT: ;;#ASMEND158; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]159; GFX900-NEXT: s_waitcnt vmcnt(0)160; GFX900-NEXT: s_setpc_b64 s[30:31]161;162; GFX90A-LABEL: v_shuffle_v2p0_v2p0__3_0:163; GFX90A: ; %bb.0:164; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)165; GFX90A-NEXT: v_mov_b32_e32 v8, 0166; GFX90A-NEXT: ;;#ASMSTART167; GFX90A-NEXT: ; def v[4:7]168; GFX90A-NEXT: ;;#ASMEND169; GFX90A-NEXT: ;;#ASMSTART170; GFX90A-NEXT: ; def v[0:3]171; GFX90A-NEXT: ;;#ASMEND172; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]173; GFX90A-NEXT: s_waitcnt vmcnt(0)174; GFX90A-NEXT: s_setpc_b64 s[30:31]175;176; GFX942-LABEL: v_shuffle_v2p0_v2p0__3_0:177; GFX942: ; %bb.0:178; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)179; GFX942-NEXT: v_mov_b32_e32 v8, 0180; GFX942-NEXT: ;;#ASMSTART181; GFX942-NEXT: ; def v[4:7]182; GFX942-NEXT: ;;#ASMEND183; GFX942-NEXT: ;;#ASMSTART184; GFX942-NEXT: ; def v[0:3]185; GFX942-NEXT: ;;#ASMEND186; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]187; GFX942-NEXT: s_waitcnt vmcnt(0)188; GFX942-NEXT: s_setpc_b64 s[30:31]189 %vec0 = call <2 x ptr> asm "; def $0", "=v"()190 %vec1 = call <2 x ptr> asm "; def $0", "=v"()191 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <2 x i32> <i32 3, i32 0>192 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16193 ret void194}195 196define void @v_shuffle_v2p0_v2p0__3_1(ptr addrspace(1) inreg %ptr) {197; GFX900-LABEL: v_shuffle_v2p0_v2p0__3_1:198; GFX900: ; %bb.0:199; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)200; GFX900-NEXT: v_mov_b32_e32 v6, 0201; GFX900-NEXT: ;;#ASMSTART202; GFX900-NEXT: ; def v[2:5]203; GFX900-NEXT: ;;#ASMEND204; GFX900-NEXT: ;;#ASMSTART205; GFX900-NEXT: ; def v[0:3]206; GFX900-NEXT: ;;#ASMEND207; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]208; GFX900-NEXT: s_waitcnt vmcnt(0)209; GFX900-NEXT: s_setpc_b64 s[30:31]210;211; GFX90A-LABEL: v_shuffle_v2p0_v2p0__3_1:212; GFX90A: ; %bb.0:213; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)214; GFX90A-NEXT: v_mov_b32_e32 v6, 0215; GFX90A-NEXT: ;;#ASMSTART216; GFX90A-NEXT: ; def v[2:5]217; GFX90A-NEXT: ;;#ASMEND218; GFX90A-NEXT: ;;#ASMSTART219; GFX90A-NEXT: ; def v[0:3]220; GFX90A-NEXT: ;;#ASMEND221; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]222; GFX90A-NEXT: s_waitcnt vmcnt(0)223; GFX90A-NEXT: s_setpc_b64 s[30:31]224;225; GFX942-LABEL: v_shuffle_v2p0_v2p0__3_1:226; GFX942: ; %bb.0:227; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)228; GFX942-NEXT: v_mov_b32_e32 v6, 0229; GFX942-NEXT: ;;#ASMSTART230; GFX942-NEXT: ; def v[2:5]231; GFX942-NEXT: ;;#ASMEND232; GFX942-NEXT: s_nop 0233; GFX942-NEXT: ;;#ASMSTART234; GFX942-NEXT: ; def v[0:3]235; GFX942-NEXT: ;;#ASMEND236; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]237; GFX942-NEXT: s_waitcnt vmcnt(0)238; GFX942-NEXT: s_setpc_b64 s[30:31]239 %vec0 = call <2 x ptr> asm "; def $0", "=v"()240 %vec1 = call <2 x ptr> asm "; def $0", "=v"()241 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <2 x i32> <i32 3, i32 1>242 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16243 ret void244}245 246define void @v_shuffle_v2p0_v2p0__3_2(ptr addrspace(1) inreg %ptr) {247; GFX900-LABEL: v_shuffle_v2p0_v2p0__3_2:248; GFX900: ; %bb.0:249; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)250; GFX900-NEXT: v_mov_b32_e32 v6, 0251; GFX900-NEXT: ;;#ASMSTART252; GFX900-NEXT: ; def v[0:3]253; GFX900-NEXT: ;;#ASMEND254; GFX900-NEXT: v_mov_b32_e32 v4, v0255; GFX900-NEXT: v_mov_b32_e32 v5, v1256; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]257; GFX900-NEXT: s_waitcnt vmcnt(0)258; GFX900-NEXT: s_setpc_b64 s[30:31]259;260; GFX90A-LABEL: v_shuffle_v2p0_v2p0__3_2:261; GFX90A: ; %bb.0:262; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)263; GFX90A-NEXT: v_mov_b32_e32 v6, 0264; GFX90A-NEXT: ;;#ASMSTART265; GFX90A-NEXT: ; def v[0:3]266; GFX90A-NEXT: ;;#ASMEND267; GFX90A-NEXT: v_mov_b32_e32 v4, v0268; GFX90A-NEXT: v_mov_b32_e32 v5, v1269; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]270; GFX90A-NEXT: s_waitcnt vmcnt(0)271; GFX90A-NEXT: s_setpc_b64 s[30:31]272;273; GFX942-LABEL: v_shuffle_v2p0_v2p0__3_2:274; GFX942: ; %bb.0:275; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)276; GFX942-NEXT: v_mov_b32_e32 v6, 0277; GFX942-NEXT: ;;#ASMSTART278; GFX942-NEXT: ; def v[0:3]279; GFX942-NEXT: ;;#ASMEND280; GFX942-NEXT: s_nop 0281; GFX942-NEXT: v_mov_b32_e32 v4, v0282; GFX942-NEXT: v_mov_b32_e32 v5, v1283; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]284; GFX942-NEXT: s_waitcnt vmcnt(0)285; GFX942-NEXT: s_setpc_b64 s[30:31]286 %vec0 = call <2 x ptr> asm "; def $0", "=v"()287 %vec1 = call <2 x ptr> asm "; def $0", "=v"()288 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <2 x i32> <i32 3, i32 2>289 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16290 ret void291}292 293define void @v_shuffle_v2p0_v2p0__3_3(ptr addrspace(1) inreg %ptr) {294; GFX900-LABEL: v_shuffle_v2p0_v2p0__3_3:295; GFX900: ; %bb.0:296; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)297; GFX900-NEXT: v_mov_b32_e32 v6, 0298; GFX900-NEXT: ;;#ASMSTART299; GFX900-NEXT: ; def v[0:3]300; GFX900-NEXT: ;;#ASMEND301; GFX900-NEXT: v_mov_b32_e32 v4, v2302; GFX900-NEXT: v_mov_b32_e32 v5, v3303; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]304; GFX900-NEXT: s_waitcnt vmcnt(0)305; GFX900-NEXT: s_setpc_b64 s[30:31]306;307; GFX90A-LABEL: v_shuffle_v2p0_v2p0__3_3:308; GFX90A: ; %bb.0:309; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)310; GFX90A-NEXT: v_mov_b32_e32 v6, 0311; GFX90A-NEXT: ;;#ASMSTART312; GFX90A-NEXT: ; def v[0:3]313; GFX90A-NEXT: ;;#ASMEND314; GFX90A-NEXT: v_mov_b32_e32 v4, v2315; GFX90A-NEXT: v_mov_b32_e32 v5, v3316; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]317; GFX90A-NEXT: s_waitcnt vmcnt(0)318; GFX90A-NEXT: s_setpc_b64 s[30:31]319;320; GFX942-LABEL: v_shuffle_v2p0_v2p0__3_3:321; GFX942: ; %bb.0:322; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)323; GFX942-NEXT: v_mov_b32_e32 v6, 0324; GFX942-NEXT: ;;#ASMSTART325; GFX942-NEXT: ; def v[0:3]326; GFX942-NEXT: ;;#ASMEND327; GFX942-NEXT: s_nop 0328; GFX942-NEXT: v_mov_b32_e32 v4, v2329; GFX942-NEXT: v_mov_b32_e32 v5, v3330; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]331; GFX942-NEXT: s_waitcnt vmcnt(0)332; GFX942-NEXT: s_setpc_b64 s[30:31]333 %vec0 = call <2 x ptr> asm "; def $0", "=v"()334 %vec1 = call <2 x ptr> asm "; def $0", "=v"()335 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <2 x i32> <i32 3, i32 3>336 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16337 ret void338}339 340define void @v_shuffle_v2p0_v2p0__u_0(ptr addrspace(1) inreg %ptr) {341; GFX900-LABEL: v_shuffle_v2p0_v2p0__u_0:342; GFX900: ; %bb.0:343; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)344; GFX900-NEXT: v_mov_b32_e32 v0, 0345; GFX900-NEXT: ;;#ASMSTART346; GFX900-NEXT: ; def v[2:5]347; GFX900-NEXT: ;;#ASMEND348; GFX900-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17]349; GFX900-NEXT: s_waitcnt vmcnt(0)350; GFX900-NEXT: s_setpc_b64 s[30:31]351;352; GFX90A-LABEL: v_shuffle_v2p0_v2p0__u_0:353; GFX90A: ; %bb.0:354; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)355; GFX90A-NEXT: v_mov_b32_e32 v0, 0356; GFX90A-NEXT: ;;#ASMSTART357; GFX90A-NEXT: ; def v[2:5]358; GFX90A-NEXT: ;;#ASMEND359; GFX90A-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17]360; GFX90A-NEXT: s_waitcnt vmcnt(0)361; GFX90A-NEXT: s_setpc_b64 s[30:31]362;363; GFX942-LABEL: v_shuffle_v2p0_v2p0__u_0:364; GFX942: ; %bb.0:365; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)366; GFX942-NEXT: v_mov_b32_e32 v0, 0367; GFX942-NEXT: ;;#ASMSTART368; GFX942-NEXT: ; def v[2:5]369; GFX942-NEXT: ;;#ASMEND370; GFX942-NEXT: global_store_dwordx4 v0, v[0:3], s[0:1]371; GFX942-NEXT: s_waitcnt vmcnt(0)372; GFX942-NEXT: s_setpc_b64 s[30:31]373 %vec0 = call <2 x ptr> asm "; def $0", "=v"()374 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> <i32 poison, i32 0>375 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16376 ret void377}378 379define void @v_shuffle_v2p0_v2p0__0_0(ptr addrspace(1) inreg %ptr) {380; GFX900-LABEL: v_shuffle_v2p0_v2p0__0_0:381; GFX900: ; %bb.0:382; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)383; GFX900-NEXT: ;;#ASMSTART384; GFX900-NEXT: ; def v[0:3]385; GFX900-NEXT: ;;#ASMEND386; GFX900-NEXT: v_mov_b32_e32 v4, 0387; GFX900-NEXT: v_mov_b32_e32 v2, v0388; GFX900-NEXT: v_mov_b32_e32 v3, v1389; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]390; GFX900-NEXT: s_waitcnt vmcnt(0)391; GFX900-NEXT: s_setpc_b64 s[30:31]392;393; GFX90A-LABEL: v_shuffle_v2p0_v2p0__0_0:394; GFX90A: ; %bb.0:395; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)396; GFX90A-NEXT: ;;#ASMSTART397; GFX90A-NEXT: ; def v[0:3]398; GFX90A-NEXT: ;;#ASMEND399; GFX90A-NEXT: v_mov_b32_e32 v4, 0400; GFX90A-NEXT: v_mov_b32_e32 v2, v0401; GFX90A-NEXT: v_mov_b32_e32 v3, v1402; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]403; GFX90A-NEXT: s_waitcnt vmcnt(0)404; GFX90A-NEXT: s_setpc_b64 s[30:31]405;406; GFX942-LABEL: v_shuffle_v2p0_v2p0__0_0:407; GFX942: ; %bb.0:408; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)409; GFX942-NEXT: ;;#ASMSTART410; GFX942-NEXT: ; def v[0:3]411; GFX942-NEXT: ;;#ASMEND412; GFX942-NEXT: v_mov_b32_e32 v4, 0413; GFX942-NEXT: v_mov_b32_e32 v2, v0414; GFX942-NEXT: v_mov_b32_e32 v3, v1415; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]416; GFX942-NEXT: s_waitcnt vmcnt(0)417; GFX942-NEXT: s_setpc_b64 s[30:31]418 %vec0 = call <2 x ptr> asm "; def $0", "=v"()419 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> zeroinitializer420 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16421 ret void422}423 424define void @v_shuffle_v2p0_v2p0__1_0(ptr addrspace(1) inreg %ptr) {425; GFX900-LABEL: v_shuffle_v2p0_v2p0__1_0:426; GFX900: ; %bb.0:427; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)428; GFX900-NEXT: v_mov_b32_e32 v6, 0429; GFX900-NEXT: ;;#ASMSTART430; GFX900-NEXT: ; def v[0:3]431; GFX900-NEXT: ;;#ASMEND432; GFX900-NEXT: v_mov_b32_e32 v4, v0433; GFX900-NEXT: v_mov_b32_e32 v5, v1434; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]435; GFX900-NEXT: s_waitcnt vmcnt(0)436; GFX900-NEXT: s_setpc_b64 s[30:31]437;438; GFX90A-LABEL: v_shuffle_v2p0_v2p0__1_0:439; GFX90A: ; %bb.0:440; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)441; GFX90A-NEXT: v_mov_b32_e32 v6, 0442; GFX90A-NEXT: ;;#ASMSTART443; GFX90A-NEXT: ; def v[0:3]444; GFX90A-NEXT: ;;#ASMEND445; GFX90A-NEXT: v_mov_b32_e32 v4, v0446; GFX90A-NEXT: v_mov_b32_e32 v5, v1447; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]448; GFX90A-NEXT: s_waitcnt vmcnt(0)449; GFX90A-NEXT: s_setpc_b64 s[30:31]450;451; GFX942-LABEL: v_shuffle_v2p0_v2p0__1_0:452; GFX942: ; %bb.0:453; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)454; GFX942-NEXT: v_mov_b32_e32 v6, 0455; GFX942-NEXT: ;;#ASMSTART456; GFX942-NEXT: ; def v[0:3]457; GFX942-NEXT: ;;#ASMEND458; GFX942-NEXT: s_nop 0459; GFX942-NEXT: v_mov_b32_e32 v4, v0460; GFX942-NEXT: v_mov_b32_e32 v5, v1461; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]462; GFX942-NEXT: s_waitcnt vmcnt(0)463; GFX942-NEXT: s_setpc_b64 s[30:31]464 %vec0 = call <2 x ptr> asm "; def $0", "=v"()465 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> <i32 1, i32 0>466 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16467 ret void468}469 470define void @v_shuffle_v2p0_v2p0__2_0(ptr addrspace(1) inreg %ptr) {471; GFX900-LABEL: v_shuffle_v2p0_v2p0__2_0:472; GFX900: ; %bb.0:473; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)474; GFX900-NEXT: v_mov_b32_e32 v0, 0475; GFX900-NEXT: ;;#ASMSTART476; GFX900-NEXT: ; def v[2:5]477; GFX900-NEXT: ;;#ASMEND478; GFX900-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17]479; GFX900-NEXT: s_waitcnt vmcnt(0)480; GFX900-NEXT: s_setpc_b64 s[30:31]481;482; GFX90A-LABEL: v_shuffle_v2p0_v2p0__2_0:483; GFX90A: ; %bb.0:484; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)485; GFX90A-NEXT: v_mov_b32_e32 v0, 0486; GFX90A-NEXT: ;;#ASMSTART487; GFX90A-NEXT: ; def v[2:5]488; GFX90A-NEXT: ;;#ASMEND489; GFX90A-NEXT: global_store_dwordx4 v0, v[0:3], s[16:17]490; GFX90A-NEXT: s_waitcnt vmcnt(0)491; GFX90A-NEXT: s_setpc_b64 s[30:31]492;493; GFX942-LABEL: v_shuffle_v2p0_v2p0__2_0:494; GFX942: ; %bb.0:495; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)496; GFX942-NEXT: v_mov_b32_e32 v0, 0497; GFX942-NEXT: ;;#ASMSTART498; GFX942-NEXT: ; def v[2:5]499; GFX942-NEXT: ;;#ASMEND500; GFX942-NEXT: global_store_dwordx4 v0, v[0:3], s[0:1]501; GFX942-NEXT: s_waitcnt vmcnt(0)502; GFX942-NEXT: s_setpc_b64 s[30:31]503 %vec0 = call <2 x ptr> asm "; def $0", "=v"()504 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> <i32 2, i32 0>505 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16506 ret void507}508 509define void @v_shuffle_v2p0_v2p0__u_1(ptr addrspace(1) inreg %ptr) {510; GFX900-LABEL: v_shuffle_v2p0_v2p0__u_1:511; GFX900: ; %bb.0:512; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)513; GFX900-NEXT: v_mov_b32_e32 v4, 0514; GFX900-NEXT: ;;#ASMSTART515; GFX900-NEXT: ; def v[0:3]516; GFX900-NEXT: ;;#ASMEND517; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]518; GFX900-NEXT: s_waitcnt vmcnt(0)519; GFX900-NEXT: s_setpc_b64 s[30:31]520;521; GFX90A-LABEL: v_shuffle_v2p0_v2p0__u_1:522; GFX90A: ; %bb.0:523; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)524; GFX90A-NEXT: v_mov_b32_e32 v4, 0525; GFX90A-NEXT: ;;#ASMSTART526; GFX90A-NEXT: ; def v[0:3]527; GFX90A-NEXT: ;;#ASMEND528; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]529; GFX90A-NEXT: s_waitcnt vmcnt(0)530; GFX90A-NEXT: s_setpc_b64 s[30:31]531;532; GFX942-LABEL: v_shuffle_v2p0_v2p0__u_1:533; GFX942: ; %bb.0:534; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)535; GFX942-NEXT: v_mov_b32_e32 v4, 0536; GFX942-NEXT: ;;#ASMSTART537; GFX942-NEXT: ; def v[0:3]538; GFX942-NEXT: ;;#ASMEND539; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]540; GFX942-NEXT: s_waitcnt vmcnt(0)541; GFX942-NEXT: s_setpc_b64 s[30:31]542 %vec0 = call <2 x ptr> asm "; def $0", "=v"()543 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> <i32 poison, i32 1>544 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16545 ret void546}547 548define void @v_shuffle_v2p0_v2p0__0_1(ptr addrspace(1) inreg %ptr) {549; GFX900-LABEL: v_shuffle_v2p0_v2p0__0_1:550; GFX900: ; %bb.0:551; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)552; GFX900-NEXT: v_mov_b32_e32 v4, 0553; GFX900-NEXT: ;;#ASMSTART554; GFX900-NEXT: ; def v[0:3]555; GFX900-NEXT: ;;#ASMEND556; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]557; GFX900-NEXT: s_waitcnt vmcnt(0)558; GFX900-NEXT: s_setpc_b64 s[30:31]559;560; GFX90A-LABEL: v_shuffle_v2p0_v2p0__0_1:561; GFX90A: ; %bb.0:562; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)563; GFX90A-NEXT: v_mov_b32_e32 v4, 0564; GFX90A-NEXT: ;;#ASMSTART565; GFX90A-NEXT: ; def v[0:3]566; GFX90A-NEXT: ;;#ASMEND567; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]568; GFX90A-NEXT: s_waitcnt vmcnt(0)569; GFX90A-NEXT: s_setpc_b64 s[30:31]570;571; GFX942-LABEL: v_shuffle_v2p0_v2p0__0_1:572; GFX942: ; %bb.0:573; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)574; GFX942-NEXT: v_mov_b32_e32 v4, 0575; GFX942-NEXT: ;;#ASMSTART576; GFX942-NEXT: ; def v[0:3]577; GFX942-NEXT: ;;#ASMEND578; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]579; GFX942-NEXT: s_waitcnt vmcnt(0)580; GFX942-NEXT: s_setpc_b64 s[30:31]581 %vec0 = call <2 x ptr> asm "; def $0", "=v"()582 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> <i32 0, i32 1>583 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16584 ret void585}586 587define void @v_shuffle_v2p0_v2p0__1_1(ptr addrspace(1) inreg %ptr) {588; GFX900-LABEL: v_shuffle_v2p0_v2p0__1_1:589; GFX900: ; %bb.0:590; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)591; GFX900-NEXT: v_mov_b32_e32 v6, 0592; GFX900-NEXT: ;;#ASMSTART593; GFX900-NEXT: ; def v[0:3]594; GFX900-NEXT: ;;#ASMEND595; GFX900-NEXT: v_mov_b32_e32 v4, v2596; GFX900-NEXT: v_mov_b32_e32 v5, v3597; GFX900-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]598; GFX900-NEXT: s_waitcnt vmcnt(0)599; GFX900-NEXT: s_setpc_b64 s[30:31]600;601; GFX90A-LABEL: v_shuffle_v2p0_v2p0__1_1:602; GFX90A: ; %bb.0:603; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)604; GFX90A-NEXT: v_mov_b32_e32 v6, 0605; GFX90A-NEXT: ;;#ASMSTART606; GFX90A-NEXT: ; def v[0:3]607; GFX90A-NEXT: ;;#ASMEND608; GFX90A-NEXT: v_mov_b32_e32 v4, v2609; GFX90A-NEXT: v_mov_b32_e32 v5, v3610; GFX90A-NEXT: global_store_dwordx4 v6, v[2:5], s[16:17]611; GFX90A-NEXT: s_waitcnt vmcnt(0)612; GFX90A-NEXT: s_setpc_b64 s[30:31]613;614; GFX942-LABEL: v_shuffle_v2p0_v2p0__1_1:615; GFX942: ; %bb.0:616; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)617; GFX942-NEXT: v_mov_b32_e32 v6, 0618; GFX942-NEXT: ;;#ASMSTART619; GFX942-NEXT: ; def v[0:3]620; GFX942-NEXT: ;;#ASMEND621; GFX942-NEXT: s_nop 0622; GFX942-NEXT: v_mov_b32_e32 v4, v2623; GFX942-NEXT: v_mov_b32_e32 v5, v3624; GFX942-NEXT: global_store_dwordx4 v6, v[2:5], s[0:1]625; GFX942-NEXT: s_waitcnt vmcnt(0)626; GFX942-NEXT: s_setpc_b64 s[30:31]627 %vec0 = call <2 x ptr> asm "; def $0", "=v"()628 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> <i32 1, i32 1>629 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16630 ret void631}632 633define void @v_shuffle_v2p0_v2p0__2_1(ptr addrspace(1) inreg %ptr) {634; GFX900-LABEL: v_shuffle_v2p0_v2p0__2_1:635; GFX900: ; %bb.0:636; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)637; GFX900-NEXT: v_mov_b32_e32 v4, 0638; GFX900-NEXT: ;;#ASMSTART639; GFX900-NEXT: ; def v[0:3]640; GFX900-NEXT: ;;#ASMEND641; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]642; GFX900-NEXT: s_waitcnt vmcnt(0)643; GFX900-NEXT: s_setpc_b64 s[30:31]644;645; GFX90A-LABEL: v_shuffle_v2p0_v2p0__2_1:646; GFX90A: ; %bb.0:647; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)648; GFX90A-NEXT: v_mov_b32_e32 v4, 0649; GFX90A-NEXT: ;;#ASMSTART650; GFX90A-NEXT: ; def v[0:3]651; GFX90A-NEXT: ;;#ASMEND652; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]653; GFX90A-NEXT: s_waitcnt vmcnt(0)654; GFX90A-NEXT: s_setpc_b64 s[30:31]655;656; GFX942-LABEL: v_shuffle_v2p0_v2p0__2_1:657; GFX942: ; %bb.0:658; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)659; GFX942-NEXT: v_mov_b32_e32 v4, 0660; GFX942-NEXT: ;;#ASMSTART661; GFX942-NEXT: ; def v[0:3]662; GFX942-NEXT: ;;#ASMEND663; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]664; GFX942-NEXT: s_waitcnt vmcnt(0)665; GFX942-NEXT: s_setpc_b64 s[30:31]666 %vec0 = call <2 x ptr> asm "; def $0", "=v"()667 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> <i32 2, i32 1>668 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16669 ret void670}671 672define void @v_shuffle_v2p0_v2p0__u_2(ptr addrspace(1) inreg %ptr) {673; GFX9-LABEL: v_shuffle_v2p0_v2p0__u_2:674; GFX9: ; %bb.0:675; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)676; GFX9-NEXT: s_setpc_b64 s[30:31]677 %vec0 = call <2 x ptr> asm "; def $0", "=v"()678 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> <i32 poison, i32 2>679 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16680 ret void681}682 683define void @v_shuffle_v2p0_v2p0__0_2(ptr addrspace(1) inreg %ptr) {684; GFX900-LABEL: v_shuffle_v2p0_v2p0__0_2:685; GFX900: ; %bb.0:686; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)687; GFX900-NEXT: v_mov_b32_e32 v4, 0688; GFX900-NEXT: ;;#ASMSTART689; GFX900-NEXT: ; def v[0:3]690; GFX900-NEXT: ;;#ASMEND691; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]692; GFX900-NEXT: s_waitcnt vmcnt(0)693; GFX900-NEXT: s_setpc_b64 s[30:31]694;695; GFX90A-LABEL: v_shuffle_v2p0_v2p0__0_2:696; GFX90A: ; %bb.0:697; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)698; GFX90A-NEXT: v_mov_b32_e32 v4, 0699; GFX90A-NEXT: ;;#ASMSTART700; GFX90A-NEXT: ; def v[0:3]701; GFX90A-NEXT: ;;#ASMEND702; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]703; GFX90A-NEXT: s_waitcnt vmcnt(0)704; GFX90A-NEXT: s_setpc_b64 s[30:31]705;706; GFX942-LABEL: v_shuffle_v2p0_v2p0__0_2:707; GFX942: ; %bb.0:708; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)709; GFX942-NEXT: v_mov_b32_e32 v4, 0710; GFX942-NEXT: ;;#ASMSTART711; GFX942-NEXT: ; def v[0:3]712; GFX942-NEXT: ;;#ASMEND713; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]714; GFX942-NEXT: s_waitcnt vmcnt(0)715; GFX942-NEXT: s_setpc_b64 s[30:31]716 %vec0 = call <2 x ptr> asm "; def $0", "=v"()717 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> <i32 0, i32 2>718 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16719 ret void720}721 722define void @v_shuffle_v2p0_v2p0__1_2(ptr addrspace(1) inreg %ptr) {723; GFX900-LABEL: v_shuffle_v2p0_v2p0__1_2:724; GFX900: ; %bb.0:725; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)726; GFX900-NEXT: v_mov_b32_e32 v4, 0727; GFX900-NEXT: ;;#ASMSTART728; GFX900-NEXT: ; def v[0:3]729; GFX900-NEXT: ;;#ASMEND730; GFX900-NEXT: global_store_dwordx4 v4, v[2:5], s[16:17]731; GFX900-NEXT: s_waitcnt vmcnt(0)732; GFX900-NEXT: s_setpc_b64 s[30:31]733;734; GFX90A-LABEL: v_shuffle_v2p0_v2p0__1_2:735; GFX90A: ; %bb.0:736; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)737; GFX90A-NEXT: v_mov_b32_e32 v4, 0738; GFX90A-NEXT: ;;#ASMSTART739; GFX90A-NEXT: ; def v[0:3]740; GFX90A-NEXT: ;;#ASMEND741; GFX90A-NEXT: global_store_dwordx4 v4, v[2:5], s[16:17]742; GFX90A-NEXT: s_waitcnt vmcnt(0)743; GFX90A-NEXT: s_setpc_b64 s[30:31]744;745; GFX942-LABEL: v_shuffle_v2p0_v2p0__1_2:746; GFX942: ; %bb.0:747; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)748; GFX942-NEXT: v_mov_b32_e32 v4, 0749; GFX942-NEXT: ;;#ASMSTART750; GFX942-NEXT: ; def v[0:3]751; GFX942-NEXT: ;;#ASMEND752; GFX942-NEXT: global_store_dwordx4 v4, v[2:5], s[0:1]753; GFX942-NEXT: s_waitcnt vmcnt(0)754; GFX942-NEXT: s_setpc_b64 s[30:31]755 %vec0 = call <2 x ptr> asm "; def $0", "=v"()756 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> <i32 1, i32 2>757 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16758 ret void759}760 761define void @v_shuffle_v2p0_v2p0__2_2(ptr addrspace(1) inreg %ptr) {762; GFX9-LABEL: v_shuffle_v2p0_v2p0__2_2:763; GFX9: ; %bb.0:764; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)765; GFX9-NEXT: s_setpc_b64 s[30:31]766 %vec0 = call <2 x ptr> asm "; def $0", "=v"()767 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> <i32 2, i32 2>768 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16769 ret void770}771 772define void @v_shuffle_v2p0_v2p0__u_3(ptr addrspace(1) inreg %ptr) {773; GFX900-LABEL: v_shuffle_v2p0_v2p0__u_3:774; GFX900: ; %bb.0:775; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)776; GFX900-NEXT: v_mov_b32_e32 v4, 0777; GFX900-NEXT: ;;#ASMSTART778; GFX900-NEXT: ; def v[0:3]779; GFX900-NEXT: ;;#ASMEND780; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]781; GFX900-NEXT: s_waitcnt vmcnt(0)782; GFX900-NEXT: s_setpc_b64 s[30:31]783;784; GFX90A-LABEL: v_shuffle_v2p0_v2p0__u_3:785; GFX90A: ; %bb.0:786; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)787; GFX90A-NEXT: v_mov_b32_e32 v4, 0788; GFX90A-NEXT: ;;#ASMSTART789; GFX90A-NEXT: ; def v[0:3]790; GFX90A-NEXT: ;;#ASMEND791; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]792; GFX90A-NEXT: s_waitcnt vmcnt(0)793; GFX90A-NEXT: s_setpc_b64 s[30:31]794;795; GFX942-LABEL: v_shuffle_v2p0_v2p0__u_3:796; GFX942: ; %bb.0:797; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)798; GFX942-NEXT: v_mov_b32_e32 v4, 0799; GFX942-NEXT: ;;#ASMSTART800; GFX942-NEXT: ; def v[0:3]801; GFX942-NEXT: ;;#ASMEND802; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]803; GFX942-NEXT: s_waitcnt vmcnt(0)804; GFX942-NEXT: s_setpc_b64 s[30:31]805 %vec0 = call <2 x ptr> asm "; def $0", "=v"()806 %vec1 = call <2 x ptr> asm "; def $0", "=v"()807 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <2 x i32> <i32 poison, i32 3>808 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16809 ret void810}811 812define void @v_shuffle_v2p0_v2p0__0_3(ptr addrspace(1) inreg %ptr) {813; GFX900-LABEL: v_shuffle_v2p0_v2p0__0_3:814; GFX900: ; %bb.0:815; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)816; GFX900-NEXT: ;;#ASMSTART817; GFX900-NEXT: ; def v[0:3]818; GFX900-NEXT: ;;#ASMEND819; GFX900-NEXT: ;;#ASMSTART820; GFX900-NEXT: ; def v[2:5]821; GFX900-NEXT: ;;#ASMEND822; GFX900-NEXT: v_mov_b32_e32 v6, 0823; GFX900-NEXT: v_mov_b32_e32 v2, v4824; GFX900-NEXT: v_mov_b32_e32 v3, v5825; GFX900-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]826; GFX900-NEXT: s_waitcnt vmcnt(0)827; GFX900-NEXT: s_setpc_b64 s[30:31]828;829; GFX90A-LABEL: v_shuffle_v2p0_v2p0__0_3:830; GFX90A: ; %bb.0:831; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)832; GFX90A-NEXT: ;;#ASMSTART833; GFX90A-NEXT: ; def v[0:3]834; GFX90A-NEXT: ;;#ASMEND835; GFX90A-NEXT: ;;#ASMSTART836; GFX90A-NEXT: ; def v[2:5]837; GFX90A-NEXT: ;;#ASMEND838; GFX90A-NEXT: v_mov_b32_e32 v6, 0839; GFX90A-NEXT: v_mov_b32_e32 v2, v4840; GFX90A-NEXT: v_mov_b32_e32 v3, v5841; GFX90A-NEXT: global_store_dwordx4 v6, v[0:3], s[16:17]842; GFX90A-NEXT: s_waitcnt vmcnt(0)843; GFX90A-NEXT: s_setpc_b64 s[30:31]844;845; GFX942-LABEL: v_shuffle_v2p0_v2p0__0_3:846; GFX942: ; %bb.0:847; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)848; GFX942-NEXT: ;;#ASMSTART849; GFX942-NEXT: ; def v[0:3]850; GFX942-NEXT: ;;#ASMEND851; GFX942-NEXT: v_mov_b32_e32 v6, 0852; GFX942-NEXT: ;;#ASMSTART853; GFX942-NEXT: ; def v[2:5]854; GFX942-NEXT: ;;#ASMEND855; GFX942-NEXT: s_nop 0856; GFX942-NEXT: v_mov_b32_e32 v2, v4857; GFX942-NEXT: v_mov_b32_e32 v3, v5858; GFX942-NEXT: global_store_dwordx4 v6, v[0:3], s[0:1]859; GFX942-NEXT: s_waitcnt vmcnt(0)860; GFX942-NEXT: s_setpc_b64 s[30:31]861 %vec0 = call <2 x ptr> asm "; def $0", "=v"()862 %vec1 = call <2 x ptr> asm "; def $0", "=v"()863 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <2 x i32> <i32 0, i32 3>864 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16865 ret void866}867 868define void @v_shuffle_v2p0_v2p0__1_3(ptr addrspace(1) inreg %ptr) {869; GFX900-LABEL: v_shuffle_v2p0_v2p0__1_3:870; GFX900: ; %bb.0:871; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)872; GFX900-NEXT: ;;#ASMSTART873; GFX900-NEXT: ; def v[4:7]874; GFX900-NEXT: ;;#ASMEND875; GFX900-NEXT: v_mov_b32_e32 v8, 0876; GFX900-NEXT: v_mov_b32_e32 v4, v6877; GFX900-NEXT: v_mov_b32_e32 v5, v7878; GFX900-NEXT: ;;#ASMSTART879; GFX900-NEXT: ; def v[0:3]880; GFX900-NEXT: ;;#ASMEND881; GFX900-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]882; GFX900-NEXT: s_waitcnt vmcnt(0)883; GFX900-NEXT: s_setpc_b64 s[30:31]884;885; GFX90A-LABEL: v_shuffle_v2p0_v2p0__1_3:886; GFX90A: ; %bb.0:887; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)888; GFX90A-NEXT: ;;#ASMSTART889; GFX90A-NEXT: ; def v[4:7]890; GFX90A-NEXT: ;;#ASMEND891; GFX90A-NEXT: v_mov_b32_e32 v8, 0892; GFX90A-NEXT: v_mov_b32_e32 v4, v6893; GFX90A-NEXT: v_mov_b32_e32 v5, v7894; GFX90A-NEXT: ;;#ASMSTART895; GFX90A-NEXT: ; def v[0:3]896; GFX90A-NEXT: ;;#ASMEND897; GFX90A-NEXT: global_store_dwordx4 v8, v[2:5], s[16:17]898; GFX90A-NEXT: s_waitcnt vmcnt(0)899; GFX90A-NEXT: s_setpc_b64 s[30:31]900;901; GFX942-LABEL: v_shuffle_v2p0_v2p0__1_3:902; GFX942: ; %bb.0:903; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)904; GFX942-NEXT: ;;#ASMSTART905; GFX942-NEXT: ; def v[4:7]906; GFX942-NEXT: ;;#ASMEND907; GFX942-NEXT: v_mov_b32_e32 v8, 0908; GFX942-NEXT: v_mov_b32_e32 v4, v6909; GFX942-NEXT: v_mov_b32_e32 v5, v7910; GFX942-NEXT: ;;#ASMSTART911; GFX942-NEXT: ; def v[0:3]912; GFX942-NEXT: ;;#ASMEND913; GFX942-NEXT: global_store_dwordx4 v8, v[2:5], s[0:1]914; GFX942-NEXT: s_waitcnt vmcnt(0)915; GFX942-NEXT: s_setpc_b64 s[30:31]916 %vec0 = call <2 x ptr> asm "; def $0", "=v"()917 %vec1 = call <2 x ptr> asm "; def $0", "=v"()918 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <2 x i32> <i32 1, i32 3>919 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16920 ret void921}922 923define void @v_shuffle_v2p0_v2p0__2_3(ptr addrspace(1) inreg %ptr) {924; GFX900-LABEL: v_shuffle_v2p0_v2p0__2_3:925; GFX900: ; %bb.0:926; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)927; GFX900-NEXT: v_mov_b32_e32 v4, 0928; GFX900-NEXT: ;;#ASMSTART929; GFX900-NEXT: ; def v[0:3]930; GFX900-NEXT: ;;#ASMEND931; GFX900-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]932; GFX900-NEXT: s_waitcnt vmcnt(0)933; GFX900-NEXT: s_setpc_b64 s[30:31]934;935; GFX90A-LABEL: v_shuffle_v2p0_v2p0__2_3:936; GFX90A: ; %bb.0:937; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)938; GFX90A-NEXT: v_mov_b32_e32 v4, 0939; GFX90A-NEXT: ;;#ASMSTART940; GFX90A-NEXT: ; def v[0:3]941; GFX90A-NEXT: ;;#ASMEND942; GFX90A-NEXT: global_store_dwordx4 v4, v[0:3], s[16:17]943; GFX90A-NEXT: s_waitcnt vmcnt(0)944; GFX90A-NEXT: s_setpc_b64 s[30:31]945;946; GFX942-LABEL: v_shuffle_v2p0_v2p0__2_3:947; GFX942: ; %bb.0:948; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)949; GFX942-NEXT: v_mov_b32_e32 v4, 0950; GFX942-NEXT: ;;#ASMSTART951; GFX942-NEXT: ; def v[0:3]952; GFX942-NEXT: ;;#ASMEND953; GFX942-NEXT: global_store_dwordx4 v4, v[0:3], s[0:1]954; GFX942-NEXT: s_waitcnt vmcnt(0)955; GFX942-NEXT: s_setpc_b64 s[30:31]956 %vec0 = call <2 x ptr> asm "; def $0", "=v"()957 %vec1 = call <2 x ptr> asm "; def $0", "=v"()958 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <2 x i32> <i32 2, i32 3>959 store <2 x ptr> %shuf, ptr addrspace(1) %ptr, align 16960 ret void961}962 963define void @s_shuffle_v2p0_v2p0__u_u() {964; GFX9-LABEL: s_shuffle_v2p0_v2p0__u_u:965; GFX9: ; %bb.0:966; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)967; GFX9-NEXT: ;;#ASMSTART968; GFX9-NEXT: ; use s[8:11]969; GFX9-NEXT: ;;#ASMEND970; GFX9-NEXT: s_setpc_b64 s[30:31]971 %vec0 = call <2 x ptr> asm "; def $0", "=s"()972 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> poison973 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)974 ret void975}976 977define void @s_shuffle_v2p0_v2p0__0_u() {978; GFX900-LABEL: s_shuffle_v2p0_v2p0__0_u:979; GFX900: ; %bb.0:980; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)981; GFX900-NEXT: ;;#ASMSTART982; GFX900-NEXT: ; def s[8:11]983; GFX900-NEXT: ;;#ASMEND984; GFX900-NEXT: ;;#ASMSTART985; GFX900-NEXT: ; use s[8:11]986; GFX900-NEXT: ;;#ASMEND987; GFX900-NEXT: s_setpc_b64 s[30:31]988;989; GFX90A-LABEL: s_shuffle_v2p0_v2p0__0_u:990; GFX90A: ; %bb.0:991; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)992; GFX90A-NEXT: ;;#ASMSTART993; GFX90A-NEXT: ; def s[8:11]994; GFX90A-NEXT: ;;#ASMEND995; GFX90A-NEXT: ;;#ASMSTART996; GFX90A-NEXT: ; use s[8:11]997; GFX90A-NEXT: ;;#ASMEND998; GFX90A-NEXT: s_setpc_b64 s[30:31]999;1000; GFX942-LABEL: s_shuffle_v2p0_v2p0__0_u:1001; GFX942: ; %bb.0:1002; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1003; GFX942-NEXT: ;;#ASMSTART1004; GFX942-NEXT: ; def s[8:11]1005; GFX942-NEXT: ;;#ASMEND1006; GFX942-NEXT: s_nop 01007; GFX942-NEXT: ;;#ASMSTART1008; GFX942-NEXT: ; use s[8:11]1009; GFX942-NEXT: ;;#ASMEND1010; GFX942-NEXT: s_setpc_b64 s[30:31]1011 %vec0 = call <2 x ptr> asm "; def $0", "=s"()1012 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> <i32 0, i32 poison>1013 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)1014 ret void1015}1016 1017define void @s_shuffle_v2p0_v2p0__1_u() {1018; GFX900-LABEL: s_shuffle_v2p0_v2p0__1_u:1019; GFX900: ; %bb.0:1020; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1021; GFX900-NEXT: ;;#ASMSTART1022; GFX900-NEXT: ; def s[4:7]1023; GFX900-NEXT: ;;#ASMEND1024; GFX900-NEXT: s_mov_b32 s8, s61025; GFX900-NEXT: s_mov_b32 s9, s71026; GFX900-NEXT: ;;#ASMSTART1027; GFX900-NEXT: ; use s[8:11]1028; GFX900-NEXT: ;;#ASMEND1029; GFX900-NEXT: s_setpc_b64 s[30:31]1030;1031; GFX90A-LABEL: s_shuffle_v2p0_v2p0__1_u:1032; GFX90A: ; %bb.0:1033; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1034; GFX90A-NEXT: ;;#ASMSTART1035; GFX90A-NEXT: ; def s[4:7]1036; GFX90A-NEXT: ;;#ASMEND1037; GFX90A-NEXT: s_mov_b32 s8, s61038; GFX90A-NEXT: s_mov_b32 s9, s71039; GFX90A-NEXT: ;;#ASMSTART1040; GFX90A-NEXT: ; use s[8:11]1041; GFX90A-NEXT: ;;#ASMEND1042; GFX90A-NEXT: s_setpc_b64 s[30:31]1043;1044; GFX942-LABEL: s_shuffle_v2p0_v2p0__1_u:1045; GFX942: ; %bb.0:1046; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1047; GFX942-NEXT: ;;#ASMSTART1048; GFX942-NEXT: ; def s[0:3]1049; GFX942-NEXT: ;;#ASMEND1050; GFX942-NEXT: s_mov_b32 s8, s21051; GFX942-NEXT: s_mov_b32 s9, s31052; GFX942-NEXT: ;;#ASMSTART1053; GFX942-NEXT: ; use s[8:11]1054; GFX942-NEXT: ;;#ASMEND1055; GFX942-NEXT: s_setpc_b64 s[30:31]1056 %vec0 = call <2 x ptr> asm "; def $0", "=s"()1057 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> <i32 1, i32 poison>1058 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)1059 ret void1060}1061 1062define void @s_shuffle_v2p0_v2p0__2_u() {1063; GFX9-LABEL: s_shuffle_v2p0_v2p0__2_u:1064; GFX9: ; %bb.0:1065; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1066; GFX9-NEXT: ;;#ASMSTART1067; GFX9-NEXT: ; use s[8:11]1068; GFX9-NEXT: ;;#ASMEND1069; GFX9-NEXT: s_setpc_b64 s[30:31]1070 %vec0 = call <2 x ptr> asm "; def $0", "=s"()1071 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> <i32 2, i32 poison>1072 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)1073 ret void1074}1075 1076define void @s_shuffle_v2p0_v2p0__3_u() {1077; GFX900-LABEL: s_shuffle_v2p0_v2p0__3_u:1078; GFX900: ; %bb.0:1079; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1080; GFX900-NEXT: ;;#ASMSTART1081; GFX900-NEXT: ; def s[4:7]1082; GFX900-NEXT: ;;#ASMEND1083; GFX900-NEXT: s_mov_b32 s8, s61084; GFX900-NEXT: s_mov_b32 s9, s71085; GFX900-NEXT: ;;#ASMSTART1086; GFX900-NEXT: ; use s[8:11]1087; GFX900-NEXT: ;;#ASMEND1088; GFX900-NEXT: s_setpc_b64 s[30:31]1089;1090; GFX90A-LABEL: s_shuffle_v2p0_v2p0__3_u:1091; GFX90A: ; %bb.0:1092; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1093; GFX90A-NEXT: ;;#ASMSTART1094; GFX90A-NEXT: ; def s[4:7]1095; GFX90A-NEXT: ;;#ASMEND1096; GFX90A-NEXT: s_mov_b32 s8, s61097; GFX90A-NEXT: s_mov_b32 s9, s71098; GFX90A-NEXT: ;;#ASMSTART1099; GFX90A-NEXT: ; use s[8:11]1100; GFX90A-NEXT: ;;#ASMEND1101; GFX90A-NEXT: s_setpc_b64 s[30:31]1102;1103; GFX942-LABEL: s_shuffle_v2p0_v2p0__3_u:1104; GFX942: ; %bb.0:1105; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1106; GFX942-NEXT: ;;#ASMSTART1107; GFX942-NEXT: ; def s[0:3]1108; GFX942-NEXT: ;;#ASMEND1109; GFX942-NEXT: s_mov_b32 s8, s21110; GFX942-NEXT: s_mov_b32 s9, s31111; GFX942-NEXT: ;;#ASMSTART1112; GFX942-NEXT: ; use s[8:11]1113; GFX942-NEXT: ;;#ASMEND1114; GFX942-NEXT: s_setpc_b64 s[30:31]1115 %vec0 = call <2 x ptr> asm "; def $0", "=s"()1116 %vec1 = call <2 x ptr> asm "; def $0", "=s"()1117 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <2 x i32> <i32 3, i32 poison>1118 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)1119 ret void1120}1121 1122define void @s_shuffle_v2p0_v2p0__3_0() {1123; GFX900-LABEL: s_shuffle_v2p0_v2p0__3_0:1124; GFX900: ; %bb.0:1125; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1126; GFX900-NEXT: ;;#ASMSTART1127; GFX900-NEXT: ; def s[8:11]1128; GFX900-NEXT: ;;#ASMEND1129; GFX900-NEXT: ;;#ASMSTART1130; GFX900-NEXT: ; def s[4:7]1131; GFX900-NEXT: ;;#ASMEND1132; GFX900-NEXT: s_mov_b32 s8, s101133; GFX900-NEXT: s_mov_b32 s9, s111134; GFX900-NEXT: s_mov_b32 s10, s41135; GFX900-NEXT: s_mov_b32 s11, s51136; GFX900-NEXT: ;;#ASMSTART1137; GFX900-NEXT: ; use s[8:11]1138; GFX900-NEXT: ;;#ASMEND1139; GFX900-NEXT: s_setpc_b64 s[30:31]1140;1141; GFX90A-LABEL: s_shuffle_v2p0_v2p0__3_0:1142; GFX90A: ; %bb.0:1143; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1144; GFX90A-NEXT: ;;#ASMSTART1145; GFX90A-NEXT: ; def s[8:11]1146; GFX90A-NEXT: ;;#ASMEND1147; GFX90A-NEXT: ;;#ASMSTART1148; GFX90A-NEXT: ; def s[4:7]1149; GFX90A-NEXT: ;;#ASMEND1150; GFX90A-NEXT: s_mov_b32 s8, s101151; GFX90A-NEXT: s_mov_b32 s9, s111152; GFX90A-NEXT: s_mov_b32 s10, s41153; GFX90A-NEXT: s_mov_b32 s11, s51154; GFX90A-NEXT: ;;#ASMSTART1155; GFX90A-NEXT: ; use s[8:11]1156; GFX90A-NEXT: ;;#ASMEND1157; GFX90A-NEXT: s_setpc_b64 s[30:31]1158;1159; GFX942-LABEL: s_shuffle_v2p0_v2p0__3_0:1160; GFX942: ; %bb.0:1161; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1162; GFX942-NEXT: ;;#ASMSTART1163; GFX942-NEXT: ; def s[0:3]1164; GFX942-NEXT: ;;#ASMEND1165; GFX942-NEXT: ;;#ASMSTART1166; GFX942-NEXT: ; def s[4:7]1167; GFX942-NEXT: ;;#ASMEND1168; GFX942-NEXT: s_mov_b32 s8, s61169; GFX942-NEXT: s_mov_b32 s9, s71170; GFX942-NEXT: s_mov_b32 s10, s01171; GFX942-NEXT: s_mov_b32 s11, s11172; GFX942-NEXT: ;;#ASMSTART1173; GFX942-NEXT: ; use s[8:11]1174; GFX942-NEXT: ;;#ASMEND1175; GFX942-NEXT: s_setpc_b64 s[30:31]1176 %vec0 = call <2 x ptr> asm "; def $0", "=s"()1177 %vec1 = call <2 x ptr> asm "; def $0", "=s"()1178 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <2 x i32> <i32 3, i32 0>1179 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)1180 ret void1181}1182 1183define void @s_shuffle_v2p0_v2p0__3_1() {1184; GFX900-LABEL: s_shuffle_v2p0_v2p0__3_1:1185; GFX900: ; %bb.0:1186; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1187; GFX900-NEXT: ;;#ASMSTART1188; GFX900-NEXT: ; def s[8:11]1189; GFX900-NEXT: ;;#ASMEND1190; GFX900-NEXT: ;;#ASMSTART1191; GFX900-NEXT: ; def s[4:7]1192; GFX900-NEXT: ;;#ASMEND1193; GFX900-NEXT: s_mov_b32 s8, s61194; GFX900-NEXT: s_mov_b32 s9, s71195; GFX900-NEXT: ;;#ASMSTART1196; GFX900-NEXT: ; use s[8:11]1197; GFX900-NEXT: ;;#ASMEND1198; GFX900-NEXT: s_setpc_b64 s[30:31]1199;1200; GFX90A-LABEL: s_shuffle_v2p0_v2p0__3_1:1201; GFX90A: ; %bb.0:1202; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1203; GFX90A-NEXT: ;;#ASMSTART1204; GFX90A-NEXT: ; def s[8:11]1205; GFX90A-NEXT: ;;#ASMEND1206; GFX90A-NEXT: ;;#ASMSTART1207; GFX90A-NEXT: ; def s[4:7]1208; GFX90A-NEXT: ;;#ASMEND1209; GFX90A-NEXT: s_mov_b32 s8, s61210; GFX90A-NEXT: s_mov_b32 s9, s71211; GFX90A-NEXT: ;;#ASMSTART1212; GFX90A-NEXT: ; use s[8:11]1213; GFX90A-NEXT: ;;#ASMEND1214; GFX90A-NEXT: s_setpc_b64 s[30:31]1215;1216; GFX942-LABEL: s_shuffle_v2p0_v2p0__3_1:1217; GFX942: ; %bb.0:1218; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1219; GFX942-NEXT: ;;#ASMSTART1220; GFX942-NEXT: ; def s[8:11]1221; GFX942-NEXT: ;;#ASMEND1222; GFX942-NEXT: ;;#ASMSTART1223; GFX942-NEXT: ; def s[0:3]1224; GFX942-NEXT: ;;#ASMEND1225; GFX942-NEXT: s_mov_b32 s8, s21226; GFX942-NEXT: s_mov_b32 s9, s31227; GFX942-NEXT: ;;#ASMSTART1228; GFX942-NEXT: ; use s[8:11]1229; GFX942-NEXT: ;;#ASMEND1230; GFX942-NEXT: s_setpc_b64 s[30:31]1231 %vec0 = call <2 x ptr> asm "; def $0", "=s"()1232 %vec1 = call <2 x ptr> asm "; def $0", "=s"()1233 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <2 x i32> <i32 3, i32 1>1234 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)1235 ret void1236}1237 1238define void @s_shuffle_v2p0_v2p0__3_2() {1239; GFX900-LABEL: s_shuffle_v2p0_v2p0__3_2:1240; GFX900: ; %bb.0:1241; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1242; GFX900-NEXT: ;;#ASMSTART1243; GFX900-NEXT: ; def s[4:7]1244; GFX900-NEXT: ;;#ASMEND1245; GFX900-NEXT: s_mov_b32 s8, s61246; GFX900-NEXT: s_mov_b32 s9, s71247; GFX900-NEXT: s_mov_b32 s10, s41248; GFX900-NEXT: s_mov_b32 s11, s51249; GFX900-NEXT: ;;#ASMSTART1250; GFX900-NEXT: ; use s[8:11]1251; GFX900-NEXT: ;;#ASMEND1252; GFX900-NEXT: s_setpc_b64 s[30:31]1253;1254; GFX90A-LABEL: s_shuffle_v2p0_v2p0__3_2:1255; GFX90A: ; %bb.0:1256; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1257; GFX90A-NEXT: ;;#ASMSTART1258; GFX90A-NEXT: ; def s[4:7]1259; GFX90A-NEXT: ;;#ASMEND1260; GFX90A-NEXT: s_mov_b32 s8, s61261; GFX90A-NEXT: s_mov_b32 s9, s71262; GFX90A-NEXT: s_mov_b32 s10, s41263; GFX90A-NEXT: s_mov_b32 s11, s51264; GFX90A-NEXT: ;;#ASMSTART1265; GFX90A-NEXT: ; use s[8:11]1266; GFX90A-NEXT: ;;#ASMEND1267; GFX90A-NEXT: s_setpc_b64 s[30:31]1268;1269; GFX942-LABEL: s_shuffle_v2p0_v2p0__3_2:1270; GFX942: ; %bb.0:1271; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1272; GFX942-NEXT: ;;#ASMSTART1273; GFX942-NEXT: ; def s[0:3]1274; GFX942-NEXT: ;;#ASMEND1275; GFX942-NEXT: s_mov_b32 s8, s21276; GFX942-NEXT: s_mov_b32 s9, s31277; GFX942-NEXT: s_mov_b32 s10, s01278; GFX942-NEXT: s_mov_b32 s11, s11279; GFX942-NEXT: ;;#ASMSTART1280; GFX942-NEXT: ; use s[8:11]1281; GFX942-NEXT: ;;#ASMEND1282; GFX942-NEXT: s_setpc_b64 s[30:31]1283 %vec0 = call <2 x ptr> asm "; def $0", "=s"()1284 %vec1 = call <2 x ptr> asm "; def $0", "=s"()1285 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <2 x i32> <i32 3, i32 2>1286 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)1287 ret void1288}1289 1290define void @s_shuffle_v2p0_v2p0__3_3() {1291; GFX9-LABEL: s_shuffle_v2p0_v2p0__3_3:1292; GFX9: ; %bb.0:1293; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1294; GFX9-NEXT: ;;#ASMSTART1295; GFX9-NEXT: ; def s[8:11]1296; GFX9-NEXT: ;;#ASMEND1297; GFX9-NEXT: s_mov_b32 s8, s101298; GFX9-NEXT: s_mov_b32 s9, s111299; GFX9-NEXT: ;;#ASMSTART1300; GFX9-NEXT: ; use s[8:11]1301; GFX9-NEXT: ;;#ASMEND1302; GFX9-NEXT: s_setpc_b64 s[30:31]1303 %vec0 = call <2 x ptr> asm "; def $0", "=s"()1304 %vec1 = call <2 x ptr> asm "; def $0", "=s"()1305 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <2 x i32> <i32 3, i32 3>1306 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)1307 ret void1308}1309 1310define void @s_shuffle_v2p0_v2p0__u_0() {1311; GFX900-LABEL: s_shuffle_v2p0_v2p0__u_0:1312; GFX900: ; %bb.0:1313; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1314; GFX900-NEXT: ;;#ASMSTART1315; GFX900-NEXT: ; def s[4:7]1316; GFX900-NEXT: ;;#ASMEND1317; GFX900-NEXT: s_mov_b32 s10, s41318; GFX900-NEXT: s_mov_b32 s11, s51319; GFX900-NEXT: ;;#ASMSTART1320; GFX900-NEXT: ; use s[8:11]1321; GFX900-NEXT: ;;#ASMEND1322; GFX900-NEXT: s_setpc_b64 s[30:31]1323;1324; GFX90A-LABEL: s_shuffle_v2p0_v2p0__u_0:1325; GFX90A: ; %bb.0:1326; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1327; GFX90A-NEXT: ;;#ASMSTART1328; GFX90A-NEXT: ; def s[4:7]1329; GFX90A-NEXT: ;;#ASMEND1330; GFX90A-NEXT: s_mov_b32 s10, s41331; GFX90A-NEXT: s_mov_b32 s11, s51332; GFX90A-NEXT: ;;#ASMSTART1333; GFX90A-NEXT: ; use s[8:11]1334; GFX90A-NEXT: ;;#ASMEND1335; GFX90A-NEXT: s_setpc_b64 s[30:31]1336;1337; GFX942-LABEL: s_shuffle_v2p0_v2p0__u_0:1338; GFX942: ; %bb.0:1339; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1340; GFX942-NEXT: ;;#ASMSTART1341; GFX942-NEXT: ; def s[0:3]1342; GFX942-NEXT: ;;#ASMEND1343; GFX942-NEXT: s_mov_b32 s10, s01344; GFX942-NEXT: s_mov_b32 s11, s11345; GFX942-NEXT: ;;#ASMSTART1346; GFX942-NEXT: ; use s[8:11]1347; GFX942-NEXT: ;;#ASMEND1348; GFX942-NEXT: s_setpc_b64 s[30:31]1349 %vec0 = call <2 x ptr> asm "; def $0", "=s"()1350 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> <i32 poison, i32 0>1351 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)1352 ret void1353}1354 1355define void @s_shuffle_v2p0_v2p0__0_0() {1356; GFX9-LABEL: s_shuffle_v2p0_v2p0__0_0:1357; GFX9: ; %bb.0:1358; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1359; GFX9-NEXT: ;;#ASMSTART1360; GFX9-NEXT: ; def s[8:11]1361; GFX9-NEXT: ;;#ASMEND1362; GFX9-NEXT: s_mov_b32 s10, s81363; GFX9-NEXT: s_mov_b32 s11, s91364; GFX9-NEXT: ;;#ASMSTART1365; GFX9-NEXT: ; use s[8:11]1366; GFX9-NEXT: ;;#ASMEND1367; GFX9-NEXT: s_setpc_b64 s[30:31]1368 %vec0 = call <2 x ptr> asm "; def $0", "=s"()1369 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> zeroinitializer1370 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)1371 ret void1372}1373 1374define void @s_shuffle_v2p0_v2p0__1_0() {1375; GFX900-LABEL: s_shuffle_v2p0_v2p0__1_0:1376; GFX900: ; %bb.0:1377; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1378; GFX900-NEXT: ;;#ASMSTART1379; GFX900-NEXT: ; def s[4:7]1380; GFX900-NEXT: ;;#ASMEND1381; GFX900-NEXT: s_mov_b32 s8, s61382; GFX900-NEXT: s_mov_b32 s9, s71383; GFX900-NEXT: s_mov_b32 s10, s41384; GFX900-NEXT: s_mov_b32 s11, s51385; GFX900-NEXT: ;;#ASMSTART1386; GFX900-NEXT: ; use s[8:11]1387; GFX900-NEXT: ;;#ASMEND1388; GFX900-NEXT: s_setpc_b64 s[30:31]1389;1390; GFX90A-LABEL: s_shuffle_v2p0_v2p0__1_0:1391; GFX90A: ; %bb.0:1392; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1393; GFX90A-NEXT: ;;#ASMSTART1394; GFX90A-NEXT: ; def s[4:7]1395; GFX90A-NEXT: ;;#ASMEND1396; GFX90A-NEXT: s_mov_b32 s8, s61397; GFX90A-NEXT: s_mov_b32 s9, s71398; GFX90A-NEXT: s_mov_b32 s10, s41399; GFX90A-NEXT: s_mov_b32 s11, s51400; GFX90A-NEXT: ;;#ASMSTART1401; GFX90A-NEXT: ; use s[8:11]1402; GFX90A-NEXT: ;;#ASMEND1403; GFX90A-NEXT: s_setpc_b64 s[30:31]1404;1405; GFX942-LABEL: s_shuffle_v2p0_v2p0__1_0:1406; GFX942: ; %bb.0:1407; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1408; GFX942-NEXT: ;;#ASMSTART1409; GFX942-NEXT: ; def s[0:3]1410; GFX942-NEXT: ;;#ASMEND1411; GFX942-NEXT: s_mov_b32 s8, s21412; GFX942-NEXT: s_mov_b32 s9, s31413; GFX942-NEXT: s_mov_b32 s10, s01414; GFX942-NEXT: s_mov_b32 s11, s11415; GFX942-NEXT: ;;#ASMSTART1416; GFX942-NEXT: ; use s[8:11]1417; GFX942-NEXT: ;;#ASMEND1418; GFX942-NEXT: s_setpc_b64 s[30:31]1419 %vec0 = call <2 x ptr> asm "; def $0", "=s"()1420 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> <i32 1, i32 0>1421 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)1422 ret void1423}1424 1425define void @s_shuffle_v2p0_v2p0__2_0() {1426; GFX900-LABEL: s_shuffle_v2p0_v2p0__2_0:1427; GFX900: ; %bb.0:1428; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1429; GFX900-NEXT: ;;#ASMSTART1430; GFX900-NEXT: ; def s[4:7]1431; GFX900-NEXT: ;;#ASMEND1432; GFX900-NEXT: s_mov_b32 s10, s41433; GFX900-NEXT: s_mov_b32 s11, s51434; GFX900-NEXT: ;;#ASMSTART1435; GFX900-NEXT: ; use s[8:11]1436; GFX900-NEXT: ;;#ASMEND1437; GFX900-NEXT: s_setpc_b64 s[30:31]1438;1439; GFX90A-LABEL: s_shuffle_v2p0_v2p0__2_0:1440; GFX90A: ; %bb.0:1441; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1442; GFX90A-NEXT: ;;#ASMSTART1443; GFX90A-NEXT: ; def s[4:7]1444; GFX90A-NEXT: ;;#ASMEND1445; GFX90A-NEXT: s_mov_b32 s10, s41446; GFX90A-NEXT: s_mov_b32 s11, s51447; GFX90A-NEXT: ;;#ASMSTART1448; GFX90A-NEXT: ; use s[8:11]1449; GFX90A-NEXT: ;;#ASMEND1450; GFX90A-NEXT: s_setpc_b64 s[30:31]1451;1452; GFX942-LABEL: s_shuffle_v2p0_v2p0__2_0:1453; GFX942: ; %bb.0:1454; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1455; GFX942-NEXT: ;;#ASMSTART1456; GFX942-NEXT: ; def s[0:3]1457; GFX942-NEXT: ;;#ASMEND1458; GFX942-NEXT: s_mov_b32 s10, s01459; GFX942-NEXT: s_mov_b32 s11, s11460; GFX942-NEXT: ;;#ASMSTART1461; GFX942-NEXT: ; use s[8:11]1462; GFX942-NEXT: ;;#ASMEND1463; GFX942-NEXT: s_setpc_b64 s[30:31]1464 %vec0 = call <2 x ptr> asm "; def $0", "=s"()1465 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> <i32 2, i32 0>1466 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)1467 ret void1468}1469 1470define void @s_shuffle_v2p0_v2p0__u_1() {1471; GFX900-LABEL: s_shuffle_v2p0_v2p0__u_1:1472; GFX900: ; %bb.0:1473; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1474; GFX900-NEXT: ;;#ASMSTART1475; GFX900-NEXT: ; def s[8:11]1476; GFX900-NEXT: ;;#ASMEND1477; GFX900-NEXT: ;;#ASMSTART1478; GFX900-NEXT: ; use s[8:11]1479; GFX900-NEXT: ;;#ASMEND1480; GFX900-NEXT: s_setpc_b64 s[30:31]1481;1482; GFX90A-LABEL: s_shuffle_v2p0_v2p0__u_1:1483; GFX90A: ; %bb.0:1484; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1485; GFX90A-NEXT: ;;#ASMSTART1486; GFX90A-NEXT: ; def s[8:11]1487; GFX90A-NEXT: ;;#ASMEND1488; GFX90A-NEXT: ;;#ASMSTART1489; GFX90A-NEXT: ; use s[8:11]1490; GFX90A-NEXT: ;;#ASMEND1491; GFX90A-NEXT: s_setpc_b64 s[30:31]1492;1493; GFX942-LABEL: s_shuffle_v2p0_v2p0__u_1:1494; GFX942: ; %bb.0:1495; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1496; GFX942-NEXT: ;;#ASMSTART1497; GFX942-NEXT: ; def s[8:11]1498; GFX942-NEXT: ;;#ASMEND1499; GFX942-NEXT: s_nop 01500; GFX942-NEXT: ;;#ASMSTART1501; GFX942-NEXT: ; use s[8:11]1502; GFX942-NEXT: ;;#ASMEND1503; GFX942-NEXT: s_setpc_b64 s[30:31]1504 %vec0 = call <2 x ptr> asm "; def $0", "=s"()1505 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> <i32 poison, i32 1>1506 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)1507 ret void1508}1509 1510define void @s_shuffle_v2p0_v2p0__0_1() {1511; GFX900-LABEL: s_shuffle_v2p0_v2p0__0_1:1512; GFX900: ; %bb.0:1513; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1514; GFX900-NEXT: ;;#ASMSTART1515; GFX900-NEXT: ; def s[8:11]1516; GFX900-NEXT: ;;#ASMEND1517; GFX900-NEXT: ;;#ASMSTART1518; GFX900-NEXT: ; use s[8:11]1519; GFX900-NEXT: ;;#ASMEND1520; GFX900-NEXT: s_setpc_b64 s[30:31]1521;1522; GFX90A-LABEL: s_shuffle_v2p0_v2p0__0_1:1523; GFX90A: ; %bb.0:1524; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1525; GFX90A-NEXT: ;;#ASMSTART1526; GFX90A-NEXT: ; def s[8:11]1527; GFX90A-NEXT: ;;#ASMEND1528; GFX90A-NEXT: ;;#ASMSTART1529; GFX90A-NEXT: ; use s[8:11]1530; GFX90A-NEXT: ;;#ASMEND1531; GFX90A-NEXT: s_setpc_b64 s[30:31]1532;1533; GFX942-LABEL: s_shuffle_v2p0_v2p0__0_1:1534; GFX942: ; %bb.0:1535; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1536; GFX942-NEXT: ;;#ASMSTART1537; GFX942-NEXT: ; def s[8:11]1538; GFX942-NEXT: ;;#ASMEND1539; GFX942-NEXT: s_nop 01540; GFX942-NEXT: ;;#ASMSTART1541; GFX942-NEXT: ; use s[8:11]1542; GFX942-NEXT: ;;#ASMEND1543; GFX942-NEXT: s_setpc_b64 s[30:31]1544 %vec0 = call <2 x ptr> asm "; def $0", "=s"()1545 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> <i32 0, i32 1>1546 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)1547 ret void1548}1549 1550define void @s_shuffle_v2p0_v2p0__1_1() {1551; GFX9-LABEL: s_shuffle_v2p0_v2p0__1_1:1552; GFX9: ; %bb.0:1553; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1554; GFX9-NEXT: ;;#ASMSTART1555; GFX9-NEXT: ; def s[8:11]1556; GFX9-NEXT: ;;#ASMEND1557; GFX9-NEXT: s_mov_b32 s8, s101558; GFX9-NEXT: s_mov_b32 s9, s111559; GFX9-NEXT: ;;#ASMSTART1560; GFX9-NEXT: ; use s[8:11]1561; GFX9-NEXT: ;;#ASMEND1562; GFX9-NEXT: s_setpc_b64 s[30:31]1563 %vec0 = call <2 x ptr> asm "; def $0", "=s"()1564 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> <i32 1, i32 1>1565 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)1566 ret void1567}1568 1569define void @s_shuffle_v2p0_v2p0__2_1() {1570; GFX900-LABEL: s_shuffle_v2p0_v2p0__2_1:1571; GFX900: ; %bb.0:1572; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1573; GFX900-NEXT: ;;#ASMSTART1574; GFX900-NEXT: ; def s[8:11]1575; GFX900-NEXT: ;;#ASMEND1576; GFX900-NEXT: ;;#ASMSTART1577; GFX900-NEXT: ; use s[8:11]1578; GFX900-NEXT: ;;#ASMEND1579; GFX900-NEXT: s_setpc_b64 s[30:31]1580;1581; GFX90A-LABEL: s_shuffle_v2p0_v2p0__2_1:1582; GFX90A: ; %bb.0:1583; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1584; GFX90A-NEXT: ;;#ASMSTART1585; GFX90A-NEXT: ; def s[8:11]1586; GFX90A-NEXT: ;;#ASMEND1587; GFX90A-NEXT: ;;#ASMSTART1588; GFX90A-NEXT: ; use s[8:11]1589; GFX90A-NEXT: ;;#ASMEND1590; GFX90A-NEXT: s_setpc_b64 s[30:31]1591;1592; GFX942-LABEL: s_shuffle_v2p0_v2p0__2_1:1593; GFX942: ; %bb.0:1594; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1595; GFX942-NEXT: ;;#ASMSTART1596; GFX942-NEXT: ; def s[8:11]1597; GFX942-NEXT: ;;#ASMEND1598; GFX942-NEXT: s_nop 01599; GFX942-NEXT: ;;#ASMSTART1600; GFX942-NEXT: ; use s[8:11]1601; GFX942-NEXT: ;;#ASMEND1602; GFX942-NEXT: s_setpc_b64 s[30:31]1603 %vec0 = call <2 x ptr> asm "; def $0", "=s"()1604 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> <i32 2, i32 1>1605 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)1606 ret void1607}1608 1609define void @s_shuffle_v2p0_v2p0__u_2() {1610; GFX9-LABEL: s_shuffle_v2p0_v2p0__u_2:1611; GFX9: ; %bb.0:1612; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1613; GFX9-NEXT: ;;#ASMSTART1614; GFX9-NEXT: ; use s[8:11]1615; GFX9-NEXT: ;;#ASMEND1616; GFX9-NEXT: s_setpc_b64 s[30:31]1617 %vec0 = call <2 x ptr> asm "; def $0", "=s"()1618 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> <i32 poison, i32 2>1619 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)1620 ret void1621}1622 1623define void @s_shuffle_v2p0_v2p0__0_2() {1624; GFX900-LABEL: s_shuffle_v2p0_v2p0__0_2:1625; GFX900: ; %bb.0:1626; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1627; GFX900-NEXT: ;;#ASMSTART1628; GFX900-NEXT: ; def s[8:11]1629; GFX900-NEXT: ;;#ASMEND1630; GFX900-NEXT: ;;#ASMSTART1631; GFX900-NEXT: ; use s[8:11]1632; GFX900-NEXT: ;;#ASMEND1633; GFX900-NEXT: s_setpc_b64 s[30:31]1634;1635; GFX90A-LABEL: s_shuffle_v2p0_v2p0__0_2:1636; GFX90A: ; %bb.0:1637; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1638; GFX90A-NEXT: ;;#ASMSTART1639; GFX90A-NEXT: ; def s[8:11]1640; GFX90A-NEXT: ;;#ASMEND1641; GFX90A-NEXT: ;;#ASMSTART1642; GFX90A-NEXT: ; use s[8:11]1643; GFX90A-NEXT: ;;#ASMEND1644; GFX90A-NEXT: s_setpc_b64 s[30:31]1645;1646; GFX942-LABEL: s_shuffle_v2p0_v2p0__0_2:1647; GFX942: ; %bb.0:1648; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1649; GFX942-NEXT: ;;#ASMSTART1650; GFX942-NEXT: ; def s[8:11]1651; GFX942-NEXT: ;;#ASMEND1652; GFX942-NEXT: s_nop 01653; GFX942-NEXT: ;;#ASMSTART1654; GFX942-NEXT: ; use s[8:11]1655; GFX942-NEXT: ;;#ASMEND1656; GFX942-NEXT: s_setpc_b64 s[30:31]1657 %vec0 = call <2 x ptr> asm "; def $0", "=s"()1658 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> <i32 0, i32 2>1659 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)1660 ret void1661}1662 1663define void @s_shuffle_v2p0_v2p0__1_2() {1664; GFX900-LABEL: s_shuffle_v2p0_v2p0__1_2:1665; GFX900: ; %bb.0:1666; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1667; GFX900-NEXT: ;;#ASMSTART1668; GFX900-NEXT: ; def s[4:7]1669; GFX900-NEXT: ;;#ASMEND1670; GFX900-NEXT: s_mov_b32 s8, s61671; GFX900-NEXT: s_mov_b32 s9, s71672; GFX900-NEXT: ;;#ASMSTART1673; GFX900-NEXT: ; use s[8:11]1674; GFX900-NEXT: ;;#ASMEND1675; GFX900-NEXT: s_setpc_b64 s[30:31]1676;1677; GFX90A-LABEL: s_shuffle_v2p0_v2p0__1_2:1678; GFX90A: ; %bb.0:1679; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1680; GFX90A-NEXT: ;;#ASMSTART1681; GFX90A-NEXT: ; def s[4:7]1682; GFX90A-NEXT: ;;#ASMEND1683; GFX90A-NEXT: s_mov_b32 s8, s61684; GFX90A-NEXT: s_mov_b32 s9, s71685; GFX90A-NEXT: ;;#ASMSTART1686; GFX90A-NEXT: ; use s[8:11]1687; GFX90A-NEXT: ;;#ASMEND1688; GFX90A-NEXT: s_setpc_b64 s[30:31]1689;1690; GFX942-LABEL: s_shuffle_v2p0_v2p0__1_2:1691; GFX942: ; %bb.0:1692; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1693; GFX942-NEXT: ;;#ASMSTART1694; GFX942-NEXT: ; def s[0:3]1695; GFX942-NEXT: ;;#ASMEND1696; GFX942-NEXT: s_mov_b32 s8, s21697; GFX942-NEXT: s_mov_b32 s9, s31698; GFX942-NEXT: ;;#ASMSTART1699; GFX942-NEXT: ; use s[8:11]1700; GFX942-NEXT: ;;#ASMEND1701; GFX942-NEXT: s_setpc_b64 s[30:31]1702 %vec0 = call <2 x ptr> asm "; def $0", "=s"()1703 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> <i32 1, i32 2>1704 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)1705 ret void1706}1707 1708define void @s_shuffle_v2p0_v2p0__2_2() {1709; GFX9-LABEL: s_shuffle_v2p0_v2p0__2_2:1710; GFX9: ; %bb.0:1711; GFX9-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1712; GFX9-NEXT: ;;#ASMSTART1713; GFX9-NEXT: ; use s[8:11]1714; GFX9-NEXT: ;;#ASMEND1715; GFX9-NEXT: s_setpc_b64 s[30:31]1716 %vec0 = call <2 x ptr> asm "; def $0", "=s"()1717 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> poison, <2 x i32> <i32 2, i32 2>1718 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)1719 ret void1720}1721 1722define void @s_shuffle_v2p0_v2p0__u_3() {1723; GFX900-LABEL: s_shuffle_v2p0_v2p0__u_3:1724; GFX900: ; %bb.0:1725; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1726; GFX900-NEXT: ;;#ASMSTART1727; GFX900-NEXT: ; def s[8:11]1728; GFX900-NEXT: ;;#ASMEND1729; GFX900-NEXT: ;;#ASMSTART1730; GFX900-NEXT: ; use s[8:11]1731; GFX900-NEXT: ;;#ASMEND1732; GFX900-NEXT: s_setpc_b64 s[30:31]1733;1734; GFX90A-LABEL: s_shuffle_v2p0_v2p0__u_3:1735; GFX90A: ; %bb.0:1736; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1737; GFX90A-NEXT: ;;#ASMSTART1738; GFX90A-NEXT: ; def s[8:11]1739; GFX90A-NEXT: ;;#ASMEND1740; GFX90A-NEXT: ;;#ASMSTART1741; GFX90A-NEXT: ; use s[8:11]1742; GFX90A-NEXT: ;;#ASMEND1743; GFX90A-NEXT: s_setpc_b64 s[30:31]1744;1745; GFX942-LABEL: s_shuffle_v2p0_v2p0__u_3:1746; GFX942: ; %bb.0:1747; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1748; GFX942-NEXT: ;;#ASMSTART1749; GFX942-NEXT: ; def s[8:11]1750; GFX942-NEXT: ;;#ASMEND1751; GFX942-NEXT: s_nop 01752; GFX942-NEXT: ;;#ASMSTART1753; GFX942-NEXT: ; use s[8:11]1754; GFX942-NEXT: ;;#ASMEND1755; GFX942-NEXT: s_setpc_b64 s[30:31]1756 %vec0 = call <2 x ptr> asm "; def $0", "=s"()1757 %vec1 = call <2 x ptr> asm "; def $0", "=s"()1758 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <2 x i32> <i32 poison, i32 3>1759 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)1760 ret void1761}1762 1763define void @s_shuffle_v2p0_v2p0__0_3() {1764; GFX900-LABEL: s_shuffle_v2p0_v2p0__0_3:1765; GFX900: ; %bb.0:1766; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1767; GFX900-NEXT: ;;#ASMSTART1768; GFX900-NEXT: ; def s[8:11]1769; GFX900-NEXT: ;;#ASMEND1770; GFX900-NEXT: ;;#ASMSTART1771; GFX900-NEXT: ; def s[4:7]1772; GFX900-NEXT: ;;#ASMEND1773; GFX900-NEXT: s_mov_b32 s10, s61774; GFX900-NEXT: s_mov_b32 s11, s71775; GFX900-NEXT: ;;#ASMSTART1776; GFX900-NEXT: ; use s[8:11]1777; GFX900-NEXT: ;;#ASMEND1778; GFX900-NEXT: s_setpc_b64 s[30:31]1779;1780; GFX90A-LABEL: s_shuffle_v2p0_v2p0__0_3:1781; GFX90A: ; %bb.0:1782; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1783; GFX90A-NEXT: ;;#ASMSTART1784; GFX90A-NEXT: ; def s[8:11]1785; GFX90A-NEXT: ;;#ASMEND1786; GFX90A-NEXT: ;;#ASMSTART1787; GFX90A-NEXT: ; def s[4:7]1788; GFX90A-NEXT: ;;#ASMEND1789; GFX90A-NEXT: s_mov_b32 s10, s61790; GFX90A-NEXT: s_mov_b32 s11, s71791; GFX90A-NEXT: ;;#ASMSTART1792; GFX90A-NEXT: ; use s[8:11]1793; GFX90A-NEXT: ;;#ASMEND1794; GFX90A-NEXT: s_setpc_b64 s[30:31]1795;1796; GFX942-LABEL: s_shuffle_v2p0_v2p0__0_3:1797; GFX942: ; %bb.0:1798; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1799; GFX942-NEXT: ;;#ASMSTART1800; GFX942-NEXT: ; def s[8:11]1801; GFX942-NEXT: ;;#ASMEND1802; GFX942-NEXT: ;;#ASMSTART1803; GFX942-NEXT: ; def s[0:3]1804; GFX942-NEXT: ;;#ASMEND1805; GFX942-NEXT: s_mov_b32 s10, s21806; GFX942-NEXT: s_mov_b32 s11, s31807; GFX942-NEXT: ;;#ASMSTART1808; GFX942-NEXT: ; use s[8:11]1809; GFX942-NEXT: ;;#ASMEND1810; GFX942-NEXT: s_setpc_b64 s[30:31]1811 %vec0 = call <2 x ptr> asm "; def $0", "=s"()1812 %vec1 = call <2 x ptr> asm "; def $0", "=s"()1813 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <2 x i32> <i32 0, i32 3>1814 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)1815 ret void1816}1817 1818define void @s_shuffle_v2p0_v2p0__1_3() {1819; GFX900-LABEL: s_shuffle_v2p0_v2p0__1_3:1820; GFX900: ; %bb.0:1821; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1822; GFX900-NEXT: ;;#ASMSTART1823; GFX900-NEXT: ; def s[8:11]1824; GFX900-NEXT: ;;#ASMEND1825; GFX900-NEXT: ;;#ASMSTART1826; GFX900-NEXT: ; def s[4:7]1827; GFX900-NEXT: ;;#ASMEND1828; GFX900-NEXT: s_mov_b32 s8, s61829; GFX900-NEXT: s_mov_b32 s9, s71830; GFX900-NEXT: ;;#ASMSTART1831; GFX900-NEXT: ; use s[8:11]1832; GFX900-NEXT: ;;#ASMEND1833; GFX900-NEXT: s_setpc_b64 s[30:31]1834;1835; GFX90A-LABEL: s_shuffle_v2p0_v2p0__1_3:1836; GFX90A: ; %bb.0:1837; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1838; GFX90A-NEXT: ;;#ASMSTART1839; GFX90A-NEXT: ; def s[8:11]1840; GFX90A-NEXT: ;;#ASMEND1841; GFX90A-NEXT: ;;#ASMSTART1842; GFX90A-NEXT: ; def s[4:7]1843; GFX90A-NEXT: ;;#ASMEND1844; GFX90A-NEXT: s_mov_b32 s8, s61845; GFX90A-NEXT: s_mov_b32 s9, s71846; GFX90A-NEXT: ;;#ASMSTART1847; GFX90A-NEXT: ; use s[8:11]1848; GFX90A-NEXT: ;;#ASMEND1849; GFX90A-NEXT: s_setpc_b64 s[30:31]1850;1851; GFX942-LABEL: s_shuffle_v2p0_v2p0__1_3:1852; GFX942: ; %bb.0:1853; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1854; GFX942-NEXT: ;;#ASMSTART1855; GFX942-NEXT: ; def s[8:11]1856; GFX942-NEXT: ;;#ASMEND1857; GFX942-NEXT: ;;#ASMSTART1858; GFX942-NEXT: ; def s[0:3]1859; GFX942-NEXT: ;;#ASMEND1860; GFX942-NEXT: s_mov_b32 s8, s21861; GFX942-NEXT: s_mov_b32 s9, s31862; GFX942-NEXT: ;;#ASMSTART1863; GFX942-NEXT: ; use s[8:11]1864; GFX942-NEXT: ;;#ASMEND1865; GFX942-NEXT: s_setpc_b64 s[30:31]1866 %vec0 = call <2 x ptr> asm "; def $0", "=s"()1867 %vec1 = call <2 x ptr> asm "; def $0", "=s"()1868 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <2 x i32> <i32 1, i32 3>1869 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)1870 ret void1871}1872 1873define void @s_shuffle_v2p0_v2p0__2_3() {1874; GFX900-LABEL: s_shuffle_v2p0_v2p0__2_3:1875; GFX900: ; %bb.0:1876; GFX900-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1877; GFX900-NEXT: ;;#ASMSTART1878; GFX900-NEXT: ; def s[8:11]1879; GFX900-NEXT: ;;#ASMEND1880; GFX900-NEXT: ;;#ASMSTART1881; GFX900-NEXT: ; use s[8:11]1882; GFX900-NEXT: ;;#ASMEND1883; GFX900-NEXT: s_setpc_b64 s[30:31]1884;1885; GFX90A-LABEL: s_shuffle_v2p0_v2p0__2_3:1886; GFX90A: ; %bb.0:1887; GFX90A-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1888; GFX90A-NEXT: ;;#ASMSTART1889; GFX90A-NEXT: ; def s[8:11]1890; GFX90A-NEXT: ;;#ASMEND1891; GFX90A-NEXT: ;;#ASMSTART1892; GFX90A-NEXT: ; use s[8:11]1893; GFX90A-NEXT: ;;#ASMEND1894; GFX90A-NEXT: s_setpc_b64 s[30:31]1895;1896; GFX942-LABEL: s_shuffle_v2p0_v2p0__2_3:1897; GFX942: ; %bb.0:1898; GFX942-NEXT: s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)1899; GFX942-NEXT: ;;#ASMSTART1900; GFX942-NEXT: ; def s[8:11]1901; GFX942-NEXT: ;;#ASMEND1902; GFX942-NEXT: s_nop 01903; GFX942-NEXT: ;;#ASMSTART1904; GFX942-NEXT: ; use s[8:11]1905; GFX942-NEXT: ;;#ASMEND1906; GFX942-NEXT: s_setpc_b64 s[30:31]1907 %vec0 = call <2 x ptr> asm "; def $0", "=s"()1908 %vec1 = call <2 x ptr> asm "; def $0", "=s"()1909 %shuf = shufflevector <2 x ptr> %vec0, <2 x ptr> %vec1, <2 x i32> <i32 2, i32 3>1910 call void asm sideeffect "; use $0", "{s[8:11]}"(<2 x ptr> %shuf)1911 ret void1912}1913;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line:1914; GFX90APLUS: {{.*}}1915